##// END OF EJS Templates
remove OInspect monkeypatch...
vivainio -
Show More
@@ -1,51 +1,52 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 Class which mimics a module.
3 Class which mimics a module.
4
4
5 Needed to allow pickle to correctly resolve namespaces during IPython
5 Needed to allow pickle to correctly resolve namespaces during IPython
6 sessions.
6 sessions.
7
7
8 $Id: FakeModule.py 1322 2006-05-24 07:51:39Z fperez $"""
8 $Id: FakeModule.py 1602 2006-08-11 09:19:33Z vivainio $"""
9
9
10 #*****************************************************************************
10 #*****************************************************************************
11 # Copyright (C) 2002-2004 Fernando Perez. <fperez@colorado.edu>
11 # Copyright (C) 2002-2004 Fernando Perez. <fperez@colorado.edu>
12 #
12 #
13 # Distributed under the terms of the BSD License. The full license is in
13 # Distributed under the terms of the BSD License. The full license is in
14 # the file COPYING, distributed as part of this software.
14 # the file COPYING, distributed as part of this software.
15 #*****************************************************************************
15 #*****************************************************************************
16
16
17 class FakeModule:
17 import types
18
19 class FakeModule(types.ModuleType):
18 """Simple class with attribute access to fake a module.
20 """Simple class with attribute access to fake a module.
19
21
20 This is not meant to replace a module, but to allow inserting a fake
22 This is not meant to replace a module, but to allow inserting a fake
21 module in sys.modules so that systems which rely on run-time module
23 module in sys.modules so that systems which rely on run-time module
22 importing (like shelve and pickle) work correctly in interactive IPython
24 importing (like shelve and pickle) work correctly in interactive IPython
23 sessions.
25 sessions.
24
26
25 Do NOT use this code for anything other than this IPython private hack."""
27 Do NOT use this code for anything other than this IPython private hack."""
26
28
27 def __init__(self,adict):
29 def __init__(self,adict):
28
30 types.ModuleType.__init__(self,adict['__name__'])
29 # It seems pydoc (and perhaps others) needs any module instance to
31 # It seems pydoc (and perhaps others) needs any module instance to
30 # implement a __nonzero__ method, so we add it if missing:
32 # implement a __nonzero__ method, so we add it if missing:
31 if '__nonzero__' not in adict:
33 if '__nonzero__' not in adict:
32 def __nonzero__():
34 def __nonzero__():
33 return 1
35 return 1
34 adict['__nonzero__'] = __nonzero__
36 adict['__nonzero__'] = __nonzero__
35
37
36 self.__dict__ = adict
37
38 # modules should have a __file__ attribute
38 # modules should have a __file__ attribute
39 adict['__file__'] = __file__
39 adict['__file__'] = __file__
40 self.__origdict = adict
40
41
41 def __getattr__(self,key):
42 def __getattr__(self,key):
42 try:
43 try:
43 return self.__dict__[key]
44 return self.__origdict[key]
44 except KeyError, e:
45 except KeyError, e:
45 raise AttributeError("FakeModule object has no attribute %s" % e)
46 raise AttributeError("FakeModule object has no attribute %s" % e)
46
47
47 def __str__(self):
48 def __str__(self):
48 return "<IPython.FakeModule instance>"
49 return "<IPython.FakeModule instance>"
49
50
50 def __repr__(self):
51 def __repr__(self):
51 return str(self)
52 return str(self)
@@ -1,526 +1,486 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """Tools for inspecting Python objects.
2 """Tools for inspecting Python objects.
3
3
4 Uses syntax highlighting for presenting the various information elements.
4 Uses syntax highlighting for presenting the various information elements.
5
5
6 Similar in spirit to the inspect module, but all calls take a name argument to
6 Similar in spirit to the inspect module, but all calls take a name argument to
7 reference the name under which an object is being read.
7 reference the name under which an object is being read.
8
8
9 $Id: OInspect.py 1571 2006-08-09 07:54:40Z fperez $
9 $Id: OInspect.py 1602 2006-08-11 09:19:33Z vivainio $
10 """
10 """
11
11
12 #*****************************************************************************
12 #*****************************************************************************
13 # Copyright (C) 2001-2004 Fernando Perez <fperez@colorado.edu>
13 # Copyright (C) 2001-2004 Fernando Perez <fperez@colorado.edu>
14 #
14 #
15 # Distributed under the terms of the BSD License. The full license is in
15 # Distributed under the terms of the BSD License. The full license is in
16 # the file COPYING, distributed as part of this software.
16 # the file COPYING, distributed as part of this software.
17 #*****************************************************************************
17 #*****************************************************************************
18
18
19 from IPython import Release
19 from IPython import Release
20 __author__ = '%s <%s>' % Release.authors['Fernando']
20 __author__ = '%s <%s>' % Release.authors['Fernando']
21 __license__ = Release.license
21 __license__ = Release.license
22
22
23 __all__ = ['Inspector','InspectColors']
23 __all__ = ['Inspector','InspectColors']
24
24
25 # stdlib modules
25 # stdlib modules
26 import __builtin__
26 import __builtin__
27 import inspect
27 import inspect
28 import linecache
28 import linecache
29 import string
29 import string
30 import StringIO
30 import StringIO
31 import types
31 import types
32 import os
32 import os
33 import sys
34 # IPython's own
33 # IPython's own
35 from IPython import PyColorize
34 from IPython import PyColorize
36 from IPython.genutils import page,indent,Term,mkdict
35 from IPython.genutils import page,indent,Term,mkdict
37 from IPython.Itpl import itpl
36 from IPython.Itpl import itpl
38 from IPython.wildcard import list_namespace
37 from IPython.wildcard import list_namespace
39 from IPython.ColorANSI import *
38 from IPython.ColorANSI import *
40
39
41 #****************************************************************************
40 #****************************************************************************
42 # HACK!!! This is a crude fix for bugs in python 2.3's inspect module. We
43 # simply monkeypatch inspect with code copied from python 2.4.
44 if sys.version_info[:2] == (2,3):
45 from inspect import ismodule, getabsfile, modulesbyfile
46 def getmodule(object):
47 """Return the module an object was defined in, or None if not found."""
48 if ismodule(object):
49 return object
50 if hasattr(object, '__module__'):
51 return sys.modules.get(object.__module__)
52 try:
53 file = getabsfile(object)
54 except TypeError:
55 return None
56 if file in modulesbyfile:
57 return sys.modules.get(modulesbyfile[file])
58 for module in sys.modules.values():
59 if hasattr(module, '__file__'):
60 modulesbyfile[
61 os.path.realpath(
62 getabsfile(module))] = module.__name__
63 if file in modulesbyfile:
64 return sys.modules.get(modulesbyfile[file])
65 main = sys.modules['__main__']
66 if not hasattr(object, '__name__'):
67 return None
68 if hasattr(main, object.__name__):
69 mainobject = getattr(main, object.__name__)
70 if mainobject is object:
71 return main
72 builtin = sys.modules['__builtin__']
73 if hasattr(builtin, object.__name__):
74 builtinobject = getattr(builtin, object.__name__)
75 if builtinobject is object:
76 return builtin
77
78 inspect.getmodule = getmodule
79
80 #****************************************************************************
81 # Builtin color schemes
41 # Builtin color schemes
82
42
83 Colors = TermColors # just a shorthand
43 Colors = TermColors # just a shorthand
84
44
85 # Build a few color schemes
45 # Build a few color schemes
86 NoColor = ColorScheme(
46 NoColor = ColorScheme(
87 'NoColor',{
47 'NoColor',{
88 'header' : Colors.NoColor,
48 'header' : Colors.NoColor,
89 'normal' : Colors.NoColor # color off (usu. Colors.Normal)
49 'normal' : Colors.NoColor # color off (usu. Colors.Normal)
90 } )
50 } )
91
51
92 LinuxColors = ColorScheme(
52 LinuxColors = ColorScheme(
93 'Linux',{
53 'Linux',{
94 'header' : Colors.LightRed,
54 'header' : Colors.LightRed,
95 'normal' : Colors.Normal # color off (usu. Colors.Normal)
55 'normal' : Colors.Normal # color off (usu. Colors.Normal)
96 } )
56 } )
97
57
98 LightBGColors = ColorScheme(
58 LightBGColors = ColorScheme(
99 'LightBG',{
59 'LightBG',{
100 'header' : Colors.Red,
60 'header' : Colors.Red,
101 'normal' : Colors.Normal # color off (usu. Colors.Normal)
61 'normal' : Colors.Normal # color off (usu. Colors.Normal)
102 } )
62 } )
103
63
104 # Build table of color schemes (needed by the parser)
64 # Build table of color schemes (needed by the parser)
105 InspectColors = ColorSchemeTable([NoColor,LinuxColors,LightBGColors],
65 InspectColors = ColorSchemeTable([NoColor,LinuxColors,LightBGColors],
106 'Linux')
66 'Linux')
107
67
108 #****************************************************************************
68 #****************************************************************************
109 # Auxiliary functions
69 # Auxiliary functions
110 def getdoc(obj):
70 def getdoc(obj):
111 """Stable wrapper around inspect.getdoc.
71 """Stable wrapper around inspect.getdoc.
112
72
113 This can't crash because of attribute problems.
73 This can't crash because of attribute problems.
114
74
115 It also attempts to call a getdoc() method on the given object. This
75 It also attempts to call a getdoc() method on the given object. This
116 allows objects which provide their docstrings via non-standard mechanisms
76 allows objects which provide their docstrings via non-standard mechanisms
117 (like Pyro proxies) to still be inspected by ipython's ? system."""
77 (like Pyro proxies) to still be inspected by ipython's ? system."""
118
78
119 ds = None # default return value
79 ds = None # default return value
120 try:
80 try:
121 ds = inspect.getdoc(obj)
81 ds = inspect.getdoc(obj)
122 except:
82 except:
123 # Harden against an inspect failure, which can occur with
83 # Harden against an inspect failure, which can occur with
124 # SWIG-wrapped extensions.
84 # SWIG-wrapped extensions.
125 pass
85 pass
126 # Allow objects to offer customized documentation via a getdoc method:
86 # Allow objects to offer customized documentation via a getdoc method:
127 try:
87 try:
128 ds2 = obj.getdoc()
88 ds2 = obj.getdoc()
129 except:
89 except:
130 pass
90 pass
131 else:
91 else:
132 # if we get extra info, we add it to the normal docstring.
92 # if we get extra info, we add it to the normal docstring.
133 if ds is None:
93 if ds is None:
134 ds = ds2
94 ds = ds2
135 else:
95 else:
136 ds = '%s\n%s' % (ds,ds2)
96 ds = '%s\n%s' % (ds,ds2)
137 return ds
97 return ds
138
98
139 #****************************************************************************
99 #****************************************************************************
140 # Class definitions
100 # Class definitions
141
101
142 class myStringIO(StringIO.StringIO):
102 class myStringIO(StringIO.StringIO):
143 """Adds a writeln method to normal StringIO."""
103 """Adds a writeln method to normal StringIO."""
144 def writeln(self,*arg,**kw):
104 def writeln(self,*arg,**kw):
145 """Does a write() and then a write('\n')"""
105 """Does a write() and then a write('\n')"""
146 self.write(*arg,**kw)
106 self.write(*arg,**kw)
147 self.write('\n')
107 self.write('\n')
148
108
149 class Inspector:
109 class Inspector:
150 def __init__(self,color_table,code_color_table,scheme,
110 def __init__(self,color_table,code_color_table,scheme,
151 str_detail_level=0):
111 str_detail_level=0):
152 self.color_table = color_table
112 self.color_table = color_table
153 self.parser = PyColorize.Parser(code_color_table,out='str')
113 self.parser = PyColorize.Parser(code_color_table,out='str')
154 self.format = self.parser.format
114 self.format = self.parser.format
155 self.str_detail_level = str_detail_level
115 self.str_detail_level = str_detail_level
156 self.set_active_scheme(scheme)
116 self.set_active_scheme(scheme)
157
117
158 def __getargspec(self,obj):
118 def __getargspec(self,obj):
159 """Get the names and default values of a function's arguments.
119 """Get the names and default values of a function's arguments.
160
120
161 A tuple of four things is returned: (args, varargs, varkw, defaults).
121 A tuple of four things is returned: (args, varargs, varkw, defaults).
162 'args' is a list of the argument names (it may contain nested lists).
122 'args' is a list of the argument names (it may contain nested lists).
163 'varargs' and 'varkw' are the names of the * and ** arguments or None.
123 'varargs' and 'varkw' are the names of the * and ** arguments or None.
164 'defaults' is an n-tuple of the default values of the last n arguments.
124 'defaults' is an n-tuple of the default values of the last n arguments.
165
125
166 Modified version of inspect.getargspec from the Python Standard
126 Modified version of inspect.getargspec from the Python Standard
167 Library."""
127 Library."""
168
128
169 if inspect.isfunction(obj):
129 if inspect.isfunction(obj):
170 func_obj = obj
130 func_obj = obj
171 elif inspect.ismethod(obj):
131 elif inspect.ismethod(obj):
172 func_obj = obj.im_func
132 func_obj = obj.im_func
173 else:
133 else:
174 raise TypeError, 'arg is not a Python function'
134 raise TypeError, 'arg is not a Python function'
175 args, varargs, varkw = inspect.getargs(func_obj.func_code)
135 args, varargs, varkw = inspect.getargs(func_obj.func_code)
176 return args, varargs, varkw, func_obj.func_defaults
136 return args, varargs, varkw, func_obj.func_defaults
177
137
178 def __getdef(self,obj,oname=''):
138 def __getdef(self,obj,oname=''):
179 """Return the definition header for any callable object.
139 """Return the definition header for any callable object.
180
140
181 If any exception is generated, None is returned instead and the
141 If any exception is generated, None is returned instead and the
182 exception is suppressed."""
142 exception is suppressed."""
183
143
184 try:
144 try:
185 return oname + inspect.formatargspec(*self.__getargspec(obj))
145 return oname + inspect.formatargspec(*self.__getargspec(obj))
186 except:
146 except:
187 return None
147 return None
188
148
189 def __head(self,h):
149 def __head(self,h):
190 """Return a header string with proper colors."""
150 """Return a header string with proper colors."""
191 return '%s%s%s' % (self.color_table.active_colors.header,h,
151 return '%s%s%s' % (self.color_table.active_colors.header,h,
192 self.color_table.active_colors.normal)
152 self.color_table.active_colors.normal)
193
153
194 def set_active_scheme(self,scheme):
154 def set_active_scheme(self,scheme):
195 self.color_table.set_active_scheme(scheme)
155 self.color_table.set_active_scheme(scheme)
196 self.parser.color_table.set_active_scheme(scheme)
156 self.parser.color_table.set_active_scheme(scheme)
197
157
198 def noinfo(self,msg,oname):
158 def noinfo(self,msg,oname):
199 """Generic message when no information is found."""
159 """Generic message when no information is found."""
200 print 'No %s found' % msg,
160 print 'No %s found' % msg,
201 if oname:
161 if oname:
202 print 'for %s' % oname
162 print 'for %s' % oname
203 else:
163 else:
204 print
164 print
205
165
206 def pdef(self,obj,oname=''):
166 def pdef(self,obj,oname=''):
207 """Print the definition header for any callable object.
167 """Print the definition header for any callable object.
208
168
209 If the object is a class, print the constructor information."""
169 If the object is a class, print the constructor information."""
210
170
211 if not callable(obj):
171 if not callable(obj):
212 print 'Object is not callable.'
172 print 'Object is not callable.'
213 return
173 return
214
174
215 header = ''
175 header = ''
216 if type(obj) is types.ClassType:
176 if type(obj) is types.ClassType:
217 header = self.__head('Class constructor information:\n')
177 header = self.__head('Class constructor information:\n')
218 obj = obj.__init__
178 obj = obj.__init__
219 elif type(obj) is types.InstanceType:
179 elif type(obj) is types.InstanceType:
220 obj = obj.__call__
180 obj = obj.__call__
221
181
222 output = self.__getdef(obj,oname)
182 output = self.__getdef(obj,oname)
223 if output is None:
183 if output is None:
224 self.noinfo('definition header',oname)
184 self.noinfo('definition header',oname)
225 else:
185 else:
226 print >>Term.cout, header,self.format(output),
186 print >>Term.cout, header,self.format(output),
227
187
228 def pdoc(self,obj,oname='',formatter = None):
188 def pdoc(self,obj,oname='',formatter = None):
229 """Print the docstring for any object.
189 """Print the docstring for any object.
230
190
231 Optional:
191 Optional:
232 -formatter: a function to run the docstring through for specially
192 -formatter: a function to run the docstring through for specially
233 formatted docstrings."""
193 formatted docstrings."""
234
194
235 head = self.__head # so that itpl can find it even if private
195 head = self.__head # so that itpl can find it even if private
236 ds = getdoc(obj)
196 ds = getdoc(obj)
237 if formatter:
197 if formatter:
238 ds = formatter(ds)
198 ds = formatter(ds)
239 if type(obj) is types.ClassType:
199 if type(obj) is types.ClassType:
240 init_ds = getdoc(obj.__init__)
200 init_ds = getdoc(obj.__init__)
241 output = itpl('$head("Class Docstring:")\n'
201 output = itpl('$head("Class Docstring:")\n'
242 '$indent(ds)\n'
202 '$indent(ds)\n'
243 '$head("Constructor Docstring"):\n'
203 '$head("Constructor Docstring"):\n'
244 '$indent(init_ds)')
204 '$indent(init_ds)')
245 elif type(obj) is types.InstanceType and hasattr(obj,'__call__'):
205 elif type(obj) is types.InstanceType and hasattr(obj,'__call__'):
246 call_ds = getdoc(obj.__call__)
206 call_ds = getdoc(obj.__call__)
247 if call_ds:
207 if call_ds:
248 output = itpl('$head("Class Docstring:")\n$indent(ds)\n'
208 output = itpl('$head("Class Docstring:")\n$indent(ds)\n'
249 '$head("Calling Docstring:")\n$indent(call_ds)')
209 '$head("Calling Docstring:")\n$indent(call_ds)')
250 else:
210 else:
251 output = ds
211 output = ds
252 else:
212 else:
253 output = ds
213 output = ds
254 if output is None:
214 if output is None:
255 self.noinfo('documentation',oname)
215 self.noinfo('documentation',oname)
256 return
216 return
257 page(output)
217 page(output)
258
218
259 def psource(self,obj,oname=''):
219 def psource(self,obj,oname=''):
260 """Print the source code for an object."""
220 """Print the source code for an object."""
261
221
262 # Flush the source cache because inspect can return out-of-date source
222 # Flush the source cache because inspect can return out-of-date source
263 linecache.checkcache()
223 linecache.checkcache()
264 try:
224 try:
265 src = inspect.getsource(obj)
225 src = inspect.getsource(obj)
266 except:
226 except:
267 self.noinfo('source',oname)
227 self.noinfo('source',oname)
268 else:
228 else:
269 page(self.format(src))
229 page(self.format(src))
270
230
271 def pfile(self,obj,oname=''):
231 def pfile(self,obj,oname=''):
272 """Show the whole file where an object was defined."""
232 """Show the whole file where an object was defined."""
273 try:
233 try:
274 sourcelines,lineno = inspect.getsourcelines(obj)
234 sourcelines,lineno = inspect.getsourcelines(obj)
275 except:
235 except:
276 self.noinfo('file',oname)
236 self.noinfo('file',oname)
277 else:
237 else:
278 # run contents of file through pager starting at line
238 # run contents of file through pager starting at line
279 # where the object is defined
239 # where the object is defined
280 ofile = inspect.getabsfile(obj)
240 ofile = inspect.getabsfile(obj)
281
241
282 if (ofile.endswith('.so') or ofile.endswith('.dll')):
242 if (ofile.endswith('.so') or ofile.endswith('.dll')):
283 print 'File %r is binary, not printing.' % ofile
243 print 'File %r is binary, not printing.' % ofile
284 elif not os.path.isfile(ofile):
244 elif not os.path.isfile(ofile):
285 print 'File %r does not exist, not printing.' % ofile
245 print 'File %r does not exist, not printing.' % ofile
286 else:
246 else:
287 # Print only text files, not extension binaries.
247 # Print only text files, not extension binaries.
288 page(self.format(open(ofile).read()),lineno)
248 page(self.format(open(ofile).read()),lineno)
289 #page(self.format(open(inspect.getabsfile(obj)).read()),lineno)
249 #page(self.format(open(inspect.getabsfile(obj)).read()),lineno)
290
250
291 def pinfo(self,obj,oname='',formatter=None,info=None,detail_level=0):
251 def pinfo(self,obj,oname='',formatter=None,info=None,detail_level=0):
292 """Show detailed information about an object.
252 """Show detailed information about an object.
293
253
294 Optional arguments:
254 Optional arguments:
295
255
296 - oname: name of the variable pointing to the object.
256 - oname: name of the variable pointing to the object.
297
257
298 - formatter: special formatter for docstrings (see pdoc)
258 - formatter: special formatter for docstrings (see pdoc)
299
259
300 - info: a structure with some information fields which may have been
260 - info: a structure with some information fields which may have been
301 precomputed already.
261 precomputed already.
302
262
303 - detail_level: if set to 1, more information is given.
263 - detail_level: if set to 1, more information is given.
304 """
264 """
305
265
306 obj_type = type(obj)
266 obj_type = type(obj)
307
267
308 header = self.__head
268 header = self.__head
309 if info is None:
269 if info is None:
310 ismagic = 0
270 ismagic = 0
311 isalias = 0
271 isalias = 0
312 ospace = ''
272 ospace = ''
313 else:
273 else:
314 ismagic = info.ismagic
274 ismagic = info.ismagic
315 isalias = info.isalias
275 isalias = info.isalias
316 ospace = info.namespace
276 ospace = info.namespace
317 # Get docstring, special-casing aliases:
277 # Get docstring, special-casing aliases:
318 if isalias:
278 if isalias:
319 ds = "Alias to the system command:\n %s" % obj[1]
279 ds = "Alias to the system command:\n %s" % obj[1]
320 else:
280 else:
321 ds = getdoc(obj)
281 ds = getdoc(obj)
322 if ds is None:
282 if ds is None:
323 ds = '<no docstring>'
283 ds = '<no docstring>'
324 if formatter is not None:
284 if formatter is not None:
325 ds = formatter(ds)
285 ds = formatter(ds)
326
286
327 # store output in a list which gets joined with \n at the end.
287 # store output in a list which gets joined with \n at the end.
328 out = myStringIO()
288 out = myStringIO()
329
289
330 string_max = 200 # max size of strings to show (snipped if longer)
290 string_max = 200 # max size of strings to show (snipped if longer)
331 shalf = int((string_max -5)/2)
291 shalf = int((string_max -5)/2)
332
292
333 if ismagic:
293 if ismagic:
334 obj_type_name = 'Magic function'
294 obj_type_name = 'Magic function'
335 elif isalias:
295 elif isalias:
336 obj_type_name = 'System alias'
296 obj_type_name = 'System alias'
337 else:
297 else:
338 obj_type_name = obj_type.__name__
298 obj_type_name = obj_type.__name__
339 out.writeln(header('Type:\t\t')+obj_type_name)
299 out.writeln(header('Type:\t\t')+obj_type_name)
340
300
341 try:
301 try:
342 bclass = obj.__class__
302 bclass = obj.__class__
343 out.writeln(header('Base Class:\t')+str(bclass))
303 out.writeln(header('Base Class:\t')+str(bclass))
344 except: pass
304 except: pass
345
305
346 # String form, but snip if too long in ? form (full in ??)
306 # String form, but snip if too long in ? form (full in ??)
347 if detail_level >= self.str_detail_level:
307 if detail_level >= self.str_detail_level:
348 try:
308 try:
349 ostr = str(obj)
309 ostr = str(obj)
350 str_head = 'String Form:'
310 str_head = 'String Form:'
351 if not detail_level and len(ostr)>string_max:
311 if not detail_level and len(ostr)>string_max:
352 ostr = ostr[:shalf] + ' <...> ' + ostr[-shalf:]
312 ostr = ostr[:shalf] + ' <...> ' + ostr[-shalf:]
353 ostr = ("\n" + " " * len(str_head.expandtabs())).\
313 ostr = ("\n" + " " * len(str_head.expandtabs())).\
354 join(map(string.strip,ostr.split("\n")))
314 join(map(string.strip,ostr.split("\n")))
355 if ostr.find('\n') > -1:
315 if ostr.find('\n') > -1:
356 # Print multi-line strings starting at the next line.
316 # Print multi-line strings starting at the next line.
357 str_sep = '\n'
317 str_sep = '\n'
358 else:
318 else:
359 str_sep = '\t'
319 str_sep = '\t'
360 out.writeln("%s%s%s" % (header(str_head),str_sep,ostr))
320 out.writeln("%s%s%s" % (header(str_head),str_sep,ostr))
361 except:
321 except:
362 pass
322 pass
363
323
364 if ospace:
324 if ospace:
365 out.writeln(header('Namespace:\t')+ospace)
325 out.writeln(header('Namespace:\t')+ospace)
366
326
367 # Length (for strings and lists)
327 # Length (for strings and lists)
368 try:
328 try:
369 length = str(len(obj))
329 length = str(len(obj))
370 out.writeln(header('Length:\t\t')+length)
330 out.writeln(header('Length:\t\t')+length)
371 except: pass
331 except: pass
372
332
373 # Filename where object was defined
333 # Filename where object was defined
374 binary_file = False
334 binary_file = False
375 try:
335 try:
376 fname = inspect.getabsfile(obj)
336 fname = inspect.getabsfile(obj)
377 if fname.endswith('<string>'):
337 if fname.endswith('<string>'):
378 fname = 'Dynamically generated function. No source code available.'
338 fname = 'Dynamically generated function. No source code available.'
379 if (fname.endswith('.so') or fname.endswith('.dll') or
339 if (fname.endswith('.so') or fname.endswith('.dll') or
380 not os.path.isfile(fname)):
340 not os.path.isfile(fname)):
381 binary_file = True
341 binary_file = True
382 out.writeln(header('File:\t\t')+fname)
342 out.writeln(header('File:\t\t')+fname)
383 except:
343 except:
384 # if anything goes wrong, we don't want to show source, so it's as
344 # if anything goes wrong, we don't want to show source, so it's as
385 # if the file was binary
345 # if the file was binary
386 binary_file = True
346 binary_file = True
387
347
388 # reconstruct the function definition and print it:
348 # reconstruct the function definition and print it:
389 defln = self.__getdef(obj,oname)
349 defln = self.__getdef(obj,oname)
390 if defln:
350 if defln:
391 out.write(header('Definition:\t')+self.format(defln))
351 out.write(header('Definition:\t')+self.format(defln))
392
352
393 # Docstrings only in detail 0 mode, since source contains them (we
353 # Docstrings only in detail 0 mode, since source contains them (we
394 # avoid repetitions). If source fails, we add them back, see below.
354 # avoid repetitions). If source fails, we add them back, see below.
395 if ds and detail_level == 0:
355 if ds and detail_level == 0:
396 out.writeln(header('Docstring:\n') + indent(ds))
356 out.writeln(header('Docstring:\n') + indent(ds))
397
357
398
358
399 # Original source code for any callable
359 # Original source code for any callable
400 if detail_level:
360 if detail_level:
401 # Flush the source cache because inspect can return out-of-date source
361 # Flush the source cache because inspect can return out-of-date source
402 linecache.checkcache()
362 linecache.checkcache()
403 source_success = False
363 source_success = False
404 try:
364 try:
405 if not binary_file:
365 if not binary_file:
406 source = self.format(inspect.getsource(obj))
366 source = self.format(inspect.getsource(obj))
407 out.write(header('Source:\n')+source.rstrip())
367 out.write(header('Source:\n')+source.rstrip())
408 source_success = True
368 source_success = True
409 except:
369 except:
410 pass
370 pass
411
371
412 if ds and not source_success:
372 if ds and not source_success:
413 out.writeln(header('Docstring [source file open failed]:\n') + indent(ds))
373 out.writeln(header('Docstring [source file open failed]:\n') + indent(ds))
414
374
415 # Constructor docstring for classes
375 # Constructor docstring for classes
416 if obj_type is types.ClassType:
376 if obj_type is types.ClassType:
417 # reconstruct the function definition and print it:
377 # reconstruct the function definition and print it:
418 try:
378 try:
419 obj_init = obj.__init__
379 obj_init = obj.__init__
420 except AttributeError:
380 except AttributeError:
421 init_def = init_ds = None
381 init_def = init_ds = None
422 else:
382 else:
423 init_def = self.__getdef(obj_init,oname)
383 init_def = self.__getdef(obj_init,oname)
424 init_ds = getdoc(obj_init)
384 init_ds = getdoc(obj_init)
425
385
426 if init_def or init_ds:
386 if init_def or init_ds:
427 out.writeln(header('\nConstructor information:'))
387 out.writeln(header('\nConstructor information:'))
428 if init_def:
388 if init_def:
429 out.write(header('Definition:\t')+ self.format(init_def))
389 out.write(header('Definition:\t')+ self.format(init_def))
430 if init_ds:
390 if init_ds:
431 out.writeln(header('Docstring:\n') + indent(init_ds))
391 out.writeln(header('Docstring:\n') + indent(init_ds))
432 # and class docstring for instances:
392 # and class docstring for instances:
433 elif obj_type is types.InstanceType:
393 elif obj_type is types.InstanceType:
434
394
435 # First, check whether the instance docstring is identical to the
395 # First, check whether the instance docstring is identical to the
436 # class one, and print it separately if they don't coincide. In
396 # class one, and print it separately if they don't coincide. In
437 # most cases they will, but it's nice to print all the info for
397 # most cases they will, but it's nice to print all the info for
438 # objects which use instance-customized docstrings.
398 # objects which use instance-customized docstrings.
439 if ds:
399 if ds:
440 class_ds = getdoc(obj.__class__)
400 class_ds = getdoc(obj.__class__)
441 if class_ds and ds != class_ds:
401 if class_ds and ds != class_ds:
442 out.writeln(header('Class Docstring:\n') +
402 out.writeln(header('Class Docstring:\n') +
443 indent(class_ds))
403 indent(class_ds))
444
404
445 # Next, try to show constructor docstrings
405 # Next, try to show constructor docstrings
446 try:
406 try:
447 init_ds = getdoc(obj.__init__)
407 init_ds = getdoc(obj.__init__)
448 except AttributeError:
408 except AttributeError:
449 init_ds = None
409 init_ds = None
450 if init_ds:
410 if init_ds:
451 out.writeln(header('Constructor Docstring:\n') +
411 out.writeln(header('Constructor Docstring:\n') +
452 indent(init_ds))
412 indent(init_ds))
453
413
454 # Call form docstring for callable instances
414 # Call form docstring for callable instances
455 if hasattr(obj,'__call__'):
415 if hasattr(obj,'__call__'):
456 out.writeln(header('Callable:\t')+'Yes')
416 out.writeln(header('Callable:\t')+'Yes')
457 call_def = self.__getdef(obj.__call__,oname)
417 call_def = self.__getdef(obj.__call__,oname)
458 if call_def is None:
418 if call_def is None:
459 out.write(header('Call def:\t')+
419 out.write(header('Call def:\t')+
460 'Calling definition not available.')
420 'Calling definition not available.')
461 else:
421 else:
462 out.write(header('Call def:\t')+self.format(call_def))
422 out.write(header('Call def:\t')+self.format(call_def))
463 call_ds = getdoc(obj.__call__)
423 call_ds = getdoc(obj.__call__)
464 if call_ds:
424 if call_ds:
465 out.writeln(header('Call docstring:\n') + indent(call_ds))
425 out.writeln(header('Call docstring:\n') + indent(call_ds))
466
426
467 # Finally send to printer/pager
427 # Finally send to printer/pager
468 output = out.getvalue()
428 output = out.getvalue()
469 if output:
429 if output:
470 page(output)
430 page(output)
471 # end pinfo
431 # end pinfo
472
432
473 def psearch(self,pattern,ns_table,ns_search=[],
433 def psearch(self,pattern,ns_table,ns_search=[],
474 ignore_case=False,show_all=False):
434 ignore_case=False,show_all=False):
475 """Search namespaces with wildcards for objects.
435 """Search namespaces with wildcards for objects.
476
436
477 Arguments:
437 Arguments:
478
438
479 - pattern: string containing shell-like wildcards to use in namespace
439 - pattern: string containing shell-like wildcards to use in namespace
480 searches and optionally a type specification to narrow the search to
440 searches and optionally a type specification to narrow the search to
481 objects of that type.
441 objects of that type.
482
442
483 - ns_table: dict of name->namespaces for search.
443 - ns_table: dict of name->namespaces for search.
484
444
485 Optional arguments:
445 Optional arguments:
486
446
487 - ns_search: list of namespace names to include in search.
447 - ns_search: list of namespace names to include in search.
488
448
489 - ignore_case(False): make the search case-insensitive.
449 - ignore_case(False): make the search case-insensitive.
490
450
491 - show_all(False): show all names, including those starting with
451 - show_all(False): show all names, including those starting with
492 underscores.
452 underscores.
493 """
453 """
494 # defaults
454 # defaults
495 type_pattern = 'all'
455 type_pattern = 'all'
496 filter = ''
456 filter = ''
497
457
498 cmds = pattern.split()
458 cmds = pattern.split()
499 len_cmds = len(cmds)
459 len_cmds = len(cmds)
500 if len_cmds == 1:
460 if len_cmds == 1:
501 # Only filter pattern given
461 # Only filter pattern given
502 filter = cmds[0]
462 filter = cmds[0]
503 elif len_cmds == 2:
463 elif len_cmds == 2:
504 # Both filter and type specified
464 # Both filter and type specified
505 filter,type_pattern = cmds
465 filter,type_pattern = cmds
506 else:
466 else:
507 raise ValueError('invalid argument string for psearch: <%s>' %
467 raise ValueError('invalid argument string for psearch: <%s>' %
508 pattern)
468 pattern)
509
469
510 # filter search namespaces
470 # filter search namespaces
511 for name in ns_search:
471 for name in ns_search:
512 if name not in ns_table:
472 if name not in ns_table:
513 raise ValueError('invalid namespace <%s>. Valid names: %s' %
473 raise ValueError('invalid namespace <%s>. Valid names: %s' %
514 (name,ns_table.keys()))
474 (name,ns_table.keys()))
515
475
516 #print 'type_pattern:',type_pattern # dbg
476 #print 'type_pattern:',type_pattern # dbg
517 search_result = []
477 search_result = []
518 for ns_name in ns_search:
478 for ns_name in ns_search:
519 ns = ns_table[ns_name]
479 ns = ns_table[ns_name]
520 tmp_res = list(list_namespace(ns,type_pattern,filter,
480 tmp_res = list(list_namespace(ns,type_pattern,filter,
521 ignore_case=ignore_case,
481 ignore_case=ignore_case,
522 show_all=show_all))
482 show_all=show_all))
523 search_result.extend(tmp_res)
483 search_result.extend(tmp_res)
524 search_result.sort()
484 search_result.sort()
525
485
526 page('\n'.join(search_result))
486 page('\n'.join(search_result))
@@ -1,5712 +1,5719 b''
1 2006-08-11 Ville Vainio <vivainio@gmail.com>
2
3 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
4 by resolving issue properly, i.e. by inheriting FakeModule
5 from types.ModuleType. Pickling ipython interactive data
6 should still work as usual (testing appreciated).
7
1 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
8 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
2
9
3 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
10 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
4 running under python 2.3 with code from 2.4 to fix a bug with
11 running under python 2.3 with code from 2.4 to fix a bug with
5 help(). Reported by the Debian maintainers, Norbert Tretkowski
12 help(). Reported by the Debian maintainers, Norbert Tretkowski
6 <norbert-AT-tretkowski.de> and Alexandre Fayolle
13 <norbert-AT-tretkowski.de> and Alexandre Fayolle
7 <afayolle-AT-debian.org>.
14 <afayolle-AT-debian.org>.
8
15
9 2006-08-04 Walter Doerwald <walter@livinglogic.de>
16 2006-08-04 Walter Doerwald <walter@livinglogic.de>
10
17
11 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
18 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
12 (which was displaying "quit" twice).
19 (which was displaying "quit" twice).
13
20
14 2006-07-28 Walter Doerwald <walter@livinglogic.de>
21 2006-07-28 Walter Doerwald <walter@livinglogic.de>
15
22
16 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
23 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
17 the mode argument).
24 the mode argument).
18
25
19 2006-07-27 Walter Doerwald <walter@livinglogic.de>
26 2006-07-27 Walter Doerwald <walter@livinglogic.de>
20
27
21 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
28 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
22 not running under IPython.
29 not running under IPython.
23
30
24 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
31 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
25 and make it iterable (iterating over the attribute itself). Add two new
32 and make it iterable (iterating over the attribute itself). Add two new
26 magic strings for __xattrs__(): If the string starts with "-", the attribute
33 magic strings for __xattrs__(): If the string starts with "-", the attribute
27 will not be displayed in ibrowse's detail view (but it can still be
34 will not be displayed in ibrowse's detail view (but it can still be
28 iterated over). This makes it possible to add attributes that are large
35 iterated over). This makes it possible to add attributes that are large
29 lists or generator methods to the detail view. Replace magic attribute names
36 lists or generator methods to the detail view. Replace magic attribute names
30 and _attrname() and _getattr() with "descriptors": For each type of magic
37 and _attrname() and _getattr() with "descriptors": For each type of magic
31 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
38 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
32 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
39 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
33 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
40 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
34 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
41 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
35 are still supported.
42 are still supported.
36
43
37 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
44 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
38 fails in ibrowse.fetch(), the exception object is added as the last item
45 fails in ibrowse.fetch(), the exception object is added as the last item
39 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
46 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
40 a generator throws an exception midway through execution.
47 a generator throws an exception midway through execution.
41
48
42 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
49 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
43 encoding into methods.
50 encoding into methods.
44
51
45 2006-07-26 Ville Vainio <vivainio@gmail.com>
52 2006-07-26 Ville Vainio <vivainio@gmail.com>
46
53
47 * iplib.py: history now stores multiline input as single
54 * iplib.py: history now stores multiline input as single
48 history entries. Patch by Jorgen Cederlof.
55 history entries. Patch by Jorgen Cederlof.
49
56
50 2006-07-18 Walter Doerwald <walter@livinglogic.de>
57 2006-07-18 Walter Doerwald <walter@livinglogic.de>
51
58
52 * IPython/Extensions/ibrowse.py: Make cursor visible over
59 * IPython/Extensions/ibrowse.py: Make cursor visible over
53 non existing attributes.
60 non existing attributes.
54
61
55 2006-07-14 Walter Doerwald <walter@livinglogic.de>
62 2006-07-14 Walter Doerwald <walter@livinglogic.de>
56
63
57 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
64 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
58 error output of the running command doesn't mess up the screen.
65 error output of the running command doesn't mess up the screen.
59
66
60 2006-07-13 Walter Doerwald <walter@livinglogic.de>
67 2006-07-13 Walter Doerwald <walter@livinglogic.de>
61
68
62 * IPython/Extensions/ipipe.py (isort): Make isort usable without
69 * IPython/Extensions/ipipe.py (isort): Make isort usable without
63 argument. This sorts the items themselves.
70 argument. This sorts the items themselves.
64
71
65 2006-07-12 Walter Doerwald <walter@livinglogic.de>
72 2006-07-12 Walter Doerwald <walter@livinglogic.de>
66
73
67 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
74 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
68 Compile expression strings into code objects. This should speed
75 Compile expression strings into code objects. This should speed
69 up ifilter and friends somewhat.
76 up ifilter and friends somewhat.
70
77
71 2006-07-08 Ville Vainio <vivainio@gmail.com>
78 2006-07-08 Ville Vainio <vivainio@gmail.com>
72
79
73 * Magic.py: %cpaste now strips > from the beginning of lines
80 * Magic.py: %cpaste now strips > from the beginning of lines
74 to ease pasting quoted code from emails. Contributed by
81 to ease pasting quoted code from emails. Contributed by
75 Stefan van der Walt.
82 Stefan van der Walt.
76
83
77 2006-06-29 Ville Vainio <vivainio@gmail.com>
84 2006-06-29 Ville Vainio <vivainio@gmail.com>
78
85
79 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
86 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
80 mode, patch contributed by Darren Dale. NEEDS TESTING!
87 mode, patch contributed by Darren Dale. NEEDS TESTING!
81
88
82 2006-06-28 Walter Doerwald <walter@livinglogic.de>
89 2006-06-28 Walter Doerwald <walter@livinglogic.de>
83
90
84 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
91 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
85 a blue background. Fix fetching new display rows when the browser
92 a blue background. Fix fetching new display rows when the browser
86 scrolls more than a screenful (e.g. by using the goto command).
93 scrolls more than a screenful (e.g. by using the goto command).
87
94
88 2006-06-27 Ville Vainio <vivainio@gmail.com>
95 2006-06-27 Ville Vainio <vivainio@gmail.com>
89
96
90 * Magic.py (_inspect, _ofind) Apply David Huard's
97 * Magic.py (_inspect, _ofind) Apply David Huard's
91 patch for displaying the correct docstring for 'property'
98 patch for displaying the correct docstring for 'property'
92 attributes.
99 attributes.
93
100
94 2006-06-23 Walter Doerwald <walter@livinglogic.de>
101 2006-06-23 Walter Doerwald <walter@livinglogic.de>
95
102
96 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
103 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
97 commands into the methods implementing them.
104 commands into the methods implementing them.
98
105
99 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
106 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
100
107
101 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
108 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
102 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
109 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
103 autoindent support was authored by Jin Liu.
110 autoindent support was authored by Jin Liu.
104
111
105 2006-06-22 Walter Doerwald <walter@livinglogic.de>
112 2006-06-22 Walter Doerwald <walter@livinglogic.de>
106
113
107 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
114 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
108 for keymaps with a custom class that simplifies handling.
115 for keymaps with a custom class that simplifies handling.
109
116
110 2006-06-19 Walter Doerwald <walter@livinglogic.de>
117 2006-06-19 Walter Doerwald <walter@livinglogic.de>
111
118
112 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
119 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
113 resizing. This requires Python 2.5 to work.
120 resizing. This requires Python 2.5 to work.
114
121
115 2006-06-16 Walter Doerwald <walter@livinglogic.de>
122 2006-06-16 Walter Doerwald <walter@livinglogic.de>
116
123
117 * IPython/Extensions/ibrowse.py: Add two new commands to
124 * IPython/Extensions/ibrowse.py: Add two new commands to
118 ibrowse: "hideattr" (mapped to "h") hides the attribute under
125 ibrowse: "hideattr" (mapped to "h") hides the attribute under
119 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
126 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
120 attributes again. Remapped the help command to "?". Display
127 attributes again. Remapped the help command to "?". Display
121 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
128 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
122 as keys for the "home" and "end" commands. Add three new commands
129 as keys for the "home" and "end" commands. Add three new commands
123 to the input mode for "find" and friends: "delend" (CTRL-K)
130 to the input mode for "find" and friends: "delend" (CTRL-K)
124 deletes to the end of line. "incsearchup" searches upwards in the
131 deletes to the end of line. "incsearchup" searches upwards in the
125 command history for an input that starts with the text before the cursor.
132 command history for an input that starts with the text before the cursor.
126 "incsearchdown" does the same downwards. Removed a bogus mapping of
133 "incsearchdown" does the same downwards. Removed a bogus mapping of
127 the x key to "delete".
134 the x key to "delete".
128
135
129 2006-06-15 Ville Vainio <vivainio@gmail.com>
136 2006-06-15 Ville Vainio <vivainio@gmail.com>
130
137
131 * iplib.py, hooks.py: Added new generate_prompt hook that can be
138 * iplib.py, hooks.py: Added new generate_prompt hook that can be
132 used to create prompts dynamically, instead of the "old" way of
139 used to create prompts dynamically, instead of the "old" way of
133 assigning "magic" strings to prompt_in1 and prompt_in2. The old
140 assigning "magic" strings to prompt_in1 and prompt_in2. The old
134 way still works (it's invoked by the default hook), of course.
141 way still works (it's invoked by the default hook), of course.
135
142
136 * Prompts.py: added generate_output_prompt hook for altering output
143 * Prompts.py: added generate_output_prompt hook for altering output
137 prompt
144 prompt
138
145
139 * Release.py: Changed version string to 0.7.3.svn.
146 * Release.py: Changed version string to 0.7.3.svn.
140
147
141 2006-06-15 Walter Doerwald <walter@livinglogic.de>
148 2006-06-15 Walter Doerwald <walter@livinglogic.de>
142
149
143 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
150 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
144 the call to fetch() always tries to fetch enough data for at least one
151 the call to fetch() always tries to fetch enough data for at least one
145 full screen. This makes it possible to simply call moveto(0,0,True) in
152 full screen. This makes it possible to simply call moveto(0,0,True) in
146 the constructor. Fix typos and removed the obsolete goto attribute.
153 the constructor. Fix typos and removed the obsolete goto attribute.
147
154
148 2006-06-12 Ville Vainio <vivainio@gmail.com>
155 2006-06-12 Ville Vainio <vivainio@gmail.com>
149
156
150 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
157 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
151 allowing $variable interpolation within multiline statements,
158 allowing $variable interpolation within multiline statements,
152 though so far only with "sh" profile for a testing period.
159 though so far only with "sh" profile for a testing period.
153 The patch also enables splitting long commands with \ but it
160 The patch also enables splitting long commands with \ but it
154 doesn't work properly yet.
161 doesn't work properly yet.
155
162
156 2006-06-12 Walter Doerwald <walter@livinglogic.de>
163 2006-06-12 Walter Doerwald <walter@livinglogic.de>
157
164
158 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
165 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
159 input history and the position of the cursor in the input history for
166 input history and the position of the cursor in the input history for
160 the find, findbackwards and goto command.
167 the find, findbackwards and goto command.
161
168
162 2006-06-10 Walter Doerwald <walter@livinglogic.de>
169 2006-06-10 Walter Doerwald <walter@livinglogic.de>
163
170
164 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
171 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
165 implements the basic functionality of browser commands that require
172 implements the basic functionality of browser commands that require
166 input. Reimplement the goto, find and findbackwards commands as
173 input. Reimplement the goto, find and findbackwards commands as
167 subclasses of _CommandInput. Add an input history and keymaps to those
174 subclasses of _CommandInput. Add an input history and keymaps to those
168 commands. Add "\r" as a keyboard shortcut for the enterdefault and
175 commands. Add "\r" as a keyboard shortcut for the enterdefault and
169 execute commands.
176 execute commands.
170
177
171 2006-06-07 Ville Vainio <vivainio@gmail.com>
178 2006-06-07 Ville Vainio <vivainio@gmail.com>
172
179
173 * iplib.py: ipython mybatch.ipy exits ipython immediately after
180 * iplib.py: ipython mybatch.ipy exits ipython immediately after
174 running the batch files instead of leaving the session open.
181 running the batch files instead of leaving the session open.
175
182
176 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
183 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
177
184
178 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
185 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
179 the original fix was incomplete. Patch submitted by W. Maier.
186 the original fix was incomplete. Patch submitted by W. Maier.
180
187
181 2006-06-07 Ville Vainio <vivainio@gmail.com>
188 2006-06-07 Ville Vainio <vivainio@gmail.com>
182
189
183 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
190 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
184 Confirmation prompts can be supressed by 'quiet' option.
191 Confirmation prompts can be supressed by 'quiet' option.
185 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
192 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
186
193
187 2006-06-06 *** Released version 0.7.2
194 2006-06-06 *** Released version 0.7.2
188
195
189 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
196 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
190
197
191 * IPython/Release.py (version): Made 0.7.2 final for release.
198 * IPython/Release.py (version): Made 0.7.2 final for release.
192 Repo tagged and release cut.
199 Repo tagged and release cut.
193
200
194 2006-06-05 Ville Vainio <vivainio@gmail.com>
201 2006-06-05 Ville Vainio <vivainio@gmail.com>
195
202
196 * Magic.py (magic_rehashx): Honor no_alias list earlier in
203 * Magic.py (magic_rehashx): Honor no_alias list earlier in
197 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
204 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
198
205
199 * upgrade_dir.py: try import 'path' module a bit harder
206 * upgrade_dir.py: try import 'path' module a bit harder
200 (for %upgrade)
207 (for %upgrade)
201
208
202 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
209 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
203
210
204 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
211 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
205 instead of looping 20 times.
212 instead of looping 20 times.
206
213
207 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
214 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
208 correctly at initialization time. Bug reported by Krishna Mohan
215 correctly at initialization time. Bug reported by Krishna Mohan
209 Gundu <gkmohan-AT-gmail.com> on the user list.
216 Gundu <gkmohan-AT-gmail.com> on the user list.
210
217
211 * IPython/Release.py (version): Mark 0.7.2 version to start
218 * IPython/Release.py (version): Mark 0.7.2 version to start
212 testing for release on 06/06.
219 testing for release on 06/06.
213
220
214 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
221 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
215
222
216 * scripts/irunner: thin script interface so users don't have to
223 * scripts/irunner: thin script interface so users don't have to
217 find the module and call it as an executable, since modules rarely
224 find the module and call it as an executable, since modules rarely
218 live in people's PATH.
225 live in people's PATH.
219
226
220 * IPython/irunner.py (InteractiveRunner.__init__): added
227 * IPython/irunner.py (InteractiveRunner.__init__): added
221 delaybeforesend attribute to control delays with newer versions of
228 delaybeforesend attribute to control delays with newer versions of
222 pexpect. Thanks to detailed help from pexpect's author, Noah
229 pexpect. Thanks to detailed help from pexpect's author, Noah
223 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
230 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
224 correctly (it works in NoColor mode).
231 correctly (it works in NoColor mode).
225
232
226 * IPython/iplib.py (handle_normal): fix nasty crash reported on
233 * IPython/iplib.py (handle_normal): fix nasty crash reported on
227 SAGE list, from improper log() calls.
234 SAGE list, from improper log() calls.
228
235
229 2006-05-31 Ville Vainio <vivainio@gmail.com>
236 2006-05-31 Ville Vainio <vivainio@gmail.com>
230
237
231 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
238 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
232 with args in parens to work correctly with dirs that have spaces.
239 with args in parens to work correctly with dirs that have spaces.
233
240
234 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
241 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
235
242
236 * IPython/Logger.py (Logger.logstart): add option to log raw input
243 * IPython/Logger.py (Logger.logstart): add option to log raw input
237 instead of the processed one. A -r flag was added to the
244 instead of the processed one. A -r flag was added to the
238 %logstart magic used for controlling logging.
245 %logstart magic used for controlling logging.
239
246
240 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
247 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
241
248
242 * IPython/iplib.py (InteractiveShell.__init__): add check for the
249 * IPython/iplib.py (InteractiveShell.__init__): add check for the
243 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
250 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
244 recognize the option. After a bug report by Will Maier. This
251 recognize the option. After a bug report by Will Maier. This
245 closes #64 (will do it after confirmation from W. Maier).
252 closes #64 (will do it after confirmation from W. Maier).
246
253
247 * IPython/irunner.py: New module to run scripts as if manually
254 * IPython/irunner.py: New module to run scripts as if manually
248 typed into an interactive environment, based on pexpect. After a
255 typed into an interactive environment, based on pexpect. After a
249 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
256 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
250 ipython-user list. Simple unittests in the tests/ directory.
257 ipython-user list. Simple unittests in the tests/ directory.
251
258
252 * tools/release: add Will Maier, OpenBSD port maintainer, to
259 * tools/release: add Will Maier, OpenBSD port maintainer, to
253 recepients list. We are now officially part of the OpenBSD ports:
260 recepients list. We are now officially part of the OpenBSD ports:
254 http://www.openbsd.org/ports.html ! Many thanks to Will for the
261 http://www.openbsd.org/ports.html ! Many thanks to Will for the
255 work.
262 work.
256
263
257 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
264 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
258
265
259 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
266 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
260 so that it doesn't break tkinter apps.
267 so that it doesn't break tkinter apps.
261
268
262 * IPython/iplib.py (_prefilter): fix bug where aliases would
269 * IPython/iplib.py (_prefilter): fix bug where aliases would
263 shadow variables when autocall was fully off. Reported by SAGE
270 shadow variables when autocall was fully off. Reported by SAGE
264 author William Stein.
271 author William Stein.
265
272
266 * IPython/OInspect.py (Inspector.__init__): add a flag to control
273 * IPython/OInspect.py (Inspector.__init__): add a flag to control
267 at what detail level strings are computed when foo? is requested.
274 at what detail level strings are computed when foo? is requested.
268 This allows users to ask for example that the string form of an
275 This allows users to ask for example that the string form of an
269 object is only computed when foo?? is called, or even never, by
276 object is only computed when foo?? is called, or even never, by
270 setting the object_info_string_level >= 2 in the configuration
277 setting the object_info_string_level >= 2 in the configuration
271 file. This new option has been added and documented. After a
278 file. This new option has been added and documented. After a
272 request by SAGE to be able to control the printing of very large
279 request by SAGE to be able to control the printing of very large
273 objects more easily.
280 objects more easily.
274
281
275 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
282 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
276
283
277 * IPython/ipmaker.py (make_IPython): remove the ipython call path
284 * IPython/ipmaker.py (make_IPython): remove the ipython call path
278 from sys.argv, to be 100% consistent with how Python itself works
285 from sys.argv, to be 100% consistent with how Python itself works
279 (as seen for example with python -i file.py). After a bug report
286 (as seen for example with python -i file.py). After a bug report
280 by Jeffrey Collins.
287 by Jeffrey Collins.
281
288
282 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
289 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
283 nasty bug which was preventing custom namespaces with -pylab,
290 nasty bug which was preventing custom namespaces with -pylab,
284 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
291 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
285 compatibility (long gone from mpl).
292 compatibility (long gone from mpl).
286
293
287 * IPython/ipapi.py (make_session): name change: create->make. We
294 * IPython/ipapi.py (make_session): name change: create->make. We
288 use make in other places (ipmaker,...), it's shorter and easier to
295 use make in other places (ipmaker,...), it's shorter and easier to
289 type and say, etc. I'm trying to clean things before 0.7.2 so
296 type and say, etc. I'm trying to clean things before 0.7.2 so
290 that I can keep things stable wrt to ipapi in the chainsaw branch.
297 that I can keep things stable wrt to ipapi in the chainsaw branch.
291
298
292 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
299 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
293 python-mode recognizes our debugger mode. Add support for
300 python-mode recognizes our debugger mode. Add support for
294 autoindent inside (X)emacs. After a patch sent in by Jin Liu
301 autoindent inside (X)emacs. After a patch sent in by Jin Liu
295 <m.liu.jin-AT-gmail.com> originally written by
302 <m.liu.jin-AT-gmail.com> originally written by
296 doxgen-AT-newsmth.net (with minor modifications for xemacs
303 doxgen-AT-newsmth.net (with minor modifications for xemacs
297 compatibility)
304 compatibility)
298
305
299 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
306 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
300 tracebacks when walking the stack so that the stack tracking system
307 tracebacks when walking the stack so that the stack tracking system
301 in emacs' python-mode can identify the frames correctly.
308 in emacs' python-mode can identify the frames correctly.
302
309
303 * IPython/ipmaker.py (make_IPython): make the internal (and
310 * IPython/ipmaker.py (make_IPython): make the internal (and
304 default config) autoedit_syntax value false by default. Too many
311 default config) autoedit_syntax value false by default. Too many
305 users have complained to me (both on and off-list) about problems
312 users have complained to me (both on and off-list) about problems
306 with this option being on by default, so I'm making it default to
313 with this option being on by default, so I'm making it default to
307 off. It can still be enabled by anyone via the usual mechanisms.
314 off. It can still be enabled by anyone via the usual mechanisms.
308
315
309 * IPython/completer.py (Completer.attr_matches): add support for
316 * IPython/completer.py (Completer.attr_matches): add support for
310 PyCrust-style _getAttributeNames magic method. Patch contributed
317 PyCrust-style _getAttributeNames magic method. Patch contributed
311 by <mscott-AT-goldenspud.com>. Closes #50.
318 by <mscott-AT-goldenspud.com>. Closes #50.
312
319
313 * IPython/iplib.py (InteractiveShell.__init__): remove the
320 * IPython/iplib.py (InteractiveShell.__init__): remove the
314 deletion of exit/quit from __builtin__, which can break
321 deletion of exit/quit from __builtin__, which can break
315 third-party tools like the Zope debugging console. The
322 third-party tools like the Zope debugging console. The
316 %exit/%quit magics remain. In general, it's probably a good idea
323 %exit/%quit magics remain. In general, it's probably a good idea
317 not to delete anything from __builtin__, since we never know what
324 not to delete anything from __builtin__, since we never know what
318 that will break. In any case, python now (for 2.5) will support
325 that will break. In any case, python now (for 2.5) will support
319 'real' exit/quit, so this issue is moot. Closes #55.
326 'real' exit/quit, so this issue is moot. Closes #55.
320
327
321 * IPython/genutils.py (with_obj): rename the 'with' function to
328 * IPython/genutils.py (with_obj): rename the 'with' function to
322 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
329 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
323 becomes a language keyword. Closes #53.
330 becomes a language keyword. Closes #53.
324
331
325 * IPython/FakeModule.py (FakeModule.__init__): add a proper
332 * IPython/FakeModule.py (FakeModule.__init__): add a proper
326 __file__ attribute to this so it fools more things into thinking
333 __file__ attribute to this so it fools more things into thinking
327 it is a real module. Closes #59.
334 it is a real module. Closes #59.
328
335
329 * IPython/Magic.py (magic_edit): add -n option to open the editor
336 * IPython/Magic.py (magic_edit): add -n option to open the editor
330 at a specific line number. After a patch by Stefan van der Walt.
337 at a specific line number. After a patch by Stefan van der Walt.
331
338
332 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
339 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
333
340
334 * IPython/iplib.py (edit_syntax_error): fix crash when for some
341 * IPython/iplib.py (edit_syntax_error): fix crash when for some
335 reason the file could not be opened. After automatic crash
342 reason the file could not be opened. After automatic crash
336 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
343 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
337 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
344 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
338 (_should_recompile): Don't fire editor if using %bg, since there
345 (_should_recompile): Don't fire editor if using %bg, since there
339 is no file in the first place. From the same report as above.
346 is no file in the first place. From the same report as above.
340 (raw_input): protect against faulty third-party prefilters. After
347 (raw_input): protect against faulty third-party prefilters. After
341 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
348 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
342 while running under SAGE.
349 while running under SAGE.
343
350
344 2006-05-23 Ville Vainio <vivainio@gmail.com>
351 2006-05-23 Ville Vainio <vivainio@gmail.com>
345
352
346 * ipapi.py: Stripped down ip.to_user_ns() to work only as
353 * ipapi.py: Stripped down ip.to_user_ns() to work only as
347 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
354 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
348 now returns None (again), unless dummy is specifically allowed by
355 now returns None (again), unless dummy is specifically allowed by
349 ipapi.get(allow_dummy=True).
356 ipapi.get(allow_dummy=True).
350
357
351 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
358 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
352
359
353 * IPython: remove all 2.2-compatibility objects and hacks from
360 * IPython: remove all 2.2-compatibility objects and hacks from
354 everywhere, since we only support 2.3 at this point. Docs
361 everywhere, since we only support 2.3 at this point. Docs
355 updated.
362 updated.
356
363
357 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
364 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
358 Anything requiring extra validation can be turned into a Python
365 Anything requiring extra validation can be turned into a Python
359 property in the future. I used a property for the db one b/c
366 property in the future. I used a property for the db one b/c
360 there was a nasty circularity problem with the initialization
367 there was a nasty circularity problem with the initialization
361 order, which right now I don't have time to clean up.
368 order, which right now I don't have time to clean up.
362
369
363 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
370 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
364 another locking bug reported by Jorgen. I'm not 100% sure though,
371 another locking bug reported by Jorgen. I'm not 100% sure though,
365 so more testing is needed...
372 so more testing is needed...
366
373
367 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
374 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
368
375
369 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
376 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
370 local variables from any routine in user code (typically executed
377 local variables from any routine in user code (typically executed
371 with %run) directly into the interactive namespace. Very useful
378 with %run) directly into the interactive namespace. Very useful
372 when doing complex debugging.
379 when doing complex debugging.
373 (IPythonNotRunning): Changed the default None object to a dummy
380 (IPythonNotRunning): Changed the default None object to a dummy
374 whose attributes can be queried as well as called without
381 whose attributes can be queried as well as called without
375 exploding, to ease writing code which works transparently both in
382 exploding, to ease writing code which works transparently both in
376 and out of ipython and uses some of this API.
383 and out of ipython and uses some of this API.
377
384
378 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
385 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
379
386
380 * IPython/hooks.py (result_display): Fix the fact that our display
387 * IPython/hooks.py (result_display): Fix the fact that our display
381 hook was using str() instead of repr(), as the default python
388 hook was using str() instead of repr(), as the default python
382 console does. This had gone unnoticed b/c it only happened if
389 console does. This had gone unnoticed b/c it only happened if
383 %Pprint was off, but the inconsistency was there.
390 %Pprint was off, but the inconsistency was there.
384
391
385 2006-05-15 Ville Vainio <vivainio@gmail.com>
392 2006-05-15 Ville Vainio <vivainio@gmail.com>
386
393
387 * Oinspect.py: Only show docstring for nonexisting/binary files
394 * Oinspect.py: Only show docstring for nonexisting/binary files
388 when doing object??, closing ticket #62
395 when doing object??, closing ticket #62
389
396
390 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
397 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
391
398
392 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
399 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
393 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
400 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
394 was being released in a routine which hadn't checked if it had
401 was being released in a routine which hadn't checked if it had
395 been the one to acquire it.
402 been the one to acquire it.
396
403
397 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
404 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
398
405
399 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
406 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
400
407
401 2006-04-11 Ville Vainio <vivainio@gmail.com>
408 2006-04-11 Ville Vainio <vivainio@gmail.com>
402
409
403 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
410 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
404 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
411 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
405 prefilters, allowing stuff like magics and aliases in the file.
412 prefilters, allowing stuff like magics and aliases in the file.
406
413
407 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
414 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
408 added. Supported now are "%clear in" and "%clear out" (clear input and
415 added. Supported now are "%clear in" and "%clear out" (clear input and
409 output history, respectively). Also fixed CachedOutput.flush to
416 output history, respectively). Also fixed CachedOutput.flush to
410 properly flush the output cache.
417 properly flush the output cache.
411
418
412 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
419 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
413 half-success (and fail explicitly).
420 half-success (and fail explicitly).
414
421
415 2006-03-28 Ville Vainio <vivainio@gmail.com>
422 2006-03-28 Ville Vainio <vivainio@gmail.com>
416
423
417 * iplib.py: Fix quoting of aliases so that only argless ones
424 * iplib.py: Fix quoting of aliases so that only argless ones
418 are quoted
425 are quoted
419
426
420 2006-03-28 Ville Vainio <vivainio@gmail.com>
427 2006-03-28 Ville Vainio <vivainio@gmail.com>
421
428
422 * iplib.py: Quote aliases with spaces in the name.
429 * iplib.py: Quote aliases with spaces in the name.
423 "c:\program files\blah\bin" is now legal alias target.
430 "c:\program files\blah\bin" is now legal alias target.
424
431
425 * ext_rehashdir.py: Space no longer allowed as arg
432 * ext_rehashdir.py: Space no longer allowed as arg
426 separator, since space is legal in path names.
433 separator, since space is legal in path names.
427
434
428 2006-03-16 Ville Vainio <vivainio@gmail.com>
435 2006-03-16 Ville Vainio <vivainio@gmail.com>
429
436
430 * upgrade_dir.py: Take path.py from Extensions, correcting
437 * upgrade_dir.py: Take path.py from Extensions, correcting
431 %upgrade magic
438 %upgrade magic
432
439
433 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
440 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
434
441
435 * hooks.py: Only enclose editor binary in quotes if legal and
442 * hooks.py: Only enclose editor binary in quotes if legal and
436 necessary (space in the name, and is an existing file). Fixes a bug
443 necessary (space in the name, and is an existing file). Fixes a bug
437 reported by Zachary Pincus.
444 reported by Zachary Pincus.
438
445
439 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
446 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
440
447
441 * Manual: thanks to a tip on proper color handling for Emacs, by
448 * Manual: thanks to a tip on proper color handling for Emacs, by
442 Eric J Haywiser <ejh1-AT-MIT.EDU>.
449 Eric J Haywiser <ejh1-AT-MIT.EDU>.
443
450
444 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
451 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
445 by applying the provided patch. Thanks to Liu Jin
452 by applying the provided patch. Thanks to Liu Jin
446 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
453 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
447 XEmacs/Linux, I'm trusting the submitter that it actually helps
454 XEmacs/Linux, I'm trusting the submitter that it actually helps
448 under win32/GNU Emacs. Will revisit if any problems are reported.
455 under win32/GNU Emacs. Will revisit if any problems are reported.
449
456
450 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
457 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
451
458
452 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
459 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
453 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
460 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
454
461
455 2006-03-12 Ville Vainio <vivainio@gmail.com>
462 2006-03-12 Ville Vainio <vivainio@gmail.com>
456
463
457 * Magic.py (magic_timeit): Added %timeit magic, contributed by
464 * Magic.py (magic_timeit): Added %timeit magic, contributed by
458 Torsten Marek.
465 Torsten Marek.
459
466
460 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
467 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
461
468
462 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
469 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
463 line ranges works again.
470 line ranges works again.
464
471
465 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
472 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
466
473
467 * IPython/iplib.py (showtraceback): add back sys.last_traceback
474 * IPython/iplib.py (showtraceback): add back sys.last_traceback
468 and friends, after a discussion with Zach Pincus on ipython-user.
475 and friends, after a discussion with Zach Pincus on ipython-user.
469 I'm not 100% sure, but after thinking about it quite a bit, it may
476 I'm not 100% sure, but after thinking about it quite a bit, it may
470 be OK. Testing with the multithreaded shells didn't reveal any
477 be OK. Testing with the multithreaded shells didn't reveal any
471 problems, but let's keep an eye out.
478 problems, but let's keep an eye out.
472
479
473 In the process, I fixed a few things which were calling
480 In the process, I fixed a few things which were calling
474 self.InteractiveTB() directly (like safe_execfile), which is a
481 self.InteractiveTB() directly (like safe_execfile), which is a
475 mistake: ALL exception reporting should be done by calling
482 mistake: ALL exception reporting should be done by calling
476 self.showtraceback(), which handles state and tab-completion and
483 self.showtraceback(), which handles state and tab-completion and
477 more.
484 more.
478
485
479 2006-03-01 Ville Vainio <vivainio@gmail.com>
486 2006-03-01 Ville Vainio <vivainio@gmail.com>
480
487
481 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
488 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
482 To use, do "from ipipe import *".
489 To use, do "from ipipe import *".
483
490
484 2006-02-24 Ville Vainio <vivainio@gmail.com>
491 2006-02-24 Ville Vainio <vivainio@gmail.com>
485
492
486 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
493 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
487 "cleanly" and safely than the older upgrade mechanism.
494 "cleanly" and safely than the older upgrade mechanism.
488
495
489 2006-02-21 Ville Vainio <vivainio@gmail.com>
496 2006-02-21 Ville Vainio <vivainio@gmail.com>
490
497
491 * Magic.py: %save works again.
498 * Magic.py: %save works again.
492
499
493 2006-02-15 Ville Vainio <vivainio@gmail.com>
500 2006-02-15 Ville Vainio <vivainio@gmail.com>
494
501
495 * Magic.py: %Pprint works again
502 * Magic.py: %Pprint works again
496
503
497 * Extensions/ipy_sane_defaults.py: Provide everything provided
504 * Extensions/ipy_sane_defaults.py: Provide everything provided
498 in default ipythonrc, to make it possible to have a completely empty
505 in default ipythonrc, to make it possible to have a completely empty
499 ipythonrc (and thus completely rc-file free configuration)
506 ipythonrc (and thus completely rc-file free configuration)
500
507
501 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
508 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
502
509
503 * IPython/hooks.py (editor): quote the call to the editor command,
510 * IPython/hooks.py (editor): quote the call to the editor command,
504 to allow commands with spaces in them. Problem noted by watching
511 to allow commands with spaces in them. Problem noted by watching
505 Ian Oswald's video about textpad under win32 at
512 Ian Oswald's video about textpad under win32 at
506 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
513 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
507
514
508 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
515 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
509 describing magics (we haven't used @ for a loong time).
516 describing magics (we haven't used @ for a loong time).
510
517
511 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
518 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
512 contributed by marienz to close
519 contributed by marienz to close
513 http://www.scipy.net/roundup/ipython/issue53.
520 http://www.scipy.net/roundup/ipython/issue53.
514
521
515 2006-02-10 Ville Vainio <vivainio@gmail.com>
522 2006-02-10 Ville Vainio <vivainio@gmail.com>
516
523
517 * genutils.py: getoutput now works in win32 too
524 * genutils.py: getoutput now works in win32 too
518
525
519 * completer.py: alias and magic completion only invoked
526 * completer.py: alias and magic completion only invoked
520 at the first "item" in the line, to avoid "cd %store"
527 at the first "item" in the line, to avoid "cd %store"
521 nonsense.
528 nonsense.
522
529
523 2006-02-09 Ville Vainio <vivainio@gmail.com>
530 2006-02-09 Ville Vainio <vivainio@gmail.com>
524
531
525 * test/*: Added a unit testing framework (finally).
532 * test/*: Added a unit testing framework (finally).
526 '%run runtests.py' to run test_*.
533 '%run runtests.py' to run test_*.
527
534
528 * ipapi.py: Exposed runlines and set_custom_exc
535 * ipapi.py: Exposed runlines and set_custom_exc
529
536
530 2006-02-07 Ville Vainio <vivainio@gmail.com>
537 2006-02-07 Ville Vainio <vivainio@gmail.com>
531
538
532 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
539 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
533 instead use "f(1 2)" as before.
540 instead use "f(1 2)" as before.
534
541
535 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
542 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
536
543
537 * IPython/demo.py (IPythonDemo): Add new classes to the demo
544 * IPython/demo.py (IPythonDemo): Add new classes to the demo
538 facilities, for demos processed by the IPython input filter
545 facilities, for demos processed by the IPython input filter
539 (IPythonDemo), and for running a script one-line-at-a-time as a
546 (IPythonDemo), and for running a script one-line-at-a-time as a
540 demo, both for pure Python (LineDemo) and for IPython-processed
547 demo, both for pure Python (LineDemo) and for IPython-processed
541 input (IPythonLineDemo). After a request by Dave Kohel, from the
548 input (IPythonLineDemo). After a request by Dave Kohel, from the
542 SAGE team.
549 SAGE team.
543 (Demo.edit): added an edit() method to the demo objects, to edit
550 (Demo.edit): added an edit() method to the demo objects, to edit
544 the in-memory copy of the last executed block.
551 the in-memory copy of the last executed block.
545
552
546 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
553 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
547 processing to %edit, %macro and %save. These commands can now be
554 processing to %edit, %macro and %save. These commands can now be
548 invoked on the unprocessed input as it was typed by the user
555 invoked on the unprocessed input as it was typed by the user
549 (without any prefilters applied). After requests by the SAGE team
556 (without any prefilters applied). After requests by the SAGE team
550 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
557 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
551
558
552 2006-02-01 Ville Vainio <vivainio@gmail.com>
559 2006-02-01 Ville Vainio <vivainio@gmail.com>
553
560
554 * setup.py, eggsetup.py: easy_install ipython==dev works
561 * setup.py, eggsetup.py: easy_install ipython==dev works
555 correctly now (on Linux)
562 correctly now (on Linux)
556
563
557 * ipy_user_conf,ipmaker: user config changes, removed spurious
564 * ipy_user_conf,ipmaker: user config changes, removed spurious
558 warnings
565 warnings
559
566
560 * iplib: if rc.banner is string, use it as is.
567 * iplib: if rc.banner is string, use it as is.
561
568
562 * Magic: %pycat accepts a string argument and pages it's contents.
569 * Magic: %pycat accepts a string argument and pages it's contents.
563
570
564
571
565 2006-01-30 Ville Vainio <vivainio@gmail.com>
572 2006-01-30 Ville Vainio <vivainio@gmail.com>
566
573
567 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
574 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
568 Now %store and bookmarks work through PickleShare, meaning that
575 Now %store and bookmarks work through PickleShare, meaning that
569 concurrent access is possible and all ipython sessions see the
576 concurrent access is possible and all ipython sessions see the
570 same database situation all the time, instead of snapshot of
577 same database situation all the time, instead of snapshot of
571 the situation when the session was started. Hence, %bookmark
578 the situation when the session was started. Hence, %bookmark
572 results are immediately accessible from othes sessions. The database
579 results are immediately accessible from othes sessions. The database
573 is also available for use by user extensions. See:
580 is also available for use by user extensions. See:
574 http://www.python.org/pypi/pickleshare
581 http://www.python.org/pypi/pickleshare
575
582
576 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
583 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
577
584
578 * aliases can now be %store'd
585 * aliases can now be %store'd
579
586
580 * path.py moved to Extensions so that pickleshare does not need
587 * path.py moved to Extensions so that pickleshare does not need
581 IPython-specific import. Extensions added to pythonpath right
588 IPython-specific import. Extensions added to pythonpath right
582 at __init__.
589 at __init__.
583
590
584 * iplib.py: ipalias deprecated/redundant; aliases are converted and
591 * iplib.py: ipalias deprecated/redundant; aliases are converted and
585 called with _ip.system and the pre-transformed command string.
592 called with _ip.system and the pre-transformed command string.
586
593
587 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
594 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
588
595
589 * IPython/iplib.py (interact): Fix that we were not catching
596 * IPython/iplib.py (interact): Fix that we were not catching
590 KeyboardInterrupt exceptions properly. I'm not quite sure why the
597 KeyboardInterrupt exceptions properly. I'm not quite sure why the
591 logic here had to change, but it's fixed now.
598 logic here had to change, but it's fixed now.
592
599
593 2006-01-29 Ville Vainio <vivainio@gmail.com>
600 2006-01-29 Ville Vainio <vivainio@gmail.com>
594
601
595 * iplib.py: Try to import pyreadline on Windows.
602 * iplib.py: Try to import pyreadline on Windows.
596
603
597 2006-01-27 Ville Vainio <vivainio@gmail.com>
604 2006-01-27 Ville Vainio <vivainio@gmail.com>
598
605
599 * iplib.py: Expose ipapi as _ip in builtin namespace.
606 * iplib.py: Expose ipapi as _ip in builtin namespace.
600 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
607 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
601 and ip_set_hook (-> _ip.set_hook) redundant. % and !
608 and ip_set_hook (-> _ip.set_hook) redundant. % and !
602 syntax now produce _ip.* variant of the commands.
609 syntax now produce _ip.* variant of the commands.
603
610
604 * "_ip.options().autoedit_syntax = 2" automatically throws
611 * "_ip.options().autoedit_syntax = 2" automatically throws
605 user to editor for syntax error correction without prompting.
612 user to editor for syntax error correction without prompting.
606
613
607 2006-01-27 Ville Vainio <vivainio@gmail.com>
614 2006-01-27 Ville Vainio <vivainio@gmail.com>
608
615
609 * ipmaker.py: Give "realistic" sys.argv for scripts (without
616 * ipmaker.py: Give "realistic" sys.argv for scripts (without
610 'ipython' at argv[0]) executed through command line.
617 'ipython' at argv[0]) executed through command line.
611 NOTE: this DEPRECATES calling ipython with multiple scripts
618 NOTE: this DEPRECATES calling ipython with multiple scripts
612 ("ipython a.py b.py c.py")
619 ("ipython a.py b.py c.py")
613
620
614 * iplib.py, hooks.py: Added configurable input prefilter,
621 * iplib.py, hooks.py: Added configurable input prefilter,
615 named 'input_prefilter'. See ext_rescapture.py for example
622 named 'input_prefilter'. See ext_rescapture.py for example
616 usage.
623 usage.
617
624
618 * ext_rescapture.py, Magic.py: Better system command output capture
625 * ext_rescapture.py, Magic.py: Better system command output capture
619 through 'var = !ls' (deprecates user-visible %sc). Same notation
626 through 'var = !ls' (deprecates user-visible %sc). Same notation
620 applies for magics, 'var = %alias' assigns alias list to var.
627 applies for magics, 'var = %alias' assigns alias list to var.
621
628
622 * ipapi.py: added meta() for accessing extension-usable data store.
629 * ipapi.py: added meta() for accessing extension-usable data store.
623
630
624 * iplib.py: added InteractiveShell.getapi(). New magics should be
631 * iplib.py: added InteractiveShell.getapi(). New magics should be
625 written doing self.getapi() instead of using the shell directly.
632 written doing self.getapi() instead of using the shell directly.
626
633
627 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
634 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
628 %store foo >> ~/myfoo.txt to store variables to files (in clean
635 %store foo >> ~/myfoo.txt to store variables to files (in clean
629 textual form, not a restorable pickle).
636 textual form, not a restorable pickle).
630
637
631 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
638 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
632
639
633 * usage.py, Magic.py: added %quickref
640 * usage.py, Magic.py: added %quickref
634
641
635 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
642 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
636
643
637 * GetoptErrors when invoking magics etc. with wrong args
644 * GetoptErrors when invoking magics etc. with wrong args
638 are now more helpful:
645 are now more helpful:
639 GetoptError: option -l not recognized (allowed: "qb" )
646 GetoptError: option -l not recognized (allowed: "qb" )
640
647
641 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
648 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
642
649
643 * IPython/demo.py (Demo.show): Flush stdout after each block, so
650 * IPython/demo.py (Demo.show): Flush stdout after each block, so
644 computationally intensive blocks don't appear to stall the demo.
651 computationally intensive blocks don't appear to stall the demo.
645
652
646 2006-01-24 Ville Vainio <vivainio@gmail.com>
653 2006-01-24 Ville Vainio <vivainio@gmail.com>
647
654
648 * iplib.py, hooks.py: 'result_display' hook can return a non-None
655 * iplib.py, hooks.py: 'result_display' hook can return a non-None
649 value to manipulate resulting history entry.
656 value to manipulate resulting history entry.
650
657
651 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
658 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
652 to instance methods of IPApi class, to make extending an embedded
659 to instance methods of IPApi class, to make extending an embedded
653 IPython feasible. See ext_rehashdir.py for example usage.
660 IPython feasible. See ext_rehashdir.py for example usage.
654
661
655 * Merged 1071-1076 from branches/0.7.1
662 * Merged 1071-1076 from branches/0.7.1
656
663
657
664
658 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
665 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
659
666
660 * tools/release (daystamp): Fix build tools to use the new
667 * tools/release (daystamp): Fix build tools to use the new
661 eggsetup.py script to build lightweight eggs.
668 eggsetup.py script to build lightweight eggs.
662
669
663 * Applied changesets 1062 and 1064 before 0.7.1 release.
670 * Applied changesets 1062 and 1064 before 0.7.1 release.
664
671
665 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
672 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
666 see the raw input history (without conversions like %ls ->
673 see the raw input history (without conversions like %ls ->
667 ipmagic("ls")). After a request from W. Stein, SAGE
674 ipmagic("ls")). After a request from W. Stein, SAGE
668 (http://modular.ucsd.edu/sage) developer. This information is
675 (http://modular.ucsd.edu/sage) developer. This information is
669 stored in the input_hist_raw attribute of the IPython instance, so
676 stored in the input_hist_raw attribute of the IPython instance, so
670 developers can access it if needed (it's an InputList instance).
677 developers can access it if needed (it's an InputList instance).
671
678
672 * Versionstring = 0.7.2.svn
679 * Versionstring = 0.7.2.svn
673
680
674 * eggsetup.py: A separate script for constructing eggs, creates
681 * eggsetup.py: A separate script for constructing eggs, creates
675 proper launch scripts even on Windows (an .exe file in
682 proper launch scripts even on Windows (an .exe file in
676 \python24\scripts).
683 \python24\scripts).
677
684
678 * ipapi.py: launch_new_instance, launch entry point needed for the
685 * ipapi.py: launch_new_instance, launch entry point needed for the
679 egg.
686 egg.
680
687
681 2006-01-23 Ville Vainio <vivainio@gmail.com>
688 2006-01-23 Ville Vainio <vivainio@gmail.com>
682
689
683 * Added %cpaste magic for pasting python code
690 * Added %cpaste magic for pasting python code
684
691
685 2006-01-22 Ville Vainio <vivainio@gmail.com>
692 2006-01-22 Ville Vainio <vivainio@gmail.com>
686
693
687 * Merge from branches/0.7.1 into trunk, revs 1052-1057
694 * Merge from branches/0.7.1 into trunk, revs 1052-1057
688
695
689 * Versionstring = 0.7.2.svn
696 * Versionstring = 0.7.2.svn
690
697
691 * eggsetup.py: A separate script for constructing eggs, creates
698 * eggsetup.py: A separate script for constructing eggs, creates
692 proper launch scripts even on Windows (an .exe file in
699 proper launch scripts even on Windows (an .exe file in
693 \python24\scripts).
700 \python24\scripts).
694
701
695 * ipapi.py: launch_new_instance, launch entry point needed for the
702 * ipapi.py: launch_new_instance, launch entry point needed for the
696 egg.
703 egg.
697
704
698 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
705 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
699
706
700 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
707 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
701 %pfile foo would print the file for foo even if it was a binary.
708 %pfile foo would print the file for foo even if it was a binary.
702 Now, extensions '.so' and '.dll' are skipped.
709 Now, extensions '.so' and '.dll' are skipped.
703
710
704 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
711 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
705 bug, where macros would fail in all threaded modes. I'm not 100%
712 bug, where macros would fail in all threaded modes. I'm not 100%
706 sure, so I'm going to put out an rc instead of making a release
713 sure, so I'm going to put out an rc instead of making a release
707 today, and wait for feedback for at least a few days.
714 today, and wait for feedback for at least a few days.
708
715
709 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
716 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
710 it...) the handling of pasting external code with autoindent on.
717 it...) the handling of pasting external code with autoindent on.
711 To get out of a multiline input, the rule will appear for most
718 To get out of a multiline input, the rule will appear for most
712 users unchanged: two blank lines or change the indent level
719 users unchanged: two blank lines or change the indent level
713 proposed by IPython. But there is a twist now: you can
720 proposed by IPython. But there is a twist now: you can
714 add/subtract only *one or two spaces*. If you add/subtract three
721 add/subtract only *one or two spaces*. If you add/subtract three
715 or more (unless you completely delete the line), IPython will
722 or more (unless you completely delete the line), IPython will
716 accept that line, and you'll need to enter a second one of pure
723 accept that line, and you'll need to enter a second one of pure
717 whitespace. I know it sounds complicated, but I can't find a
724 whitespace. I know it sounds complicated, but I can't find a
718 different solution that covers all the cases, with the right
725 different solution that covers all the cases, with the right
719 heuristics. Hopefully in actual use, nobody will really notice
726 heuristics. Hopefully in actual use, nobody will really notice
720 all these strange rules and things will 'just work'.
727 all these strange rules and things will 'just work'.
721
728
722 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
729 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
723
730
724 * IPython/iplib.py (interact): catch exceptions which can be
731 * IPython/iplib.py (interact): catch exceptions which can be
725 triggered asynchronously by signal handlers. Thanks to an
732 triggered asynchronously by signal handlers. Thanks to an
726 automatic crash report, submitted by Colin Kingsley
733 automatic crash report, submitted by Colin Kingsley
727 <tercel-AT-gentoo.org>.
734 <tercel-AT-gentoo.org>.
728
735
729 2006-01-20 Ville Vainio <vivainio@gmail.com>
736 2006-01-20 Ville Vainio <vivainio@gmail.com>
730
737
731 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
738 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
732 (%rehashdir, very useful, try it out) of how to extend ipython
739 (%rehashdir, very useful, try it out) of how to extend ipython
733 with new magics. Also added Extensions dir to pythonpath to make
740 with new magics. Also added Extensions dir to pythonpath to make
734 importing extensions easy.
741 importing extensions easy.
735
742
736 * %store now complains when trying to store interactively declared
743 * %store now complains when trying to store interactively declared
737 classes / instances of those classes.
744 classes / instances of those classes.
738
745
739 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
746 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
740 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
747 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
741 if they exist, and ipy_user_conf.py with some defaults is created for
748 if they exist, and ipy_user_conf.py with some defaults is created for
742 the user.
749 the user.
743
750
744 * Startup rehashing done by the config file, not InterpreterExec.
751 * Startup rehashing done by the config file, not InterpreterExec.
745 This means system commands are available even without selecting the
752 This means system commands are available even without selecting the
746 pysh profile. It's the sensible default after all.
753 pysh profile. It's the sensible default after all.
747
754
748 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
755 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
749
756
750 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
757 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
751 multiline code with autoindent on working. But I am really not
758 multiline code with autoindent on working. But I am really not
752 sure, so this needs more testing. Will commit a debug-enabled
759 sure, so this needs more testing. Will commit a debug-enabled
753 version for now, while I test it some more, so that Ville and
760 version for now, while I test it some more, so that Ville and
754 others may also catch any problems. Also made
761 others may also catch any problems. Also made
755 self.indent_current_str() a method, to ensure that there's no
762 self.indent_current_str() a method, to ensure that there's no
756 chance of the indent space count and the corresponding string
763 chance of the indent space count and the corresponding string
757 falling out of sync. All code needing the string should just call
764 falling out of sync. All code needing the string should just call
758 the method.
765 the method.
759
766
760 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
767 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
761
768
762 * IPython/Magic.py (magic_edit): fix check for when users don't
769 * IPython/Magic.py (magic_edit): fix check for when users don't
763 save their output files, the try/except was in the wrong section.
770 save their output files, the try/except was in the wrong section.
764
771
765 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
772 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
766
773
767 * IPython/Magic.py (magic_run): fix __file__ global missing from
774 * IPython/Magic.py (magic_run): fix __file__ global missing from
768 script's namespace when executed via %run. After a report by
775 script's namespace when executed via %run. After a report by
769 Vivian.
776 Vivian.
770
777
771 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
778 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
772 when using python 2.4. The parent constructor changed in 2.4, and
779 when using python 2.4. The parent constructor changed in 2.4, and
773 we need to track it directly (we can't call it, as it messes up
780 we need to track it directly (we can't call it, as it messes up
774 readline and tab-completion inside our pdb would stop working).
781 readline and tab-completion inside our pdb would stop working).
775 After a bug report by R. Bernstein <rocky-AT-panix.com>.
782 After a bug report by R. Bernstein <rocky-AT-panix.com>.
776
783
777 2006-01-16 Ville Vainio <vivainio@gmail.com>
784 2006-01-16 Ville Vainio <vivainio@gmail.com>
778
785
779 * Ipython/magic.py: Reverted back to old %edit functionality
786 * Ipython/magic.py: Reverted back to old %edit functionality
780 that returns file contents on exit.
787 that returns file contents on exit.
781
788
782 * IPython/path.py: Added Jason Orendorff's "path" module to
789 * IPython/path.py: Added Jason Orendorff's "path" module to
783 IPython tree, http://www.jorendorff.com/articles/python/path/.
790 IPython tree, http://www.jorendorff.com/articles/python/path/.
784 You can get path objects conveniently through %sc, and !!, e.g.:
791 You can get path objects conveniently through %sc, and !!, e.g.:
785 sc files=ls
792 sc files=ls
786 for p in files.paths: # or files.p
793 for p in files.paths: # or files.p
787 print p,p.mtime
794 print p,p.mtime
788
795
789 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
796 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
790 now work again without considering the exclusion regexp -
797 now work again without considering the exclusion regexp -
791 hence, things like ',foo my/path' turn to 'foo("my/path")'
798 hence, things like ',foo my/path' turn to 'foo("my/path")'
792 instead of syntax error.
799 instead of syntax error.
793
800
794
801
795 2006-01-14 Ville Vainio <vivainio@gmail.com>
802 2006-01-14 Ville Vainio <vivainio@gmail.com>
796
803
797 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
804 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
798 ipapi decorators for python 2.4 users, options() provides access to rc
805 ipapi decorators for python 2.4 users, options() provides access to rc
799 data.
806 data.
800
807
801 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
808 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
802 as path separators (even on Linux ;-). Space character after
809 as path separators (even on Linux ;-). Space character after
803 backslash (as yielded by tab completer) is still space;
810 backslash (as yielded by tab completer) is still space;
804 "%cd long\ name" works as expected.
811 "%cd long\ name" works as expected.
805
812
806 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
813 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
807 as "chain of command", with priority. API stays the same,
814 as "chain of command", with priority. API stays the same,
808 TryNext exception raised by a hook function signals that
815 TryNext exception raised by a hook function signals that
809 current hook failed and next hook should try handling it, as
816 current hook failed and next hook should try handling it, as
810 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
817 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
811 requested configurable display hook, which is now implemented.
818 requested configurable display hook, which is now implemented.
812
819
813 2006-01-13 Ville Vainio <vivainio@gmail.com>
820 2006-01-13 Ville Vainio <vivainio@gmail.com>
814
821
815 * IPython/platutils*.py: platform specific utility functions,
822 * IPython/platutils*.py: platform specific utility functions,
816 so far only set_term_title is implemented (change terminal
823 so far only set_term_title is implemented (change terminal
817 label in windowing systems). %cd now changes the title to
824 label in windowing systems). %cd now changes the title to
818 current dir.
825 current dir.
819
826
820 * IPython/Release.py: Added myself to "authors" list,
827 * IPython/Release.py: Added myself to "authors" list,
821 had to create new files.
828 had to create new files.
822
829
823 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
830 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
824 shell escape; not a known bug but had potential to be one in the
831 shell escape; not a known bug but had potential to be one in the
825 future.
832 future.
826
833
827 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
834 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
828 extension API for IPython! See the module for usage example. Fix
835 extension API for IPython! See the module for usage example. Fix
829 OInspect for docstring-less magic functions.
836 OInspect for docstring-less magic functions.
830
837
831
838
832 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
839 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
833
840
834 * IPython/iplib.py (raw_input): temporarily deactivate all
841 * IPython/iplib.py (raw_input): temporarily deactivate all
835 attempts at allowing pasting of code with autoindent on. It
842 attempts at allowing pasting of code with autoindent on. It
836 introduced bugs (reported by Prabhu) and I can't seem to find a
843 introduced bugs (reported by Prabhu) and I can't seem to find a
837 robust combination which works in all cases. Will have to revisit
844 robust combination which works in all cases. Will have to revisit
838 later.
845 later.
839
846
840 * IPython/genutils.py: remove isspace() function. We've dropped
847 * IPython/genutils.py: remove isspace() function. We've dropped
841 2.2 compatibility, so it's OK to use the string method.
848 2.2 compatibility, so it's OK to use the string method.
842
849
843 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
850 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
844
851
845 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
852 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
846 matching what NOT to autocall on, to include all python binary
853 matching what NOT to autocall on, to include all python binary
847 operators (including things like 'and', 'or', 'is' and 'in').
854 operators (including things like 'and', 'or', 'is' and 'in').
848 Prompted by a bug report on 'foo & bar', but I realized we had
855 Prompted by a bug report on 'foo & bar', but I realized we had
849 many more potential bug cases with other operators. The regexp is
856 many more potential bug cases with other operators. The regexp is
850 self.re_exclude_auto, it's fairly commented.
857 self.re_exclude_auto, it's fairly commented.
851
858
852 2006-01-12 Ville Vainio <vivainio@gmail.com>
859 2006-01-12 Ville Vainio <vivainio@gmail.com>
853
860
854 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
861 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
855 Prettified and hardened string/backslash quoting with ipsystem(),
862 Prettified and hardened string/backslash quoting with ipsystem(),
856 ipalias() and ipmagic(). Now even \ characters are passed to
863 ipalias() and ipmagic(). Now even \ characters are passed to
857 %magics, !shell escapes and aliases exactly as they are in the
864 %magics, !shell escapes and aliases exactly as they are in the
858 ipython command line. Should improve backslash experience,
865 ipython command line. Should improve backslash experience,
859 particularly in Windows (path delimiter for some commands that
866 particularly in Windows (path delimiter for some commands that
860 won't understand '/'), but Unix benefits as well (regexps). %cd
867 won't understand '/'), but Unix benefits as well (regexps). %cd
861 magic still doesn't support backslash path delimiters, though. Also
868 magic still doesn't support backslash path delimiters, though. Also
862 deleted all pretense of supporting multiline command strings in
869 deleted all pretense of supporting multiline command strings in
863 !system or %magic commands. Thanks to Jerry McRae for suggestions.
870 !system or %magic commands. Thanks to Jerry McRae for suggestions.
864
871
865 * doc/build_doc_instructions.txt added. Documentation on how to
872 * doc/build_doc_instructions.txt added. Documentation on how to
866 use doc/update_manual.py, added yesterday. Both files contributed
873 use doc/update_manual.py, added yesterday. Both files contributed
867 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
874 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
868 doc/*.sh for deprecation at a later date.
875 doc/*.sh for deprecation at a later date.
869
876
870 * /ipython.py Added ipython.py to root directory for
877 * /ipython.py Added ipython.py to root directory for
871 zero-installation (tar xzvf ipython.tgz; cd ipython; python
878 zero-installation (tar xzvf ipython.tgz; cd ipython; python
872 ipython.py) and development convenience (no need to keep doing
879 ipython.py) and development convenience (no need to keep doing
873 "setup.py install" between changes).
880 "setup.py install" between changes).
874
881
875 * Made ! and !! shell escapes work (again) in multiline expressions:
882 * Made ! and !! shell escapes work (again) in multiline expressions:
876 if 1:
883 if 1:
877 !ls
884 !ls
878 !!ls
885 !!ls
879
886
880 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
887 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
881
888
882 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
889 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
883 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
890 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
884 module in case-insensitive installation. Was causing crashes
891 module in case-insensitive installation. Was causing crashes
885 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
892 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
886
893
887 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
894 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
888 <marienz-AT-gentoo.org>, closes
895 <marienz-AT-gentoo.org>, closes
889 http://www.scipy.net/roundup/ipython/issue51.
896 http://www.scipy.net/roundup/ipython/issue51.
890
897
891 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
898 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
892
899
893 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
900 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
894 problem of excessive CPU usage under *nix and keyboard lag under
901 problem of excessive CPU usage under *nix and keyboard lag under
895 win32.
902 win32.
896
903
897 2006-01-10 *** Released version 0.7.0
904 2006-01-10 *** Released version 0.7.0
898
905
899 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
906 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
900
907
901 * IPython/Release.py (revision): tag version number to 0.7.0,
908 * IPython/Release.py (revision): tag version number to 0.7.0,
902 ready for release.
909 ready for release.
903
910
904 * IPython/Magic.py (magic_edit): Add print statement to %edit so
911 * IPython/Magic.py (magic_edit): Add print statement to %edit so
905 it informs the user of the name of the temp. file used. This can
912 it informs the user of the name of the temp. file used. This can
906 help if you decide later to reuse that same file, so you know
913 help if you decide later to reuse that same file, so you know
907 where to copy the info from.
914 where to copy the info from.
908
915
909 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
916 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
910
917
911 * setup_bdist_egg.py: little script to build an egg. Added
918 * setup_bdist_egg.py: little script to build an egg. Added
912 support in the release tools as well.
919 support in the release tools as well.
913
920
914 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
921 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
915
922
916 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
923 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
917 version selection (new -wxversion command line and ipythonrc
924 version selection (new -wxversion command line and ipythonrc
918 parameter). Patch contributed by Arnd Baecker
925 parameter). Patch contributed by Arnd Baecker
919 <arnd.baecker-AT-web.de>.
926 <arnd.baecker-AT-web.de>.
920
927
921 * IPython/iplib.py (embed_mainloop): fix tab-completion in
928 * IPython/iplib.py (embed_mainloop): fix tab-completion in
922 embedded instances, for variables defined at the interactive
929 embedded instances, for variables defined at the interactive
923 prompt of the embedded ipython. Reported by Arnd.
930 prompt of the embedded ipython. Reported by Arnd.
924
931
925 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
932 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
926 it can be used as a (stateful) toggle, or with a direct parameter.
933 it can be used as a (stateful) toggle, or with a direct parameter.
927
934
928 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
935 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
929 could be triggered in certain cases and cause the traceback
936 could be triggered in certain cases and cause the traceback
930 printer not to work.
937 printer not to work.
931
938
932 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
939 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
933
940
934 * IPython/iplib.py (_should_recompile): Small fix, closes
941 * IPython/iplib.py (_should_recompile): Small fix, closes
935 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
942 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
936
943
937 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
944 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
938
945
939 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
946 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
940 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
947 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
941 Moad for help with tracking it down.
948 Moad for help with tracking it down.
942
949
943 * IPython/iplib.py (handle_auto): fix autocall handling for
950 * IPython/iplib.py (handle_auto): fix autocall handling for
944 objects which support BOTH __getitem__ and __call__ (so that f [x]
951 objects which support BOTH __getitem__ and __call__ (so that f [x]
945 is left alone, instead of becoming f([x]) automatically).
952 is left alone, instead of becoming f([x]) automatically).
946
953
947 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
954 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
948 Ville's patch.
955 Ville's patch.
949
956
950 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
957 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
951
958
952 * IPython/iplib.py (handle_auto): changed autocall semantics to
959 * IPython/iplib.py (handle_auto): changed autocall semantics to
953 include 'smart' mode, where the autocall transformation is NOT
960 include 'smart' mode, where the autocall transformation is NOT
954 applied if there are no arguments on the line. This allows you to
961 applied if there are no arguments on the line. This allows you to
955 just type 'foo' if foo is a callable to see its internal form,
962 just type 'foo' if foo is a callable to see its internal form,
956 instead of having it called with no arguments (typically a
963 instead of having it called with no arguments (typically a
957 mistake). The old 'full' autocall still exists: for that, you
964 mistake). The old 'full' autocall still exists: for that, you
958 need to set the 'autocall' parameter to 2 in your ipythonrc file.
965 need to set the 'autocall' parameter to 2 in your ipythonrc file.
959
966
960 * IPython/completer.py (Completer.attr_matches): add
967 * IPython/completer.py (Completer.attr_matches): add
961 tab-completion support for Enthoughts' traits. After a report by
968 tab-completion support for Enthoughts' traits. After a report by
962 Arnd and a patch by Prabhu.
969 Arnd and a patch by Prabhu.
963
970
964 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
971 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
965
972
966 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
973 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
967 Schmolck's patch to fix inspect.getinnerframes().
974 Schmolck's patch to fix inspect.getinnerframes().
968
975
969 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
976 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
970 for embedded instances, regarding handling of namespaces and items
977 for embedded instances, regarding handling of namespaces and items
971 added to the __builtin__ one. Multiple embedded instances and
978 added to the __builtin__ one. Multiple embedded instances and
972 recursive embeddings should work better now (though I'm not sure
979 recursive embeddings should work better now (though I'm not sure
973 I've got all the corner cases fixed, that code is a bit of a brain
980 I've got all the corner cases fixed, that code is a bit of a brain
974 twister).
981 twister).
975
982
976 * IPython/Magic.py (magic_edit): added support to edit in-memory
983 * IPython/Magic.py (magic_edit): added support to edit in-memory
977 macros (automatically creates the necessary temp files). %edit
984 macros (automatically creates the necessary temp files). %edit
978 also doesn't return the file contents anymore, it's just noise.
985 also doesn't return the file contents anymore, it's just noise.
979
986
980 * IPython/completer.py (Completer.attr_matches): revert change to
987 * IPython/completer.py (Completer.attr_matches): revert change to
981 complete only on attributes listed in __all__. I realized it
988 complete only on attributes listed in __all__. I realized it
982 cripples the tab-completion system as a tool for exploring the
989 cripples the tab-completion system as a tool for exploring the
983 internals of unknown libraries (it renders any non-__all__
990 internals of unknown libraries (it renders any non-__all__
984 attribute off-limits). I got bit by this when trying to see
991 attribute off-limits). I got bit by this when trying to see
985 something inside the dis module.
992 something inside the dis module.
986
993
987 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
994 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
988
995
989 * IPython/iplib.py (InteractiveShell.__init__): add .meta
996 * IPython/iplib.py (InteractiveShell.__init__): add .meta
990 namespace for users and extension writers to hold data in. This
997 namespace for users and extension writers to hold data in. This
991 follows the discussion in
998 follows the discussion in
992 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
999 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
993
1000
994 * IPython/completer.py (IPCompleter.complete): small patch to help
1001 * IPython/completer.py (IPCompleter.complete): small patch to help
995 tab-completion under Emacs, after a suggestion by John Barnard
1002 tab-completion under Emacs, after a suggestion by John Barnard
996 <barnarj-AT-ccf.org>.
1003 <barnarj-AT-ccf.org>.
997
1004
998 * IPython/Magic.py (Magic.extract_input_slices): added support for
1005 * IPython/Magic.py (Magic.extract_input_slices): added support for
999 the slice notation in magics to use N-M to represent numbers N...M
1006 the slice notation in magics to use N-M to represent numbers N...M
1000 (closed endpoints). This is used by %macro and %save.
1007 (closed endpoints). This is used by %macro and %save.
1001
1008
1002 * IPython/completer.py (Completer.attr_matches): for modules which
1009 * IPython/completer.py (Completer.attr_matches): for modules which
1003 define __all__, complete only on those. After a patch by Jeffrey
1010 define __all__, complete only on those. After a patch by Jeffrey
1004 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1011 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1005 speed up this routine.
1012 speed up this routine.
1006
1013
1007 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1014 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1008 don't know if this is the end of it, but the behavior now is
1015 don't know if this is the end of it, but the behavior now is
1009 certainly much more correct. Note that coupled with macros,
1016 certainly much more correct. Note that coupled with macros,
1010 slightly surprising (at first) behavior may occur: a macro will in
1017 slightly surprising (at first) behavior may occur: a macro will in
1011 general expand to multiple lines of input, so upon exiting, the
1018 general expand to multiple lines of input, so upon exiting, the
1012 in/out counters will both be bumped by the corresponding amount
1019 in/out counters will both be bumped by the corresponding amount
1013 (as if the macro's contents had been typed interactively). Typing
1020 (as if the macro's contents had been typed interactively). Typing
1014 %hist will reveal the intermediate (silently processed) lines.
1021 %hist will reveal the intermediate (silently processed) lines.
1015
1022
1016 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1023 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1017 pickle to fail (%run was overwriting __main__ and not restoring
1024 pickle to fail (%run was overwriting __main__ and not restoring
1018 it, but pickle relies on __main__ to operate).
1025 it, but pickle relies on __main__ to operate).
1019
1026
1020 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1027 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1021 using properties, but forgot to make the main InteractiveShell
1028 using properties, but forgot to make the main InteractiveShell
1022 class a new-style class. Properties fail silently, and
1029 class a new-style class. Properties fail silently, and
1023 mysteriously, with old-style class (getters work, but
1030 mysteriously, with old-style class (getters work, but
1024 setters don't do anything).
1031 setters don't do anything).
1025
1032
1026 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1033 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1027
1034
1028 * IPython/Magic.py (magic_history): fix history reporting bug (I
1035 * IPython/Magic.py (magic_history): fix history reporting bug (I
1029 know some nasties are still there, I just can't seem to find a
1036 know some nasties are still there, I just can't seem to find a
1030 reproducible test case to track them down; the input history is
1037 reproducible test case to track them down; the input history is
1031 falling out of sync...)
1038 falling out of sync...)
1032
1039
1033 * IPython/iplib.py (handle_shell_escape): fix bug where both
1040 * IPython/iplib.py (handle_shell_escape): fix bug where both
1034 aliases and system accesses where broken for indented code (such
1041 aliases and system accesses where broken for indented code (such
1035 as loops).
1042 as loops).
1036
1043
1037 * IPython/genutils.py (shell): fix small but critical bug for
1044 * IPython/genutils.py (shell): fix small but critical bug for
1038 win32 system access.
1045 win32 system access.
1039
1046
1040 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1047 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1041
1048
1042 * IPython/iplib.py (showtraceback): remove use of the
1049 * IPython/iplib.py (showtraceback): remove use of the
1043 sys.last_{type/value/traceback} structures, which are non
1050 sys.last_{type/value/traceback} structures, which are non
1044 thread-safe.
1051 thread-safe.
1045 (_prefilter): change control flow to ensure that we NEVER
1052 (_prefilter): change control flow to ensure that we NEVER
1046 introspect objects when autocall is off. This will guarantee that
1053 introspect objects when autocall is off. This will guarantee that
1047 having an input line of the form 'x.y', where access to attribute
1054 having an input line of the form 'x.y', where access to attribute
1048 'y' has side effects, doesn't trigger the side effect TWICE. It
1055 'y' has side effects, doesn't trigger the side effect TWICE. It
1049 is important to note that, with autocall on, these side effects
1056 is important to note that, with autocall on, these side effects
1050 can still happen.
1057 can still happen.
1051 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1058 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1052 trio. IPython offers these three kinds of special calls which are
1059 trio. IPython offers these three kinds of special calls which are
1053 not python code, and it's a good thing to have their call method
1060 not python code, and it's a good thing to have their call method
1054 be accessible as pure python functions (not just special syntax at
1061 be accessible as pure python functions (not just special syntax at
1055 the command line). It gives us a better internal implementation
1062 the command line). It gives us a better internal implementation
1056 structure, as well as exposing these for user scripting more
1063 structure, as well as exposing these for user scripting more
1057 cleanly.
1064 cleanly.
1058
1065
1059 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1066 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1060 file. Now that they'll be more likely to be used with the
1067 file. Now that they'll be more likely to be used with the
1061 persistance system (%store), I want to make sure their module path
1068 persistance system (%store), I want to make sure their module path
1062 doesn't change in the future, so that we don't break things for
1069 doesn't change in the future, so that we don't break things for
1063 users' persisted data.
1070 users' persisted data.
1064
1071
1065 * IPython/iplib.py (autoindent_update): move indentation
1072 * IPython/iplib.py (autoindent_update): move indentation
1066 management into the _text_ processing loop, not the keyboard
1073 management into the _text_ processing loop, not the keyboard
1067 interactive one. This is necessary to correctly process non-typed
1074 interactive one. This is necessary to correctly process non-typed
1068 multiline input (such as macros).
1075 multiline input (such as macros).
1069
1076
1070 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1077 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1071 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1078 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1072 which was producing problems in the resulting manual.
1079 which was producing problems in the resulting manual.
1073 (magic_whos): improve reporting of instances (show their class,
1080 (magic_whos): improve reporting of instances (show their class,
1074 instead of simply printing 'instance' which isn't terribly
1081 instead of simply printing 'instance' which isn't terribly
1075 informative).
1082 informative).
1076
1083
1077 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1084 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1078 (minor mods) to support network shares under win32.
1085 (minor mods) to support network shares under win32.
1079
1086
1080 * IPython/winconsole.py (get_console_size): add new winconsole
1087 * IPython/winconsole.py (get_console_size): add new winconsole
1081 module and fixes to page_dumb() to improve its behavior under
1088 module and fixes to page_dumb() to improve its behavior under
1082 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1089 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1083
1090
1084 * IPython/Magic.py (Macro): simplified Macro class to just
1091 * IPython/Magic.py (Macro): simplified Macro class to just
1085 subclass list. We've had only 2.2 compatibility for a very long
1092 subclass list. We've had only 2.2 compatibility for a very long
1086 time, yet I was still avoiding subclassing the builtin types. No
1093 time, yet I was still avoiding subclassing the builtin types. No
1087 more (I'm also starting to use properties, though I won't shift to
1094 more (I'm also starting to use properties, though I won't shift to
1088 2.3-specific features quite yet).
1095 2.3-specific features quite yet).
1089 (magic_store): added Ville's patch for lightweight variable
1096 (magic_store): added Ville's patch for lightweight variable
1090 persistence, after a request on the user list by Matt Wilkie
1097 persistence, after a request on the user list by Matt Wilkie
1091 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1098 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1092 details.
1099 details.
1093
1100
1094 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1101 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1095 changed the default logfile name from 'ipython.log' to
1102 changed the default logfile name from 'ipython.log' to
1096 'ipython_log.py'. These logs are real python files, and now that
1103 'ipython_log.py'. These logs are real python files, and now that
1097 we have much better multiline support, people are more likely to
1104 we have much better multiline support, people are more likely to
1098 want to use them as such. Might as well name them correctly.
1105 want to use them as such. Might as well name them correctly.
1099
1106
1100 * IPython/Magic.py: substantial cleanup. While we can't stop
1107 * IPython/Magic.py: substantial cleanup. While we can't stop
1101 using magics as mixins, due to the existing customizations 'out
1108 using magics as mixins, due to the existing customizations 'out
1102 there' which rely on the mixin naming conventions, at least I
1109 there' which rely on the mixin naming conventions, at least I
1103 cleaned out all cross-class name usage. So once we are OK with
1110 cleaned out all cross-class name usage. So once we are OK with
1104 breaking compatibility, the two systems can be separated.
1111 breaking compatibility, the two systems can be separated.
1105
1112
1106 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1113 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1107 anymore, and the class is a fair bit less hideous as well. New
1114 anymore, and the class is a fair bit less hideous as well. New
1108 features were also introduced: timestamping of input, and logging
1115 features were also introduced: timestamping of input, and logging
1109 of output results. These are user-visible with the -t and -o
1116 of output results. These are user-visible with the -t and -o
1110 options to %logstart. Closes
1117 options to %logstart. Closes
1111 http://www.scipy.net/roundup/ipython/issue11 and a request by
1118 http://www.scipy.net/roundup/ipython/issue11 and a request by
1112 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1119 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1113
1120
1114 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1121 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1115
1122
1116 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1123 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1117 better handle backslashes in paths. See the thread 'More Windows
1124 better handle backslashes in paths. See the thread 'More Windows
1118 questions part 2 - \/ characters revisited' on the iypthon user
1125 questions part 2 - \/ characters revisited' on the iypthon user
1119 list:
1126 list:
1120 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1127 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1121
1128
1122 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1129 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1123
1130
1124 (InteractiveShell.__init__): change threaded shells to not use the
1131 (InteractiveShell.__init__): change threaded shells to not use the
1125 ipython crash handler. This was causing more problems than not,
1132 ipython crash handler. This was causing more problems than not,
1126 as exceptions in the main thread (GUI code, typically) would
1133 as exceptions in the main thread (GUI code, typically) would
1127 always show up as a 'crash', when they really weren't.
1134 always show up as a 'crash', when they really weren't.
1128
1135
1129 The colors and exception mode commands (%colors/%xmode) have been
1136 The colors and exception mode commands (%colors/%xmode) have been
1130 synchronized to also take this into account, so users can get
1137 synchronized to also take this into account, so users can get
1131 verbose exceptions for their threaded code as well. I also added
1138 verbose exceptions for their threaded code as well. I also added
1132 support for activating pdb inside this exception handler as well,
1139 support for activating pdb inside this exception handler as well,
1133 so now GUI authors can use IPython's enhanced pdb at runtime.
1140 so now GUI authors can use IPython's enhanced pdb at runtime.
1134
1141
1135 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1142 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1136 true by default, and add it to the shipped ipythonrc file. Since
1143 true by default, and add it to the shipped ipythonrc file. Since
1137 this asks the user before proceeding, I think it's OK to make it
1144 this asks the user before proceeding, I think it's OK to make it
1138 true by default.
1145 true by default.
1139
1146
1140 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1147 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1141 of the previous special-casing of input in the eval loop. I think
1148 of the previous special-casing of input in the eval loop. I think
1142 this is cleaner, as they really are commands and shouldn't have
1149 this is cleaner, as they really are commands and shouldn't have
1143 a special role in the middle of the core code.
1150 a special role in the middle of the core code.
1144
1151
1145 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1152 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1146
1153
1147 * IPython/iplib.py (edit_syntax_error): added support for
1154 * IPython/iplib.py (edit_syntax_error): added support for
1148 automatically reopening the editor if the file had a syntax error
1155 automatically reopening the editor if the file had a syntax error
1149 in it. Thanks to scottt who provided the patch at:
1156 in it. Thanks to scottt who provided the patch at:
1150 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1157 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1151 version committed).
1158 version committed).
1152
1159
1153 * IPython/iplib.py (handle_normal): add suport for multi-line
1160 * IPython/iplib.py (handle_normal): add suport for multi-line
1154 input with emtpy lines. This fixes
1161 input with emtpy lines. This fixes
1155 http://www.scipy.net/roundup/ipython/issue43 and a similar
1162 http://www.scipy.net/roundup/ipython/issue43 and a similar
1156 discussion on the user list.
1163 discussion on the user list.
1157
1164
1158 WARNING: a behavior change is necessarily introduced to support
1165 WARNING: a behavior change is necessarily introduced to support
1159 blank lines: now a single blank line with whitespace does NOT
1166 blank lines: now a single blank line with whitespace does NOT
1160 break the input loop, which means that when autoindent is on, by
1167 break the input loop, which means that when autoindent is on, by
1161 default hitting return on the next (indented) line does NOT exit.
1168 default hitting return on the next (indented) line does NOT exit.
1162
1169
1163 Instead, to exit a multiline input you can either have:
1170 Instead, to exit a multiline input you can either have:
1164
1171
1165 - TWO whitespace lines (just hit return again), or
1172 - TWO whitespace lines (just hit return again), or
1166 - a single whitespace line of a different length than provided
1173 - a single whitespace line of a different length than provided
1167 by the autoindent (add or remove a space).
1174 by the autoindent (add or remove a space).
1168
1175
1169 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1176 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1170 module to better organize all readline-related functionality.
1177 module to better organize all readline-related functionality.
1171 I've deleted FlexCompleter and put all completion clases here.
1178 I've deleted FlexCompleter and put all completion clases here.
1172
1179
1173 * IPython/iplib.py (raw_input): improve indentation management.
1180 * IPython/iplib.py (raw_input): improve indentation management.
1174 It is now possible to paste indented code with autoindent on, and
1181 It is now possible to paste indented code with autoindent on, and
1175 the code is interpreted correctly (though it still looks bad on
1182 the code is interpreted correctly (though it still looks bad on
1176 screen, due to the line-oriented nature of ipython).
1183 screen, due to the line-oriented nature of ipython).
1177 (MagicCompleter.complete): change behavior so that a TAB key on an
1184 (MagicCompleter.complete): change behavior so that a TAB key on an
1178 otherwise empty line actually inserts a tab, instead of completing
1185 otherwise empty line actually inserts a tab, instead of completing
1179 on the entire global namespace. This makes it easier to use the
1186 on the entire global namespace. This makes it easier to use the
1180 TAB key for indentation. After a request by Hans Meine
1187 TAB key for indentation. After a request by Hans Meine
1181 <hans_meine-AT-gmx.net>
1188 <hans_meine-AT-gmx.net>
1182 (_prefilter): add support so that typing plain 'exit' or 'quit'
1189 (_prefilter): add support so that typing plain 'exit' or 'quit'
1183 does a sensible thing. Originally I tried to deviate as little as
1190 does a sensible thing. Originally I tried to deviate as little as
1184 possible from the default python behavior, but even that one may
1191 possible from the default python behavior, but even that one may
1185 change in this direction (thread on python-dev to that effect).
1192 change in this direction (thread on python-dev to that effect).
1186 Regardless, ipython should do the right thing even if CPython's
1193 Regardless, ipython should do the right thing even if CPython's
1187 '>>>' prompt doesn't.
1194 '>>>' prompt doesn't.
1188 (InteractiveShell): removed subclassing code.InteractiveConsole
1195 (InteractiveShell): removed subclassing code.InteractiveConsole
1189 class. By now we'd overridden just about all of its methods: I've
1196 class. By now we'd overridden just about all of its methods: I've
1190 copied the remaining two over, and now ipython is a standalone
1197 copied the remaining two over, and now ipython is a standalone
1191 class. This will provide a clearer picture for the chainsaw
1198 class. This will provide a clearer picture for the chainsaw
1192 branch refactoring.
1199 branch refactoring.
1193
1200
1194 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1201 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1195
1202
1196 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1203 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1197 failures for objects which break when dir() is called on them.
1204 failures for objects which break when dir() is called on them.
1198
1205
1199 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1206 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1200 distinct local and global namespaces in the completer API. This
1207 distinct local and global namespaces in the completer API. This
1201 change allows us to properly handle completion with distinct
1208 change allows us to properly handle completion with distinct
1202 scopes, including in embedded instances (this had never really
1209 scopes, including in embedded instances (this had never really
1203 worked correctly).
1210 worked correctly).
1204
1211
1205 Note: this introduces a change in the constructor for
1212 Note: this introduces a change in the constructor for
1206 MagicCompleter, as a new global_namespace parameter is now the
1213 MagicCompleter, as a new global_namespace parameter is now the
1207 second argument (the others were bumped one position).
1214 second argument (the others were bumped one position).
1208
1215
1209 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1216 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1210
1217
1211 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1218 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1212 embedded instances (which can be done now thanks to Vivian's
1219 embedded instances (which can be done now thanks to Vivian's
1213 frame-handling fixes for pdb).
1220 frame-handling fixes for pdb).
1214 (InteractiveShell.__init__): Fix namespace handling problem in
1221 (InteractiveShell.__init__): Fix namespace handling problem in
1215 embedded instances. We were overwriting __main__ unconditionally,
1222 embedded instances. We were overwriting __main__ unconditionally,
1216 and this should only be done for 'full' (non-embedded) IPython;
1223 and this should only be done for 'full' (non-embedded) IPython;
1217 embedded instances must respect the caller's __main__. Thanks to
1224 embedded instances must respect the caller's __main__. Thanks to
1218 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1225 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1219
1226
1220 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1227 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1221
1228
1222 * setup.py: added download_url to setup(). This registers the
1229 * setup.py: added download_url to setup(). This registers the
1223 download address at PyPI, which is not only useful to humans
1230 download address at PyPI, which is not only useful to humans
1224 browsing the site, but is also picked up by setuptools (the Eggs
1231 browsing the site, but is also picked up by setuptools (the Eggs
1225 machinery). Thanks to Ville and R. Kern for the info/discussion
1232 machinery). Thanks to Ville and R. Kern for the info/discussion
1226 on this.
1233 on this.
1227
1234
1228 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1235 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1229
1236
1230 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1237 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1231 This brings a lot of nice functionality to the pdb mode, which now
1238 This brings a lot of nice functionality to the pdb mode, which now
1232 has tab-completion, syntax highlighting, and better stack handling
1239 has tab-completion, syntax highlighting, and better stack handling
1233 than before. Many thanks to Vivian De Smedt
1240 than before. Many thanks to Vivian De Smedt
1234 <vivian-AT-vdesmedt.com> for the original patches.
1241 <vivian-AT-vdesmedt.com> for the original patches.
1235
1242
1236 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1243 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1237
1244
1238 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1245 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1239 sequence to consistently accept the banner argument. The
1246 sequence to consistently accept the banner argument. The
1240 inconsistency was tripping SAGE, thanks to Gary Zablackis
1247 inconsistency was tripping SAGE, thanks to Gary Zablackis
1241 <gzabl-AT-yahoo.com> for the report.
1248 <gzabl-AT-yahoo.com> for the report.
1242
1249
1243 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1250 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1244
1251
1245 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1252 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1246 Fix bug where a naked 'alias' call in the ipythonrc file would
1253 Fix bug where a naked 'alias' call in the ipythonrc file would
1247 cause a crash. Bug reported by Jorgen Stenarson.
1254 cause a crash. Bug reported by Jorgen Stenarson.
1248
1255
1249 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1256 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1250
1257
1251 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1258 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1252 startup time.
1259 startup time.
1253
1260
1254 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1261 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1255 instances had introduced a bug with globals in normal code. Now
1262 instances had introduced a bug with globals in normal code. Now
1256 it's working in all cases.
1263 it's working in all cases.
1257
1264
1258 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1265 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1259 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1266 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1260 has been introduced to set the default case sensitivity of the
1267 has been introduced to set the default case sensitivity of the
1261 searches. Users can still select either mode at runtime on a
1268 searches. Users can still select either mode at runtime on a
1262 per-search basis.
1269 per-search basis.
1263
1270
1264 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1271 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1265
1272
1266 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1273 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1267 attributes in wildcard searches for subclasses. Modified version
1274 attributes in wildcard searches for subclasses. Modified version
1268 of a patch by Jorgen.
1275 of a patch by Jorgen.
1269
1276
1270 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1277 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1271
1278
1272 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1279 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1273 embedded instances. I added a user_global_ns attribute to the
1280 embedded instances. I added a user_global_ns attribute to the
1274 InteractiveShell class to handle this.
1281 InteractiveShell class to handle this.
1275
1282
1276 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1283 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1277
1284
1278 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1285 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1279 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1286 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1280 (reported under win32, but may happen also in other platforms).
1287 (reported under win32, but may happen also in other platforms).
1281 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1288 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1282
1289
1283 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1290 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1284
1291
1285 * IPython/Magic.py (magic_psearch): new support for wildcard
1292 * IPython/Magic.py (magic_psearch): new support for wildcard
1286 patterns. Now, typing ?a*b will list all names which begin with a
1293 patterns. Now, typing ?a*b will list all names which begin with a
1287 and end in b, for example. The %psearch magic has full
1294 and end in b, for example. The %psearch magic has full
1288 docstrings. Many thanks to JΓΆrgen Stenarson
1295 docstrings. Many thanks to JΓΆrgen Stenarson
1289 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1296 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1290 implementing this functionality.
1297 implementing this functionality.
1291
1298
1292 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1299 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1293
1300
1294 * Manual: fixed long-standing annoyance of double-dashes (as in
1301 * Manual: fixed long-standing annoyance of double-dashes (as in
1295 --prefix=~, for example) being stripped in the HTML version. This
1302 --prefix=~, for example) being stripped in the HTML version. This
1296 is a latex2html bug, but a workaround was provided. Many thanks
1303 is a latex2html bug, but a workaround was provided. Many thanks
1297 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1304 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1298 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1305 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1299 rolling. This seemingly small issue had tripped a number of users
1306 rolling. This seemingly small issue had tripped a number of users
1300 when first installing, so I'm glad to see it gone.
1307 when first installing, so I'm glad to see it gone.
1301
1308
1302 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1309 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1303
1310
1304 * IPython/Extensions/numeric_formats.py: fix missing import,
1311 * IPython/Extensions/numeric_formats.py: fix missing import,
1305 reported by Stephen Walton.
1312 reported by Stephen Walton.
1306
1313
1307 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1314 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1308
1315
1309 * IPython/demo.py: finish demo module, fully documented now.
1316 * IPython/demo.py: finish demo module, fully documented now.
1310
1317
1311 * IPython/genutils.py (file_read): simple little utility to read a
1318 * IPython/genutils.py (file_read): simple little utility to read a
1312 file and ensure it's closed afterwards.
1319 file and ensure it's closed afterwards.
1313
1320
1314 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1321 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1315
1322
1316 * IPython/demo.py (Demo.__init__): added support for individually
1323 * IPython/demo.py (Demo.__init__): added support for individually
1317 tagging blocks for automatic execution.
1324 tagging blocks for automatic execution.
1318
1325
1319 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1326 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1320 syntax-highlighted python sources, requested by John.
1327 syntax-highlighted python sources, requested by John.
1321
1328
1322 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1329 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1323
1330
1324 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1331 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1325 finishing.
1332 finishing.
1326
1333
1327 * IPython/genutils.py (shlex_split): moved from Magic to here,
1334 * IPython/genutils.py (shlex_split): moved from Magic to here,
1328 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1335 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1329
1336
1330 * IPython/demo.py (Demo.__init__): added support for silent
1337 * IPython/demo.py (Demo.__init__): added support for silent
1331 blocks, improved marks as regexps, docstrings written.
1338 blocks, improved marks as regexps, docstrings written.
1332 (Demo.__init__): better docstring, added support for sys.argv.
1339 (Demo.__init__): better docstring, added support for sys.argv.
1333
1340
1334 * IPython/genutils.py (marquee): little utility used by the demo
1341 * IPython/genutils.py (marquee): little utility used by the demo
1335 code, handy in general.
1342 code, handy in general.
1336
1343
1337 * IPython/demo.py (Demo.__init__): new class for interactive
1344 * IPython/demo.py (Demo.__init__): new class for interactive
1338 demos. Not documented yet, I just wrote it in a hurry for
1345 demos. Not documented yet, I just wrote it in a hurry for
1339 scipy'05. Will docstring later.
1346 scipy'05. Will docstring later.
1340
1347
1341 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1348 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1342
1349
1343 * IPython/Shell.py (sigint_handler): Drastic simplification which
1350 * IPython/Shell.py (sigint_handler): Drastic simplification which
1344 also seems to make Ctrl-C work correctly across threads! This is
1351 also seems to make Ctrl-C work correctly across threads! This is
1345 so simple, that I can't beleive I'd missed it before. Needs more
1352 so simple, that I can't beleive I'd missed it before. Needs more
1346 testing, though.
1353 testing, though.
1347 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1354 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1348 like this before...
1355 like this before...
1349
1356
1350 * IPython/genutils.py (get_home_dir): add protection against
1357 * IPython/genutils.py (get_home_dir): add protection against
1351 non-dirs in win32 registry.
1358 non-dirs in win32 registry.
1352
1359
1353 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1360 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1354 bug where dict was mutated while iterating (pysh crash).
1361 bug where dict was mutated while iterating (pysh crash).
1355
1362
1356 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1363 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1357
1364
1358 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1365 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1359 spurious newlines added by this routine. After a report by
1366 spurious newlines added by this routine. After a report by
1360 F. Mantegazza.
1367 F. Mantegazza.
1361
1368
1362 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1369 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1363
1370
1364 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1371 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1365 calls. These were a leftover from the GTK 1.x days, and can cause
1372 calls. These were a leftover from the GTK 1.x days, and can cause
1366 problems in certain cases (after a report by John Hunter).
1373 problems in certain cases (after a report by John Hunter).
1367
1374
1368 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1375 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1369 os.getcwd() fails at init time. Thanks to patch from David Remahl
1376 os.getcwd() fails at init time. Thanks to patch from David Remahl
1370 <chmod007-AT-mac.com>.
1377 <chmod007-AT-mac.com>.
1371 (InteractiveShell.__init__): prevent certain special magics from
1378 (InteractiveShell.__init__): prevent certain special magics from
1372 being shadowed by aliases. Closes
1379 being shadowed by aliases. Closes
1373 http://www.scipy.net/roundup/ipython/issue41.
1380 http://www.scipy.net/roundup/ipython/issue41.
1374
1381
1375 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1382 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1376
1383
1377 * IPython/iplib.py (InteractiveShell.complete): Added new
1384 * IPython/iplib.py (InteractiveShell.complete): Added new
1378 top-level completion method to expose the completion mechanism
1385 top-level completion method to expose the completion mechanism
1379 beyond readline-based environments.
1386 beyond readline-based environments.
1380
1387
1381 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1388 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1382
1389
1383 * tools/ipsvnc (svnversion): fix svnversion capture.
1390 * tools/ipsvnc (svnversion): fix svnversion capture.
1384
1391
1385 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1392 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1386 attribute to self, which was missing. Before, it was set by a
1393 attribute to self, which was missing. Before, it was set by a
1387 routine which in certain cases wasn't being called, so the
1394 routine which in certain cases wasn't being called, so the
1388 instance could end up missing the attribute. This caused a crash.
1395 instance could end up missing the attribute. This caused a crash.
1389 Closes http://www.scipy.net/roundup/ipython/issue40.
1396 Closes http://www.scipy.net/roundup/ipython/issue40.
1390
1397
1391 2005-08-16 Fernando Perez <fperez@colorado.edu>
1398 2005-08-16 Fernando Perez <fperez@colorado.edu>
1392
1399
1393 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1400 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1394 contains non-string attribute. Closes
1401 contains non-string attribute. Closes
1395 http://www.scipy.net/roundup/ipython/issue38.
1402 http://www.scipy.net/roundup/ipython/issue38.
1396
1403
1397 2005-08-14 Fernando Perez <fperez@colorado.edu>
1404 2005-08-14 Fernando Perez <fperez@colorado.edu>
1398
1405
1399 * tools/ipsvnc: Minor improvements, to add changeset info.
1406 * tools/ipsvnc: Minor improvements, to add changeset info.
1400
1407
1401 2005-08-12 Fernando Perez <fperez@colorado.edu>
1408 2005-08-12 Fernando Perez <fperez@colorado.edu>
1402
1409
1403 * IPython/iplib.py (runsource): remove self.code_to_run_src
1410 * IPython/iplib.py (runsource): remove self.code_to_run_src
1404 attribute. I realized this is nothing more than
1411 attribute. I realized this is nothing more than
1405 '\n'.join(self.buffer), and having the same data in two different
1412 '\n'.join(self.buffer), and having the same data in two different
1406 places is just asking for synchronization bugs. This may impact
1413 places is just asking for synchronization bugs. This may impact
1407 people who have custom exception handlers, so I need to warn
1414 people who have custom exception handlers, so I need to warn
1408 ipython-dev about it (F. Mantegazza may use them).
1415 ipython-dev about it (F. Mantegazza may use them).
1409
1416
1410 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1417 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1411
1418
1412 * IPython/genutils.py: fix 2.2 compatibility (generators)
1419 * IPython/genutils.py: fix 2.2 compatibility (generators)
1413
1420
1414 2005-07-18 Fernando Perez <fperez@colorado.edu>
1421 2005-07-18 Fernando Perez <fperez@colorado.edu>
1415
1422
1416 * IPython/genutils.py (get_home_dir): fix to help users with
1423 * IPython/genutils.py (get_home_dir): fix to help users with
1417 invalid $HOME under win32.
1424 invalid $HOME under win32.
1418
1425
1419 2005-07-17 Fernando Perez <fperez@colorado.edu>
1426 2005-07-17 Fernando Perez <fperez@colorado.edu>
1420
1427
1421 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1428 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1422 some old hacks and clean up a bit other routines; code should be
1429 some old hacks and clean up a bit other routines; code should be
1423 simpler and a bit faster.
1430 simpler and a bit faster.
1424
1431
1425 * IPython/iplib.py (interact): removed some last-resort attempts
1432 * IPython/iplib.py (interact): removed some last-resort attempts
1426 to survive broken stdout/stderr. That code was only making it
1433 to survive broken stdout/stderr. That code was only making it
1427 harder to abstract out the i/o (necessary for gui integration),
1434 harder to abstract out the i/o (necessary for gui integration),
1428 and the crashes it could prevent were extremely rare in practice
1435 and the crashes it could prevent were extremely rare in practice
1429 (besides being fully user-induced in a pretty violent manner).
1436 (besides being fully user-induced in a pretty violent manner).
1430
1437
1431 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1438 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1432 Nothing major yet, but the code is simpler to read; this should
1439 Nothing major yet, but the code is simpler to read; this should
1433 make it easier to do more serious modifications in the future.
1440 make it easier to do more serious modifications in the future.
1434
1441
1435 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1442 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1436 which broke in .15 (thanks to a report by Ville).
1443 which broke in .15 (thanks to a report by Ville).
1437
1444
1438 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1445 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1439 be quite correct, I know next to nothing about unicode). This
1446 be quite correct, I know next to nothing about unicode). This
1440 will allow unicode strings to be used in prompts, amongst other
1447 will allow unicode strings to be used in prompts, amongst other
1441 cases. It also will prevent ipython from crashing when unicode
1448 cases. It also will prevent ipython from crashing when unicode
1442 shows up unexpectedly in many places. If ascii encoding fails, we
1449 shows up unexpectedly in many places. If ascii encoding fails, we
1443 assume utf_8. Currently the encoding is not a user-visible
1450 assume utf_8. Currently the encoding is not a user-visible
1444 setting, though it could be made so if there is demand for it.
1451 setting, though it could be made so if there is demand for it.
1445
1452
1446 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1453 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1447
1454
1448 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1455 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1449
1456
1450 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1457 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1451
1458
1452 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1459 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1453 code can work transparently for 2.2/2.3.
1460 code can work transparently for 2.2/2.3.
1454
1461
1455 2005-07-16 Fernando Perez <fperez@colorado.edu>
1462 2005-07-16 Fernando Perez <fperez@colorado.edu>
1456
1463
1457 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1464 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1458 out of the color scheme table used for coloring exception
1465 out of the color scheme table used for coloring exception
1459 tracebacks. This allows user code to add new schemes at runtime.
1466 tracebacks. This allows user code to add new schemes at runtime.
1460 This is a minimally modified version of the patch at
1467 This is a minimally modified version of the patch at
1461 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1468 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1462 for the contribution.
1469 for the contribution.
1463
1470
1464 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1471 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1465 slightly modified version of the patch in
1472 slightly modified version of the patch in
1466 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1473 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1467 to remove the previous try/except solution (which was costlier).
1474 to remove the previous try/except solution (which was costlier).
1468 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1475 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1469
1476
1470 2005-06-08 Fernando Perez <fperez@colorado.edu>
1477 2005-06-08 Fernando Perez <fperez@colorado.edu>
1471
1478
1472 * IPython/iplib.py (write/write_err): Add methods to abstract all
1479 * IPython/iplib.py (write/write_err): Add methods to abstract all
1473 I/O a bit more.
1480 I/O a bit more.
1474
1481
1475 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1482 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1476 warning, reported by Aric Hagberg, fix by JD Hunter.
1483 warning, reported by Aric Hagberg, fix by JD Hunter.
1477
1484
1478 2005-06-02 *** Released version 0.6.15
1485 2005-06-02 *** Released version 0.6.15
1479
1486
1480 2005-06-01 Fernando Perez <fperez@colorado.edu>
1487 2005-06-01 Fernando Perez <fperez@colorado.edu>
1481
1488
1482 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1489 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1483 tab-completion of filenames within open-quoted strings. Note that
1490 tab-completion of filenames within open-quoted strings. Note that
1484 this requires that in ~/.ipython/ipythonrc, users change the
1491 this requires that in ~/.ipython/ipythonrc, users change the
1485 readline delimiters configuration to read:
1492 readline delimiters configuration to read:
1486
1493
1487 readline_remove_delims -/~
1494 readline_remove_delims -/~
1488
1495
1489
1496
1490 2005-05-31 *** Released version 0.6.14
1497 2005-05-31 *** Released version 0.6.14
1491
1498
1492 2005-05-29 Fernando Perez <fperez@colorado.edu>
1499 2005-05-29 Fernando Perez <fperez@colorado.edu>
1493
1500
1494 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1501 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1495 with files not on the filesystem. Reported by Eliyahu Sandler
1502 with files not on the filesystem. Reported by Eliyahu Sandler
1496 <eli@gondolin.net>
1503 <eli@gondolin.net>
1497
1504
1498 2005-05-22 Fernando Perez <fperez@colorado.edu>
1505 2005-05-22 Fernando Perez <fperez@colorado.edu>
1499
1506
1500 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1507 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1501 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1508 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1502
1509
1503 2005-05-19 Fernando Perez <fperez@colorado.edu>
1510 2005-05-19 Fernando Perez <fperez@colorado.edu>
1504
1511
1505 * IPython/iplib.py (safe_execfile): close a file which could be
1512 * IPython/iplib.py (safe_execfile): close a file which could be
1506 left open (causing problems in win32, which locks open files).
1513 left open (causing problems in win32, which locks open files).
1507 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1514 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1508
1515
1509 2005-05-18 Fernando Perez <fperez@colorado.edu>
1516 2005-05-18 Fernando Perez <fperez@colorado.edu>
1510
1517
1511 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1518 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1512 keyword arguments correctly to safe_execfile().
1519 keyword arguments correctly to safe_execfile().
1513
1520
1514 2005-05-13 Fernando Perez <fperez@colorado.edu>
1521 2005-05-13 Fernando Perez <fperez@colorado.edu>
1515
1522
1516 * ipython.1: Added info about Qt to manpage, and threads warning
1523 * ipython.1: Added info about Qt to manpage, and threads warning
1517 to usage page (invoked with --help).
1524 to usage page (invoked with --help).
1518
1525
1519 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1526 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1520 new matcher (it goes at the end of the priority list) to do
1527 new matcher (it goes at the end of the priority list) to do
1521 tab-completion on named function arguments. Submitted by George
1528 tab-completion on named function arguments. Submitted by George
1522 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1529 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1523 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1530 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1524 for more details.
1531 for more details.
1525
1532
1526 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1533 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1527 SystemExit exceptions in the script being run. Thanks to a report
1534 SystemExit exceptions in the script being run. Thanks to a report
1528 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1535 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1529 producing very annoying behavior when running unit tests.
1536 producing very annoying behavior when running unit tests.
1530
1537
1531 2005-05-12 Fernando Perez <fperez@colorado.edu>
1538 2005-05-12 Fernando Perez <fperez@colorado.edu>
1532
1539
1533 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1540 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1534 which I'd broken (again) due to a changed regexp. In the process,
1541 which I'd broken (again) due to a changed regexp. In the process,
1535 added ';' as an escape to auto-quote the whole line without
1542 added ';' as an escape to auto-quote the whole line without
1536 splitting its arguments. Thanks to a report by Jerry McRae
1543 splitting its arguments. Thanks to a report by Jerry McRae
1537 <qrs0xyc02-AT-sneakemail.com>.
1544 <qrs0xyc02-AT-sneakemail.com>.
1538
1545
1539 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1546 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1540 possible crashes caused by a TokenError. Reported by Ed Schofield
1547 possible crashes caused by a TokenError. Reported by Ed Schofield
1541 <schofield-AT-ftw.at>.
1548 <schofield-AT-ftw.at>.
1542
1549
1543 2005-05-06 Fernando Perez <fperez@colorado.edu>
1550 2005-05-06 Fernando Perez <fperez@colorado.edu>
1544
1551
1545 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1552 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1546
1553
1547 2005-04-29 Fernando Perez <fperez@colorado.edu>
1554 2005-04-29 Fernando Perez <fperez@colorado.edu>
1548
1555
1549 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1556 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1550 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1557 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1551 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1558 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1552 which provides support for Qt interactive usage (similar to the
1559 which provides support for Qt interactive usage (similar to the
1553 existing one for WX and GTK). This had been often requested.
1560 existing one for WX and GTK). This had been often requested.
1554
1561
1555 2005-04-14 *** Released version 0.6.13
1562 2005-04-14 *** Released version 0.6.13
1556
1563
1557 2005-04-08 Fernando Perez <fperez@colorado.edu>
1564 2005-04-08 Fernando Perez <fperez@colorado.edu>
1558
1565
1559 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1566 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1560 from _ofind, which gets called on almost every input line. Now,
1567 from _ofind, which gets called on almost every input line. Now,
1561 we only try to get docstrings if they are actually going to be
1568 we only try to get docstrings if they are actually going to be
1562 used (the overhead of fetching unnecessary docstrings can be
1569 used (the overhead of fetching unnecessary docstrings can be
1563 noticeable for certain objects, such as Pyro proxies).
1570 noticeable for certain objects, such as Pyro proxies).
1564
1571
1565 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1572 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1566 for completers. For some reason I had been passing them the state
1573 for completers. For some reason I had been passing them the state
1567 variable, which completers never actually need, and was in
1574 variable, which completers never actually need, and was in
1568 conflict with the rlcompleter API. Custom completers ONLY need to
1575 conflict with the rlcompleter API. Custom completers ONLY need to
1569 take the text parameter.
1576 take the text parameter.
1570
1577
1571 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1578 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1572 work correctly in pysh. I've also moved all the logic which used
1579 work correctly in pysh. I've also moved all the logic which used
1573 to be in pysh.py here, which will prevent problems with future
1580 to be in pysh.py here, which will prevent problems with future
1574 upgrades. However, this time I must warn users to update their
1581 upgrades. However, this time I must warn users to update their
1575 pysh profile to include the line
1582 pysh profile to include the line
1576
1583
1577 import_all IPython.Extensions.InterpreterExec
1584 import_all IPython.Extensions.InterpreterExec
1578
1585
1579 because otherwise things won't work for them. They MUST also
1586 because otherwise things won't work for them. They MUST also
1580 delete pysh.py and the line
1587 delete pysh.py and the line
1581
1588
1582 execfile pysh.py
1589 execfile pysh.py
1583
1590
1584 from their ipythonrc-pysh.
1591 from their ipythonrc-pysh.
1585
1592
1586 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1593 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1587 robust in the face of objects whose dir() returns non-strings
1594 robust in the face of objects whose dir() returns non-strings
1588 (which it shouldn't, but some broken libs like ITK do). Thanks to
1595 (which it shouldn't, but some broken libs like ITK do). Thanks to
1589 a patch by John Hunter (implemented differently, though). Also
1596 a patch by John Hunter (implemented differently, though). Also
1590 minor improvements by using .extend instead of + on lists.
1597 minor improvements by using .extend instead of + on lists.
1591
1598
1592 * pysh.py:
1599 * pysh.py:
1593
1600
1594 2005-04-06 Fernando Perez <fperez@colorado.edu>
1601 2005-04-06 Fernando Perez <fperez@colorado.edu>
1595
1602
1596 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1603 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1597 by default, so that all users benefit from it. Those who don't
1604 by default, so that all users benefit from it. Those who don't
1598 want it can still turn it off.
1605 want it can still turn it off.
1599
1606
1600 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1607 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1601 config file, I'd forgotten about this, so users were getting it
1608 config file, I'd forgotten about this, so users were getting it
1602 off by default.
1609 off by default.
1603
1610
1604 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1611 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1605 consistency. Now magics can be called in multiline statements,
1612 consistency. Now magics can be called in multiline statements,
1606 and python variables can be expanded in magic calls via $var.
1613 and python variables can be expanded in magic calls via $var.
1607 This makes the magic system behave just like aliases or !system
1614 This makes the magic system behave just like aliases or !system
1608 calls.
1615 calls.
1609
1616
1610 2005-03-28 Fernando Perez <fperez@colorado.edu>
1617 2005-03-28 Fernando Perez <fperez@colorado.edu>
1611
1618
1612 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1619 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1613 expensive string additions for building command. Add support for
1620 expensive string additions for building command. Add support for
1614 trailing ';' when autocall is used.
1621 trailing ';' when autocall is used.
1615
1622
1616 2005-03-26 Fernando Perez <fperez@colorado.edu>
1623 2005-03-26 Fernando Perez <fperez@colorado.edu>
1617
1624
1618 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1625 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1619 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1626 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1620 ipython.el robust against prompts with any number of spaces
1627 ipython.el robust against prompts with any number of spaces
1621 (including 0) after the ':' character.
1628 (including 0) after the ':' character.
1622
1629
1623 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1630 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1624 continuation prompt, which misled users to think the line was
1631 continuation prompt, which misled users to think the line was
1625 already indented. Closes debian Bug#300847, reported to me by
1632 already indented. Closes debian Bug#300847, reported to me by
1626 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1633 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1627
1634
1628 2005-03-23 Fernando Perez <fperez@colorado.edu>
1635 2005-03-23 Fernando Perez <fperez@colorado.edu>
1629
1636
1630 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1637 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1631 properly aligned if they have embedded newlines.
1638 properly aligned if they have embedded newlines.
1632
1639
1633 * IPython/iplib.py (runlines): Add a public method to expose
1640 * IPython/iplib.py (runlines): Add a public method to expose
1634 IPython's code execution machinery, so that users can run strings
1641 IPython's code execution machinery, so that users can run strings
1635 as if they had been typed at the prompt interactively.
1642 as if they had been typed at the prompt interactively.
1636 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1643 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1637 methods which can call the system shell, but with python variable
1644 methods which can call the system shell, but with python variable
1638 expansion. The three such methods are: __IPYTHON__.system,
1645 expansion. The three such methods are: __IPYTHON__.system,
1639 .getoutput and .getoutputerror. These need to be documented in a
1646 .getoutput and .getoutputerror. These need to be documented in a
1640 'public API' section (to be written) of the manual.
1647 'public API' section (to be written) of the manual.
1641
1648
1642 2005-03-20 Fernando Perez <fperez@colorado.edu>
1649 2005-03-20 Fernando Perez <fperez@colorado.edu>
1643
1650
1644 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1651 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1645 for custom exception handling. This is quite powerful, and it
1652 for custom exception handling. This is quite powerful, and it
1646 allows for user-installable exception handlers which can trap
1653 allows for user-installable exception handlers which can trap
1647 custom exceptions at runtime and treat them separately from
1654 custom exceptions at runtime and treat them separately from
1648 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1655 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1649 Mantegazza <mantegazza-AT-ill.fr>.
1656 Mantegazza <mantegazza-AT-ill.fr>.
1650 (InteractiveShell.set_custom_completer): public API function to
1657 (InteractiveShell.set_custom_completer): public API function to
1651 add new completers at runtime.
1658 add new completers at runtime.
1652
1659
1653 2005-03-19 Fernando Perez <fperez@colorado.edu>
1660 2005-03-19 Fernando Perez <fperez@colorado.edu>
1654
1661
1655 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1662 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1656 allow objects which provide their docstrings via non-standard
1663 allow objects which provide their docstrings via non-standard
1657 mechanisms (like Pyro proxies) to still be inspected by ipython's
1664 mechanisms (like Pyro proxies) to still be inspected by ipython's
1658 ? system.
1665 ? system.
1659
1666
1660 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1667 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1661 automatic capture system. I tried quite hard to make it work
1668 automatic capture system. I tried quite hard to make it work
1662 reliably, and simply failed. I tried many combinations with the
1669 reliably, and simply failed. I tried many combinations with the
1663 subprocess module, but eventually nothing worked in all needed
1670 subprocess module, but eventually nothing worked in all needed
1664 cases (not blocking stdin for the child, duplicating stdout
1671 cases (not blocking stdin for the child, duplicating stdout
1665 without blocking, etc). The new %sc/%sx still do capture to these
1672 without blocking, etc). The new %sc/%sx still do capture to these
1666 magical list/string objects which make shell use much more
1673 magical list/string objects which make shell use much more
1667 conveninent, so not all is lost.
1674 conveninent, so not all is lost.
1668
1675
1669 XXX - FIX MANUAL for the change above!
1676 XXX - FIX MANUAL for the change above!
1670
1677
1671 (runsource): I copied code.py's runsource() into ipython to modify
1678 (runsource): I copied code.py's runsource() into ipython to modify
1672 it a bit. Now the code object and source to be executed are
1679 it a bit. Now the code object and source to be executed are
1673 stored in ipython. This makes this info accessible to third-party
1680 stored in ipython. This makes this info accessible to third-party
1674 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1681 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1675 Mantegazza <mantegazza-AT-ill.fr>.
1682 Mantegazza <mantegazza-AT-ill.fr>.
1676
1683
1677 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1684 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1678 history-search via readline (like C-p/C-n). I'd wanted this for a
1685 history-search via readline (like C-p/C-n). I'd wanted this for a
1679 long time, but only recently found out how to do it. For users
1686 long time, but only recently found out how to do it. For users
1680 who already have their ipythonrc files made and want this, just
1687 who already have their ipythonrc files made and want this, just
1681 add:
1688 add:
1682
1689
1683 readline_parse_and_bind "\e[A": history-search-backward
1690 readline_parse_and_bind "\e[A": history-search-backward
1684 readline_parse_and_bind "\e[B": history-search-forward
1691 readline_parse_and_bind "\e[B": history-search-forward
1685
1692
1686 2005-03-18 Fernando Perez <fperez@colorado.edu>
1693 2005-03-18 Fernando Perez <fperez@colorado.edu>
1687
1694
1688 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1695 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1689 LSString and SList classes which allow transparent conversions
1696 LSString and SList classes which allow transparent conversions
1690 between list mode and whitespace-separated string.
1697 between list mode and whitespace-separated string.
1691 (magic_r): Fix recursion problem in %r.
1698 (magic_r): Fix recursion problem in %r.
1692
1699
1693 * IPython/genutils.py (LSString): New class to be used for
1700 * IPython/genutils.py (LSString): New class to be used for
1694 automatic storage of the results of all alias/system calls in _o
1701 automatic storage of the results of all alias/system calls in _o
1695 and _e (stdout/err). These provide a .l/.list attribute which
1702 and _e (stdout/err). These provide a .l/.list attribute which
1696 does automatic splitting on newlines. This means that for most
1703 does automatic splitting on newlines. This means that for most
1697 uses, you'll never need to do capturing of output with %sc/%sx
1704 uses, you'll never need to do capturing of output with %sc/%sx
1698 anymore, since ipython keeps this always done for you. Note that
1705 anymore, since ipython keeps this always done for you. Note that
1699 only the LAST results are stored, the _o/e variables are
1706 only the LAST results are stored, the _o/e variables are
1700 overwritten on each call. If you need to save their contents
1707 overwritten on each call. If you need to save their contents
1701 further, simply bind them to any other name.
1708 further, simply bind them to any other name.
1702
1709
1703 2005-03-17 Fernando Perez <fperez@colorado.edu>
1710 2005-03-17 Fernando Perez <fperez@colorado.edu>
1704
1711
1705 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1712 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1706 prompt namespace handling.
1713 prompt namespace handling.
1707
1714
1708 2005-03-16 Fernando Perez <fperez@colorado.edu>
1715 2005-03-16 Fernando Perez <fperez@colorado.edu>
1709
1716
1710 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1717 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1711 classic prompts to be '>>> ' (final space was missing, and it
1718 classic prompts to be '>>> ' (final space was missing, and it
1712 trips the emacs python mode).
1719 trips the emacs python mode).
1713 (BasePrompt.__str__): Added safe support for dynamic prompt
1720 (BasePrompt.__str__): Added safe support for dynamic prompt
1714 strings. Now you can set your prompt string to be '$x', and the
1721 strings. Now you can set your prompt string to be '$x', and the
1715 value of x will be printed from your interactive namespace. The
1722 value of x will be printed from your interactive namespace. The
1716 interpolation syntax includes the full Itpl support, so
1723 interpolation syntax includes the full Itpl support, so
1717 ${foo()+x+bar()} is a valid prompt string now, and the function
1724 ${foo()+x+bar()} is a valid prompt string now, and the function
1718 calls will be made at runtime.
1725 calls will be made at runtime.
1719
1726
1720 2005-03-15 Fernando Perez <fperez@colorado.edu>
1727 2005-03-15 Fernando Perez <fperez@colorado.edu>
1721
1728
1722 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1729 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1723 avoid name clashes in pylab. %hist still works, it just forwards
1730 avoid name clashes in pylab. %hist still works, it just forwards
1724 the call to %history.
1731 the call to %history.
1725
1732
1726 2005-03-02 *** Released version 0.6.12
1733 2005-03-02 *** Released version 0.6.12
1727
1734
1728 2005-03-02 Fernando Perez <fperez@colorado.edu>
1735 2005-03-02 Fernando Perez <fperez@colorado.edu>
1729
1736
1730 * IPython/iplib.py (handle_magic): log magic calls properly as
1737 * IPython/iplib.py (handle_magic): log magic calls properly as
1731 ipmagic() function calls.
1738 ipmagic() function calls.
1732
1739
1733 * IPython/Magic.py (magic_time): Improved %time to support
1740 * IPython/Magic.py (magic_time): Improved %time to support
1734 statements and provide wall-clock as well as CPU time.
1741 statements and provide wall-clock as well as CPU time.
1735
1742
1736 2005-02-27 Fernando Perez <fperez@colorado.edu>
1743 2005-02-27 Fernando Perez <fperez@colorado.edu>
1737
1744
1738 * IPython/hooks.py: New hooks module, to expose user-modifiable
1745 * IPython/hooks.py: New hooks module, to expose user-modifiable
1739 IPython functionality in a clean manner. For now only the editor
1746 IPython functionality in a clean manner. For now only the editor
1740 hook is actually written, and other thigns which I intend to turn
1747 hook is actually written, and other thigns which I intend to turn
1741 into proper hooks aren't yet there. The display and prefilter
1748 into proper hooks aren't yet there. The display and prefilter
1742 stuff, for example, should be hooks. But at least now the
1749 stuff, for example, should be hooks. But at least now the
1743 framework is in place, and the rest can be moved here with more
1750 framework is in place, and the rest can be moved here with more
1744 time later. IPython had had a .hooks variable for a long time for
1751 time later. IPython had had a .hooks variable for a long time for
1745 this purpose, but I'd never actually used it for anything.
1752 this purpose, but I'd never actually used it for anything.
1746
1753
1747 2005-02-26 Fernando Perez <fperez@colorado.edu>
1754 2005-02-26 Fernando Perez <fperez@colorado.edu>
1748
1755
1749 * IPython/ipmaker.py (make_IPython): make the default ipython
1756 * IPython/ipmaker.py (make_IPython): make the default ipython
1750 directory be called _ipython under win32, to follow more the
1757 directory be called _ipython under win32, to follow more the
1751 naming peculiarities of that platform (where buggy software like
1758 naming peculiarities of that platform (where buggy software like
1752 Visual Sourcesafe breaks with .named directories). Reported by
1759 Visual Sourcesafe breaks with .named directories). Reported by
1753 Ville Vainio.
1760 Ville Vainio.
1754
1761
1755 2005-02-23 Fernando Perez <fperez@colorado.edu>
1762 2005-02-23 Fernando Perez <fperez@colorado.edu>
1756
1763
1757 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1764 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1758 auto_aliases for win32 which were causing problems. Users can
1765 auto_aliases for win32 which were causing problems. Users can
1759 define the ones they personally like.
1766 define the ones they personally like.
1760
1767
1761 2005-02-21 Fernando Perez <fperez@colorado.edu>
1768 2005-02-21 Fernando Perez <fperez@colorado.edu>
1762
1769
1763 * IPython/Magic.py (magic_time): new magic to time execution of
1770 * IPython/Magic.py (magic_time): new magic to time execution of
1764 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1771 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1765
1772
1766 2005-02-19 Fernando Perez <fperez@colorado.edu>
1773 2005-02-19 Fernando Perez <fperez@colorado.edu>
1767
1774
1768 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1775 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1769 into keys (for prompts, for example).
1776 into keys (for prompts, for example).
1770
1777
1771 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1778 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1772 prompts in case users want them. This introduces a small behavior
1779 prompts in case users want them. This introduces a small behavior
1773 change: ipython does not automatically add a space to all prompts
1780 change: ipython does not automatically add a space to all prompts
1774 anymore. To get the old prompts with a space, users should add it
1781 anymore. To get the old prompts with a space, users should add it
1775 manually to their ipythonrc file, so for example prompt_in1 should
1782 manually to their ipythonrc file, so for example prompt_in1 should
1776 now read 'In [\#]: ' instead of 'In [\#]:'.
1783 now read 'In [\#]: ' instead of 'In [\#]:'.
1777 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1784 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1778 file) to control left-padding of secondary prompts.
1785 file) to control left-padding of secondary prompts.
1779
1786
1780 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1787 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1781 the profiler can't be imported. Fix for Debian, which removed
1788 the profiler can't be imported. Fix for Debian, which removed
1782 profile.py because of License issues. I applied a slightly
1789 profile.py because of License issues. I applied a slightly
1783 modified version of the original Debian patch at
1790 modified version of the original Debian patch at
1784 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1791 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1785
1792
1786 2005-02-17 Fernando Perez <fperez@colorado.edu>
1793 2005-02-17 Fernando Perez <fperez@colorado.edu>
1787
1794
1788 * IPython/genutils.py (native_line_ends): Fix bug which would
1795 * IPython/genutils.py (native_line_ends): Fix bug which would
1789 cause improper line-ends under win32 b/c I was not opening files
1796 cause improper line-ends under win32 b/c I was not opening files
1790 in binary mode. Bug report and fix thanks to Ville.
1797 in binary mode. Bug report and fix thanks to Ville.
1791
1798
1792 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1799 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1793 trying to catch spurious foo[1] autocalls. My fix actually broke
1800 trying to catch spurious foo[1] autocalls. My fix actually broke
1794 ',/' autoquote/call with explicit escape (bad regexp).
1801 ',/' autoquote/call with explicit escape (bad regexp).
1795
1802
1796 2005-02-15 *** Released version 0.6.11
1803 2005-02-15 *** Released version 0.6.11
1797
1804
1798 2005-02-14 Fernando Perez <fperez@colorado.edu>
1805 2005-02-14 Fernando Perez <fperez@colorado.edu>
1799
1806
1800 * IPython/background_jobs.py: New background job management
1807 * IPython/background_jobs.py: New background job management
1801 subsystem. This is implemented via a new set of classes, and
1808 subsystem. This is implemented via a new set of classes, and
1802 IPython now provides a builtin 'jobs' object for background job
1809 IPython now provides a builtin 'jobs' object for background job
1803 execution. A convenience %bg magic serves as a lightweight
1810 execution. A convenience %bg magic serves as a lightweight
1804 frontend for starting the more common type of calls. This was
1811 frontend for starting the more common type of calls. This was
1805 inspired by discussions with B. Granger and the BackgroundCommand
1812 inspired by discussions with B. Granger and the BackgroundCommand
1806 class described in the book Python Scripting for Computational
1813 class described in the book Python Scripting for Computational
1807 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1814 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1808 (although ultimately no code from this text was used, as IPython's
1815 (although ultimately no code from this text was used, as IPython's
1809 system is a separate implementation).
1816 system is a separate implementation).
1810
1817
1811 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1818 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1812 to control the completion of single/double underscore names
1819 to control the completion of single/double underscore names
1813 separately. As documented in the example ipytonrc file, the
1820 separately. As documented in the example ipytonrc file, the
1814 readline_omit__names variable can now be set to 2, to omit even
1821 readline_omit__names variable can now be set to 2, to omit even
1815 single underscore names. Thanks to a patch by Brian Wong
1822 single underscore names. Thanks to a patch by Brian Wong
1816 <BrianWong-AT-AirgoNetworks.Com>.
1823 <BrianWong-AT-AirgoNetworks.Com>.
1817 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1824 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1818 be autocalled as foo([1]) if foo were callable. A problem for
1825 be autocalled as foo([1]) if foo were callable. A problem for
1819 things which are both callable and implement __getitem__.
1826 things which are both callable and implement __getitem__.
1820 (init_readline): Fix autoindentation for win32. Thanks to a patch
1827 (init_readline): Fix autoindentation for win32. Thanks to a patch
1821 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1828 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1822
1829
1823 2005-02-12 Fernando Perez <fperez@colorado.edu>
1830 2005-02-12 Fernando Perez <fperez@colorado.edu>
1824
1831
1825 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1832 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1826 which I had written long ago to sort out user error messages which
1833 which I had written long ago to sort out user error messages which
1827 may occur during startup. This seemed like a good idea initially,
1834 may occur during startup. This seemed like a good idea initially,
1828 but it has proven a disaster in retrospect. I don't want to
1835 but it has proven a disaster in retrospect. I don't want to
1829 change much code for now, so my fix is to set the internal 'debug'
1836 change much code for now, so my fix is to set the internal 'debug'
1830 flag to true everywhere, whose only job was precisely to control
1837 flag to true everywhere, whose only job was precisely to control
1831 this subsystem. This closes issue 28 (as well as avoiding all
1838 this subsystem. This closes issue 28 (as well as avoiding all
1832 sorts of strange hangups which occur from time to time).
1839 sorts of strange hangups which occur from time to time).
1833
1840
1834 2005-02-07 Fernando Perez <fperez@colorado.edu>
1841 2005-02-07 Fernando Perez <fperez@colorado.edu>
1835
1842
1836 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1843 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1837 previous call produced a syntax error.
1844 previous call produced a syntax error.
1838
1845
1839 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1846 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1840 classes without constructor.
1847 classes without constructor.
1841
1848
1842 2005-02-06 Fernando Perez <fperez@colorado.edu>
1849 2005-02-06 Fernando Perez <fperez@colorado.edu>
1843
1850
1844 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1851 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1845 completions with the results of each matcher, so we return results
1852 completions with the results of each matcher, so we return results
1846 to the user from all namespaces. This breaks with ipython
1853 to the user from all namespaces. This breaks with ipython
1847 tradition, but I think it's a nicer behavior. Now you get all
1854 tradition, but I think it's a nicer behavior. Now you get all
1848 possible completions listed, from all possible namespaces (python,
1855 possible completions listed, from all possible namespaces (python,
1849 filesystem, magics...) After a request by John Hunter
1856 filesystem, magics...) After a request by John Hunter
1850 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1857 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1851
1858
1852 2005-02-05 Fernando Perez <fperez@colorado.edu>
1859 2005-02-05 Fernando Perez <fperez@colorado.edu>
1853
1860
1854 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1861 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1855 the call had quote characters in it (the quotes were stripped).
1862 the call had quote characters in it (the quotes were stripped).
1856
1863
1857 2005-01-31 Fernando Perez <fperez@colorado.edu>
1864 2005-01-31 Fernando Perez <fperez@colorado.edu>
1858
1865
1859 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1866 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1860 Itpl.itpl() to make the code more robust against psyco
1867 Itpl.itpl() to make the code more robust against psyco
1861 optimizations.
1868 optimizations.
1862
1869
1863 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1870 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1864 of causing an exception. Quicker, cleaner.
1871 of causing an exception. Quicker, cleaner.
1865
1872
1866 2005-01-28 Fernando Perez <fperez@colorado.edu>
1873 2005-01-28 Fernando Perez <fperez@colorado.edu>
1867
1874
1868 * scripts/ipython_win_post_install.py (install): hardcode
1875 * scripts/ipython_win_post_install.py (install): hardcode
1869 sys.prefix+'python.exe' as the executable path. It turns out that
1876 sys.prefix+'python.exe' as the executable path. It turns out that
1870 during the post-installation run, sys.executable resolves to the
1877 during the post-installation run, sys.executable resolves to the
1871 name of the binary installer! I should report this as a distutils
1878 name of the binary installer! I should report this as a distutils
1872 bug, I think. I updated the .10 release with this tiny fix, to
1879 bug, I think. I updated the .10 release with this tiny fix, to
1873 avoid annoying the lists further.
1880 avoid annoying the lists further.
1874
1881
1875 2005-01-27 *** Released version 0.6.10
1882 2005-01-27 *** Released version 0.6.10
1876
1883
1877 2005-01-27 Fernando Perez <fperez@colorado.edu>
1884 2005-01-27 Fernando Perez <fperez@colorado.edu>
1878
1885
1879 * IPython/numutils.py (norm): Added 'inf' as optional name for
1886 * IPython/numutils.py (norm): Added 'inf' as optional name for
1880 L-infinity norm, included references to mathworld.com for vector
1887 L-infinity norm, included references to mathworld.com for vector
1881 norm definitions.
1888 norm definitions.
1882 (amin/amax): added amin/amax for array min/max. Similar to what
1889 (amin/amax): added amin/amax for array min/max. Similar to what
1883 pylab ships with after the recent reorganization of names.
1890 pylab ships with after the recent reorganization of names.
1884 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1891 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1885
1892
1886 * ipython.el: committed Alex's recent fixes and improvements.
1893 * ipython.el: committed Alex's recent fixes and improvements.
1887 Tested with python-mode from CVS, and it looks excellent. Since
1894 Tested with python-mode from CVS, and it looks excellent. Since
1888 python-mode hasn't released anything in a while, I'm temporarily
1895 python-mode hasn't released anything in a while, I'm temporarily
1889 putting a copy of today's CVS (v 4.70) of python-mode in:
1896 putting a copy of today's CVS (v 4.70) of python-mode in:
1890 http://ipython.scipy.org/tmp/python-mode.el
1897 http://ipython.scipy.org/tmp/python-mode.el
1891
1898
1892 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1899 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1893 sys.executable for the executable name, instead of assuming it's
1900 sys.executable for the executable name, instead of assuming it's
1894 called 'python.exe' (the post-installer would have produced broken
1901 called 'python.exe' (the post-installer would have produced broken
1895 setups on systems with a differently named python binary).
1902 setups on systems with a differently named python binary).
1896
1903
1897 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1904 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1898 references to os.linesep, to make the code more
1905 references to os.linesep, to make the code more
1899 platform-independent. This is also part of the win32 coloring
1906 platform-independent. This is also part of the win32 coloring
1900 fixes.
1907 fixes.
1901
1908
1902 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1909 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1903 lines, which actually cause coloring bugs because the length of
1910 lines, which actually cause coloring bugs because the length of
1904 the line is very difficult to correctly compute with embedded
1911 the line is very difficult to correctly compute with embedded
1905 escapes. This was the source of all the coloring problems under
1912 escapes. This was the source of all the coloring problems under
1906 Win32. I think that _finally_, Win32 users have a properly
1913 Win32. I think that _finally_, Win32 users have a properly
1907 working ipython in all respects. This would never have happened
1914 working ipython in all respects. This would never have happened
1908 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1915 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1909
1916
1910 2005-01-26 *** Released version 0.6.9
1917 2005-01-26 *** Released version 0.6.9
1911
1918
1912 2005-01-25 Fernando Perez <fperez@colorado.edu>
1919 2005-01-25 Fernando Perez <fperez@colorado.edu>
1913
1920
1914 * setup.py: finally, we have a true Windows installer, thanks to
1921 * setup.py: finally, we have a true Windows installer, thanks to
1915 the excellent work of Viktor Ransmayr
1922 the excellent work of Viktor Ransmayr
1916 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1923 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1917 Windows users. The setup routine is quite a bit cleaner thanks to
1924 Windows users. The setup routine is quite a bit cleaner thanks to
1918 this, and the post-install script uses the proper functions to
1925 this, and the post-install script uses the proper functions to
1919 allow a clean de-installation using the standard Windows Control
1926 allow a clean de-installation using the standard Windows Control
1920 Panel.
1927 Panel.
1921
1928
1922 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1929 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1923 environment variable under all OSes (including win32) if
1930 environment variable under all OSes (including win32) if
1924 available. This will give consistency to win32 users who have set
1931 available. This will give consistency to win32 users who have set
1925 this variable for any reason. If os.environ['HOME'] fails, the
1932 this variable for any reason. If os.environ['HOME'] fails, the
1926 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1933 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1927
1934
1928 2005-01-24 Fernando Perez <fperez@colorado.edu>
1935 2005-01-24 Fernando Perez <fperez@colorado.edu>
1929
1936
1930 * IPython/numutils.py (empty_like): add empty_like(), similar to
1937 * IPython/numutils.py (empty_like): add empty_like(), similar to
1931 zeros_like() but taking advantage of the new empty() Numeric routine.
1938 zeros_like() but taking advantage of the new empty() Numeric routine.
1932
1939
1933 2005-01-23 *** Released version 0.6.8
1940 2005-01-23 *** Released version 0.6.8
1934
1941
1935 2005-01-22 Fernando Perez <fperez@colorado.edu>
1942 2005-01-22 Fernando Perez <fperez@colorado.edu>
1936
1943
1937 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1944 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1938 automatic show() calls. After discussing things with JDH, it
1945 automatic show() calls. After discussing things with JDH, it
1939 turns out there are too many corner cases where this can go wrong.
1946 turns out there are too many corner cases where this can go wrong.
1940 It's best not to try to be 'too smart', and simply have ipython
1947 It's best not to try to be 'too smart', and simply have ipython
1941 reproduce as much as possible the default behavior of a normal
1948 reproduce as much as possible the default behavior of a normal
1942 python shell.
1949 python shell.
1943
1950
1944 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1951 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1945 line-splitting regexp and _prefilter() to avoid calling getattr()
1952 line-splitting regexp and _prefilter() to avoid calling getattr()
1946 on assignments. This closes
1953 on assignments. This closes
1947 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1954 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1948 readline uses getattr(), so a simple <TAB> keypress is still
1955 readline uses getattr(), so a simple <TAB> keypress is still
1949 enough to trigger getattr() calls on an object.
1956 enough to trigger getattr() calls on an object.
1950
1957
1951 2005-01-21 Fernando Perez <fperez@colorado.edu>
1958 2005-01-21 Fernando Perez <fperez@colorado.edu>
1952
1959
1953 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1960 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1954 docstring under pylab so it doesn't mask the original.
1961 docstring under pylab so it doesn't mask the original.
1955
1962
1956 2005-01-21 *** Released version 0.6.7
1963 2005-01-21 *** Released version 0.6.7
1957
1964
1958 2005-01-21 Fernando Perez <fperez@colorado.edu>
1965 2005-01-21 Fernando Perez <fperez@colorado.edu>
1959
1966
1960 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1967 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1961 signal handling for win32 users in multithreaded mode.
1968 signal handling for win32 users in multithreaded mode.
1962
1969
1963 2005-01-17 Fernando Perez <fperez@colorado.edu>
1970 2005-01-17 Fernando Perez <fperez@colorado.edu>
1964
1971
1965 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1972 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1966 instances with no __init__. After a crash report by Norbert Nemec
1973 instances with no __init__. After a crash report by Norbert Nemec
1967 <Norbert-AT-nemec-online.de>.
1974 <Norbert-AT-nemec-online.de>.
1968
1975
1969 2005-01-14 Fernando Perez <fperez@colorado.edu>
1976 2005-01-14 Fernando Perez <fperez@colorado.edu>
1970
1977
1971 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1978 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1972 names for verbose exceptions, when multiple dotted names and the
1979 names for verbose exceptions, when multiple dotted names and the
1973 'parent' object were present on the same line.
1980 'parent' object were present on the same line.
1974
1981
1975 2005-01-11 Fernando Perez <fperez@colorado.edu>
1982 2005-01-11 Fernando Perez <fperez@colorado.edu>
1976
1983
1977 * IPython/genutils.py (flag_calls): new utility to trap and flag
1984 * IPython/genutils.py (flag_calls): new utility to trap and flag
1978 calls in functions. I need it to clean up matplotlib support.
1985 calls in functions. I need it to clean up matplotlib support.
1979 Also removed some deprecated code in genutils.
1986 Also removed some deprecated code in genutils.
1980
1987
1981 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1988 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1982 that matplotlib scripts called with %run, which don't call show()
1989 that matplotlib scripts called with %run, which don't call show()
1983 themselves, still have their plotting windows open.
1990 themselves, still have their plotting windows open.
1984
1991
1985 2005-01-05 Fernando Perez <fperez@colorado.edu>
1992 2005-01-05 Fernando Perez <fperez@colorado.edu>
1986
1993
1987 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1994 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1988 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1995 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1989
1996
1990 2004-12-19 Fernando Perez <fperez@colorado.edu>
1997 2004-12-19 Fernando Perez <fperez@colorado.edu>
1991
1998
1992 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1999 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1993 parent_runcode, which was an eyesore. The same result can be
2000 parent_runcode, which was an eyesore. The same result can be
1994 obtained with Python's regular superclass mechanisms.
2001 obtained with Python's regular superclass mechanisms.
1995
2002
1996 2004-12-17 Fernando Perez <fperez@colorado.edu>
2003 2004-12-17 Fernando Perez <fperez@colorado.edu>
1997
2004
1998 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2005 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1999 reported by Prabhu.
2006 reported by Prabhu.
2000 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2007 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2001 sys.stderr) instead of explicitly calling sys.stderr. This helps
2008 sys.stderr) instead of explicitly calling sys.stderr. This helps
2002 maintain our I/O abstractions clean, for future GUI embeddings.
2009 maintain our I/O abstractions clean, for future GUI embeddings.
2003
2010
2004 * IPython/genutils.py (info): added new utility for sys.stderr
2011 * IPython/genutils.py (info): added new utility for sys.stderr
2005 unified info message handling (thin wrapper around warn()).
2012 unified info message handling (thin wrapper around warn()).
2006
2013
2007 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2014 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2008 composite (dotted) names on verbose exceptions.
2015 composite (dotted) names on verbose exceptions.
2009 (VerboseTB.nullrepr): harden against another kind of errors which
2016 (VerboseTB.nullrepr): harden against another kind of errors which
2010 Python's inspect module can trigger, and which were crashing
2017 Python's inspect module can trigger, and which were crashing
2011 IPython. Thanks to a report by Marco Lombardi
2018 IPython. Thanks to a report by Marco Lombardi
2012 <mlombard-AT-ma010192.hq.eso.org>.
2019 <mlombard-AT-ma010192.hq.eso.org>.
2013
2020
2014 2004-12-13 *** Released version 0.6.6
2021 2004-12-13 *** Released version 0.6.6
2015
2022
2016 2004-12-12 Fernando Perez <fperez@colorado.edu>
2023 2004-12-12 Fernando Perez <fperez@colorado.edu>
2017
2024
2018 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2025 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2019 generated by pygtk upon initialization if it was built without
2026 generated by pygtk upon initialization if it was built without
2020 threads (for matplotlib users). After a crash reported by
2027 threads (for matplotlib users). After a crash reported by
2021 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2028 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2022
2029
2023 * IPython/ipmaker.py (make_IPython): fix small bug in the
2030 * IPython/ipmaker.py (make_IPython): fix small bug in the
2024 import_some parameter for multiple imports.
2031 import_some parameter for multiple imports.
2025
2032
2026 * IPython/iplib.py (ipmagic): simplified the interface of
2033 * IPython/iplib.py (ipmagic): simplified the interface of
2027 ipmagic() to take a single string argument, just as it would be
2034 ipmagic() to take a single string argument, just as it would be
2028 typed at the IPython cmd line.
2035 typed at the IPython cmd line.
2029 (ipalias): Added new ipalias() with an interface identical to
2036 (ipalias): Added new ipalias() with an interface identical to
2030 ipmagic(). This completes exposing a pure python interface to the
2037 ipmagic(). This completes exposing a pure python interface to the
2031 alias and magic system, which can be used in loops or more complex
2038 alias and magic system, which can be used in loops or more complex
2032 code where IPython's automatic line mangling is not active.
2039 code where IPython's automatic line mangling is not active.
2033
2040
2034 * IPython/genutils.py (timing): changed interface of timing to
2041 * IPython/genutils.py (timing): changed interface of timing to
2035 simply run code once, which is the most common case. timings()
2042 simply run code once, which is the most common case. timings()
2036 remains unchanged, for the cases where you want multiple runs.
2043 remains unchanged, for the cases where you want multiple runs.
2037
2044
2038 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2045 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2039 bug where Python2.2 crashes with exec'ing code which does not end
2046 bug where Python2.2 crashes with exec'ing code which does not end
2040 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2047 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2041 before.
2048 before.
2042
2049
2043 2004-12-10 Fernando Perez <fperez@colorado.edu>
2050 2004-12-10 Fernando Perez <fperez@colorado.edu>
2044
2051
2045 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2052 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2046 -t to -T, to accomodate the new -t flag in %run (the %run and
2053 -t to -T, to accomodate the new -t flag in %run (the %run and
2047 %prun options are kind of intermixed, and it's not easy to change
2054 %prun options are kind of intermixed, and it's not easy to change
2048 this with the limitations of python's getopt).
2055 this with the limitations of python's getopt).
2049
2056
2050 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2057 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2051 the execution of scripts. It's not as fine-tuned as timeit.py,
2058 the execution of scripts. It's not as fine-tuned as timeit.py,
2052 but it works from inside ipython (and under 2.2, which lacks
2059 but it works from inside ipython (and under 2.2, which lacks
2053 timeit.py). Optionally a number of runs > 1 can be given for
2060 timeit.py). Optionally a number of runs > 1 can be given for
2054 timing very short-running code.
2061 timing very short-running code.
2055
2062
2056 * IPython/genutils.py (uniq_stable): new routine which returns a
2063 * IPython/genutils.py (uniq_stable): new routine which returns a
2057 list of unique elements in any iterable, but in stable order of
2064 list of unique elements in any iterable, but in stable order of
2058 appearance. I needed this for the ultraTB fixes, and it's a handy
2065 appearance. I needed this for the ultraTB fixes, and it's a handy
2059 utility.
2066 utility.
2060
2067
2061 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2068 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2062 dotted names in Verbose exceptions. This had been broken since
2069 dotted names in Verbose exceptions. This had been broken since
2063 the very start, now x.y will properly be printed in a Verbose
2070 the very start, now x.y will properly be printed in a Verbose
2064 traceback, instead of x being shown and y appearing always as an
2071 traceback, instead of x being shown and y appearing always as an
2065 'undefined global'. Getting this to work was a bit tricky,
2072 'undefined global'. Getting this to work was a bit tricky,
2066 because by default python tokenizers are stateless. Saved by
2073 because by default python tokenizers are stateless. Saved by
2067 python's ability to easily add a bit of state to an arbitrary
2074 python's ability to easily add a bit of state to an arbitrary
2068 function (without needing to build a full-blown callable object).
2075 function (without needing to build a full-blown callable object).
2069
2076
2070 Also big cleanup of this code, which had horrendous runtime
2077 Also big cleanup of this code, which had horrendous runtime
2071 lookups of zillions of attributes for colorization. Moved all
2078 lookups of zillions of attributes for colorization. Moved all
2072 this code into a few templates, which make it cleaner and quicker.
2079 this code into a few templates, which make it cleaner and quicker.
2073
2080
2074 Printout quality was also improved for Verbose exceptions: one
2081 Printout quality was also improved for Verbose exceptions: one
2075 variable per line, and memory addresses are printed (this can be
2082 variable per line, and memory addresses are printed (this can be
2076 quite handy in nasty debugging situations, which is what Verbose
2083 quite handy in nasty debugging situations, which is what Verbose
2077 is for).
2084 is for).
2078
2085
2079 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2086 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2080 the command line as scripts to be loaded by embedded instances.
2087 the command line as scripts to be loaded by embedded instances.
2081 Doing so has the potential for an infinite recursion if there are
2088 Doing so has the potential for an infinite recursion if there are
2082 exceptions thrown in the process. This fixes a strange crash
2089 exceptions thrown in the process. This fixes a strange crash
2083 reported by Philippe MULLER <muller-AT-irit.fr>.
2090 reported by Philippe MULLER <muller-AT-irit.fr>.
2084
2091
2085 2004-12-09 Fernando Perez <fperez@colorado.edu>
2092 2004-12-09 Fernando Perez <fperez@colorado.edu>
2086
2093
2087 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2094 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2088 to reflect new names in matplotlib, which now expose the
2095 to reflect new names in matplotlib, which now expose the
2089 matlab-compatible interface via a pylab module instead of the
2096 matlab-compatible interface via a pylab module instead of the
2090 'matlab' name. The new code is backwards compatible, so users of
2097 'matlab' name. The new code is backwards compatible, so users of
2091 all matplotlib versions are OK. Patch by J. Hunter.
2098 all matplotlib versions are OK. Patch by J. Hunter.
2092
2099
2093 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2100 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2094 of __init__ docstrings for instances (class docstrings are already
2101 of __init__ docstrings for instances (class docstrings are already
2095 automatically printed). Instances with customized docstrings
2102 automatically printed). Instances with customized docstrings
2096 (indep. of the class) are also recognized and all 3 separate
2103 (indep. of the class) are also recognized and all 3 separate
2097 docstrings are printed (instance, class, constructor). After some
2104 docstrings are printed (instance, class, constructor). After some
2098 comments/suggestions by J. Hunter.
2105 comments/suggestions by J. Hunter.
2099
2106
2100 2004-12-05 Fernando Perez <fperez@colorado.edu>
2107 2004-12-05 Fernando Perez <fperez@colorado.edu>
2101
2108
2102 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2109 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2103 warnings when tab-completion fails and triggers an exception.
2110 warnings when tab-completion fails and triggers an exception.
2104
2111
2105 2004-12-03 Fernando Perez <fperez@colorado.edu>
2112 2004-12-03 Fernando Perez <fperez@colorado.edu>
2106
2113
2107 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2114 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2108 be triggered when using 'run -p'. An incorrect option flag was
2115 be triggered when using 'run -p'. An incorrect option flag was
2109 being set ('d' instead of 'D').
2116 being set ('d' instead of 'D').
2110 (manpage): fix missing escaped \- sign.
2117 (manpage): fix missing escaped \- sign.
2111
2118
2112 2004-11-30 *** Released version 0.6.5
2119 2004-11-30 *** Released version 0.6.5
2113
2120
2114 2004-11-30 Fernando Perez <fperez@colorado.edu>
2121 2004-11-30 Fernando Perez <fperez@colorado.edu>
2115
2122
2116 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2123 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2117 setting with -d option.
2124 setting with -d option.
2118
2125
2119 * setup.py (docfiles): Fix problem where the doc glob I was using
2126 * setup.py (docfiles): Fix problem where the doc glob I was using
2120 was COMPLETELY BROKEN. It was giving the right files by pure
2127 was COMPLETELY BROKEN. It was giving the right files by pure
2121 accident, but failed once I tried to include ipython.el. Note:
2128 accident, but failed once I tried to include ipython.el. Note:
2122 glob() does NOT allow you to do exclusion on multiple endings!
2129 glob() does NOT allow you to do exclusion on multiple endings!
2123
2130
2124 2004-11-29 Fernando Perez <fperez@colorado.edu>
2131 2004-11-29 Fernando Perez <fperez@colorado.edu>
2125
2132
2126 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2133 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2127 the manpage as the source. Better formatting & consistency.
2134 the manpage as the source. Better formatting & consistency.
2128
2135
2129 * IPython/Magic.py (magic_run): Added new -d option, to run
2136 * IPython/Magic.py (magic_run): Added new -d option, to run
2130 scripts under the control of the python pdb debugger. Note that
2137 scripts under the control of the python pdb debugger. Note that
2131 this required changing the %prun option -d to -D, to avoid a clash
2138 this required changing the %prun option -d to -D, to avoid a clash
2132 (since %run must pass options to %prun, and getopt is too dumb to
2139 (since %run must pass options to %prun, and getopt is too dumb to
2133 handle options with string values with embedded spaces). Thanks
2140 handle options with string values with embedded spaces). Thanks
2134 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2141 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2135 (magic_who_ls): added type matching to %who and %whos, so that one
2142 (magic_who_ls): added type matching to %who and %whos, so that one
2136 can filter their output to only include variables of certain
2143 can filter their output to only include variables of certain
2137 types. Another suggestion by Matthew.
2144 types. Another suggestion by Matthew.
2138 (magic_whos): Added memory summaries in kb and Mb for arrays.
2145 (magic_whos): Added memory summaries in kb and Mb for arrays.
2139 (magic_who): Improve formatting (break lines every 9 vars).
2146 (magic_who): Improve formatting (break lines every 9 vars).
2140
2147
2141 2004-11-28 Fernando Perez <fperez@colorado.edu>
2148 2004-11-28 Fernando Perez <fperez@colorado.edu>
2142
2149
2143 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2150 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2144 cache when empty lines were present.
2151 cache when empty lines were present.
2145
2152
2146 2004-11-24 Fernando Perez <fperez@colorado.edu>
2153 2004-11-24 Fernando Perez <fperez@colorado.edu>
2147
2154
2148 * IPython/usage.py (__doc__): document the re-activated threading
2155 * IPython/usage.py (__doc__): document the re-activated threading
2149 options for WX and GTK.
2156 options for WX and GTK.
2150
2157
2151 2004-11-23 Fernando Perez <fperez@colorado.edu>
2158 2004-11-23 Fernando Perez <fperez@colorado.edu>
2152
2159
2153 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2160 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2154 the -wthread and -gthread options, along with a new -tk one to try
2161 the -wthread and -gthread options, along with a new -tk one to try
2155 and coordinate Tk threading with wx/gtk. The tk support is very
2162 and coordinate Tk threading with wx/gtk. The tk support is very
2156 platform dependent, since it seems to require Tcl and Tk to be
2163 platform dependent, since it seems to require Tcl and Tk to be
2157 built with threads (Fedora1/2 appears NOT to have it, but in
2164 built with threads (Fedora1/2 appears NOT to have it, but in
2158 Prabhu's Debian boxes it works OK). But even with some Tk
2165 Prabhu's Debian boxes it works OK). But even with some Tk
2159 limitations, this is a great improvement.
2166 limitations, this is a great improvement.
2160
2167
2161 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2168 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2162 info in user prompts. Patch by Prabhu.
2169 info in user prompts. Patch by Prabhu.
2163
2170
2164 2004-11-18 Fernando Perez <fperez@colorado.edu>
2171 2004-11-18 Fernando Perez <fperez@colorado.edu>
2165
2172
2166 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2173 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2167 EOFErrors and bail, to avoid infinite loops if a non-terminating
2174 EOFErrors and bail, to avoid infinite loops if a non-terminating
2168 file is fed into ipython. Patch submitted in issue 19 by user,
2175 file is fed into ipython. Patch submitted in issue 19 by user,
2169 many thanks.
2176 many thanks.
2170
2177
2171 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2178 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2172 autoquote/parens in continuation prompts, which can cause lots of
2179 autoquote/parens in continuation prompts, which can cause lots of
2173 problems. Closes roundup issue 20.
2180 problems. Closes roundup issue 20.
2174
2181
2175 2004-11-17 Fernando Perez <fperez@colorado.edu>
2182 2004-11-17 Fernando Perez <fperez@colorado.edu>
2176
2183
2177 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2184 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2178 reported as debian bug #280505. I'm not sure my local changelog
2185 reported as debian bug #280505. I'm not sure my local changelog
2179 entry has the proper debian format (Jack?).
2186 entry has the proper debian format (Jack?).
2180
2187
2181 2004-11-08 *** Released version 0.6.4
2188 2004-11-08 *** Released version 0.6.4
2182
2189
2183 2004-11-08 Fernando Perez <fperez@colorado.edu>
2190 2004-11-08 Fernando Perez <fperez@colorado.edu>
2184
2191
2185 * IPython/iplib.py (init_readline): Fix exit message for Windows
2192 * IPython/iplib.py (init_readline): Fix exit message for Windows
2186 when readline is active. Thanks to a report by Eric Jones
2193 when readline is active. Thanks to a report by Eric Jones
2187 <eric-AT-enthought.com>.
2194 <eric-AT-enthought.com>.
2188
2195
2189 2004-11-07 Fernando Perez <fperez@colorado.edu>
2196 2004-11-07 Fernando Perez <fperez@colorado.edu>
2190
2197
2191 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2198 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2192 sometimes seen by win2k/cygwin users.
2199 sometimes seen by win2k/cygwin users.
2193
2200
2194 2004-11-06 Fernando Perez <fperez@colorado.edu>
2201 2004-11-06 Fernando Perez <fperez@colorado.edu>
2195
2202
2196 * IPython/iplib.py (interact): Change the handling of %Exit from
2203 * IPython/iplib.py (interact): Change the handling of %Exit from
2197 trying to propagate a SystemExit to an internal ipython flag.
2204 trying to propagate a SystemExit to an internal ipython flag.
2198 This is less elegant than using Python's exception mechanism, but
2205 This is less elegant than using Python's exception mechanism, but
2199 I can't get that to work reliably with threads, so under -pylab
2206 I can't get that to work reliably with threads, so under -pylab
2200 %Exit was hanging IPython. Cross-thread exception handling is
2207 %Exit was hanging IPython. Cross-thread exception handling is
2201 really a bitch. Thaks to a bug report by Stephen Walton
2208 really a bitch. Thaks to a bug report by Stephen Walton
2202 <stephen.walton-AT-csun.edu>.
2209 <stephen.walton-AT-csun.edu>.
2203
2210
2204 2004-11-04 Fernando Perez <fperez@colorado.edu>
2211 2004-11-04 Fernando Perez <fperez@colorado.edu>
2205
2212
2206 * IPython/iplib.py (raw_input_original): store a pointer to the
2213 * IPython/iplib.py (raw_input_original): store a pointer to the
2207 true raw_input to harden against code which can modify it
2214 true raw_input to harden against code which can modify it
2208 (wx.py.PyShell does this and would otherwise crash ipython).
2215 (wx.py.PyShell does this and would otherwise crash ipython).
2209 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2216 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2210
2217
2211 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2218 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2212 Ctrl-C problem, which does not mess up the input line.
2219 Ctrl-C problem, which does not mess up the input line.
2213
2220
2214 2004-11-03 Fernando Perez <fperez@colorado.edu>
2221 2004-11-03 Fernando Perez <fperez@colorado.edu>
2215
2222
2216 * IPython/Release.py: Changed licensing to BSD, in all files.
2223 * IPython/Release.py: Changed licensing to BSD, in all files.
2217 (name): lowercase name for tarball/RPM release.
2224 (name): lowercase name for tarball/RPM release.
2218
2225
2219 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2226 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2220 use throughout ipython.
2227 use throughout ipython.
2221
2228
2222 * IPython/Magic.py (Magic._ofind): Switch to using the new
2229 * IPython/Magic.py (Magic._ofind): Switch to using the new
2223 OInspect.getdoc() function.
2230 OInspect.getdoc() function.
2224
2231
2225 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2232 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2226 of the line currently being canceled via Ctrl-C. It's extremely
2233 of the line currently being canceled via Ctrl-C. It's extremely
2227 ugly, but I don't know how to do it better (the problem is one of
2234 ugly, but I don't know how to do it better (the problem is one of
2228 handling cross-thread exceptions).
2235 handling cross-thread exceptions).
2229
2236
2230 2004-10-28 Fernando Perez <fperez@colorado.edu>
2237 2004-10-28 Fernando Perez <fperez@colorado.edu>
2231
2238
2232 * IPython/Shell.py (signal_handler): add signal handlers to trap
2239 * IPython/Shell.py (signal_handler): add signal handlers to trap
2233 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2240 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2234 report by Francesc Alted.
2241 report by Francesc Alted.
2235
2242
2236 2004-10-21 Fernando Perez <fperez@colorado.edu>
2243 2004-10-21 Fernando Perez <fperez@colorado.edu>
2237
2244
2238 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2245 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2239 to % for pysh syntax extensions.
2246 to % for pysh syntax extensions.
2240
2247
2241 2004-10-09 Fernando Perez <fperez@colorado.edu>
2248 2004-10-09 Fernando Perez <fperez@colorado.edu>
2242
2249
2243 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2250 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2244 arrays to print a more useful summary, without calling str(arr).
2251 arrays to print a more useful summary, without calling str(arr).
2245 This avoids the problem of extremely lengthy computations which
2252 This avoids the problem of extremely lengthy computations which
2246 occur if arr is large, and appear to the user as a system lockup
2253 occur if arr is large, and appear to the user as a system lockup
2247 with 100% cpu activity. After a suggestion by Kristian Sandberg
2254 with 100% cpu activity. After a suggestion by Kristian Sandberg
2248 <Kristian.Sandberg@colorado.edu>.
2255 <Kristian.Sandberg@colorado.edu>.
2249 (Magic.__init__): fix bug in global magic escapes not being
2256 (Magic.__init__): fix bug in global magic escapes not being
2250 correctly set.
2257 correctly set.
2251
2258
2252 2004-10-08 Fernando Perez <fperez@colorado.edu>
2259 2004-10-08 Fernando Perez <fperez@colorado.edu>
2253
2260
2254 * IPython/Magic.py (__license__): change to absolute imports of
2261 * IPython/Magic.py (__license__): change to absolute imports of
2255 ipython's own internal packages, to start adapting to the absolute
2262 ipython's own internal packages, to start adapting to the absolute
2256 import requirement of PEP-328.
2263 import requirement of PEP-328.
2257
2264
2258 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2265 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2259 files, and standardize author/license marks through the Release
2266 files, and standardize author/license marks through the Release
2260 module instead of having per/file stuff (except for files with
2267 module instead of having per/file stuff (except for files with
2261 particular licenses, like the MIT/PSF-licensed codes).
2268 particular licenses, like the MIT/PSF-licensed codes).
2262
2269
2263 * IPython/Debugger.py: remove dead code for python 2.1
2270 * IPython/Debugger.py: remove dead code for python 2.1
2264
2271
2265 2004-10-04 Fernando Perez <fperez@colorado.edu>
2272 2004-10-04 Fernando Perez <fperez@colorado.edu>
2266
2273
2267 * IPython/iplib.py (ipmagic): New function for accessing magics
2274 * IPython/iplib.py (ipmagic): New function for accessing magics
2268 via a normal python function call.
2275 via a normal python function call.
2269
2276
2270 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2277 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2271 from '@' to '%', to accomodate the new @decorator syntax of python
2278 from '@' to '%', to accomodate the new @decorator syntax of python
2272 2.4.
2279 2.4.
2273
2280
2274 2004-09-29 Fernando Perez <fperez@colorado.edu>
2281 2004-09-29 Fernando Perez <fperez@colorado.edu>
2275
2282
2276 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2283 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2277 matplotlib.use to prevent running scripts which try to switch
2284 matplotlib.use to prevent running scripts which try to switch
2278 interactive backends from within ipython. This will just crash
2285 interactive backends from within ipython. This will just crash
2279 the python interpreter, so we can't allow it (but a detailed error
2286 the python interpreter, so we can't allow it (but a detailed error
2280 is given to the user).
2287 is given to the user).
2281
2288
2282 2004-09-28 Fernando Perez <fperez@colorado.edu>
2289 2004-09-28 Fernando Perez <fperez@colorado.edu>
2283
2290
2284 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2291 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2285 matplotlib-related fixes so that using @run with non-matplotlib
2292 matplotlib-related fixes so that using @run with non-matplotlib
2286 scripts doesn't pop up spurious plot windows. This requires
2293 scripts doesn't pop up spurious plot windows. This requires
2287 matplotlib >= 0.63, where I had to make some changes as well.
2294 matplotlib >= 0.63, where I had to make some changes as well.
2288
2295
2289 * IPython/ipmaker.py (make_IPython): update version requirement to
2296 * IPython/ipmaker.py (make_IPython): update version requirement to
2290 python 2.2.
2297 python 2.2.
2291
2298
2292 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2299 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2293 banner arg for embedded customization.
2300 banner arg for embedded customization.
2294
2301
2295 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2302 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2296 explicit uses of __IP as the IPython's instance name. Now things
2303 explicit uses of __IP as the IPython's instance name. Now things
2297 are properly handled via the shell.name value. The actual code
2304 are properly handled via the shell.name value. The actual code
2298 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2305 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2299 is much better than before. I'll clean things completely when the
2306 is much better than before. I'll clean things completely when the
2300 magic stuff gets a real overhaul.
2307 magic stuff gets a real overhaul.
2301
2308
2302 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2309 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2303 minor changes to debian dir.
2310 minor changes to debian dir.
2304
2311
2305 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2312 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2306 pointer to the shell itself in the interactive namespace even when
2313 pointer to the shell itself in the interactive namespace even when
2307 a user-supplied dict is provided. This is needed for embedding
2314 a user-supplied dict is provided. This is needed for embedding
2308 purposes (found by tests with Michel Sanner).
2315 purposes (found by tests with Michel Sanner).
2309
2316
2310 2004-09-27 Fernando Perez <fperez@colorado.edu>
2317 2004-09-27 Fernando Perez <fperez@colorado.edu>
2311
2318
2312 * IPython/UserConfig/ipythonrc: remove []{} from
2319 * IPython/UserConfig/ipythonrc: remove []{} from
2313 readline_remove_delims, so that things like [modname.<TAB> do
2320 readline_remove_delims, so that things like [modname.<TAB> do
2314 proper completion. This disables [].TAB, but that's a less common
2321 proper completion. This disables [].TAB, but that's a less common
2315 case than module names in list comprehensions, for example.
2322 case than module names in list comprehensions, for example.
2316 Thanks to a report by Andrea Riciputi.
2323 Thanks to a report by Andrea Riciputi.
2317
2324
2318 2004-09-09 Fernando Perez <fperez@colorado.edu>
2325 2004-09-09 Fernando Perez <fperez@colorado.edu>
2319
2326
2320 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2327 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2321 blocking problems in win32 and osx. Fix by John.
2328 blocking problems in win32 and osx. Fix by John.
2322
2329
2323 2004-09-08 Fernando Perez <fperez@colorado.edu>
2330 2004-09-08 Fernando Perez <fperez@colorado.edu>
2324
2331
2325 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2332 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2326 for Win32 and OSX. Fix by John Hunter.
2333 for Win32 and OSX. Fix by John Hunter.
2327
2334
2328 2004-08-30 *** Released version 0.6.3
2335 2004-08-30 *** Released version 0.6.3
2329
2336
2330 2004-08-30 Fernando Perez <fperez@colorado.edu>
2337 2004-08-30 Fernando Perez <fperez@colorado.edu>
2331
2338
2332 * setup.py (isfile): Add manpages to list of dependent files to be
2339 * setup.py (isfile): Add manpages to list of dependent files to be
2333 updated.
2340 updated.
2334
2341
2335 2004-08-27 Fernando Perez <fperez@colorado.edu>
2342 2004-08-27 Fernando Perez <fperez@colorado.edu>
2336
2343
2337 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2344 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2338 for now. They don't really work with standalone WX/GTK code
2345 for now. They don't really work with standalone WX/GTK code
2339 (though matplotlib IS working fine with both of those backends).
2346 (though matplotlib IS working fine with both of those backends).
2340 This will neeed much more testing. I disabled most things with
2347 This will neeed much more testing. I disabled most things with
2341 comments, so turning it back on later should be pretty easy.
2348 comments, so turning it back on later should be pretty easy.
2342
2349
2343 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2350 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2344 autocalling of expressions like r'foo', by modifying the line
2351 autocalling of expressions like r'foo', by modifying the line
2345 split regexp. Closes
2352 split regexp. Closes
2346 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2353 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2347 Riley <ipythonbugs-AT-sabi.net>.
2354 Riley <ipythonbugs-AT-sabi.net>.
2348 (InteractiveShell.mainloop): honor --nobanner with banner
2355 (InteractiveShell.mainloop): honor --nobanner with banner
2349 extensions.
2356 extensions.
2350
2357
2351 * IPython/Shell.py: Significant refactoring of all classes, so
2358 * IPython/Shell.py: Significant refactoring of all classes, so
2352 that we can really support ALL matplotlib backends and threading
2359 that we can really support ALL matplotlib backends and threading
2353 models (John spotted a bug with Tk which required this). Now we
2360 models (John spotted a bug with Tk which required this). Now we
2354 should support single-threaded, WX-threads and GTK-threads, both
2361 should support single-threaded, WX-threads and GTK-threads, both
2355 for generic code and for matplotlib.
2362 for generic code and for matplotlib.
2356
2363
2357 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2364 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2358 -pylab, to simplify things for users. Will also remove the pylab
2365 -pylab, to simplify things for users. Will also remove the pylab
2359 profile, since now all of matplotlib configuration is directly
2366 profile, since now all of matplotlib configuration is directly
2360 handled here. This also reduces startup time.
2367 handled here. This also reduces startup time.
2361
2368
2362 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2369 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2363 shell wasn't being correctly called. Also in IPShellWX.
2370 shell wasn't being correctly called. Also in IPShellWX.
2364
2371
2365 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2372 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2366 fine-tune banner.
2373 fine-tune banner.
2367
2374
2368 * IPython/numutils.py (spike): Deprecate these spike functions,
2375 * IPython/numutils.py (spike): Deprecate these spike functions,
2369 delete (long deprecated) gnuplot_exec handler.
2376 delete (long deprecated) gnuplot_exec handler.
2370
2377
2371 2004-08-26 Fernando Perez <fperez@colorado.edu>
2378 2004-08-26 Fernando Perez <fperez@colorado.edu>
2372
2379
2373 * ipython.1: Update for threading options, plus some others which
2380 * ipython.1: Update for threading options, plus some others which
2374 were missing.
2381 were missing.
2375
2382
2376 * IPython/ipmaker.py (__call__): Added -wthread option for
2383 * IPython/ipmaker.py (__call__): Added -wthread option for
2377 wxpython thread handling. Make sure threading options are only
2384 wxpython thread handling. Make sure threading options are only
2378 valid at the command line.
2385 valid at the command line.
2379
2386
2380 * scripts/ipython: moved shell selection into a factory function
2387 * scripts/ipython: moved shell selection into a factory function
2381 in Shell.py, to keep the starter script to a minimum.
2388 in Shell.py, to keep the starter script to a minimum.
2382
2389
2383 2004-08-25 Fernando Perez <fperez@colorado.edu>
2390 2004-08-25 Fernando Perez <fperez@colorado.edu>
2384
2391
2385 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2392 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2386 John. Along with some recent changes he made to matplotlib, the
2393 John. Along with some recent changes he made to matplotlib, the
2387 next versions of both systems should work very well together.
2394 next versions of both systems should work very well together.
2388
2395
2389 2004-08-24 Fernando Perez <fperez@colorado.edu>
2396 2004-08-24 Fernando Perez <fperez@colorado.edu>
2390
2397
2391 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2398 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2392 tried to switch the profiling to using hotshot, but I'm getting
2399 tried to switch the profiling to using hotshot, but I'm getting
2393 strange errors from prof.runctx() there. I may be misreading the
2400 strange errors from prof.runctx() there. I may be misreading the
2394 docs, but it looks weird. For now the profiling code will
2401 docs, but it looks weird. For now the profiling code will
2395 continue to use the standard profiler.
2402 continue to use the standard profiler.
2396
2403
2397 2004-08-23 Fernando Perez <fperez@colorado.edu>
2404 2004-08-23 Fernando Perez <fperez@colorado.edu>
2398
2405
2399 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2406 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2400 threaded shell, by John Hunter. It's not quite ready yet, but
2407 threaded shell, by John Hunter. It's not quite ready yet, but
2401 close.
2408 close.
2402
2409
2403 2004-08-22 Fernando Perez <fperez@colorado.edu>
2410 2004-08-22 Fernando Perez <fperez@colorado.edu>
2404
2411
2405 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2412 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2406 in Magic and ultraTB.
2413 in Magic and ultraTB.
2407
2414
2408 * ipython.1: document threading options in manpage.
2415 * ipython.1: document threading options in manpage.
2409
2416
2410 * scripts/ipython: Changed name of -thread option to -gthread,
2417 * scripts/ipython: Changed name of -thread option to -gthread,
2411 since this is GTK specific. I want to leave the door open for a
2418 since this is GTK specific. I want to leave the door open for a
2412 -wthread option for WX, which will most likely be necessary. This
2419 -wthread option for WX, which will most likely be necessary. This
2413 change affects usage and ipmaker as well.
2420 change affects usage and ipmaker as well.
2414
2421
2415 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2422 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2416 handle the matplotlib shell issues. Code by John Hunter
2423 handle the matplotlib shell issues. Code by John Hunter
2417 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2424 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2418 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2425 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2419 broken (and disabled for end users) for now, but it puts the
2426 broken (and disabled for end users) for now, but it puts the
2420 infrastructure in place.
2427 infrastructure in place.
2421
2428
2422 2004-08-21 Fernando Perez <fperez@colorado.edu>
2429 2004-08-21 Fernando Perez <fperez@colorado.edu>
2423
2430
2424 * ipythonrc-pylab: Add matplotlib support.
2431 * ipythonrc-pylab: Add matplotlib support.
2425
2432
2426 * matplotlib_config.py: new files for matplotlib support, part of
2433 * matplotlib_config.py: new files for matplotlib support, part of
2427 the pylab profile.
2434 the pylab profile.
2428
2435
2429 * IPython/usage.py (__doc__): documented the threading options.
2436 * IPython/usage.py (__doc__): documented the threading options.
2430
2437
2431 2004-08-20 Fernando Perez <fperez@colorado.edu>
2438 2004-08-20 Fernando Perez <fperez@colorado.edu>
2432
2439
2433 * ipython: Modified the main calling routine to handle the -thread
2440 * ipython: Modified the main calling routine to handle the -thread
2434 and -mpthread options. This needs to be done as a top-level hack,
2441 and -mpthread options. This needs to be done as a top-level hack,
2435 because it determines which class to instantiate for IPython
2442 because it determines which class to instantiate for IPython
2436 itself.
2443 itself.
2437
2444
2438 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2445 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2439 classes to support multithreaded GTK operation without blocking,
2446 classes to support multithreaded GTK operation without blocking,
2440 and matplotlib with all backends. This is a lot of still very
2447 and matplotlib with all backends. This is a lot of still very
2441 experimental code, and threads are tricky. So it may still have a
2448 experimental code, and threads are tricky. So it may still have a
2442 few rough edges... This code owes a lot to
2449 few rough edges... This code owes a lot to
2443 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2450 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2444 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2451 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2445 to John Hunter for all the matplotlib work.
2452 to John Hunter for all the matplotlib work.
2446
2453
2447 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2454 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2448 options for gtk thread and matplotlib support.
2455 options for gtk thread and matplotlib support.
2449
2456
2450 2004-08-16 Fernando Perez <fperez@colorado.edu>
2457 2004-08-16 Fernando Perez <fperez@colorado.edu>
2451
2458
2452 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2459 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2453 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2460 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2454 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2461 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2455
2462
2456 2004-08-11 Fernando Perez <fperez@colorado.edu>
2463 2004-08-11 Fernando Perez <fperez@colorado.edu>
2457
2464
2458 * setup.py (isfile): Fix build so documentation gets updated for
2465 * setup.py (isfile): Fix build so documentation gets updated for
2459 rpms (it was only done for .tgz builds).
2466 rpms (it was only done for .tgz builds).
2460
2467
2461 2004-08-10 Fernando Perez <fperez@colorado.edu>
2468 2004-08-10 Fernando Perez <fperez@colorado.edu>
2462
2469
2463 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2470 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2464
2471
2465 * iplib.py : Silence syntax error exceptions in tab-completion.
2472 * iplib.py : Silence syntax error exceptions in tab-completion.
2466
2473
2467 2004-08-05 Fernando Perez <fperez@colorado.edu>
2474 2004-08-05 Fernando Perez <fperez@colorado.edu>
2468
2475
2469 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2476 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2470 'color off' mark for continuation prompts. This was causing long
2477 'color off' mark for continuation prompts. This was causing long
2471 continuation lines to mis-wrap.
2478 continuation lines to mis-wrap.
2472
2479
2473 2004-08-01 Fernando Perez <fperez@colorado.edu>
2480 2004-08-01 Fernando Perez <fperez@colorado.edu>
2474
2481
2475 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2482 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2476 for building ipython to be a parameter. All this is necessary
2483 for building ipython to be a parameter. All this is necessary
2477 right now to have a multithreaded version, but this insane
2484 right now to have a multithreaded version, but this insane
2478 non-design will be cleaned up soon. For now, it's a hack that
2485 non-design will be cleaned up soon. For now, it's a hack that
2479 works.
2486 works.
2480
2487
2481 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2488 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2482 args in various places. No bugs so far, but it's a dangerous
2489 args in various places. No bugs so far, but it's a dangerous
2483 practice.
2490 practice.
2484
2491
2485 2004-07-31 Fernando Perez <fperez@colorado.edu>
2492 2004-07-31 Fernando Perez <fperez@colorado.edu>
2486
2493
2487 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2494 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2488 fix completion of files with dots in their names under most
2495 fix completion of files with dots in their names under most
2489 profiles (pysh was OK because the completion order is different).
2496 profiles (pysh was OK because the completion order is different).
2490
2497
2491 2004-07-27 Fernando Perez <fperez@colorado.edu>
2498 2004-07-27 Fernando Perez <fperez@colorado.edu>
2492
2499
2493 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2500 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2494 keywords manually, b/c the one in keyword.py was removed in python
2501 keywords manually, b/c the one in keyword.py was removed in python
2495 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2502 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2496 This is NOT a bug under python 2.3 and earlier.
2503 This is NOT a bug under python 2.3 and earlier.
2497
2504
2498 2004-07-26 Fernando Perez <fperez@colorado.edu>
2505 2004-07-26 Fernando Perez <fperez@colorado.edu>
2499
2506
2500 * IPython/ultraTB.py (VerboseTB.text): Add another
2507 * IPython/ultraTB.py (VerboseTB.text): Add another
2501 linecache.checkcache() call to try to prevent inspect.py from
2508 linecache.checkcache() call to try to prevent inspect.py from
2502 crashing under python 2.3. I think this fixes
2509 crashing under python 2.3. I think this fixes
2503 http://www.scipy.net/roundup/ipython/issue17.
2510 http://www.scipy.net/roundup/ipython/issue17.
2504
2511
2505 2004-07-26 *** Released version 0.6.2
2512 2004-07-26 *** Released version 0.6.2
2506
2513
2507 2004-07-26 Fernando Perez <fperez@colorado.edu>
2514 2004-07-26 Fernando Perez <fperez@colorado.edu>
2508
2515
2509 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2516 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2510 fail for any number.
2517 fail for any number.
2511 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2518 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2512 empty bookmarks.
2519 empty bookmarks.
2513
2520
2514 2004-07-26 *** Released version 0.6.1
2521 2004-07-26 *** Released version 0.6.1
2515
2522
2516 2004-07-26 Fernando Perez <fperez@colorado.edu>
2523 2004-07-26 Fernando Perez <fperez@colorado.edu>
2517
2524
2518 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2525 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2519
2526
2520 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2527 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2521 escaping '()[]{}' in filenames.
2528 escaping '()[]{}' in filenames.
2522
2529
2523 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2530 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2524 Python 2.2 users who lack a proper shlex.split.
2531 Python 2.2 users who lack a proper shlex.split.
2525
2532
2526 2004-07-19 Fernando Perez <fperez@colorado.edu>
2533 2004-07-19 Fernando Perez <fperez@colorado.edu>
2527
2534
2528 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2535 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2529 for reading readline's init file. I follow the normal chain:
2536 for reading readline's init file. I follow the normal chain:
2530 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2537 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2531 report by Mike Heeter. This closes
2538 report by Mike Heeter. This closes
2532 http://www.scipy.net/roundup/ipython/issue16.
2539 http://www.scipy.net/roundup/ipython/issue16.
2533
2540
2534 2004-07-18 Fernando Perez <fperez@colorado.edu>
2541 2004-07-18 Fernando Perez <fperez@colorado.edu>
2535
2542
2536 * IPython/iplib.py (__init__): Add better handling of '\' under
2543 * IPython/iplib.py (__init__): Add better handling of '\' under
2537 Win32 for filenames. After a patch by Ville.
2544 Win32 for filenames. After a patch by Ville.
2538
2545
2539 2004-07-17 Fernando Perez <fperez@colorado.edu>
2546 2004-07-17 Fernando Perez <fperez@colorado.edu>
2540
2547
2541 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2548 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2542 autocalling would be triggered for 'foo is bar' if foo is
2549 autocalling would be triggered for 'foo is bar' if foo is
2543 callable. I also cleaned up the autocall detection code to use a
2550 callable. I also cleaned up the autocall detection code to use a
2544 regexp, which is faster. Bug reported by Alexander Schmolck.
2551 regexp, which is faster. Bug reported by Alexander Schmolck.
2545
2552
2546 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2553 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2547 '?' in them would confuse the help system. Reported by Alex
2554 '?' in them would confuse the help system. Reported by Alex
2548 Schmolck.
2555 Schmolck.
2549
2556
2550 2004-07-16 Fernando Perez <fperez@colorado.edu>
2557 2004-07-16 Fernando Perez <fperez@colorado.edu>
2551
2558
2552 * IPython/GnuplotInteractive.py (__all__): added plot2.
2559 * IPython/GnuplotInteractive.py (__all__): added plot2.
2553
2560
2554 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2561 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2555 plotting dictionaries, lists or tuples of 1d arrays.
2562 plotting dictionaries, lists or tuples of 1d arrays.
2556
2563
2557 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2564 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2558 optimizations.
2565 optimizations.
2559
2566
2560 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2567 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2561 the information which was there from Janko's original IPP code:
2568 the information which was there from Janko's original IPP code:
2562
2569
2563 03.05.99 20:53 porto.ifm.uni-kiel.de
2570 03.05.99 20:53 porto.ifm.uni-kiel.de
2564 --Started changelog.
2571 --Started changelog.
2565 --make clear do what it say it does
2572 --make clear do what it say it does
2566 --added pretty output of lines from inputcache
2573 --added pretty output of lines from inputcache
2567 --Made Logger a mixin class, simplifies handling of switches
2574 --Made Logger a mixin class, simplifies handling of switches
2568 --Added own completer class. .string<TAB> expands to last history
2575 --Added own completer class. .string<TAB> expands to last history
2569 line which starts with string. The new expansion is also present
2576 line which starts with string. The new expansion is also present
2570 with Ctrl-r from the readline library. But this shows, who this
2577 with Ctrl-r from the readline library. But this shows, who this
2571 can be done for other cases.
2578 can be done for other cases.
2572 --Added convention that all shell functions should accept a
2579 --Added convention that all shell functions should accept a
2573 parameter_string This opens the door for different behaviour for
2580 parameter_string This opens the door for different behaviour for
2574 each function. @cd is a good example of this.
2581 each function. @cd is a good example of this.
2575
2582
2576 04.05.99 12:12 porto.ifm.uni-kiel.de
2583 04.05.99 12:12 porto.ifm.uni-kiel.de
2577 --added logfile rotation
2584 --added logfile rotation
2578 --added new mainloop method which freezes first the namespace
2585 --added new mainloop method which freezes first the namespace
2579
2586
2580 07.05.99 21:24 porto.ifm.uni-kiel.de
2587 07.05.99 21:24 porto.ifm.uni-kiel.de
2581 --added the docreader classes. Now there is a help system.
2588 --added the docreader classes. Now there is a help system.
2582 -This is only a first try. Currently it's not easy to put new
2589 -This is only a first try. Currently it's not easy to put new
2583 stuff in the indices. But this is the way to go. Info would be
2590 stuff in the indices. But this is the way to go. Info would be
2584 better, but HTML is every where and not everybody has an info
2591 better, but HTML is every where and not everybody has an info
2585 system installed and it's not so easy to change html-docs to info.
2592 system installed and it's not so easy to change html-docs to info.
2586 --added global logfile option
2593 --added global logfile option
2587 --there is now a hook for object inspection method pinfo needs to
2594 --there is now a hook for object inspection method pinfo needs to
2588 be provided for this. Can be reached by two '??'.
2595 be provided for this. Can be reached by two '??'.
2589
2596
2590 08.05.99 20:51 porto.ifm.uni-kiel.de
2597 08.05.99 20:51 porto.ifm.uni-kiel.de
2591 --added a README
2598 --added a README
2592 --bug in rc file. Something has changed so functions in the rc
2599 --bug in rc file. Something has changed so functions in the rc
2593 file need to reference the shell and not self. Not clear if it's a
2600 file need to reference the shell and not self. Not clear if it's a
2594 bug or feature.
2601 bug or feature.
2595 --changed rc file for new behavior
2602 --changed rc file for new behavior
2596
2603
2597 2004-07-15 Fernando Perez <fperez@colorado.edu>
2604 2004-07-15 Fernando Perez <fperez@colorado.edu>
2598
2605
2599 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2606 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2600 cache was falling out of sync in bizarre manners when multi-line
2607 cache was falling out of sync in bizarre manners when multi-line
2601 input was present. Minor optimizations and cleanup.
2608 input was present. Minor optimizations and cleanup.
2602
2609
2603 (Logger): Remove old Changelog info for cleanup. This is the
2610 (Logger): Remove old Changelog info for cleanup. This is the
2604 information which was there from Janko's original code:
2611 information which was there from Janko's original code:
2605
2612
2606 Changes to Logger: - made the default log filename a parameter
2613 Changes to Logger: - made the default log filename a parameter
2607
2614
2608 - put a check for lines beginning with !@? in log(). Needed
2615 - put a check for lines beginning with !@? in log(). Needed
2609 (even if the handlers properly log their lines) for mid-session
2616 (even if the handlers properly log their lines) for mid-session
2610 logging activation to work properly. Without this, lines logged
2617 logging activation to work properly. Without this, lines logged
2611 in mid session, which get read from the cache, would end up
2618 in mid session, which get read from the cache, would end up
2612 'bare' (with !@? in the open) in the log. Now they are caught
2619 'bare' (with !@? in the open) in the log. Now they are caught
2613 and prepended with a #.
2620 and prepended with a #.
2614
2621
2615 * IPython/iplib.py (InteractiveShell.init_readline): added check
2622 * IPython/iplib.py (InteractiveShell.init_readline): added check
2616 in case MagicCompleter fails to be defined, so we don't crash.
2623 in case MagicCompleter fails to be defined, so we don't crash.
2617
2624
2618 2004-07-13 Fernando Perez <fperez@colorado.edu>
2625 2004-07-13 Fernando Perez <fperez@colorado.edu>
2619
2626
2620 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2627 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2621 of EPS if the requested filename ends in '.eps'.
2628 of EPS if the requested filename ends in '.eps'.
2622
2629
2623 2004-07-04 Fernando Perez <fperez@colorado.edu>
2630 2004-07-04 Fernando Perez <fperez@colorado.edu>
2624
2631
2625 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2632 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2626 escaping of quotes when calling the shell.
2633 escaping of quotes when calling the shell.
2627
2634
2628 2004-07-02 Fernando Perez <fperez@colorado.edu>
2635 2004-07-02 Fernando Perez <fperez@colorado.edu>
2629
2636
2630 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2637 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2631 gettext not working because we were clobbering '_'. Fixes
2638 gettext not working because we were clobbering '_'. Fixes
2632 http://www.scipy.net/roundup/ipython/issue6.
2639 http://www.scipy.net/roundup/ipython/issue6.
2633
2640
2634 2004-07-01 Fernando Perez <fperez@colorado.edu>
2641 2004-07-01 Fernando Perez <fperez@colorado.edu>
2635
2642
2636 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2643 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2637 into @cd. Patch by Ville.
2644 into @cd. Patch by Ville.
2638
2645
2639 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2646 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2640 new function to store things after ipmaker runs. Patch by Ville.
2647 new function to store things after ipmaker runs. Patch by Ville.
2641 Eventually this will go away once ipmaker is removed and the class
2648 Eventually this will go away once ipmaker is removed and the class
2642 gets cleaned up, but for now it's ok. Key functionality here is
2649 gets cleaned up, but for now it's ok. Key functionality here is
2643 the addition of the persistent storage mechanism, a dict for
2650 the addition of the persistent storage mechanism, a dict for
2644 keeping data across sessions (for now just bookmarks, but more can
2651 keeping data across sessions (for now just bookmarks, but more can
2645 be implemented later).
2652 be implemented later).
2646
2653
2647 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2654 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2648 persistent across sections. Patch by Ville, I modified it
2655 persistent across sections. Patch by Ville, I modified it
2649 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2656 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2650 added a '-l' option to list all bookmarks.
2657 added a '-l' option to list all bookmarks.
2651
2658
2652 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2659 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2653 center for cleanup. Registered with atexit.register(). I moved
2660 center for cleanup. Registered with atexit.register(). I moved
2654 here the old exit_cleanup(). After a patch by Ville.
2661 here the old exit_cleanup(). After a patch by Ville.
2655
2662
2656 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2663 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2657 characters in the hacked shlex_split for python 2.2.
2664 characters in the hacked shlex_split for python 2.2.
2658
2665
2659 * IPython/iplib.py (file_matches): more fixes to filenames with
2666 * IPython/iplib.py (file_matches): more fixes to filenames with
2660 whitespace in them. It's not perfect, but limitations in python's
2667 whitespace in them. It's not perfect, but limitations in python's
2661 readline make it impossible to go further.
2668 readline make it impossible to go further.
2662
2669
2663 2004-06-29 Fernando Perez <fperez@colorado.edu>
2670 2004-06-29 Fernando Perez <fperez@colorado.edu>
2664
2671
2665 * IPython/iplib.py (file_matches): escape whitespace correctly in
2672 * IPython/iplib.py (file_matches): escape whitespace correctly in
2666 filename completions. Bug reported by Ville.
2673 filename completions. Bug reported by Ville.
2667
2674
2668 2004-06-28 Fernando Perez <fperez@colorado.edu>
2675 2004-06-28 Fernando Perez <fperez@colorado.edu>
2669
2676
2670 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2677 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2671 the history file will be called 'history-PROFNAME' (or just
2678 the history file will be called 'history-PROFNAME' (or just
2672 'history' if no profile is loaded). I was getting annoyed at
2679 'history' if no profile is loaded). I was getting annoyed at
2673 getting my Numerical work history clobbered by pysh sessions.
2680 getting my Numerical work history clobbered by pysh sessions.
2674
2681
2675 * IPython/iplib.py (InteractiveShell.__init__): Internal
2682 * IPython/iplib.py (InteractiveShell.__init__): Internal
2676 getoutputerror() function so that we can honor the system_verbose
2683 getoutputerror() function so that we can honor the system_verbose
2677 flag for _all_ system calls. I also added escaping of #
2684 flag for _all_ system calls. I also added escaping of #
2678 characters here to avoid confusing Itpl.
2685 characters here to avoid confusing Itpl.
2679
2686
2680 * IPython/Magic.py (shlex_split): removed call to shell in
2687 * IPython/Magic.py (shlex_split): removed call to shell in
2681 parse_options and replaced it with shlex.split(). The annoying
2688 parse_options and replaced it with shlex.split(). The annoying
2682 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2689 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2683 to backport it from 2.3, with several frail hacks (the shlex
2690 to backport it from 2.3, with several frail hacks (the shlex
2684 module is rather limited in 2.2). Thanks to a suggestion by Ville
2691 module is rather limited in 2.2). Thanks to a suggestion by Ville
2685 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2692 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2686 problem.
2693 problem.
2687
2694
2688 (Magic.magic_system_verbose): new toggle to print the actual
2695 (Magic.magic_system_verbose): new toggle to print the actual
2689 system calls made by ipython. Mainly for debugging purposes.
2696 system calls made by ipython. Mainly for debugging purposes.
2690
2697
2691 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2698 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2692 doesn't support persistence. Reported (and fix suggested) by
2699 doesn't support persistence. Reported (and fix suggested) by
2693 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2700 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2694
2701
2695 2004-06-26 Fernando Perez <fperez@colorado.edu>
2702 2004-06-26 Fernando Perez <fperez@colorado.edu>
2696
2703
2697 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2704 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2698 continue prompts.
2705 continue prompts.
2699
2706
2700 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2707 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2701 function (basically a big docstring) and a few more things here to
2708 function (basically a big docstring) and a few more things here to
2702 speedup startup. pysh.py is now very lightweight. We want because
2709 speedup startup. pysh.py is now very lightweight. We want because
2703 it gets execfile'd, while InterpreterExec gets imported, so
2710 it gets execfile'd, while InterpreterExec gets imported, so
2704 byte-compilation saves time.
2711 byte-compilation saves time.
2705
2712
2706 2004-06-25 Fernando Perez <fperez@colorado.edu>
2713 2004-06-25 Fernando Perez <fperez@colorado.edu>
2707
2714
2708 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2715 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2709 -NUM', which was recently broken.
2716 -NUM', which was recently broken.
2710
2717
2711 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2718 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2712 in multi-line input (but not !!, which doesn't make sense there).
2719 in multi-line input (but not !!, which doesn't make sense there).
2713
2720
2714 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2721 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2715 It's just too useful, and people can turn it off in the less
2722 It's just too useful, and people can turn it off in the less
2716 common cases where it's a problem.
2723 common cases where it's a problem.
2717
2724
2718 2004-06-24 Fernando Perez <fperez@colorado.edu>
2725 2004-06-24 Fernando Perez <fperez@colorado.edu>
2719
2726
2720 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2727 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2721 special syntaxes (like alias calling) is now allied in multi-line
2728 special syntaxes (like alias calling) is now allied in multi-line
2722 input. This is still _very_ experimental, but it's necessary for
2729 input. This is still _very_ experimental, but it's necessary for
2723 efficient shell usage combining python looping syntax with system
2730 efficient shell usage combining python looping syntax with system
2724 calls. For now it's restricted to aliases, I don't think it
2731 calls. For now it's restricted to aliases, I don't think it
2725 really even makes sense to have this for magics.
2732 really even makes sense to have this for magics.
2726
2733
2727 2004-06-23 Fernando Perez <fperez@colorado.edu>
2734 2004-06-23 Fernando Perez <fperez@colorado.edu>
2728
2735
2729 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2736 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2730 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2737 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2731
2738
2732 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2739 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2733 extensions under Windows (after code sent by Gary Bishop). The
2740 extensions under Windows (after code sent by Gary Bishop). The
2734 extensions considered 'executable' are stored in IPython's rc
2741 extensions considered 'executable' are stored in IPython's rc
2735 structure as win_exec_ext.
2742 structure as win_exec_ext.
2736
2743
2737 * IPython/genutils.py (shell): new function, like system() but
2744 * IPython/genutils.py (shell): new function, like system() but
2738 without return value. Very useful for interactive shell work.
2745 without return value. Very useful for interactive shell work.
2739
2746
2740 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2747 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2741 delete aliases.
2748 delete aliases.
2742
2749
2743 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2750 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2744 sure that the alias table doesn't contain python keywords.
2751 sure that the alias table doesn't contain python keywords.
2745
2752
2746 2004-06-21 Fernando Perez <fperez@colorado.edu>
2753 2004-06-21 Fernando Perez <fperez@colorado.edu>
2747
2754
2748 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2755 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2749 non-existent items are found in $PATH. Reported by Thorsten.
2756 non-existent items are found in $PATH. Reported by Thorsten.
2750
2757
2751 2004-06-20 Fernando Perez <fperez@colorado.edu>
2758 2004-06-20 Fernando Perez <fperez@colorado.edu>
2752
2759
2753 * IPython/iplib.py (complete): modified the completer so that the
2760 * IPython/iplib.py (complete): modified the completer so that the
2754 order of priorities can be easily changed at runtime.
2761 order of priorities can be easily changed at runtime.
2755
2762
2756 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2763 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2757 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2764 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2758
2765
2759 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2766 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2760 expand Python variables prepended with $ in all system calls. The
2767 expand Python variables prepended with $ in all system calls. The
2761 same was done to InteractiveShell.handle_shell_escape. Now all
2768 same was done to InteractiveShell.handle_shell_escape. Now all
2762 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2769 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2763 expansion of python variables and expressions according to the
2770 expansion of python variables and expressions according to the
2764 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2771 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2765
2772
2766 Though PEP-215 has been rejected, a similar (but simpler) one
2773 Though PEP-215 has been rejected, a similar (but simpler) one
2767 seems like it will go into Python 2.4, PEP-292 -
2774 seems like it will go into Python 2.4, PEP-292 -
2768 http://www.python.org/peps/pep-0292.html.
2775 http://www.python.org/peps/pep-0292.html.
2769
2776
2770 I'll keep the full syntax of PEP-215, since IPython has since the
2777 I'll keep the full syntax of PEP-215, since IPython has since the
2771 start used Ka-Ping Yee's reference implementation discussed there
2778 start used Ka-Ping Yee's reference implementation discussed there
2772 (Itpl), and I actually like the powerful semantics it offers.
2779 (Itpl), and I actually like the powerful semantics it offers.
2773
2780
2774 In order to access normal shell variables, the $ has to be escaped
2781 In order to access normal shell variables, the $ has to be escaped
2775 via an extra $. For example:
2782 via an extra $. For example:
2776
2783
2777 In [7]: PATH='a python variable'
2784 In [7]: PATH='a python variable'
2778
2785
2779 In [8]: !echo $PATH
2786 In [8]: !echo $PATH
2780 a python variable
2787 a python variable
2781
2788
2782 In [9]: !echo $$PATH
2789 In [9]: !echo $$PATH
2783 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2790 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2784
2791
2785 (Magic.parse_options): escape $ so the shell doesn't evaluate
2792 (Magic.parse_options): escape $ so the shell doesn't evaluate
2786 things prematurely.
2793 things prematurely.
2787
2794
2788 * IPython/iplib.py (InteractiveShell.call_alias): added the
2795 * IPython/iplib.py (InteractiveShell.call_alias): added the
2789 ability for aliases to expand python variables via $.
2796 ability for aliases to expand python variables via $.
2790
2797
2791 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2798 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2792 system, now there's a @rehash/@rehashx pair of magics. These work
2799 system, now there's a @rehash/@rehashx pair of magics. These work
2793 like the csh rehash command, and can be invoked at any time. They
2800 like the csh rehash command, and can be invoked at any time. They
2794 build a table of aliases to everything in the user's $PATH
2801 build a table of aliases to everything in the user's $PATH
2795 (@rehash uses everything, @rehashx is slower but only adds
2802 (@rehash uses everything, @rehashx is slower but only adds
2796 executable files). With this, the pysh.py-based shell profile can
2803 executable files). With this, the pysh.py-based shell profile can
2797 now simply call rehash upon startup, and full access to all
2804 now simply call rehash upon startup, and full access to all
2798 programs in the user's path is obtained.
2805 programs in the user's path is obtained.
2799
2806
2800 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2807 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2801 functionality is now fully in place. I removed the old dynamic
2808 functionality is now fully in place. I removed the old dynamic
2802 code generation based approach, in favor of a much lighter one
2809 code generation based approach, in favor of a much lighter one
2803 based on a simple dict. The advantage is that this allows me to
2810 based on a simple dict. The advantage is that this allows me to
2804 now have thousands of aliases with negligible cost (unthinkable
2811 now have thousands of aliases with negligible cost (unthinkable
2805 with the old system).
2812 with the old system).
2806
2813
2807 2004-06-19 Fernando Perez <fperez@colorado.edu>
2814 2004-06-19 Fernando Perez <fperez@colorado.edu>
2808
2815
2809 * IPython/iplib.py (__init__): extended MagicCompleter class to
2816 * IPython/iplib.py (__init__): extended MagicCompleter class to
2810 also complete (last in priority) on user aliases.
2817 also complete (last in priority) on user aliases.
2811
2818
2812 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2819 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2813 call to eval.
2820 call to eval.
2814 (ItplNS.__init__): Added a new class which functions like Itpl,
2821 (ItplNS.__init__): Added a new class which functions like Itpl,
2815 but allows configuring the namespace for the evaluation to occur
2822 but allows configuring the namespace for the evaluation to occur
2816 in.
2823 in.
2817
2824
2818 2004-06-18 Fernando Perez <fperez@colorado.edu>
2825 2004-06-18 Fernando Perez <fperez@colorado.edu>
2819
2826
2820 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2827 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2821 better message when 'exit' or 'quit' are typed (a common newbie
2828 better message when 'exit' or 'quit' are typed (a common newbie
2822 confusion).
2829 confusion).
2823
2830
2824 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2831 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2825 check for Windows users.
2832 check for Windows users.
2826
2833
2827 * IPython/iplib.py (InteractiveShell.user_setup): removed
2834 * IPython/iplib.py (InteractiveShell.user_setup): removed
2828 disabling of colors for Windows. I'll test at runtime and issue a
2835 disabling of colors for Windows. I'll test at runtime and issue a
2829 warning if Gary's readline isn't found, as to nudge users to
2836 warning if Gary's readline isn't found, as to nudge users to
2830 download it.
2837 download it.
2831
2838
2832 2004-06-16 Fernando Perez <fperez@colorado.edu>
2839 2004-06-16 Fernando Perez <fperez@colorado.edu>
2833
2840
2834 * IPython/genutils.py (Stream.__init__): changed to print errors
2841 * IPython/genutils.py (Stream.__init__): changed to print errors
2835 to sys.stderr. I had a circular dependency here. Now it's
2842 to sys.stderr. I had a circular dependency here. Now it's
2836 possible to run ipython as IDLE's shell (consider this pre-alpha,
2843 possible to run ipython as IDLE's shell (consider this pre-alpha,
2837 since true stdout things end up in the starting terminal instead
2844 since true stdout things end up in the starting terminal instead
2838 of IDLE's out).
2845 of IDLE's out).
2839
2846
2840 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2847 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2841 users who haven't # updated their prompt_in2 definitions. Remove
2848 users who haven't # updated their prompt_in2 definitions. Remove
2842 eventually.
2849 eventually.
2843 (multiple_replace): added credit to original ASPN recipe.
2850 (multiple_replace): added credit to original ASPN recipe.
2844
2851
2845 2004-06-15 Fernando Perez <fperez@colorado.edu>
2852 2004-06-15 Fernando Perez <fperez@colorado.edu>
2846
2853
2847 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2854 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2848 list of auto-defined aliases.
2855 list of auto-defined aliases.
2849
2856
2850 2004-06-13 Fernando Perez <fperez@colorado.edu>
2857 2004-06-13 Fernando Perez <fperez@colorado.edu>
2851
2858
2852 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2859 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2853 install was really requested (so setup.py can be used for other
2860 install was really requested (so setup.py can be used for other
2854 things under Windows).
2861 things under Windows).
2855
2862
2856 2004-06-10 Fernando Perez <fperez@colorado.edu>
2863 2004-06-10 Fernando Perez <fperez@colorado.edu>
2857
2864
2858 * IPython/Logger.py (Logger.create_log): Manually remove any old
2865 * IPython/Logger.py (Logger.create_log): Manually remove any old
2859 backup, since os.remove may fail under Windows. Fixes bug
2866 backup, since os.remove may fail under Windows. Fixes bug
2860 reported by Thorsten.
2867 reported by Thorsten.
2861
2868
2862 2004-06-09 Fernando Perez <fperez@colorado.edu>
2869 2004-06-09 Fernando Perez <fperez@colorado.edu>
2863
2870
2864 * examples/example-embed.py: fixed all references to %n (replaced
2871 * examples/example-embed.py: fixed all references to %n (replaced
2865 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2872 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2866 for all examples and the manual as well.
2873 for all examples and the manual as well.
2867
2874
2868 2004-06-08 Fernando Perez <fperez@colorado.edu>
2875 2004-06-08 Fernando Perez <fperez@colorado.edu>
2869
2876
2870 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2877 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2871 alignment and color management. All 3 prompt subsystems now
2878 alignment and color management. All 3 prompt subsystems now
2872 inherit from BasePrompt.
2879 inherit from BasePrompt.
2873
2880
2874 * tools/release: updates for windows installer build and tag rpms
2881 * tools/release: updates for windows installer build and tag rpms
2875 with python version (since paths are fixed).
2882 with python version (since paths are fixed).
2876
2883
2877 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2884 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2878 which will become eventually obsolete. Also fixed the default
2885 which will become eventually obsolete. Also fixed the default
2879 prompt_in2 to use \D, so at least new users start with the correct
2886 prompt_in2 to use \D, so at least new users start with the correct
2880 defaults.
2887 defaults.
2881 WARNING: Users with existing ipythonrc files will need to apply
2888 WARNING: Users with existing ipythonrc files will need to apply
2882 this fix manually!
2889 this fix manually!
2883
2890
2884 * setup.py: make windows installer (.exe). This is finally the
2891 * setup.py: make windows installer (.exe). This is finally the
2885 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2892 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2886 which I hadn't included because it required Python 2.3 (or recent
2893 which I hadn't included because it required Python 2.3 (or recent
2887 distutils).
2894 distutils).
2888
2895
2889 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2896 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2890 usage of new '\D' escape.
2897 usage of new '\D' escape.
2891
2898
2892 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2899 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2893 lacks os.getuid())
2900 lacks os.getuid())
2894 (CachedOutput.set_colors): Added the ability to turn coloring
2901 (CachedOutput.set_colors): Added the ability to turn coloring
2895 on/off with @colors even for manually defined prompt colors. It
2902 on/off with @colors even for manually defined prompt colors. It
2896 uses a nasty global, but it works safely and via the generic color
2903 uses a nasty global, but it works safely and via the generic color
2897 handling mechanism.
2904 handling mechanism.
2898 (Prompt2.__init__): Introduced new escape '\D' for continuation
2905 (Prompt2.__init__): Introduced new escape '\D' for continuation
2899 prompts. It represents the counter ('\#') as dots.
2906 prompts. It represents the counter ('\#') as dots.
2900 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2907 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2901 need to update their ipythonrc files and replace '%n' with '\D' in
2908 need to update their ipythonrc files and replace '%n' with '\D' in
2902 their prompt_in2 settings everywhere. Sorry, but there's
2909 their prompt_in2 settings everywhere. Sorry, but there's
2903 otherwise no clean way to get all prompts to properly align. The
2910 otherwise no clean way to get all prompts to properly align. The
2904 ipythonrc shipped with IPython has been updated.
2911 ipythonrc shipped with IPython has been updated.
2905
2912
2906 2004-06-07 Fernando Perez <fperez@colorado.edu>
2913 2004-06-07 Fernando Perez <fperez@colorado.edu>
2907
2914
2908 * setup.py (isfile): Pass local_icons option to latex2html, so the
2915 * setup.py (isfile): Pass local_icons option to latex2html, so the
2909 resulting HTML file is self-contained. Thanks to
2916 resulting HTML file is self-contained. Thanks to
2910 dryice-AT-liu.com.cn for the tip.
2917 dryice-AT-liu.com.cn for the tip.
2911
2918
2912 * pysh.py: I created a new profile 'shell', which implements a
2919 * pysh.py: I created a new profile 'shell', which implements a
2913 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2920 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2914 system shell, nor will it become one anytime soon. It's mainly
2921 system shell, nor will it become one anytime soon. It's mainly
2915 meant to illustrate the use of the new flexible bash-like prompts.
2922 meant to illustrate the use of the new flexible bash-like prompts.
2916 I guess it could be used by hardy souls for true shell management,
2923 I guess it could be used by hardy souls for true shell management,
2917 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2924 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2918 profile. This uses the InterpreterExec extension provided by
2925 profile. This uses the InterpreterExec extension provided by
2919 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2926 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2920
2927
2921 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2928 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2922 auto-align itself with the length of the previous input prompt
2929 auto-align itself with the length of the previous input prompt
2923 (taking into account the invisible color escapes).
2930 (taking into account the invisible color escapes).
2924 (CachedOutput.__init__): Large restructuring of this class. Now
2931 (CachedOutput.__init__): Large restructuring of this class. Now
2925 all three prompts (primary1, primary2, output) are proper objects,
2932 all three prompts (primary1, primary2, output) are proper objects,
2926 managed by the 'parent' CachedOutput class. The code is still a
2933 managed by the 'parent' CachedOutput class. The code is still a
2927 bit hackish (all prompts share state via a pointer to the cache),
2934 bit hackish (all prompts share state via a pointer to the cache),
2928 but it's overall far cleaner than before.
2935 but it's overall far cleaner than before.
2929
2936
2930 * IPython/genutils.py (getoutputerror): modified to add verbose,
2937 * IPython/genutils.py (getoutputerror): modified to add verbose,
2931 debug and header options. This makes the interface of all getout*
2938 debug and header options. This makes the interface of all getout*
2932 functions uniform.
2939 functions uniform.
2933 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2940 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2934
2941
2935 * IPython/Magic.py (Magic.default_option): added a function to
2942 * IPython/Magic.py (Magic.default_option): added a function to
2936 allow registering default options for any magic command. This
2943 allow registering default options for any magic command. This
2937 makes it easy to have profiles which customize the magics globally
2944 makes it easy to have profiles which customize the magics globally
2938 for a certain use. The values set through this function are
2945 for a certain use. The values set through this function are
2939 picked up by the parse_options() method, which all magics should
2946 picked up by the parse_options() method, which all magics should
2940 use to parse their options.
2947 use to parse their options.
2941
2948
2942 * IPython/genutils.py (warn): modified the warnings framework to
2949 * IPython/genutils.py (warn): modified the warnings framework to
2943 use the Term I/O class. I'm trying to slowly unify all of
2950 use the Term I/O class. I'm trying to slowly unify all of
2944 IPython's I/O operations to pass through Term.
2951 IPython's I/O operations to pass through Term.
2945
2952
2946 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2953 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2947 the secondary prompt to correctly match the length of the primary
2954 the secondary prompt to correctly match the length of the primary
2948 one for any prompt. Now multi-line code will properly line up
2955 one for any prompt. Now multi-line code will properly line up
2949 even for path dependent prompts, such as the new ones available
2956 even for path dependent prompts, such as the new ones available
2950 via the prompt_specials.
2957 via the prompt_specials.
2951
2958
2952 2004-06-06 Fernando Perez <fperez@colorado.edu>
2959 2004-06-06 Fernando Perez <fperez@colorado.edu>
2953
2960
2954 * IPython/Prompts.py (prompt_specials): Added the ability to have
2961 * IPython/Prompts.py (prompt_specials): Added the ability to have
2955 bash-like special sequences in the prompts, which get
2962 bash-like special sequences in the prompts, which get
2956 automatically expanded. Things like hostname, current working
2963 automatically expanded. Things like hostname, current working
2957 directory and username are implemented already, but it's easy to
2964 directory and username are implemented already, but it's easy to
2958 add more in the future. Thanks to a patch by W.J. van der Laan
2965 add more in the future. Thanks to a patch by W.J. van der Laan
2959 <gnufnork-AT-hetdigitalegat.nl>
2966 <gnufnork-AT-hetdigitalegat.nl>
2960 (prompt_specials): Added color support for prompt strings, so
2967 (prompt_specials): Added color support for prompt strings, so
2961 users can define arbitrary color setups for their prompts.
2968 users can define arbitrary color setups for their prompts.
2962
2969
2963 2004-06-05 Fernando Perez <fperez@colorado.edu>
2970 2004-06-05 Fernando Perez <fperez@colorado.edu>
2964
2971
2965 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2972 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2966 code to load Gary Bishop's readline and configure it
2973 code to load Gary Bishop's readline and configure it
2967 automatically. Thanks to Gary for help on this.
2974 automatically. Thanks to Gary for help on this.
2968
2975
2969 2004-06-01 Fernando Perez <fperez@colorado.edu>
2976 2004-06-01 Fernando Perez <fperez@colorado.edu>
2970
2977
2971 * IPython/Logger.py (Logger.create_log): fix bug for logging
2978 * IPython/Logger.py (Logger.create_log): fix bug for logging
2972 with no filename (previous fix was incomplete).
2979 with no filename (previous fix was incomplete).
2973
2980
2974 2004-05-25 Fernando Perez <fperez@colorado.edu>
2981 2004-05-25 Fernando Perez <fperez@colorado.edu>
2975
2982
2976 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2983 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2977 parens would get passed to the shell.
2984 parens would get passed to the shell.
2978
2985
2979 2004-05-20 Fernando Perez <fperez@colorado.edu>
2986 2004-05-20 Fernando Perez <fperez@colorado.edu>
2980
2987
2981 * IPython/Magic.py (Magic.magic_prun): changed default profile
2988 * IPython/Magic.py (Magic.magic_prun): changed default profile
2982 sort order to 'time' (the more common profiling need).
2989 sort order to 'time' (the more common profiling need).
2983
2990
2984 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2991 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2985 so that source code shown is guaranteed in sync with the file on
2992 so that source code shown is guaranteed in sync with the file on
2986 disk (also changed in psource). Similar fix to the one for
2993 disk (also changed in psource). Similar fix to the one for
2987 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2994 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2988 <yann.ledu-AT-noos.fr>.
2995 <yann.ledu-AT-noos.fr>.
2989
2996
2990 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2997 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2991 with a single option would not be correctly parsed. Closes
2998 with a single option would not be correctly parsed. Closes
2992 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2999 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2993 introduced in 0.6.0 (on 2004-05-06).
3000 introduced in 0.6.0 (on 2004-05-06).
2994
3001
2995 2004-05-13 *** Released version 0.6.0
3002 2004-05-13 *** Released version 0.6.0
2996
3003
2997 2004-05-13 Fernando Perez <fperez@colorado.edu>
3004 2004-05-13 Fernando Perez <fperez@colorado.edu>
2998
3005
2999 * debian/: Added debian/ directory to CVS, so that debian support
3006 * debian/: Added debian/ directory to CVS, so that debian support
3000 is publicly accessible. The debian package is maintained by Jack
3007 is publicly accessible. The debian package is maintained by Jack
3001 Moffit <jack-AT-xiph.org>.
3008 Moffit <jack-AT-xiph.org>.
3002
3009
3003 * Documentation: included the notes about an ipython-based system
3010 * Documentation: included the notes about an ipython-based system
3004 shell (the hypothetical 'pysh') into the new_design.pdf document,
3011 shell (the hypothetical 'pysh') into the new_design.pdf document,
3005 so that these ideas get distributed to users along with the
3012 so that these ideas get distributed to users along with the
3006 official documentation.
3013 official documentation.
3007
3014
3008 2004-05-10 Fernando Perez <fperez@colorado.edu>
3015 2004-05-10 Fernando Perez <fperez@colorado.edu>
3009
3016
3010 * IPython/Logger.py (Logger.create_log): fix recently introduced
3017 * IPython/Logger.py (Logger.create_log): fix recently introduced
3011 bug (misindented line) where logstart would fail when not given an
3018 bug (misindented line) where logstart would fail when not given an
3012 explicit filename.
3019 explicit filename.
3013
3020
3014 2004-05-09 Fernando Perez <fperez@colorado.edu>
3021 2004-05-09 Fernando Perez <fperez@colorado.edu>
3015
3022
3016 * IPython/Magic.py (Magic.parse_options): skip system call when
3023 * IPython/Magic.py (Magic.parse_options): skip system call when
3017 there are no options to look for. Faster, cleaner for the common
3024 there are no options to look for. Faster, cleaner for the common
3018 case.
3025 case.
3019
3026
3020 * Documentation: many updates to the manual: describing Windows
3027 * Documentation: many updates to the manual: describing Windows
3021 support better, Gnuplot updates, credits, misc small stuff. Also
3028 support better, Gnuplot updates, credits, misc small stuff. Also
3022 updated the new_design doc a bit.
3029 updated the new_design doc a bit.
3023
3030
3024 2004-05-06 *** Released version 0.6.0.rc1
3031 2004-05-06 *** Released version 0.6.0.rc1
3025
3032
3026 2004-05-06 Fernando Perez <fperez@colorado.edu>
3033 2004-05-06 Fernando Perez <fperez@colorado.edu>
3027
3034
3028 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3035 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3029 operations to use the vastly more efficient list/''.join() method.
3036 operations to use the vastly more efficient list/''.join() method.
3030 (FormattedTB.text): Fix
3037 (FormattedTB.text): Fix
3031 http://www.scipy.net/roundup/ipython/issue12 - exception source
3038 http://www.scipy.net/roundup/ipython/issue12 - exception source
3032 extract not updated after reload. Thanks to Mike Salib
3039 extract not updated after reload. Thanks to Mike Salib
3033 <msalib-AT-mit.edu> for pinning the source of the problem.
3040 <msalib-AT-mit.edu> for pinning the source of the problem.
3034 Fortunately, the solution works inside ipython and doesn't require
3041 Fortunately, the solution works inside ipython and doesn't require
3035 any changes to python proper.
3042 any changes to python proper.
3036
3043
3037 * IPython/Magic.py (Magic.parse_options): Improved to process the
3044 * IPython/Magic.py (Magic.parse_options): Improved to process the
3038 argument list as a true shell would (by actually using the
3045 argument list as a true shell would (by actually using the
3039 underlying system shell). This way, all @magics automatically get
3046 underlying system shell). This way, all @magics automatically get
3040 shell expansion for variables. Thanks to a comment by Alex
3047 shell expansion for variables. Thanks to a comment by Alex
3041 Schmolck.
3048 Schmolck.
3042
3049
3043 2004-04-04 Fernando Perez <fperez@colorado.edu>
3050 2004-04-04 Fernando Perez <fperez@colorado.edu>
3044
3051
3045 * IPython/iplib.py (InteractiveShell.interact): Added a special
3052 * IPython/iplib.py (InteractiveShell.interact): Added a special
3046 trap for a debugger quit exception, which is basically impossible
3053 trap for a debugger quit exception, which is basically impossible
3047 to handle by normal mechanisms, given what pdb does to the stack.
3054 to handle by normal mechanisms, given what pdb does to the stack.
3048 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3055 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3049
3056
3050 2004-04-03 Fernando Perez <fperez@colorado.edu>
3057 2004-04-03 Fernando Perez <fperez@colorado.edu>
3051
3058
3052 * IPython/genutils.py (Term): Standardized the names of the Term
3059 * IPython/genutils.py (Term): Standardized the names of the Term
3053 class streams to cin/cout/cerr, following C++ naming conventions
3060 class streams to cin/cout/cerr, following C++ naming conventions
3054 (I can't use in/out/err because 'in' is not a valid attribute
3061 (I can't use in/out/err because 'in' is not a valid attribute
3055 name).
3062 name).
3056
3063
3057 * IPython/iplib.py (InteractiveShell.interact): don't increment
3064 * IPython/iplib.py (InteractiveShell.interact): don't increment
3058 the prompt if there's no user input. By Daniel 'Dang' Griffith
3065 the prompt if there's no user input. By Daniel 'Dang' Griffith
3059 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3066 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3060 Francois Pinard.
3067 Francois Pinard.
3061
3068
3062 2004-04-02 Fernando Perez <fperez@colorado.edu>
3069 2004-04-02 Fernando Perez <fperez@colorado.edu>
3063
3070
3064 * IPython/genutils.py (Stream.__init__): Modified to survive at
3071 * IPython/genutils.py (Stream.__init__): Modified to survive at
3065 least importing in contexts where stdin/out/err aren't true file
3072 least importing in contexts where stdin/out/err aren't true file
3066 objects, such as PyCrust (they lack fileno() and mode). However,
3073 objects, such as PyCrust (they lack fileno() and mode). However,
3067 the recovery facilities which rely on these things existing will
3074 the recovery facilities which rely on these things existing will
3068 not work.
3075 not work.
3069
3076
3070 2004-04-01 Fernando Perez <fperez@colorado.edu>
3077 2004-04-01 Fernando Perez <fperez@colorado.edu>
3071
3078
3072 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3079 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3073 use the new getoutputerror() function, so it properly
3080 use the new getoutputerror() function, so it properly
3074 distinguishes stdout/err.
3081 distinguishes stdout/err.
3075
3082
3076 * IPython/genutils.py (getoutputerror): added a function to
3083 * IPython/genutils.py (getoutputerror): added a function to
3077 capture separately the standard output and error of a command.
3084 capture separately the standard output and error of a command.
3078 After a comment from dang on the mailing lists. This code is
3085 After a comment from dang on the mailing lists. This code is
3079 basically a modified version of commands.getstatusoutput(), from
3086 basically a modified version of commands.getstatusoutput(), from
3080 the standard library.
3087 the standard library.
3081
3088
3082 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3089 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3083 '!!' as a special syntax (shorthand) to access @sx.
3090 '!!' as a special syntax (shorthand) to access @sx.
3084
3091
3085 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3092 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3086 command and return its output as a list split on '\n'.
3093 command and return its output as a list split on '\n'.
3087
3094
3088 2004-03-31 Fernando Perez <fperez@colorado.edu>
3095 2004-03-31 Fernando Perez <fperez@colorado.edu>
3089
3096
3090 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3097 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3091 method to dictionaries used as FakeModule instances if they lack
3098 method to dictionaries used as FakeModule instances if they lack
3092 it. At least pydoc in python2.3 breaks for runtime-defined
3099 it. At least pydoc in python2.3 breaks for runtime-defined
3093 functions without this hack. At some point I need to _really_
3100 functions without this hack. At some point I need to _really_
3094 understand what FakeModule is doing, because it's a gross hack.
3101 understand what FakeModule is doing, because it's a gross hack.
3095 But it solves Arnd's problem for now...
3102 But it solves Arnd's problem for now...
3096
3103
3097 2004-02-27 Fernando Perez <fperez@colorado.edu>
3104 2004-02-27 Fernando Perez <fperez@colorado.edu>
3098
3105
3099 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3106 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3100 mode would behave erratically. Also increased the number of
3107 mode would behave erratically. Also increased the number of
3101 possible logs in rotate mod to 999. Thanks to Rod Holland
3108 possible logs in rotate mod to 999. Thanks to Rod Holland
3102 <rhh@StructureLABS.com> for the report and fixes.
3109 <rhh@StructureLABS.com> for the report and fixes.
3103
3110
3104 2004-02-26 Fernando Perez <fperez@colorado.edu>
3111 2004-02-26 Fernando Perez <fperez@colorado.edu>
3105
3112
3106 * IPython/genutils.py (page): Check that the curses module really
3113 * IPython/genutils.py (page): Check that the curses module really
3107 has the initscr attribute before trying to use it. For some
3114 has the initscr attribute before trying to use it. For some
3108 reason, the Solaris curses module is missing this. I think this
3115 reason, the Solaris curses module is missing this. I think this
3109 should be considered a Solaris python bug, but I'm not sure.
3116 should be considered a Solaris python bug, but I'm not sure.
3110
3117
3111 2004-01-17 Fernando Perez <fperez@colorado.edu>
3118 2004-01-17 Fernando Perez <fperez@colorado.edu>
3112
3119
3113 * IPython/genutils.py (Stream.__init__): Changes to try to make
3120 * IPython/genutils.py (Stream.__init__): Changes to try to make
3114 ipython robust against stdin/out/err being closed by the user.
3121 ipython robust against stdin/out/err being closed by the user.
3115 This is 'user error' (and blocks a normal python session, at least
3122 This is 'user error' (and blocks a normal python session, at least
3116 the stdout case). However, Ipython should be able to survive such
3123 the stdout case). However, Ipython should be able to survive such
3117 instances of abuse as gracefully as possible. To simplify the
3124 instances of abuse as gracefully as possible. To simplify the
3118 coding and maintain compatibility with Gary Bishop's Term
3125 coding and maintain compatibility with Gary Bishop's Term
3119 contributions, I've made use of classmethods for this. I think
3126 contributions, I've made use of classmethods for this. I think
3120 this introduces a dependency on python 2.2.
3127 this introduces a dependency on python 2.2.
3121
3128
3122 2004-01-13 Fernando Perez <fperez@colorado.edu>
3129 2004-01-13 Fernando Perez <fperez@colorado.edu>
3123
3130
3124 * IPython/numutils.py (exp_safe): simplified the code a bit and
3131 * IPython/numutils.py (exp_safe): simplified the code a bit and
3125 removed the need for importing the kinds module altogether.
3132 removed the need for importing the kinds module altogether.
3126
3133
3127 2004-01-06 Fernando Perez <fperez@colorado.edu>
3134 2004-01-06 Fernando Perez <fperez@colorado.edu>
3128
3135
3129 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3136 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3130 a magic function instead, after some community feedback. No
3137 a magic function instead, after some community feedback. No
3131 special syntax will exist for it, but its name is deliberately
3138 special syntax will exist for it, but its name is deliberately
3132 very short.
3139 very short.
3133
3140
3134 2003-12-20 Fernando Perez <fperez@colorado.edu>
3141 2003-12-20 Fernando Perez <fperez@colorado.edu>
3135
3142
3136 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3143 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3137 new functionality, to automagically assign the result of a shell
3144 new functionality, to automagically assign the result of a shell
3138 command to a variable. I'll solicit some community feedback on
3145 command to a variable. I'll solicit some community feedback on
3139 this before making it permanent.
3146 this before making it permanent.
3140
3147
3141 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3148 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3142 requested about callables for which inspect couldn't obtain a
3149 requested about callables for which inspect couldn't obtain a
3143 proper argspec. Thanks to a crash report sent by Etienne
3150 proper argspec. Thanks to a crash report sent by Etienne
3144 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3151 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3145
3152
3146 2003-12-09 Fernando Perez <fperez@colorado.edu>
3153 2003-12-09 Fernando Perez <fperez@colorado.edu>
3147
3154
3148 * IPython/genutils.py (page): patch for the pager to work across
3155 * IPython/genutils.py (page): patch for the pager to work across
3149 various versions of Windows. By Gary Bishop.
3156 various versions of Windows. By Gary Bishop.
3150
3157
3151 2003-12-04 Fernando Perez <fperez@colorado.edu>
3158 2003-12-04 Fernando Perez <fperez@colorado.edu>
3152
3159
3153 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3160 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3154 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3161 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3155 While I tested this and it looks ok, there may still be corner
3162 While I tested this and it looks ok, there may still be corner
3156 cases I've missed.
3163 cases I've missed.
3157
3164
3158 2003-12-01 Fernando Perez <fperez@colorado.edu>
3165 2003-12-01 Fernando Perez <fperez@colorado.edu>
3159
3166
3160 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3167 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3161 where a line like 'p,q=1,2' would fail because the automagic
3168 where a line like 'p,q=1,2' would fail because the automagic
3162 system would be triggered for @p.
3169 system would be triggered for @p.
3163
3170
3164 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3171 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3165 cleanups, code unmodified.
3172 cleanups, code unmodified.
3166
3173
3167 * IPython/genutils.py (Term): added a class for IPython to handle
3174 * IPython/genutils.py (Term): added a class for IPython to handle
3168 output. In most cases it will just be a proxy for stdout/err, but
3175 output. In most cases it will just be a proxy for stdout/err, but
3169 having this allows modifications to be made for some platforms,
3176 having this allows modifications to be made for some platforms,
3170 such as handling color escapes under Windows. All of this code
3177 such as handling color escapes under Windows. All of this code
3171 was contributed by Gary Bishop, with minor modifications by me.
3178 was contributed by Gary Bishop, with minor modifications by me.
3172 The actual changes affect many files.
3179 The actual changes affect many files.
3173
3180
3174 2003-11-30 Fernando Perez <fperez@colorado.edu>
3181 2003-11-30 Fernando Perez <fperez@colorado.edu>
3175
3182
3176 * IPython/iplib.py (file_matches): new completion code, courtesy
3183 * IPython/iplib.py (file_matches): new completion code, courtesy
3177 of Jeff Collins. This enables filename completion again under
3184 of Jeff Collins. This enables filename completion again under
3178 python 2.3, which disabled it at the C level.
3185 python 2.3, which disabled it at the C level.
3179
3186
3180 2003-11-11 Fernando Perez <fperez@colorado.edu>
3187 2003-11-11 Fernando Perez <fperez@colorado.edu>
3181
3188
3182 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3189 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3183 for Numeric.array(map(...)), but often convenient.
3190 for Numeric.array(map(...)), but often convenient.
3184
3191
3185 2003-11-05 Fernando Perez <fperez@colorado.edu>
3192 2003-11-05 Fernando Perez <fperez@colorado.edu>
3186
3193
3187 * IPython/numutils.py (frange): Changed a call from int() to
3194 * IPython/numutils.py (frange): Changed a call from int() to
3188 int(round()) to prevent a problem reported with arange() in the
3195 int(round()) to prevent a problem reported with arange() in the
3189 numpy list.
3196 numpy list.
3190
3197
3191 2003-10-06 Fernando Perez <fperez@colorado.edu>
3198 2003-10-06 Fernando Perez <fperez@colorado.edu>
3192
3199
3193 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3200 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3194 prevent crashes if sys lacks an argv attribute (it happens with
3201 prevent crashes if sys lacks an argv attribute (it happens with
3195 embedded interpreters which build a bare-bones sys module).
3202 embedded interpreters which build a bare-bones sys module).
3196 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3203 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3197
3204
3198 2003-09-24 Fernando Perez <fperez@colorado.edu>
3205 2003-09-24 Fernando Perez <fperez@colorado.edu>
3199
3206
3200 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3207 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3201 to protect against poorly written user objects where __getattr__
3208 to protect against poorly written user objects where __getattr__
3202 raises exceptions other than AttributeError. Thanks to a bug
3209 raises exceptions other than AttributeError. Thanks to a bug
3203 report by Oliver Sander <osander-AT-gmx.de>.
3210 report by Oliver Sander <osander-AT-gmx.de>.
3204
3211
3205 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3212 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3206 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3213 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3207
3214
3208 2003-09-09 Fernando Perez <fperez@colorado.edu>
3215 2003-09-09 Fernando Perez <fperez@colorado.edu>
3209
3216
3210 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3217 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3211 unpacking a list whith a callable as first element would
3218 unpacking a list whith a callable as first element would
3212 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3219 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3213 Collins.
3220 Collins.
3214
3221
3215 2003-08-25 *** Released version 0.5.0
3222 2003-08-25 *** Released version 0.5.0
3216
3223
3217 2003-08-22 Fernando Perez <fperez@colorado.edu>
3224 2003-08-22 Fernando Perez <fperez@colorado.edu>
3218
3225
3219 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3226 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3220 improperly defined user exceptions. Thanks to feedback from Mark
3227 improperly defined user exceptions. Thanks to feedback from Mark
3221 Russell <mrussell-AT-verio.net>.
3228 Russell <mrussell-AT-verio.net>.
3222
3229
3223 2003-08-20 Fernando Perez <fperez@colorado.edu>
3230 2003-08-20 Fernando Perez <fperez@colorado.edu>
3224
3231
3225 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3232 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3226 printing so that it would print multi-line string forms starting
3233 printing so that it would print multi-line string forms starting
3227 with a new line. This way the formatting is better respected for
3234 with a new line. This way the formatting is better respected for
3228 objects which work hard to make nice string forms.
3235 objects which work hard to make nice string forms.
3229
3236
3230 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3237 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3231 autocall would overtake data access for objects with both
3238 autocall would overtake data access for objects with both
3232 __getitem__ and __call__.
3239 __getitem__ and __call__.
3233
3240
3234 2003-08-19 *** Released version 0.5.0-rc1
3241 2003-08-19 *** Released version 0.5.0-rc1
3235
3242
3236 2003-08-19 Fernando Perez <fperez@colorado.edu>
3243 2003-08-19 Fernando Perez <fperez@colorado.edu>
3237
3244
3238 * IPython/deep_reload.py (load_tail): single tiny change here
3245 * IPython/deep_reload.py (load_tail): single tiny change here
3239 seems to fix the long-standing bug of dreload() failing to work
3246 seems to fix the long-standing bug of dreload() failing to work
3240 for dotted names. But this module is pretty tricky, so I may have
3247 for dotted names. But this module is pretty tricky, so I may have
3241 missed some subtlety. Needs more testing!.
3248 missed some subtlety. Needs more testing!.
3242
3249
3243 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3250 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3244 exceptions which have badly implemented __str__ methods.
3251 exceptions which have badly implemented __str__ methods.
3245 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3252 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3246 which I've been getting reports about from Python 2.3 users. I
3253 which I've been getting reports about from Python 2.3 users. I
3247 wish I had a simple test case to reproduce the problem, so I could
3254 wish I had a simple test case to reproduce the problem, so I could
3248 either write a cleaner workaround or file a bug report if
3255 either write a cleaner workaround or file a bug report if
3249 necessary.
3256 necessary.
3250
3257
3251 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3258 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3252 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3259 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3253 a bug report by Tjabo Kloppenburg.
3260 a bug report by Tjabo Kloppenburg.
3254
3261
3255 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3262 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3256 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3263 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3257 seems rather unstable. Thanks to a bug report by Tjabo
3264 seems rather unstable. Thanks to a bug report by Tjabo
3258 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3265 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3259
3266
3260 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3267 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3261 this out soon because of the critical fixes in the inner loop for
3268 this out soon because of the critical fixes in the inner loop for
3262 generators.
3269 generators.
3263
3270
3264 * IPython/Magic.py (Magic.getargspec): removed. This (and
3271 * IPython/Magic.py (Magic.getargspec): removed. This (and
3265 _get_def) have been obsoleted by OInspect for a long time, I
3272 _get_def) have been obsoleted by OInspect for a long time, I
3266 hadn't noticed that they were dead code.
3273 hadn't noticed that they were dead code.
3267 (Magic._ofind): restored _ofind functionality for a few literals
3274 (Magic._ofind): restored _ofind functionality for a few literals
3268 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3275 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3269 for things like "hello".capitalize?, since that would require a
3276 for things like "hello".capitalize?, since that would require a
3270 potentially dangerous eval() again.
3277 potentially dangerous eval() again.
3271
3278
3272 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3279 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3273 logic a bit more to clean up the escapes handling and minimize the
3280 logic a bit more to clean up the escapes handling and minimize the
3274 use of _ofind to only necessary cases. The interactive 'feel' of
3281 use of _ofind to only necessary cases. The interactive 'feel' of
3275 IPython should have improved quite a bit with the changes in
3282 IPython should have improved quite a bit with the changes in
3276 _prefilter and _ofind (besides being far safer than before).
3283 _prefilter and _ofind (besides being far safer than before).
3277
3284
3278 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3285 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3279 obscure, never reported). Edit would fail to find the object to
3286 obscure, never reported). Edit would fail to find the object to
3280 edit under some circumstances.
3287 edit under some circumstances.
3281 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3288 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3282 which were causing double-calling of generators. Those eval calls
3289 which were causing double-calling of generators. Those eval calls
3283 were _very_ dangerous, since code with side effects could be
3290 were _very_ dangerous, since code with side effects could be
3284 triggered. As they say, 'eval is evil'... These were the
3291 triggered. As they say, 'eval is evil'... These were the
3285 nastiest evals in IPython. Besides, _ofind is now far simpler,
3292 nastiest evals in IPython. Besides, _ofind is now far simpler,
3286 and it should also be quite a bit faster. Its use of inspect is
3293 and it should also be quite a bit faster. Its use of inspect is
3287 also safer, so perhaps some of the inspect-related crashes I've
3294 also safer, so perhaps some of the inspect-related crashes I've
3288 seen lately with Python 2.3 might be taken care of. That will
3295 seen lately with Python 2.3 might be taken care of. That will
3289 need more testing.
3296 need more testing.
3290
3297
3291 2003-08-17 Fernando Perez <fperez@colorado.edu>
3298 2003-08-17 Fernando Perez <fperez@colorado.edu>
3292
3299
3293 * IPython/iplib.py (InteractiveShell._prefilter): significant
3300 * IPython/iplib.py (InteractiveShell._prefilter): significant
3294 simplifications to the logic for handling user escapes. Faster
3301 simplifications to the logic for handling user escapes. Faster
3295 and simpler code.
3302 and simpler code.
3296
3303
3297 2003-08-14 Fernando Perez <fperez@colorado.edu>
3304 2003-08-14 Fernando Perez <fperez@colorado.edu>
3298
3305
3299 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3306 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3300 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3307 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3301 but it should be quite a bit faster. And the recursive version
3308 but it should be quite a bit faster. And the recursive version
3302 generated O(log N) intermediate storage for all rank>1 arrays,
3309 generated O(log N) intermediate storage for all rank>1 arrays,
3303 even if they were contiguous.
3310 even if they were contiguous.
3304 (l1norm): Added this function.
3311 (l1norm): Added this function.
3305 (norm): Added this function for arbitrary norms (including
3312 (norm): Added this function for arbitrary norms (including
3306 l-infinity). l1 and l2 are still special cases for convenience
3313 l-infinity). l1 and l2 are still special cases for convenience
3307 and speed.
3314 and speed.
3308
3315
3309 2003-08-03 Fernando Perez <fperez@colorado.edu>
3316 2003-08-03 Fernando Perez <fperez@colorado.edu>
3310
3317
3311 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3318 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3312 exceptions, which now raise PendingDeprecationWarnings in Python
3319 exceptions, which now raise PendingDeprecationWarnings in Python
3313 2.3. There were some in Magic and some in Gnuplot2.
3320 2.3. There were some in Magic and some in Gnuplot2.
3314
3321
3315 2003-06-30 Fernando Perez <fperez@colorado.edu>
3322 2003-06-30 Fernando Perez <fperez@colorado.edu>
3316
3323
3317 * IPython/genutils.py (page): modified to call curses only for
3324 * IPython/genutils.py (page): modified to call curses only for
3318 terminals where TERM=='xterm'. After problems under many other
3325 terminals where TERM=='xterm'. After problems under many other
3319 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3326 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3320
3327
3321 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3328 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3322 would be triggered when readline was absent. This was just an old
3329 would be triggered when readline was absent. This was just an old
3323 debugging statement I'd forgotten to take out.
3330 debugging statement I'd forgotten to take out.
3324
3331
3325 2003-06-20 Fernando Perez <fperez@colorado.edu>
3332 2003-06-20 Fernando Perez <fperez@colorado.edu>
3326
3333
3327 * IPython/genutils.py (clock): modified to return only user time
3334 * IPython/genutils.py (clock): modified to return only user time
3328 (not counting system time), after a discussion on scipy. While
3335 (not counting system time), after a discussion on scipy. While
3329 system time may be a useful quantity occasionally, it may much
3336 system time may be a useful quantity occasionally, it may much
3330 more easily be skewed by occasional swapping or other similar
3337 more easily be skewed by occasional swapping or other similar
3331 activity.
3338 activity.
3332
3339
3333 2003-06-05 Fernando Perez <fperez@colorado.edu>
3340 2003-06-05 Fernando Perez <fperez@colorado.edu>
3334
3341
3335 * IPython/numutils.py (identity): new function, for building
3342 * IPython/numutils.py (identity): new function, for building
3336 arbitrary rank Kronecker deltas (mostly backwards compatible with
3343 arbitrary rank Kronecker deltas (mostly backwards compatible with
3337 Numeric.identity)
3344 Numeric.identity)
3338
3345
3339 2003-06-03 Fernando Perez <fperez@colorado.edu>
3346 2003-06-03 Fernando Perez <fperez@colorado.edu>
3340
3347
3341 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3348 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3342 arguments passed to magics with spaces, to allow trailing '\' to
3349 arguments passed to magics with spaces, to allow trailing '\' to
3343 work normally (mainly for Windows users).
3350 work normally (mainly for Windows users).
3344
3351
3345 2003-05-29 Fernando Perez <fperez@colorado.edu>
3352 2003-05-29 Fernando Perez <fperez@colorado.edu>
3346
3353
3347 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3354 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3348 instead of pydoc.help. This fixes a bizarre behavior where
3355 instead of pydoc.help. This fixes a bizarre behavior where
3349 printing '%s' % locals() would trigger the help system. Now
3356 printing '%s' % locals() would trigger the help system. Now
3350 ipython behaves like normal python does.
3357 ipython behaves like normal python does.
3351
3358
3352 Note that if one does 'from pydoc import help', the bizarre
3359 Note that if one does 'from pydoc import help', the bizarre
3353 behavior returns, but this will also happen in normal python, so
3360 behavior returns, but this will also happen in normal python, so
3354 it's not an ipython bug anymore (it has to do with how pydoc.help
3361 it's not an ipython bug anymore (it has to do with how pydoc.help
3355 is implemented).
3362 is implemented).
3356
3363
3357 2003-05-22 Fernando Perez <fperez@colorado.edu>
3364 2003-05-22 Fernando Perez <fperez@colorado.edu>
3358
3365
3359 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3366 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3360 return [] instead of None when nothing matches, also match to end
3367 return [] instead of None when nothing matches, also match to end
3361 of line. Patch by Gary Bishop.
3368 of line. Patch by Gary Bishop.
3362
3369
3363 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3370 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3364 protection as before, for files passed on the command line. This
3371 protection as before, for files passed on the command line. This
3365 prevents the CrashHandler from kicking in if user files call into
3372 prevents the CrashHandler from kicking in if user files call into
3366 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3373 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3367 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3374 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3368
3375
3369 2003-05-20 *** Released version 0.4.0
3376 2003-05-20 *** Released version 0.4.0
3370
3377
3371 2003-05-20 Fernando Perez <fperez@colorado.edu>
3378 2003-05-20 Fernando Perez <fperez@colorado.edu>
3372
3379
3373 * setup.py: added support for manpages. It's a bit hackish b/c of
3380 * setup.py: added support for manpages. It's a bit hackish b/c of
3374 a bug in the way the bdist_rpm distutils target handles gzipped
3381 a bug in the way the bdist_rpm distutils target handles gzipped
3375 manpages, but it works. After a patch by Jack.
3382 manpages, but it works. After a patch by Jack.
3376
3383
3377 2003-05-19 Fernando Perez <fperez@colorado.edu>
3384 2003-05-19 Fernando Perez <fperez@colorado.edu>
3378
3385
3379 * IPython/numutils.py: added a mockup of the kinds module, since
3386 * IPython/numutils.py: added a mockup of the kinds module, since
3380 it was recently removed from Numeric. This way, numutils will
3387 it was recently removed from Numeric. This way, numutils will
3381 work for all users even if they are missing kinds.
3388 work for all users even if they are missing kinds.
3382
3389
3383 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3390 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3384 failure, which can occur with SWIG-wrapped extensions. After a
3391 failure, which can occur with SWIG-wrapped extensions. After a
3385 crash report from Prabhu.
3392 crash report from Prabhu.
3386
3393
3387 2003-05-16 Fernando Perez <fperez@colorado.edu>
3394 2003-05-16 Fernando Perez <fperez@colorado.edu>
3388
3395
3389 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3396 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3390 protect ipython from user code which may call directly
3397 protect ipython from user code which may call directly
3391 sys.excepthook (this looks like an ipython crash to the user, even
3398 sys.excepthook (this looks like an ipython crash to the user, even
3392 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3399 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3393 This is especially important to help users of WxWindows, but may
3400 This is especially important to help users of WxWindows, but may
3394 also be useful in other cases.
3401 also be useful in other cases.
3395
3402
3396 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3403 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3397 an optional tb_offset to be specified, and to preserve exception
3404 an optional tb_offset to be specified, and to preserve exception
3398 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3405 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3399
3406
3400 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3407 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3401
3408
3402 2003-05-15 Fernando Perez <fperez@colorado.edu>
3409 2003-05-15 Fernando Perez <fperez@colorado.edu>
3403
3410
3404 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3411 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3405 installing for a new user under Windows.
3412 installing for a new user under Windows.
3406
3413
3407 2003-05-12 Fernando Perez <fperez@colorado.edu>
3414 2003-05-12 Fernando Perez <fperez@colorado.edu>
3408
3415
3409 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3416 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3410 handler for Emacs comint-based lines. Currently it doesn't do
3417 handler for Emacs comint-based lines. Currently it doesn't do
3411 much (but importantly, it doesn't update the history cache). In
3418 much (but importantly, it doesn't update the history cache). In
3412 the future it may be expanded if Alex needs more functionality
3419 the future it may be expanded if Alex needs more functionality
3413 there.
3420 there.
3414
3421
3415 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3422 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3416 info to crash reports.
3423 info to crash reports.
3417
3424
3418 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3425 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3419 just like Python's -c. Also fixed crash with invalid -color
3426 just like Python's -c. Also fixed crash with invalid -color
3420 option value at startup. Thanks to Will French
3427 option value at startup. Thanks to Will French
3421 <wfrench-AT-bestweb.net> for the bug report.
3428 <wfrench-AT-bestweb.net> for the bug report.
3422
3429
3423 2003-05-09 Fernando Perez <fperez@colorado.edu>
3430 2003-05-09 Fernando Perez <fperez@colorado.edu>
3424
3431
3425 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3432 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3426 to EvalDict (it's a mapping, after all) and simplified its code
3433 to EvalDict (it's a mapping, after all) and simplified its code
3427 quite a bit, after a nice discussion on c.l.py where Gustavo
3434 quite a bit, after a nice discussion on c.l.py where Gustavo
3428 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3435 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3429
3436
3430 2003-04-30 Fernando Perez <fperez@colorado.edu>
3437 2003-04-30 Fernando Perez <fperez@colorado.edu>
3431
3438
3432 * IPython/genutils.py (timings_out): modified it to reduce its
3439 * IPython/genutils.py (timings_out): modified it to reduce its
3433 overhead in the common reps==1 case.
3440 overhead in the common reps==1 case.
3434
3441
3435 2003-04-29 Fernando Perez <fperez@colorado.edu>
3442 2003-04-29 Fernando Perez <fperez@colorado.edu>
3436
3443
3437 * IPython/genutils.py (timings_out): Modified to use the resource
3444 * IPython/genutils.py (timings_out): Modified to use the resource
3438 module, which avoids the wraparound problems of time.clock().
3445 module, which avoids the wraparound problems of time.clock().
3439
3446
3440 2003-04-17 *** Released version 0.2.15pre4
3447 2003-04-17 *** Released version 0.2.15pre4
3441
3448
3442 2003-04-17 Fernando Perez <fperez@colorado.edu>
3449 2003-04-17 Fernando Perez <fperez@colorado.edu>
3443
3450
3444 * setup.py (scriptfiles): Split windows-specific stuff over to a
3451 * setup.py (scriptfiles): Split windows-specific stuff over to a
3445 separate file, in an attempt to have a Windows GUI installer.
3452 separate file, in an attempt to have a Windows GUI installer.
3446 That didn't work, but part of the groundwork is done.
3453 That didn't work, but part of the groundwork is done.
3447
3454
3448 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3455 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3449 indent/unindent with 4 spaces. Particularly useful in combination
3456 indent/unindent with 4 spaces. Particularly useful in combination
3450 with the new auto-indent option.
3457 with the new auto-indent option.
3451
3458
3452 2003-04-16 Fernando Perez <fperez@colorado.edu>
3459 2003-04-16 Fernando Perez <fperez@colorado.edu>
3453
3460
3454 * IPython/Magic.py: various replacements of self.rc for
3461 * IPython/Magic.py: various replacements of self.rc for
3455 self.shell.rc. A lot more remains to be done to fully disentangle
3462 self.shell.rc. A lot more remains to be done to fully disentangle
3456 this class from the main Shell class.
3463 this class from the main Shell class.
3457
3464
3458 * IPython/GnuplotRuntime.py: added checks for mouse support so
3465 * IPython/GnuplotRuntime.py: added checks for mouse support so
3459 that we don't try to enable it if the current gnuplot doesn't
3466 that we don't try to enable it if the current gnuplot doesn't
3460 really support it. Also added checks so that we don't try to
3467 really support it. Also added checks so that we don't try to
3461 enable persist under Windows (where Gnuplot doesn't recognize the
3468 enable persist under Windows (where Gnuplot doesn't recognize the
3462 option).
3469 option).
3463
3470
3464 * IPython/iplib.py (InteractiveShell.interact): Added optional
3471 * IPython/iplib.py (InteractiveShell.interact): Added optional
3465 auto-indenting code, after a patch by King C. Shu
3472 auto-indenting code, after a patch by King C. Shu
3466 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3473 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3467 get along well with pasting indented code. If I ever figure out
3474 get along well with pasting indented code. If I ever figure out
3468 how to make that part go well, it will become on by default.
3475 how to make that part go well, it will become on by default.
3469
3476
3470 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3477 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3471 crash ipython if there was an unmatched '%' in the user's prompt
3478 crash ipython if there was an unmatched '%' in the user's prompt
3472 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3479 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3473
3480
3474 * IPython/iplib.py (InteractiveShell.interact): removed the
3481 * IPython/iplib.py (InteractiveShell.interact): removed the
3475 ability to ask the user whether he wants to crash or not at the
3482 ability to ask the user whether he wants to crash or not at the
3476 'last line' exception handler. Calling functions at that point
3483 'last line' exception handler. Calling functions at that point
3477 changes the stack, and the error reports would have incorrect
3484 changes the stack, and the error reports would have incorrect
3478 tracebacks.
3485 tracebacks.
3479
3486
3480 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3487 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3481 pass through a peger a pretty-printed form of any object. After a
3488 pass through a peger a pretty-printed form of any object. After a
3482 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3489 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3483
3490
3484 2003-04-14 Fernando Perez <fperez@colorado.edu>
3491 2003-04-14 Fernando Perez <fperez@colorado.edu>
3485
3492
3486 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3493 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3487 all files in ~ would be modified at first install (instead of
3494 all files in ~ would be modified at first install (instead of
3488 ~/.ipython). This could be potentially disastrous, as the
3495 ~/.ipython). This could be potentially disastrous, as the
3489 modification (make line-endings native) could damage binary files.
3496 modification (make line-endings native) could damage binary files.
3490
3497
3491 2003-04-10 Fernando Perez <fperez@colorado.edu>
3498 2003-04-10 Fernando Perez <fperez@colorado.edu>
3492
3499
3493 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3500 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3494 handle only lines which are invalid python. This now means that
3501 handle only lines which are invalid python. This now means that
3495 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3502 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3496 for the bug report.
3503 for the bug report.
3497
3504
3498 2003-04-01 Fernando Perez <fperez@colorado.edu>
3505 2003-04-01 Fernando Perez <fperez@colorado.edu>
3499
3506
3500 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3507 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3501 where failing to set sys.last_traceback would crash pdb.pm().
3508 where failing to set sys.last_traceback would crash pdb.pm().
3502 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3509 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3503 report.
3510 report.
3504
3511
3505 2003-03-25 Fernando Perez <fperez@colorado.edu>
3512 2003-03-25 Fernando Perez <fperez@colorado.edu>
3506
3513
3507 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3514 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3508 before printing it (it had a lot of spurious blank lines at the
3515 before printing it (it had a lot of spurious blank lines at the
3509 end).
3516 end).
3510
3517
3511 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3518 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3512 output would be sent 21 times! Obviously people don't use this
3519 output would be sent 21 times! Obviously people don't use this
3513 too often, or I would have heard about it.
3520 too often, or I would have heard about it.
3514
3521
3515 2003-03-24 Fernando Perez <fperez@colorado.edu>
3522 2003-03-24 Fernando Perez <fperez@colorado.edu>
3516
3523
3517 * setup.py (scriptfiles): renamed the data_files parameter from
3524 * setup.py (scriptfiles): renamed the data_files parameter from
3518 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3525 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3519 for the patch.
3526 for the patch.
3520
3527
3521 2003-03-20 Fernando Perez <fperez@colorado.edu>
3528 2003-03-20 Fernando Perez <fperez@colorado.edu>
3522
3529
3523 * IPython/genutils.py (error): added error() and fatal()
3530 * IPython/genutils.py (error): added error() and fatal()
3524 functions.
3531 functions.
3525
3532
3526 2003-03-18 *** Released version 0.2.15pre3
3533 2003-03-18 *** Released version 0.2.15pre3
3527
3534
3528 2003-03-18 Fernando Perez <fperez@colorado.edu>
3535 2003-03-18 Fernando Perez <fperez@colorado.edu>
3529
3536
3530 * setupext/install_data_ext.py
3537 * setupext/install_data_ext.py
3531 (install_data_ext.initialize_options): Class contributed by Jack
3538 (install_data_ext.initialize_options): Class contributed by Jack
3532 Moffit for fixing the old distutils hack. He is sending this to
3539 Moffit for fixing the old distutils hack. He is sending this to
3533 the distutils folks so in the future we may not need it as a
3540 the distutils folks so in the future we may not need it as a
3534 private fix.
3541 private fix.
3535
3542
3536 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3543 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3537 changes for Debian packaging. See his patch for full details.
3544 changes for Debian packaging. See his patch for full details.
3538 The old distutils hack of making the ipythonrc* files carry a
3545 The old distutils hack of making the ipythonrc* files carry a
3539 bogus .py extension is gone, at last. Examples were moved to a
3546 bogus .py extension is gone, at last. Examples were moved to a
3540 separate subdir under doc/, and the separate executable scripts
3547 separate subdir under doc/, and the separate executable scripts
3541 now live in their own directory. Overall a great cleanup. The
3548 now live in their own directory. Overall a great cleanup. The
3542 manual was updated to use the new files, and setup.py has been
3549 manual was updated to use the new files, and setup.py has been
3543 fixed for this setup.
3550 fixed for this setup.
3544
3551
3545 * IPython/PyColorize.py (Parser.usage): made non-executable and
3552 * IPython/PyColorize.py (Parser.usage): made non-executable and
3546 created a pycolor wrapper around it to be included as a script.
3553 created a pycolor wrapper around it to be included as a script.
3547
3554
3548 2003-03-12 *** Released version 0.2.15pre2
3555 2003-03-12 *** Released version 0.2.15pre2
3549
3556
3550 2003-03-12 Fernando Perez <fperez@colorado.edu>
3557 2003-03-12 Fernando Perez <fperez@colorado.edu>
3551
3558
3552 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3559 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3553 long-standing problem with garbage characters in some terminals.
3560 long-standing problem with garbage characters in some terminals.
3554 The issue was really that the \001 and \002 escapes must _only_ be
3561 The issue was really that the \001 and \002 escapes must _only_ be
3555 passed to input prompts (which call readline), but _never_ to
3562 passed to input prompts (which call readline), but _never_ to
3556 normal text to be printed on screen. I changed ColorANSI to have
3563 normal text to be printed on screen. I changed ColorANSI to have
3557 two classes: TermColors and InputTermColors, each with the
3564 two classes: TermColors and InputTermColors, each with the
3558 appropriate escapes for input prompts or normal text. The code in
3565 appropriate escapes for input prompts or normal text. The code in
3559 Prompts.py got slightly more complicated, but this very old and
3566 Prompts.py got slightly more complicated, but this very old and
3560 annoying bug is finally fixed.
3567 annoying bug is finally fixed.
3561
3568
3562 All the credit for nailing down the real origin of this problem
3569 All the credit for nailing down the real origin of this problem
3563 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3570 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3564 *Many* thanks to him for spending quite a bit of effort on this.
3571 *Many* thanks to him for spending quite a bit of effort on this.
3565
3572
3566 2003-03-05 *** Released version 0.2.15pre1
3573 2003-03-05 *** Released version 0.2.15pre1
3567
3574
3568 2003-03-03 Fernando Perez <fperez@colorado.edu>
3575 2003-03-03 Fernando Perez <fperez@colorado.edu>
3569
3576
3570 * IPython/FakeModule.py: Moved the former _FakeModule to a
3577 * IPython/FakeModule.py: Moved the former _FakeModule to a
3571 separate file, because it's also needed by Magic (to fix a similar
3578 separate file, because it's also needed by Magic (to fix a similar
3572 pickle-related issue in @run).
3579 pickle-related issue in @run).
3573
3580
3574 2003-03-02 Fernando Perez <fperez@colorado.edu>
3581 2003-03-02 Fernando Perez <fperez@colorado.edu>
3575
3582
3576 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3583 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3577 the autocall option at runtime.
3584 the autocall option at runtime.
3578 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3585 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3579 across Magic.py to start separating Magic from InteractiveShell.
3586 across Magic.py to start separating Magic from InteractiveShell.
3580 (Magic._ofind): Fixed to return proper namespace for dotted
3587 (Magic._ofind): Fixed to return proper namespace for dotted
3581 names. Before, a dotted name would always return 'not currently
3588 names. Before, a dotted name would always return 'not currently
3582 defined', because it would find the 'parent'. s.x would be found,
3589 defined', because it would find the 'parent'. s.x would be found,
3583 but since 'x' isn't defined by itself, it would get confused.
3590 but since 'x' isn't defined by itself, it would get confused.
3584 (Magic.magic_run): Fixed pickling problems reported by Ralf
3591 (Magic.magic_run): Fixed pickling problems reported by Ralf
3585 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3592 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3586 that I'd used when Mike Heeter reported similar issues at the
3593 that I'd used when Mike Heeter reported similar issues at the
3587 top-level, but now for @run. It boils down to injecting the
3594 top-level, but now for @run. It boils down to injecting the
3588 namespace where code is being executed with something that looks
3595 namespace where code is being executed with something that looks
3589 enough like a module to fool pickle.dump(). Since a pickle stores
3596 enough like a module to fool pickle.dump(). Since a pickle stores
3590 a named reference to the importing module, we need this for
3597 a named reference to the importing module, we need this for
3591 pickles to save something sensible.
3598 pickles to save something sensible.
3592
3599
3593 * IPython/ipmaker.py (make_IPython): added an autocall option.
3600 * IPython/ipmaker.py (make_IPython): added an autocall option.
3594
3601
3595 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3602 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3596 the auto-eval code. Now autocalling is an option, and the code is
3603 the auto-eval code. Now autocalling is an option, and the code is
3597 also vastly safer. There is no more eval() involved at all.
3604 also vastly safer. There is no more eval() involved at all.
3598
3605
3599 2003-03-01 Fernando Perez <fperez@colorado.edu>
3606 2003-03-01 Fernando Perez <fperez@colorado.edu>
3600
3607
3601 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3608 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3602 dict with named keys instead of a tuple.
3609 dict with named keys instead of a tuple.
3603
3610
3604 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3611 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3605
3612
3606 * setup.py (make_shortcut): Fixed message about directories
3613 * setup.py (make_shortcut): Fixed message about directories
3607 created during Windows installation (the directories were ok, just
3614 created during Windows installation (the directories were ok, just
3608 the printed message was misleading). Thanks to Chris Liechti
3615 the printed message was misleading). Thanks to Chris Liechti
3609 <cliechti-AT-gmx.net> for the heads up.
3616 <cliechti-AT-gmx.net> for the heads up.
3610
3617
3611 2003-02-21 Fernando Perez <fperez@colorado.edu>
3618 2003-02-21 Fernando Perez <fperez@colorado.edu>
3612
3619
3613 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3620 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3614 of ValueError exception when checking for auto-execution. This
3621 of ValueError exception when checking for auto-execution. This
3615 one is raised by things like Numeric arrays arr.flat when the
3622 one is raised by things like Numeric arrays arr.flat when the
3616 array is non-contiguous.
3623 array is non-contiguous.
3617
3624
3618 2003-01-31 Fernando Perez <fperez@colorado.edu>
3625 2003-01-31 Fernando Perez <fperez@colorado.edu>
3619
3626
3620 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3627 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3621 not return any value at all (even though the command would get
3628 not return any value at all (even though the command would get
3622 executed).
3629 executed).
3623 (xsys): Flush stdout right after printing the command to ensure
3630 (xsys): Flush stdout right after printing the command to ensure
3624 proper ordering of commands and command output in the total
3631 proper ordering of commands and command output in the total
3625 output.
3632 output.
3626 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3633 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3627 system/getoutput as defaults. The old ones are kept for
3634 system/getoutput as defaults. The old ones are kept for
3628 compatibility reasons, so no code which uses this library needs
3635 compatibility reasons, so no code which uses this library needs
3629 changing.
3636 changing.
3630
3637
3631 2003-01-27 *** Released version 0.2.14
3638 2003-01-27 *** Released version 0.2.14
3632
3639
3633 2003-01-25 Fernando Perez <fperez@colorado.edu>
3640 2003-01-25 Fernando Perez <fperez@colorado.edu>
3634
3641
3635 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3642 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3636 functions defined in previous edit sessions could not be re-edited
3643 functions defined in previous edit sessions could not be re-edited
3637 (because the temp files were immediately removed). Now temp files
3644 (because the temp files were immediately removed). Now temp files
3638 are removed only at IPython's exit.
3645 are removed only at IPython's exit.
3639 (Magic.magic_run): Improved @run to perform shell-like expansions
3646 (Magic.magic_run): Improved @run to perform shell-like expansions
3640 on its arguments (~users and $VARS). With this, @run becomes more
3647 on its arguments (~users and $VARS). With this, @run becomes more
3641 like a normal command-line.
3648 like a normal command-line.
3642
3649
3643 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3650 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3644 bugs related to embedding and cleaned up that code. A fairly
3651 bugs related to embedding and cleaned up that code. A fairly
3645 important one was the impossibility to access the global namespace
3652 important one was the impossibility to access the global namespace
3646 through the embedded IPython (only local variables were visible).
3653 through the embedded IPython (only local variables were visible).
3647
3654
3648 2003-01-14 Fernando Perez <fperez@colorado.edu>
3655 2003-01-14 Fernando Perez <fperez@colorado.edu>
3649
3656
3650 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3657 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3651 auto-calling to be a bit more conservative. Now it doesn't get
3658 auto-calling to be a bit more conservative. Now it doesn't get
3652 triggered if any of '!=()<>' are in the rest of the input line, to
3659 triggered if any of '!=()<>' are in the rest of the input line, to
3653 allow comparing callables. Thanks to Alex for the heads up.
3660 allow comparing callables. Thanks to Alex for the heads up.
3654
3661
3655 2003-01-07 Fernando Perez <fperez@colorado.edu>
3662 2003-01-07 Fernando Perez <fperez@colorado.edu>
3656
3663
3657 * IPython/genutils.py (page): fixed estimation of the number of
3664 * IPython/genutils.py (page): fixed estimation of the number of
3658 lines in a string to be paged to simply count newlines. This
3665 lines in a string to be paged to simply count newlines. This
3659 prevents over-guessing due to embedded escape sequences. A better
3666 prevents over-guessing due to embedded escape sequences. A better
3660 long-term solution would involve stripping out the control chars
3667 long-term solution would involve stripping out the control chars
3661 for the count, but it's potentially so expensive I just don't
3668 for the count, but it's potentially so expensive I just don't
3662 think it's worth doing.
3669 think it's worth doing.
3663
3670
3664 2002-12-19 *** Released version 0.2.14pre50
3671 2002-12-19 *** Released version 0.2.14pre50
3665
3672
3666 2002-12-19 Fernando Perez <fperez@colorado.edu>
3673 2002-12-19 Fernando Perez <fperez@colorado.edu>
3667
3674
3668 * tools/release (version): Changed release scripts to inform
3675 * tools/release (version): Changed release scripts to inform
3669 Andrea and build a NEWS file with a list of recent changes.
3676 Andrea and build a NEWS file with a list of recent changes.
3670
3677
3671 * IPython/ColorANSI.py (__all__): changed terminal detection
3678 * IPython/ColorANSI.py (__all__): changed terminal detection
3672 code. Seems to work better for xterms without breaking
3679 code. Seems to work better for xterms without breaking
3673 konsole. Will need more testing to determine if WinXP and Mac OSX
3680 konsole. Will need more testing to determine if WinXP and Mac OSX
3674 also work ok.
3681 also work ok.
3675
3682
3676 2002-12-18 *** Released version 0.2.14pre49
3683 2002-12-18 *** Released version 0.2.14pre49
3677
3684
3678 2002-12-18 Fernando Perez <fperez@colorado.edu>
3685 2002-12-18 Fernando Perez <fperez@colorado.edu>
3679
3686
3680 * Docs: added new info about Mac OSX, from Andrea.
3687 * Docs: added new info about Mac OSX, from Andrea.
3681
3688
3682 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3689 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3683 allow direct plotting of python strings whose format is the same
3690 allow direct plotting of python strings whose format is the same
3684 of gnuplot data files.
3691 of gnuplot data files.
3685
3692
3686 2002-12-16 Fernando Perez <fperez@colorado.edu>
3693 2002-12-16 Fernando Perez <fperez@colorado.edu>
3687
3694
3688 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3695 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3689 value of exit question to be acknowledged.
3696 value of exit question to be acknowledged.
3690
3697
3691 2002-12-03 Fernando Perez <fperez@colorado.edu>
3698 2002-12-03 Fernando Perez <fperez@colorado.edu>
3692
3699
3693 * IPython/ipmaker.py: removed generators, which had been added
3700 * IPython/ipmaker.py: removed generators, which had been added
3694 by mistake in an earlier debugging run. This was causing trouble
3701 by mistake in an earlier debugging run. This was causing trouble
3695 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3702 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3696 for pointing this out.
3703 for pointing this out.
3697
3704
3698 2002-11-17 Fernando Perez <fperez@colorado.edu>
3705 2002-11-17 Fernando Perez <fperez@colorado.edu>
3699
3706
3700 * Manual: updated the Gnuplot section.
3707 * Manual: updated the Gnuplot section.
3701
3708
3702 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3709 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3703 a much better split of what goes in Runtime and what goes in
3710 a much better split of what goes in Runtime and what goes in
3704 Interactive.
3711 Interactive.
3705
3712
3706 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3713 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3707 being imported from iplib.
3714 being imported from iplib.
3708
3715
3709 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3716 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3710 for command-passing. Now the global Gnuplot instance is called
3717 for command-passing. Now the global Gnuplot instance is called
3711 'gp' instead of 'g', which was really a far too fragile and
3718 'gp' instead of 'g', which was really a far too fragile and
3712 common name.
3719 common name.
3713
3720
3714 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3721 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3715 bounding boxes generated by Gnuplot for square plots.
3722 bounding boxes generated by Gnuplot for square plots.
3716
3723
3717 * IPython/genutils.py (popkey): new function added. I should
3724 * IPython/genutils.py (popkey): new function added. I should
3718 suggest this on c.l.py as a dict method, it seems useful.
3725 suggest this on c.l.py as a dict method, it seems useful.
3719
3726
3720 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3727 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3721 to transparently handle PostScript generation. MUCH better than
3728 to transparently handle PostScript generation. MUCH better than
3722 the previous plot_eps/replot_eps (which I removed now). The code
3729 the previous plot_eps/replot_eps (which I removed now). The code
3723 is also fairly clean and well documented now (including
3730 is also fairly clean and well documented now (including
3724 docstrings).
3731 docstrings).
3725
3732
3726 2002-11-13 Fernando Perez <fperez@colorado.edu>
3733 2002-11-13 Fernando Perez <fperez@colorado.edu>
3727
3734
3728 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3735 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3729 (inconsistent with options).
3736 (inconsistent with options).
3730
3737
3731 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3738 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3732 manually disabled, I don't know why. Fixed it.
3739 manually disabled, I don't know why. Fixed it.
3733 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3740 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3734 eps output.
3741 eps output.
3735
3742
3736 2002-11-12 Fernando Perez <fperez@colorado.edu>
3743 2002-11-12 Fernando Perez <fperez@colorado.edu>
3737
3744
3738 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3745 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3739 don't propagate up to caller. Fixes crash reported by François
3746 don't propagate up to caller. Fixes crash reported by François
3740 Pinard.
3747 Pinard.
3741
3748
3742 2002-11-09 Fernando Perez <fperez@colorado.edu>
3749 2002-11-09 Fernando Perez <fperez@colorado.edu>
3743
3750
3744 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3751 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3745 history file for new users.
3752 history file for new users.
3746 (make_IPython): fixed bug where initial install would leave the
3753 (make_IPython): fixed bug where initial install would leave the
3747 user running in the .ipython dir.
3754 user running in the .ipython dir.
3748 (make_IPython): fixed bug where config dir .ipython would be
3755 (make_IPython): fixed bug where config dir .ipython would be
3749 created regardless of the given -ipythondir option. Thanks to Cory
3756 created regardless of the given -ipythondir option. Thanks to Cory
3750 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3757 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3751
3758
3752 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3759 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3753 type confirmations. Will need to use it in all of IPython's code
3760 type confirmations. Will need to use it in all of IPython's code
3754 consistently.
3761 consistently.
3755
3762
3756 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3763 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3757 context to print 31 lines instead of the default 5. This will make
3764 context to print 31 lines instead of the default 5. This will make
3758 the crash reports extremely detailed in case the problem is in
3765 the crash reports extremely detailed in case the problem is in
3759 libraries I don't have access to.
3766 libraries I don't have access to.
3760
3767
3761 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3768 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3762 line of defense' code to still crash, but giving users fair
3769 line of defense' code to still crash, but giving users fair
3763 warning. I don't want internal errors to go unreported: if there's
3770 warning. I don't want internal errors to go unreported: if there's
3764 an internal problem, IPython should crash and generate a full
3771 an internal problem, IPython should crash and generate a full
3765 report.
3772 report.
3766
3773
3767 2002-11-08 Fernando Perez <fperez@colorado.edu>
3774 2002-11-08 Fernando Perez <fperez@colorado.edu>
3768
3775
3769 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3776 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3770 otherwise uncaught exceptions which can appear if people set
3777 otherwise uncaught exceptions which can appear if people set
3771 sys.stdout to something badly broken. Thanks to a crash report
3778 sys.stdout to something badly broken. Thanks to a crash report
3772 from henni-AT-mail.brainbot.com.
3779 from henni-AT-mail.brainbot.com.
3773
3780
3774 2002-11-04 Fernando Perez <fperez@colorado.edu>
3781 2002-11-04 Fernando Perez <fperez@colorado.edu>
3775
3782
3776 * IPython/iplib.py (InteractiveShell.interact): added
3783 * IPython/iplib.py (InteractiveShell.interact): added
3777 __IPYTHON__active to the builtins. It's a flag which goes on when
3784 __IPYTHON__active to the builtins. It's a flag which goes on when
3778 the interaction starts and goes off again when it stops. This
3785 the interaction starts and goes off again when it stops. This
3779 allows embedding code to detect being inside IPython. Before this
3786 allows embedding code to detect being inside IPython. Before this
3780 was done via __IPYTHON__, but that only shows that an IPython
3787 was done via __IPYTHON__, but that only shows that an IPython
3781 instance has been created.
3788 instance has been created.
3782
3789
3783 * IPython/Magic.py (Magic.magic_env): I realized that in a
3790 * IPython/Magic.py (Magic.magic_env): I realized that in a
3784 UserDict, instance.data holds the data as a normal dict. So I
3791 UserDict, instance.data holds the data as a normal dict. So I
3785 modified @env to return os.environ.data instead of rebuilding a
3792 modified @env to return os.environ.data instead of rebuilding a
3786 dict by hand.
3793 dict by hand.
3787
3794
3788 2002-11-02 Fernando Perez <fperez@colorado.edu>
3795 2002-11-02 Fernando Perez <fperez@colorado.edu>
3789
3796
3790 * IPython/genutils.py (warn): changed so that level 1 prints no
3797 * IPython/genutils.py (warn): changed so that level 1 prints no
3791 header. Level 2 is now the default (with 'WARNING' header, as
3798 header. Level 2 is now the default (with 'WARNING' header, as
3792 before). I think I tracked all places where changes were needed in
3799 before). I think I tracked all places where changes were needed in
3793 IPython, but outside code using the old level numbering may have
3800 IPython, but outside code using the old level numbering may have
3794 broken.
3801 broken.
3795
3802
3796 * IPython/iplib.py (InteractiveShell.runcode): added this to
3803 * IPython/iplib.py (InteractiveShell.runcode): added this to
3797 handle the tracebacks in SystemExit traps correctly. The previous
3804 handle the tracebacks in SystemExit traps correctly. The previous
3798 code (through interact) was printing more of the stack than
3805 code (through interact) was printing more of the stack than
3799 necessary, showing IPython internal code to the user.
3806 necessary, showing IPython internal code to the user.
3800
3807
3801 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3808 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3802 default. Now that the default at the confirmation prompt is yes,
3809 default. Now that the default at the confirmation prompt is yes,
3803 it's not so intrusive. François' argument that ipython sessions
3810 it's not so intrusive. François' argument that ipython sessions
3804 tend to be complex enough not to lose them from an accidental C-d,
3811 tend to be complex enough not to lose them from an accidental C-d,
3805 is a valid one.
3812 is a valid one.
3806
3813
3807 * IPython/iplib.py (InteractiveShell.interact): added a
3814 * IPython/iplib.py (InteractiveShell.interact): added a
3808 showtraceback() call to the SystemExit trap, and modified the exit
3815 showtraceback() call to the SystemExit trap, and modified the exit
3809 confirmation to have yes as the default.
3816 confirmation to have yes as the default.
3810
3817
3811 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3818 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3812 this file. It's been gone from the code for a long time, this was
3819 this file. It's been gone from the code for a long time, this was
3813 simply leftover junk.
3820 simply leftover junk.
3814
3821
3815 2002-11-01 Fernando Perez <fperez@colorado.edu>
3822 2002-11-01 Fernando Perez <fperez@colorado.edu>
3816
3823
3817 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3824 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3818 added. If set, IPython now traps EOF and asks for
3825 added. If set, IPython now traps EOF and asks for
3819 confirmation. After a request by François Pinard.
3826 confirmation. After a request by François Pinard.
3820
3827
3821 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3828 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3822 of @abort, and with a new (better) mechanism for handling the
3829 of @abort, and with a new (better) mechanism for handling the
3823 exceptions.
3830 exceptions.
3824
3831
3825 2002-10-27 Fernando Perez <fperez@colorado.edu>
3832 2002-10-27 Fernando Perez <fperez@colorado.edu>
3826
3833
3827 * IPython/usage.py (__doc__): updated the --help information and
3834 * IPython/usage.py (__doc__): updated the --help information and
3828 the ipythonrc file to indicate that -log generates
3835 the ipythonrc file to indicate that -log generates
3829 ./ipython.log. Also fixed the corresponding info in @logstart.
3836 ./ipython.log. Also fixed the corresponding info in @logstart.
3830 This and several other fixes in the manuals thanks to reports by
3837 This and several other fixes in the manuals thanks to reports by
3831 François Pinard <pinard-AT-iro.umontreal.ca>.
3838 François Pinard <pinard-AT-iro.umontreal.ca>.
3832
3839
3833 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3840 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3834 refer to @logstart (instead of @log, which doesn't exist).
3841 refer to @logstart (instead of @log, which doesn't exist).
3835
3842
3836 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3843 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3837 AttributeError crash. Thanks to Christopher Armstrong
3844 AttributeError crash. Thanks to Christopher Armstrong
3838 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3845 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3839 introduced recently (in 0.2.14pre37) with the fix to the eval
3846 introduced recently (in 0.2.14pre37) with the fix to the eval
3840 problem mentioned below.
3847 problem mentioned below.
3841
3848
3842 2002-10-17 Fernando Perez <fperez@colorado.edu>
3849 2002-10-17 Fernando Perez <fperez@colorado.edu>
3843
3850
3844 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3851 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3845 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3852 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3846
3853
3847 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3854 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3848 this function to fix a problem reported by Alex Schmolck. He saw
3855 this function to fix a problem reported by Alex Schmolck. He saw
3849 it with list comprehensions and generators, which were getting
3856 it with list comprehensions and generators, which were getting
3850 called twice. The real problem was an 'eval' call in testing for
3857 called twice. The real problem was an 'eval' call in testing for
3851 automagic which was evaluating the input line silently.
3858 automagic which was evaluating the input line silently.
3852
3859
3853 This is a potentially very nasty bug, if the input has side
3860 This is a potentially very nasty bug, if the input has side
3854 effects which must not be repeated. The code is much cleaner now,
3861 effects which must not be repeated. The code is much cleaner now,
3855 without any blanket 'except' left and with a regexp test for
3862 without any blanket 'except' left and with a regexp test for
3856 actual function names.
3863 actual function names.
3857
3864
3858 But an eval remains, which I'm not fully comfortable with. I just
3865 But an eval remains, which I'm not fully comfortable with. I just
3859 don't know how to find out if an expression could be a callable in
3866 don't know how to find out if an expression could be a callable in
3860 the user's namespace without doing an eval on the string. However
3867 the user's namespace without doing an eval on the string. However
3861 that string is now much more strictly checked so that no code
3868 that string is now much more strictly checked so that no code
3862 slips by, so the eval should only happen for things that can
3869 slips by, so the eval should only happen for things that can
3863 really be only function/method names.
3870 really be only function/method names.
3864
3871
3865 2002-10-15 Fernando Perez <fperez@colorado.edu>
3872 2002-10-15 Fernando Perez <fperez@colorado.edu>
3866
3873
3867 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3874 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3868 OSX information to main manual, removed README_Mac_OSX file from
3875 OSX information to main manual, removed README_Mac_OSX file from
3869 distribution. Also updated credits for recent additions.
3876 distribution. Also updated credits for recent additions.
3870
3877
3871 2002-10-10 Fernando Perez <fperez@colorado.edu>
3878 2002-10-10 Fernando Perez <fperez@colorado.edu>
3872
3879
3873 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3880 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3874 terminal-related issues. Many thanks to Andrea Riciputi
3881 terminal-related issues. Many thanks to Andrea Riciputi
3875 <andrea.riciputi-AT-libero.it> for writing it.
3882 <andrea.riciputi-AT-libero.it> for writing it.
3876
3883
3877 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3884 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3878 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3885 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3879
3886
3880 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3887 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3881 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3888 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3882 <syver-en-AT-online.no> who both submitted patches for this problem.
3889 <syver-en-AT-online.no> who both submitted patches for this problem.
3883
3890
3884 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3891 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3885 global embedding to make sure that things don't overwrite user
3892 global embedding to make sure that things don't overwrite user
3886 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3893 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3887
3894
3888 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3895 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3889 compatibility. Thanks to Hayden Callow
3896 compatibility. Thanks to Hayden Callow
3890 <h.callow-AT-elec.canterbury.ac.nz>
3897 <h.callow-AT-elec.canterbury.ac.nz>
3891
3898
3892 2002-10-04 Fernando Perez <fperez@colorado.edu>
3899 2002-10-04 Fernando Perez <fperez@colorado.edu>
3893
3900
3894 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3901 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3895 Gnuplot.File objects.
3902 Gnuplot.File objects.
3896
3903
3897 2002-07-23 Fernando Perez <fperez@colorado.edu>
3904 2002-07-23 Fernando Perez <fperez@colorado.edu>
3898
3905
3899 * IPython/genutils.py (timing): Added timings() and timing() for
3906 * IPython/genutils.py (timing): Added timings() and timing() for
3900 quick access to the most commonly needed data, the execution
3907 quick access to the most commonly needed data, the execution
3901 times. Old timing() renamed to timings_out().
3908 times. Old timing() renamed to timings_out().
3902
3909
3903 2002-07-18 Fernando Perez <fperez@colorado.edu>
3910 2002-07-18 Fernando Perez <fperez@colorado.edu>
3904
3911
3905 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3912 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3906 bug with nested instances disrupting the parent's tab completion.
3913 bug with nested instances disrupting the parent's tab completion.
3907
3914
3908 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3915 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3909 all_completions code to begin the emacs integration.
3916 all_completions code to begin the emacs integration.
3910
3917
3911 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3918 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3912 argument to allow titling individual arrays when plotting.
3919 argument to allow titling individual arrays when plotting.
3913
3920
3914 2002-07-15 Fernando Perez <fperez@colorado.edu>
3921 2002-07-15 Fernando Perez <fperez@colorado.edu>
3915
3922
3916 * setup.py (make_shortcut): changed to retrieve the value of
3923 * setup.py (make_shortcut): changed to retrieve the value of
3917 'Program Files' directory from the registry (this value changes in
3924 'Program Files' directory from the registry (this value changes in
3918 non-english versions of Windows). Thanks to Thomas Fanslau
3925 non-english versions of Windows). Thanks to Thomas Fanslau
3919 <tfanslau-AT-gmx.de> for the report.
3926 <tfanslau-AT-gmx.de> for the report.
3920
3927
3921 2002-07-10 Fernando Perez <fperez@colorado.edu>
3928 2002-07-10 Fernando Perez <fperez@colorado.edu>
3922
3929
3923 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3930 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3924 a bug in pdb, which crashes if a line with only whitespace is
3931 a bug in pdb, which crashes if a line with only whitespace is
3925 entered. Bug report submitted to sourceforge.
3932 entered. Bug report submitted to sourceforge.
3926
3933
3927 2002-07-09 Fernando Perez <fperez@colorado.edu>
3934 2002-07-09 Fernando Perez <fperez@colorado.edu>
3928
3935
3929 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3936 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3930 reporting exceptions (it's a bug in inspect.py, I just set a
3937 reporting exceptions (it's a bug in inspect.py, I just set a
3931 workaround).
3938 workaround).
3932
3939
3933 2002-07-08 Fernando Perez <fperez@colorado.edu>
3940 2002-07-08 Fernando Perez <fperez@colorado.edu>
3934
3941
3935 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3942 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3936 __IPYTHON__ in __builtins__ to show up in user_ns.
3943 __IPYTHON__ in __builtins__ to show up in user_ns.
3937
3944
3938 2002-07-03 Fernando Perez <fperez@colorado.edu>
3945 2002-07-03 Fernando Perez <fperez@colorado.edu>
3939
3946
3940 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3947 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3941 name from @gp_set_instance to @gp_set_default.
3948 name from @gp_set_instance to @gp_set_default.
3942
3949
3943 * IPython/ipmaker.py (make_IPython): default editor value set to
3950 * IPython/ipmaker.py (make_IPython): default editor value set to
3944 '0' (a string), to match the rc file. Otherwise will crash when
3951 '0' (a string), to match the rc file. Otherwise will crash when
3945 .strip() is called on it.
3952 .strip() is called on it.
3946
3953
3947
3954
3948 2002-06-28 Fernando Perez <fperez@colorado.edu>
3955 2002-06-28 Fernando Perez <fperez@colorado.edu>
3949
3956
3950 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3957 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3951 of files in current directory when a file is executed via
3958 of files in current directory when a file is executed via
3952 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3959 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3953
3960
3954 * setup.py (manfiles): fix for rpm builds, submitted by RA
3961 * setup.py (manfiles): fix for rpm builds, submitted by RA
3955 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3962 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3956
3963
3957 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3964 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3958 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3965 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3959 string!). A. Schmolck caught this one.
3966 string!). A. Schmolck caught this one.
3960
3967
3961 2002-06-27 Fernando Perez <fperez@colorado.edu>
3968 2002-06-27 Fernando Perez <fperez@colorado.edu>
3962
3969
3963 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3970 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3964 defined files at the cmd line. __name__ wasn't being set to
3971 defined files at the cmd line. __name__ wasn't being set to
3965 __main__.
3972 __main__.
3966
3973
3967 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3974 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3968 regular lists and tuples besides Numeric arrays.
3975 regular lists and tuples besides Numeric arrays.
3969
3976
3970 * IPython/Prompts.py (CachedOutput.__call__): Added output
3977 * IPython/Prompts.py (CachedOutput.__call__): Added output
3971 supression for input ending with ';'. Similar to Mathematica and
3978 supression for input ending with ';'. Similar to Mathematica and
3972 Matlab. The _* vars and Out[] list are still updated, just like
3979 Matlab. The _* vars and Out[] list are still updated, just like
3973 Mathematica behaves.
3980 Mathematica behaves.
3974
3981
3975 2002-06-25 Fernando Perez <fperez@colorado.edu>
3982 2002-06-25 Fernando Perez <fperez@colorado.edu>
3976
3983
3977 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3984 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3978 .ini extensions for profiels under Windows.
3985 .ini extensions for profiels under Windows.
3979
3986
3980 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3987 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3981 string form. Fix contributed by Alexander Schmolck
3988 string form. Fix contributed by Alexander Schmolck
3982 <a.schmolck-AT-gmx.net>
3989 <a.schmolck-AT-gmx.net>
3983
3990
3984 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3991 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3985 pre-configured Gnuplot instance.
3992 pre-configured Gnuplot instance.
3986
3993
3987 2002-06-21 Fernando Perez <fperez@colorado.edu>
3994 2002-06-21 Fernando Perez <fperez@colorado.edu>
3988
3995
3989 * IPython/numutils.py (exp_safe): new function, works around the
3996 * IPython/numutils.py (exp_safe): new function, works around the
3990 underflow problems in Numeric.
3997 underflow problems in Numeric.
3991 (log2): New fn. Safe log in base 2: returns exact integer answer
3998 (log2): New fn. Safe log in base 2: returns exact integer answer
3992 for exact integer powers of 2.
3999 for exact integer powers of 2.
3993
4000
3994 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4001 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3995 properly.
4002 properly.
3996
4003
3997 2002-06-20 Fernando Perez <fperez@colorado.edu>
4004 2002-06-20 Fernando Perez <fperez@colorado.edu>
3998
4005
3999 * IPython/genutils.py (timing): new function like
4006 * IPython/genutils.py (timing): new function like
4000 Mathematica's. Similar to time_test, but returns more info.
4007 Mathematica's. Similar to time_test, but returns more info.
4001
4008
4002 2002-06-18 Fernando Perez <fperez@colorado.edu>
4009 2002-06-18 Fernando Perez <fperez@colorado.edu>
4003
4010
4004 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4011 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4005 according to Mike Heeter's suggestions.
4012 according to Mike Heeter's suggestions.
4006
4013
4007 2002-06-16 Fernando Perez <fperez@colorado.edu>
4014 2002-06-16 Fernando Perez <fperez@colorado.edu>
4008
4015
4009 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4016 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4010 system. GnuplotMagic is gone as a user-directory option. New files
4017 system. GnuplotMagic is gone as a user-directory option. New files
4011 make it easier to use all the gnuplot stuff both from external
4018 make it easier to use all the gnuplot stuff both from external
4012 programs as well as from IPython. Had to rewrite part of
4019 programs as well as from IPython. Had to rewrite part of
4013 hardcopy() b/c of a strange bug: often the ps files simply don't
4020 hardcopy() b/c of a strange bug: often the ps files simply don't
4014 get created, and require a repeat of the command (often several
4021 get created, and require a repeat of the command (often several
4015 times).
4022 times).
4016
4023
4017 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4024 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4018 resolve output channel at call time, so that if sys.stderr has
4025 resolve output channel at call time, so that if sys.stderr has
4019 been redirected by user this gets honored.
4026 been redirected by user this gets honored.
4020
4027
4021 2002-06-13 Fernando Perez <fperez@colorado.edu>
4028 2002-06-13 Fernando Perez <fperez@colorado.edu>
4022
4029
4023 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4030 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4024 IPShell. Kept a copy with the old names to avoid breaking people's
4031 IPShell. Kept a copy with the old names to avoid breaking people's
4025 embedded code.
4032 embedded code.
4026
4033
4027 * IPython/ipython: simplified it to the bare minimum after
4034 * IPython/ipython: simplified it to the bare minimum after
4028 Holger's suggestions. Added info about how to use it in
4035 Holger's suggestions. Added info about how to use it in
4029 PYTHONSTARTUP.
4036 PYTHONSTARTUP.
4030
4037
4031 * IPython/Shell.py (IPythonShell): changed the options passing
4038 * IPython/Shell.py (IPythonShell): changed the options passing
4032 from a string with funky %s replacements to a straight list. Maybe
4039 from a string with funky %s replacements to a straight list. Maybe
4033 a bit more typing, but it follows sys.argv conventions, so there's
4040 a bit more typing, but it follows sys.argv conventions, so there's
4034 less special-casing to remember.
4041 less special-casing to remember.
4035
4042
4036 2002-06-12 Fernando Perez <fperez@colorado.edu>
4043 2002-06-12 Fernando Perez <fperez@colorado.edu>
4037
4044
4038 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4045 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4039 command. Thanks to a suggestion by Mike Heeter.
4046 command. Thanks to a suggestion by Mike Heeter.
4040 (Magic.magic_pfile): added behavior to look at filenames if given
4047 (Magic.magic_pfile): added behavior to look at filenames if given
4041 arg is not a defined object.
4048 arg is not a defined object.
4042 (Magic.magic_save): New @save function to save code snippets. Also
4049 (Magic.magic_save): New @save function to save code snippets. Also
4043 a Mike Heeter idea.
4050 a Mike Heeter idea.
4044
4051
4045 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4052 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4046 plot() and replot(). Much more convenient now, especially for
4053 plot() and replot(). Much more convenient now, especially for
4047 interactive use.
4054 interactive use.
4048
4055
4049 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4056 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4050 filenames.
4057 filenames.
4051
4058
4052 2002-06-02 Fernando Perez <fperez@colorado.edu>
4059 2002-06-02 Fernando Perez <fperez@colorado.edu>
4053
4060
4054 * IPython/Struct.py (Struct.__init__): modified to admit
4061 * IPython/Struct.py (Struct.__init__): modified to admit
4055 initialization via another struct.
4062 initialization via another struct.
4056
4063
4057 * IPython/genutils.py (SystemExec.__init__): New stateful
4064 * IPython/genutils.py (SystemExec.__init__): New stateful
4058 interface to xsys and bq. Useful for writing system scripts.
4065 interface to xsys and bq. Useful for writing system scripts.
4059
4066
4060 2002-05-30 Fernando Perez <fperez@colorado.edu>
4067 2002-05-30 Fernando Perez <fperez@colorado.edu>
4061
4068
4062 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4069 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4063 documents. This will make the user download smaller (it's getting
4070 documents. This will make the user download smaller (it's getting
4064 too big).
4071 too big).
4065
4072
4066 2002-05-29 Fernando Perez <fperez@colorado.edu>
4073 2002-05-29 Fernando Perez <fperez@colorado.edu>
4067
4074
4068 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4075 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4069 fix problems with shelve and pickle. Seems to work, but I don't
4076 fix problems with shelve and pickle. Seems to work, but I don't
4070 know if corner cases break it. Thanks to Mike Heeter
4077 know if corner cases break it. Thanks to Mike Heeter
4071 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4078 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4072
4079
4073 2002-05-24 Fernando Perez <fperez@colorado.edu>
4080 2002-05-24 Fernando Perez <fperez@colorado.edu>
4074
4081
4075 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4082 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4076 macros having broken.
4083 macros having broken.
4077
4084
4078 2002-05-21 Fernando Perez <fperez@colorado.edu>
4085 2002-05-21 Fernando Perez <fperez@colorado.edu>
4079
4086
4080 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4087 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4081 introduced logging bug: all history before logging started was
4088 introduced logging bug: all history before logging started was
4082 being written one character per line! This came from the redesign
4089 being written one character per line! This came from the redesign
4083 of the input history as a special list which slices to strings,
4090 of the input history as a special list which slices to strings,
4084 not to lists.
4091 not to lists.
4085
4092
4086 2002-05-20 Fernando Perez <fperez@colorado.edu>
4093 2002-05-20 Fernando Perez <fperez@colorado.edu>
4087
4094
4088 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4095 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4089 be an attribute of all classes in this module. The design of these
4096 be an attribute of all classes in this module. The design of these
4090 classes needs some serious overhauling.
4097 classes needs some serious overhauling.
4091
4098
4092 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4099 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4093 which was ignoring '_' in option names.
4100 which was ignoring '_' in option names.
4094
4101
4095 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4102 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4096 'Verbose_novars' to 'Context' and made it the new default. It's a
4103 'Verbose_novars' to 'Context' and made it the new default. It's a
4097 bit more readable and also safer than verbose.
4104 bit more readable and also safer than verbose.
4098
4105
4099 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4106 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4100 triple-quoted strings.
4107 triple-quoted strings.
4101
4108
4102 * IPython/OInspect.py (__all__): new module exposing the object
4109 * IPython/OInspect.py (__all__): new module exposing the object
4103 introspection facilities. Now the corresponding magics are dummy
4110 introspection facilities. Now the corresponding magics are dummy
4104 wrappers around this. Having this module will make it much easier
4111 wrappers around this. Having this module will make it much easier
4105 to put these functions into our modified pdb.
4112 to put these functions into our modified pdb.
4106 This new object inspector system uses the new colorizing module,
4113 This new object inspector system uses the new colorizing module,
4107 so source code and other things are nicely syntax highlighted.
4114 so source code and other things are nicely syntax highlighted.
4108
4115
4109 2002-05-18 Fernando Perez <fperez@colorado.edu>
4116 2002-05-18 Fernando Perez <fperez@colorado.edu>
4110
4117
4111 * IPython/ColorANSI.py: Split the coloring tools into a separate
4118 * IPython/ColorANSI.py: Split the coloring tools into a separate
4112 module so I can use them in other code easier (they were part of
4119 module so I can use them in other code easier (they were part of
4113 ultraTB).
4120 ultraTB).
4114
4121
4115 2002-05-17 Fernando Perez <fperez@colorado.edu>
4122 2002-05-17 Fernando Perez <fperez@colorado.edu>
4116
4123
4117 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4124 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4118 fixed it to set the global 'g' also to the called instance, as
4125 fixed it to set the global 'g' also to the called instance, as
4119 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4126 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4120 user's 'g' variables).
4127 user's 'g' variables).
4121
4128
4122 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4129 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4123 global variables (aliases to _ih,_oh) so that users which expect
4130 global variables (aliases to _ih,_oh) so that users which expect
4124 In[5] or Out[7] to work aren't unpleasantly surprised.
4131 In[5] or Out[7] to work aren't unpleasantly surprised.
4125 (InputList.__getslice__): new class to allow executing slices of
4132 (InputList.__getslice__): new class to allow executing slices of
4126 input history directly. Very simple class, complements the use of
4133 input history directly. Very simple class, complements the use of
4127 macros.
4134 macros.
4128
4135
4129 2002-05-16 Fernando Perez <fperez@colorado.edu>
4136 2002-05-16 Fernando Perez <fperez@colorado.edu>
4130
4137
4131 * setup.py (docdirbase): make doc directory be just doc/IPython
4138 * setup.py (docdirbase): make doc directory be just doc/IPython
4132 without version numbers, it will reduce clutter for users.
4139 without version numbers, it will reduce clutter for users.
4133
4140
4134 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4141 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4135 execfile call to prevent possible memory leak. See for details:
4142 execfile call to prevent possible memory leak. See for details:
4136 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4143 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4137
4144
4138 2002-05-15 Fernando Perez <fperez@colorado.edu>
4145 2002-05-15 Fernando Perez <fperez@colorado.edu>
4139
4146
4140 * IPython/Magic.py (Magic.magic_psource): made the object
4147 * IPython/Magic.py (Magic.magic_psource): made the object
4141 introspection names be more standard: pdoc, pdef, pfile and
4148 introspection names be more standard: pdoc, pdef, pfile and
4142 psource. They all print/page their output, and it makes
4149 psource. They all print/page their output, and it makes
4143 remembering them easier. Kept old names for compatibility as
4150 remembering them easier. Kept old names for compatibility as
4144 aliases.
4151 aliases.
4145
4152
4146 2002-05-14 Fernando Perez <fperez@colorado.edu>
4153 2002-05-14 Fernando Perez <fperez@colorado.edu>
4147
4154
4148 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4155 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4149 what the mouse problem was. The trick is to use gnuplot with temp
4156 what the mouse problem was. The trick is to use gnuplot with temp
4150 files and NOT with pipes (for data communication), because having
4157 files and NOT with pipes (for data communication), because having
4151 both pipes and the mouse on is bad news.
4158 both pipes and the mouse on is bad news.
4152
4159
4153 2002-05-13 Fernando Perez <fperez@colorado.edu>
4160 2002-05-13 Fernando Perez <fperez@colorado.edu>
4154
4161
4155 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4162 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4156 bug. Information would be reported about builtins even when
4163 bug. Information would be reported about builtins even when
4157 user-defined functions overrode them.
4164 user-defined functions overrode them.
4158
4165
4159 2002-05-11 Fernando Perez <fperez@colorado.edu>
4166 2002-05-11 Fernando Perez <fperez@colorado.edu>
4160
4167
4161 * IPython/__init__.py (__all__): removed FlexCompleter from
4168 * IPython/__init__.py (__all__): removed FlexCompleter from
4162 __all__ so that things don't fail in platforms without readline.
4169 __all__ so that things don't fail in platforms without readline.
4163
4170
4164 2002-05-10 Fernando Perez <fperez@colorado.edu>
4171 2002-05-10 Fernando Perez <fperez@colorado.edu>
4165
4172
4166 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4173 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4167 it requires Numeric, effectively making Numeric a dependency for
4174 it requires Numeric, effectively making Numeric a dependency for
4168 IPython.
4175 IPython.
4169
4176
4170 * Released 0.2.13
4177 * Released 0.2.13
4171
4178
4172 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4179 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4173 profiler interface. Now all the major options from the profiler
4180 profiler interface. Now all the major options from the profiler
4174 module are directly supported in IPython, both for single
4181 module are directly supported in IPython, both for single
4175 expressions (@prun) and for full programs (@run -p).
4182 expressions (@prun) and for full programs (@run -p).
4176
4183
4177 2002-05-09 Fernando Perez <fperez@colorado.edu>
4184 2002-05-09 Fernando Perez <fperez@colorado.edu>
4178
4185
4179 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4186 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4180 magic properly formatted for screen.
4187 magic properly formatted for screen.
4181
4188
4182 * setup.py (make_shortcut): Changed things to put pdf version in
4189 * setup.py (make_shortcut): Changed things to put pdf version in
4183 doc/ instead of doc/manual (had to change lyxport a bit).
4190 doc/ instead of doc/manual (had to change lyxport a bit).
4184
4191
4185 * IPython/Magic.py (Profile.string_stats): made profile runs go
4192 * IPython/Magic.py (Profile.string_stats): made profile runs go
4186 through pager (they are long and a pager allows searching, saving,
4193 through pager (they are long and a pager allows searching, saving,
4187 etc.)
4194 etc.)
4188
4195
4189 2002-05-08 Fernando Perez <fperez@colorado.edu>
4196 2002-05-08 Fernando Perez <fperez@colorado.edu>
4190
4197
4191 * Released 0.2.12
4198 * Released 0.2.12
4192
4199
4193 2002-05-06 Fernando Perez <fperez@colorado.edu>
4200 2002-05-06 Fernando Perez <fperez@colorado.edu>
4194
4201
4195 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4202 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4196 introduced); 'hist n1 n2' was broken.
4203 introduced); 'hist n1 n2' was broken.
4197 (Magic.magic_pdb): added optional on/off arguments to @pdb
4204 (Magic.magic_pdb): added optional on/off arguments to @pdb
4198 (Magic.magic_run): added option -i to @run, which executes code in
4205 (Magic.magic_run): added option -i to @run, which executes code in
4199 the IPython namespace instead of a clean one. Also added @irun as
4206 the IPython namespace instead of a clean one. Also added @irun as
4200 an alias to @run -i.
4207 an alias to @run -i.
4201
4208
4202 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4209 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4203 fixed (it didn't really do anything, the namespaces were wrong).
4210 fixed (it didn't really do anything, the namespaces were wrong).
4204
4211
4205 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4212 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4206
4213
4207 * IPython/__init__.py (__all__): Fixed package namespace, now
4214 * IPython/__init__.py (__all__): Fixed package namespace, now
4208 'import IPython' does give access to IPython.<all> as
4215 'import IPython' does give access to IPython.<all> as
4209 expected. Also renamed __release__ to Release.
4216 expected. Also renamed __release__ to Release.
4210
4217
4211 * IPython/Debugger.py (__license__): created new Pdb class which
4218 * IPython/Debugger.py (__license__): created new Pdb class which
4212 functions like a drop-in for the normal pdb.Pdb but does NOT
4219 functions like a drop-in for the normal pdb.Pdb but does NOT
4213 import readline by default. This way it doesn't muck up IPython's
4220 import readline by default. This way it doesn't muck up IPython's
4214 readline handling, and now tab-completion finally works in the
4221 readline handling, and now tab-completion finally works in the
4215 debugger -- sort of. It completes things globally visible, but the
4222 debugger -- sort of. It completes things globally visible, but the
4216 completer doesn't track the stack as pdb walks it. That's a bit
4223 completer doesn't track the stack as pdb walks it. That's a bit
4217 tricky, and I'll have to implement it later.
4224 tricky, and I'll have to implement it later.
4218
4225
4219 2002-05-05 Fernando Perez <fperez@colorado.edu>
4226 2002-05-05 Fernando Perez <fperez@colorado.edu>
4220
4227
4221 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4228 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4222 magic docstrings when printed via ? (explicit \'s were being
4229 magic docstrings when printed via ? (explicit \'s were being
4223 printed).
4230 printed).
4224
4231
4225 * IPython/ipmaker.py (make_IPython): fixed namespace
4232 * IPython/ipmaker.py (make_IPython): fixed namespace
4226 identification bug. Now variables loaded via logs or command-line
4233 identification bug. Now variables loaded via logs or command-line
4227 files are recognized in the interactive namespace by @who.
4234 files are recognized in the interactive namespace by @who.
4228
4235
4229 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4236 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4230 log replay system stemming from the string form of Structs.
4237 log replay system stemming from the string form of Structs.
4231
4238
4232 * IPython/Magic.py (Macro.__init__): improved macros to properly
4239 * IPython/Magic.py (Macro.__init__): improved macros to properly
4233 handle magic commands in them.
4240 handle magic commands in them.
4234 (Magic.magic_logstart): usernames are now expanded so 'logstart
4241 (Magic.magic_logstart): usernames are now expanded so 'logstart
4235 ~/mylog' now works.
4242 ~/mylog' now works.
4236
4243
4237 * IPython/iplib.py (complete): fixed bug where paths starting with
4244 * IPython/iplib.py (complete): fixed bug where paths starting with
4238 '/' would be completed as magic names.
4245 '/' would be completed as magic names.
4239
4246
4240 2002-05-04 Fernando Perez <fperez@colorado.edu>
4247 2002-05-04 Fernando Perez <fperez@colorado.edu>
4241
4248
4242 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4249 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4243 allow running full programs under the profiler's control.
4250 allow running full programs under the profiler's control.
4244
4251
4245 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4252 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4246 mode to report exceptions verbosely but without formatting
4253 mode to report exceptions verbosely but without formatting
4247 variables. This addresses the issue of ipython 'freezing' (it's
4254 variables. This addresses the issue of ipython 'freezing' (it's
4248 not frozen, but caught in an expensive formatting loop) when huge
4255 not frozen, but caught in an expensive formatting loop) when huge
4249 variables are in the context of an exception.
4256 variables are in the context of an exception.
4250 (VerboseTB.text): Added '--->' markers at line where exception was
4257 (VerboseTB.text): Added '--->' markers at line where exception was
4251 triggered. Much clearer to read, especially in NoColor modes.
4258 triggered. Much clearer to read, especially in NoColor modes.
4252
4259
4253 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4260 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4254 implemented in reverse when changing to the new parse_options().
4261 implemented in reverse when changing to the new parse_options().
4255
4262
4256 2002-05-03 Fernando Perez <fperez@colorado.edu>
4263 2002-05-03 Fernando Perez <fperez@colorado.edu>
4257
4264
4258 * IPython/Magic.py (Magic.parse_options): new function so that
4265 * IPython/Magic.py (Magic.parse_options): new function so that
4259 magics can parse options easier.
4266 magics can parse options easier.
4260 (Magic.magic_prun): new function similar to profile.run(),
4267 (Magic.magic_prun): new function similar to profile.run(),
4261 suggested by Chris Hart.
4268 suggested by Chris Hart.
4262 (Magic.magic_cd): fixed behavior so that it only changes if
4269 (Magic.magic_cd): fixed behavior so that it only changes if
4263 directory actually is in history.
4270 directory actually is in history.
4264
4271
4265 * IPython/usage.py (__doc__): added information about potential
4272 * IPython/usage.py (__doc__): added information about potential
4266 slowness of Verbose exception mode when there are huge data
4273 slowness of Verbose exception mode when there are huge data
4267 structures to be formatted (thanks to Archie Paulson).
4274 structures to be formatted (thanks to Archie Paulson).
4268
4275
4269 * IPython/ipmaker.py (make_IPython): Changed default logging
4276 * IPython/ipmaker.py (make_IPython): Changed default logging
4270 (when simply called with -log) to use curr_dir/ipython.log in
4277 (when simply called with -log) to use curr_dir/ipython.log in
4271 rotate mode. Fixed crash which was occuring with -log before
4278 rotate mode. Fixed crash which was occuring with -log before
4272 (thanks to Jim Boyle).
4279 (thanks to Jim Boyle).
4273
4280
4274 2002-05-01 Fernando Perez <fperez@colorado.edu>
4281 2002-05-01 Fernando Perez <fperez@colorado.edu>
4275
4282
4276 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4283 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4277 was nasty -- though somewhat of a corner case).
4284 was nasty -- though somewhat of a corner case).
4278
4285
4279 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4286 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4280 text (was a bug).
4287 text (was a bug).
4281
4288
4282 2002-04-30 Fernando Perez <fperez@colorado.edu>
4289 2002-04-30 Fernando Perez <fperez@colorado.edu>
4283
4290
4284 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4291 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4285 a print after ^D or ^C from the user so that the In[] prompt
4292 a print after ^D or ^C from the user so that the In[] prompt
4286 doesn't over-run the gnuplot one.
4293 doesn't over-run the gnuplot one.
4287
4294
4288 2002-04-29 Fernando Perez <fperez@colorado.edu>
4295 2002-04-29 Fernando Perez <fperez@colorado.edu>
4289
4296
4290 * Released 0.2.10
4297 * Released 0.2.10
4291
4298
4292 * IPython/__release__.py (version): get date dynamically.
4299 * IPython/__release__.py (version): get date dynamically.
4293
4300
4294 * Misc. documentation updates thanks to Arnd's comments. Also ran
4301 * Misc. documentation updates thanks to Arnd's comments. Also ran
4295 a full spellcheck on the manual (hadn't been done in a while).
4302 a full spellcheck on the manual (hadn't been done in a while).
4296
4303
4297 2002-04-27 Fernando Perez <fperez@colorado.edu>
4304 2002-04-27 Fernando Perez <fperez@colorado.edu>
4298
4305
4299 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4306 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4300 starting a log in mid-session would reset the input history list.
4307 starting a log in mid-session would reset the input history list.
4301
4308
4302 2002-04-26 Fernando Perez <fperez@colorado.edu>
4309 2002-04-26 Fernando Perez <fperez@colorado.edu>
4303
4310
4304 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4311 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4305 all files were being included in an update. Now anything in
4312 all files were being included in an update. Now anything in
4306 UserConfig that matches [A-Za-z]*.py will go (this excludes
4313 UserConfig that matches [A-Za-z]*.py will go (this excludes
4307 __init__.py)
4314 __init__.py)
4308
4315
4309 2002-04-25 Fernando Perez <fperez@colorado.edu>
4316 2002-04-25 Fernando Perez <fperez@colorado.edu>
4310
4317
4311 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4318 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4312 to __builtins__ so that any form of embedded or imported code can
4319 to __builtins__ so that any form of embedded or imported code can
4313 test for being inside IPython.
4320 test for being inside IPython.
4314
4321
4315 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4322 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4316 changed to GnuplotMagic because it's now an importable module,
4323 changed to GnuplotMagic because it's now an importable module,
4317 this makes the name follow that of the standard Gnuplot module.
4324 this makes the name follow that of the standard Gnuplot module.
4318 GnuplotMagic can now be loaded at any time in mid-session.
4325 GnuplotMagic can now be loaded at any time in mid-session.
4319
4326
4320 2002-04-24 Fernando Perez <fperez@colorado.edu>
4327 2002-04-24 Fernando Perez <fperez@colorado.edu>
4321
4328
4322 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4329 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4323 the globals (IPython has its own namespace) and the
4330 the globals (IPython has its own namespace) and the
4324 PhysicalQuantity stuff is much better anyway.
4331 PhysicalQuantity stuff is much better anyway.
4325
4332
4326 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4333 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4327 embedding example to standard user directory for
4334 embedding example to standard user directory for
4328 distribution. Also put it in the manual.
4335 distribution. Also put it in the manual.
4329
4336
4330 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4337 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4331 instance as first argument (so it doesn't rely on some obscure
4338 instance as first argument (so it doesn't rely on some obscure
4332 hidden global).
4339 hidden global).
4333
4340
4334 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4341 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4335 delimiters. While it prevents ().TAB from working, it allows
4342 delimiters. While it prevents ().TAB from working, it allows
4336 completions in open (... expressions. This is by far a more common
4343 completions in open (... expressions. This is by far a more common
4337 case.
4344 case.
4338
4345
4339 2002-04-23 Fernando Perez <fperez@colorado.edu>
4346 2002-04-23 Fernando Perez <fperez@colorado.edu>
4340
4347
4341 * IPython/Extensions/InterpreterPasteInput.py: new
4348 * IPython/Extensions/InterpreterPasteInput.py: new
4342 syntax-processing module for pasting lines with >>> or ... at the
4349 syntax-processing module for pasting lines with >>> or ... at the
4343 start.
4350 start.
4344
4351
4345 * IPython/Extensions/PhysicalQ_Interactive.py
4352 * IPython/Extensions/PhysicalQ_Interactive.py
4346 (PhysicalQuantityInteractive.__int__): fixed to work with either
4353 (PhysicalQuantityInteractive.__int__): fixed to work with either
4347 Numeric or math.
4354 Numeric or math.
4348
4355
4349 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4356 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4350 provided profiles. Now we have:
4357 provided profiles. Now we have:
4351 -math -> math module as * and cmath with its own namespace.
4358 -math -> math module as * and cmath with its own namespace.
4352 -numeric -> Numeric as *, plus gnuplot & grace
4359 -numeric -> Numeric as *, plus gnuplot & grace
4353 -physics -> same as before
4360 -physics -> same as before
4354
4361
4355 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4362 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4356 user-defined magics wouldn't be found by @magic if they were
4363 user-defined magics wouldn't be found by @magic if they were
4357 defined as class methods. Also cleaned up the namespace search
4364 defined as class methods. Also cleaned up the namespace search
4358 logic and the string building (to use %s instead of many repeated
4365 logic and the string building (to use %s instead of many repeated
4359 string adds).
4366 string adds).
4360
4367
4361 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4368 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4362 of user-defined magics to operate with class methods (cleaner, in
4369 of user-defined magics to operate with class methods (cleaner, in
4363 line with the gnuplot code).
4370 line with the gnuplot code).
4364
4371
4365 2002-04-22 Fernando Perez <fperez@colorado.edu>
4372 2002-04-22 Fernando Perez <fperez@colorado.edu>
4366
4373
4367 * setup.py: updated dependency list so that manual is updated when
4374 * setup.py: updated dependency list so that manual is updated when
4368 all included files change.
4375 all included files change.
4369
4376
4370 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4377 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4371 the delimiter removal option (the fix is ugly right now).
4378 the delimiter removal option (the fix is ugly right now).
4372
4379
4373 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4380 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4374 all of the math profile (quicker loading, no conflict between
4381 all of the math profile (quicker loading, no conflict between
4375 g-9.8 and g-gnuplot).
4382 g-9.8 and g-gnuplot).
4376
4383
4377 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4384 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4378 name of post-mortem files to IPython_crash_report.txt.
4385 name of post-mortem files to IPython_crash_report.txt.
4379
4386
4380 * Cleanup/update of the docs. Added all the new readline info and
4387 * Cleanup/update of the docs. Added all the new readline info and
4381 formatted all lists as 'real lists'.
4388 formatted all lists as 'real lists'.
4382
4389
4383 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4390 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4384 tab-completion options, since the full readline parse_and_bind is
4391 tab-completion options, since the full readline parse_and_bind is
4385 now accessible.
4392 now accessible.
4386
4393
4387 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4394 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4388 handling of readline options. Now users can specify any string to
4395 handling of readline options. Now users can specify any string to
4389 be passed to parse_and_bind(), as well as the delimiters to be
4396 be passed to parse_and_bind(), as well as the delimiters to be
4390 removed.
4397 removed.
4391 (InteractiveShell.__init__): Added __name__ to the global
4398 (InteractiveShell.__init__): Added __name__ to the global
4392 namespace so that things like Itpl which rely on its existence
4399 namespace so that things like Itpl which rely on its existence
4393 don't crash.
4400 don't crash.
4394 (InteractiveShell._prefilter): Defined the default with a _ so
4401 (InteractiveShell._prefilter): Defined the default with a _ so
4395 that prefilter() is easier to override, while the default one
4402 that prefilter() is easier to override, while the default one
4396 remains available.
4403 remains available.
4397
4404
4398 2002-04-18 Fernando Perez <fperez@colorado.edu>
4405 2002-04-18 Fernando Perez <fperez@colorado.edu>
4399
4406
4400 * Added information about pdb in the docs.
4407 * Added information about pdb in the docs.
4401
4408
4402 2002-04-17 Fernando Perez <fperez@colorado.edu>
4409 2002-04-17 Fernando Perez <fperez@colorado.edu>
4403
4410
4404 * IPython/ipmaker.py (make_IPython): added rc_override option to
4411 * IPython/ipmaker.py (make_IPython): added rc_override option to
4405 allow passing config options at creation time which may override
4412 allow passing config options at creation time which may override
4406 anything set in the config files or command line. This is
4413 anything set in the config files or command line. This is
4407 particularly useful for configuring embedded instances.
4414 particularly useful for configuring embedded instances.
4408
4415
4409 2002-04-15 Fernando Perez <fperez@colorado.edu>
4416 2002-04-15 Fernando Perez <fperez@colorado.edu>
4410
4417
4411 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4418 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4412 crash embedded instances because of the input cache falling out of
4419 crash embedded instances because of the input cache falling out of
4413 sync with the output counter.
4420 sync with the output counter.
4414
4421
4415 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4422 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4416 mode which calls pdb after an uncaught exception in IPython itself.
4423 mode which calls pdb after an uncaught exception in IPython itself.
4417
4424
4418 2002-04-14 Fernando Perez <fperez@colorado.edu>
4425 2002-04-14 Fernando Perez <fperez@colorado.edu>
4419
4426
4420 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4427 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4421 readline, fix it back after each call.
4428 readline, fix it back after each call.
4422
4429
4423 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4430 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4424 method to force all access via __call__(), which guarantees that
4431 method to force all access via __call__(), which guarantees that
4425 traceback references are properly deleted.
4432 traceback references are properly deleted.
4426
4433
4427 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4434 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4428 improve printing when pprint is in use.
4435 improve printing when pprint is in use.
4429
4436
4430 2002-04-13 Fernando Perez <fperez@colorado.edu>
4437 2002-04-13 Fernando Perez <fperez@colorado.edu>
4431
4438
4432 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4439 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4433 exceptions aren't caught anymore. If the user triggers one, he
4440 exceptions aren't caught anymore. If the user triggers one, he
4434 should know why he's doing it and it should go all the way up,
4441 should know why he's doing it and it should go all the way up,
4435 just like any other exception. So now @abort will fully kill the
4442 just like any other exception. So now @abort will fully kill the
4436 embedded interpreter and the embedding code (unless that happens
4443 embedded interpreter and the embedding code (unless that happens
4437 to catch SystemExit).
4444 to catch SystemExit).
4438
4445
4439 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4446 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4440 and a debugger() method to invoke the interactive pdb debugger
4447 and a debugger() method to invoke the interactive pdb debugger
4441 after printing exception information. Also added the corresponding
4448 after printing exception information. Also added the corresponding
4442 -pdb option and @pdb magic to control this feature, and updated
4449 -pdb option and @pdb magic to control this feature, and updated
4443 the docs. After a suggestion from Christopher Hart
4450 the docs. After a suggestion from Christopher Hart
4444 (hart-AT-caltech.edu).
4451 (hart-AT-caltech.edu).
4445
4452
4446 2002-04-12 Fernando Perez <fperez@colorado.edu>
4453 2002-04-12 Fernando Perez <fperez@colorado.edu>
4447
4454
4448 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4455 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4449 the exception handlers defined by the user (not the CrashHandler)
4456 the exception handlers defined by the user (not the CrashHandler)
4450 so that user exceptions don't trigger an ipython bug report.
4457 so that user exceptions don't trigger an ipython bug report.
4451
4458
4452 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4459 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4453 configurable (it should have always been so).
4460 configurable (it should have always been so).
4454
4461
4455 2002-03-26 Fernando Perez <fperez@colorado.edu>
4462 2002-03-26 Fernando Perez <fperez@colorado.edu>
4456
4463
4457 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4464 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4458 and there to fix embedding namespace issues. This should all be
4465 and there to fix embedding namespace issues. This should all be
4459 done in a more elegant way.
4466 done in a more elegant way.
4460
4467
4461 2002-03-25 Fernando Perez <fperez@colorado.edu>
4468 2002-03-25 Fernando Perez <fperez@colorado.edu>
4462
4469
4463 * IPython/genutils.py (get_home_dir): Try to make it work under
4470 * IPython/genutils.py (get_home_dir): Try to make it work under
4464 win9x also.
4471 win9x also.
4465
4472
4466 2002-03-20 Fernando Perez <fperez@colorado.edu>
4473 2002-03-20 Fernando Perez <fperez@colorado.edu>
4467
4474
4468 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4475 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4469 sys.displayhook untouched upon __init__.
4476 sys.displayhook untouched upon __init__.
4470
4477
4471 2002-03-19 Fernando Perez <fperez@colorado.edu>
4478 2002-03-19 Fernando Perez <fperez@colorado.edu>
4472
4479
4473 * Released 0.2.9 (for embedding bug, basically).
4480 * Released 0.2.9 (for embedding bug, basically).
4474
4481
4475 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4482 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4476 exceptions so that enclosing shell's state can be restored.
4483 exceptions so that enclosing shell's state can be restored.
4477
4484
4478 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4485 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4479 naming conventions in the .ipython/ dir.
4486 naming conventions in the .ipython/ dir.
4480
4487
4481 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4488 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4482 from delimiters list so filenames with - in them get expanded.
4489 from delimiters list so filenames with - in them get expanded.
4483
4490
4484 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4491 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4485 sys.displayhook not being properly restored after an embedded call.
4492 sys.displayhook not being properly restored after an embedded call.
4486
4493
4487 2002-03-18 Fernando Perez <fperez@colorado.edu>
4494 2002-03-18 Fernando Perez <fperez@colorado.edu>
4488
4495
4489 * Released 0.2.8
4496 * Released 0.2.8
4490
4497
4491 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4498 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4492 some files weren't being included in a -upgrade.
4499 some files weren't being included in a -upgrade.
4493 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4500 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4494 on' so that the first tab completes.
4501 on' so that the first tab completes.
4495 (InteractiveShell.handle_magic): fixed bug with spaces around
4502 (InteractiveShell.handle_magic): fixed bug with spaces around
4496 quotes breaking many magic commands.
4503 quotes breaking many magic commands.
4497
4504
4498 * setup.py: added note about ignoring the syntax error messages at
4505 * setup.py: added note about ignoring the syntax error messages at
4499 installation.
4506 installation.
4500
4507
4501 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4508 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4502 streamlining the gnuplot interface, now there's only one magic @gp.
4509 streamlining the gnuplot interface, now there's only one magic @gp.
4503
4510
4504 2002-03-17 Fernando Perez <fperez@colorado.edu>
4511 2002-03-17 Fernando Perez <fperez@colorado.edu>
4505
4512
4506 * IPython/UserConfig/magic_gnuplot.py: new name for the
4513 * IPython/UserConfig/magic_gnuplot.py: new name for the
4507 example-magic_pm.py file. Much enhanced system, now with a shell
4514 example-magic_pm.py file. Much enhanced system, now with a shell
4508 for communicating directly with gnuplot, one command at a time.
4515 for communicating directly with gnuplot, one command at a time.
4509
4516
4510 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4517 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4511 setting __name__=='__main__'.
4518 setting __name__=='__main__'.
4512
4519
4513 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4520 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4514 mini-shell for accessing gnuplot from inside ipython. Should
4521 mini-shell for accessing gnuplot from inside ipython. Should
4515 extend it later for grace access too. Inspired by Arnd's
4522 extend it later for grace access too. Inspired by Arnd's
4516 suggestion.
4523 suggestion.
4517
4524
4518 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4525 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4519 calling magic functions with () in their arguments. Thanks to Arnd
4526 calling magic functions with () in their arguments. Thanks to Arnd
4520 Baecker for pointing this to me.
4527 Baecker for pointing this to me.
4521
4528
4522 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4529 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4523 infinitely for integer or complex arrays (only worked with floats).
4530 infinitely for integer or complex arrays (only worked with floats).
4524
4531
4525 2002-03-16 Fernando Perez <fperez@colorado.edu>
4532 2002-03-16 Fernando Perez <fperez@colorado.edu>
4526
4533
4527 * setup.py: Merged setup and setup_windows into a single script
4534 * setup.py: Merged setup and setup_windows into a single script
4528 which properly handles things for windows users.
4535 which properly handles things for windows users.
4529
4536
4530 2002-03-15 Fernando Perez <fperez@colorado.edu>
4537 2002-03-15 Fernando Perez <fperez@colorado.edu>
4531
4538
4532 * Big change to the manual: now the magics are all automatically
4539 * Big change to the manual: now the magics are all automatically
4533 documented. This information is generated from their docstrings
4540 documented. This information is generated from their docstrings
4534 and put in a latex file included by the manual lyx file. This way
4541 and put in a latex file included by the manual lyx file. This way
4535 we get always up to date information for the magics. The manual
4542 we get always up to date information for the magics. The manual
4536 now also has proper version information, also auto-synced.
4543 now also has proper version information, also auto-synced.
4537
4544
4538 For this to work, an undocumented --magic_docstrings option was added.
4545 For this to work, an undocumented --magic_docstrings option was added.
4539
4546
4540 2002-03-13 Fernando Perez <fperez@colorado.edu>
4547 2002-03-13 Fernando Perez <fperez@colorado.edu>
4541
4548
4542 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4549 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4543 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4550 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4544
4551
4545 2002-03-12 Fernando Perez <fperez@colorado.edu>
4552 2002-03-12 Fernando Perez <fperez@colorado.edu>
4546
4553
4547 * IPython/ultraTB.py (TermColors): changed color escapes again to
4554 * IPython/ultraTB.py (TermColors): changed color escapes again to
4548 fix the (old, reintroduced) line-wrapping bug. Basically, if
4555 fix the (old, reintroduced) line-wrapping bug. Basically, if
4549 \001..\002 aren't given in the color escapes, lines get wrapped
4556 \001..\002 aren't given in the color escapes, lines get wrapped
4550 weirdly. But giving those screws up old xterms and emacs terms. So
4557 weirdly. But giving those screws up old xterms and emacs terms. So
4551 I added some logic for emacs terms to be ok, but I can't identify old
4558 I added some logic for emacs terms to be ok, but I can't identify old
4552 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4559 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4553
4560
4554 2002-03-10 Fernando Perez <fperez@colorado.edu>
4561 2002-03-10 Fernando Perez <fperez@colorado.edu>
4555
4562
4556 * IPython/usage.py (__doc__): Various documentation cleanups and
4563 * IPython/usage.py (__doc__): Various documentation cleanups and
4557 updates, both in usage docstrings and in the manual.
4564 updates, both in usage docstrings and in the manual.
4558
4565
4559 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4566 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4560 handling of caching. Set minimum acceptabe value for having a
4567 handling of caching. Set minimum acceptabe value for having a
4561 cache at 20 values.
4568 cache at 20 values.
4562
4569
4563 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4570 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4564 install_first_time function to a method, renamed it and added an
4571 install_first_time function to a method, renamed it and added an
4565 'upgrade' mode. Now people can update their config directory with
4572 'upgrade' mode. Now people can update their config directory with
4566 a simple command line switch (-upgrade, also new).
4573 a simple command line switch (-upgrade, also new).
4567
4574
4568 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4575 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4569 @file (convenient for automagic users under Python >= 2.2).
4576 @file (convenient for automagic users under Python >= 2.2).
4570 Removed @files (it seemed more like a plural than an abbrev. of
4577 Removed @files (it seemed more like a plural than an abbrev. of
4571 'file show').
4578 'file show').
4572
4579
4573 * IPython/iplib.py (install_first_time): Fixed crash if there were
4580 * IPython/iplib.py (install_first_time): Fixed crash if there were
4574 backup files ('~') in .ipython/ install directory.
4581 backup files ('~') in .ipython/ install directory.
4575
4582
4576 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4583 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4577 system. Things look fine, but these changes are fairly
4584 system. Things look fine, but these changes are fairly
4578 intrusive. Test them for a few days.
4585 intrusive. Test them for a few days.
4579
4586
4580 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4587 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4581 the prompts system. Now all in/out prompt strings are user
4588 the prompts system. Now all in/out prompt strings are user
4582 controllable. This is particularly useful for embedding, as one
4589 controllable. This is particularly useful for embedding, as one
4583 can tag embedded instances with particular prompts.
4590 can tag embedded instances with particular prompts.
4584
4591
4585 Also removed global use of sys.ps1/2, which now allows nested
4592 Also removed global use of sys.ps1/2, which now allows nested
4586 embeddings without any problems. Added command-line options for
4593 embeddings without any problems. Added command-line options for
4587 the prompt strings.
4594 the prompt strings.
4588
4595
4589 2002-03-08 Fernando Perez <fperez@colorado.edu>
4596 2002-03-08 Fernando Perez <fperez@colorado.edu>
4590
4597
4591 * IPython/UserConfig/example-embed-short.py (ipshell): added
4598 * IPython/UserConfig/example-embed-short.py (ipshell): added
4592 example file with the bare minimum code for embedding.
4599 example file with the bare minimum code for embedding.
4593
4600
4594 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4601 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4595 functionality for the embeddable shell to be activated/deactivated
4602 functionality for the embeddable shell to be activated/deactivated
4596 either globally or at each call.
4603 either globally or at each call.
4597
4604
4598 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4605 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4599 rewriting the prompt with '--->' for auto-inputs with proper
4606 rewriting the prompt with '--->' for auto-inputs with proper
4600 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4607 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4601 this is handled by the prompts class itself, as it should.
4608 this is handled by the prompts class itself, as it should.
4602
4609
4603 2002-03-05 Fernando Perez <fperez@colorado.edu>
4610 2002-03-05 Fernando Perez <fperez@colorado.edu>
4604
4611
4605 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4612 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4606 @logstart to avoid name clashes with the math log function.
4613 @logstart to avoid name clashes with the math log function.
4607
4614
4608 * Big updates to X/Emacs section of the manual.
4615 * Big updates to X/Emacs section of the manual.
4609
4616
4610 * Removed ipython_emacs. Milan explained to me how to pass
4617 * Removed ipython_emacs. Milan explained to me how to pass
4611 arguments to ipython through Emacs. Some day I'm going to end up
4618 arguments to ipython through Emacs. Some day I'm going to end up
4612 learning some lisp...
4619 learning some lisp...
4613
4620
4614 2002-03-04 Fernando Perez <fperez@colorado.edu>
4621 2002-03-04 Fernando Perez <fperez@colorado.edu>
4615
4622
4616 * IPython/ipython_emacs: Created script to be used as the
4623 * IPython/ipython_emacs: Created script to be used as the
4617 py-python-command Emacs variable so we can pass IPython
4624 py-python-command Emacs variable so we can pass IPython
4618 parameters. I can't figure out how to tell Emacs directly to pass
4625 parameters. I can't figure out how to tell Emacs directly to pass
4619 parameters to IPython, so a dummy shell script will do it.
4626 parameters to IPython, so a dummy shell script will do it.
4620
4627
4621 Other enhancements made for things to work better under Emacs'
4628 Other enhancements made for things to work better under Emacs'
4622 various types of terminals. Many thanks to Milan Zamazal
4629 various types of terminals. Many thanks to Milan Zamazal
4623 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4630 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4624
4631
4625 2002-03-01 Fernando Perez <fperez@colorado.edu>
4632 2002-03-01 Fernando Perez <fperez@colorado.edu>
4626
4633
4627 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4634 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4628 that loading of readline is now optional. This gives better
4635 that loading of readline is now optional. This gives better
4629 control to emacs users.
4636 control to emacs users.
4630
4637
4631 * IPython/ultraTB.py (__date__): Modified color escape sequences
4638 * IPython/ultraTB.py (__date__): Modified color escape sequences
4632 and now things work fine under xterm and in Emacs' term buffers
4639 and now things work fine under xterm and in Emacs' term buffers
4633 (though not shell ones). Well, in emacs you get colors, but all
4640 (though not shell ones). Well, in emacs you get colors, but all
4634 seem to be 'light' colors (no difference between dark and light
4641 seem to be 'light' colors (no difference between dark and light
4635 ones). But the garbage chars are gone, and also in xterms. It
4642 ones). But the garbage chars are gone, and also in xterms. It
4636 seems that now I'm using 'cleaner' ansi sequences.
4643 seems that now I'm using 'cleaner' ansi sequences.
4637
4644
4638 2002-02-21 Fernando Perez <fperez@colorado.edu>
4645 2002-02-21 Fernando Perez <fperez@colorado.edu>
4639
4646
4640 * Released 0.2.7 (mainly to publish the scoping fix).
4647 * Released 0.2.7 (mainly to publish the scoping fix).
4641
4648
4642 * IPython/Logger.py (Logger.logstate): added. A corresponding
4649 * IPython/Logger.py (Logger.logstate): added. A corresponding
4643 @logstate magic was created.
4650 @logstate magic was created.
4644
4651
4645 * IPython/Magic.py: fixed nested scoping problem under Python
4652 * IPython/Magic.py: fixed nested scoping problem under Python
4646 2.1.x (automagic wasn't working).
4653 2.1.x (automagic wasn't working).
4647
4654
4648 2002-02-20 Fernando Perez <fperez@colorado.edu>
4655 2002-02-20 Fernando Perez <fperez@colorado.edu>
4649
4656
4650 * Released 0.2.6.
4657 * Released 0.2.6.
4651
4658
4652 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4659 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4653 option so that logs can come out without any headers at all.
4660 option so that logs can come out without any headers at all.
4654
4661
4655 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4662 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4656 SciPy.
4663 SciPy.
4657
4664
4658 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4665 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4659 that embedded IPython calls don't require vars() to be explicitly
4666 that embedded IPython calls don't require vars() to be explicitly
4660 passed. Now they are extracted from the caller's frame (code
4667 passed. Now they are extracted from the caller's frame (code
4661 snatched from Eric Jones' weave). Added better documentation to
4668 snatched from Eric Jones' weave). Added better documentation to
4662 the section on embedding and the example file.
4669 the section on embedding and the example file.
4663
4670
4664 * IPython/genutils.py (page): Changed so that under emacs, it just
4671 * IPython/genutils.py (page): Changed so that under emacs, it just
4665 prints the string. You can then page up and down in the emacs
4672 prints the string. You can then page up and down in the emacs
4666 buffer itself. This is how the builtin help() works.
4673 buffer itself. This is how the builtin help() works.
4667
4674
4668 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4675 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4669 macro scoping: macros need to be executed in the user's namespace
4676 macro scoping: macros need to be executed in the user's namespace
4670 to work as if they had been typed by the user.
4677 to work as if they had been typed by the user.
4671
4678
4672 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4679 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4673 execute automatically (no need to type 'exec...'). They then
4680 execute automatically (no need to type 'exec...'). They then
4674 behave like 'true macros'. The printing system was also modified
4681 behave like 'true macros'. The printing system was also modified
4675 for this to work.
4682 for this to work.
4676
4683
4677 2002-02-19 Fernando Perez <fperez@colorado.edu>
4684 2002-02-19 Fernando Perez <fperez@colorado.edu>
4678
4685
4679 * IPython/genutils.py (page_file): new function for paging files
4686 * IPython/genutils.py (page_file): new function for paging files
4680 in an OS-independent way. Also necessary for file viewing to work
4687 in an OS-independent way. Also necessary for file viewing to work
4681 well inside Emacs buffers.
4688 well inside Emacs buffers.
4682 (page): Added checks for being in an emacs buffer.
4689 (page): Added checks for being in an emacs buffer.
4683 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4690 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4684 same bug in iplib.
4691 same bug in iplib.
4685
4692
4686 2002-02-18 Fernando Perez <fperez@colorado.edu>
4693 2002-02-18 Fernando Perez <fperez@colorado.edu>
4687
4694
4688 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4695 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4689 of readline so that IPython can work inside an Emacs buffer.
4696 of readline so that IPython can work inside an Emacs buffer.
4690
4697
4691 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4698 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4692 method signatures (they weren't really bugs, but it looks cleaner
4699 method signatures (they weren't really bugs, but it looks cleaner
4693 and keeps PyChecker happy).
4700 and keeps PyChecker happy).
4694
4701
4695 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4702 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4696 for implementing various user-defined hooks. Currently only
4703 for implementing various user-defined hooks. Currently only
4697 display is done.
4704 display is done.
4698
4705
4699 * IPython/Prompts.py (CachedOutput._display): changed display
4706 * IPython/Prompts.py (CachedOutput._display): changed display
4700 functions so that they can be dynamically changed by users easily.
4707 functions so that they can be dynamically changed by users easily.
4701
4708
4702 * IPython/Extensions/numeric_formats.py (num_display): added an
4709 * IPython/Extensions/numeric_formats.py (num_display): added an
4703 extension for printing NumPy arrays in flexible manners. It
4710 extension for printing NumPy arrays in flexible manners. It
4704 doesn't do anything yet, but all the structure is in
4711 doesn't do anything yet, but all the structure is in
4705 place. Ultimately the plan is to implement output format control
4712 place. Ultimately the plan is to implement output format control
4706 like in Octave.
4713 like in Octave.
4707
4714
4708 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4715 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4709 methods are found at run-time by all the automatic machinery.
4716 methods are found at run-time by all the automatic machinery.
4710
4717
4711 2002-02-17 Fernando Perez <fperez@colorado.edu>
4718 2002-02-17 Fernando Perez <fperez@colorado.edu>
4712
4719
4713 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4720 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4714 whole file a little.
4721 whole file a little.
4715
4722
4716 * ToDo: closed this document. Now there's a new_design.lyx
4723 * ToDo: closed this document. Now there's a new_design.lyx
4717 document for all new ideas. Added making a pdf of it for the
4724 document for all new ideas. Added making a pdf of it for the
4718 end-user distro.
4725 end-user distro.
4719
4726
4720 * IPython/Logger.py (Logger.switch_log): Created this to replace
4727 * IPython/Logger.py (Logger.switch_log): Created this to replace
4721 logon() and logoff(). It also fixes a nasty crash reported by
4728 logon() and logoff(). It also fixes a nasty crash reported by
4722 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4729 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4723
4730
4724 * IPython/iplib.py (complete): got auto-completion to work with
4731 * IPython/iplib.py (complete): got auto-completion to work with
4725 automagic (I had wanted this for a long time).
4732 automagic (I had wanted this for a long time).
4726
4733
4727 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4734 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4728 to @file, since file() is now a builtin and clashes with automagic
4735 to @file, since file() is now a builtin and clashes with automagic
4729 for @file.
4736 for @file.
4730
4737
4731 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4738 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4732 of this was previously in iplib, which had grown to more than 2000
4739 of this was previously in iplib, which had grown to more than 2000
4733 lines, way too long. No new functionality, but it makes managing
4740 lines, way too long. No new functionality, but it makes managing
4734 the code a bit easier.
4741 the code a bit easier.
4735
4742
4736 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4743 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4737 information to crash reports.
4744 information to crash reports.
4738
4745
4739 2002-02-12 Fernando Perez <fperez@colorado.edu>
4746 2002-02-12 Fernando Perez <fperez@colorado.edu>
4740
4747
4741 * Released 0.2.5.
4748 * Released 0.2.5.
4742
4749
4743 2002-02-11 Fernando Perez <fperez@colorado.edu>
4750 2002-02-11 Fernando Perez <fperez@colorado.edu>
4744
4751
4745 * Wrote a relatively complete Windows installer. It puts
4752 * Wrote a relatively complete Windows installer. It puts
4746 everything in place, creates Start Menu entries and fixes the
4753 everything in place, creates Start Menu entries and fixes the
4747 color issues. Nothing fancy, but it works.
4754 color issues. Nothing fancy, but it works.
4748
4755
4749 2002-02-10 Fernando Perez <fperez@colorado.edu>
4756 2002-02-10 Fernando Perez <fperez@colorado.edu>
4750
4757
4751 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4758 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4752 os.path.expanduser() call so that we can type @run ~/myfile.py and
4759 os.path.expanduser() call so that we can type @run ~/myfile.py and
4753 have thigs work as expected.
4760 have thigs work as expected.
4754
4761
4755 * IPython/genutils.py (page): fixed exception handling so things
4762 * IPython/genutils.py (page): fixed exception handling so things
4756 work both in Unix and Windows correctly. Quitting a pager triggers
4763 work both in Unix and Windows correctly. Quitting a pager triggers
4757 an IOError/broken pipe in Unix, and in windows not finding a pager
4764 an IOError/broken pipe in Unix, and in windows not finding a pager
4758 is also an IOError, so I had to actually look at the return value
4765 is also an IOError, so I had to actually look at the return value
4759 of the exception, not just the exception itself. Should be ok now.
4766 of the exception, not just the exception itself. Should be ok now.
4760
4767
4761 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4768 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4762 modified to allow case-insensitive color scheme changes.
4769 modified to allow case-insensitive color scheme changes.
4763
4770
4764 2002-02-09 Fernando Perez <fperez@colorado.edu>
4771 2002-02-09 Fernando Perez <fperez@colorado.edu>
4765
4772
4766 * IPython/genutils.py (native_line_ends): new function to leave
4773 * IPython/genutils.py (native_line_ends): new function to leave
4767 user config files with os-native line-endings.
4774 user config files with os-native line-endings.
4768
4775
4769 * README and manual updates.
4776 * README and manual updates.
4770
4777
4771 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4778 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4772 instead of StringType to catch Unicode strings.
4779 instead of StringType to catch Unicode strings.
4773
4780
4774 * IPython/genutils.py (filefind): fixed bug for paths with
4781 * IPython/genutils.py (filefind): fixed bug for paths with
4775 embedded spaces (very common in Windows).
4782 embedded spaces (very common in Windows).
4776
4783
4777 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4784 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4778 files under Windows, so that they get automatically associated
4785 files under Windows, so that they get automatically associated
4779 with a text editor. Windows makes it a pain to handle
4786 with a text editor. Windows makes it a pain to handle
4780 extension-less files.
4787 extension-less files.
4781
4788
4782 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4789 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4783 warning about readline only occur for Posix. In Windows there's no
4790 warning about readline only occur for Posix. In Windows there's no
4784 way to get readline, so why bother with the warning.
4791 way to get readline, so why bother with the warning.
4785
4792
4786 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4793 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4787 for __str__ instead of dir(self), since dir() changed in 2.2.
4794 for __str__ instead of dir(self), since dir() changed in 2.2.
4788
4795
4789 * Ported to Windows! Tested on XP, I suspect it should work fine
4796 * Ported to Windows! Tested on XP, I suspect it should work fine
4790 on NT/2000, but I don't think it will work on 98 et al. That
4797 on NT/2000, but I don't think it will work on 98 et al. That
4791 series of Windows is such a piece of junk anyway that I won't try
4798 series of Windows is such a piece of junk anyway that I won't try
4792 porting it there. The XP port was straightforward, showed a few
4799 porting it there. The XP port was straightforward, showed a few
4793 bugs here and there (fixed all), in particular some string
4800 bugs here and there (fixed all), in particular some string
4794 handling stuff which required considering Unicode strings (which
4801 handling stuff which required considering Unicode strings (which
4795 Windows uses). This is good, but hasn't been too tested :) No
4802 Windows uses). This is good, but hasn't been too tested :) No
4796 fancy installer yet, I'll put a note in the manual so people at
4803 fancy installer yet, I'll put a note in the manual so people at
4797 least make manually a shortcut.
4804 least make manually a shortcut.
4798
4805
4799 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4806 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4800 into a single one, "colors". This now controls both prompt and
4807 into a single one, "colors". This now controls both prompt and
4801 exception color schemes, and can be changed both at startup
4808 exception color schemes, and can be changed both at startup
4802 (either via command-line switches or via ipythonrc files) and at
4809 (either via command-line switches or via ipythonrc files) and at
4803 runtime, with @colors.
4810 runtime, with @colors.
4804 (Magic.magic_run): renamed @prun to @run and removed the old
4811 (Magic.magic_run): renamed @prun to @run and removed the old
4805 @run. The two were too similar to warrant keeping both.
4812 @run. The two were too similar to warrant keeping both.
4806
4813
4807 2002-02-03 Fernando Perez <fperez@colorado.edu>
4814 2002-02-03 Fernando Perez <fperez@colorado.edu>
4808
4815
4809 * IPython/iplib.py (install_first_time): Added comment on how to
4816 * IPython/iplib.py (install_first_time): Added comment on how to
4810 configure the color options for first-time users. Put a <return>
4817 configure the color options for first-time users. Put a <return>
4811 request at the end so that small-terminal users get a chance to
4818 request at the end so that small-terminal users get a chance to
4812 read the startup info.
4819 read the startup info.
4813
4820
4814 2002-01-23 Fernando Perez <fperez@colorado.edu>
4821 2002-01-23 Fernando Perez <fperez@colorado.edu>
4815
4822
4816 * IPython/iplib.py (CachedOutput.update): Changed output memory
4823 * IPython/iplib.py (CachedOutput.update): Changed output memory
4817 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4824 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4818 input history we still use _i. Did this b/c these variable are
4825 input history we still use _i. Did this b/c these variable are
4819 very commonly used in interactive work, so the less we need to
4826 very commonly used in interactive work, so the less we need to
4820 type the better off we are.
4827 type the better off we are.
4821 (Magic.magic_prun): updated @prun to better handle the namespaces
4828 (Magic.magic_prun): updated @prun to better handle the namespaces
4822 the file will run in, including a fix for __name__ not being set
4829 the file will run in, including a fix for __name__ not being set
4823 before.
4830 before.
4824
4831
4825 2002-01-20 Fernando Perez <fperez@colorado.edu>
4832 2002-01-20 Fernando Perez <fperez@colorado.edu>
4826
4833
4827 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4834 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4828 extra garbage for Python 2.2. Need to look more carefully into
4835 extra garbage for Python 2.2. Need to look more carefully into
4829 this later.
4836 this later.
4830
4837
4831 2002-01-19 Fernando Perez <fperez@colorado.edu>
4838 2002-01-19 Fernando Perez <fperez@colorado.edu>
4832
4839
4833 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4840 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4834 display SyntaxError exceptions properly formatted when they occur
4841 display SyntaxError exceptions properly formatted when they occur
4835 (they can be triggered by imported code).
4842 (they can be triggered by imported code).
4836
4843
4837 2002-01-18 Fernando Perez <fperez@colorado.edu>
4844 2002-01-18 Fernando Perez <fperez@colorado.edu>
4838
4845
4839 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4846 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4840 SyntaxError exceptions are reported nicely formatted, instead of
4847 SyntaxError exceptions are reported nicely formatted, instead of
4841 spitting out only offset information as before.
4848 spitting out only offset information as before.
4842 (Magic.magic_prun): Added the @prun function for executing
4849 (Magic.magic_prun): Added the @prun function for executing
4843 programs with command line args inside IPython.
4850 programs with command line args inside IPython.
4844
4851
4845 2002-01-16 Fernando Perez <fperez@colorado.edu>
4852 2002-01-16 Fernando Perez <fperez@colorado.edu>
4846
4853
4847 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4854 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4848 to *not* include the last item given in a range. This brings their
4855 to *not* include the last item given in a range. This brings their
4849 behavior in line with Python's slicing:
4856 behavior in line with Python's slicing:
4850 a[n1:n2] -> a[n1]...a[n2-1]
4857 a[n1:n2] -> a[n1]...a[n2-1]
4851 It may be a bit less convenient, but I prefer to stick to Python's
4858 It may be a bit less convenient, but I prefer to stick to Python's
4852 conventions *everywhere*, so users never have to wonder.
4859 conventions *everywhere*, so users never have to wonder.
4853 (Magic.magic_macro): Added @macro function to ease the creation of
4860 (Magic.magic_macro): Added @macro function to ease the creation of
4854 macros.
4861 macros.
4855
4862
4856 2002-01-05 Fernando Perez <fperez@colorado.edu>
4863 2002-01-05 Fernando Perez <fperez@colorado.edu>
4857
4864
4858 * Released 0.2.4.
4865 * Released 0.2.4.
4859
4866
4860 * IPython/iplib.py (Magic.magic_pdef):
4867 * IPython/iplib.py (Magic.magic_pdef):
4861 (InteractiveShell.safe_execfile): report magic lines and error
4868 (InteractiveShell.safe_execfile): report magic lines and error
4862 lines without line numbers so one can easily copy/paste them for
4869 lines without line numbers so one can easily copy/paste them for
4863 re-execution.
4870 re-execution.
4864
4871
4865 * Updated manual with recent changes.
4872 * Updated manual with recent changes.
4866
4873
4867 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4874 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4868 docstring printing when class? is called. Very handy for knowing
4875 docstring printing when class? is called. Very handy for knowing
4869 how to create class instances (as long as __init__ is well
4876 how to create class instances (as long as __init__ is well
4870 documented, of course :)
4877 documented, of course :)
4871 (Magic.magic_doc): print both class and constructor docstrings.
4878 (Magic.magic_doc): print both class and constructor docstrings.
4872 (Magic.magic_pdef): give constructor info if passed a class and
4879 (Magic.magic_pdef): give constructor info if passed a class and
4873 __call__ info for callable object instances.
4880 __call__ info for callable object instances.
4874
4881
4875 2002-01-04 Fernando Perez <fperez@colorado.edu>
4882 2002-01-04 Fernando Perez <fperez@colorado.edu>
4876
4883
4877 * Made deep_reload() off by default. It doesn't always work
4884 * Made deep_reload() off by default. It doesn't always work
4878 exactly as intended, so it's probably safer to have it off. It's
4885 exactly as intended, so it's probably safer to have it off. It's
4879 still available as dreload() anyway, so nothing is lost.
4886 still available as dreload() anyway, so nothing is lost.
4880
4887
4881 2002-01-02 Fernando Perez <fperez@colorado.edu>
4888 2002-01-02 Fernando Perez <fperez@colorado.edu>
4882
4889
4883 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4890 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4884 so I wanted an updated release).
4891 so I wanted an updated release).
4885
4892
4886 2001-12-27 Fernando Perez <fperez@colorado.edu>
4893 2001-12-27 Fernando Perez <fperez@colorado.edu>
4887
4894
4888 * IPython/iplib.py (InteractiveShell.interact): Added the original
4895 * IPython/iplib.py (InteractiveShell.interact): Added the original
4889 code from 'code.py' for this module in order to change the
4896 code from 'code.py' for this module in order to change the
4890 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4897 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4891 the history cache would break when the user hit Ctrl-C, and
4898 the history cache would break when the user hit Ctrl-C, and
4892 interact() offers no way to add any hooks to it.
4899 interact() offers no way to add any hooks to it.
4893
4900
4894 2001-12-23 Fernando Perez <fperez@colorado.edu>
4901 2001-12-23 Fernando Perez <fperez@colorado.edu>
4895
4902
4896 * setup.py: added check for 'MANIFEST' before trying to remove
4903 * setup.py: added check for 'MANIFEST' before trying to remove
4897 it. Thanks to Sean Reifschneider.
4904 it. Thanks to Sean Reifschneider.
4898
4905
4899 2001-12-22 Fernando Perez <fperez@colorado.edu>
4906 2001-12-22 Fernando Perez <fperez@colorado.edu>
4900
4907
4901 * Released 0.2.2.
4908 * Released 0.2.2.
4902
4909
4903 * Finished (reasonably) writing the manual. Later will add the
4910 * Finished (reasonably) writing the manual. Later will add the
4904 python-standard navigation stylesheets, but for the time being
4911 python-standard navigation stylesheets, but for the time being
4905 it's fairly complete. Distribution will include html and pdf
4912 it's fairly complete. Distribution will include html and pdf
4906 versions.
4913 versions.
4907
4914
4908 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4915 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4909 (MayaVi author).
4916 (MayaVi author).
4910
4917
4911 2001-12-21 Fernando Perez <fperez@colorado.edu>
4918 2001-12-21 Fernando Perez <fperez@colorado.edu>
4912
4919
4913 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4920 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4914 good public release, I think (with the manual and the distutils
4921 good public release, I think (with the manual and the distutils
4915 installer). The manual can use some work, but that can go
4922 installer). The manual can use some work, but that can go
4916 slowly. Otherwise I think it's quite nice for end users. Next
4923 slowly. Otherwise I think it's quite nice for end users. Next
4917 summer, rewrite the guts of it...
4924 summer, rewrite the guts of it...
4918
4925
4919 * Changed format of ipythonrc files to use whitespace as the
4926 * Changed format of ipythonrc files to use whitespace as the
4920 separator instead of an explicit '='. Cleaner.
4927 separator instead of an explicit '='. Cleaner.
4921
4928
4922 2001-12-20 Fernando Perez <fperez@colorado.edu>
4929 2001-12-20 Fernando Perez <fperez@colorado.edu>
4923
4930
4924 * Started a manual in LyX. For now it's just a quick merge of the
4931 * Started a manual in LyX. For now it's just a quick merge of the
4925 various internal docstrings and READMEs. Later it may grow into a
4932 various internal docstrings and READMEs. Later it may grow into a
4926 nice, full-blown manual.
4933 nice, full-blown manual.
4927
4934
4928 * Set up a distutils based installer. Installation should now be
4935 * Set up a distutils based installer. Installation should now be
4929 trivially simple for end-users.
4936 trivially simple for end-users.
4930
4937
4931 2001-12-11 Fernando Perez <fperez@colorado.edu>
4938 2001-12-11 Fernando Perez <fperez@colorado.edu>
4932
4939
4933 * Released 0.2.0. First public release, announced it at
4940 * Released 0.2.0. First public release, announced it at
4934 comp.lang.python. From now on, just bugfixes...
4941 comp.lang.python. From now on, just bugfixes...
4935
4942
4936 * Went through all the files, set copyright/license notices and
4943 * Went through all the files, set copyright/license notices and
4937 cleaned up things. Ready for release.
4944 cleaned up things. Ready for release.
4938
4945
4939 2001-12-10 Fernando Perez <fperez@colorado.edu>
4946 2001-12-10 Fernando Perez <fperez@colorado.edu>
4940
4947
4941 * Changed the first-time installer not to use tarfiles. It's more
4948 * Changed the first-time installer not to use tarfiles. It's more
4942 robust now and less unix-dependent. Also makes it easier for
4949 robust now and less unix-dependent. Also makes it easier for
4943 people to later upgrade versions.
4950 people to later upgrade versions.
4944
4951
4945 * Changed @exit to @abort to reflect the fact that it's pretty
4952 * Changed @exit to @abort to reflect the fact that it's pretty
4946 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4953 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4947 becomes significant only when IPyhton is embedded: in that case,
4954 becomes significant only when IPyhton is embedded: in that case,
4948 C-D closes IPython only, but @abort kills the enclosing program
4955 C-D closes IPython only, but @abort kills the enclosing program
4949 too (unless it had called IPython inside a try catching
4956 too (unless it had called IPython inside a try catching
4950 SystemExit).
4957 SystemExit).
4951
4958
4952 * Created Shell module which exposes the actuall IPython Shell
4959 * Created Shell module which exposes the actuall IPython Shell
4953 classes, currently the normal and the embeddable one. This at
4960 classes, currently the normal and the embeddable one. This at
4954 least offers a stable interface we won't need to change when
4961 least offers a stable interface we won't need to change when
4955 (later) the internals are rewritten. That rewrite will be confined
4962 (later) the internals are rewritten. That rewrite will be confined
4956 to iplib and ipmaker, but the Shell interface should remain as is.
4963 to iplib and ipmaker, but the Shell interface should remain as is.
4957
4964
4958 * Added embed module which offers an embeddable IPShell object,
4965 * Added embed module which offers an embeddable IPShell object,
4959 useful to fire up IPython *inside* a running program. Great for
4966 useful to fire up IPython *inside* a running program. Great for
4960 debugging or dynamical data analysis.
4967 debugging or dynamical data analysis.
4961
4968
4962 2001-12-08 Fernando Perez <fperez@colorado.edu>
4969 2001-12-08 Fernando Perez <fperez@colorado.edu>
4963
4970
4964 * Fixed small bug preventing seeing info from methods of defined
4971 * Fixed small bug preventing seeing info from methods of defined
4965 objects (incorrect namespace in _ofind()).
4972 objects (incorrect namespace in _ofind()).
4966
4973
4967 * Documentation cleanup. Moved the main usage docstrings to a
4974 * Documentation cleanup. Moved the main usage docstrings to a
4968 separate file, usage.py (cleaner to maintain, and hopefully in the
4975 separate file, usage.py (cleaner to maintain, and hopefully in the
4969 future some perlpod-like way of producing interactive, man and
4976 future some perlpod-like way of producing interactive, man and
4970 html docs out of it will be found).
4977 html docs out of it will be found).
4971
4978
4972 * Added @profile to see your profile at any time.
4979 * Added @profile to see your profile at any time.
4973
4980
4974 * Added @p as an alias for 'print'. It's especially convenient if
4981 * Added @p as an alias for 'print'. It's especially convenient if
4975 using automagic ('p x' prints x).
4982 using automagic ('p x' prints x).
4976
4983
4977 * Small cleanups and fixes after a pychecker run.
4984 * Small cleanups and fixes after a pychecker run.
4978
4985
4979 * Changed the @cd command to handle @cd - and @cd -<n> for
4986 * Changed the @cd command to handle @cd - and @cd -<n> for
4980 visiting any directory in _dh.
4987 visiting any directory in _dh.
4981
4988
4982 * Introduced _dh, a history of visited directories. @dhist prints
4989 * Introduced _dh, a history of visited directories. @dhist prints
4983 it out with numbers.
4990 it out with numbers.
4984
4991
4985 2001-12-07 Fernando Perez <fperez@colorado.edu>
4992 2001-12-07 Fernando Perez <fperez@colorado.edu>
4986
4993
4987 * Released 0.1.22
4994 * Released 0.1.22
4988
4995
4989 * Made initialization a bit more robust against invalid color
4996 * Made initialization a bit more robust against invalid color
4990 options in user input (exit, not traceback-crash).
4997 options in user input (exit, not traceback-crash).
4991
4998
4992 * Changed the bug crash reporter to write the report only in the
4999 * Changed the bug crash reporter to write the report only in the
4993 user's .ipython directory. That way IPython won't litter people's
5000 user's .ipython directory. That way IPython won't litter people's
4994 hard disks with crash files all over the place. Also print on
5001 hard disks with crash files all over the place. Also print on
4995 screen the necessary mail command.
5002 screen the necessary mail command.
4996
5003
4997 * With the new ultraTB, implemented LightBG color scheme for light
5004 * With the new ultraTB, implemented LightBG color scheme for light
4998 background terminals. A lot of people like white backgrounds, so I
5005 background terminals. A lot of people like white backgrounds, so I
4999 guess we should at least give them something readable.
5006 guess we should at least give them something readable.
5000
5007
5001 2001-12-06 Fernando Perez <fperez@colorado.edu>
5008 2001-12-06 Fernando Perez <fperez@colorado.edu>
5002
5009
5003 * Modified the structure of ultraTB. Now there's a proper class
5010 * Modified the structure of ultraTB. Now there's a proper class
5004 for tables of color schemes which allow adding schemes easily and
5011 for tables of color schemes which allow adding schemes easily and
5005 switching the active scheme without creating a new instance every
5012 switching the active scheme without creating a new instance every
5006 time (which was ridiculous). The syntax for creating new schemes
5013 time (which was ridiculous). The syntax for creating new schemes
5007 is also cleaner. I think ultraTB is finally done, with a clean
5014 is also cleaner. I think ultraTB is finally done, with a clean
5008 class structure. Names are also much cleaner (now there's proper
5015 class structure. Names are also much cleaner (now there's proper
5009 color tables, no need for every variable to also have 'color' in
5016 color tables, no need for every variable to also have 'color' in
5010 its name).
5017 its name).
5011
5018
5012 * Broke down genutils into separate files. Now genutils only
5019 * Broke down genutils into separate files. Now genutils only
5013 contains utility functions, and classes have been moved to their
5020 contains utility functions, and classes have been moved to their
5014 own files (they had enough independent functionality to warrant
5021 own files (they had enough independent functionality to warrant
5015 it): ConfigLoader, OutputTrap, Struct.
5022 it): ConfigLoader, OutputTrap, Struct.
5016
5023
5017 2001-12-05 Fernando Perez <fperez@colorado.edu>
5024 2001-12-05 Fernando Perez <fperez@colorado.edu>
5018
5025
5019 * IPython turns 21! Released version 0.1.21, as a candidate for
5026 * IPython turns 21! Released version 0.1.21, as a candidate for
5020 public consumption. If all goes well, release in a few days.
5027 public consumption. If all goes well, release in a few days.
5021
5028
5022 * Fixed path bug (files in Extensions/ directory wouldn't be found
5029 * Fixed path bug (files in Extensions/ directory wouldn't be found
5023 unless IPython/ was explicitly in sys.path).
5030 unless IPython/ was explicitly in sys.path).
5024
5031
5025 * Extended the FlexCompleter class as MagicCompleter to allow
5032 * Extended the FlexCompleter class as MagicCompleter to allow
5026 completion of @-starting lines.
5033 completion of @-starting lines.
5027
5034
5028 * Created __release__.py file as a central repository for release
5035 * Created __release__.py file as a central repository for release
5029 info that other files can read from.
5036 info that other files can read from.
5030
5037
5031 * Fixed small bug in logging: when logging was turned on in
5038 * Fixed small bug in logging: when logging was turned on in
5032 mid-session, old lines with special meanings (!@?) were being
5039 mid-session, old lines with special meanings (!@?) were being
5033 logged without the prepended comment, which is necessary since
5040 logged without the prepended comment, which is necessary since
5034 they are not truly valid python syntax. This should make session
5041 they are not truly valid python syntax. This should make session
5035 restores produce less errors.
5042 restores produce less errors.
5036
5043
5037 * The namespace cleanup forced me to make a FlexCompleter class
5044 * The namespace cleanup forced me to make a FlexCompleter class
5038 which is nothing but a ripoff of rlcompleter, but with selectable
5045 which is nothing but a ripoff of rlcompleter, but with selectable
5039 namespace (rlcompleter only works in __main__.__dict__). I'll try
5046 namespace (rlcompleter only works in __main__.__dict__). I'll try
5040 to submit a note to the authors to see if this change can be
5047 to submit a note to the authors to see if this change can be
5041 incorporated in future rlcompleter releases (Dec.6: done)
5048 incorporated in future rlcompleter releases (Dec.6: done)
5042
5049
5043 * More fixes to namespace handling. It was a mess! Now all
5050 * More fixes to namespace handling. It was a mess! Now all
5044 explicit references to __main__.__dict__ are gone (except when
5051 explicit references to __main__.__dict__ are gone (except when
5045 really needed) and everything is handled through the namespace
5052 really needed) and everything is handled through the namespace
5046 dicts in the IPython instance. We seem to be getting somewhere
5053 dicts in the IPython instance. We seem to be getting somewhere
5047 with this, finally...
5054 with this, finally...
5048
5055
5049 * Small documentation updates.
5056 * Small documentation updates.
5050
5057
5051 * Created the Extensions directory under IPython (with an
5058 * Created the Extensions directory under IPython (with an
5052 __init__.py). Put the PhysicalQ stuff there. This directory should
5059 __init__.py). Put the PhysicalQ stuff there. This directory should
5053 be used for all special-purpose extensions.
5060 be used for all special-purpose extensions.
5054
5061
5055 * File renaming:
5062 * File renaming:
5056 ipythonlib --> ipmaker
5063 ipythonlib --> ipmaker
5057 ipplib --> iplib
5064 ipplib --> iplib
5058 This makes a bit more sense in terms of what these files actually do.
5065 This makes a bit more sense in terms of what these files actually do.
5059
5066
5060 * Moved all the classes and functions in ipythonlib to ipplib, so
5067 * Moved all the classes and functions in ipythonlib to ipplib, so
5061 now ipythonlib only has make_IPython(). This will ease up its
5068 now ipythonlib only has make_IPython(). This will ease up its
5062 splitting in smaller functional chunks later.
5069 splitting in smaller functional chunks later.
5063
5070
5064 * Cleaned up (done, I think) output of @whos. Better column
5071 * Cleaned up (done, I think) output of @whos. Better column
5065 formatting, and now shows str(var) for as much as it can, which is
5072 formatting, and now shows str(var) for as much as it can, which is
5066 typically what one gets with a 'print var'.
5073 typically what one gets with a 'print var'.
5067
5074
5068 2001-12-04 Fernando Perez <fperez@colorado.edu>
5075 2001-12-04 Fernando Perez <fperez@colorado.edu>
5069
5076
5070 * Fixed namespace problems. Now builtin/IPyhton/user names get
5077 * Fixed namespace problems. Now builtin/IPyhton/user names get
5071 properly reported in their namespace. Internal namespace handling
5078 properly reported in their namespace. Internal namespace handling
5072 is finally getting decent (not perfect yet, but much better than
5079 is finally getting decent (not perfect yet, but much better than
5073 the ad-hoc mess we had).
5080 the ad-hoc mess we had).
5074
5081
5075 * Removed -exit option. If people just want to run a python
5082 * Removed -exit option. If people just want to run a python
5076 script, that's what the normal interpreter is for. Less
5083 script, that's what the normal interpreter is for. Less
5077 unnecessary options, less chances for bugs.
5084 unnecessary options, less chances for bugs.
5078
5085
5079 * Added a crash handler which generates a complete post-mortem if
5086 * Added a crash handler which generates a complete post-mortem if
5080 IPython crashes. This will help a lot in tracking bugs down the
5087 IPython crashes. This will help a lot in tracking bugs down the
5081 road.
5088 road.
5082
5089
5083 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5090 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5084 which were boud to functions being reassigned would bypass the
5091 which were boud to functions being reassigned would bypass the
5085 logger, breaking the sync of _il with the prompt counter. This
5092 logger, breaking the sync of _il with the prompt counter. This
5086 would then crash IPython later when a new line was logged.
5093 would then crash IPython later when a new line was logged.
5087
5094
5088 2001-12-02 Fernando Perez <fperez@colorado.edu>
5095 2001-12-02 Fernando Perez <fperez@colorado.edu>
5089
5096
5090 * Made IPython a package. This means people don't have to clutter
5097 * Made IPython a package. This means people don't have to clutter
5091 their sys.path with yet another directory. Changed the INSTALL
5098 their sys.path with yet another directory. Changed the INSTALL
5092 file accordingly.
5099 file accordingly.
5093
5100
5094 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5101 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5095 sorts its output (so @who shows it sorted) and @whos formats the
5102 sorts its output (so @who shows it sorted) and @whos formats the
5096 table according to the width of the first column. Nicer, easier to
5103 table according to the width of the first column. Nicer, easier to
5097 read. Todo: write a generic table_format() which takes a list of
5104 read. Todo: write a generic table_format() which takes a list of
5098 lists and prints it nicely formatted, with optional row/column
5105 lists and prints it nicely formatted, with optional row/column
5099 separators and proper padding and justification.
5106 separators and proper padding and justification.
5100
5107
5101 * Released 0.1.20
5108 * Released 0.1.20
5102
5109
5103 * Fixed bug in @log which would reverse the inputcache list (a
5110 * Fixed bug in @log which would reverse the inputcache list (a
5104 copy operation was missing).
5111 copy operation was missing).
5105
5112
5106 * Code cleanup. @config was changed to use page(). Better, since
5113 * Code cleanup. @config was changed to use page(). Better, since
5107 its output is always quite long.
5114 its output is always quite long.
5108
5115
5109 * Itpl is back as a dependency. I was having too many problems
5116 * Itpl is back as a dependency. I was having too many problems
5110 getting the parametric aliases to work reliably, and it's just
5117 getting the parametric aliases to work reliably, and it's just
5111 easier to code weird string operations with it than playing %()s
5118 easier to code weird string operations with it than playing %()s
5112 games. It's only ~6k, so I don't think it's too big a deal.
5119 games. It's only ~6k, so I don't think it's too big a deal.
5113
5120
5114 * Found (and fixed) a very nasty bug with history. !lines weren't
5121 * Found (and fixed) a very nasty bug with history. !lines weren't
5115 getting cached, and the out of sync caches would crash
5122 getting cached, and the out of sync caches would crash
5116 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5123 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5117 division of labor a bit better. Bug fixed, cleaner structure.
5124 division of labor a bit better. Bug fixed, cleaner structure.
5118
5125
5119 2001-12-01 Fernando Perez <fperez@colorado.edu>
5126 2001-12-01 Fernando Perez <fperez@colorado.edu>
5120
5127
5121 * Released 0.1.19
5128 * Released 0.1.19
5122
5129
5123 * Added option -n to @hist to prevent line number printing. Much
5130 * Added option -n to @hist to prevent line number printing. Much
5124 easier to copy/paste code this way.
5131 easier to copy/paste code this way.
5125
5132
5126 * Created global _il to hold the input list. Allows easy
5133 * Created global _il to hold the input list. Allows easy
5127 re-execution of blocks of code by slicing it (inspired by Janko's
5134 re-execution of blocks of code by slicing it (inspired by Janko's
5128 comment on 'macros').
5135 comment on 'macros').
5129
5136
5130 * Small fixes and doc updates.
5137 * Small fixes and doc updates.
5131
5138
5132 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5139 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5133 much too fragile with automagic. Handles properly multi-line
5140 much too fragile with automagic. Handles properly multi-line
5134 statements and takes parameters.
5141 statements and takes parameters.
5135
5142
5136 2001-11-30 Fernando Perez <fperez@colorado.edu>
5143 2001-11-30 Fernando Perez <fperez@colorado.edu>
5137
5144
5138 * Version 0.1.18 released.
5145 * Version 0.1.18 released.
5139
5146
5140 * Fixed nasty namespace bug in initial module imports.
5147 * Fixed nasty namespace bug in initial module imports.
5141
5148
5142 * Added copyright/license notes to all code files (except
5149 * Added copyright/license notes to all code files (except
5143 DPyGetOpt). For the time being, LGPL. That could change.
5150 DPyGetOpt). For the time being, LGPL. That could change.
5144
5151
5145 * Rewrote a much nicer README, updated INSTALL, cleaned up
5152 * Rewrote a much nicer README, updated INSTALL, cleaned up
5146 ipythonrc-* samples.
5153 ipythonrc-* samples.
5147
5154
5148 * Overall code/documentation cleanup. Basically ready for
5155 * Overall code/documentation cleanup. Basically ready for
5149 release. Only remaining thing: licence decision (LGPL?).
5156 release. Only remaining thing: licence decision (LGPL?).
5150
5157
5151 * Converted load_config to a class, ConfigLoader. Now recursion
5158 * Converted load_config to a class, ConfigLoader. Now recursion
5152 control is better organized. Doesn't include the same file twice.
5159 control is better organized. Doesn't include the same file twice.
5153
5160
5154 2001-11-29 Fernando Perez <fperez@colorado.edu>
5161 2001-11-29 Fernando Perez <fperez@colorado.edu>
5155
5162
5156 * Got input history working. Changed output history variables from
5163 * Got input history working. Changed output history variables from
5157 _p to _o so that _i is for input and _o for output. Just cleaner
5164 _p to _o so that _i is for input and _o for output. Just cleaner
5158 convention.
5165 convention.
5159
5166
5160 * Implemented parametric aliases. This pretty much allows the
5167 * Implemented parametric aliases. This pretty much allows the
5161 alias system to offer full-blown shell convenience, I think.
5168 alias system to offer full-blown shell convenience, I think.
5162
5169
5163 * Version 0.1.17 released, 0.1.18 opened.
5170 * Version 0.1.17 released, 0.1.18 opened.
5164
5171
5165 * dot_ipython/ipythonrc (alias): added documentation.
5172 * dot_ipython/ipythonrc (alias): added documentation.
5166 (xcolor): Fixed small bug (xcolors -> xcolor)
5173 (xcolor): Fixed small bug (xcolors -> xcolor)
5167
5174
5168 * Changed the alias system. Now alias is a magic command to define
5175 * Changed the alias system. Now alias is a magic command to define
5169 aliases just like the shell. Rationale: the builtin magics should
5176 aliases just like the shell. Rationale: the builtin magics should
5170 be there for things deeply connected to IPython's
5177 be there for things deeply connected to IPython's
5171 architecture. And this is a much lighter system for what I think
5178 architecture. And this is a much lighter system for what I think
5172 is the really important feature: allowing users to define quickly
5179 is the really important feature: allowing users to define quickly
5173 magics that will do shell things for them, so they can customize
5180 magics that will do shell things for them, so they can customize
5174 IPython easily to match their work habits. If someone is really
5181 IPython easily to match their work habits. If someone is really
5175 desperate to have another name for a builtin alias, they can
5182 desperate to have another name for a builtin alias, they can
5176 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5183 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5177 works.
5184 works.
5178
5185
5179 2001-11-28 Fernando Perez <fperez@colorado.edu>
5186 2001-11-28 Fernando Perez <fperez@colorado.edu>
5180
5187
5181 * Changed @file so that it opens the source file at the proper
5188 * Changed @file so that it opens the source file at the proper
5182 line. Since it uses less, if your EDITOR environment is
5189 line. Since it uses less, if your EDITOR environment is
5183 configured, typing v will immediately open your editor of choice
5190 configured, typing v will immediately open your editor of choice
5184 right at the line where the object is defined. Not as quick as
5191 right at the line where the object is defined. Not as quick as
5185 having a direct @edit command, but for all intents and purposes it
5192 having a direct @edit command, but for all intents and purposes it
5186 works. And I don't have to worry about writing @edit to deal with
5193 works. And I don't have to worry about writing @edit to deal with
5187 all the editors, less does that.
5194 all the editors, less does that.
5188
5195
5189 * Version 0.1.16 released, 0.1.17 opened.
5196 * Version 0.1.16 released, 0.1.17 opened.
5190
5197
5191 * Fixed some nasty bugs in the page/page_dumb combo that could
5198 * Fixed some nasty bugs in the page/page_dumb combo that could
5192 crash IPython.
5199 crash IPython.
5193
5200
5194 2001-11-27 Fernando Perez <fperez@colorado.edu>
5201 2001-11-27 Fernando Perez <fperez@colorado.edu>
5195
5202
5196 * Version 0.1.15 released, 0.1.16 opened.
5203 * Version 0.1.15 released, 0.1.16 opened.
5197
5204
5198 * Finally got ? and ?? to work for undefined things: now it's
5205 * Finally got ? and ?? to work for undefined things: now it's
5199 possible to type {}.get? and get information about the get method
5206 possible to type {}.get? and get information about the get method
5200 of dicts, or os.path? even if only os is defined (so technically
5207 of dicts, or os.path? even if only os is defined (so technically
5201 os.path isn't). Works at any level. For example, after import os,
5208 os.path isn't). Works at any level. For example, after import os,
5202 os?, os.path?, os.path.abspath? all work. This is great, took some
5209 os?, os.path?, os.path.abspath? all work. This is great, took some
5203 work in _ofind.
5210 work in _ofind.
5204
5211
5205 * Fixed more bugs with logging. The sanest way to do it was to add
5212 * Fixed more bugs with logging. The sanest way to do it was to add
5206 to @log a 'mode' parameter. Killed two in one shot (this mode
5213 to @log a 'mode' parameter. Killed two in one shot (this mode
5207 option was a request of Janko's). I think it's finally clean
5214 option was a request of Janko's). I think it's finally clean
5208 (famous last words).
5215 (famous last words).
5209
5216
5210 * Added a page_dumb() pager which does a decent job of paging on
5217 * Added a page_dumb() pager which does a decent job of paging on
5211 screen, if better things (like less) aren't available. One less
5218 screen, if better things (like less) aren't available. One less
5212 unix dependency (someday maybe somebody will port this to
5219 unix dependency (someday maybe somebody will port this to
5213 windows).
5220 windows).
5214
5221
5215 * Fixed problem in magic_log: would lock of logging out if log
5222 * Fixed problem in magic_log: would lock of logging out if log
5216 creation failed (because it would still think it had succeeded).
5223 creation failed (because it would still think it had succeeded).
5217
5224
5218 * Improved the page() function using curses to auto-detect screen
5225 * Improved the page() function using curses to auto-detect screen
5219 size. Now it can make a much better decision on whether to print
5226 size. Now it can make a much better decision on whether to print
5220 or page a string. Option screen_length was modified: a value 0
5227 or page a string. Option screen_length was modified: a value 0
5221 means auto-detect, and that's the default now.
5228 means auto-detect, and that's the default now.
5222
5229
5223 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5230 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5224 go out. I'll test it for a few days, then talk to Janko about
5231 go out. I'll test it for a few days, then talk to Janko about
5225 licences and announce it.
5232 licences and announce it.
5226
5233
5227 * Fixed the length of the auto-generated ---> prompt which appears
5234 * Fixed the length of the auto-generated ---> prompt which appears
5228 for auto-parens and auto-quotes. Getting this right isn't trivial,
5235 for auto-parens and auto-quotes. Getting this right isn't trivial,
5229 with all the color escapes, different prompt types and optional
5236 with all the color escapes, different prompt types and optional
5230 separators. But it seems to be working in all the combinations.
5237 separators. But it seems to be working in all the combinations.
5231
5238
5232 2001-11-26 Fernando Perez <fperez@colorado.edu>
5239 2001-11-26 Fernando Perez <fperez@colorado.edu>
5233
5240
5234 * Wrote a regexp filter to get option types from the option names
5241 * Wrote a regexp filter to get option types from the option names
5235 string. This eliminates the need to manually keep two duplicate
5242 string. This eliminates the need to manually keep two duplicate
5236 lists.
5243 lists.
5237
5244
5238 * Removed the unneeded check_option_names. Now options are handled
5245 * Removed the unneeded check_option_names. Now options are handled
5239 in a much saner manner and it's easy to visually check that things
5246 in a much saner manner and it's easy to visually check that things
5240 are ok.
5247 are ok.
5241
5248
5242 * Updated version numbers on all files I modified to carry a
5249 * Updated version numbers on all files I modified to carry a
5243 notice so Janko and Nathan have clear version markers.
5250 notice so Janko and Nathan have clear version markers.
5244
5251
5245 * Updated docstring for ultraTB with my changes. I should send
5252 * Updated docstring for ultraTB with my changes. I should send
5246 this to Nathan.
5253 this to Nathan.
5247
5254
5248 * Lots of small fixes. Ran everything through pychecker again.
5255 * Lots of small fixes. Ran everything through pychecker again.
5249
5256
5250 * Made loading of deep_reload an cmd line option. If it's not too
5257 * Made loading of deep_reload an cmd line option. If it's not too
5251 kosher, now people can just disable it. With -nodeep_reload it's
5258 kosher, now people can just disable it. With -nodeep_reload it's
5252 still available as dreload(), it just won't overwrite reload().
5259 still available as dreload(), it just won't overwrite reload().
5253
5260
5254 * Moved many options to the no| form (-opt and -noopt
5261 * Moved many options to the no| form (-opt and -noopt
5255 accepted). Cleaner.
5262 accepted). Cleaner.
5256
5263
5257 * Changed magic_log so that if called with no parameters, it uses
5264 * Changed magic_log so that if called with no parameters, it uses
5258 'rotate' mode. That way auto-generated logs aren't automatically
5265 'rotate' mode. That way auto-generated logs aren't automatically
5259 over-written. For normal logs, now a backup is made if it exists
5266 over-written. For normal logs, now a backup is made if it exists
5260 (only 1 level of backups). A new 'backup' mode was added to the
5267 (only 1 level of backups). A new 'backup' mode was added to the
5261 Logger class to support this. This was a request by Janko.
5268 Logger class to support this. This was a request by Janko.
5262
5269
5263 * Added @logoff/@logon to stop/restart an active log.
5270 * Added @logoff/@logon to stop/restart an active log.
5264
5271
5265 * Fixed a lot of bugs in log saving/replay. It was pretty
5272 * Fixed a lot of bugs in log saving/replay. It was pretty
5266 broken. Now special lines (!@,/) appear properly in the command
5273 broken. Now special lines (!@,/) appear properly in the command
5267 history after a log replay.
5274 history after a log replay.
5268
5275
5269 * Tried and failed to implement full session saving via pickle. My
5276 * Tried and failed to implement full session saving via pickle. My
5270 idea was to pickle __main__.__dict__, but modules can't be
5277 idea was to pickle __main__.__dict__, but modules can't be
5271 pickled. This would be a better alternative to replaying logs, but
5278 pickled. This would be a better alternative to replaying logs, but
5272 seems quite tricky to get to work. Changed -session to be called
5279 seems quite tricky to get to work. Changed -session to be called
5273 -logplay, which more accurately reflects what it does. And if we
5280 -logplay, which more accurately reflects what it does. And if we
5274 ever get real session saving working, -session is now available.
5281 ever get real session saving working, -session is now available.
5275
5282
5276 * Implemented color schemes for prompts also. As for tracebacks,
5283 * Implemented color schemes for prompts also. As for tracebacks,
5277 currently only NoColor and Linux are supported. But now the
5284 currently only NoColor and Linux are supported. But now the
5278 infrastructure is in place, based on a generic ColorScheme
5285 infrastructure is in place, based on a generic ColorScheme
5279 class. So writing and activating new schemes both for the prompts
5286 class. So writing and activating new schemes both for the prompts
5280 and the tracebacks should be straightforward.
5287 and the tracebacks should be straightforward.
5281
5288
5282 * Version 0.1.13 released, 0.1.14 opened.
5289 * Version 0.1.13 released, 0.1.14 opened.
5283
5290
5284 * Changed handling of options for output cache. Now counter is
5291 * Changed handling of options for output cache. Now counter is
5285 hardwired starting at 1 and one specifies the maximum number of
5292 hardwired starting at 1 and one specifies the maximum number of
5286 entries *in the outcache* (not the max prompt counter). This is
5293 entries *in the outcache* (not the max prompt counter). This is
5287 much better, since many statements won't increase the cache
5294 much better, since many statements won't increase the cache
5288 count. It also eliminated some confusing options, now there's only
5295 count. It also eliminated some confusing options, now there's only
5289 one: cache_size.
5296 one: cache_size.
5290
5297
5291 * Added 'alias' magic function and magic_alias option in the
5298 * Added 'alias' magic function and magic_alias option in the
5292 ipythonrc file. Now the user can easily define whatever names he
5299 ipythonrc file. Now the user can easily define whatever names he
5293 wants for the magic functions without having to play weird
5300 wants for the magic functions without having to play weird
5294 namespace games. This gives IPython a real shell-like feel.
5301 namespace games. This gives IPython a real shell-like feel.
5295
5302
5296 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5303 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5297 @ or not).
5304 @ or not).
5298
5305
5299 This was one of the last remaining 'visible' bugs (that I know
5306 This was one of the last remaining 'visible' bugs (that I know
5300 of). I think if I can clean up the session loading so it works
5307 of). I think if I can clean up the session loading so it works
5301 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5308 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5302 about licensing).
5309 about licensing).
5303
5310
5304 2001-11-25 Fernando Perez <fperez@colorado.edu>
5311 2001-11-25 Fernando Perez <fperez@colorado.edu>
5305
5312
5306 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5313 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5307 there's a cleaner distinction between what ? and ?? show.
5314 there's a cleaner distinction between what ? and ?? show.
5308
5315
5309 * Added screen_length option. Now the user can define his own
5316 * Added screen_length option. Now the user can define his own
5310 screen size for page() operations.
5317 screen size for page() operations.
5311
5318
5312 * Implemented magic shell-like functions with automatic code
5319 * Implemented magic shell-like functions with automatic code
5313 generation. Now adding another function is just a matter of adding
5320 generation. Now adding another function is just a matter of adding
5314 an entry to a dict, and the function is dynamically generated at
5321 an entry to a dict, and the function is dynamically generated at
5315 run-time. Python has some really cool features!
5322 run-time. Python has some really cool features!
5316
5323
5317 * Renamed many options to cleanup conventions a little. Now all
5324 * Renamed many options to cleanup conventions a little. Now all
5318 are lowercase, and only underscores where needed. Also in the code
5325 are lowercase, and only underscores where needed. Also in the code
5319 option name tables are clearer.
5326 option name tables are clearer.
5320
5327
5321 * Changed prompts a little. Now input is 'In [n]:' instead of
5328 * Changed prompts a little. Now input is 'In [n]:' instead of
5322 'In[n]:='. This allows it the numbers to be aligned with the
5329 'In[n]:='. This allows it the numbers to be aligned with the
5323 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5330 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5324 Python (it was a Mathematica thing). The '...' continuation prompt
5331 Python (it was a Mathematica thing). The '...' continuation prompt
5325 was also changed a little to align better.
5332 was also changed a little to align better.
5326
5333
5327 * Fixed bug when flushing output cache. Not all _p<n> variables
5334 * Fixed bug when flushing output cache. Not all _p<n> variables
5328 exist, so their deletion needs to be wrapped in a try:
5335 exist, so their deletion needs to be wrapped in a try:
5329
5336
5330 * Figured out how to properly use inspect.formatargspec() (it
5337 * Figured out how to properly use inspect.formatargspec() (it
5331 requires the args preceded by *). So I removed all the code from
5338 requires the args preceded by *). So I removed all the code from
5332 _get_pdef in Magic, which was just replicating that.
5339 _get_pdef in Magic, which was just replicating that.
5333
5340
5334 * Added test to prefilter to allow redefining magic function names
5341 * Added test to prefilter to allow redefining magic function names
5335 as variables. This is ok, since the @ form is always available,
5342 as variables. This is ok, since the @ form is always available,
5336 but whe should allow the user to define a variable called 'ls' if
5343 but whe should allow the user to define a variable called 'ls' if
5337 he needs it.
5344 he needs it.
5338
5345
5339 * Moved the ToDo information from README into a separate ToDo.
5346 * Moved the ToDo information from README into a separate ToDo.
5340
5347
5341 * General code cleanup and small bugfixes. I think it's close to a
5348 * General code cleanup and small bugfixes. I think it's close to a
5342 state where it can be released, obviously with a big 'beta'
5349 state where it can be released, obviously with a big 'beta'
5343 warning on it.
5350 warning on it.
5344
5351
5345 * Got the magic function split to work. Now all magics are defined
5352 * Got the magic function split to work. Now all magics are defined
5346 in a separate class. It just organizes things a bit, and now
5353 in a separate class. It just organizes things a bit, and now
5347 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5354 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5348 was too long).
5355 was too long).
5349
5356
5350 * Changed @clear to @reset to avoid potential confusions with
5357 * Changed @clear to @reset to avoid potential confusions with
5351 the shell command clear. Also renamed @cl to @clear, which does
5358 the shell command clear. Also renamed @cl to @clear, which does
5352 exactly what people expect it to from their shell experience.
5359 exactly what people expect it to from their shell experience.
5353
5360
5354 Added a check to the @reset command (since it's so
5361 Added a check to the @reset command (since it's so
5355 destructive, it's probably a good idea to ask for confirmation).
5362 destructive, it's probably a good idea to ask for confirmation).
5356 But now reset only works for full namespace resetting. Since the
5363 But now reset only works for full namespace resetting. Since the
5357 del keyword is already there for deleting a few specific
5364 del keyword is already there for deleting a few specific
5358 variables, I don't see the point of having a redundant magic
5365 variables, I don't see the point of having a redundant magic
5359 function for the same task.
5366 function for the same task.
5360
5367
5361 2001-11-24 Fernando Perez <fperez@colorado.edu>
5368 2001-11-24 Fernando Perez <fperez@colorado.edu>
5362
5369
5363 * Updated the builtin docs (esp. the ? ones).
5370 * Updated the builtin docs (esp. the ? ones).
5364
5371
5365 * Ran all the code through pychecker. Not terribly impressed with
5372 * Ran all the code through pychecker. Not terribly impressed with
5366 it: lots of spurious warnings and didn't really find anything of
5373 it: lots of spurious warnings and didn't really find anything of
5367 substance (just a few modules being imported and not used).
5374 substance (just a few modules being imported and not used).
5368
5375
5369 * Implemented the new ultraTB functionality into IPython. New
5376 * Implemented the new ultraTB functionality into IPython. New
5370 option: xcolors. This chooses color scheme. xmode now only selects
5377 option: xcolors. This chooses color scheme. xmode now only selects
5371 between Plain and Verbose. Better orthogonality.
5378 between Plain and Verbose. Better orthogonality.
5372
5379
5373 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5380 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5374 mode and color scheme for the exception handlers. Now it's
5381 mode and color scheme for the exception handlers. Now it's
5375 possible to have the verbose traceback with no coloring.
5382 possible to have the verbose traceback with no coloring.
5376
5383
5377 2001-11-23 Fernando Perez <fperez@colorado.edu>
5384 2001-11-23 Fernando Perez <fperez@colorado.edu>
5378
5385
5379 * Version 0.1.12 released, 0.1.13 opened.
5386 * Version 0.1.12 released, 0.1.13 opened.
5380
5387
5381 * Removed option to set auto-quote and auto-paren escapes by
5388 * Removed option to set auto-quote and auto-paren escapes by
5382 user. The chances of breaking valid syntax are just too high. If
5389 user. The chances of breaking valid syntax are just too high. If
5383 someone *really* wants, they can always dig into the code.
5390 someone *really* wants, they can always dig into the code.
5384
5391
5385 * Made prompt separators configurable.
5392 * Made prompt separators configurable.
5386
5393
5387 2001-11-22 Fernando Perez <fperez@colorado.edu>
5394 2001-11-22 Fernando Perez <fperez@colorado.edu>
5388
5395
5389 * Small bugfixes in many places.
5396 * Small bugfixes in many places.
5390
5397
5391 * Removed the MyCompleter class from ipplib. It seemed redundant
5398 * Removed the MyCompleter class from ipplib. It seemed redundant
5392 with the C-p,C-n history search functionality. Less code to
5399 with the C-p,C-n history search functionality. Less code to
5393 maintain.
5400 maintain.
5394
5401
5395 * Moved all the original ipython.py code into ipythonlib.py. Right
5402 * Moved all the original ipython.py code into ipythonlib.py. Right
5396 now it's just one big dump into a function called make_IPython, so
5403 now it's just one big dump into a function called make_IPython, so
5397 no real modularity has been gained. But at least it makes the
5404 no real modularity has been gained. But at least it makes the
5398 wrapper script tiny, and since ipythonlib is a module, it gets
5405 wrapper script tiny, and since ipythonlib is a module, it gets
5399 compiled and startup is much faster.
5406 compiled and startup is much faster.
5400
5407
5401 This is a reasobably 'deep' change, so we should test it for a
5408 This is a reasobably 'deep' change, so we should test it for a
5402 while without messing too much more with the code.
5409 while without messing too much more with the code.
5403
5410
5404 2001-11-21 Fernando Perez <fperez@colorado.edu>
5411 2001-11-21 Fernando Perez <fperez@colorado.edu>
5405
5412
5406 * Version 0.1.11 released, 0.1.12 opened for further work.
5413 * Version 0.1.11 released, 0.1.12 opened for further work.
5407
5414
5408 * Removed dependency on Itpl. It was only needed in one place. It
5415 * Removed dependency on Itpl. It was only needed in one place. It
5409 would be nice if this became part of python, though. It makes life
5416 would be nice if this became part of python, though. It makes life
5410 *a lot* easier in some cases.
5417 *a lot* easier in some cases.
5411
5418
5412 * Simplified the prefilter code a bit. Now all handlers are
5419 * Simplified the prefilter code a bit. Now all handlers are
5413 expected to explicitly return a value (at least a blank string).
5420 expected to explicitly return a value (at least a blank string).
5414
5421
5415 * Heavy edits in ipplib. Removed the help system altogether. Now
5422 * Heavy edits in ipplib. Removed the help system altogether. Now
5416 obj?/?? is used for inspecting objects, a magic @doc prints
5423 obj?/?? is used for inspecting objects, a magic @doc prints
5417 docstrings, and full-blown Python help is accessed via the 'help'
5424 docstrings, and full-blown Python help is accessed via the 'help'
5418 keyword. This cleans up a lot of code (less to maintain) and does
5425 keyword. This cleans up a lot of code (less to maintain) and does
5419 the job. Since 'help' is now a standard Python component, might as
5426 the job. Since 'help' is now a standard Python component, might as
5420 well use it and remove duplicate functionality.
5427 well use it and remove duplicate functionality.
5421
5428
5422 Also removed the option to use ipplib as a standalone program. By
5429 Also removed the option to use ipplib as a standalone program. By
5423 now it's too dependent on other parts of IPython to function alone.
5430 now it's too dependent on other parts of IPython to function alone.
5424
5431
5425 * Fixed bug in genutils.pager. It would crash if the pager was
5432 * Fixed bug in genutils.pager. It would crash if the pager was
5426 exited immediately after opening (broken pipe).
5433 exited immediately after opening (broken pipe).
5427
5434
5428 * Trimmed down the VerboseTB reporting a little. The header is
5435 * Trimmed down the VerboseTB reporting a little. The header is
5429 much shorter now and the repeated exception arguments at the end
5436 much shorter now and the repeated exception arguments at the end
5430 have been removed. For interactive use the old header seemed a bit
5437 have been removed. For interactive use the old header seemed a bit
5431 excessive.
5438 excessive.
5432
5439
5433 * Fixed small bug in output of @whos for variables with multi-word
5440 * Fixed small bug in output of @whos for variables with multi-word
5434 types (only first word was displayed).
5441 types (only first word was displayed).
5435
5442
5436 2001-11-17 Fernando Perez <fperez@colorado.edu>
5443 2001-11-17 Fernando Perez <fperez@colorado.edu>
5437
5444
5438 * Version 0.1.10 released, 0.1.11 opened for further work.
5445 * Version 0.1.10 released, 0.1.11 opened for further work.
5439
5446
5440 * Modified dirs and friends. dirs now *returns* the stack (not
5447 * Modified dirs and friends. dirs now *returns* the stack (not
5441 prints), so one can manipulate it as a variable. Convenient to
5448 prints), so one can manipulate it as a variable. Convenient to
5442 travel along many directories.
5449 travel along many directories.
5443
5450
5444 * Fixed bug in magic_pdef: would only work with functions with
5451 * Fixed bug in magic_pdef: would only work with functions with
5445 arguments with default values.
5452 arguments with default values.
5446
5453
5447 2001-11-14 Fernando Perez <fperez@colorado.edu>
5454 2001-11-14 Fernando Perez <fperez@colorado.edu>
5448
5455
5449 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5456 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5450 example with IPython. Various other minor fixes and cleanups.
5457 example with IPython. Various other minor fixes and cleanups.
5451
5458
5452 * Version 0.1.9 released, 0.1.10 opened for further work.
5459 * Version 0.1.9 released, 0.1.10 opened for further work.
5453
5460
5454 * Added sys.path to the list of directories searched in the
5461 * Added sys.path to the list of directories searched in the
5455 execfile= option. It used to be the current directory and the
5462 execfile= option. It used to be the current directory and the
5456 user's IPYTHONDIR only.
5463 user's IPYTHONDIR only.
5457
5464
5458 2001-11-13 Fernando Perez <fperez@colorado.edu>
5465 2001-11-13 Fernando Perez <fperez@colorado.edu>
5459
5466
5460 * Reinstated the raw_input/prefilter separation that Janko had
5467 * Reinstated the raw_input/prefilter separation that Janko had
5461 initially. This gives a more convenient setup for extending the
5468 initially. This gives a more convenient setup for extending the
5462 pre-processor from the outside: raw_input always gets a string,
5469 pre-processor from the outside: raw_input always gets a string,
5463 and prefilter has to process it. We can then redefine prefilter
5470 and prefilter has to process it. We can then redefine prefilter
5464 from the outside and implement extensions for special
5471 from the outside and implement extensions for special
5465 purposes.
5472 purposes.
5466
5473
5467 Today I got one for inputting PhysicalQuantity objects
5474 Today I got one for inputting PhysicalQuantity objects
5468 (from Scientific) without needing any function calls at
5475 (from Scientific) without needing any function calls at
5469 all. Extremely convenient, and it's all done as a user-level
5476 all. Extremely convenient, and it's all done as a user-level
5470 extension (no IPython code was touched). Now instead of:
5477 extension (no IPython code was touched). Now instead of:
5471 a = PhysicalQuantity(4.2,'m/s**2')
5478 a = PhysicalQuantity(4.2,'m/s**2')
5472 one can simply say
5479 one can simply say
5473 a = 4.2 m/s**2
5480 a = 4.2 m/s**2
5474 or even
5481 or even
5475 a = 4.2 m/s^2
5482 a = 4.2 m/s^2
5476
5483
5477 I use this, but it's also a proof of concept: IPython really is
5484 I use this, but it's also a proof of concept: IPython really is
5478 fully user-extensible, even at the level of the parsing of the
5485 fully user-extensible, even at the level of the parsing of the
5479 command line. It's not trivial, but it's perfectly doable.
5486 command line. It's not trivial, but it's perfectly doable.
5480
5487
5481 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5488 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5482 the problem of modules being loaded in the inverse order in which
5489 the problem of modules being loaded in the inverse order in which
5483 they were defined in
5490 they were defined in
5484
5491
5485 * Version 0.1.8 released, 0.1.9 opened for further work.
5492 * Version 0.1.8 released, 0.1.9 opened for further work.
5486
5493
5487 * Added magics pdef, source and file. They respectively show the
5494 * Added magics pdef, source and file. They respectively show the
5488 definition line ('prototype' in C), source code and full python
5495 definition line ('prototype' in C), source code and full python
5489 file for any callable object. The object inspector oinfo uses
5496 file for any callable object. The object inspector oinfo uses
5490 these to show the same information.
5497 these to show the same information.
5491
5498
5492 * Version 0.1.7 released, 0.1.8 opened for further work.
5499 * Version 0.1.7 released, 0.1.8 opened for further work.
5493
5500
5494 * Separated all the magic functions into a class called Magic. The
5501 * Separated all the magic functions into a class called Magic. The
5495 InteractiveShell class was becoming too big for Xemacs to handle
5502 InteractiveShell class was becoming too big for Xemacs to handle
5496 (de-indenting a line would lock it up for 10 seconds while it
5503 (de-indenting a line would lock it up for 10 seconds while it
5497 backtracked on the whole class!)
5504 backtracked on the whole class!)
5498
5505
5499 FIXME: didn't work. It can be done, but right now namespaces are
5506 FIXME: didn't work. It can be done, but right now namespaces are
5500 all messed up. Do it later (reverted it for now, so at least
5507 all messed up. Do it later (reverted it for now, so at least
5501 everything works as before).
5508 everything works as before).
5502
5509
5503 * Got the object introspection system (magic_oinfo) working! I
5510 * Got the object introspection system (magic_oinfo) working! I
5504 think this is pretty much ready for release to Janko, so he can
5511 think this is pretty much ready for release to Janko, so he can
5505 test it for a while and then announce it. Pretty much 100% of what
5512 test it for a while and then announce it. Pretty much 100% of what
5506 I wanted for the 'phase 1' release is ready. Happy, tired.
5513 I wanted for the 'phase 1' release is ready. Happy, tired.
5507
5514
5508 2001-11-12 Fernando Perez <fperez@colorado.edu>
5515 2001-11-12 Fernando Perez <fperez@colorado.edu>
5509
5516
5510 * Version 0.1.6 released, 0.1.7 opened for further work.
5517 * Version 0.1.6 released, 0.1.7 opened for further work.
5511
5518
5512 * Fixed bug in printing: it used to test for truth before
5519 * Fixed bug in printing: it used to test for truth before
5513 printing, so 0 wouldn't print. Now checks for None.
5520 printing, so 0 wouldn't print. Now checks for None.
5514
5521
5515 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5522 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5516 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5523 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5517 reaches by hand into the outputcache. Think of a better way to do
5524 reaches by hand into the outputcache. Think of a better way to do
5518 this later.
5525 this later.
5519
5526
5520 * Various small fixes thanks to Nathan's comments.
5527 * Various small fixes thanks to Nathan's comments.
5521
5528
5522 * Changed magic_pprint to magic_Pprint. This way it doesn't
5529 * Changed magic_pprint to magic_Pprint. This way it doesn't
5523 collide with pprint() and the name is consistent with the command
5530 collide with pprint() and the name is consistent with the command
5524 line option.
5531 line option.
5525
5532
5526 * Changed prompt counter behavior to be fully like
5533 * Changed prompt counter behavior to be fully like
5527 Mathematica's. That is, even input that doesn't return a result
5534 Mathematica's. That is, even input that doesn't return a result
5528 raises the prompt counter. The old behavior was kind of confusing
5535 raises the prompt counter. The old behavior was kind of confusing
5529 (getting the same prompt number several times if the operation
5536 (getting the same prompt number several times if the operation
5530 didn't return a result).
5537 didn't return a result).
5531
5538
5532 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5539 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5533
5540
5534 * Fixed -Classic mode (wasn't working anymore).
5541 * Fixed -Classic mode (wasn't working anymore).
5535
5542
5536 * Added colored prompts using Nathan's new code. Colors are
5543 * Added colored prompts using Nathan's new code. Colors are
5537 currently hardwired, they can be user-configurable. For
5544 currently hardwired, they can be user-configurable. For
5538 developers, they can be chosen in file ipythonlib.py, at the
5545 developers, they can be chosen in file ipythonlib.py, at the
5539 beginning of the CachedOutput class def.
5546 beginning of the CachedOutput class def.
5540
5547
5541 2001-11-11 Fernando Perez <fperez@colorado.edu>
5548 2001-11-11 Fernando Perez <fperez@colorado.edu>
5542
5549
5543 * Version 0.1.5 released, 0.1.6 opened for further work.
5550 * Version 0.1.5 released, 0.1.6 opened for further work.
5544
5551
5545 * Changed magic_env to *return* the environment as a dict (not to
5552 * Changed magic_env to *return* the environment as a dict (not to
5546 print it). This way it prints, but it can also be processed.
5553 print it). This way it prints, but it can also be processed.
5547
5554
5548 * Added Verbose exception reporting to interactive
5555 * Added Verbose exception reporting to interactive
5549 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5556 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5550 traceback. Had to make some changes to the ultraTB file. This is
5557 traceback. Had to make some changes to the ultraTB file. This is
5551 probably the last 'big' thing in my mental todo list. This ties
5558 probably the last 'big' thing in my mental todo list. This ties
5552 in with the next entry:
5559 in with the next entry:
5553
5560
5554 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5561 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5555 has to specify is Plain, Color or Verbose for all exception
5562 has to specify is Plain, Color or Verbose for all exception
5556 handling.
5563 handling.
5557
5564
5558 * Removed ShellServices option. All this can really be done via
5565 * Removed ShellServices option. All this can really be done via
5559 the magic system. It's easier to extend, cleaner and has automatic
5566 the magic system. It's easier to extend, cleaner and has automatic
5560 namespace protection and documentation.
5567 namespace protection and documentation.
5561
5568
5562 2001-11-09 Fernando Perez <fperez@colorado.edu>
5569 2001-11-09 Fernando Perez <fperez@colorado.edu>
5563
5570
5564 * Fixed bug in output cache flushing (missing parameter to
5571 * Fixed bug in output cache flushing (missing parameter to
5565 __init__). Other small bugs fixed (found using pychecker).
5572 __init__). Other small bugs fixed (found using pychecker).
5566
5573
5567 * Version 0.1.4 opened for bugfixing.
5574 * Version 0.1.4 opened for bugfixing.
5568
5575
5569 2001-11-07 Fernando Perez <fperez@colorado.edu>
5576 2001-11-07 Fernando Perez <fperez@colorado.edu>
5570
5577
5571 * Version 0.1.3 released, mainly because of the raw_input bug.
5578 * Version 0.1.3 released, mainly because of the raw_input bug.
5572
5579
5573 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5580 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5574 and when testing for whether things were callable, a call could
5581 and when testing for whether things were callable, a call could
5575 actually be made to certain functions. They would get called again
5582 actually be made to certain functions. They would get called again
5576 once 'really' executed, with a resulting double call. A disaster
5583 once 'really' executed, with a resulting double call. A disaster
5577 in many cases (list.reverse() would never work!).
5584 in many cases (list.reverse() would never work!).
5578
5585
5579 * Removed prefilter() function, moved its code to raw_input (which
5586 * Removed prefilter() function, moved its code to raw_input (which
5580 after all was just a near-empty caller for prefilter). This saves
5587 after all was just a near-empty caller for prefilter). This saves
5581 a function call on every prompt, and simplifies the class a tiny bit.
5588 a function call on every prompt, and simplifies the class a tiny bit.
5582
5589
5583 * Fix _ip to __ip name in magic example file.
5590 * Fix _ip to __ip name in magic example file.
5584
5591
5585 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5592 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5586 work with non-gnu versions of tar.
5593 work with non-gnu versions of tar.
5587
5594
5588 2001-11-06 Fernando Perez <fperez@colorado.edu>
5595 2001-11-06 Fernando Perez <fperez@colorado.edu>
5589
5596
5590 * Version 0.1.2. Just to keep track of the recent changes.
5597 * Version 0.1.2. Just to keep track of the recent changes.
5591
5598
5592 * Fixed nasty bug in output prompt routine. It used to check 'if
5599 * Fixed nasty bug in output prompt routine. It used to check 'if
5593 arg != None...'. Problem is, this fails if arg implements a
5600 arg != None...'. Problem is, this fails if arg implements a
5594 special comparison (__cmp__) which disallows comparing to
5601 special comparison (__cmp__) which disallows comparing to
5595 None. Found it when trying to use the PhysicalQuantity module from
5602 None. Found it when trying to use the PhysicalQuantity module from
5596 ScientificPython.
5603 ScientificPython.
5597
5604
5598 2001-11-05 Fernando Perez <fperez@colorado.edu>
5605 2001-11-05 Fernando Perez <fperez@colorado.edu>
5599
5606
5600 * Also added dirs. Now the pushd/popd/dirs family functions
5607 * Also added dirs. Now the pushd/popd/dirs family functions
5601 basically like the shell, with the added convenience of going home
5608 basically like the shell, with the added convenience of going home
5602 when called with no args.
5609 when called with no args.
5603
5610
5604 * pushd/popd slightly modified to mimic shell behavior more
5611 * pushd/popd slightly modified to mimic shell behavior more
5605 closely.
5612 closely.
5606
5613
5607 * Added env,pushd,popd from ShellServices as magic functions. I
5614 * Added env,pushd,popd from ShellServices as magic functions. I
5608 think the cleanest will be to port all desired functions from
5615 think the cleanest will be to port all desired functions from
5609 ShellServices as magics and remove ShellServices altogether. This
5616 ShellServices as magics and remove ShellServices altogether. This
5610 will provide a single, clean way of adding functionality
5617 will provide a single, clean way of adding functionality
5611 (shell-type or otherwise) to IP.
5618 (shell-type or otherwise) to IP.
5612
5619
5613 2001-11-04 Fernando Perez <fperez@colorado.edu>
5620 2001-11-04 Fernando Perez <fperez@colorado.edu>
5614
5621
5615 * Added .ipython/ directory to sys.path. This way users can keep
5622 * Added .ipython/ directory to sys.path. This way users can keep
5616 customizations there and access them via import.
5623 customizations there and access them via import.
5617
5624
5618 2001-11-03 Fernando Perez <fperez@colorado.edu>
5625 2001-11-03 Fernando Perez <fperez@colorado.edu>
5619
5626
5620 * Opened version 0.1.1 for new changes.
5627 * Opened version 0.1.1 for new changes.
5621
5628
5622 * Changed version number to 0.1.0: first 'public' release, sent to
5629 * Changed version number to 0.1.0: first 'public' release, sent to
5623 Nathan and Janko.
5630 Nathan and Janko.
5624
5631
5625 * Lots of small fixes and tweaks.
5632 * Lots of small fixes and tweaks.
5626
5633
5627 * Minor changes to whos format. Now strings are shown, snipped if
5634 * Minor changes to whos format. Now strings are shown, snipped if
5628 too long.
5635 too long.
5629
5636
5630 * Changed ShellServices to work on __main__ so they show up in @who
5637 * Changed ShellServices to work on __main__ so they show up in @who
5631
5638
5632 * Help also works with ? at the end of a line:
5639 * Help also works with ? at the end of a line:
5633 ?sin and sin?
5640 ?sin and sin?
5634 both produce the same effect. This is nice, as often I use the
5641 both produce the same effect. This is nice, as often I use the
5635 tab-complete to find the name of a method, but I used to then have
5642 tab-complete to find the name of a method, but I used to then have
5636 to go to the beginning of the line to put a ? if I wanted more
5643 to go to the beginning of the line to put a ? if I wanted more
5637 info. Now I can just add the ? and hit return. Convenient.
5644 info. Now I can just add the ? and hit return. Convenient.
5638
5645
5639 2001-11-02 Fernando Perez <fperez@colorado.edu>
5646 2001-11-02 Fernando Perez <fperez@colorado.edu>
5640
5647
5641 * Python version check (>=2.1) added.
5648 * Python version check (>=2.1) added.
5642
5649
5643 * Added LazyPython documentation. At this point the docs are quite
5650 * Added LazyPython documentation. At this point the docs are quite
5644 a mess. A cleanup is in order.
5651 a mess. A cleanup is in order.
5645
5652
5646 * Auto-installer created. For some bizarre reason, the zipfiles
5653 * Auto-installer created. For some bizarre reason, the zipfiles
5647 module isn't working on my system. So I made a tar version
5654 module isn't working on my system. So I made a tar version
5648 (hopefully the command line options in various systems won't kill
5655 (hopefully the command line options in various systems won't kill
5649 me).
5656 me).
5650
5657
5651 * Fixes to Struct in genutils. Now all dictionary-like methods are
5658 * Fixes to Struct in genutils. Now all dictionary-like methods are
5652 protected (reasonably).
5659 protected (reasonably).
5653
5660
5654 * Added pager function to genutils and changed ? to print usage
5661 * Added pager function to genutils and changed ? to print usage
5655 note through it (it was too long).
5662 note through it (it was too long).
5656
5663
5657 * Added the LazyPython functionality. Works great! I changed the
5664 * Added the LazyPython functionality. Works great! I changed the
5658 auto-quote escape to ';', it's on home row and next to '. But
5665 auto-quote escape to ';', it's on home row and next to '. But
5659 both auto-quote and auto-paren (still /) escapes are command-line
5666 both auto-quote and auto-paren (still /) escapes are command-line
5660 parameters.
5667 parameters.
5661
5668
5662
5669
5663 2001-11-01 Fernando Perez <fperez@colorado.edu>
5670 2001-11-01 Fernando Perez <fperez@colorado.edu>
5664
5671
5665 * Version changed to 0.0.7. Fairly large change: configuration now
5672 * Version changed to 0.0.7. Fairly large change: configuration now
5666 is all stored in a directory, by default .ipython. There, all
5673 is all stored in a directory, by default .ipython. There, all
5667 config files have normal looking names (not .names)
5674 config files have normal looking names (not .names)
5668
5675
5669 * Version 0.0.6 Released first to Lucas and Archie as a test
5676 * Version 0.0.6 Released first to Lucas and Archie as a test
5670 run. Since it's the first 'semi-public' release, change version to
5677 run. Since it's the first 'semi-public' release, change version to
5671 > 0.0.6 for any changes now.
5678 > 0.0.6 for any changes now.
5672
5679
5673 * Stuff I had put in the ipplib.py changelog:
5680 * Stuff I had put in the ipplib.py changelog:
5674
5681
5675 Changes to InteractiveShell:
5682 Changes to InteractiveShell:
5676
5683
5677 - Made the usage message a parameter.
5684 - Made the usage message a parameter.
5678
5685
5679 - Require the name of the shell variable to be given. It's a bit
5686 - Require the name of the shell variable to be given. It's a bit
5680 of a hack, but allows the name 'shell' not to be hardwired in the
5687 of a hack, but allows the name 'shell' not to be hardwired in the
5681 magic (@) handler, which is problematic b/c it requires
5688 magic (@) handler, which is problematic b/c it requires
5682 polluting the global namespace with 'shell'. This in turn is
5689 polluting the global namespace with 'shell'. This in turn is
5683 fragile: if a user redefines a variable called shell, things
5690 fragile: if a user redefines a variable called shell, things
5684 break.
5691 break.
5685
5692
5686 - magic @: all functions available through @ need to be defined
5693 - magic @: all functions available through @ need to be defined
5687 as magic_<name>, even though they can be called simply as
5694 as magic_<name>, even though they can be called simply as
5688 @<name>. This allows the special command @magic to gather
5695 @<name>. This allows the special command @magic to gather
5689 information automatically about all existing magic functions,
5696 information automatically about all existing magic functions,
5690 even if they are run-time user extensions, by parsing the shell
5697 even if they are run-time user extensions, by parsing the shell
5691 instance __dict__ looking for special magic_ names.
5698 instance __dict__ looking for special magic_ names.
5692
5699
5693 - mainloop: added *two* local namespace parameters. This allows
5700 - mainloop: added *two* local namespace parameters. This allows
5694 the class to differentiate between parameters which were there
5701 the class to differentiate between parameters which were there
5695 before and after command line initialization was processed. This
5702 before and after command line initialization was processed. This
5696 way, later @who can show things loaded at startup by the
5703 way, later @who can show things loaded at startup by the
5697 user. This trick was necessary to make session saving/reloading
5704 user. This trick was necessary to make session saving/reloading
5698 really work: ideally after saving/exiting/reloading a session,
5705 really work: ideally after saving/exiting/reloading a session,
5699 *everything* should look the same, including the output of @who. I
5706 *everything* should look the same, including the output of @who. I
5700 was only able to make this work with this double namespace
5707 was only able to make this work with this double namespace
5701 trick.
5708 trick.
5702
5709
5703 - added a header to the logfile which allows (almost) full
5710 - added a header to the logfile which allows (almost) full
5704 session restoring.
5711 session restoring.
5705
5712
5706 - prepend lines beginning with @ or !, with a and log
5713 - prepend lines beginning with @ or !, with a and log
5707 them. Why? !lines: may be useful to know what you did @lines:
5714 them. Why? !lines: may be useful to know what you did @lines:
5708 they may affect session state. So when restoring a session, at
5715 they may affect session state. So when restoring a session, at
5709 least inform the user of their presence. I couldn't quite get
5716 least inform the user of their presence. I couldn't quite get
5710 them to properly re-execute, but at least the user is warned.
5717 them to properly re-execute, but at least the user is warned.
5711
5718
5712 * Started ChangeLog.
5719 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now