##// END OF EJS Templates
fix help() bug when running under python 2.3
fperez -
Show More
@@ -1,486 +1,526 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 1329 2006-05-26 07:52:45Z fperez $
9 $Id: OInspect.py 1571 2006-08-09 07:54:40Z fperez $
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
33 # IPython's own
34 # IPython's own
34 from IPython import PyColorize
35 from IPython import PyColorize
35 from IPython.genutils import page,indent,Term,mkdict
36 from IPython.genutils import page,indent,Term,mkdict
36 from IPython.Itpl import itpl
37 from IPython.Itpl import itpl
37 from IPython.wildcard import list_namespace
38 from IPython.wildcard import list_namespace
38 from IPython.ColorANSI import *
39 from IPython.ColorANSI import *
39
40
40 #****************************************************************************
41 #****************************************************************************
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 #****************************************************************************
41 # Builtin color schemes
81 # Builtin color schemes
42
82
43 Colors = TermColors # just a shorthand
83 Colors = TermColors # just a shorthand
44
84
45 # Build a few color schemes
85 # Build a few color schemes
46 NoColor = ColorScheme(
86 NoColor = ColorScheme(
47 'NoColor',{
87 'NoColor',{
48 'header' : Colors.NoColor,
88 'header' : Colors.NoColor,
49 'normal' : Colors.NoColor # color off (usu. Colors.Normal)
89 'normal' : Colors.NoColor # color off (usu. Colors.Normal)
50 } )
90 } )
51
91
52 LinuxColors = ColorScheme(
92 LinuxColors = ColorScheme(
53 'Linux',{
93 'Linux',{
54 'header' : Colors.LightRed,
94 'header' : Colors.LightRed,
55 'normal' : Colors.Normal # color off (usu. Colors.Normal)
95 'normal' : Colors.Normal # color off (usu. Colors.Normal)
56 } )
96 } )
57
97
58 LightBGColors = ColorScheme(
98 LightBGColors = ColorScheme(
59 'LightBG',{
99 'LightBG',{
60 'header' : Colors.Red,
100 'header' : Colors.Red,
61 'normal' : Colors.Normal # color off (usu. Colors.Normal)
101 'normal' : Colors.Normal # color off (usu. Colors.Normal)
62 } )
102 } )
63
103
64 # Build table of color schemes (needed by the parser)
104 # Build table of color schemes (needed by the parser)
65 InspectColors = ColorSchemeTable([NoColor,LinuxColors,LightBGColors],
105 InspectColors = ColorSchemeTable([NoColor,LinuxColors,LightBGColors],
66 'Linux')
106 'Linux')
67
107
68 #****************************************************************************
108 #****************************************************************************
69 # Auxiliary functions
109 # Auxiliary functions
70 def getdoc(obj):
110 def getdoc(obj):
71 """Stable wrapper around inspect.getdoc.
111 """Stable wrapper around inspect.getdoc.
72
112
73 This can't crash because of attribute problems.
113 This can't crash because of attribute problems.
74
114
75 It also attempts to call a getdoc() method on the given object. This
115 It also attempts to call a getdoc() method on the given object. This
76 allows objects which provide their docstrings via non-standard mechanisms
116 allows objects which provide their docstrings via non-standard mechanisms
77 (like Pyro proxies) to still be inspected by ipython's ? system."""
117 (like Pyro proxies) to still be inspected by ipython's ? system."""
78
118
79 ds = None # default return value
119 ds = None # default return value
80 try:
120 try:
81 ds = inspect.getdoc(obj)
121 ds = inspect.getdoc(obj)
82 except:
122 except:
83 # Harden against an inspect failure, which can occur with
123 # Harden against an inspect failure, which can occur with
84 # SWIG-wrapped extensions.
124 # SWIG-wrapped extensions.
85 pass
125 pass
86 # Allow objects to offer customized documentation via a getdoc method:
126 # Allow objects to offer customized documentation via a getdoc method:
87 try:
127 try:
88 ds2 = obj.getdoc()
128 ds2 = obj.getdoc()
89 except:
129 except:
90 pass
130 pass
91 else:
131 else:
92 # if we get extra info, we add it to the normal docstring.
132 # if we get extra info, we add it to the normal docstring.
93 if ds is None:
133 if ds is None:
94 ds = ds2
134 ds = ds2
95 else:
135 else:
96 ds = '%s\n%s' % (ds,ds2)
136 ds = '%s\n%s' % (ds,ds2)
97 return ds
137 return ds
98
138
99 #****************************************************************************
139 #****************************************************************************
100 # Class definitions
140 # Class definitions
101
141
102 class myStringIO(StringIO.StringIO):
142 class myStringIO(StringIO.StringIO):
103 """Adds a writeln method to normal StringIO."""
143 """Adds a writeln method to normal StringIO."""
104 def writeln(self,*arg,**kw):
144 def writeln(self,*arg,**kw):
105 """Does a write() and then a write('\n')"""
145 """Does a write() and then a write('\n')"""
106 self.write(*arg,**kw)
146 self.write(*arg,**kw)
107 self.write('\n')
147 self.write('\n')
108
148
109 class Inspector:
149 class Inspector:
110 def __init__(self,color_table,code_color_table,scheme,
150 def __init__(self,color_table,code_color_table,scheme,
111 str_detail_level=0):
151 str_detail_level=0):
112 self.color_table = color_table
152 self.color_table = color_table
113 self.parser = PyColorize.Parser(code_color_table,out='str')
153 self.parser = PyColorize.Parser(code_color_table,out='str')
114 self.format = self.parser.format
154 self.format = self.parser.format
115 self.str_detail_level = str_detail_level
155 self.str_detail_level = str_detail_level
116 self.set_active_scheme(scheme)
156 self.set_active_scheme(scheme)
117
157
118 def __getargspec(self,obj):
158 def __getargspec(self,obj):
119 """Get the names and default values of a function's arguments.
159 """Get the names and default values of a function's arguments.
120
160
121 A tuple of four things is returned: (args, varargs, varkw, defaults).
161 A tuple of four things is returned: (args, varargs, varkw, defaults).
122 'args' is a list of the argument names (it may contain nested lists).
162 'args' is a list of the argument names (it may contain nested lists).
123 'varargs' and 'varkw' are the names of the * and ** arguments or None.
163 'varargs' and 'varkw' are the names of the * and ** arguments or None.
124 'defaults' is an n-tuple of the default values of the last n arguments.
164 'defaults' is an n-tuple of the default values of the last n arguments.
125
165
126 Modified version of inspect.getargspec from the Python Standard
166 Modified version of inspect.getargspec from the Python Standard
127 Library."""
167 Library."""
128
168
129 if inspect.isfunction(obj):
169 if inspect.isfunction(obj):
130 func_obj = obj
170 func_obj = obj
131 elif inspect.ismethod(obj):
171 elif inspect.ismethod(obj):
132 func_obj = obj.im_func
172 func_obj = obj.im_func
133 else:
173 else:
134 raise TypeError, 'arg is not a Python function'
174 raise TypeError, 'arg is not a Python function'
135 args, varargs, varkw = inspect.getargs(func_obj.func_code)
175 args, varargs, varkw = inspect.getargs(func_obj.func_code)
136 return args, varargs, varkw, func_obj.func_defaults
176 return args, varargs, varkw, func_obj.func_defaults
137
177
138 def __getdef(self,obj,oname=''):
178 def __getdef(self,obj,oname=''):
139 """Return the definition header for any callable object.
179 """Return the definition header for any callable object.
140
180
141 If any exception is generated, None is returned instead and the
181 If any exception is generated, None is returned instead and the
142 exception is suppressed."""
182 exception is suppressed."""
143
183
144 try:
184 try:
145 return oname + inspect.formatargspec(*self.__getargspec(obj))
185 return oname + inspect.formatargspec(*self.__getargspec(obj))
146 except:
186 except:
147 return None
187 return None
148
188
149 def __head(self,h):
189 def __head(self,h):
150 """Return a header string with proper colors."""
190 """Return a header string with proper colors."""
151 return '%s%s%s' % (self.color_table.active_colors.header,h,
191 return '%s%s%s' % (self.color_table.active_colors.header,h,
152 self.color_table.active_colors.normal)
192 self.color_table.active_colors.normal)
153
193
154 def set_active_scheme(self,scheme):
194 def set_active_scheme(self,scheme):
155 self.color_table.set_active_scheme(scheme)
195 self.color_table.set_active_scheme(scheme)
156 self.parser.color_table.set_active_scheme(scheme)
196 self.parser.color_table.set_active_scheme(scheme)
157
197
158 def noinfo(self,msg,oname):
198 def noinfo(self,msg,oname):
159 """Generic message when no information is found."""
199 """Generic message when no information is found."""
160 print 'No %s found' % msg,
200 print 'No %s found' % msg,
161 if oname:
201 if oname:
162 print 'for %s' % oname
202 print 'for %s' % oname
163 else:
203 else:
164 print
204 print
165
205
166 def pdef(self,obj,oname=''):
206 def pdef(self,obj,oname=''):
167 """Print the definition header for any callable object.
207 """Print the definition header for any callable object.
168
208
169 If the object is a class, print the constructor information."""
209 If the object is a class, print the constructor information."""
170
210
171 if not callable(obj):
211 if not callable(obj):
172 print 'Object is not callable.'
212 print 'Object is not callable.'
173 return
213 return
174
214
175 header = ''
215 header = ''
176 if type(obj) is types.ClassType:
216 if type(obj) is types.ClassType:
177 header = self.__head('Class constructor information:\n')
217 header = self.__head('Class constructor information:\n')
178 obj = obj.__init__
218 obj = obj.__init__
179 elif type(obj) is types.InstanceType:
219 elif type(obj) is types.InstanceType:
180 obj = obj.__call__
220 obj = obj.__call__
181
221
182 output = self.__getdef(obj,oname)
222 output = self.__getdef(obj,oname)
183 if output is None:
223 if output is None:
184 self.noinfo('definition header',oname)
224 self.noinfo('definition header',oname)
185 else:
225 else:
186 print >>Term.cout, header,self.format(output),
226 print >>Term.cout, header,self.format(output),
187
227
188 def pdoc(self,obj,oname='',formatter = None):
228 def pdoc(self,obj,oname='',formatter = None):
189 """Print the docstring for any object.
229 """Print the docstring for any object.
190
230
191 Optional:
231 Optional:
192 -formatter: a function to run the docstring through for specially
232 -formatter: a function to run the docstring through for specially
193 formatted docstrings."""
233 formatted docstrings."""
194
234
195 head = self.__head # so that itpl can find it even if private
235 head = self.__head # so that itpl can find it even if private
196 ds = getdoc(obj)
236 ds = getdoc(obj)
197 if formatter:
237 if formatter:
198 ds = formatter(ds)
238 ds = formatter(ds)
199 if type(obj) is types.ClassType:
239 if type(obj) is types.ClassType:
200 init_ds = getdoc(obj.__init__)
240 init_ds = getdoc(obj.__init__)
201 output = itpl('$head("Class Docstring:")\n'
241 output = itpl('$head("Class Docstring:")\n'
202 '$indent(ds)\n'
242 '$indent(ds)\n'
203 '$head("Constructor Docstring"):\n'
243 '$head("Constructor Docstring"):\n'
204 '$indent(init_ds)')
244 '$indent(init_ds)')
205 elif type(obj) is types.InstanceType and hasattr(obj,'__call__'):
245 elif type(obj) is types.InstanceType and hasattr(obj,'__call__'):
206 call_ds = getdoc(obj.__call__)
246 call_ds = getdoc(obj.__call__)
207 if call_ds:
247 if call_ds:
208 output = itpl('$head("Class Docstring:")\n$indent(ds)\n'
248 output = itpl('$head("Class Docstring:")\n$indent(ds)\n'
209 '$head("Calling Docstring:")\n$indent(call_ds)')
249 '$head("Calling Docstring:")\n$indent(call_ds)')
210 else:
250 else:
211 output = ds
251 output = ds
212 else:
252 else:
213 output = ds
253 output = ds
214 if output is None:
254 if output is None:
215 self.noinfo('documentation',oname)
255 self.noinfo('documentation',oname)
216 return
256 return
217 page(output)
257 page(output)
218
258
219 def psource(self,obj,oname=''):
259 def psource(self,obj,oname=''):
220 """Print the source code for an object."""
260 """Print the source code for an object."""
221
261
222 # Flush the source cache because inspect can return out-of-date source
262 # Flush the source cache because inspect can return out-of-date source
223 linecache.checkcache()
263 linecache.checkcache()
224 try:
264 try:
225 src = inspect.getsource(obj)
265 src = inspect.getsource(obj)
226 except:
266 except:
227 self.noinfo('source',oname)
267 self.noinfo('source',oname)
228 else:
268 else:
229 page(self.format(src))
269 page(self.format(src))
230
270
231 def pfile(self,obj,oname=''):
271 def pfile(self,obj,oname=''):
232 """Show the whole file where an object was defined."""
272 """Show the whole file where an object was defined."""
233 try:
273 try:
234 sourcelines,lineno = inspect.getsourcelines(obj)
274 sourcelines,lineno = inspect.getsourcelines(obj)
235 except:
275 except:
236 self.noinfo('file',oname)
276 self.noinfo('file',oname)
237 else:
277 else:
238 # run contents of file through pager starting at line
278 # run contents of file through pager starting at line
239 # where the object is defined
279 # where the object is defined
240 ofile = inspect.getabsfile(obj)
280 ofile = inspect.getabsfile(obj)
241
281
242 if (ofile.endswith('.so') or ofile.endswith('.dll')):
282 if (ofile.endswith('.so') or ofile.endswith('.dll')):
243 print 'File %r is binary, not printing.' % ofile
283 print 'File %r is binary, not printing.' % ofile
244 elif not os.path.isfile(ofile):
284 elif not os.path.isfile(ofile):
245 print 'File %r does not exist, not printing.' % ofile
285 print 'File %r does not exist, not printing.' % ofile
246 else:
286 else:
247 # Print only text files, not extension binaries.
287 # Print only text files, not extension binaries.
248 page(self.format(open(ofile).read()),lineno)
288 page(self.format(open(ofile).read()),lineno)
249 #page(self.format(open(inspect.getabsfile(obj)).read()),lineno)
289 #page(self.format(open(inspect.getabsfile(obj)).read()),lineno)
250
290
251 def pinfo(self,obj,oname='',formatter=None,info=None,detail_level=0):
291 def pinfo(self,obj,oname='',formatter=None,info=None,detail_level=0):
252 """Show detailed information about an object.
292 """Show detailed information about an object.
253
293
254 Optional arguments:
294 Optional arguments:
255
295
256 - oname: name of the variable pointing to the object.
296 - oname: name of the variable pointing to the object.
257
297
258 - formatter: special formatter for docstrings (see pdoc)
298 - formatter: special formatter for docstrings (see pdoc)
259
299
260 - info: a structure with some information fields which may have been
300 - info: a structure with some information fields which may have been
261 precomputed already.
301 precomputed already.
262
302
263 - detail_level: if set to 1, more information is given.
303 - detail_level: if set to 1, more information is given.
264 """
304 """
265
305
266 obj_type = type(obj)
306 obj_type = type(obj)
267
307
268 header = self.__head
308 header = self.__head
269 if info is None:
309 if info is None:
270 ismagic = 0
310 ismagic = 0
271 isalias = 0
311 isalias = 0
272 ospace = ''
312 ospace = ''
273 else:
313 else:
274 ismagic = info.ismagic
314 ismagic = info.ismagic
275 isalias = info.isalias
315 isalias = info.isalias
276 ospace = info.namespace
316 ospace = info.namespace
277 # Get docstring, special-casing aliases:
317 # Get docstring, special-casing aliases:
278 if isalias:
318 if isalias:
279 ds = "Alias to the system command:\n %s" % obj[1]
319 ds = "Alias to the system command:\n %s" % obj[1]
280 else:
320 else:
281 ds = getdoc(obj)
321 ds = getdoc(obj)
282 if ds is None:
322 if ds is None:
283 ds = '<no docstring>'
323 ds = '<no docstring>'
284 if formatter is not None:
324 if formatter is not None:
285 ds = formatter(ds)
325 ds = formatter(ds)
286
326
287 # store output in a list which gets joined with \n at the end.
327 # store output in a list which gets joined with \n at the end.
288 out = myStringIO()
328 out = myStringIO()
289
329
290 string_max = 200 # max size of strings to show (snipped if longer)
330 string_max = 200 # max size of strings to show (snipped if longer)
291 shalf = int((string_max -5)/2)
331 shalf = int((string_max -5)/2)
292
332
293 if ismagic:
333 if ismagic:
294 obj_type_name = 'Magic function'
334 obj_type_name = 'Magic function'
295 elif isalias:
335 elif isalias:
296 obj_type_name = 'System alias'
336 obj_type_name = 'System alias'
297 else:
337 else:
298 obj_type_name = obj_type.__name__
338 obj_type_name = obj_type.__name__
299 out.writeln(header('Type:\t\t')+obj_type_name)
339 out.writeln(header('Type:\t\t')+obj_type_name)
300
340
301 try:
341 try:
302 bclass = obj.__class__
342 bclass = obj.__class__
303 out.writeln(header('Base Class:\t')+str(bclass))
343 out.writeln(header('Base Class:\t')+str(bclass))
304 except: pass
344 except: pass
305
345
306 # String form, but snip if too long in ? form (full in ??)
346 # String form, but snip if too long in ? form (full in ??)
307 if detail_level >= self.str_detail_level:
347 if detail_level >= self.str_detail_level:
308 try:
348 try:
309 ostr = str(obj)
349 ostr = str(obj)
310 str_head = 'String Form:'
350 str_head = 'String Form:'
311 if not detail_level and len(ostr)>string_max:
351 if not detail_level and len(ostr)>string_max:
312 ostr = ostr[:shalf] + ' <...> ' + ostr[-shalf:]
352 ostr = ostr[:shalf] + ' <...> ' + ostr[-shalf:]
313 ostr = ("\n" + " " * len(str_head.expandtabs())).\
353 ostr = ("\n" + " " * len(str_head.expandtabs())).\
314 join(map(string.strip,ostr.split("\n")))
354 join(map(string.strip,ostr.split("\n")))
315 if ostr.find('\n') > -1:
355 if ostr.find('\n') > -1:
316 # Print multi-line strings starting at the next line.
356 # Print multi-line strings starting at the next line.
317 str_sep = '\n'
357 str_sep = '\n'
318 else:
358 else:
319 str_sep = '\t'
359 str_sep = '\t'
320 out.writeln("%s%s%s" % (header(str_head),str_sep,ostr))
360 out.writeln("%s%s%s" % (header(str_head),str_sep,ostr))
321 except:
361 except:
322 pass
362 pass
323
363
324 if ospace:
364 if ospace:
325 out.writeln(header('Namespace:\t')+ospace)
365 out.writeln(header('Namespace:\t')+ospace)
326
366
327 # Length (for strings and lists)
367 # Length (for strings and lists)
328 try:
368 try:
329 length = str(len(obj))
369 length = str(len(obj))
330 out.writeln(header('Length:\t\t')+length)
370 out.writeln(header('Length:\t\t')+length)
331 except: pass
371 except: pass
332
372
333 # Filename where object was defined
373 # Filename where object was defined
334 binary_file = False
374 binary_file = False
335 try:
375 try:
336 fname = inspect.getabsfile(obj)
376 fname = inspect.getabsfile(obj)
337 if fname.endswith('<string>'):
377 if fname.endswith('<string>'):
338 fname = 'Dynamically generated function. No source code available.'
378 fname = 'Dynamically generated function. No source code available.'
339 if (fname.endswith('.so') or fname.endswith('.dll') or
379 if (fname.endswith('.so') or fname.endswith('.dll') or
340 not os.path.isfile(fname)):
380 not os.path.isfile(fname)):
341 binary_file = True
381 binary_file = True
342 out.writeln(header('File:\t\t')+fname)
382 out.writeln(header('File:\t\t')+fname)
343 except:
383 except:
344 # if anything goes wrong, we don't want to show source, so it's as
384 # if anything goes wrong, we don't want to show source, so it's as
345 # if the file was binary
385 # if the file was binary
346 binary_file = True
386 binary_file = True
347
387
348 # reconstruct the function definition and print it:
388 # reconstruct the function definition and print it:
349 defln = self.__getdef(obj,oname)
389 defln = self.__getdef(obj,oname)
350 if defln:
390 if defln:
351 out.write(header('Definition:\t')+self.format(defln))
391 out.write(header('Definition:\t')+self.format(defln))
352
392
353 # Docstrings only in detail 0 mode, since source contains them (we
393 # Docstrings only in detail 0 mode, since source contains them (we
354 # avoid repetitions). If source fails, we add them back, see below.
394 # avoid repetitions). If source fails, we add them back, see below.
355 if ds and detail_level == 0:
395 if ds and detail_level == 0:
356 out.writeln(header('Docstring:\n') + indent(ds))
396 out.writeln(header('Docstring:\n') + indent(ds))
357
397
358
398
359 # Original source code for any callable
399 # Original source code for any callable
360 if detail_level:
400 if detail_level:
361 # Flush the source cache because inspect can return out-of-date source
401 # Flush the source cache because inspect can return out-of-date source
362 linecache.checkcache()
402 linecache.checkcache()
363 source_success = False
403 source_success = False
364 try:
404 try:
365 if not binary_file:
405 if not binary_file:
366 source = self.format(inspect.getsource(obj))
406 source = self.format(inspect.getsource(obj))
367 out.write(header('Source:\n')+source.rstrip())
407 out.write(header('Source:\n')+source.rstrip())
368 source_success = True
408 source_success = True
369 except:
409 except:
370 pass
410 pass
371
411
372 if ds and not source_success:
412 if ds and not source_success:
373 out.writeln(header('Docstring [source file open failed]:\n') + indent(ds))
413 out.writeln(header('Docstring [source file open failed]:\n') + indent(ds))
374
414
375 # Constructor docstring for classes
415 # Constructor docstring for classes
376 if obj_type is types.ClassType:
416 if obj_type is types.ClassType:
377 # reconstruct the function definition and print it:
417 # reconstruct the function definition and print it:
378 try:
418 try:
379 obj_init = obj.__init__
419 obj_init = obj.__init__
380 except AttributeError:
420 except AttributeError:
381 init_def = init_ds = None
421 init_def = init_ds = None
382 else:
422 else:
383 init_def = self.__getdef(obj_init,oname)
423 init_def = self.__getdef(obj_init,oname)
384 init_ds = getdoc(obj_init)
424 init_ds = getdoc(obj_init)
385
425
386 if init_def or init_ds:
426 if init_def or init_ds:
387 out.writeln(header('\nConstructor information:'))
427 out.writeln(header('\nConstructor information:'))
388 if init_def:
428 if init_def:
389 out.write(header('Definition:\t')+ self.format(init_def))
429 out.write(header('Definition:\t')+ self.format(init_def))
390 if init_ds:
430 if init_ds:
391 out.writeln(header('Docstring:\n') + indent(init_ds))
431 out.writeln(header('Docstring:\n') + indent(init_ds))
392 # and class docstring for instances:
432 # and class docstring for instances:
393 elif obj_type is types.InstanceType:
433 elif obj_type is types.InstanceType:
394
434
395 # First, check whether the instance docstring is identical to the
435 # First, check whether the instance docstring is identical to the
396 # class one, and print it separately if they don't coincide. In
436 # class one, and print it separately if they don't coincide. In
397 # most cases they will, but it's nice to print all the info for
437 # most cases they will, but it's nice to print all the info for
398 # objects which use instance-customized docstrings.
438 # objects which use instance-customized docstrings.
399 if ds:
439 if ds:
400 class_ds = getdoc(obj.__class__)
440 class_ds = getdoc(obj.__class__)
401 if class_ds and ds != class_ds:
441 if class_ds and ds != class_ds:
402 out.writeln(header('Class Docstring:\n') +
442 out.writeln(header('Class Docstring:\n') +
403 indent(class_ds))
443 indent(class_ds))
404
444
405 # Next, try to show constructor docstrings
445 # Next, try to show constructor docstrings
406 try:
446 try:
407 init_ds = getdoc(obj.__init__)
447 init_ds = getdoc(obj.__init__)
408 except AttributeError:
448 except AttributeError:
409 init_ds = None
449 init_ds = None
410 if init_ds:
450 if init_ds:
411 out.writeln(header('Constructor Docstring:\n') +
451 out.writeln(header('Constructor Docstring:\n') +
412 indent(init_ds))
452 indent(init_ds))
413
453
414 # Call form docstring for callable instances
454 # Call form docstring for callable instances
415 if hasattr(obj,'__call__'):
455 if hasattr(obj,'__call__'):
416 out.writeln(header('Callable:\t')+'Yes')
456 out.writeln(header('Callable:\t')+'Yes')
417 call_def = self.__getdef(obj.__call__,oname)
457 call_def = self.__getdef(obj.__call__,oname)
418 if call_def is None:
458 if call_def is None:
419 out.write(header('Call def:\t')+
459 out.write(header('Call def:\t')+
420 'Calling definition not available.')
460 'Calling definition not available.')
421 else:
461 else:
422 out.write(header('Call def:\t')+self.format(call_def))
462 out.write(header('Call def:\t')+self.format(call_def))
423 call_ds = getdoc(obj.__call__)
463 call_ds = getdoc(obj.__call__)
424 if call_ds:
464 if call_ds:
425 out.writeln(header('Call docstring:\n') + indent(call_ds))
465 out.writeln(header('Call docstring:\n') + indent(call_ds))
426
466
427 # Finally send to printer/pager
467 # Finally send to printer/pager
428 output = out.getvalue()
468 output = out.getvalue()
429 if output:
469 if output:
430 page(output)
470 page(output)
431 # end pinfo
471 # end pinfo
432
472
433 def psearch(self,pattern,ns_table,ns_search=[],
473 def psearch(self,pattern,ns_table,ns_search=[],
434 ignore_case=False,show_all=False):
474 ignore_case=False,show_all=False):
435 """Search namespaces with wildcards for objects.
475 """Search namespaces with wildcards for objects.
436
476
437 Arguments:
477 Arguments:
438
478
439 - pattern: string containing shell-like wildcards to use in namespace
479 - pattern: string containing shell-like wildcards to use in namespace
440 searches and optionally a type specification to narrow the search to
480 searches and optionally a type specification to narrow the search to
441 objects of that type.
481 objects of that type.
442
482
443 - ns_table: dict of name->namespaces for search.
483 - ns_table: dict of name->namespaces for search.
444
484
445 Optional arguments:
485 Optional arguments:
446
486
447 - ns_search: list of namespace names to include in search.
487 - ns_search: list of namespace names to include in search.
448
488
449 - ignore_case(False): make the search case-insensitive.
489 - ignore_case(False): make the search case-insensitive.
450
490
451 - show_all(False): show all names, including those starting with
491 - show_all(False): show all names, including those starting with
452 underscores.
492 underscores.
453 """
493 """
454 # defaults
494 # defaults
455 type_pattern = 'all'
495 type_pattern = 'all'
456 filter = ''
496 filter = ''
457
497
458 cmds = pattern.split()
498 cmds = pattern.split()
459 len_cmds = len(cmds)
499 len_cmds = len(cmds)
460 if len_cmds == 1:
500 if len_cmds == 1:
461 # Only filter pattern given
501 # Only filter pattern given
462 filter = cmds[0]
502 filter = cmds[0]
463 elif len_cmds == 2:
503 elif len_cmds == 2:
464 # Both filter and type specified
504 # Both filter and type specified
465 filter,type_pattern = cmds
505 filter,type_pattern = cmds
466 else:
506 else:
467 raise ValueError('invalid argument string for psearch: <%s>' %
507 raise ValueError('invalid argument string for psearch: <%s>' %
468 pattern)
508 pattern)
469
509
470 # filter search namespaces
510 # filter search namespaces
471 for name in ns_search:
511 for name in ns_search:
472 if name not in ns_table:
512 if name not in ns_table:
473 raise ValueError('invalid namespace <%s>. Valid names: %s' %
513 raise ValueError('invalid namespace <%s>. Valid names: %s' %
474 (name,ns_table.keys()))
514 (name,ns_table.keys()))
475
515
476 #print 'type_pattern:',type_pattern # dbg
516 #print 'type_pattern:',type_pattern # dbg
477 search_result = []
517 search_result = []
478 for ns_name in ns_search:
518 for ns_name in ns_search:
479 ns = ns_table[ns_name]
519 ns = ns_table[ns_name]
480 tmp_res = list(list_namespace(ns,type_pattern,filter,
520 tmp_res = list(list_namespace(ns,type_pattern,filter,
481 ignore_case=ignore_case,
521 ignore_case=ignore_case,
482 show_all=show_all))
522 show_all=show_all))
483 search_result.extend(tmp_res)
523 search_result.extend(tmp_res)
484 search_result.sort()
524 search_result.sort()
485
525
486 page('\n'.join(search_result))
526 page('\n'.join(search_result))
@@ -1,5704 +1,5712 b''
1 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
2
3 * 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
5 help(). Reported by the Debian maintainers, Norbert Tretkowski
6 <norbert-AT-tretkowski.de> and Alexandre Fayolle
7 <afayolle-AT-debian.org>.
8
1 2006-08-04 Walter Doerwald <walter@livinglogic.de>
9 2006-08-04 Walter Doerwald <walter@livinglogic.de>
2
10
3 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
11 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
4 (which was displaying "quit" twice).
12 (which was displaying "quit" twice).
5
13
6 2006-07-28 Walter Doerwald <walter@livinglogic.de>
14 2006-07-28 Walter Doerwald <walter@livinglogic.de>
7
15
8 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
16 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
9 the mode argument).
17 the mode argument).
10
18
11 2006-07-27 Walter Doerwald <walter@livinglogic.de>
19 2006-07-27 Walter Doerwald <walter@livinglogic.de>
12
20
13 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
21 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
14 not running under IPython.
22 not running under IPython.
15
23
16 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
24 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
17 and make it iterable (iterating over the attribute itself). Add two new
25 and make it iterable (iterating over the attribute itself). Add two new
18 magic strings for __xattrs__(): If the string starts with "-", the attribute
26 magic strings for __xattrs__(): If the string starts with "-", the attribute
19 will not be displayed in ibrowse's detail view (but it can still be
27 will not be displayed in ibrowse's detail view (but it can still be
20 iterated over). This makes it possible to add attributes that are large
28 iterated over). This makes it possible to add attributes that are large
21 lists or generator methods to the detail view. Replace magic attribute names
29 lists or generator methods to the detail view. Replace magic attribute names
22 and _attrname() and _getattr() with "descriptors": For each type of magic
30 and _attrname() and _getattr() with "descriptors": For each type of magic
23 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
31 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
24 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
32 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
25 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
33 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
26 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
34 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
27 are still supported.
35 are still supported.
28
36
29 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
37 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
30 fails in ibrowse.fetch(), the exception object is added as the last item
38 fails in ibrowse.fetch(), the exception object is added as the last item
31 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
39 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
32 a generator throws an exception midway through execution.
40 a generator throws an exception midway through execution.
33
41
34 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
42 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
35 encoding into methods.
43 encoding into methods.
36
44
37 2006-07-26 Ville Vainio <vivainio@gmail.com>
45 2006-07-26 Ville Vainio <vivainio@gmail.com>
38
46
39 * iplib.py: history now stores multiline input as single
47 * iplib.py: history now stores multiline input as single
40 history entries. Patch by Jorgen Cederlof.
48 history entries. Patch by Jorgen Cederlof.
41
49
42 2006-07-18 Walter Doerwald <walter@livinglogic.de>
50 2006-07-18 Walter Doerwald <walter@livinglogic.de>
43
51
44 * IPython/Extensions/ibrowse.py: Make cursor visible over
52 * IPython/Extensions/ibrowse.py: Make cursor visible over
45 non existing attributes.
53 non existing attributes.
46
54
47 2006-07-14 Walter Doerwald <walter@livinglogic.de>
55 2006-07-14 Walter Doerwald <walter@livinglogic.de>
48
56
49 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
57 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
50 error output of the running command doesn't mess up the screen.
58 error output of the running command doesn't mess up the screen.
51
59
52 2006-07-13 Walter Doerwald <walter@livinglogic.de>
60 2006-07-13 Walter Doerwald <walter@livinglogic.de>
53
61
54 * IPython/Extensions/ipipe.py (isort): Make isort usable without
62 * IPython/Extensions/ipipe.py (isort): Make isort usable without
55 argument. This sorts the items themselves.
63 argument. This sorts the items themselves.
56
64
57 2006-07-12 Walter Doerwald <walter@livinglogic.de>
65 2006-07-12 Walter Doerwald <walter@livinglogic.de>
58
66
59 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
67 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
60 Compile expression strings into code objects. This should speed
68 Compile expression strings into code objects. This should speed
61 up ifilter and friends somewhat.
69 up ifilter and friends somewhat.
62
70
63 2006-07-08 Ville Vainio <vivainio@gmail.com>
71 2006-07-08 Ville Vainio <vivainio@gmail.com>
64
72
65 * Magic.py: %cpaste now strips > from the beginning of lines
73 * Magic.py: %cpaste now strips > from the beginning of lines
66 to ease pasting quoted code from emails. Contributed by
74 to ease pasting quoted code from emails. Contributed by
67 Stefan van der Walt.
75 Stefan van der Walt.
68
76
69 2006-06-29 Ville Vainio <vivainio@gmail.com>
77 2006-06-29 Ville Vainio <vivainio@gmail.com>
70
78
71 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
79 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
72 mode, patch contributed by Darren Dale. NEEDS TESTING!
80 mode, patch contributed by Darren Dale. NEEDS TESTING!
73
81
74 2006-06-28 Walter Doerwald <walter@livinglogic.de>
82 2006-06-28 Walter Doerwald <walter@livinglogic.de>
75
83
76 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
84 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
77 a blue background. Fix fetching new display rows when the browser
85 a blue background. Fix fetching new display rows when the browser
78 scrolls more than a screenful (e.g. by using the goto command).
86 scrolls more than a screenful (e.g. by using the goto command).
79
87
80 2006-06-27 Ville Vainio <vivainio@gmail.com>
88 2006-06-27 Ville Vainio <vivainio@gmail.com>
81
89
82 * Magic.py (_inspect, _ofind) Apply David Huard's
90 * Magic.py (_inspect, _ofind) Apply David Huard's
83 patch for displaying the correct docstring for 'property'
91 patch for displaying the correct docstring for 'property'
84 attributes.
92 attributes.
85
93
86 2006-06-23 Walter Doerwald <walter@livinglogic.de>
94 2006-06-23 Walter Doerwald <walter@livinglogic.de>
87
95
88 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
96 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
89 commands into the methods implementing them.
97 commands into the methods implementing them.
90
98
91 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
99 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
92
100
93 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
101 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
94 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
102 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
95 autoindent support was authored by Jin Liu.
103 autoindent support was authored by Jin Liu.
96
104
97 2006-06-22 Walter Doerwald <walter@livinglogic.de>
105 2006-06-22 Walter Doerwald <walter@livinglogic.de>
98
106
99 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
107 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
100 for keymaps with a custom class that simplifies handling.
108 for keymaps with a custom class that simplifies handling.
101
109
102 2006-06-19 Walter Doerwald <walter@livinglogic.de>
110 2006-06-19 Walter Doerwald <walter@livinglogic.de>
103
111
104 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
112 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
105 resizing. This requires Python 2.5 to work.
113 resizing. This requires Python 2.5 to work.
106
114
107 2006-06-16 Walter Doerwald <walter@livinglogic.de>
115 2006-06-16 Walter Doerwald <walter@livinglogic.de>
108
116
109 * IPython/Extensions/ibrowse.py: Add two new commands to
117 * IPython/Extensions/ibrowse.py: Add two new commands to
110 ibrowse: "hideattr" (mapped to "h") hides the attribute under
118 ibrowse: "hideattr" (mapped to "h") hides the attribute under
111 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
119 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
112 attributes again. Remapped the help command to "?". Display
120 attributes again. Remapped the help command to "?". Display
113 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
121 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
114 as keys for the "home" and "end" commands. Add three new commands
122 as keys for the "home" and "end" commands. Add three new commands
115 to the input mode for "find" and friends: "delend" (CTRL-K)
123 to the input mode for "find" and friends: "delend" (CTRL-K)
116 deletes to the end of line. "incsearchup" searches upwards in the
124 deletes to the end of line. "incsearchup" searches upwards in the
117 command history for an input that starts with the text before the cursor.
125 command history for an input that starts with the text before the cursor.
118 "incsearchdown" does the same downwards. Removed a bogus mapping of
126 "incsearchdown" does the same downwards. Removed a bogus mapping of
119 the x key to "delete".
127 the x key to "delete".
120
128
121 2006-06-15 Ville Vainio <vivainio@gmail.com>
129 2006-06-15 Ville Vainio <vivainio@gmail.com>
122
130
123 * iplib.py, hooks.py: Added new generate_prompt hook that can be
131 * iplib.py, hooks.py: Added new generate_prompt hook that can be
124 used to create prompts dynamically, instead of the "old" way of
132 used to create prompts dynamically, instead of the "old" way of
125 assigning "magic" strings to prompt_in1 and prompt_in2. The old
133 assigning "magic" strings to prompt_in1 and prompt_in2. The old
126 way still works (it's invoked by the default hook), of course.
134 way still works (it's invoked by the default hook), of course.
127
135
128 * Prompts.py: added generate_output_prompt hook for altering output
136 * Prompts.py: added generate_output_prompt hook for altering output
129 prompt
137 prompt
130
138
131 * Release.py: Changed version string to 0.7.3.svn.
139 * Release.py: Changed version string to 0.7.3.svn.
132
140
133 2006-06-15 Walter Doerwald <walter@livinglogic.de>
141 2006-06-15 Walter Doerwald <walter@livinglogic.de>
134
142
135 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
143 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
136 the call to fetch() always tries to fetch enough data for at least one
144 the call to fetch() always tries to fetch enough data for at least one
137 full screen. This makes it possible to simply call moveto(0,0,True) in
145 full screen. This makes it possible to simply call moveto(0,0,True) in
138 the constructor. Fix typos and removed the obsolete goto attribute.
146 the constructor. Fix typos and removed the obsolete goto attribute.
139
147
140 2006-06-12 Ville Vainio <vivainio@gmail.com>
148 2006-06-12 Ville Vainio <vivainio@gmail.com>
141
149
142 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
150 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
143 allowing $variable interpolation within multiline statements,
151 allowing $variable interpolation within multiline statements,
144 though so far only with "sh" profile for a testing period.
152 though so far only with "sh" profile for a testing period.
145 The patch also enables splitting long commands with \ but it
153 The patch also enables splitting long commands with \ but it
146 doesn't work properly yet.
154 doesn't work properly yet.
147
155
148 2006-06-12 Walter Doerwald <walter@livinglogic.de>
156 2006-06-12 Walter Doerwald <walter@livinglogic.de>
149
157
150 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
158 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
151 input history and the position of the cursor in the input history for
159 input history and the position of the cursor in the input history for
152 the find, findbackwards and goto command.
160 the find, findbackwards and goto command.
153
161
154 2006-06-10 Walter Doerwald <walter@livinglogic.de>
162 2006-06-10 Walter Doerwald <walter@livinglogic.de>
155
163
156 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
164 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
157 implements the basic functionality of browser commands that require
165 implements the basic functionality of browser commands that require
158 input. Reimplement the goto, find and findbackwards commands as
166 input. Reimplement the goto, find and findbackwards commands as
159 subclasses of _CommandInput. Add an input history and keymaps to those
167 subclasses of _CommandInput. Add an input history and keymaps to those
160 commands. Add "\r" as a keyboard shortcut for the enterdefault and
168 commands. Add "\r" as a keyboard shortcut for the enterdefault and
161 execute commands.
169 execute commands.
162
170
163 2006-06-07 Ville Vainio <vivainio@gmail.com>
171 2006-06-07 Ville Vainio <vivainio@gmail.com>
164
172
165 * iplib.py: ipython mybatch.ipy exits ipython immediately after
173 * iplib.py: ipython mybatch.ipy exits ipython immediately after
166 running the batch files instead of leaving the session open.
174 running the batch files instead of leaving the session open.
167
175
168 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
176 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
169
177
170 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
178 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
171 the original fix was incomplete. Patch submitted by W. Maier.
179 the original fix was incomplete. Patch submitted by W. Maier.
172
180
173 2006-06-07 Ville Vainio <vivainio@gmail.com>
181 2006-06-07 Ville Vainio <vivainio@gmail.com>
174
182
175 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
183 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
176 Confirmation prompts can be supressed by 'quiet' option.
184 Confirmation prompts can be supressed by 'quiet' option.
177 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
185 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
178
186
179 2006-06-06 *** Released version 0.7.2
187 2006-06-06 *** Released version 0.7.2
180
188
181 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
189 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
182
190
183 * IPython/Release.py (version): Made 0.7.2 final for release.
191 * IPython/Release.py (version): Made 0.7.2 final for release.
184 Repo tagged and release cut.
192 Repo tagged and release cut.
185
193
186 2006-06-05 Ville Vainio <vivainio@gmail.com>
194 2006-06-05 Ville Vainio <vivainio@gmail.com>
187
195
188 * Magic.py (magic_rehashx): Honor no_alias list earlier in
196 * Magic.py (magic_rehashx): Honor no_alias list earlier in
189 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
197 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
190
198
191 * upgrade_dir.py: try import 'path' module a bit harder
199 * upgrade_dir.py: try import 'path' module a bit harder
192 (for %upgrade)
200 (for %upgrade)
193
201
194 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
202 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
195
203
196 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
204 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
197 instead of looping 20 times.
205 instead of looping 20 times.
198
206
199 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
207 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
200 correctly at initialization time. Bug reported by Krishna Mohan
208 correctly at initialization time. Bug reported by Krishna Mohan
201 Gundu <gkmohan-AT-gmail.com> on the user list.
209 Gundu <gkmohan-AT-gmail.com> on the user list.
202
210
203 * IPython/Release.py (version): Mark 0.7.2 version to start
211 * IPython/Release.py (version): Mark 0.7.2 version to start
204 testing for release on 06/06.
212 testing for release on 06/06.
205
213
206 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
214 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
207
215
208 * scripts/irunner: thin script interface so users don't have to
216 * scripts/irunner: thin script interface so users don't have to
209 find the module and call it as an executable, since modules rarely
217 find the module and call it as an executable, since modules rarely
210 live in people's PATH.
218 live in people's PATH.
211
219
212 * IPython/irunner.py (InteractiveRunner.__init__): added
220 * IPython/irunner.py (InteractiveRunner.__init__): added
213 delaybeforesend attribute to control delays with newer versions of
221 delaybeforesend attribute to control delays with newer versions of
214 pexpect. Thanks to detailed help from pexpect's author, Noah
222 pexpect. Thanks to detailed help from pexpect's author, Noah
215 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
223 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
216 correctly (it works in NoColor mode).
224 correctly (it works in NoColor mode).
217
225
218 * IPython/iplib.py (handle_normal): fix nasty crash reported on
226 * IPython/iplib.py (handle_normal): fix nasty crash reported on
219 SAGE list, from improper log() calls.
227 SAGE list, from improper log() calls.
220
228
221 2006-05-31 Ville Vainio <vivainio@gmail.com>
229 2006-05-31 Ville Vainio <vivainio@gmail.com>
222
230
223 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
231 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
224 with args in parens to work correctly with dirs that have spaces.
232 with args in parens to work correctly with dirs that have spaces.
225
233
226 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
234 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
227
235
228 * IPython/Logger.py (Logger.logstart): add option to log raw input
236 * IPython/Logger.py (Logger.logstart): add option to log raw input
229 instead of the processed one. A -r flag was added to the
237 instead of the processed one. A -r flag was added to the
230 %logstart magic used for controlling logging.
238 %logstart magic used for controlling logging.
231
239
232 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
240 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
233
241
234 * IPython/iplib.py (InteractiveShell.__init__): add check for the
242 * IPython/iplib.py (InteractiveShell.__init__): add check for the
235 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
243 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
236 recognize the option. After a bug report by Will Maier. This
244 recognize the option. After a bug report by Will Maier. This
237 closes #64 (will do it after confirmation from W. Maier).
245 closes #64 (will do it after confirmation from W. Maier).
238
246
239 * IPython/irunner.py: New module to run scripts as if manually
247 * IPython/irunner.py: New module to run scripts as if manually
240 typed into an interactive environment, based on pexpect. After a
248 typed into an interactive environment, based on pexpect. After a
241 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
249 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
242 ipython-user list. Simple unittests in the tests/ directory.
250 ipython-user list. Simple unittests in the tests/ directory.
243
251
244 * tools/release: add Will Maier, OpenBSD port maintainer, to
252 * tools/release: add Will Maier, OpenBSD port maintainer, to
245 recepients list. We are now officially part of the OpenBSD ports:
253 recepients list. We are now officially part of the OpenBSD ports:
246 http://www.openbsd.org/ports.html ! Many thanks to Will for the
254 http://www.openbsd.org/ports.html ! Many thanks to Will for the
247 work.
255 work.
248
256
249 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
257 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
250
258
251 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
259 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
252 so that it doesn't break tkinter apps.
260 so that it doesn't break tkinter apps.
253
261
254 * IPython/iplib.py (_prefilter): fix bug where aliases would
262 * IPython/iplib.py (_prefilter): fix bug where aliases would
255 shadow variables when autocall was fully off. Reported by SAGE
263 shadow variables when autocall was fully off. Reported by SAGE
256 author William Stein.
264 author William Stein.
257
265
258 * IPython/OInspect.py (Inspector.__init__): add a flag to control
266 * IPython/OInspect.py (Inspector.__init__): add a flag to control
259 at what detail level strings are computed when foo? is requested.
267 at what detail level strings are computed when foo? is requested.
260 This allows users to ask for example that the string form of an
268 This allows users to ask for example that the string form of an
261 object is only computed when foo?? is called, or even never, by
269 object is only computed when foo?? is called, or even never, by
262 setting the object_info_string_level >= 2 in the configuration
270 setting the object_info_string_level >= 2 in the configuration
263 file. This new option has been added and documented. After a
271 file. This new option has been added and documented. After a
264 request by SAGE to be able to control the printing of very large
272 request by SAGE to be able to control the printing of very large
265 objects more easily.
273 objects more easily.
266
274
267 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
275 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
268
276
269 * IPython/ipmaker.py (make_IPython): remove the ipython call path
277 * IPython/ipmaker.py (make_IPython): remove the ipython call path
270 from sys.argv, to be 100% consistent with how Python itself works
278 from sys.argv, to be 100% consistent with how Python itself works
271 (as seen for example with python -i file.py). After a bug report
279 (as seen for example with python -i file.py). After a bug report
272 by Jeffrey Collins.
280 by Jeffrey Collins.
273
281
274 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
282 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
275 nasty bug which was preventing custom namespaces with -pylab,
283 nasty bug which was preventing custom namespaces with -pylab,
276 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
284 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
277 compatibility (long gone from mpl).
285 compatibility (long gone from mpl).
278
286
279 * IPython/ipapi.py (make_session): name change: create->make. We
287 * IPython/ipapi.py (make_session): name change: create->make. We
280 use make in other places (ipmaker,...), it's shorter and easier to
288 use make in other places (ipmaker,...), it's shorter and easier to
281 type and say, etc. I'm trying to clean things before 0.7.2 so
289 type and say, etc. I'm trying to clean things before 0.7.2 so
282 that I can keep things stable wrt to ipapi in the chainsaw branch.
290 that I can keep things stable wrt to ipapi in the chainsaw branch.
283
291
284 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
292 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
285 python-mode recognizes our debugger mode. Add support for
293 python-mode recognizes our debugger mode. Add support for
286 autoindent inside (X)emacs. After a patch sent in by Jin Liu
294 autoindent inside (X)emacs. After a patch sent in by Jin Liu
287 <m.liu.jin-AT-gmail.com> originally written by
295 <m.liu.jin-AT-gmail.com> originally written by
288 doxgen-AT-newsmth.net (with minor modifications for xemacs
296 doxgen-AT-newsmth.net (with minor modifications for xemacs
289 compatibility)
297 compatibility)
290
298
291 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
299 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
292 tracebacks when walking the stack so that the stack tracking system
300 tracebacks when walking the stack so that the stack tracking system
293 in emacs' python-mode can identify the frames correctly.
301 in emacs' python-mode can identify the frames correctly.
294
302
295 * IPython/ipmaker.py (make_IPython): make the internal (and
303 * IPython/ipmaker.py (make_IPython): make the internal (and
296 default config) autoedit_syntax value false by default. Too many
304 default config) autoedit_syntax value false by default. Too many
297 users have complained to me (both on and off-list) about problems
305 users have complained to me (both on and off-list) about problems
298 with this option being on by default, so I'm making it default to
306 with this option being on by default, so I'm making it default to
299 off. It can still be enabled by anyone via the usual mechanisms.
307 off. It can still be enabled by anyone via the usual mechanisms.
300
308
301 * IPython/completer.py (Completer.attr_matches): add support for
309 * IPython/completer.py (Completer.attr_matches): add support for
302 PyCrust-style _getAttributeNames magic method. Patch contributed
310 PyCrust-style _getAttributeNames magic method. Patch contributed
303 by <mscott-AT-goldenspud.com>. Closes #50.
311 by <mscott-AT-goldenspud.com>. Closes #50.
304
312
305 * IPython/iplib.py (InteractiveShell.__init__): remove the
313 * IPython/iplib.py (InteractiveShell.__init__): remove the
306 deletion of exit/quit from __builtin__, which can break
314 deletion of exit/quit from __builtin__, which can break
307 third-party tools like the Zope debugging console. The
315 third-party tools like the Zope debugging console. The
308 %exit/%quit magics remain. In general, it's probably a good idea
316 %exit/%quit magics remain. In general, it's probably a good idea
309 not to delete anything from __builtin__, since we never know what
317 not to delete anything from __builtin__, since we never know what
310 that will break. In any case, python now (for 2.5) will support
318 that will break. In any case, python now (for 2.5) will support
311 'real' exit/quit, so this issue is moot. Closes #55.
319 'real' exit/quit, so this issue is moot. Closes #55.
312
320
313 * IPython/genutils.py (with_obj): rename the 'with' function to
321 * IPython/genutils.py (with_obj): rename the 'with' function to
314 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
322 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
315 becomes a language keyword. Closes #53.
323 becomes a language keyword. Closes #53.
316
324
317 * IPython/FakeModule.py (FakeModule.__init__): add a proper
325 * IPython/FakeModule.py (FakeModule.__init__): add a proper
318 __file__ attribute to this so it fools more things into thinking
326 __file__ attribute to this so it fools more things into thinking
319 it is a real module. Closes #59.
327 it is a real module. Closes #59.
320
328
321 * IPython/Magic.py (magic_edit): add -n option to open the editor
329 * IPython/Magic.py (magic_edit): add -n option to open the editor
322 at a specific line number. After a patch by Stefan van der Walt.
330 at a specific line number. After a patch by Stefan van der Walt.
323
331
324 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
332 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
325
333
326 * IPython/iplib.py (edit_syntax_error): fix crash when for some
334 * IPython/iplib.py (edit_syntax_error): fix crash when for some
327 reason the file could not be opened. After automatic crash
335 reason the file could not be opened. After automatic crash
328 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
336 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
329 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
337 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
330 (_should_recompile): Don't fire editor if using %bg, since there
338 (_should_recompile): Don't fire editor if using %bg, since there
331 is no file in the first place. From the same report as above.
339 is no file in the first place. From the same report as above.
332 (raw_input): protect against faulty third-party prefilters. After
340 (raw_input): protect against faulty third-party prefilters. After
333 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
341 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
334 while running under SAGE.
342 while running under SAGE.
335
343
336 2006-05-23 Ville Vainio <vivainio@gmail.com>
344 2006-05-23 Ville Vainio <vivainio@gmail.com>
337
345
338 * ipapi.py: Stripped down ip.to_user_ns() to work only as
346 * ipapi.py: Stripped down ip.to_user_ns() to work only as
339 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
347 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
340 now returns None (again), unless dummy is specifically allowed by
348 now returns None (again), unless dummy is specifically allowed by
341 ipapi.get(allow_dummy=True).
349 ipapi.get(allow_dummy=True).
342
350
343 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
351 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
344
352
345 * IPython: remove all 2.2-compatibility objects and hacks from
353 * IPython: remove all 2.2-compatibility objects and hacks from
346 everywhere, since we only support 2.3 at this point. Docs
354 everywhere, since we only support 2.3 at this point. Docs
347 updated.
355 updated.
348
356
349 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
357 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
350 Anything requiring extra validation can be turned into a Python
358 Anything requiring extra validation can be turned into a Python
351 property in the future. I used a property for the db one b/c
359 property in the future. I used a property for the db one b/c
352 there was a nasty circularity problem with the initialization
360 there was a nasty circularity problem with the initialization
353 order, which right now I don't have time to clean up.
361 order, which right now I don't have time to clean up.
354
362
355 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
363 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
356 another locking bug reported by Jorgen. I'm not 100% sure though,
364 another locking bug reported by Jorgen. I'm not 100% sure though,
357 so more testing is needed...
365 so more testing is needed...
358
366
359 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
367 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
360
368
361 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
369 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
362 local variables from any routine in user code (typically executed
370 local variables from any routine in user code (typically executed
363 with %run) directly into the interactive namespace. Very useful
371 with %run) directly into the interactive namespace. Very useful
364 when doing complex debugging.
372 when doing complex debugging.
365 (IPythonNotRunning): Changed the default None object to a dummy
373 (IPythonNotRunning): Changed the default None object to a dummy
366 whose attributes can be queried as well as called without
374 whose attributes can be queried as well as called without
367 exploding, to ease writing code which works transparently both in
375 exploding, to ease writing code which works transparently both in
368 and out of ipython and uses some of this API.
376 and out of ipython and uses some of this API.
369
377
370 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
378 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
371
379
372 * IPython/hooks.py (result_display): Fix the fact that our display
380 * IPython/hooks.py (result_display): Fix the fact that our display
373 hook was using str() instead of repr(), as the default python
381 hook was using str() instead of repr(), as the default python
374 console does. This had gone unnoticed b/c it only happened if
382 console does. This had gone unnoticed b/c it only happened if
375 %Pprint was off, but the inconsistency was there.
383 %Pprint was off, but the inconsistency was there.
376
384
377 2006-05-15 Ville Vainio <vivainio@gmail.com>
385 2006-05-15 Ville Vainio <vivainio@gmail.com>
378
386
379 * Oinspect.py: Only show docstring for nonexisting/binary files
387 * Oinspect.py: Only show docstring for nonexisting/binary files
380 when doing object??, closing ticket #62
388 when doing object??, closing ticket #62
381
389
382 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
390 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
383
391
384 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
392 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
385 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
393 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
386 was being released in a routine which hadn't checked if it had
394 was being released in a routine which hadn't checked if it had
387 been the one to acquire it.
395 been the one to acquire it.
388
396
389 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
397 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
390
398
391 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
399 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
392
400
393 2006-04-11 Ville Vainio <vivainio@gmail.com>
401 2006-04-11 Ville Vainio <vivainio@gmail.com>
394
402
395 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
403 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
396 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
404 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
397 prefilters, allowing stuff like magics and aliases in the file.
405 prefilters, allowing stuff like magics and aliases in the file.
398
406
399 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
407 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
400 added. Supported now are "%clear in" and "%clear out" (clear input and
408 added. Supported now are "%clear in" and "%clear out" (clear input and
401 output history, respectively). Also fixed CachedOutput.flush to
409 output history, respectively). Also fixed CachedOutput.flush to
402 properly flush the output cache.
410 properly flush the output cache.
403
411
404 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
412 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
405 half-success (and fail explicitly).
413 half-success (and fail explicitly).
406
414
407 2006-03-28 Ville Vainio <vivainio@gmail.com>
415 2006-03-28 Ville Vainio <vivainio@gmail.com>
408
416
409 * iplib.py: Fix quoting of aliases so that only argless ones
417 * iplib.py: Fix quoting of aliases so that only argless ones
410 are quoted
418 are quoted
411
419
412 2006-03-28 Ville Vainio <vivainio@gmail.com>
420 2006-03-28 Ville Vainio <vivainio@gmail.com>
413
421
414 * iplib.py: Quote aliases with spaces in the name.
422 * iplib.py: Quote aliases with spaces in the name.
415 "c:\program files\blah\bin" is now legal alias target.
423 "c:\program files\blah\bin" is now legal alias target.
416
424
417 * ext_rehashdir.py: Space no longer allowed as arg
425 * ext_rehashdir.py: Space no longer allowed as arg
418 separator, since space is legal in path names.
426 separator, since space is legal in path names.
419
427
420 2006-03-16 Ville Vainio <vivainio@gmail.com>
428 2006-03-16 Ville Vainio <vivainio@gmail.com>
421
429
422 * upgrade_dir.py: Take path.py from Extensions, correcting
430 * upgrade_dir.py: Take path.py from Extensions, correcting
423 %upgrade magic
431 %upgrade magic
424
432
425 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
433 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
426
434
427 * hooks.py: Only enclose editor binary in quotes if legal and
435 * hooks.py: Only enclose editor binary in quotes if legal and
428 necessary (space in the name, and is an existing file). Fixes a bug
436 necessary (space in the name, and is an existing file). Fixes a bug
429 reported by Zachary Pincus.
437 reported by Zachary Pincus.
430
438
431 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
439 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
432
440
433 * Manual: thanks to a tip on proper color handling for Emacs, by
441 * Manual: thanks to a tip on proper color handling for Emacs, by
434 Eric J Haywiser <ejh1-AT-MIT.EDU>.
442 Eric J Haywiser <ejh1-AT-MIT.EDU>.
435
443
436 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
444 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
437 by applying the provided patch. Thanks to Liu Jin
445 by applying the provided patch. Thanks to Liu Jin
438 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
446 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
439 XEmacs/Linux, I'm trusting the submitter that it actually helps
447 XEmacs/Linux, I'm trusting the submitter that it actually helps
440 under win32/GNU Emacs. Will revisit if any problems are reported.
448 under win32/GNU Emacs. Will revisit if any problems are reported.
441
449
442 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
450 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
443
451
444 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
452 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
445 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
453 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
446
454
447 2006-03-12 Ville Vainio <vivainio@gmail.com>
455 2006-03-12 Ville Vainio <vivainio@gmail.com>
448
456
449 * Magic.py (magic_timeit): Added %timeit magic, contributed by
457 * Magic.py (magic_timeit): Added %timeit magic, contributed by
450 Torsten Marek.
458 Torsten Marek.
451
459
452 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
460 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
453
461
454 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
462 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
455 line ranges works again.
463 line ranges works again.
456
464
457 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
465 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
458
466
459 * IPython/iplib.py (showtraceback): add back sys.last_traceback
467 * IPython/iplib.py (showtraceback): add back sys.last_traceback
460 and friends, after a discussion with Zach Pincus on ipython-user.
468 and friends, after a discussion with Zach Pincus on ipython-user.
461 I'm not 100% sure, but after thinking about it quite a bit, it may
469 I'm not 100% sure, but after thinking about it quite a bit, it may
462 be OK. Testing with the multithreaded shells didn't reveal any
470 be OK. Testing with the multithreaded shells didn't reveal any
463 problems, but let's keep an eye out.
471 problems, but let's keep an eye out.
464
472
465 In the process, I fixed a few things which were calling
473 In the process, I fixed a few things which were calling
466 self.InteractiveTB() directly (like safe_execfile), which is a
474 self.InteractiveTB() directly (like safe_execfile), which is a
467 mistake: ALL exception reporting should be done by calling
475 mistake: ALL exception reporting should be done by calling
468 self.showtraceback(), which handles state and tab-completion and
476 self.showtraceback(), which handles state and tab-completion and
469 more.
477 more.
470
478
471 2006-03-01 Ville Vainio <vivainio@gmail.com>
479 2006-03-01 Ville Vainio <vivainio@gmail.com>
472
480
473 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
481 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
474 To use, do "from ipipe import *".
482 To use, do "from ipipe import *".
475
483
476 2006-02-24 Ville Vainio <vivainio@gmail.com>
484 2006-02-24 Ville Vainio <vivainio@gmail.com>
477
485
478 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
486 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
479 "cleanly" and safely than the older upgrade mechanism.
487 "cleanly" and safely than the older upgrade mechanism.
480
488
481 2006-02-21 Ville Vainio <vivainio@gmail.com>
489 2006-02-21 Ville Vainio <vivainio@gmail.com>
482
490
483 * Magic.py: %save works again.
491 * Magic.py: %save works again.
484
492
485 2006-02-15 Ville Vainio <vivainio@gmail.com>
493 2006-02-15 Ville Vainio <vivainio@gmail.com>
486
494
487 * Magic.py: %Pprint works again
495 * Magic.py: %Pprint works again
488
496
489 * Extensions/ipy_sane_defaults.py: Provide everything provided
497 * Extensions/ipy_sane_defaults.py: Provide everything provided
490 in default ipythonrc, to make it possible to have a completely empty
498 in default ipythonrc, to make it possible to have a completely empty
491 ipythonrc (and thus completely rc-file free configuration)
499 ipythonrc (and thus completely rc-file free configuration)
492
500
493 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
501 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
494
502
495 * IPython/hooks.py (editor): quote the call to the editor command,
503 * IPython/hooks.py (editor): quote the call to the editor command,
496 to allow commands with spaces in them. Problem noted by watching
504 to allow commands with spaces in them. Problem noted by watching
497 Ian Oswald's video about textpad under win32 at
505 Ian Oswald's video about textpad under win32 at
498 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
506 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
499
507
500 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
508 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
501 describing magics (we haven't used @ for a loong time).
509 describing magics (we haven't used @ for a loong time).
502
510
503 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
511 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
504 contributed by marienz to close
512 contributed by marienz to close
505 http://www.scipy.net/roundup/ipython/issue53.
513 http://www.scipy.net/roundup/ipython/issue53.
506
514
507 2006-02-10 Ville Vainio <vivainio@gmail.com>
515 2006-02-10 Ville Vainio <vivainio@gmail.com>
508
516
509 * genutils.py: getoutput now works in win32 too
517 * genutils.py: getoutput now works in win32 too
510
518
511 * completer.py: alias and magic completion only invoked
519 * completer.py: alias and magic completion only invoked
512 at the first "item" in the line, to avoid "cd %store"
520 at the first "item" in the line, to avoid "cd %store"
513 nonsense.
521 nonsense.
514
522
515 2006-02-09 Ville Vainio <vivainio@gmail.com>
523 2006-02-09 Ville Vainio <vivainio@gmail.com>
516
524
517 * test/*: Added a unit testing framework (finally).
525 * test/*: Added a unit testing framework (finally).
518 '%run runtests.py' to run test_*.
526 '%run runtests.py' to run test_*.
519
527
520 * ipapi.py: Exposed runlines and set_custom_exc
528 * ipapi.py: Exposed runlines and set_custom_exc
521
529
522 2006-02-07 Ville Vainio <vivainio@gmail.com>
530 2006-02-07 Ville Vainio <vivainio@gmail.com>
523
531
524 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
532 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
525 instead use "f(1 2)" as before.
533 instead use "f(1 2)" as before.
526
534
527 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
535 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
528
536
529 * IPython/demo.py (IPythonDemo): Add new classes to the demo
537 * IPython/demo.py (IPythonDemo): Add new classes to the demo
530 facilities, for demos processed by the IPython input filter
538 facilities, for demos processed by the IPython input filter
531 (IPythonDemo), and for running a script one-line-at-a-time as a
539 (IPythonDemo), and for running a script one-line-at-a-time as a
532 demo, both for pure Python (LineDemo) and for IPython-processed
540 demo, both for pure Python (LineDemo) and for IPython-processed
533 input (IPythonLineDemo). After a request by Dave Kohel, from the
541 input (IPythonLineDemo). After a request by Dave Kohel, from the
534 SAGE team.
542 SAGE team.
535 (Demo.edit): added an edit() method to the demo objects, to edit
543 (Demo.edit): added an edit() method to the demo objects, to edit
536 the in-memory copy of the last executed block.
544 the in-memory copy of the last executed block.
537
545
538 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
546 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
539 processing to %edit, %macro and %save. These commands can now be
547 processing to %edit, %macro and %save. These commands can now be
540 invoked on the unprocessed input as it was typed by the user
548 invoked on the unprocessed input as it was typed by the user
541 (without any prefilters applied). After requests by the SAGE team
549 (without any prefilters applied). After requests by the SAGE team
542 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
550 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
543
551
544 2006-02-01 Ville Vainio <vivainio@gmail.com>
552 2006-02-01 Ville Vainio <vivainio@gmail.com>
545
553
546 * setup.py, eggsetup.py: easy_install ipython==dev works
554 * setup.py, eggsetup.py: easy_install ipython==dev works
547 correctly now (on Linux)
555 correctly now (on Linux)
548
556
549 * ipy_user_conf,ipmaker: user config changes, removed spurious
557 * ipy_user_conf,ipmaker: user config changes, removed spurious
550 warnings
558 warnings
551
559
552 * iplib: if rc.banner is string, use it as is.
560 * iplib: if rc.banner is string, use it as is.
553
561
554 * Magic: %pycat accepts a string argument and pages it's contents.
562 * Magic: %pycat accepts a string argument and pages it's contents.
555
563
556
564
557 2006-01-30 Ville Vainio <vivainio@gmail.com>
565 2006-01-30 Ville Vainio <vivainio@gmail.com>
558
566
559 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
567 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
560 Now %store and bookmarks work through PickleShare, meaning that
568 Now %store and bookmarks work through PickleShare, meaning that
561 concurrent access is possible and all ipython sessions see the
569 concurrent access is possible and all ipython sessions see the
562 same database situation all the time, instead of snapshot of
570 same database situation all the time, instead of snapshot of
563 the situation when the session was started. Hence, %bookmark
571 the situation when the session was started. Hence, %bookmark
564 results are immediately accessible from othes sessions. The database
572 results are immediately accessible from othes sessions. The database
565 is also available for use by user extensions. See:
573 is also available for use by user extensions. See:
566 http://www.python.org/pypi/pickleshare
574 http://www.python.org/pypi/pickleshare
567
575
568 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
576 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
569
577
570 * aliases can now be %store'd
578 * aliases can now be %store'd
571
579
572 * path.py moved to Extensions so that pickleshare does not need
580 * path.py moved to Extensions so that pickleshare does not need
573 IPython-specific import. Extensions added to pythonpath right
581 IPython-specific import. Extensions added to pythonpath right
574 at __init__.
582 at __init__.
575
583
576 * iplib.py: ipalias deprecated/redundant; aliases are converted and
584 * iplib.py: ipalias deprecated/redundant; aliases are converted and
577 called with _ip.system and the pre-transformed command string.
585 called with _ip.system and the pre-transformed command string.
578
586
579 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
587 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
580
588
581 * IPython/iplib.py (interact): Fix that we were not catching
589 * IPython/iplib.py (interact): Fix that we were not catching
582 KeyboardInterrupt exceptions properly. I'm not quite sure why the
590 KeyboardInterrupt exceptions properly. I'm not quite sure why the
583 logic here had to change, but it's fixed now.
591 logic here had to change, but it's fixed now.
584
592
585 2006-01-29 Ville Vainio <vivainio@gmail.com>
593 2006-01-29 Ville Vainio <vivainio@gmail.com>
586
594
587 * iplib.py: Try to import pyreadline on Windows.
595 * iplib.py: Try to import pyreadline on Windows.
588
596
589 2006-01-27 Ville Vainio <vivainio@gmail.com>
597 2006-01-27 Ville Vainio <vivainio@gmail.com>
590
598
591 * iplib.py: Expose ipapi as _ip in builtin namespace.
599 * iplib.py: Expose ipapi as _ip in builtin namespace.
592 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
600 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
593 and ip_set_hook (-> _ip.set_hook) redundant. % and !
601 and ip_set_hook (-> _ip.set_hook) redundant. % and !
594 syntax now produce _ip.* variant of the commands.
602 syntax now produce _ip.* variant of the commands.
595
603
596 * "_ip.options().autoedit_syntax = 2" automatically throws
604 * "_ip.options().autoedit_syntax = 2" automatically throws
597 user to editor for syntax error correction without prompting.
605 user to editor for syntax error correction without prompting.
598
606
599 2006-01-27 Ville Vainio <vivainio@gmail.com>
607 2006-01-27 Ville Vainio <vivainio@gmail.com>
600
608
601 * ipmaker.py: Give "realistic" sys.argv for scripts (without
609 * ipmaker.py: Give "realistic" sys.argv for scripts (without
602 'ipython' at argv[0]) executed through command line.
610 'ipython' at argv[0]) executed through command line.
603 NOTE: this DEPRECATES calling ipython with multiple scripts
611 NOTE: this DEPRECATES calling ipython with multiple scripts
604 ("ipython a.py b.py c.py")
612 ("ipython a.py b.py c.py")
605
613
606 * iplib.py, hooks.py: Added configurable input prefilter,
614 * iplib.py, hooks.py: Added configurable input prefilter,
607 named 'input_prefilter'. See ext_rescapture.py for example
615 named 'input_prefilter'. See ext_rescapture.py for example
608 usage.
616 usage.
609
617
610 * ext_rescapture.py, Magic.py: Better system command output capture
618 * ext_rescapture.py, Magic.py: Better system command output capture
611 through 'var = !ls' (deprecates user-visible %sc). Same notation
619 through 'var = !ls' (deprecates user-visible %sc). Same notation
612 applies for magics, 'var = %alias' assigns alias list to var.
620 applies for magics, 'var = %alias' assigns alias list to var.
613
621
614 * ipapi.py: added meta() for accessing extension-usable data store.
622 * ipapi.py: added meta() for accessing extension-usable data store.
615
623
616 * iplib.py: added InteractiveShell.getapi(). New magics should be
624 * iplib.py: added InteractiveShell.getapi(). New magics should be
617 written doing self.getapi() instead of using the shell directly.
625 written doing self.getapi() instead of using the shell directly.
618
626
619 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
627 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
620 %store foo >> ~/myfoo.txt to store variables to files (in clean
628 %store foo >> ~/myfoo.txt to store variables to files (in clean
621 textual form, not a restorable pickle).
629 textual form, not a restorable pickle).
622
630
623 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
631 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
624
632
625 * usage.py, Magic.py: added %quickref
633 * usage.py, Magic.py: added %quickref
626
634
627 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
635 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
628
636
629 * GetoptErrors when invoking magics etc. with wrong args
637 * GetoptErrors when invoking magics etc. with wrong args
630 are now more helpful:
638 are now more helpful:
631 GetoptError: option -l not recognized (allowed: "qb" )
639 GetoptError: option -l not recognized (allowed: "qb" )
632
640
633 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
641 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
634
642
635 * IPython/demo.py (Demo.show): Flush stdout after each block, so
643 * IPython/demo.py (Demo.show): Flush stdout after each block, so
636 computationally intensive blocks don't appear to stall the demo.
644 computationally intensive blocks don't appear to stall the demo.
637
645
638 2006-01-24 Ville Vainio <vivainio@gmail.com>
646 2006-01-24 Ville Vainio <vivainio@gmail.com>
639
647
640 * iplib.py, hooks.py: 'result_display' hook can return a non-None
648 * iplib.py, hooks.py: 'result_display' hook can return a non-None
641 value to manipulate resulting history entry.
649 value to manipulate resulting history entry.
642
650
643 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
651 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
644 to instance methods of IPApi class, to make extending an embedded
652 to instance methods of IPApi class, to make extending an embedded
645 IPython feasible. See ext_rehashdir.py for example usage.
653 IPython feasible. See ext_rehashdir.py for example usage.
646
654
647 * Merged 1071-1076 from branches/0.7.1
655 * Merged 1071-1076 from branches/0.7.1
648
656
649
657
650 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
658 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
651
659
652 * tools/release (daystamp): Fix build tools to use the new
660 * tools/release (daystamp): Fix build tools to use the new
653 eggsetup.py script to build lightweight eggs.
661 eggsetup.py script to build lightweight eggs.
654
662
655 * Applied changesets 1062 and 1064 before 0.7.1 release.
663 * Applied changesets 1062 and 1064 before 0.7.1 release.
656
664
657 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
665 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
658 see the raw input history (without conversions like %ls ->
666 see the raw input history (without conversions like %ls ->
659 ipmagic("ls")). After a request from W. Stein, SAGE
667 ipmagic("ls")). After a request from W. Stein, SAGE
660 (http://modular.ucsd.edu/sage) developer. This information is
668 (http://modular.ucsd.edu/sage) developer. This information is
661 stored in the input_hist_raw attribute of the IPython instance, so
669 stored in the input_hist_raw attribute of the IPython instance, so
662 developers can access it if needed (it's an InputList instance).
670 developers can access it if needed (it's an InputList instance).
663
671
664 * Versionstring = 0.7.2.svn
672 * Versionstring = 0.7.2.svn
665
673
666 * eggsetup.py: A separate script for constructing eggs, creates
674 * eggsetup.py: A separate script for constructing eggs, creates
667 proper launch scripts even on Windows (an .exe file in
675 proper launch scripts even on Windows (an .exe file in
668 \python24\scripts).
676 \python24\scripts).
669
677
670 * ipapi.py: launch_new_instance, launch entry point needed for the
678 * ipapi.py: launch_new_instance, launch entry point needed for the
671 egg.
679 egg.
672
680
673 2006-01-23 Ville Vainio <vivainio@gmail.com>
681 2006-01-23 Ville Vainio <vivainio@gmail.com>
674
682
675 * Added %cpaste magic for pasting python code
683 * Added %cpaste magic for pasting python code
676
684
677 2006-01-22 Ville Vainio <vivainio@gmail.com>
685 2006-01-22 Ville Vainio <vivainio@gmail.com>
678
686
679 * Merge from branches/0.7.1 into trunk, revs 1052-1057
687 * Merge from branches/0.7.1 into trunk, revs 1052-1057
680
688
681 * Versionstring = 0.7.2.svn
689 * Versionstring = 0.7.2.svn
682
690
683 * eggsetup.py: A separate script for constructing eggs, creates
691 * eggsetup.py: A separate script for constructing eggs, creates
684 proper launch scripts even on Windows (an .exe file in
692 proper launch scripts even on Windows (an .exe file in
685 \python24\scripts).
693 \python24\scripts).
686
694
687 * ipapi.py: launch_new_instance, launch entry point needed for the
695 * ipapi.py: launch_new_instance, launch entry point needed for the
688 egg.
696 egg.
689
697
690 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
698 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
691
699
692 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
700 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
693 %pfile foo would print the file for foo even if it was a binary.
701 %pfile foo would print the file for foo even if it was a binary.
694 Now, extensions '.so' and '.dll' are skipped.
702 Now, extensions '.so' and '.dll' are skipped.
695
703
696 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
704 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
697 bug, where macros would fail in all threaded modes. I'm not 100%
705 bug, where macros would fail in all threaded modes. I'm not 100%
698 sure, so I'm going to put out an rc instead of making a release
706 sure, so I'm going to put out an rc instead of making a release
699 today, and wait for feedback for at least a few days.
707 today, and wait for feedback for at least a few days.
700
708
701 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
709 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
702 it...) the handling of pasting external code with autoindent on.
710 it...) the handling of pasting external code with autoindent on.
703 To get out of a multiline input, the rule will appear for most
711 To get out of a multiline input, the rule will appear for most
704 users unchanged: two blank lines or change the indent level
712 users unchanged: two blank lines or change the indent level
705 proposed by IPython. But there is a twist now: you can
713 proposed by IPython. But there is a twist now: you can
706 add/subtract only *one or two spaces*. If you add/subtract three
714 add/subtract only *one or two spaces*. If you add/subtract three
707 or more (unless you completely delete the line), IPython will
715 or more (unless you completely delete the line), IPython will
708 accept that line, and you'll need to enter a second one of pure
716 accept that line, and you'll need to enter a second one of pure
709 whitespace. I know it sounds complicated, but I can't find a
717 whitespace. I know it sounds complicated, but I can't find a
710 different solution that covers all the cases, with the right
718 different solution that covers all the cases, with the right
711 heuristics. Hopefully in actual use, nobody will really notice
719 heuristics. Hopefully in actual use, nobody will really notice
712 all these strange rules and things will 'just work'.
720 all these strange rules and things will 'just work'.
713
721
714 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
722 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
715
723
716 * IPython/iplib.py (interact): catch exceptions which can be
724 * IPython/iplib.py (interact): catch exceptions which can be
717 triggered asynchronously by signal handlers. Thanks to an
725 triggered asynchronously by signal handlers. Thanks to an
718 automatic crash report, submitted by Colin Kingsley
726 automatic crash report, submitted by Colin Kingsley
719 <tercel-AT-gentoo.org>.
727 <tercel-AT-gentoo.org>.
720
728
721 2006-01-20 Ville Vainio <vivainio@gmail.com>
729 2006-01-20 Ville Vainio <vivainio@gmail.com>
722
730
723 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
731 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
724 (%rehashdir, very useful, try it out) of how to extend ipython
732 (%rehashdir, very useful, try it out) of how to extend ipython
725 with new magics. Also added Extensions dir to pythonpath to make
733 with new magics. Also added Extensions dir to pythonpath to make
726 importing extensions easy.
734 importing extensions easy.
727
735
728 * %store now complains when trying to store interactively declared
736 * %store now complains when trying to store interactively declared
729 classes / instances of those classes.
737 classes / instances of those classes.
730
738
731 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
739 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
732 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
740 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
733 if they exist, and ipy_user_conf.py with some defaults is created for
741 if they exist, and ipy_user_conf.py with some defaults is created for
734 the user.
742 the user.
735
743
736 * Startup rehashing done by the config file, not InterpreterExec.
744 * Startup rehashing done by the config file, not InterpreterExec.
737 This means system commands are available even without selecting the
745 This means system commands are available even without selecting the
738 pysh profile. It's the sensible default after all.
746 pysh profile. It's the sensible default after all.
739
747
740 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
748 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
741
749
742 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
750 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
743 multiline code with autoindent on working. But I am really not
751 multiline code with autoindent on working. But I am really not
744 sure, so this needs more testing. Will commit a debug-enabled
752 sure, so this needs more testing. Will commit a debug-enabled
745 version for now, while I test it some more, so that Ville and
753 version for now, while I test it some more, so that Ville and
746 others may also catch any problems. Also made
754 others may also catch any problems. Also made
747 self.indent_current_str() a method, to ensure that there's no
755 self.indent_current_str() a method, to ensure that there's no
748 chance of the indent space count and the corresponding string
756 chance of the indent space count and the corresponding string
749 falling out of sync. All code needing the string should just call
757 falling out of sync. All code needing the string should just call
750 the method.
758 the method.
751
759
752 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
760 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
753
761
754 * IPython/Magic.py (magic_edit): fix check for when users don't
762 * IPython/Magic.py (magic_edit): fix check for when users don't
755 save their output files, the try/except was in the wrong section.
763 save their output files, the try/except was in the wrong section.
756
764
757 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
765 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
758
766
759 * IPython/Magic.py (magic_run): fix __file__ global missing from
767 * IPython/Magic.py (magic_run): fix __file__ global missing from
760 script's namespace when executed via %run. After a report by
768 script's namespace when executed via %run. After a report by
761 Vivian.
769 Vivian.
762
770
763 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
771 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
764 when using python 2.4. The parent constructor changed in 2.4, and
772 when using python 2.4. The parent constructor changed in 2.4, and
765 we need to track it directly (we can't call it, as it messes up
773 we need to track it directly (we can't call it, as it messes up
766 readline and tab-completion inside our pdb would stop working).
774 readline and tab-completion inside our pdb would stop working).
767 After a bug report by R. Bernstein <rocky-AT-panix.com>.
775 After a bug report by R. Bernstein <rocky-AT-panix.com>.
768
776
769 2006-01-16 Ville Vainio <vivainio@gmail.com>
777 2006-01-16 Ville Vainio <vivainio@gmail.com>
770
778
771 * Ipython/magic.py: Reverted back to old %edit functionality
779 * Ipython/magic.py: Reverted back to old %edit functionality
772 that returns file contents on exit.
780 that returns file contents on exit.
773
781
774 * IPython/path.py: Added Jason Orendorff's "path" module to
782 * IPython/path.py: Added Jason Orendorff's "path" module to
775 IPython tree, http://www.jorendorff.com/articles/python/path/.
783 IPython tree, http://www.jorendorff.com/articles/python/path/.
776 You can get path objects conveniently through %sc, and !!, e.g.:
784 You can get path objects conveniently through %sc, and !!, e.g.:
777 sc files=ls
785 sc files=ls
778 for p in files.paths: # or files.p
786 for p in files.paths: # or files.p
779 print p,p.mtime
787 print p,p.mtime
780
788
781 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
789 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
782 now work again without considering the exclusion regexp -
790 now work again without considering the exclusion regexp -
783 hence, things like ',foo my/path' turn to 'foo("my/path")'
791 hence, things like ',foo my/path' turn to 'foo("my/path")'
784 instead of syntax error.
792 instead of syntax error.
785
793
786
794
787 2006-01-14 Ville Vainio <vivainio@gmail.com>
795 2006-01-14 Ville Vainio <vivainio@gmail.com>
788
796
789 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
797 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
790 ipapi decorators for python 2.4 users, options() provides access to rc
798 ipapi decorators for python 2.4 users, options() provides access to rc
791 data.
799 data.
792
800
793 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
801 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
794 as path separators (even on Linux ;-). Space character after
802 as path separators (even on Linux ;-). Space character after
795 backslash (as yielded by tab completer) is still space;
803 backslash (as yielded by tab completer) is still space;
796 "%cd long\ name" works as expected.
804 "%cd long\ name" works as expected.
797
805
798 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
806 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
799 as "chain of command", with priority. API stays the same,
807 as "chain of command", with priority. API stays the same,
800 TryNext exception raised by a hook function signals that
808 TryNext exception raised by a hook function signals that
801 current hook failed and next hook should try handling it, as
809 current hook failed and next hook should try handling it, as
802 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
810 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
803 requested configurable display hook, which is now implemented.
811 requested configurable display hook, which is now implemented.
804
812
805 2006-01-13 Ville Vainio <vivainio@gmail.com>
813 2006-01-13 Ville Vainio <vivainio@gmail.com>
806
814
807 * IPython/platutils*.py: platform specific utility functions,
815 * IPython/platutils*.py: platform specific utility functions,
808 so far only set_term_title is implemented (change terminal
816 so far only set_term_title is implemented (change terminal
809 label in windowing systems). %cd now changes the title to
817 label in windowing systems). %cd now changes the title to
810 current dir.
818 current dir.
811
819
812 * IPython/Release.py: Added myself to "authors" list,
820 * IPython/Release.py: Added myself to "authors" list,
813 had to create new files.
821 had to create new files.
814
822
815 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
823 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
816 shell escape; not a known bug but had potential to be one in the
824 shell escape; not a known bug but had potential to be one in the
817 future.
825 future.
818
826
819 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
827 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
820 extension API for IPython! See the module for usage example. Fix
828 extension API for IPython! See the module for usage example. Fix
821 OInspect for docstring-less magic functions.
829 OInspect for docstring-less magic functions.
822
830
823
831
824 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
832 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
825
833
826 * IPython/iplib.py (raw_input): temporarily deactivate all
834 * IPython/iplib.py (raw_input): temporarily deactivate all
827 attempts at allowing pasting of code with autoindent on. It
835 attempts at allowing pasting of code with autoindent on. It
828 introduced bugs (reported by Prabhu) and I can't seem to find a
836 introduced bugs (reported by Prabhu) and I can't seem to find a
829 robust combination which works in all cases. Will have to revisit
837 robust combination which works in all cases. Will have to revisit
830 later.
838 later.
831
839
832 * IPython/genutils.py: remove isspace() function. We've dropped
840 * IPython/genutils.py: remove isspace() function. We've dropped
833 2.2 compatibility, so it's OK to use the string method.
841 2.2 compatibility, so it's OK to use the string method.
834
842
835 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
843 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
836
844
837 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
845 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
838 matching what NOT to autocall on, to include all python binary
846 matching what NOT to autocall on, to include all python binary
839 operators (including things like 'and', 'or', 'is' and 'in').
847 operators (including things like 'and', 'or', 'is' and 'in').
840 Prompted by a bug report on 'foo & bar', but I realized we had
848 Prompted by a bug report on 'foo & bar', but I realized we had
841 many more potential bug cases with other operators. The regexp is
849 many more potential bug cases with other operators. The regexp is
842 self.re_exclude_auto, it's fairly commented.
850 self.re_exclude_auto, it's fairly commented.
843
851
844 2006-01-12 Ville Vainio <vivainio@gmail.com>
852 2006-01-12 Ville Vainio <vivainio@gmail.com>
845
853
846 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
854 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
847 Prettified and hardened string/backslash quoting with ipsystem(),
855 Prettified and hardened string/backslash quoting with ipsystem(),
848 ipalias() and ipmagic(). Now even \ characters are passed to
856 ipalias() and ipmagic(). Now even \ characters are passed to
849 %magics, !shell escapes and aliases exactly as they are in the
857 %magics, !shell escapes and aliases exactly as they are in the
850 ipython command line. Should improve backslash experience,
858 ipython command line. Should improve backslash experience,
851 particularly in Windows (path delimiter for some commands that
859 particularly in Windows (path delimiter for some commands that
852 won't understand '/'), but Unix benefits as well (regexps). %cd
860 won't understand '/'), but Unix benefits as well (regexps). %cd
853 magic still doesn't support backslash path delimiters, though. Also
861 magic still doesn't support backslash path delimiters, though. Also
854 deleted all pretense of supporting multiline command strings in
862 deleted all pretense of supporting multiline command strings in
855 !system or %magic commands. Thanks to Jerry McRae for suggestions.
863 !system or %magic commands. Thanks to Jerry McRae for suggestions.
856
864
857 * doc/build_doc_instructions.txt added. Documentation on how to
865 * doc/build_doc_instructions.txt added. Documentation on how to
858 use doc/update_manual.py, added yesterday. Both files contributed
866 use doc/update_manual.py, added yesterday. Both files contributed
859 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
867 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
860 doc/*.sh for deprecation at a later date.
868 doc/*.sh for deprecation at a later date.
861
869
862 * /ipython.py Added ipython.py to root directory for
870 * /ipython.py Added ipython.py to root directory for
863 zero-installation (tar xzvf ipython.tgz; cd ipython; python
871 zero-installation (tar xzvf ipython.tgz; cd ipython; python
864 ipython.py) and development convenience (no need to keep doing
872 ipython.py) and development convenience (no need to keep doing
865 "setup.py install" between changes).
873 "setup.py install" between changes).
866
874
867 * Made ! and !! shell escapes work (again) in multiline expressions:
875 * Made ! and !! shell escapes work (again) in multiline expressions:
868 if 1:
876 if 1:
869 !ls
877 !ls
870 !!ls
878 !!ls
871
879
872 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
880 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
873
881
874 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
882 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
875 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
883 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
876 module in case-insensitive installation. Was causing crashes
884 module in case-insensitive installation. Was causing crashes
877 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
885 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
878
886
879 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
887 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
880 <marienz-AT-gentoo.org>, closes
888 <marienz-AT-gentoo.org>, closes
881 http://www.scipy.net/roundup/ipython/issue51.
889 http://www.scipy.net/roundup/ipython/issue51.
882
890
883 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
891 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
884
892
885 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
893 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
886 problem of excessive CPU usage under *nix and keyboard lag under
894 problem of excessive CPU usage under *nix and keyboard lag under
887 win32.
895 win32.
888
896
889 2006-01-10 *** Released version 0.7.0
897 2006-01-10 *** Released version 0.7.0
890
898
891 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
899 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
892
900
893 * IPython/Release.py (revision): tag version number to 0.7.0,
901 * IPython/Release.py (revision): tag version number to 0.7.0,
894 ready for release.
902 ready for release.
895
903
896 * IPython/Magic.py (magic_edit): Add print statement to %edit so
904 * IPython/Magic.py (magic_edit): Add print statement to %edit so
897 it informs the user of the name of the temp. file used. This can
905 it informs the user of the name of the temp. file used. This can
898 help if you decide later to reuse that same file, so you know
906 help if you decide later to reuse that same file, so you know
899 where to copy the info from.
907 where to copy the info from.
900
908
901 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
909 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
902
910
903 * setup_bdist_egg.py: little script to build an egg. Added
911 * setup_bdist_egg.py: little script to build an egg. Added
904 support in the release tools as well.
912 support in the release tools as well.
905
913
906 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
914 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
907
915
908 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
916 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
909 version selection (new -wxversion command line and ipythonrc
917 version selection (new -wxversion command line and ipythonrc
910 parameter). Patch contributed by Arnd Baecker
918 parameter). Patch contributed by Arnd Baecker
911 <arnd.baecker-AT-web.de>.
919 <arnd.baecker-AT-web.de>.
912
920
913 * IPython/iplib.py (embed_mainloop): fix tab-completion in
921 * IPython/iplib.py (embed_mainloop): fix tab-completion in
914 embedded instances, for variables defined at the interactive
922 embedded instances, for variables defined at the interactive
915 prompt of the embedded ipython. Reported by Arnd.
923 prompt of the embedded ipython. Reported by Arnd.
916
924
917 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
925 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
918 it can be used as a (stateful) toggle, or with a direct parameter.
926 it can be used as a (stateful) toggle, or with a direct parameter.
919
927
920 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
928 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
921 could be triggered in certain cases and cause the traceback
929 could be triggered in certain cases and cause the traceback
922 printer not to work.
930 printer not to work.
923
931
924 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
932 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
925
933
926 * IPython/iplib.py (_should_recompile): Small fix, closes
934 * IPython/iplib.py (_should_recompile): Small fix, closes
927 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
935 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
928
936
929 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
937 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
930
938
931 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
939 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
932 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
940 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
933 Moad for help with tracking it down.
941 Moad for help with tracking it down.
934
942
935 * IPython/iplib.py (handle_auto): fix autocall handling for
943 * IPython/iplib.py (handle_auto): fix autocall handling for
936 objects which support BOTH __getitem__ and __call__ (so that f [x]
944 objects which support BOTH __getitem__ and __call__ (so that f [x]
937 is left alone, instead of becoming f([x]) automatically).
945 is left alone, instead of becoming f([x]) automatically).
938
946
939 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
947 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
940 Ville's patch.
948 Ville's patch.
941
949
942 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
950 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
943
951
944 * IPython/iplib.py (handle_auto): changed autocall semantics to
952 * IPython/iplib.py (handle_auto): changed autocall semantics to
945 include 'smart' mode, where the autocall transformation is NOT
953 include 'smart' mode, where the autocall transformation is NOT
946 applied if there are no arguments on the line. This allows you to
954 applied if there are no arguments on the line. This allows you to
947 just type 'foo' if foo is a callable to see its internal form,
955 just type 'foo' if foo is a callable to see its internal form,
948 instead of having it called with no arguments (typically a
956 instead of having it called with no arguments (typically a
949 mistake). The old 'full' autocall still exists: for that, you
957 mistake). The old 'full' autocall still exists: for that, you
950 need to set the 'autocall' parameter to 2 in your ipythonrc file.
958 need to set the 'autocall' parameter to 2 in your ipythonrc file.
951
959
952 * IPython/completer.py (Completer.attr_matches): add
960 * IPython/completer.py (Completer.attr_matches): add
953 tab-completion support for Enthoughts' traits. After a report by
961 tab-completion support for Enthoughts' traits. After a report by
954 Arnd and a patch by Prabhu.
962 Arnd and a patch by Prabhu.
955
963
956 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
964 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
957
965
958 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
966 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
959 Schmolck's patch to fix inspect.getinnerframes().
967 Schmolck's patch to fix inspect.getinnerframes().
960
968
961 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
969 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
962 for embedded instances, regarding handling of namespaces and items
970 for embedded instances, regarding handling of namespaces and items
963 added to the __builtin__ one. Multiple embedded instances and
971 added to the __builtin__ one. Multiple embedded instances and
964 recursive embeddings should work better now (though I'm not sure
972 recursive embeddings should work better now (though I'm not sure
965 I've got all the corner cases fixed, that code is a bit of a brain
973 I've got all the corner cases fixed, that code is a bit of a brain
966 twister).
974 twister).
967
975
968 * IPython/Magic.py (magic_edit): added support to edit in-memory
976 * IPython/Magic.py (magic_edit): added support to edit in-memory
969 macros (automatically creates the necessary temp files). %edit
977 macros (automatically creates the necessary temp files). %edit
970 also doesn't return the file contents anymore, it's just noise.
978 also doesn't return the file contents anymore, it's just noise.
971
979
972 * IPython/completer.py (Completer.attr_matches): revert change to
980 * IPython/completer.py (Completer.attr_matches): revert change to
973 complete only on attributes listed in __all__. I realized it
981 complete only on attributes listed in __all__. I realized it
974 cripples the tab-completion system as a tool for exploring the
982 cripples the tab-completion system as a tool for exploring the
975 internals of unknown libraries (it renders any non-__all__
983 internals of unknown libraries (it renders any non-__all__
976 attribute off-limits). I got bit by this when trying to see
984 attribute off-limits). I got bit by this when trying to see
977 something inside the dis module.
985 something inside the dis module.
978
986
979 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
987 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
980
988
981 * IPython/iplib.py (InteractiveShell.__init__): add .meta
989 * IPython/iplib.py (InteractiveShell.__init__): add .meta
982 namespace for users and extension writers to hold data in. This
990 namespace for users and extension writers to hold data in. This
983 follows the discussion in
991 follows the discussion in
984 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
992 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
985
993
986 * IPython/completer.py (IPCompleter.complete): small patch to help
994 * IPython/completer.py (IPCompleter.complete): small patch to help
987 tab-completion under Emacs, after a suggestion by John Barnard
995 tab-completion under Emacs, after a suggestion by John Barnard
988 <barnarj-AT-ccf.org>.
996 <barnarj-AT-ccf.org>.
989
997
990 * IPython/Magic.py (Magic.extract_input_slices): added support for
998 * IPython/Magic.py (Magic.extract_input_slices): added support for
991 the slice notation in magics to use N-M to represent numbers N...M
999 the slice notation in magics to use N-M to represent numbers N...M
992 (closed endpoints). This is used by %macro and %save.
1000 (closed endpoints). This is used by %macro and %save.
993
1001
994 * IPython/completer.py (Completer.attr_matches): for modules which
1002 * IPython/completer.py (Completer.attr_matches): for modules which
995 define __all__, complete only on those. After a patch by Jeffrey
1003 define __all__, complete only on those. After a patch by Jeffrey
996 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1004 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
997 speed up this routine.
1005 speed up this routine.
998
1006
999 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1007 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1000 don't know if this is the end of it, but the behavior now is
1008 don't know if this is the end of it, but the behavior now is
1001 certainly much more correct. Note that coupled with macros,
1009 certainly much more correct. Note that coupled with macros,
1002 slightly surprising (at first) behavior may occur: a macro will in
1010 slightly surprising (at first) behavior may occur: a macro will in
1003 general expand to multiple lines of input, so upon exiting, the
1011 general expand to multiple lines of input, so upon exiting, the
1004 in/out counters will both be bumped by the corresponding amount
1012 in/out counters will both be bumped by the corresponding amount
1005 (as if the macro's contents had been typed interactively). Typing
1013 (as if the macro's contents had been typed interactively). Typing
1006 %hist will reveal the intermediate (silently processed) lines.
1014 %hist will reveal the intermediate (silently processed) lines.
1007
1015
1008 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1016 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1009 pickle to fail (%run was overwriting __main__ and not restoring
1017 pickle to fail (%run was overwriting __main__ and not restoring
1010 it, but pickle relies on __main__ to operate).
1018 it, but pickle relies on __main__ to operate).
1011
1019
1012 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1020 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1013 using properties, but forgot to make the main InteractiveShell
1021 using properties, but forgot to make the main InteractiveShell
1014 class a new-style class. Properties fail silently, and
1022 class a new-style class. Properties fail silently, and
1015 mysteriously, with old-style class (getters work, but
1023 mysteriously, with old-style class (getters work, but
1016 setters don't do anything).
1024 setters don't do anything).
1017
1025
1018 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1026 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1019
1027
1020 * IPython/Magic.py (magic_history): fix history reporting bug (I
1028 * IPython/Magic.py (magic_history): fix history reporting bug (I
1021 know some nasties are still there, I just can't seem to find a
1029 know some nasties are still there, I just can't seem to find a
1022 reproducible test case to track them down; the input history is
1030 reproducible test case to track them down; the input history is
1023 falling out of sync...)
1031 falling out of sync...)
1024
1032
1025 * IPython/iplib.py (handle_shell_escape): fix bug where both
1033 * IPython/iplib.py (handle_shell_escape): fix bug where both
1026 aliases and system accesses where broken for indented code (such
1034 aliases and system accesses where broken for indented code (such
1027 as loops).
1035 as loops).
1028
1036
1029 * IPython/genutils.py (shell): fix small but critical bug for
1037 * IPython/genutils.py (shell): fix small but critical bug for
1030 win32 system access.
1038 win32 system access.
1031
1039
1032 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1040 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1033
1041
1034 * IPython/iplib.py (showtraceback): remove use of the
1042 * IPython/iplib.py (showtraceback): remove use of the
1035 sys.last_{type/value/traceback} structures, which are non
1043 sys.last_{type/value/traceback} structures, which are non
1036 thread-safe.
1044 thread-safe.
1037 (_prefilter): change control flow to ensure that we NEVER
1045 (_prefilter): change control flow to ensure that we NEVER
1038 introspect objects when autocall is off. This will guarantee that
1046 introspect objects when autocall is off. This will guarantee that
1039 having an input line of the form 'x.y', where access to attribute
1047 having an input line of the form 'x.y', where access to attribute
1040 'y' has side effects, doesn't trigger the side effect TWICE. It
1048 'y' has side effects, doesn't trigger the side effect TWICE. It
1041 is important to note that, with autocall on, these side effects
1049 is important to note that, with autocall on, these side effects
1042 can still happen.
1050 can still happen.
1043 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1051 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1044 trio. IPython offers these three kinds of special calls which are
1052 trio. IPython offers these three kinds of special calls which are
1045 not python code, and it's a good thing to have their call method
1053 not python code, and it's a good thing to have their call method
1046 be accessible as pure python functions (not just special syntax at
1054 be accessible as pure python functions (not just special syntax at
1047 the command line). It gives us a better internal implementation
1055 the command line). It gives us a better internal implementation
1048 structure, as well as exposing these for user scripting more
1056 structure, as well as exposing these for user scripting more
1049 cleanly.
1057 cleanly.
1050
1058
1051 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1059 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1052 file. Now that they'll be more likely to be used with the
1060 file. Now that they'll be more likely to be used with the
1053 persistance system (%store), I want to make sure their module path
1061 persistance system (%store), I want to make sure their module path
1054 doesn't change in the future, so that we don't break things for
1062 doesn't change in the future, so that we don't break things for
1055 users' persisted data.
1063 users' persisted data.
1056
1064
1057 * IPython/iplib.py (autoindent_update): move indentation
1065 * IPython/iplib.py (autoindent_update): move indentation
1058 management into the _text_ processing loop, not the keyboard
1066 management into the _text_ processing loop, not the keyboard
1059 interactive one. This is necessary to correctly process non-typed
1067 interactive one. This is necessary to correctly process non-typed
1060 multiline input (such as macros).
1068 multiline input (such as macros).
1061
1069
1062 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1070 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1063 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1071 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1064 which was producing problems in the resulting manual.
1072 which was producing problems in the resulting manual.
1065 (magic_whos): improve reporting of instances (show their class,
1073 (magic_whos): improve reporting of instances (show their class,
1066 instead of simply printing 'instance' which isn't terribly
1074 instead of simply printing 'instance' which isn't terribly
1067 informative).
1075 informative).
1068
1076
1069 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1077 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1070 (minor mods) to support network shares under win32.
1078 (minor mods) to support network shares under win32.
1071
1079
1072 * IPython/winconsole.py (get_console_size): add new winconsole
1080 * IPython/winconsole.py (get_console_size): add new winconsole
1073 module and fixes to page_dumb() to improve its behavior under
1081 module and fixes to page_dumb() to improve its behavior under
1074 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1082 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1075
1083
1076 * IPython/Magic.py (Macro): simplified Macro class to just
1084 * IPython/Magic.py (Macro): simplified Macro class to just
1077 subclass list. We've had only 2.2 compatibility for a very long
1085 subclass list. We've had only 2.2 compatibility for a very long
1078 time, yet I was still avoiding subclassing the builtin types. No
1086 time, yet I was still avoiding subclassing the builtin types. No
1079 more (I'm also starting to use properties, though I won't shift to
1087 more (I'm also starting to use properties, though I won't shift to
1080 2.3-specific features quite yet).
1088 2.3-specific features quite yet).
1081 (magic_store): added Ville's patch for lightweight variable
1089 (magic_store): added Ville's patch for lightweight variable
1082 persistence, after a request on the user list by Matt Wilkie
1090 persistence, after a request on the user list by Matt Wilkie
1083 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1091 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1084 details.
1092 details.
1085
1093
1086 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1094 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1087 changed the default logfile name from 'ipython.log' to
1095 changed the default logfile name from 'ipython.log' to
1088 'ipython_log.py'. These logs are real python files, and now that
1096 'ipython_log.py'. These logs are real python files, and now that
1089 we have much better multiline support, people are more likely to
1097 we have much better multiline support, people are more likely to
1090 want to use them as such. Might as well name them correctly.
1098 want to use them as such. Might as well name them correctly.
1091
1099
1092 * IPython/Magic.py: substantial cleanup. While we can't stop
1100 * IPython/Magic.py: substantial cleanup. While we can't stop
1093 using magics as mixins, due to the existing customizations 'out
1101 using magics as mixins, due to the existing customizations 'out
1094 there' which rely on the mixin naming conventions, at least I
1102 there' which rely on the mixin naming conventions, at least I
1095 cleaned out all cross-class name usage. So once we are OK with
1103 cleaned out all cross-class name usage. So once we are OK with
1096 breaking compatibility, the two systems can be separated.
1104 breaking compatibility, the two systems can be separated.
1097
1105
1098 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1106 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1099 anymore, and the class is a fair bit less hideous as well. New
1107 anymore, and the class is a fair bit less hideous as well. New
1100 features were also introduced: timestamping of input, and logging
1108 features were also introduced: timestamping of input, and logging
1101 of output results. These are user-visible with the -t and -o
1109 of output results. These are user-visible with the -t and -o
1102 options to %logstart. Closes
1110 options to %logstart. Closes
1103 http://www.scipy.net/roundup/ipython/issue11 and a request by
1111 http://www.scipy.net/roundup/ipython/issue11 and a request by
1104 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1112 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1105
1113
1106 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1114 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1107
1115
1108 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1116 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1109 better handle backslashes in paths. See the thread 'More Windows
1117 better handle backslashes in paths. See the thread 'More Windows
1110 questions part 2 - \/ characters revisited' on the iypthon user
1118 questions part 2 - \/ characters revisited' on the iypthon user
1111 list:
1119 list:
1112 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1120 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1113
1121
1114 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1122 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1115
1123
1116 (InteractiveShell.__init__): change threaded shells to not use the
1124 (InteractiveShell.__init__): change threaded shells to not use the
1117 ipython crash handler. This was causing more problems than not,
1125 ipython crash handler. This was causing more problems than not,
1118 as exceptions in the main thread (GUI code, typically) would
1126 as exceptions in the main thread (GUI code, typically) would
1119 always show up as a 'crash', when they really weren't.
1127 always show up as a 'crash', when they really weren't.
1120
1128
1121 The colors and exception mode commands (%colors/%xmode) have been
1129 The colors and exception mode commands (%colors/%xmode) have been
1122 synchronized to also take this into account, so users can get
1130 synchronized to also take this into account, so users can get
1123 verbose exceptions for their threaded code as well. I also added
1131 verbose exceptions for their threaded code as well. I also added
1124 support for activating pdb inside this exception handler as well,
1132 support for activating pdb inside this exception handler as well,
1125 so now GUI authors can use IPython's enhanced pdb at runtime.
1133 so now GUI authors can use IPython's enhanced pdb at runtime.
1126
1134
1127 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1135 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1128 true by default, and add it to the shipped ipythonrc file. Since
1136 true by default, and add it to the shipped ipythonrc file. Since
1129 this asks the user before proceeding, I think it's OK to make it
1137 this asks the user before proceeding, I think it's OK to make it
1130 true by default.
1138 true by default.
1131
1139
1132 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1140 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1133 of the previous special-casing of input in the eval loop. I think
1141 of the previous special-casing of input in the eval loop. I think
1134 this is cleaner, as they really are commands and shouldn't have
1142 this is cleaner, as they really are commands and shouldn't have
1135 a special role in the middle of the core code.
1143 a special role in the middle of the core code.
1136
1144
1137 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1145 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1138
1146
1139 * IPython/iplib.py (edit_syntax_error): added support for
1147 * IPython/iplib.py (edit_syntax_error): added support for
1140 automatically reopening the editor if the file had a syntax error
1148 automatically reopening the editor if the file had a syntax error
1141 in it. Thanks to scottt who provided the patch at:
1149 in it. Thanks to scottt who provided the patch at:
1142 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1150 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1143 version committed).
1151 version committed).
1144
1152
1145 * IPython/iplib.py (handle_normal): add suport for multi-line
1153 * IPython/iplib.py (handle_normal): add suport for multi-line
1146 input with emtpy lines. This fixes
1154 input with emtpy lines. This fixes
1147 http://www.scipy.net/roundup/ipython/issue43 and a similar
1155 http://www.scipy.net/roundup/ipython/issue43 and a similar
1148 discussion on the user list.
1156 discussion on the user list.
1149
1157
1150 WARNING: a behavior change is necessarily introduced to support
1158 WARNING: a behavior change is necessarily introduced to support
1151 blank lines: now a single blank line with whitespace does NOT
1159 blank lines: now a single blank line with whitespace does NOT
1152 break the input loop, which means that when autoindent is on, by
1160 break the input loop, which means that when autoindent is on, by
1153 default hitting return on the next (indented) line does NOT exit.
1161 default hitting return on the next (indented) line does NOT exit.
1154
1162
1155 Instead, to exit a multiline input you can either have:
1163 Instead, to exit a multiline input you can either have:
1156
1164
1157 - TWO whitespace lines (just hit return again), or
1165 - TWO whitespace lines (just hit return again), or
1158 - a single whitespace line of a different length than provided
1166 - a single whitespace line of a different length than provided
1159 by the autoindent (add or remove a space).
1167 by the autoindent (add or remove a space).
1160
1168
1161 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1169 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1162 module to better organize all readline-related functionality.
1170 module to better organize all readline-related functionality.
1163 I've deleted FlexCompleter and put all completion clases here.
1171 I've deleted FlexCompleter and put all completion clases here.
1164
1172
1165 * IPython/iplib.py (raw_input): improve indentation management.
1173 * IPython/iplib.py (raw_input): improve indentation management.
1166 It is now possible to paste indented code with autoindent on, and
1174 It is now possible to paste indented code with autoindent on, and
1167 the code is interpreted correctly (though it still looks bad on
1175 the code is interpreted correctly (though it still looks bad on
1168 screen, due to the line-oriented nature of ipython).
1176 screen, due to the line-oriented nature of ipython).
1169 (MagicCompleter.complete): change behavior so that a TAB key on an
1177 (MagicCompleter.complete): change behavior so that a TAB key on an
1170 otherwise empty line actually inserts a tab, instead of completing
1178 otherwise empty line actually inserts a tab, instead of completing
1171 on the entire global namespace. This makes it easier to use the
1179 on the entire global namespace. This makes it easier to use the
1172 TAB key for indentation. After a request by Hans Meine
1180 TAB key for indentation. After a request by Hans Meine
1173 <hans_meine-AT-gmx.net>
1181 <hans_meine-AT-gmx.net>
1174 (_prefilter): add support so that typing plain 'exit' or 'quit'
1182 (_prefilter): add support so that typing plain 'exit' or 'quit'
1175 does a sensible thing. Originally I tried to deviate as little as
1183 does a sensible thing. Originally I tried to deviate as little as
1176 possible from the default python behavior, but even that one may
1184 possible from the default python behavior, but even that one may
1177 change in this direction (thread on python-dev to that effect).
1185 change in this direction (thread on python-dev to that effect).
1178 Regardless, ipython should do the right thing even if CPython's
1186 Regardless, ipython should do the right thing even if CPython's
1179 '>>>' prompt doesn't.
1187 '>>>' prompt doesn't.
1180 (InteractiveShell): removed subclassing code.InteractiveConsole
1188 (InteractiveShell): removed subclassing code.InteractiveConsole
1181 class. By now we'd overridden just about all of its methods: I've
1189 class. By now we'd overridden just about all of its methods: I've
1182 copied the remaining two over, and now ipython is a standalone
1190 copied the remaining two over, and now ipython is a standalone
1183 class. This will provide a clearer picture for the chainsaw
1191 class. This will provide a clearer picture for the chainsaw
1184 branch refactoring.
1192 branch refactoring.
1185
1193
1186 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1194 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1187
1195
1188 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1196 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1189 failures for objects which break when dir() is called on them.
1197 failures for objects which break when dir() is called on them.
1190
1198
1191 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1199 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1192 distinct local and global namespaces in the completer API. This
1200 distinct local and global namespaces in the completer API. This
1193 change allows us to properly handle completion with distinct
1201 change allows us to properly handle completion with distinct
1194 scopes, including in embedded instances (this had never really
1202 scopes, including in embedded instances (this had never really
1195 worked correctly).
1203 worked correctly).
1196
1204
1197 Note: this introduces a change in the constructor for
1205 Note: this introduces a change in the constructor for
1198 MagicCompleter, as a new global_namespace parameter is now the
1206 MagicCompleter, as a new global_namespace parameter is now the
1199 second argument (the others were bumped one position).
1207 second argument (the others were bumped one position).
1200
1208
1201 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1209 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1202
1210
1203 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1211 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1204 embedded instances (which can be done now thanks to Vivian's
1212 embedded instances (which can be done now thanks to Vivian's
1205 frame-handling fixes for pdb).
1213 frame-handling fixes for pdb).
1206 (InteractiveShell.__init__): Fix namespace handling problem in
1214 (InteractiveShell.__init__): Fix namespace handling problem in
1207 embedded instances. We were overwriting __main__ unconditionally,
1215 embedded instances. We were overwriting __main__ unconditionally,
1208 and this should only be done for 'full' (non-embedded) IPython;
1216 and this should only be done for 'full' (non-embedded) IPython;
1209 embedded instances must respect the caller's __main__. Thanks to
1217 embedded instances must respect the caller's __main__. Thanks to
1210 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1218 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1211
1219
1212 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1220 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1213
1221
1214 * setup.py: added download_url to setup(). This registers the
1222 * setup.py: added download_url to setup(). This registers the
1215 download address at PyPI, which is not only useful to humans
1223 download address at PyPI, which is not only useful to humans
1216 browsing the site, but is also picked up by setuptools (the Eggs
1224 browsing the site, but is also picked up by setuptools (the Eggs
1217 machinery). Thanks to Ville and R. Kern for the info/discussion
1225 machinery). Thanks to Ville and R. Kern for the info/discussion
1218 on this.
1226 on this.
1219
1227
1220 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1228 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1221
1229
1222 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1230 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1223 This brings a lot of nice functionality to the pdb mode, which now
1231 This brings a lot of nice functionality to the pdb mode, which now
1224 has tab-completion, syntax highlighting, and better stack handling
1232 has tab-completion, syntax highlighting, and better stack handling
1225 than before. Many thanks to Vivian De Smedt
1233 than before. Many thanks to Vivian De Smedt
1226 <vivian-AT-vdesmedt.com> for the original patches.
1234 <vivian-AT-vdesmedt.com> for the original patches.
1227
1235
1228 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1236 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1229
1237
1230 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1238 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1231 sequence to consistently accept the banner argument. The
1239 sequence to consistently accept the banner argument. The
1232 inconsistency was tripping SAGE, thanks to Gary Zablackis
1240 inconsistency was tripping SAGE, thanks to Gary Zablackis
1233 <gzabl-AT-yahoo.com> for the report.
1241 <gzabl-AT-yahoo.com> for the report.
1234
1242
1235 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1243 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1236
1244
1237 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1245 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1238 Fix bug where a naked 'alias' call in the ipythonrc file would
1246 Fix bug where a naked 'alias' call in the ipythonrc file would
1239 cause a crash. Bug reported by Jorgen Stenarson.
1247 cause a crash. Bug reported by Jorgen Stenarson.
1240
1248
1241 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1249 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1242
1250
1243 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1251 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1244 startup time.
1252 startup time.
1245
1253
1246 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1254 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1247 instances had introduced a bug with globals in normal code. Now
1255 instances had introduced a bug with globals in normal code. Now
1248 it's working in all cases.
1256 it's working in all cases.
1249
1257
1250 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1258 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1251 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1259 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1252 has been introduced to set the default case sensitivity of the
1260 has been introduced to set the default case sensitivity of the
1253 searches. Users can still select either mode at runtime on a
1261 searches. Users can still select either mode at runtime on a
1254 per-search basis.
1262 per-search basis.
1255
1263
1256 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1264 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1257
1265
1258 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1266 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1259 attributes in wildcard searches for subclasses. Modified version
1267 attributes in wildcard searches for subclasses. Modified version
1260 of a patch by Jorgen.
1268 of a patch by Jorgen.
1261
1269
1262 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1270 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1263
1271
1264 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1272 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1265 embedded instances. I added a user_global_ns attribute to the
1273 embedded instances. I added a user_global_ns attribute to the
1266 InteractiveShell class to handle this.
1274 InteractiveShell class to handle this.
1267
1275
1268 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1276 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1269
1277
1270 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1278 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1271 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1279 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1272 (reported under win32, but may happen also in other platforms).
1280 (reported under win32, but may happen also in other platforms).
1273 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1281 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1274
1282
1275 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1283 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1276
1284
1277 * IPython/Magic.py (magic_psearch): new support for wildcard
1285 * IPython/Magic.py (magic_psearch): new support for wildcard
1278 patterns. Now, typing ?a*b will list all names which begin with a
1286 patterns. Now, typing ?a*b will list all names which begin with a
1279 and end in b, for example. The %psearch magic has full
1287 and end in b, for example. The %psearch magic has full
1280 docstrings. Many thanks to JΓΆrgen Stenarson
1288 docstrings. Many thanks to JΓΆrgen Stenarson
1281 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1289 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1282 implementing this functionality.
1290 implementing this functionality.
1283
1291
1284 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1292 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1285
1293
1286 * Manual: fixed long-standing annoyance of double-dashes (as in
1294 * Manual: fixed long-standing annoyance of double-dashes (as in
1287 --prefix=~, for example) being stripped in the HTML version. This
1295 --prefix=~, for example) being stripped in the HTML version. This
1288 is a latex2html bug, but a workaround was provided. Many thanks
1296 is a latex2html bug, but a workaround was provided. Many thanks
1289 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1297 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1290 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1298 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1291 rolling. This seemingly small issue had tripped a number of users
1299 rolling. This seemingly small issue had tripped a number of users
1292 when first installing, so I'm glad to see it gone.
1300 when first installing, so I'm glad to see it gone.
1293
1301
1294 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1302 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1295
1303
1296 * IPython/Extensions/numeric_formats.py: fix missing import,
1304 * IPython/Extensions/numeric_formats.py: fix missing import,
1297 reported by Stephen Walton.
1305 reported by Stephen Walton.
1298
1306
1299 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1307 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1300
1308
1301 * IPython/demo.py: finish demo module, fully documented now.
1309 * IPython/demo.py: finish demo module, fully documented now.
1302
1310
1303 * IPython/genutils.py (file_read): simple little utility to read a
1311 * IPython/genutils.py (file_read): simple little utility to read a
1304 file and ensure it's closed afterwards.
1312 file and ensure it's closed afterwards.
1305
1313
1306 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1314 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1307
1315
1308 * IPython/demo.py (Demo.__init__): added support for individually
1316 * IPython/demo.py (Demo.__init__): added support for individually
1309 tagging blocks for automatic execution.
1317 tagging blocks for automatic execution.
1310
1318
1311 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1319 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1312 syntax-highlighted python sources, requested by John.
1320 syntax-highlighted python sources, requested by John.
1313
1321
1314 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1322 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1315
1323
1316 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1324 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1317 finishing.
1325 finishing.
1318
1326
1319 * IPython/genutils.py (shlex_split): moved from Magic to here,
1327 * IPython/genutils.py (shlex_split): moved from Magic to here,
1320 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1328 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1321
1329
1322 * IPython/demo.py (Demo.__init__): added support for silent
1330 * IPython/demo.py (Demo.__init__): added support for silent
1323 blocks, improved marks as regexps, docstrings written.
1331 blocks, improved marks as regexps, docstrings written.
1324 (Demo.__init__): better docstring, added support for sys.argv.
1332 (Demo.__init__): better docstring, added support for sys.argv.
1325
1333
1326 * IPython/genutils.py (marquee): little utility used by the demo
1334 * IPython/genutils.py (marquee): little utility used by the demo
1327 code, handy in general.
1335 code, handy in general.
1328
1336
1329 * IPython/demo.py (Demo.__init__): new class for interactive
1337 * IPython/demo.py (Demo.__init__): new class for interactive
1330 demos. Not documented yet, I just wrote it in a hurry for
1338 demos. Not documented yet, I just wrote it in a hurry for
1331 scipy'05. Will docstring later.
1339 scipy'05. Will docstring later.
1332
1340
1333 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1341 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1334
1342
1335 * IPython/Shell.py (sigint_handler): Drastic simplification which
1343 * IPython/Shell.py (sigint_handler): Drastic simplification which
1336 also seems to make Ctrl-C work correctly across threads! This is
1344 also seems to make Ctrl-C work correctly across threads! This is
1337 so simple, that I can't beleive I'd missed it before. Needs more
1345 so simple, that I can't beleive I'd missed it before. Needs more
1338 testing, though.
1346 testing, though.
1339 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1347 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1340 like this before...
1348 like this before...
1341
1349
1342 * IPython/genutils.py (get_home_dir): add protection against
1350 * IPython/genutils.py (get_home_dir): add protection against
1343 non-dirs in win32 registry.
1351 non-dirs in win32 registry.
1344
1352
1345 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1353 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1346 bug where dict was mutated while iterating (pysh crash).
1354 bug where dict was mutated while iterating (pysh crash).
1347
1355
1348 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1356 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1349
1357
1350 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1358 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1351 spurious newlines added by this routine. After a report by
1359 spurious newlines added by this routine. After a report by
1352 F. Mantegazza.
1360 F. Mantegazza.
1353
1361
1354 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1362 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1355
1363
1356 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1364 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1357 calls. These were a leftover from the GTK 1.x days, and can cause
1365 calls. These were a leftover from the GTK 1.x days, and can cause
1358 problems in certain cases (after a report by John Hunter).
1366 problems in certain cases (after a report by John Hunter).
1359
1367
1360 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1368 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1361 os.getcwd() fails at init time. Thanks to patch from David Remahl
1369 os.getcwd() fails at init time. Thanks to patch from David Remahl
1362 <chmod007-AT-mac.com>.
1370 <chmod007-AT-mac.com>.
1363 (InteractiveShell.__init__): prevent certain special magics from
1371 (InteractiveShell.__init__): prevent certain special magics from
1364 being shadowed by aliases. Closes
1372 being shadowed by aliases. Closes
1365 http://www.scipy.net/roundup/ipython/issue41.
1373 http://www.scipy.net/roundup/ipython/issue41.
1366
1374
1367 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1375 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1368
1376
1369 * IPython/iplib.py (InteractiveShell.complete): Added new
1377 * IPython/iplib.py (InteractiveShell.complete): Added new
1370 top-level completion method to expose the completion mechanism
1378 top-level completion method to expose the completion mechanism
1371 beyond readline-based environments.
1379 beyond readline-based environments.
1372
1380
1373 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1381 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1374
1382
1375 * tools/ipsvnc (svnversion): fix svnversion capture.
1383 * tools/ipsvnc (svnversion): fix svnversion capture.
1376
1384
1377 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1385 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1378 attribute to self, which was missing. Before, it was set by a
1386 attribute to self, which was missing. Before, it was set by a
1379 routine which in certain cases wasn't being called, so the
1387 routine which in certain cases wasn't being called, so the
1380 instance could end up missing the attribute. This caused a crash.
1388 instance could end up missing the attribute. This caused a crash.
1381 Closes http://www.scipy.net/roundup/ipython/issue40.
1389 Closes http://www.scipy.net/roundup/ipython/issue40.
1382
1390
1383 2005-08-16 Fernando Perez <fperez@colorado.edu>
1391 2005-08-16 Fernando Perez <fperez@colorado.edu>
1384
1392
1385 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1393 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1386 contains non-string attribute. Closes
1394 contains non-string attribute. Closes
1387 http://www.scipy.net/roundup/ipython/issue38.
1395 http://www.scipy.net/roundup/ipython/issue38.
1388
1396
1389 2005-08-14 Fernando Perez <fperez@colorado.edu>
1397 2005-08-14 Fernando Perez <fperez@colorado.edu>
1390
1398
1391 * tools/ipsvnc: Minor improvements, to add changeset info.
1399 * tools/ipsvnc: Minor improvements, to add changeset info.
1392
1400
1393 2005-08-12 Fernando Perez <fperez@colorado.edu>
1401 2005-08-12 Fernando Perez <fperez@colorado.edu>
1394
1402
1395 * IPython/iplib.py (runsource): remove self.code_to_run_src
1403 * IPython/iplib.py (runsource): remove self.code_to_run_src
1396 attribute. I realized this is nothing more than
1404 attribute. I realized this is nothing more than
1397 '\n'.join(self.buffer), and having the same data in two different
1405 '\n'.join(self.buffer), and having the same data in two different
1398 places is just asking for synchronization bugs. This may impact
1406 places is just asking for synchronization bugs. This may impact
1399 people who have custom exception handlers, so I need to warn
1407 people who have custom exception handlers, so I need to warn
1400 ipython-dev about it (F. Mantegazza may use them).
1408 ipython-dev about it (F. Mantegazza may use them).
1401
1409
1402 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1410 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1403
1411
1404 * IPython/genutils.py: fix 2.2 compatibility (generators)
1412 * IPython/genutils.py: fix 2.2 compatibility (generators)
1405
1413
1406 2005-07-18 Fernando Perez <fperez@colorado.edu>
1414 2005-07-18 Fernando Perez <fperez@colorado.edu>
1407
1415
1408 * IPython/genutils.py (get_home_dir): fix to help users with
1416 * IPython/genutils.py (get_home_dir): fix to help users with
1409 invalid $HOME under win32.
1417 invalid $HOME under win32.
1410
1418
1411 2005-07-17 Fernando Perez <fperez@colorado.edu>
1419 2005-07-17 Fernando Perez <fperez@colorado.edu>
1412
1420
1413 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1421 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1414 some old hacks and clean up a bit other routines; code should be
1422 some old hacks and clean up a bit other routines; code should be
1415 simpler and a bit faster.
1423 simpler and a bit faster.
1416
1424
1417 * IPython/iplib.py (interact): removed some last-resort attempts
1425 * IPython/iplib.py (interact): removed some last-resort attempts
1418 to survive broken stdout/stderr. That code was only making it
1426 to survive broken stdout/stderr. That code was only making it
1419 harder to abstract out the i/o (necessary for gui integration),
1427 harder to abstract out the i/o (necessary for gui integration),
1420 and the crashes it could prevent were extremely rare in practice
1428 and the crashes it could prevent were extremely rare in practice
1421 (besides being fully user-induced in a pretty violent manner).
1429 (besides being fully user-induced in a pretty violent manner).
1422
1430
1423 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1431 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1424 Nothing major yet, but the code is simpler to read; this should
1432 Nothing major yet, but the code is simpler to read; this should
1425 make it easier to do more serious modifications in the future.
1433 make it easier to do more serious modifications in the future.
1426
1434
1427 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1435 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1428 which broke in .15 (thanks to a report by Ville).
1436 which broke in .15 (thanks to a report by Ville).
1429
1437
1430 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1438 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1431 be quite correct, I know next to nothing about unicode). This
1439 be quite correct, I know next to nothing about unicode). This
1432 will allow unicode strings to be used in prompts, amongst other
1440 will allow unicode strings to be used in prompts, amongst other
1433 cases. It also will prevent ipython from crashing when unicode
1441 cases. It also will prevent ipython from crashing when unicode
1434 shows up unexpectedly in many places. If ascii encoding fails, we
1442 shows up unexpectedly in many places. If ascii encoding fails, we
1435 assume utf_8. Currently the encoding is not a user-visible
1443 assume utf_8. Currently the encoding is not a user-visible
1436 setting, though it could be made so if there is demand for it.
1444 setting, though it could be made so if there is demand for it.
1437
1445
1438 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1446 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1439
1447
1440 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1448 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1441
1449
1442 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1450 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1443
1451
1444 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1452 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1445 code can work transparently for 2.2/2.3.
1453 code can work transparently for 2.2/2.3.
1446
1454
1447 2005-07-16 Fernando Perez <fperez@colorado.edu>
1455 2005-07-16 Fernando Perez <fperez@colorado.edu>
1448
1456
1449 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1457 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1450 out of the color scheme table used for coloring exception
1458 out of the color scheme table used for coloring exception
1451 tracebacks. This allows user code to add new schemes at runtime.
1459 tracebacks. This allows user code to add new schemes at runtime.
1452 This is a minimally modified version of the patch at
1460 This is a minimally modified version of the patch at
1453 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1461 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1454 for the contribution.
1462 for the contribution.
1455
1463
1456 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1464 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1457 slightly modified version of the patch in
1465 slightly modified version of the patch in
1458 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1466 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1459 to remove the previous try/except solution (which was costlier).
1467 to remove the previous try/except solution (which was costlier).
1460 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1468 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1461
1469
1462 2005-06-08 Fernando Perez <fperez@colorado.edu>
1470 2005-06-08 Fernando Perez <fperez@colorado.edu>
1463
1471
1464 * IPython/iplib.py (write/write_err): Add methods to abstract all
1472 * IPython/iplib.py (write/write_err): Add methods to abstract all
1465 I/O a bit more.
1473 I/O a bit more.
1466
1474
1467 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1475 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1468 warning, reported by Aric Hagberg, fix by JD Hunter.
1476 warning, reported by Aric Hagberg, fix by JD Hunter.
1469
1477
1470 2005-06-02 *** Released version 0.6.15
1478 2005-06-02 *** Released version 0.6.15
1471
1479
1472 2005-06-01 Fernando Perez <fperez@colorado.edu>
1480 2005-06-01 Fernando Perez <fperez@colorado.edu>
1473
1481
1474 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1482 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1475 tab-completion of filenames within open-quoted strings. Note that
1483 tab-completion of filenames within open-quoted strings. Note that
1476 this requires that in ~/.ipython/ipythonrc, users change the
1484 this requires that in ~/.ipython/ipythonrc, users change the
1477 readline delimiters configuration to read:
1485 readline delimiters configuration to read:
1478
1486
1479 readline_remove_delims -/~
1487 readline_remove_delims -/~
1480
1488
1481
1489
1482 2005-05-31 *** Released version 0.6.14
1490 2005-05-31 *** Released version 0.6.14
1483
1491
1484 2005-05-29 Fernando Perez <fperez@colorado.edu>
1492 2005-05-29 Fernando Perez <fperez@colorado.edu>
1485
1493
1486 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1494 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1487 with files not on the filesystem. Reported by Eliyahu Sandler
1495 with files not on the filesystem. Reported by Eliyahu Sandler
1488 <eli@gondolin.net>
1496 <eli@gondolin.net>
1489
1497
1490 2005-05-22 Fernando Perez <fperez@colorado.edu>
1498 2005-05-22 Fernando Perez <fperez@colorado.edu>
1491
1499
1492 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1500 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1493 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1501 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1494
1502
1495 2005-05-19 Fernando Perez <fperez@colorado.edu>
1503 2005-05-19 Fernando Perez <fperez@colorado.edu>
1496
1504
1497 * IPython/iplib.py (safe_execfile): close a file which could be
1505 * IPython/iplib.py (safe_execfile): close a file which could be
1498 left open (causing problems in win32, which locks open files).
1506 left open (causing problems in win32, which locks open files).
1499 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1507 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1500
1508
1501 2005-05-18 Fernando Perez <fperez@colorado.edu>
1509 2005-05-18 Fernando Perez <fperez@colorado.edu>
1502
1510
1503 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1511 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1504 keyword arguments correctly to safe_execfile().
1512 keyword arguments correctly to safe_execfile().
1505
1513
1506 2005-05-13 Fernando Perez <fperez@colorado.edu>
1514 2005-05-13 Fernando Perez <fperez@colorado.edu>
1507
1515
1508 * ipython.1: Added info about Qt to manpage, and threads warning
1516 * ipython.1: Added info about Qt to manpage, and threads warning
1509 to usage page (invoked with --help).
1517 to usage page (invoked with --help).
1510
1518
1511 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1519 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1512 new matcher (it goes at the end of the priority list) to do
1520 new matcher (it goes at the end of the priority list) to do
1513 tab-completion on named function arguments. Submitted by George
1521 tab-completion on named function arguments. Submitted by George
1514 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1522 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1515 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1523 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1516 for more details.
1524 for more details.
1517
1525
1518 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1526 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1519 SystemExit exceptions in the script being run. Thanks to a report
1527 SystemExit exceptions in the script being run. Thanks to a report
1520 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1528 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1521 producing very annoying behavior when running unit tests.
1529 producing very annoying behavior when running unit tests.
1522
1530
1523 2005-05-12 Fernando Perez <fperez@colorado.edu>
1531 2005-05-12 Fernando Perez <fperez@colorado.edu>
1524
1532
1525 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1533 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1526 which I'd broken (again) due to a changed regexp. In the process,
1534 which I'd broken (again) due to a changed regexp. In the process,
1527 added ';' as an escape to auto-quote the whole line without
1535 added ';' as an escape to auto-quote the whole line without
1528 splitting its arguments. Thanks to a report by Jerry McRae
1536 splitting its arguments. Thanks to a report by Jerry McRae
1529 <qrs0xyc02-AT-sneakemail.com>.
1537 <qrs0xyc02-AT-sneakemail.com>.
1530
1538
1531 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1539 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1532 possible crashes caused by a TokenError. Reported by Ed Schofield
1540 possible crashes caused by a TokenError. Reported by Ed Schofield
1533 <schofield-AT-ftw.at>.
1541 <schofield-AT-ftw.at>.
1534
1542
1535 2005-05-06 Fernando Perez <fperez@colorado.edu>
1543 2005-05-06 Fernando Perez <fperez@colorado.edu>
1536
1544
1537 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1545 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1538
1546
1539 2005-04-29 Fernando Perez <fperez@colorado.edu>
1547 2005-04-29 Fernando Perez <fperez@colorado.edu>
1540
1548
1541 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1549 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1542 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1550 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1543 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1551 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1544 which provides support for Qt interactive usage (similar to the
1552 which provides support for Qt interactive usage (similar to the
1545 existing one for WX and GTK). This had been often requested.
1553 existing one for WX and GTK). This had been often requested.
1546
1554
1547 2005-04-14 *** Released version 0.6.13
1555 2005-04-14 *** Released version 0.6.13
1548
1556
1549 2005-04-08 Fernando Perez <fperez@colorado.edu>
1557 2005-04-08 Fernando Perez <fperez@colorado.edu>
1550
1558
1551 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1559 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1552 from _ofind, which gets called on almost every input line. Now,
1560 from _ofind, which gets called on almost every input line. Now,
1553 we only try to get docstrings if they are actually going to be
1561 we only try to get docstrings if they are actually going to be
1554 used (the overhead of fetching unnecessary docstrings can be
1562 used (the overhead of fetching unnecessary docstrings can be
1555 noticeable for certain objects, such as Pyro proxies).
1563 noticeable for certain objects, such as Pyro proxies).
1556
1564
1557 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1565 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1558 for completers. For some reason I had been passing them the state
1566 for completers. For some reason I had been passing them the state
1559 variable, which completers never actually need, and was in
1567 variable, which completers never actually need, and was in
1560 conflict with the rlcompleter API. Custom completers ONLY need to
1568 conflict with the rlcompleter API. Custom completers ONLY need to
1561 take the text parameter.
1569 take the text parameter.
1562
1570
1563 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1571 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1564 work correctly in pysh. I've also moved all the logic which used
1572 work correctly in pysh. I've also moved all the logic which used
1565 to be in pysh.py here, which will prevent problems with future
1573 to be in pysh.py here, which will prevent problems with future
1566 upgrades. However, this time I must warn users to update their
1574 upgrades. However, this time I must warn users to update their
1567 pysh profile to include the line
1575 pysh profile to include the line
1568
1576
1569 import_all IPython.Extensions.InterpreterExec
1577 import_all IPython.Extensions.InterpreterExec
1570
1578
1571 because otherwise things won't work for them. They MUST also
1579 because otherwise things won't work for them. They MUST also
1572 delete pysh.py and the line
1580 delete pysh.py and the line
1573
1581
1574 execfile pysh.py
1582 execfile pysh.py
1575
1583
1576 from their ipythonrc-pysh.
1584 from their ipythonrc-pysh.
1577
1585
1578 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1586 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1579 robust in the face of objects whose dir() returns non-strings
1587 robust in the face of objects whose dir() returns non-strings
1580 (which it shouldn't, but some broken libs like ITK do). Thanks to
1588 (which it shouldn't, but some broken libs like ITK do). Thanks to
1581 a patch by John Hunter (implemented differently, though). Also
1589 a patch by John Hunter (implemented differently, though). Also
1582 minor improvements by using .extend instead of + on lists.
1590 minor improvements by using .extend instead of + on lists.
1583
1591
1584 * pysh.py:
1592 * pysh.py:
1585
1593
1586 2005-04-06 Fernando Perez <fperez@colorado.edu>
1594 2005-04-06 Fernando Perez <fperez@colorado.edu>
1587
1595
1588 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1596 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1589 by default, so that all users benefit from it. Those who don't
1597 by default, so that all users benefit from it. Those who don't
1590 want it can still turn it off.
1598 want it can still turn it off.
1591
1599
1592 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1600 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1593 config file, I'd forgotten about this, so users were getting it
1601 config file, I'd forgotten about this, so users were getting it
1594 off by default.
1602 off by default.
1595
1603
1596 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1604 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1597 consistency. Now magics can be called in multiline statements,
1605 consistency. Now magics can be called in multiline statements,
1598 and python variables can be expanded in magic calls via $var.
1606 and python variables can be expanded in magic calls via $var.
1599 This makes the magic system behave just like aliases or !system
1607 This makes the magic system behave just like aliases or !system
1600 calls.
1608 calls.
1601
1609
1602 2005-03-28 Fernando Perez <fperez@colorado.edu>
1610 2005-03-28 Fernando Perez <fperez@colorado.edu>
1603
1611
1604 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1612 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1605 expensive string additions for building command. Add support for
1613 expensive string additions for building command. Add support for
1606 trailing ';' when autocall is used.
1614 trailing ';' when autocall is used.
1607
1615
1608 2005-03-26 Fernando Perez <fperez@colorado.edu>
1616 2005-03-26 Fernando Perez <fperez@colorado.edu>
1609
1617
1610 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1618 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1611 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1619 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1612 ipython.el robust against prompts with any number of spaces
1620 ipython.el robust against prompts with any number of spaces
1613 (including 0) after the ':' character.
1621 (including 0) after the ':' character.
1614
1622
1615 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1623 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1616 continuation prompt, which misled users to think the line was
1624 continuation prompt, which misled users to think the line was
1617 already indented. Closes debian Bug#300847, reported to me by
1625 already indented. Closes debian Bug#300847, reported to me by
1618 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1626 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1619
1627
1620 2005-03-23 Fernando Perez <fperez@colorado.edu>
1628 2005-03-23 Fernando Perez <fperez@colorado.edu>
1621
1629
1622 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1630 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1623 properly aligned if they have embedded newlines.
1631 properly aligned if they have embedded newlines.
1624
1632
1625 * IPython/iplib.py (runlines): Add a public method to expose
1633 * IPython/iplib.py (runlines): Add a public method to expose
1626 IPython's code execution machinery, so that users can run strings
1634 IPython's code execution machinery, so that users can run strings
1627 as if they had been typed at the prompt interactively.
1635 as if they had been typed at the prompt interactively.
1628 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1636 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1629 methods which can call the system shell, but with python variable
1637 methods which can call the system shell, but with python variable
1630 expansion. The three such methods are: __IPYTHON__.system,
1638 expansion. The three such methods are: __IPYTHON__.system,
1631 .getoutput and .getoutputerror. These need to be documented in a
1639 .getoutput and .getoutputerror. These need to be documented in a
1632 'public API' section (to be written) of the manual.
1640 'public API' section (to be written) of the manual.
1633
1641
1634 2005-03-20 Fernando Perez <fperez@colorado.edu>
1642 2005-03-20 Fernando Perez <fperez@colorado.edu>
1635
1643
1636 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1644 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1637 for custom exception handling. This is quite powerful, and it
1645 for custom exception handling. This is quite powerful, and it
1638 allows for user-installable exception handlers which can trap
1646 allows for user-installable exception handlers which can trap
1639 custom exceptions at runtime and treat them separately from
1647 custom exceptions at runtime and treat them separately from
1640 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1648 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1641 Mantegazza <mantegazza-AT-ill.fr>.
1649 Mantegazza <mantegazza-AT-ill.fr>.
1642 (InteractiveShell.set_custom_completer): public API function to
1650 (InteractiveShell.set_custom_completer): public API function to
1643 add new completers at runtime.
1651 add new completers at runtime.
1644
1652
1645 2005-03-19 Fernando Perez <fperez@colorado.edu>
1653 2005-03-19 Fernando Perez <fperez@colorado.edu>
1646
1654
1647 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1655 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1648 allow objects which provide their docstrings via non-standard
1656 allow objects which provide their docstrings via non-standard
1649 mechanisms (like Pyro proxies) to still be inspected by ipython's
1657 mechanisms (like Pyro proxies) to still be inspected by ipython's
1650 ? system.
1658 ? system.
1651
1659
1652 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1660 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1653 automatic capture system. I tried quite hard to make it work
1661 automatic capture system. I tried quite hard to make it work
1654 reliably, and simply failed. I tried many combinations with the
1662 reliably, and simply failed. I tried many combinations with the
1655 subprocess module, but eventually nothing worked in all needed
1663 subprocess module, but eventually nothing worked in all needed
1656 cases (not blocking stdin for the child, duplicating stdout
1664 cases (not blocking stdin for the child, duplicating stdout
1657 without blocking, etc). The new %sc/%sx still do capture to these
1665 without blocking, etc). The new %sc/%sx still do capture to these
1658 magical list/string objects which make shell use much more
1666 magical list/string objects which make shell use much more
1659 conveninent, so not all is lost.
1667 conveninent, so not all is lost.
1660
1668
1661 XXX - FIX MANUAL for the change above!
1669 XXX - FIX MANUAL for the change above!
1662
1670
1663 (runsource): I copied code.py's runsource() into ipython to modify
1671 (runsource): I copied code.py's runsource() into ipython to modify
1664 it a bit. Now the code object and source to be executed are
1672 it a bit. Now the code object and source to be executed are
1665 stored in ipython. This makes this info accessible to third-party
1673 stored in ipython. This makes this info accessible to third-party
1666 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1674 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1667 Mantegazza <mantegazza-AT-ill.fr>.
1675 Mantegazza <mantegazza-AT-ill.fr>.
1668
1676
1669 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1677 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1670 history-search via readline (like C-p/C-n). I'd wanted this for a
1678 history-search via readline (like C-p/C-n). I'd wanted this for a
1671 long time, but only recently found out how to do it. For users
1679 long time, but only recently found out how to do it. For users
1672 who already have their ipythonrc files made and want this, just
1680 who already have their ipythonrc files made and want this, just
1673 add:
1681 add:
1674
1682
1675 readline_parse_and_bind "\e[A": history-search-backward
1683 readline_parse_and_bind "\e[A": history-search-backward
1676 readline_parse_and_bind "\e[B": history-search-forward
1684 readline_parse_and_bind "\e[B": history-search-forward
1677
1685
1678 2005-03-18 Fernando Perez <fperez@colorado.edu>
1686 2005-03-18 Fernando Perez <fperez@colorado.edu>
1679
1687
1680 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1688 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1681 LSString and SList classes which allow transparent conversions
1689 LSString and SList classes which allow transparent conversions
1682 between list mode and whitespace-separated string.
1690 between list mode and whitespace-separated string.
1683 (magic_r): Fix recursion problem in %r.
1691 (magic_r): Fix recursion problem in %r.
1684
1692
1685 * IPython/genutils.py (LSString): New class to be used for
1693 * IPython/genutils.py (LSString): New class to be used for
1686 automatic storage of the results of all alias/system calls in _o
1694 automatic storage of the results of all alias/system calls in _o
1687 and _e (stdout/err). These provide a .l/.list attribute which
1695 and _e (stdout/err). These provide a .l/.list attribute which
1688 does automatic splitting on newlines. This means that for most
1696 does automatic splitting on newlines. This means that for most
1689 uses, you'll never need to do capturing of output with %sc/%sx
1697 uses, you'll never need to do capturing of output with %sc/%sx
1690 anymore, since ipython keeps this always done for you. Note that
1698 anymore, since ipython keeps this always done for you. Note that
1691 only the LAST results are stored, the _o/e variables are
1699 only the LAST results are stored, the _o/e variables are
1692 overwritten on each call. If you need to save their contents
1700 overwritten on each call. If you need to save their contents
1693 further, simply bind them to any other name.
1701 further, simply bind them to any other name.
1694
1702
1695 2005-03-17 Fernando Perez <fperez@colorado.edu>
1703 2005-03-17 Fernando Perez <fperez@colorado.edu>
1696
1704
1697 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1705 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1698 prompt namespace handling.
1706 prompt namespace handling.
1699
1707
1700 2005-03-16 Fernando Perez <fperez@colorado.edu>
1708 2005-03-16 Fernando Perez <fperez@colorado.edu>
1701
1709
1702 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1710 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1703 classic prompts to be '>>> ' (final space was missing, and it
1711 classic prompts to be '>>> ' (final space was missing, and it
1704 trips the emacs python mode).
1712 trips the emacs python mode).
1705 (BasePrompt.__str__): Added safe support for dynamic prompt
1713 (BasePrompt.__str__): Added safe support for dynamic prompt
1706 strings. Now you can set your prompt string to be '$x', and the
1714 strings. Now you can set your prompt string to be '$x', and the
1707 value of x will be printed from your interactive namespace. The
1715 value of x will be printed from your interactive namespace. The
1708 interpolation syntax includes the full Itpl support, so
1716 interpolation syntax includes the full Itpl support, so
1709 ${foo()+x+bar()} is a valid prompt string now, and the function
1717 ${foo()+x+bar()} is a valid prompt string now, and the function
1710 calls will be made at runtime.
1718 calls will be made at runtime.
1711
1719
1712 2005-03-15 Fernando Perez <fperez@colorado.edu>
1720 2005-03-15 Fernando Perez <fperez@colorado.edu>
1713
1721
1714 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1722 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1715 avoid name clashes in pylab. %hist still works, it just forwards
1723 avoid name clashes in pylab. %hist still works, it just forwards
1716 the call to %history.
1724 the call to %history.
1717
1725
1718 2005-03-02 *** Released version 0.6.12
1726 2005-03-02 *** Released version 0.6.12
1719
1727
1720 2005-03-02 Fernando Perez <fperez@colorado.edu>
1728 2005-03-02 Fernando Perez <fperez@colorado.edu>
1721
1729
1722 * IPython/iplib.py (handle_magic): log magic calls properly as
1730 * IPython/iplib.py (handle_magic): log magic calls properly as
1723 ipmagic() function calls.
1731 ipmagic() function calls.
1724
1732
1725 * IPython/Magic.py (magic_time): Improved %time to support
1733 * IPython/Magic.py (magic_time): Improved %time to support
1726 statements and provide wall-clock as well as CPU time.
1734 statements and provide wall-clock as well as CPU time.
1727
1735
1728 2005-02-27 Fernando Perez <fperez@colorado.edu>
1736 2005-02-27 Fernando Perez <fperez@colorado.edu>
1729
1737
1730 * IPython/hooks.py: New hooks module, to expose user-modifiable
1738 * IPython/hooks.py: New hooks module, to expose user-modifiable
1731 IPython functionality in a clean manner. For now only the editor
1739 IPython functionality in a clean manner. For now only the editor
1732 hook is actually written, and other thigns which I intend to turn
1740 hook is actually written, and other thigns which I intend to turn
1733 into proper hooks aren't yet there. The display and prefilter
1741 into proper hooks aren't yet there. The display and prefilter
1734 stuff, for example, should be hooks. But at least now the
1742 stuff, for example, should be hooks. But at least now the
1735 framework is in place, and the rest can be moved here with more
1743 framework is in place, and the rest can be moved here with more
1736 time later. IPython had had a .hooks variable for a long time for
1744 time later. IPython had had a .hooks variable for a long time for
1737 this purpose, but I'd never actually used it for anything.
1745 this purpose, but I'd never actually used it for anything.
1738
1746
1739 2005-02-26 Fernando Perez <fperez@colorado.edu>
1747 2005-02-26 Fernando Perez <fperez@colorado.edu>
1740
1748
1741 * IPython/ipmaker.py (make_IPython): make the default ipython
1749 * IPython/ipmaker.py (make_IPython): make the default ipython
1742 directory be called _ipython under win32, to follow more the
1750 directory be called _ipython under win32, to follow more the
1743 naming peculiarities of that platform (where buggy software like
1751 naming peculiarities of that platform (where buggy software like
1744 Visual Sourcesafe breaks with .named directories). Reported by
1752 Visual Sourcesafe breaks with .named directories). Reported by
1745 Ville Vainio.
1753 Ville Vainio.
1746
1754
1747 2005-02-23 Fernando Perez <fperez@colorado.edu>
1755 2005-02-23 Fernando Perez <fperez@colorado.edu>
1748
1756
1749 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1757 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1750 auto_aliases for win32 which were causing problems. Users can
1758 auto_aliases for win32 which were causing problems. Users can
1751 define the ones they personally like.
1759 define the ones they personally like.
1752
1760
1753 2005-02-21 Fernando Perez <fperez@colorado.edu>
1761 2005-02-21 Fernando Perez <fperez@colorado.edu>
1754
1762
1755 * IPython/Magic.py (magic_time): new magic to time execution of
1763 * IPython/Magic.py (magic_time): new magic to time execution of
1756 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1764 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1757
1765
1758 2005-02-19 Fernando Perez <fperez@colorado.edu>
1766 2005-02-19 Fernando Perez <fperez@colorado.edu>
1759
1767
1760 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1768 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1761 into keys (for prompts, for example).
1769 into keys (for prompts, for example).
1762
1770
1763 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1771 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1764 prompts in case users want them. This introduces a small behavior
1772 prompts in case users want them. This introduces a small behavior
1765 change: ipython does not automatically add a space to all prompts
1773 change: ipython does not automatically add a space to all prompts
1766 anymore. To get the old prompts with a space, users should add it
1774 anymore. To get the old prompts with a space, users should add it
1767 manually to their ipythonrc file, so for example prompt_in1 should
1775 manually to their ipythonrc file, so for example prompt_in1 should
1768 now read 'In [\#]: ' instead of 'In [\#]:'.
1776 now read 'In [\#]: ' instead of 'In [\#]:'.
1769 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1777 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1770 file) to control left-padding of secondary prompts.
1778 file) to control left-padding of secondary prompts.
1771
1779
1772 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1780 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1773 the profiler can't be imported. Fix for Debian, which removed
1781 the profiler can't be imported. Fix for Debian, which removed
1774 profile.py because of License issues. I applied a slightly
1782 profile.py because of License issues. I applied a slightly
1775 modified version of the original Debian patch at
1783 modified version of the original Debian patch at
1776 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1784 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1777
1785
1778 2005-02-17 Fernando Perez <fperez@colorado.edu>
1786 2005-02-17 Fernando Perez <fperez@colorado.edu>
1779
1787
1780 * IPython/genutils.py (native_line_ends): Fix bug which would
1788 * IPython/genutils.py (native_line_ends): Fix bug which would
1781 cause improper line-ends under win32 b/c I was not opening files
1789 cause improper line-ends under win32 b/c I was not opening files
1782 in binary mode. Bug report and fix thanks to Ville.
1790 in binary mode. Bug report and fix thanks to Ville.
1783
1791
1784 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1792 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1785 trying to catch spurious foo[1] autocalls. My fix actually broke
1793 trying to catch spurious foo[1] autocalls. My fix actually broke
1786 ',/' autoquote/call with explicit escape (bad regexp).
1794 ',/' autoquote/call with explicit escape (bad regexp).
1787
1795
1788 2005-02-15 *** Released version 0.6.11
1796 2005-02-15 *** Released version 0.6.11
1789
1797
1790 2005-02-14 Fernando Perez <fperez@colorado.edu>
1798 2005-02-14 Fernando Perez <fperez@colorado.edu>
1791
1799
1792 * IPython/background_jobs.py: New background job management
1800 * IPython/background_jobs.py: New background job management
1793 subsystem. This is implemented via a new set of classes, and
1801 subsystem. This is implemented via a new set of classes, and
1794 IPython now provides a builtin 'jobs' object for background job
1802 IPython now provides a builtin 'jobs' object for background job
1795 execution. A convenience %bg magic serves as a lightweight
1803 execution. A convenience %bg magic serves as a lightweight
1796 frontend for starting the more common type of calls. This was
1804 frontend for starting the more common type of calls. This was
1797 inspired by discussions with B. Granger and the BackgroundCommand
1805 inspired by discussions with B. Granger and the BackgroundCommand
1798 class described in the book Python Scripting for Computational
1806 class described in the book Python Scripting for Computational
1799 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1807 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1800 (although ultimately no code from this text was used, as IPython's
1808 (although ultimately no code from this text was used, as IPython's
1801 system is a separate implementation).
1809 system is a separate implementation).
1802
1810
1803 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1811 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1804 to control the completion of single/double underscore names
1812 to control the completion of single/double underscore names
1805 separately. As documented in the example ipytonrc file, the
1813 separately. As documented in the example ipytonrc file, the
1806 readline_omit__names variable can now be set to 2, to omit even
1814 readline_omit__names variable can now be set to 2, to omit even
1807 single underscore names. Thanks to a patch by Brian Wong
1815 single underscore names. Thanks to a patch by Brian Wong
1808 <BrianWong-AT-AirgoNetworks.Com>.
1816 <BrianWong-AT-AirgoNetworks.Com>.
1809 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1817 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1810 be autocalled as foo([1]) if foo were callable. A problem for
1818 be autocalled as foo([1]) if foo were callable. A problem for
1811 things which are both callable and implement __getitem__.
1819 things which are both callable and implement __getitem__.
1812 (init_readline): Fix autoindentation for win32. Thanks to a patch
1820 (init_readline): Fix autoindentation for win32. Thanks to a patch
1813 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1821 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1814
1822
1815 2005-02-12 Fernando Perez <fperez@colorado.edu>
1823 2005-02-12 Fernando Perez <fperez@colorado.edu>
1816
1824
1817 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1825 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1818 which I had written long ago to sort out user error messages which
1826 which I had written long ago to sort out user error messages which
1819 may occur during startup. This seemed like a good idea initially,
1827 may occur during startup. This seemed like a good idea initially,
1820 but it has proven a disaster in retrospect. I don't want to
1828 but it has proven a disaster in retrospect. I don't want to
1821 change much code for now, so my fix is to set the internal 'debug'
1829 change much code for now, so my fix is to set the internal 'debug'
1822 flag to true everywhere, whose only job was precisely to control
1830 flag to true everywhere, whose only job was precisely to control
1823 this subsystem. This closes issue 28 (as well as avoiding all
1831 this subsystem. This closes issue 28 (as well as avoiding all
1824 sorts of strange hangups which occur from time to time).
1832 sorts of strange hangups which occur from time to time).
1825
1833
1826 2005-02-07 Fernando Perez <fperez@colorado.edu>
1834 2005-02-07 Fernando Perez <fperez@colorado.edu>
1827
1835
1828 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1836 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1829 previous call produced a syntax error.
1837 previous call produced a syntax error.
1830
1838
1831 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1839 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1832 classes without constructor.
1840 classes without constructor.
1833
1841
1834 2005-02-06 Fernando Perez <fperez@colorado.edu>
1842 2005-02-06 Fernando Perez <fperez@colorado.edu>
1835
1843
1836 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1844 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1837 completions with the results of each matcher, so we return results
1845 completions with the results of each matcher, so we return results
1838 to the user from all namespaces. This breaks with ipython
1846 to the user from all namespaces. This breaks with ipython
1839 tradition, but I think it's a nicer behavior. Now you get all
1847 tradition, but I think it's a nicer behavior. Now you get all
1840 possible completions listed, from all possible namespaces (python,
1848 possible completions listed, from all possible namespaces (python,
1841 filesystem, magics...) After a request by John Hunter
1849 filesystem, magics...) After a request by John Hunter
1842 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1850 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1843
1851
1844 2005-02-05 Fernando Perez <fperez@colorado.edu>
1852 2005-02-05 Fernando Perez <fperez@colorado.edu>
1845
1853
1846 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1854 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1847 the call had quote characters in it (the quotes were stripped).
1855 the call had quote characters in it (the quotes were stripped).
1848
1856
1849 2005-01-31 Fernando Perez <fperez@colorado.edu>
1857 2005-01-31 Fernando Perez <fperez@colorado.edu>
1850
1858
1851 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1859 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1852 Itpl.itpl() to make the code more robust against psyco
1860 Itpl.itpl() to make the code more robust against psyco
1853 optimizations.
1861 optimizations.
1854
1862
1855 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1863 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1856 of causing an exception. Quicker, cleaner.
1864 of causing an exception. Quicker, cleaner.
1857
1865
1858 2005-01-28 Fernando Perez <fperez@colorado.edu>
1866 2005-01-28 Fernando Perez <fperez@colorado.edu>
1859
1867
1860 * scripts/ipython_win_post_install.py (install): hardcode
1868 * scripts/ipython_win_post_install.py (install): hardcode
1861 sys.prefix+'python.exe' as the executable path. It turns out that
1869 sys.prefix+'python.exe' as the executable path. It turns out that
1862 during the post-installation run, sys.executable resolves to the
1870 during the post-installation run, sys.executable resolves to the
1863 name of the binary installer! I should report this as a distutils
1871 name of the binary installer! I should report this as a distutils
1864 bug, I think. I updated the .10 release with this tiny fix, to
1872 bug, I think. I updated the .10 release with this tiny fix, to
1865 avoid annoying the lists further.
1873 avoid annoying the lists further.
1866
1874
1867 2005-01-27 *** Released version 0.6.10
1875 2005-01-27 *** Released version 0.6.10
1868
1876
1869 2005-01-27 Fernando Perez <fperez@colorado.edu>
1877 2005-01-27 Fernando Perez <fperez@colorado.edu>
1870
1878
1871 * IPython/numutils.py (norm): Added 'inf' as optional name for
1879 * IPython/numutils.py (norm): Added 'inf' as optional name for
1872 L-infinity norm, included references to mathworld.com for vector
1880 L-infinity norm, included references to mathworld.com for vector
1873 norm definitions.
1881 norm definitions.
1874 (amin/amax): added amin/amax for array min/max. Similar to what
1882 (amin/amax): added amin/amax for array min/max. Similar to what
1875 pylab ships with after the recent reorganization of names.
1883 pylab ships with after the recent reorganization of names.
1876 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1884 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1877
1885
1878 * ipython.el: committed Alex's recent fixes and improvements.
1886 * ipython.el: committed Alex's recent fixes and improvements.
1879 Tested with python-mode from CVS, and it looks excellent. Since
1887 Tested with python-mode from CVS, and it looks excellent. Since
1880 python-mode hasn't released anything in a while, I'm temporarily
1888 python-mode hasn't released anything in a while, I'm temporarily
1881 putting a copy of today's CVS (v 4.70) of python-mode in:
1889 putting a copy of today's CVS (v 4.70) of python-mode in:
1882 http://ipython.scipy.org/tmp/python-mode.el
1890 http://ipython.scipy.org/tmp/python-mode.el
1883
1891
1884 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1892 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1885 sys.executable for the executable name, instead of assuming it's
1893 sys.executable for the executable name, instead of assuming it's
1886 called 'python.exe' (the post-installer would have produced broken
1894 called 'python.exe' (the post-installer would have produced broken
1887 setups on systems with a differently named python binary).
1895 setups on systems with a differently named python binary).
1888
1896
1889 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1897 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1890 references to os.linesep, to make the code more
1898 references to os.linesep, to make the code more
1891 platform-independent. This is also part of the win32 coloring
1899 platform-independent. This is also part of the win32 coloring
1892 fixes.
1900 fixes.
1893
1901
1894 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1902 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1895 lines, which actually cause coloring bugs because the length of
1903 lines, which actually cause coloring bugs because the length of
1896 the line is very difficult to correctly compute with embedded
1904 the line is very difficult to correctly compute with embedded
1897 escapes. This was the source of all the coloring problems under
1905 escapes. This was the source of all the coloring problems under
1898 Win32. I think that _finally_, Win32 users have a properly
1906 Win32. I think that _finally_, Win32 users have a properly
1899 working ipython in all respects. This would never have happened
1907 working ipython in all respects. This would never have happened
1900 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1908 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1901
1909
1902 2005-01-26 *** Released version 0.6.9
1910 2005-01-26 *** Released version 0.6.9
1903
1911
1904 2005-01-25 Fernando Perez <fperez@colorado.edu>
1912 2005-01-25 Fernando Perez <fperez@colorado.edu>
1905
1913
1906 * setup.py: finally, we have a true Windows installer, thanks to
1914 * setup.py: finally, we have a true Windows installer, thanks to
1907 the excellent work of Viktor Ransmayr
1915 the excellent work of Viktor Ransmayr
1908 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1916 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1909 Windows users. The setup routine is quite a bit cleaner thanks to
1917 Windows users. The setup routine is quite a bit cleaner thanks to
1910 this, and the post-install script uses the proper functions to
1918 this, and the post-install script uses the proper functions to
1911 allow a clean de-installation using the standard Windows Control
1919 allow a clean de-installation using the standard Windows Control
1912 Panel.
1920 Panel.
1913
1921
1914 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1922 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1915 environment variable under all OSes (including win32) if
1923 environment variable under all OSes (including win32) if
1916 available. This will give consistency to win32 users who have set
1924 available. This will give consistency to win32 users who have set
1917 this variable for any reason. If os.environ['HOME'] fails, the
1925 this variable for any reason. If os.environ['HOME'] fails, the
1918 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1926 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1919
1927
1920 2005-01-24 Fernando Perez <fperez@colorado.edu>
1928 2005-01-24 Fernando Perez <fperez@colorado.edu>
1921
1929
1922 * IPython/numutils.py (empty_like): add empty_like(), similar to
1930 * IPython/numutils.py (empty_like): add empty_like(), similar to
1923 zeros_like() but taking advantage of the new empty() Numeric routine.
1931 zeros_like() but taking advantage of the new empty() Numeric routine.
1924
1932
1925 2005-01-23 *** Released version 0.6.8
1933 2005-01-23 *** Released version 0.6.8
1926
1934
1927 2005-01-22 Fernando Perez <fperez@colorado.edu>
1935 2005-01-22 Fernando Perez <fperez@colorado.edu>
1928
1936
1929 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1937 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1930 automatic show() calls. After discussing things with JDH, it
1938 automatic show() calls. After discussing things with JDH, it
1931 turns out there are too many corner cases where this can go wrong.
1939 turns out there are too many corner cases where this can go wrong.
1932 It's best not to try to be 'too smart', and simply have ipython
1940 It's best not to try to be 'too smart', and simply have ipython
1933 reproduce as much as possible the default behavior of a normal
1941 reproduce as much as possible the default behavior of a normal
1934 python shell.
1942 python shell.
1935
1943
1936 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1944 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1937 line-splitting regexp and _prefilter() to avoid calling getattr()
1945 line-splitting regexp and _prefilter() to avoid calling getattr()
1938 on assignments. This closes
1946 on assignments. This closes
1939 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1947 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1940 readline uses getattr(), so a simple <TAB> keypress is still
1948 readline uses getattr(), so a simple <TAB> keypress is still
1941 enough to trigger getattr() calls on an object.
1949 enough to trigger getattr() calls on an object.
1942
1950
1943 2005-01-21 Fernando Perez <fperez@colorado.edu>
1951 2005-01-21 Fernando Perez <fperez@colorado.edu>
1944
1952
1945 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1953 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1946 docstring under pylab so it doesn't mask the original.
1954 docstring under pylab so it doesn't mask the original.
1947
1955
1948 2005-01-21 *** Released version 0.6.7
1956 2005-01-21 *** Released version 0.6.7
1949
1957
1950 2005-01-21 Fernando Perez <fperez@colorado.edu>
1958 2005-01-21 Fernando Perez <fperez@colorado.edu>
1951
1959
1952 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1960 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1953 signal handling for win32 users in multithreaded mode.
1961 signal handling for win32 users in multithreaded mode.
1954
1962
1955 2005-01-17 Fernando Perez <fperez@colorado.edu>
1963 2005-01-17 Fernando Perez <fperez@colorado.edu>
1956
1964
1957 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1965 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1958 instances with no __init__. After a crash report by Norbert Nemec
1966 instances with no __init__. After a crash report by Norbert Nemec
1959 <Norbert-AT-nemec-online.de>.
1967 <Norbert-AT-nemec-online.de>.
1960
1968
1961 2005-01-14 Fernando Perez <fperez@colorado.edu>
1969 2005-01-14 Fernando Perez <fperez@colorado.edu>
1962
1970
1963 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1971 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1964 names for verbose exceptions, when multiple dotted names and the
1972 names for verbose exceptions, when multiple dotted names and the
1965 'parent' object were present on the same line.
1973 'parent' object were present on the same line.
1966
1974
1967 2005-01-11 Fernando Perez <fperez@colorado.edu>
1975 2005-01-11 Fernando Perez <fperez@colorado.edu>
1968
1976
1969 * IPython/genutils.py (flag_calls): new utility to trap and flag
1977 * IPython/genutils.py (flag_calls): new utility to trap and flag
1970 calls in functions. I need it to clean up matplotlib support.
1978 calls in functions. I need it to clean up matplotlib support.
1971 Also removed some deprecated code in genutils.
1979 Also removed some deprecated code in genutils.
1972
1980
1973 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1981 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1974 that matplotlib scripts called with %run, which don't call show()
1982 that matplotlib scripts called with %run, which don't call show()
1975 themselves, still have their plotting windows open.
1983 themselves, still have their plotting windows open.
1976
1984
1977 2005-01-05 Fernando Perez <fperez@colorado.edu>
1985 2005-01-05 Fernando Perez <fperez@colorado.edu>
1978
1986
1979 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1987 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1980 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1988 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1981
1989
1982 2004-12-19 Fernando Perez <fperez@colorado.edu>
1990 2004-12-19 Fernando Perez <fperez@colorado.edu>
1983
1991
1984 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1992 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1985 parent_runcode, which was an eyesore. The same result can be
1993 parent_runcode, which was an eyesore. The same result can be
1986 obtained with Python's regular superclass mechanisms.
1994 obtained with Python's regular superclass mechanisms.
1987
1995
1988 2004-12-17 Fernando Perez <fperez@colorado.edu>
1996 2004-12-17 Fernando Perez <fperez@colorado.edu>
1989
1997
1990 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1998 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1991 reported by Prabhu.
1999 reported by Prabhu.
1992 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2000 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1993 sys.stderr) instead of explicitly calling sys.stderr. This helps
2001 sys.stderr) instead of explicitly calling sys.stderr. This helps
1994 maintain our I/O abstractions clean, for future GUI embeddings.
2002 maintain our I/O abstractions clean, for future GUI embeddings.
1995
2003
1996 * IPython/genutils.py (info): added new utility for sys.stderr
2004 * IPython/genutils.py (info): added new utility for sys.stderr
1997 unified info message handling (thin wrapper around warn()).
2005 unified info message handling (thin wrapper around warn()).
1998
2006
1999 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2007 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2000 composite (dotted) names on verbose exceptions.
2008 composite (dotted) names on verbose exceptions.
2001 (VerboseTB.nullrepr): harden against another kind of errors which
2009 (VerboseTB.nullrepr): harden against another kind of errors which
2002 Python's inspect module can trigger, and which were crashing
2010 Python's inspect module can trigger, and which were crashing
2003 IPython. Thanks to a report by Marco Lombardi
2011 IPython. Thanks to a report by Marco Lombardi
2004 <mlombard-AT-ma010192.hq.eso.org>.
2012 <mlombard-AT-ma010192.hq.eso.org>.
2005
2013
2006 2004-12-13 *** Released version 0.6.6
2014 2004-12-13 *** Released version 0.6.6
2007
2015
2008 2004-12-12 Fernando Perez <fperez@colorado.edu>
2016 2004-12-12 Fernando Perez <fperez@colorado.edu>
2009
2017
2010 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2018 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2011 generated by pygtk upon initialization if it was built without
2019 generated by pygtk upon initialization if it was built without
2012 threads (for matplotlib users). After a crash reported by
2020 threads (for matplotlib users). After a crash reported by
2013 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2021 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2014
2022
2015 * IPython/ipmaker.py (make_IPython): fix small bug in the
2023 * IPython/ipmaker.py (make_IPython): fix small bug in the
2016 import_some parameter for multiple imports.
2024 import_some parameter for multiple imports.
2017
2025
2018 * IPython/iplib.py (ipmagic): simplified the interface of
2026 * IPython/iplib.py (ipmagic): simplified the interface of
2019 ipmagic() to take a single string argument, just as it would be
2027 ipmagic() to take a single string argument, just as it would be
2020 typed at the IPython cmd line.
2028 typed at the IPython cmd line.
2021 (ipalias): Added new ipalias() with an interface identical to
2029 (ipalias): Added new ipalias() with an interface identical to
2022 ipmagic(). This completes exposing a pure python interface to the
2030 ipmagic(). This completes exposing a pure python interface to the
2023 alias and magic system, which can be used in loops or more complex
2031 alias and magic system, which can be used in loops or more complex
2024 code where IPython's automatic line mangling is not active.
2032 code where IPython's automatic line mangling is not active.
2025
2033
2026 * IPython/genutils.py (timing): changed interface of timing to
2034 * IPython/genutils.py (timing): changed interface of timing to
2027 simply run code once, which is the most common case. timings()
2035 simply run code once, which is the most common case. timings()
2028 remains unchanged, for the cases where you want multiple runs.
2036 remains unchanged, for the cases where you want multiple runs.
2029
2037
2030 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2038 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2031 bug where Python2.2 crashes with exec'ing code which does not end
2039 bug where Python2.2 crashes with exec'ing code which does not end
2032 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2040 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2033 before.
2041 before.
2034
2042
2035 2004-12-10 Fernando Perez <fperez@colorado.edu>
2043 2004-12-10 Fernando Perez <fperez@colorado.edu>
2036
2044
2037 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2045 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2038 -t to -T, to accomodate the new -t flag in %run (the %run and
2046 -t to -T, to accomodate the new -t flag in %run (the %run and
2039 %prun options are kind of intermixed, and it's not easy to change
2047 %prun options are kind of intermixed, and it's not easy to change
2040 this with the limitations of python's getopt).
2048 this with the limitations of python's getopt).
2041
2049
2042 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2050 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2043 the execution of scripts. It's not as fine-tuned as timeit.py,
2051 the execution of scripts. It's not as fine-tuned as timeit.py,
2044 but it works from inside ipython (and under 2.2, which lacks
2052 but it works from inside ipython (and under 2.2, which lacks
2045 timeit.py). Optionally a number of runs > 1 can be given for
2053 timeit.py). Optionally a number of runs > 1 can be given for
2046 timing very short-running code.
2054 timing very short-running code.
2047
2055
2048 * IPython/genutils.py (uniq_stable): new routine which returns a
2056 * IPython/genutils.py (uniq_stable): new routine which returns a
2049 list of unique elements in any iterable, but in stable order of
2057 list of unique elements in any iterable, but in stable order of
2050 appearance. I needed this for the ultraTB fixes, and it's a handy
2058 appearance. I needed this for the ultraTB fixes, and it's a handy
2051 utility.
2059 utility.
2052
2060
2053 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2061 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2054 dotted names in Verbose exceptions. This had been broken since
2062 dotted names in Verbose exceptions. This had been broken since
2055 the very start, now x.y will properly be printed in a Verbose
2063 the very start, now x.y will properly be printed in a Verbose
2056 traceback, instead of x being shown and y appearing always as an
2064 traceback, instead of x being shown and y appearing always as an
2057 'undefined global'. Getting this to work was a bit tricky,
2065 'undefined global'. Getting this to work was a bit tricky,
2058 because by default python tokenizers are stateless. Saved by
2066 because by default python tokenizers are stateless. Saved by
2059 python's ability to easily add a bit of state to an arbitrary
2067 python's ability to easily add a bit of state to an arbitrary
2060 function (without needing to build a full-blown callable object).
2068 function (without needing to build a full-blown callable object).
2061
2069
2062 Also big cleanup of this code, which had horrendous runtime
2070 Also big cleanup of this code, which had horrendous runtime
2063 lookups of zillions of attributes for colorization. Moved all
2071 lookups of zillions of attributes for colorization. Moved all
2064 this code into a few templates, which make it cleaner and quicker.
2072 this code into a few templates, which make it cleaner and quicker.
2065
2073
2066 Printout quality was also improved for Verbose exceptions: one
2074 Printout quality was also improved for Verbose exceptions: one
2067 variable per line, and memory addresses are printed (this can be
2075 variable per line, and memory addresses are printed (this can be
2068 quite handy in nasty debugging situations, which is what Verbose
2076 quite handy in nasty debugging situations, which is what Verbose
2069 is for).
2077 is for).
2070
2078
2071 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2079 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2072 the command line as scripts to be loaded by embedded instances.
2080 the command line as scripts to be loaded by embedded instances.
2073 Doing so has the potential for an infinite recursion if there are
2081 Doing so has the potential for an infinite recursion if there are
2074 exceptions thrown in the process. This fixes a strange crash
2082 exceptions thrown in the process. This fixes a strange crash
2075 reported by Philippe MULLER <muller-AT-irit.fr>.
2083 reported by Philippe MULLER <muller-AT-irit.fr>.
2076
2084
2077 2004-12-09 Fernando Perez <fperez@colorado.edu>
2085 2004-12-09 Fernando Perez <fperez@colorado.edu>
2078
2086
2079 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2087 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2080 to reflect new names in matplotlib, which now expose the
2088 to reflect new names in matplotlib, which now expose the
2081 matlab-compatible interface via a pylab module instead of the
2089 matlab-compatible interface via a pylab module instead of the
2082 'matlab' name. The new code is backwards compatible, so users of
2090 'matlab' name. The new code is backwards compatible, so users of
2083 all matplotlib versions are OK. Patch by J. Hunter.
2091 all matplotlib versions are OK. Patch by J. Hunter.
2084
2092
2085 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2093 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2086 of __init__ docstrings for instances (class docstrings are already
2094 of __init__ docstrings for instances (class docstrings are already
2087 automatically printed). Instances with customized docstrings
2095 automatically printed). Instances with customized docstrings
2088 (indep. of the class) are also recognized and all 3 separate
2096 (indep. of the class) are also recognized and all 3 separate
2089 docstrings are printed (instance, class, constructor). After some
2097 docstrings are printed (instance, class, constructor). After some
2090 comments/suggestions by J. Hunter.
2098 comments/suggestions by J. Hunter.
2091
2099
2092 2004-12-05 Fernando Perez <fperez@colorado.edu>
2100 2004-12-05 Fernando Perez <fperez@colorado.edu>
2093
2101
2094 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2102 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2095 warnings when tab-completion fails and triggers an exception.
2103 warnings when tab-completion fails and triggers an exception.
2096
2104
2097 2004-12-03 Fernando Perez <fperez@colorado.edu>
2105 2004-12-03 Fernando Perez <fperez@colorado.edu>
2098
2106
2099 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2107 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2100 be triggered when using 'run -p'. An incorrect option flag was
2108 be triggered when using 'run -p'. An incorrect option flag was
2101 being set ('d' instead of 'D').
2109 being set ('d' instead of 'D').
2102 (manpage): fix missing escaped \- sign.
2110 (manpage): fix missing escaped \- sign.
2103
2111
2104 2004-11-30 *** Released version 0.6.5
2112 2004-11-30 *** Released version 0.6.5
2105
2113
2106 2004-11-30 Fernando Perez <fperez@colorado.edu>
2114 2004-11-30 Fernando Perez <fperez@colorado.edu>
2107
2115
2108 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2116 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2109 setting with -d option.
2117 setting with -d option.
2110
2118
2111 * setup.py (docfiles): Fix problem where the doc glob I was using
2119 * setup.py (docfiles): Fix problem where the doc glob I was using
2112 was COMPLETELY BROKEN. It was giving the right files by pure
2120 was COMPLETELY BROKEN. It was giving the right files by pure
2113 accident, but failed once I tried to include ipython.el. Note:
2121 accident, but failed once I tried to include ipython.el. Note:
2114 glob() does NOT allow you to do exclusion on multiple endings!
2122 glob() does NOT allow you to do exclusion on multiple endings!
2115
2123
2116 2004-11-29 Fernando Perez <fperez@colorado.edu>
2124 2004-11-29 Fernando Perez <fperez@colorado.edu>
2117
2125
2118 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2126 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2119 the manpage as the source. Better formatting & consistency.
2127 the manpage as the source. Better formatting & consistency.
2120
2128
2121 * IPython/Magic.py (magic_run): Added new -d option, to run
2129 * IPython/Magic.py (magic_run): Added new -d option, to run
2122 scripts under the control of the python pdb debugger. Note that
2130 scripts under the control of the python pdb debugger. Note that
2123 this required changing the %prun option -d to -D, to avoid a clash
2131 this required changing the %prun option -d to -D, to avoid a clash
2124 (since %run must pass options to %prun, and getopt is too dumb to
2132 (since %run must pass options to %prun, and getopt is too dumb to
2125 handle options with string values with embedded spaces). Thanks
2133 handle options with string values with embedded spaces). Thanks
2126 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2134 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2127 (magic_who_ls): added type matching to %who and %whos, so that one
2135 (magic_who_ls): added type matching to %who and %whos, so that one
2128 can filter their output to only include variables of certain
2136 can filter their output to only include variables of certain
2129 types. Another suggestion by Matthew.
2137 types. Another suggestion by Matthew.
2130 (magic_whos): Added memory summaries in kb and Mb for arrays.
2138 (magic_whos): Added memory summaries in kb and Mb for arrays.
2131 (magic_who): Improve formatting (break lines every 9 vars).
2139 (magic_who): Improve formatting (break lines every 9 vars).
2132
2140
2133 2004-11-28 Fernando Perez <fperez@colorado.edu>
2141 2004-11-28 Fernando Perez <fperez@colorado.edu>
2134
2142
2135 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2143 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2136 cache when empty lines were present.
2144 cache when empty lines were present.
2137
2145
2138 2004-11-24 Fernando Perez <fperez@colorado.edu>
2146 2004-11-24 Fernando Perez <fperez@colorado.edu>
2139
2147
2140 * IPython/usage.py (__doc__): document the re-activated threading
2148 * IPython/usage.py (__doc__): document the re-activated threading
2141 options for WX and GTK.
2149 options for WX and GTK.
2142
2150
2143 2004-11-23 Fernando Perez <fperez@colorado.edu>
2151 2004-11-23 Fernando Perez <fperez@colorado.edu>
2144
2152
2145 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2153 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2146 the -wthread and -gthread options, along with a new -tk one to try
2154 the -wthread and -gthread options, along with a new -tk one to try
2147 and coordinate Tk threading with wx/gtk. The tk support is very
2155 and coordinate Tk threading with wx/gtk. The tk support is very
2148 platform dependent, since it seems to require Tcl and Tk to be
2156 platform dependent, since it seems to require Tcl and Tk to be
2149 built with threads (Fedora1/2 appears NOT to have it, but in
2157 built with threads (Fedora1/2 appears NOT to have it, but in
2150 Prabhu's Debian boxes it works OK). But even with some Tk
2158 Prabhu's Debian boxes it works OK). But even with some Tk
2151 limitations, this is a great improvement.
2159 limitations, this is a great improvement.
2152
2160
2153 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2161 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2154 info in user prompts. Patch by Prabhu.
2162 info in user prompts. Patch by Prabhu.
2155
2163
2156 2004-11-18 Fernando Perez <fperez@colorado.edu>
2164 2004-11-18 Fernando Perez <fperez@colorado.edu>
2157
2165
2158 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2166 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2159 EOFErrors and bail, to avoid infinite loops if a non-terminating
2167 EOFErrors and bail, to avoid infinite loops if a non-terminating
2160 file is fed into ipython. Patch submitted in issue 19 by user,
2168 file is fed into ipython. Patch submitted in issue 19 by user,
2161 many thanks.
2169 many thanks.
2162
2170
2163 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2171 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2164 autoquote/parens in continuation prompts, which can cause lots of
2172 autoquote/parens in continuation prompts, which can cause lots of
2165 problems. Closes roundup issue 20.
2173 problems. Closes roundup issue 20.
2166
2174
2167 2004-11-17 Fernando Perez <fperez@colorado.edu>
2175 2004-11-17 Fernando Perez <fperez@colorado.edu>
2168
2176
2169 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2177 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2170 reported as debian bug #280505. I'm not sure my local changelog
2178 reported as debian bug #280505. I'm not sure my local changelog
2171 entry has the proper debian format (Jack?).
2179 entry has the proper debian format (Jack?).
2172
2180
2173 2004-11-08 *** Released version 0.6.4
2181 2004-11-08 *** Released version 0.6.4
2174
2182
2175 2004-11-08 Fernando Perez <fperez@colorado.edu>
2183 2004-11-08 Fernando Perez <fperez@colorado.edu>
2176
2184
2177 * IPython/iplib.py (init_readline): Fix exit message for Windows
2185 * IPython/iplib.py (init_readline): Fix exit message for Windows
2178 when readline is active. Thanks to a report by Eric Jones
2186 when readline is active. Thanks to a report by Eric Jones
2179 <eric-AT-enthought.com>.
2187 <eric-AT-enthought.com>.
2180
2188
2181 2004-11-07 Fernando Perez <fperez@colorado.edu>
2189 2004-11-07 Fernando Perez <fperez@colorado.edu>
2182
2190
2183 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2191 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2184 sometimes seen by win2k/cygwin users.
2192 sometimes seen by win2k/cygwin users.
2185
2193
2186 2004-11-06 Fernando Perez <fperez@colorado.edu>
2194 2004-11-06 Fernando Perez <fperez@colorado.edu>
2187
2195
2188 * IPython/iplib.py (interact): Change the handling of %Exit from
2196 * IPython/iplib.py (interact): Change the handling of %Exit from
2189 trying to propagate a SystemExit to an internal ipython flag.
2197 trying to propagate a SystemExit to an internal ipython flag.
2190 This is less elegant than using Python's exception mechanism, but
2198 This is less elegant than using Python's exception mechanism, but
2191 I can't get that to work reliably with threads, so under -pylab
2199 I can't get that to work reliably with threads, so under -pylab
2192 %Exit was hanging IPython. Cross-thread exception handling is
2200 %Exit was hanging IPython. Cross-thread exception handling is
2193 really a bitch. Thaks to a bug report by Stephen Walton
2201 really a bitch. Thaks to a bug report by Stephen Walton
2194 <stephen.walton-AT-csun.edu>.
2202 <stephen.walton-AT-csun.edu>.
2195
2203
2196 2004-11-04 Fernando Perez <fperez@colorado.edu>
2204 2004-11-04 Fernando Perez <fperez@colorado.edu>
2197
2205
2198 * IPython/iplib.py (raw_input_original): store a pointer to the
2206 * IPython/iplib.py (raw_input_original): store a pointer to the
2199 true raw_input to harden against code which can modify it
2207 true raw_input to harden against code which can modify it
2200 (wx.py.PyShell does this and would otherwise crash ipython).
2208 (wx.py.PyShell does this and would otherwise crash ipython).
2201 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2209 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2202
2210
2203 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2211 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2204 Ctrl-C problem, which does not mess up the input line.
2212 Ctrl-C problem, which does not mess up the input line.
2205
2213
2206 2004-11-03 Fernando Perez <fperez@colorado.edu>
2214 2004-11-03 Fernando Perez <fperez@colorado.edu>
2207
2215
2208 * IPython/Release.py: Changed licensing to BSD, in all files.
2216 * IPython/Release.py: Changed licensing to BSD, in all files.
2209 (name): lowercase name for tarball/RPM release.
2217 (name): lowercase name for tarball/RPM release.
2210
2218
2211 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2219 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2212 use throughout ipython.
2220 use throughout ipython.
2213
2221
2214 * IPython/Magic.py (Magic._ofind): Switch to using the new
2222 * IPython/Magic.py (Magic._ofind): Switch to using the new
2215 OInspect.getdoc() function.
2223 OInspect.getdoc() function.
2216
2224
2217 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2225 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2218 of the line currently being canceled via Ctrl-C. It's extremely
2226 of the line currently being canceled via Ctrl-C. It's extremely
2219 ugly, but I don't know how to do it better (the problem is one of
2227 ugly, but I don't know how to do it better (the problem is one of
2220 handling cross-thread exceptions).
2228 handling cross-thread exceptions).
2221
2229
2222 2004-10-28 Fernando Perez <fperez@colorado.edu>
2230 2004-10-28 Fernando Perez <fperez@colorado.edu>
2223
2231
2224 * IPython/Shell.py (signal_handler): add signal handlers to trap
2232 * IPython/Shell.py (signal_handler): add signal handlers to trap
2225 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2233 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2226 report by Francesc Alted.
2234 report by Francesc Alted.
2227
2235
2228 2004-10-21 Fernando Perez <fperez@colorado.edu>
2236 2004-10-21 Fernando Perez <fperez@colorado.edu>
2229
2237
2230 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2238 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2231 to % for pysh syntax extensions.
2239 to % for pysh syntax extensions.
2232
2240
2233 2004-10-09 Fernando Perez <fperez@colorado.edu>
2241 2004-10-09 Fernando Perez <fperez@colorado.edu>
2234
2242
2235 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2243 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2236 arrays to print a more useful summary, without calling str(arr).
2244 arrays to print a more useful summary, without calling str(arr).
2237 This avoids the problem of extremely lengthy computations which
2245 This avoids the problem of extremely lengthy computations which
2238 occur if arr is large, and appear to the user as a system lockup
2246 occur if arr is large, and appear to the user as a system lockup
2239 with 100% cpu activity. After a suggestion by Kristian Sandberg
2247 with 100% cpu activity. After a suggestion by Kristian Sandberg
2240 <Kristian.Sandberg@colorado.edu>.
2248 <Kristian.Sandberg@colorado.edu>.
2241 (Magic.__init__): fix bug in global magic escapes not being
2249 (Magic.__init__): fix bug in global magic escapes not being
2242 correctly set.
2250 correctly set.
2243
2251
2244 2004-10-08 Fernando Perez <fperez@colorado.edu>
2252 2004-10-08 Fernando Perez <fperez@colorado.edu>
2245
2253
2246 * IPython/Magic.py (__license__): change to absolute imports of
2254 * IPython/Magic.py (__license__): change to absolute imports of
2247 ipython's own internal packages, to start adapting to the absolute
2255 ipython's own internal packages, to start adapting to the absolute
2248 import requirement of PEP-328.
2256 import requirement of PEP-328.
2249
2257
2250 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2258 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2251 files, and standardize author/license marks through the Release
2259 files, and standardize author/license marks through the Release
2252 module instead of having per/file stuff (except for files with
2260 module instead of having per/file stuff (except for files with
2253 particular licenses, like the MIT/PSF-licensed codes).
2261 particular licenses, like the MIT/PSF-licensed codes).
2254
2262
2255 * IPython/Debugger.py: remove dead code for python 2.1
2263 * IPython/Debugger.py: remove dead code for python 2.1
2256
2264
2257 2004-10-04 Fernando Perez <fperez@colorado.edu>
2265 2004-10-04 Fernando Perez <fperez@colorado.edu>
2258
2266
2259 * IPython/iplib.py (ipmagic): New function for accessing magics
2267 * IPython/iplib.py (ipmagic): New function for accessing magics
2260 via a normal python function call.
2268 via a normal python function call.
2261
2269
2262 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2270 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2263 from '@' to '%', to accomodate the new @decorator syntax of python
2271 from '@' to '%', to accomodate the new @decorator syntax of python
2264 2.4.
2272 2.4.
2265
2273
2266 2004-09-29 Fernando Perez <fperez@colorado.edu>
2274 2004-09-29 Fernando Perez <fperez@colorado.edu>
2267
2275
2268 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2276 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2269 matplotlib.use to prevent running scripts which try to switch
2277 matplotlib.use to prevent running scripts which try to switch
2270 interactive backends from within ipython. This will just crash
2278 interactive backends from within ipython. This will just crash
2271 the python interpreter, so we can't allow it (but a detailed error
2279 the python interpreter, so we can't allow it (but a detailed error
2272 is given to the user).
2280 is given to the user).
2273
2281
2274 2004-09-28 Fernando Perez <fperez@colorado.edu>
2282 2004-09-28 Fernando Perez <fperez@colorado.edu>
2275
2283
2276 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2284 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2277 matplotlib-related fixes so that using @run with non-matplotlib
2285 matplotlib-related fixes so that using @run with non-matplotlib
2278 scripts doesn't pop up spurious plot windows. This requires
2286 scripts doesn't pop up spurious plot windows. This requires
2279 matplotlib >= 0.63, where I had to make some changes as well.
2287 matplotlib >= 0.63, where I had to make some changes as well.
2280
2288
2281 * IPython/ipmaker.py (make_IPython): update version requirement to
2289 * IPython/ipmaker.py (make_IPython): update version requirement to
2282 python 2.2.
2290 python 2.2.
2283
2291
2284 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2292 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2285 banner arg for embedded customization.
2293 banner arg for embedded customization.
2286
2294
2287 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2295 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2288 explicit uses of __IP as the IPython's instance name. Now things
2296 explicit uses of __IP as the IPython's instance name. Now things
2289 are properly handled via the shell.name value. The actual code
2297 are properly handled via the shell.name value. The actual code
2290 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2298 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2291 is much better than before. I'll clean things completely when the
2299 is much better than before. I'll clean things completely when the
2292 magic stuff gets a real overhaul.
2300 magic stuff gets a real overhaul.
2293
2301
2294 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2302 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2295 minor changes to debian dir.
2303 minor changes to debian dir.
2296
2304
2297 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2305 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2298 pointer to the shell itself in the interactive namespace even when
2306 pointer to the shell itself in the interactive namespace even when
2299 a user-supplied dict is provided. This is needed for embedding
2307 a user-supplied dict is provided. This is needed for embedding
2300 purposes (found by tests with Michel Sanner).
2308 purposes (found by tests with Michel Sanner).
2301
2309
2302 2004-09-27 Fernando Perez <fperez@colorado.edu>
2310 2004-09-27 Fernando Perez <fperez@colorado.edu>
2303
2311
2304 * IPython/UserConfig/ipythonrc: remove []{} from
2312 * IPython/UserConfig/ipythonrc: remove []{} from
2305 readline_remove_delims, so that things like [modname.<TAB> do
2313 readline_remove_delims, so that things like [modname.<TAB> do
2306 proper completion. This disables [].TAB, but that's a less common
2314 proper completion. This disables [].TAB, but that's a less common
2307 case than module names in list comprehensions, for example.
2315 case than module names in list comprehensions, for example.
2308 Thanks to a report by Andrea Riciputi.
2316 Thanks to a report by Andrea Riciputi.
2309
2317
2310 2004-09-09 Fernando Perez <fperez@colorado.edu>
2318 2004-09-09 Fernando Perez <fperez@colorado.edu>
2311
2319
2312 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2320 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2313 blocking problems in win32 and osx. Fix by John.
2321 blocking problems in win32 and osx. Fix by John.
2314
2322
2315 2004-09-08 Fernando Perez <fperez@colorado.edu>
2323 2004-09-08 Fernando Perez <fperez@colorado.edu>
2316
2324
2317 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2325 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2318 for Win32 and OSX. Fix by John Hunter.
2326 for Win32 and OSX. Fix by John Hunter.
2319
2327
2320 2004-08-30 *** Released version 0.6.3
2328 2004-08-30 *** Released version 0.6.3
2321
2329
2322 2004-08-30 Fernando Perez <fperez@colorado.edu>
2330 2004-08-30 Fernando Perez <fperez@colorado.edu>
2323
2331
2324 * setup.py (isfile): Add manpages to list of dependent files to be
2332 * setup.py (isfile): Add manpages to list of dependent files to be
2325 updated.
2333 updated.
2326
2334
2327 2004-08-27 Fernando Perez <fperez@colorado.edu>
2335 2004-08-27 Fernando Perez <fperez@colorado.edu>
2328
2336
2329 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2337 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2330 for now. They don't really work with standalone WX/GTK code
2338 for now. They don't really work with standalone WX/GTK code
2331 (though matplotlib IS working fine with both of those backends).
2339 (though matplotlib IS working fine with both of those backends).
2332 This will neeed much more testing. I disabled most things with
2340 This will neeed much more testing. I disabled most things with
2333 comments, so turning it back on later should be pretty easy.
2341 comments, so turning it back on later should be pretty easy.
2334
2342
2335 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2343 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2336 autocalling of expressions like r'foo', by modifying the line
2344 autocalling of expressions like r'foo', by modifying the line
2337 split regexp. Closes
2345 split regexp. Closes
2338 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2346 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2339 Riley <ipythonbugs-AT-sabi.net>.
2347 Riley <ipythonbugs-AT-sabi.net>.
2340 (InteractiveShell.mainloop): honor --nobanner with banner
2348 (InteractiveShell.mainloop): honor --nobanner with banner
2341 extensions.
2349 extensions.
2342
2350
2343 * IPython/Shell.py: Significant refactoring of all classes, so
2351 * IPython/Shell.py: Significant refactoring of all classes, so
2344 that we can really support ALL matplotlib backends and threading
2352 that we can really support ALL matplotlib backends and threading
2345 models (John spotted a bug with Tk which required this). Now we
2353 models (John spotted a bug with Tk which required this). Now we
2346 should support single-threaded, WX-threads and GTK-threads, both
2354 should support single-threaded, WX-threads and GTK-threads, both
2347 for generic code and for matplotlib.
2355 for generic code and for matplotlib.
2348
2356
2349 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2357 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2350 -pylab, to simplify things for users. Will also remove the pylab
2358 -pylab, to simplify things for users. Will also remove the pylab
2351 profile, since now all of matplotlib configuration is directly
2359 profile, since now all of matplotlib configuration is directly
2352 handled here. This also reduces startup time.
2360 handled here. This also reduces startup time.
2353
2361
2354 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2362 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2355 shell wasn't being correctly called. Also in IPShellWX.
2363 shell wasn't being correctly called. Also in IPShellWX.
2356
2364
2357 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2365 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2358 fine-tune banner.
2366 fine-tune banner.
2359
2367
2360 * IPython/numutils.py (spike): Deprecate these spike functions,
2368 * IPython/numutils.py (spike): Deprecate these spike functions,
2361 delete (long deprecated) gnuplot_exec handler.
2369 delete (long deprecated) gnuplot_exec handler.
2362
2370
2363 2004-08-26 Fernando Perez <fperez@colorado.edu>
2371 2004-08-26 Fernando Perez <fperez@colorado.edu>
2364
2372
2365 * ipython.1: Update for threading options, plus some others which
2373 * ipython.1: Update for threading options, plus some others which
2366 were missing.
2374 were missing.
2367
2375
2368 * IPython/ipmaker.py (__call__): Added -wthread option for
2376 * IPython/ipmaker.py (__call__): Added -wthread option for
2369 wxpython thread handling. Make sure threading options are only
2377 wxpython thread handling. Make sure threading options are only
2370 valid at the command line.
2378 valid at the command line.
2371
2379
2372 * scripts/ipython: moved shell selection into a factory function
2380 * scripts/ipython: moved shell selection into a factory function
2373 in Shell.py, to keep the starter script to a minimum.
2381 in Shell.py, to keep the starter script to a minimum.
2374
2382
2375 2004-08-25 Fernando Perez <fperez@colorado.edu>
2383 2004-08-25 Fernando Perez <fperez@colorado.edu>
2376
2384
2377 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2385 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2378 John. Along with some recent changes he made to matplotlib, the
2386 John. Along with some recent changes he made to matplotlib, the
2379 next versions of both systems should work very well together.
2387 next versions of both systems should work very well together.
2380
2388
2381 2004-08-24 Fernando Perez <fperez@colorado.edu>
2389 2004-08-24 Fernando Perez <fperez@colorado.edu>
2382
2390
2383 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2391 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2384 tried to switch the profiling to using hotshot, but I'm getting
2392 tried to switch the profiling to using hotshot, but I'm getting
2385 strange errors from prof.runctx() there. I may be misreading the
2393 strange errors from prof.runctx() there. I may be misreading the
2386 docs, but it looks weird. For now the profiling code will
2394 docs, but it looks weird. For now the profiling code will
2387 continue to use the standard profiler.
2395 continue to use the standard profiler.
2388
2396
2389 2004-08-23 Fernando Perez <fperez@colorado.edu>
2397 2004-08-23 Fernando Perez <fperez@colorado.edu>
2390
2398
2391 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2399 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2392 threaded shell, by John Hunter. It's not quite ready yet, but
2400 threaded shell, by John Hunter. It's not quite ready yet, but
2393 close.
2401 close.
2394
2402
2395 2004-08-22 Fernando Perez <fperez@colorado.edu>
2403 2004-08-22 Fernando Perez <fperez@colorado.edu>
2396
2404
2397 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2405 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2398 in Magic and ultraTB.
2406 in Magic and ultraTB.
2399
2407
2400 * ipython.1: document threading options in manpage.
2408 * ipython.1: document threading options in manpage.
2401
2409
2402 * scripts/ipython: Changed name of -thread option to -gthread,
2410 * scripts/ipython: Changed name of -thread option to -gthread,
2403 since this is GTK specific. I want to leave the door open for a
2411 since this is GTK specific. I want to leave the door open for a
2404 -wthread option for WX, which will most likely be necessary. This
2412 -wthread option for WX, which will most likely be necessary. This
2405 change affects usage and ipmaker as well.
2413 change affects usage and ipmaker as well.
2406
2414
2407 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2415 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2408 handle the matplotlib shell issues. Code by John Hunter
2416 handle the matplotlib shell issues. Code by John Hunter
2409 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2417 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2410 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2418 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2411 broken (and disabled for end users) for now, but it puts the
2419 broken (and disabled for end users) for now, but it puts the
2412 infrastructure in place.
2420 infrastructure in place.
2413
2421
2414 2004-08-21 Fernando Perez <fperez@colorado.edu>
2422 2004-08-21 Fernando Perez <fperez@colorado.edu>
2415
2423
2416 * ipythonrc-pylab: Add matplotlib support.
2424 * ipythonrc-pylab: Add matplotlib support.
2417
2425
2418 * matplotlib_config.py: new files for matplotlib support, part of
2426 * matplotlib_config.py: new files for matplotlib support, part of
2419 the pylab profile.
2427 the pylab profile.
2420
2428
2421 * IPython/usage.py (__doc__): documented the threading options.
2429 * IPython/usage.py (__doc__): documented the threading options.
2422
2430
2423 2004-08-20 Fernando Perez <fperez@colorado.edu>
2431 2004-08-20 Fernando Perez <fperez@colorado.edu>
2424
2432
2425 * ipython: Modified the main calling routine to handle the -thread
2433 * ipython: Modified the main calling routine to handle the -thread
2426 and -mpthread options. This needs to be done as a top-level hack,
2434 and -mpthread options. This needs to be done as a top-level hack,
2427 because it determines which class to instantiate for IPython
2435 because it determines which class to instantiate for IPython
2428 itself.
2436 itself.
2429
2437
2430 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2438 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2431 classes to support multithreaded GTK operation without blocking,
2439 classes to support multithreaded GTK operation without blocking,
2432 and matplotlib with all backends. This is a lot of still very
2440 and matplotlib with all backends. This is a lot of still very
2433 experimental code, and threads are tricky. So it may still have a
2441 experimental code, and threads are tricky. So it may still have a
2434 few rough edges... This code owes a lot to
2442 few rough edges... This code owes a lot to
2435 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2443 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2436 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2444 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2437 to John Hunter for all the matplotlib work.
2445 to John Hunter for all the matplotlib work.
2438
2446
2439 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2447 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2440 options for gtk thread and matplotlib support.
2448 options for gtk thread and matplotlib support.
2441
2449
2442 2004-08-16 Fernando Perez <fperez@colorado.edu>
2450 2004-08-16 Fernando Perez <fperez@colorado.edu>
2443
2451
2444 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2452 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2445 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2453 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2446 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2454 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2447
2455
2448 2004-08-11 Fernando Perez <fperez@colorado.edu>
2456 2004-08-11 Fernando Perez <fperez@colorado.edu>
2449
2457
2450 * setup.py (isfile): Fix build so documentation gets updated for
2458 * setup.py (isfile): Fix build so documentation gets updated for
2451 rpms (it was only done for .tgz builds).
2459 rpms (it was only done for .tgz builds).
2452
2460
2453 2004-08-10 Fernando Perez <fperez@colorado.edu>
2461 2004-08-10 Fernando Perez <fperez@colorado.edu>
2454
2462
2455 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2463 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2456
2464
2457 * iplib.py : Silence syntax error exceptions in tab-completion.
2465 * iplib.py : Silence syntax error exceptions in tab-completion.
2458
2466
2459 2004-08-05 Fernando Perez <fperez@colorado.edu>
2467 2004-08-05 Fernando Perez <fperez@colorado.edu>
2460
2468
2461 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2469 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2462 'color off' mark for continuation prompts. This was causing long
2470 'color off' mark for continuation prompts. This was causing long
2463 continuation lines to mis-wrap.
2471 continuation lines to mis-wrap.
2464
2472
2465 2004-08-01 Fernando Perez <fperez@colorado.edu>
2473 2004-08-01 Fernando Perez <fperez@colorado.edu>
2466
2474
2467 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2475 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2468 for building ipython to be a parameter. All this is necessary
2476 for building ipython to be a parameter. All this is necessary
2469 right now to have a multithreaded version, but this insane
2477 right now to have a multithreaded version, but this insane
2470 non-design will be cleaned up soon. For now, it's a hack that
2478 non-design will be cleaned up soon. For now, it's a hack that
2471 works.
2479 works.
2472
2480
2473 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2481 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2474 args in various places. No bugs so far, but it's a dangerous
2482 args in various places. No bugs so far, but it's a dangerous
2475 practice.
2483 practice.
2476
2484
2477 2004-07-31 Fernando Perez <fperez@colorado.edu>
2485 2004-07-31 Fernando Perez <fperez@colorado.edu>
2478
2486
2479 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2487 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2480 fix completion of files with dots in their names under most
2488 fix completion of files with dots in their names under most
2481 profiles (pysh was OK because the completion order is different).
2489 profiles (pysh was OK because the completion order is different).
2482
2490
2483 2004-07-27 Fernando Perez <fperez@colorado.edu>
2491 2004-07-27 Fernando Perez <fperez@colorado.edu>
2484
2492
2485 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2493 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2486 keywords manually, b/c the one in keyword.py was removed in python
2494 keywords manually, b/c the one in keyword.py was removed in python
2487 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2495 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2488 This is NOT a bug under python 2.3 and earlier.
2496 This is NOT a bug under python 2.3 and earlier.
2489
2497
2490 2004-07-26 Fernando Perez <fperez@colorado.edu>
2498 2004-07-26 Fernando Perez <fperez@colorado.edu>
2491
2499
2492 * IPython/ultraTB.py (VerboseTB.text): Add another
2500 * IPython/ultraTB.py (VerboseTB.text): Add another
2493 linecache.checkcache() call to try to prevent inspect.py from
2501 linecache.checkcache() call to try to prevent inspect.py from
2494 crashing under python 2.3. I think this fixes
2502 crashing under python 2.3. I think this fixes
2495 http://www.scipy.net/roundup/ipython/issue17.
2503 http://www.scipy.net/roundup/ipython/issue17.
2496
2504
2497 2004-07-26 *** Released version 0.6.2
2505 2004-07-26 *** Released version 0.6.2
2498
2506
2499 2004-07-26 Fernando Perez <fperez@colorado.edu>
2507 2004-07-26 Fernando Perez <fperez@colorado.edu>
2500
2508
2501 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2509 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2502 fail for any number.
2510 fail for any number.
2503 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2511 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2504 empty bookmarks.
2512 empty bookmarks.
2505
2513
2506 2004-07-26 *** Released version 0.6.1
2514 2004-07-26 *** Released version 0.6.1
2507
2515
2508 2004-07-26 Fernando Perez <fperez@colorado.edu>
2516 2004-07-26 Fernando Perez <fperez@colorado.edu>
2509
2517
2510 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2518 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2511
2519
2512 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2520 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2513 escaping '()[]{}' in filenames.
2521 escaping '()[]{}' in filenames.
2514
2522
2515 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2523 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2516 Python 2.2 users who lack a proper shlex.split.
2524 Python 2.2 users who lack a proper shlex.split.
2517
2525
2518 2004-07-19 Fernando Perez <fperez@colorado.edu>
2526 2004-07-19 Fernando Perez <fperez@colorado.edu>
2519
2527
2520 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2528 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2521 for reading readline's init file. I follow the normal chain:
2529 for reading readline's init file. I follow the normal chain:
2522 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2530 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2523 report by Mike Heeter. This closes
2531 report by Mike Heeter. This closes
2524 http://www.scipy.net/roundup/ipython/issue16.
2532 http://www.scipy.net/roundup/ipython/issue16.
2525
2533
2526 2004-07-18 Fernando Perez <fperez@colorado.edu>
2534 2004-07-18 Fernando Perez <fperez@colorado.edu>
2527
2535
2528 * IPython/iplib.py (__init__): Add better handling of '\' under
2536 * IPython/iplib.py (__init__): Add better handling of '\' under
2529 Win32 for filenames. After a patch by Ville.
2537 Win32 for filenames. After a patch by Ville.
2530
2538
2531 2004-07-17 Fernando Perez <fperez@colorado.edu>
2539 2004-07-17 Fernando Perez <fperez@colorado.edu>
2532
2540
2533 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2541 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2534 autocalling would be triggered for 'foo is bar' if foo is
2542 autocalling would be triggered for 'foo is bar' if foo is
2535 callable. I also cleaned up the autocall detection code to use a
2543 callable. I also cleaned up the autocall detection code to use a
2536 regexp, which is faster. Bug reported by Alexander Schmolck.
2544 regexp, which is faster. Bug reported by Alexander Schmolck.
2537
2545
2538 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2546 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2539 '?' in them would confuse the help system. Reported by Alex
2547 '?' in them would confuse the help system. Reported by Alex
2540 Schmolck.
2548 Schmolck.
2541
2549
2542 2004-07-16 Fernando Perez <fperez@colorado.edu>
2550 2004-07-16 Fernando Perez <fperez@colorado.edu>
2543
2551
2544 * IPython/GnuplotInteractive.py (__all__): added plot2.
2552 * IPython/GnuplotInteractive.py (__all__): added plot2.
2545
2553
2546 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2554 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2547 plotting dictionaries, lists or tuples of 1d arrays.
2555 plotting dictionaries, lists or tuples of 1d arrays.
2548
2556
2549 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2557 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2550 optimizations.
2558 optimizations.
2551
2559
2552 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2560 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2553 the information which was there from Janko's original IPP code:
2561 the information which was there from Janko's original IPP code:
2554
2562
2555 03.05.99 20:53 porto.ifm.uni-kiel.de
2563 03.05.99 20:53 porto.ifm.uni-kiel.de
2556 --Started changelog.
2564 --Started changelog.
2557 --make clear do what it say it does
2565 --make clear do what it say it does
2558 --added pretty output of lines from inputcache
2566 --added pretty output of lines from inputcache
2559 --Made Logger a mixin class, simplifies handling of switches
2567 --Made Logger a mixin class, simplifies handling of switches
2560 --Added own completer class. .string<TAB> expands to last history
2568 --Added own completer class. .string<TAB> expands to last history
2561 line which starts with string. The new expansion is also present
2569 line which starts with string. The new expansion is also present
2562 with Ctrl-r from the readline library. But this shows, who this
2570 with Ctrl-r from the readline library. But this shows, who this
2563 can be done for other cases.
2571 can be done for other cases.
2564 --Added convention that all shell functions should accept a
2572 --Added convention that all shell functions should accept a
2565 parameter_string This opens the door for different behaviour for
2573 parameter_string This opens the door for different behaviour for
2566 each function. @cd is a good example of this.
2574 each function. @cd is a good example of this.
2567
2575
2568 04.05.99 12:12 porto.ifm.uni-kiel.de
2576 04.05.99 12:12 porto.ifm.uni-kiel.de
2569 --added logfile rotation
2577 --added logfile rotation
2570 --added new mainloop method which freezes first the namespace
2578 --added new mainloop method which freezes first the namespace
2571
2579
2572 07.05.99 21:24 porto.ifm.uni-kiel.de
2580 07.05.99 21:24 porto.ifm.uni-kiel.de
2573 --added the docreader classes. Now there is a help system.
2581 --added the docreader classes. Now there is a help system.
2574 -This is only a first try. Currently it's not easy to put new
2582 -This is only a first try. Currently it's not easy to put new
2575 stuff in the indices. But this is the way to go. Info would be
2583 stuff in the indices. But this is the way to go. Info would be
2576 better, but HTML is every where and not everybody has an info
2584 better, but HTML is every where and not everybody has an info
2577 system installed and it's not so easy to change html-docs to info.
2585 system installed and it's not so easy to change html-docs to info.
2578 --added global logfile option
2586 --added global logfile option
2579 --there is now a hook for object inspection method pinfo needs to
2587 --there is now a hook for object inspection method pinfo needs to
2580 be provided for this. Can be reached by two '??'.
2588 be provided for this. Can be reached by two '??'.
2581
2589
2582 08.05.99 20:51 porto.ifm.uni-kiel.de
2590 08.05.99 20:51 porto.ifm.uni-kiel.de
2583 --added a README
2591 --added a README
2584 --bug in rc file. Something has changed so functions in the rc
2592 --bug in rc file. Something has changed so functions in the rc
2585 file need to reference the shell and not self. Not clear if it's a
2593 file need to reference the shell and not self. Not clear if it's a
2586 bug or feature.
2594 bug or feature.
2587 --changed rc file for new behavior
2595 --changed rc file for new behavior
2588
2596
2589 2004-07-15 Fernando Perez <fperez@colorado.edu>
2597 2004-07-15 Fernando Perez <fperez@colorado.edu>
2590
2598
2591 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2599 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2592 cache was falling out of sync in bizarre manners when multi-line
2600 cache was falling out of sync in bizarre manners when multi-line
2593 input was present. Minor optimizations and cleanup.
2601 input was present. Minor optimizations and cleanup.
2594
2602
2595 (Logger): Remove old Changelog info for cleanup. This is the
2603 (Logger): Remove old Changelog info for cleanup. This is the
2596 information which was there from Janko's original code:
2604 information which was there from Janko's original code:
2597
2605
2598 Changes to Logger: - made the default log filename a parameter
2606 Changes to Logger: - made the default log filename a parameter
2599
2607
2600 - put a check for lines beginning with !@? in log(). Needed
2608 - put a check for lines beginning with !@? in log(). Needed
2601 (even if the handlers properly log their lines) for mid-session
2609 (even if the handlers properly log their lines) for mid-session
2602 logging activation to work properly. Without this, lines logged
2610 logging activation to work properly. Without this, lines logged
2603 in mid session, which get read from the cache, would end up
2611 in mid session, which get read from the cache, would end up
2604 'bare' (with !@? in the open) in the log. Now they are caught
2612 'bare' (with !@? in the open) in the log. Now they are caught
2605 and prepended with a #.
2613 and prepended with a #.
2606
2614
2607 * IPython/iplib.py (InteractiveShell.init_readline): added check
2615 * IPython/iplib.py (InteractiveShell.init_readline): added check
2608 in case MagicCompleter fails to be defined, so we don't crash.
2616 in case MagicCompleter fails to be defined, so we don't crash.
2609
2617
2610 2004-07-13 Fernando Perez <fperez@colorado.edu>
2618 2004-07-13 Fernando Perez <fperez@colorado.edu>
2611
2619
2612 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2620 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2613 of EPS if the requested filename ends in '.eps'.
2621 of EPS if the requested filename ends in '.eps'.
2614
2622
2615 2004-07-04 Fernando Perez <fperez@colorado.edu>
2623 2004-07-04 Fernando Perez <fperez@colorado.edu>
2616
2624
2617 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2625 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2618 escaping of quotes when calling the shell.
2626 escaping of quotes when calling the shell.
2619
2627
2620 2004-07-02 Fernando Perez <fperez@colorado.edu>
2628 2004-07-02 Fernando Perez <fperez@colorado.edu>
2621
2629
2622 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2630 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2623 gettext not working because we were clobbering '_'. Fixes
2631 gettext not working because we were clobbering '_'. Fixes
2624 http://www.scipy.net/roundup/ipython/issue6.
2632 http://www.scipy.net/roundup/ipython/issue6.
2625
2633
2626 2004-07-01 Fernando Perez <fperez@colorado.edu>
2634 2004-07-01 Fernando Perez <fperez@colorado.edu>
2627
2635
2628 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2636 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2629 into @cd. Patch by Ville.
2637 into @cd. Patch by Ville.
2630
2638
2631 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2639 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2632 new function to store things after ipmaker runs. Patch by Ville.
2640 new function to store things after ipmaker runs. Patch by Ville.
2633 Eventually this will go away once ipmaker is removed and the class
2641 Eventually this will go away once ipmaker is removed and the class
2634 gets cleaned up, but for now it's ok. Key functionality here is
2642 gets cleaned up, but for now it's ok. Key functionality here is
2635 the addition of the persistent storage mechanism, a dict for
2643 the addition of the persistent storage mechanism, a dict for
2636 keeping data across sessions (for now just bookmarks, but more can
2644 keeping data across sessions (for now just bookmarks, but more can
2637 be implemented later).
2645 be implemented later).
2638
2646
2639 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2647 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2640 persistent across sections. Patch by Ville, I modified it
2648 persistent across sections. Patch by Ville, I modified it
2641 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2649 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2642 added a '-l' option to list all bookmarks.
2650 added a '-l' option to list all bookmarks.
2643
2651
2644 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2652 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2645 center for cleanup. Registered with atexit.register(). I moved
2653 center for cleanup. Registered with atexit.register(). I moved
2646 here the old exit_cleanup(). After a patch by Ville.
2654 here the old exit_cleanup(). After a patch by Ville.
2647
2655
2648 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2656 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2649 characters in the hacked shlex_split for python 2.2.
2657 characters in the hacked shlex_split for python 2.2.
2650
2658
2651 * IPython/iplib.py (file_matches): more fixes to filenames with
2659 * IPython/iplib.py (file_matches): more fixes to filenames with
2652 whitespace in them. It's not perfect, but limitations in python's
2660 whitespace in them. It's not perfect, but limitations in python's
2653 readline make it impossible to go further.
2661 readline make it impossible to go further.
2654
2662
2655 2004-06-29 Fernando Perez <fperez@colorado.edu>
2663 2004-06-29 Fernando Perez <fperez@colorado.edu>
2656
2664
2657 * IPython/iplib.py (file_matches): escape whitespace correctly in
2665 * IPython/iplib.py (file_matches): escape whitespace correctly in
2658 filename completions. Bug reported by Ville.
2666 filename completions. Bug reported by Ville.
2659
2667
2660 2004-06-28 Fernando Perez <fperez@colorado.edu>
2668 2004-06-28 Fernando Perez <fperez@colorado.edu>
2661
2669
2662 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2670 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2663 the history file will be called 'history-PROFNAME' (or just
2671 the history file will be called 'history-PROFNAME' (or just
2664 'history' if no profile is loaded). I was getting annoyed at
2672 'history' if no profile is loaded). I was getting annoyed at
2665 getting my Numerical work history clobbered by pysh sessions.
2673 getting my Numerical work history clobbered by pysh sessions.
2666
2674
2667 * IPython/iplib.py (InteractiveShell.__init__): Internal
2675 * IPython/iplib.py (InteractiveShell.__init__): Internal
2668 getoutputerror() function so that we can honor the system_verbose
2676 getoutputerror() function so that we can honor the system_verbose
2669 flag for _all_ system calls. I also added escaping of #
2677 flag for _all_ system calls. I also added escaping of #
2670 characters here to avoid confusing Itpl.
2678 characters here to avoid confusing Itpl.
2671
2679
2672 * IPython/Magic.py (shlex_split): removed call to shell in
2680 * IPython/Magic.py (shlex_split): removed call to shell in
2673 parse_options and replaced it with shlex.split(). The annoying
2681 parse_options and replaced it with shlex.split(). The annoying
2674 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2682 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2675 to backport it from 2.3, with several frail hacks (the shlex
2683 to backport it from 2.3, with several frail hacks (the shlex
2676 module is rather limited in 2.2). Thanks to a suggestion by Ville
2684 module is rather limited in 2.2). Thanks to a suggestion by Ville
2677 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2685 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2678 problem.
2686 problem.
2679
2687
2680 (Magic.magic_system_verbose): new toggle to print the actual
2688 (Magic.magic_system_verbose): new toggle to print the actual
2681 system calls made by ipython. Mainly for debugging purposes.
2689 system calls made by ipython. Mainly for debugging purposes.
2682
2690
2683 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2691 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2684 doesn't support persistence. Reported (and fix suggested) by
2692 doesn't support persistence. Reported (and fix suggested) by
2685 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2693 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2686
2694
2687 2004-06-26 Fernando Perez <fperez@colorado.edu>
2695 2004-06-26 Fernando Perez <fperez@colorado.edu>
2688
2696
2689 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2697 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2690 continue prompts.
2698 continue prompts.
2691
2699
2692 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2700 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2693 function (basically a big docstring) and a few more things here to
2701 function (basically a big docstring) and a few more things here to
2694 speedup startup. pysh.py is now very lightweight. We want because
2702 speedup startup. pysh.py is now very lightweight. We want because
2695 it gets execfile'd, while InterpreterExec gets imported, so
2703 it gets execfile'd, while InterpreterExec gets imported, so
2696 byte-compilation saves time.
2704 byte-compilation saves time.
2697
2705
2698 2004-06-25 Fernando Perez <fperez@colorado.edu>
2706 2004-06-25 Fernando Perez <fperez@colorado.edu>
2699
2707
2700 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2708 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2701 -NUM', which was recently broken.
2709 -NUM', which was recently broken.
2702
2710
2703 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2711 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2704 in multi-line input (but not !!, which doesn't make sense there).
2712 in multi-line input (but not !!, which doesn't make sense there).
2705
2713
2706 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2714 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2707 It's just too useful, and people can turn it off in the less
2715 It's just too useful, and people can turn it off in the less
2708 common cases where it's a problem.
2716 common cases where it's a problem.
2709
2717
2710 2004-06-24 Fernando Perez <fperez@colorado.edu>
2718 2004-06-24 Fernando Perez <fperez@colorado.edu>
2711
2719
2712 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2720 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2713 special syntaxes (like alias calling) is now allied in multi-line
2721 special syntaxes (like alias calling) is now allied in multi-line
2714 input. This is still _very_ experimental, but it's necessary for
2722 input. This is still _very_ experimental, but it's necessary for
2715 efficient shell usage combining python looping syntax with system
2723 efficient shell usage combining python looping syntax with system
2716 calls. For now it's restricted to aliases, I don't think it
2724 calls. For now it's restricted to aliases, I don't think it
2717 really even makes sense to have this for magics.
2725 really even makes sense to have this for magics.
2718
2726
2719 2004-06-23 Fernando Perez <fperez@colorado.edu>
2727 2004-06-23 Fernando Perez <fperez@colorado.edu>
2720
2728
2721 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2729 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2722 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2730 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2723
2731
2724 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2732 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2725 extensions under Windows (after code sent by Gary Bishop). The
2733 extensions under Windows (after code sent by Gary Bishop). The
2726 extensions considered 'executable' are stored in IPython's rc
2734 extensions considered 'executable' are stored in IPython's rc
2727 structure as win_exec_ext.
2735 structure as win_exec_ext.
2728
2736
2729 * IPython/genutils.py (shell): new function, like system() but
2737 * IPython/genutils.py (shell): new function, like system() but
2730 without return value. Very useful for interactive shell work.
2738 without return value. Very useful for interactive shell work.
2731
2739
2732 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2740 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2733 delete aliases.
2741 delete aliases.
2734
2742
2735 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2743 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2736 sure that the alias table doesn't contain python keywords.
2744 sure that the alias table doesn't contain python keywords.
2737
2745
2738 2004-06-21 Fernando Perez <fperez@colorado.edu>
2746 2004-06-21 Fernando Perez <fperez@colorado.edu>
2739
2747
2740 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2748 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2741 non-existent items are found in $PATH. Reported by Thorsten.
2749 non-existent items are found in $PATH. Reported by Thorsten.
2742
2750
2743 2004-06-20 Fernando Perez <fperez@colorado.edu>
2751 2004-06-20 Fernando Perez <fperez@colorado.edu>
2744
2752
2745 * IPython/iplib.py (complete): modified the completer so that the
2753 * IPython/iplib.py (complete): modified the completer so that the
2746 order of priorities can be easily changed at runtime.
2754 order of priorities can be easily changed at runtime.
2747
2755
2748 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2756 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2749 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2757 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2750
2758
2751 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2759 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2752 expand Python variables prepended with $ in all system calls. The
2760 expand Python variables prepended with $ in all system calls. The
2753 same was done to InteractiveShell.handle_shell_escape. Now all
2761 same was done to InteractiveShell.handle_shell_escape. Now all
2754 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2762 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2755 expansion of python variables and expressions according to the
2763 expansion of python variables and expressions according to the
2756 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2764 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2757
2765
2758 Though PEP-215 has been rejected, a similar (but simpler) one
2766 Though PEP-215 has been rejected, a similar (but simpler) one
2759 seems like it will go into Python 2.4, PEP-292 -
2767 seems like it will go into Python 2.4, PEP-292 -
2760 http://www.python.org/peps/pep-0292.html.
2768 http://www.python.org/peps/pep-0292.html.
2761
2769
2762 I'll keep the full syntax of PEP-215, since IPython has since the
2770 I'll keep the full syntax of PEP-215, since IPython has since the
2763 start used Ka-Ping Yee's reference implementation discussed there
2771 start used Ka-Ping Yee's reference implementation discussed there
2764 (Itpl), and I actually like the powerful semantics it offers.
2772 (Itpl), and I actually like the powerful semantics it offers.
2765
2773
2766 In order to access normal shell variables, the $ has to be escaped
2774 In order to access normal shell variables, the $ has to be escaped
2767 via an extra $. For example:
2775 via an extra $. For example:
2768
2776
2769 In [7]: PATH='a python variable'
2777 In [7]: PATH='a python variable'
2770
2778
2771 In [8]: !echo $PATH
2779 In [8]: !echo $PATH
2772 a python variable
2780 a python variable
2773
2781
2774 In [9]: !echo $$PATH
2782 In [9]: !echo $$PATH
2775 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2783 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2776
2784
2777 (Magic.parse_options): escape $ so the shell doesn't evaluate
2785 (Magic.parse_options): escape $ so the shell doesn't evaluate
2778 things prematurely.
2786 things prematurely.
2779
2787
2780 * IPython/iplib.py (InteractiveShell.call_alias): added the
2788 * IPython/iplib.py (InteractiveShell.call_alias): added the
2781 ability for aliases to expand python variables via $.
2789 ability for aliases to expand python variables via $.
2782
2790
2783 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2791 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2784 system, now there's a @rehash/@rehashx pair of magics. These work
2792 system, now there's a @rehash/@rehashx pair of magics. These work
2785 like the csh rehash command, and can be invoked at any time. They
2793 like the csh rehash command, and can be invoked at any time. They
2786 build a table of aliases to everything in the user's $PATH
2794 build a table of aliases to everything in the user's $PATH
2787 (@rehash uses everything, @rehashx is slower but only adds
2795 (@rehash uses everything, @rehashx is slower but only adds
2788 executable files). With this, the pysh.py-based shell profile can
2796 executable files). With this, the pysh.py-based shell profile can
2789 now simply call rehash upon startup, and full access to all
2797 now simply call rehash upon startup, and full access to all
2790 programs in the user's path is obtained.
2798 programs in the user's path is obtained.
2791
2799
2792 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2800 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2793 functionality is now fully in place. I removed the old dynamic
2801 functionality is now fully in place. I removed the old dynamic
2794 code generation based approach, in favor of a much lighter one
2802 code generation based approach, in favor of a much lighter one
2795 based on a simple dict. The advantage is that this allows me to
2803 based on a simple dict. The advantage is that this allows me to
2796 now have thousands of aliases with negligible cost (unthinkable
2804 now have thousands of aliases with negligible cost (unthinkable
2797 with the old system).
2805 with the old system).
2798
2806
2799 2004-06-19 Fernando Perez <fperez@colorado.edu>
2807 2004-06-19 Fernando Perez <fperez@colorado.edu>
2800
2808
2801 * IPython/iplib.py (__init__): extended MagicCompleter class to
2809 * IPython/iplib.py (__init__): extended MagicCompleter class to
2802 also complete (last in priority) on user aliases.
2810 also complete (last in priority) on user aliases.
2803
2811
2804 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2812 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2805 call to eval.
2813 call to eval.
2806 (ItplNS.__init__): Added a new class which functions like Itpl,
2814 (ItplNS.__init__): Added a new class which functions like Itpl,
2807 but allows configuring the namespace for the evaluation to occur
2815 but allows configuring the namespace for the evaluation to occur
2808 in.
2816 in.
2809
2817
2810 2004-06-18 Fernando Perez <fperez@colorado.edu>
2818 2004-06-18 Fernando Perez <fperez@colorado.edu>
2811
2819
2812 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2820 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2813 better message when 'exit' or 'quit' are typed (a common newbie
2821 better message when 'exit' or 'quit' are typed (a common newbie
2814 confusion).
2822 confusion).
2815
2823
2816 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2824 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2817 check for Windows users.
2825 check for Windows users.
2818
2826
2819 * IPython/iplib.py (InteractiveShell.user_setup): removed
2827 * IPython/iplib.py (InteractiveShell.user_setup): removed
2820 disabling of colors for Windows. I'll test at runtime and issue a
2828 disabling of colors for Windows. I'll test at runtime and issue a
2821 warning if Gary's readline isn't found, as to nudge users to
2829 warning if Gary's readline isn't found, as to nudge users to
2822 download it.
2830 download it.
2823
2831
2824 2004-06-16 Fernando Perez <fperez@colorado.edu>
2832 2004-06-16 Fernando Perez <fperez@colorado.edu>
2825
2833
2826 * IPython/genutils.py (Stream.__init__): changed to print errors
2834 * IPython/genutils.py (Stream.__init__): changed to print errors
2827 to sys.stderr. I had a circular dependency here. Now it's
2835 to sys.stderr. I had a circular dependency here. Now it's
2828 possible to run ipython as IDLE's shell (consider this pre-alpha,
2836 possible to run ipython as IDLE's shell (consider this pre-alpha,
2829 since true stdout things end up in the starting terminal instead
2837 since true stdout things end up in the starting terminal instead
2830 of IDLE's out).
2838 of IDLE's out).
2831
2839
2832 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2840 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2833 users who haven't # updated their prompt_in2 definitions. Remove
2841 users who haven't # updated their prompt_in2 definitions. Remove
2834 eventually.
2842 eventually.
2835 (multiple_replace): added credit to original ASPN recipe.
2843 (multiple_replace): added credit to original ASPN recipe.
2836
2844
2837 2004-06-15 Fernando Perez <fperez@colorado.edu>
2845 2004-06-15 Fernando Perez <fperez@colorado.edu>
2838
2846
2839 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2847 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2840 list of auto-defined aliases.
2848 list of auto-defined aliases.
2841
2849
2842 2004-06-13 Fernando Perez <fperez@colorado.edu>
2850 2004-06-13 Fernando Perez <fperez@colorado.edu>
2843
2851
2844 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2852 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2845 install was really requested (so setup.py can be used for other
2853 install was really requested (so setup.py can be used for other
2846 things under Windows).
2854 things under Windows).
2847
2855
2848 2004-06-10 Fernando Perez <fperez@colorado.edu>
2856 2004-06-10 Fernando Perez <fperez@colorado.edu>
2849
2857
2850 * IPython/Logger.py (Logger.create_log): Manually remove any old
2858 * IPython/Logger.py (Logger.create_log): Manually remove any old
2851 backup, since os.remove may fail under Windows. Fixes bug
2859 backup, since os.remove may fail under Windows. Fixes bug
2852 reported by Thorsten.
2860 reported by Thorsten.
2853
2861
2854 2004-06-09 Fernando Perez <fperez@colorado.edu>
2862 2004-06-09 Fernando Perez <fperez@colorado.edu>
2855
2863
2856 * examples/example-embed.py: fixed all references to %n (replaced
2864 * examples/example-embed.py: fixed all references to %n (replaced
2857 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2865 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2858 for all examples and the manual as well.
2866 for all examples and the manual as well.
2859
2867
2860 2004-06-08 Fernando Perez <fperez@colorado.edu>
2868 2004-06-08 Fernando Perez <fperez@colorado.edu>
2861
2869
2862 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2870 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2863 alignment and color management. All 3 prompt subsystems now
2871 alignment and color management. All 3 prompt subsystems now
2864 inherit from BasePrompt.
2872 inherit from BasePrompt.
2865
2873
2866 * tools/release: updates for windows installer build and tag rpms
2874 * tools/release: updates for windows installer build and tag rpms
2867 with python version (since paths are fixed).
2875 with python version (since paths are fixed).
2868
2876
2869 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2877 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2870 which will become eventually obsolete. Also fixed the default
2878 which will become eventually obsolete. Also fixed the default
2871 prompt_in2 to use \D, so at least new users start with the correct
2879 prompt_in2 to use \D, so at least new users start with the correct
2872 defaults.
2880 defaults.
2873 WARNING: Users with existing ipythonrc files will need to apply
2881 WARNING: Users with existing ipythonrc files will need to apply
2874 this fix manually!
2882 this fix manually!
2875
2883
2876 * setup.py: make windows installer (.exe). This is finally the
2884 * setup.py: make windows installer (.exe). This is finally the
2877 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2885 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2878 which I hadn't included because it required Python 2.3 (or recent
2886 which I hadn't included because it required Python 2.3 (or recent
2879 distutils).
2887 distutils).
2880
2888
2881 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2889 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2882 usage of new '\D' escape.
2890 usage of new '\D' escape.
2883
2891
2884 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2892 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2885 lacks os.getuid())
2893 lacks os.getuid())
2886 (CachedOutput.set_colors): Added the ability to turn coloring
2894 (CachedOutput.set_colors): Added the ability to turn coloring
2887 on/off with @colors even for manually defined prompt colors. It
2895 on/off with @colors even for manually defined prompt colors. It
2888 uses a nasty global, but it works safely and via the generic color
2896 uses a nasty global, but it works safely and via the generic color
2889 handling mechanism.
2897 handling mechanism.
2890 (Prompt2.__init__): Introduced new escape '\D' for continuation
2898 (Prompt2.__init__): Introduced new escape '\D' for continuation
2891 prompts. It represents the counter ('\#') as dots.
2899 prompts. It represents the counter ('\#') as dots.
2892 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2900 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2893 need to update their ipythonrc files and replace '%n' with '\D' in
2901 need to update their ipythonrc files and replace '%n' with '\D' in
2894 their prompt_in2 settings everywhere. Sorry, but there's
2902 their prompt_in2 settings everywhere. Sorry, but there's
2895 otherwise no clean way to get all prompts to properly align. The
2903 otherwise no clean way to get all prompts to properly align. The
2896 ipythonrc shipped with IPython has been updated.
2904 ipythonrc shipped with IPython has been updated.
2897
2905
2898 2004-06-07 Fernando Perez <fperez@colorado.edu>
2906 2004-06-07 Fernando Perez <fperez@colorado.edu>
2899
2907
2900 * setup.py (isfile): Pass local_icons option to latex2html, so the
2908 * setup.py (isfile): Pass local_icons option to latex2html, so the
2901 resulting HTML file is self-contained. Thanks to
2909 resulting HTML file is self-contained. Thanks to
2902 dryice-AT-liu.com.cn for the tip.
2910 dryice-AT-liu.com.cn for the tip.
2903
2911
2904 * pysh.py: I created a new profile 'shell', which implements a
2912 * pysh.py: I created a new profile 'shell', which implements a
2905 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2913 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2906 system shell, nor will it become one anytime soon. It's mainly
2914 system shell, nor will it become one anytime soon. It's mainly
2907 meant to illustrate the use of the new flexible bash-like prompts.
2915 meant to illustrate the use of the new flexible bash-like prompts.
2908 I guess it could be used by hardy souls for true shell management,
2916 I guess it could be used by hardy souls for true shell management,
2909 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2917 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2910 profile. This uses the InterpreterExec extension provided by
2918 profile. This uses the InterpreterExec extension provided by
2911 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2919 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2912
2920
2913 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2921 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2914 auto-align itself with the length of the previous input prompt
2922 auto-align itself with the length of the previous input prompt
2915 (taking into account the invisible color escapes).
2923 (taking into account the invisible color escapes).
2916 (CachedOutput.__init__): Large restructuring of this class. Now
2924 (CachedOutput.__init__): Large restructuring of this class. Now
2917 all three prompts (primary1, primary2, output) are proper objects,
2925 all three prompts (primary1, primary2, output) are proper objects,
2918 managed by the 'parent' CachedOutput class. The code is still a
2926 managed by the 'parent' CachedOutput class. The code is still a
2919 bit hackish (all prompts share state via a pointer to the cache),
2927 bit hackish (all prompts share state via a pointer to the cache),
2920 but it's overall far cleaner than before.
2928 but it's overall far cleaner than before.
2921
2929
2922 * IPython/genutils.py (getoutputerror): modified to add verbose,
2930 * IPython/genutils.py (getoutputerror): modified to add verbose,
2923 debug and header options. This makes the interface of all getout*
2931 debug and header options. This makes the interface of all getout*
2924 functions uniform.
2932 functions uniform.
2925 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2933 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2926
2934
2927 * IPython/Magic.py (Magic.default_option): added a function to
2935 * IPython/Magic.py (Magic.default_option): added a function to
2928 allow registering default options for any magic command. This
2936 allow registering default options for any magic command. This
2929 makes it easy to have profiles which customize the magics globally
2937 makes it easy to have profiles which customize the magics globally
2930 for a certain use. The values set through this function are
2938 for a certain use. The values set through this function are
2931 picked up by the parse_options() method, which all magics should
2939 picked up by the parse_options() method, which all magics should
2932 use to parse their options.
2940 use to parse their options.
2933
2941
2934 * IPython/genutils.py (warn): modified the warnings framework to
2942 * IPython/genutils.py (warn): modified the warnings framework to
2935 use the Term I/O class. I'm trying to slowly unify all of
2943 use the Term I/O class. I'm trying to slowly unify all of
2936 IPython's I/O operations to pass through Term.
2944 IPython's I/O operations to pass through Term.
2937
2945
2938 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2946 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2939 the secondary prompt to correctly match the length of the primary
2947 the secondary prompt to correctly match the length of the primary
2940 one for any prompt. Now multi-line code will properly line up
2948 one for any prompt. Now multi-line code will properly line up
2941 even for path dependent prompts, such as the new ones available
2949 even for path dependent prompts, such as the new ones available
2942 via the prompt_specials.
2950 via the prompt_specials.
2943
2951
2944 2004-06-06 Fernando Perez <fperez@colorado.edu>
2952 2004-06-06 Fernando Perez <fperez@colorado.edu>
2945
2953
2946 * IPython/Prompts.py (prompt_specials): Added the ability to have
2954 * IPython/Prompts.py (prompt_specials): Added the ability to have
2947 bash-like special sequences in the prompts, which get
2955 bash-like special sequences in the prompts, which get
2948 automatically expanded. Things like hostname, current working
2956 automatically expanded. Things like hostname, current working
2949 directory and username are implemented already, but it's easy to
2957 directory and username are implemented already, but it's easy to
2950 add more in the future. Thanks to a patch by W.J. van der Laan
2958 add more in the future. Thanks to a patch by W.J. van der Laan
2951 <gnufnork-AT-hetdigitalegat.nl>
2959 <gnufnork-AT-hetdigitalegat.nl>
2952 (prompt_specials): Added color support for prompt strings, so
2960 (prompt_specials): Added color support for prompt strings, so
2953 users can define arbitrary color setups for their prompts.
2961 users can define arbitrary color setups for their prompts.
2954
2962
2955 2004-06-05 Fernando Perez <fperez@colorado.edu>
2963 2004-06-05 Fernando Perez <fperez@colorado.edu>
2956
2964
2957 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2965 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2958 code to load Gary Bishop's readline and configure it
2966 code to load Gary Bishop's readline and configure it
2959 automatically. Thanks to Gary for help on this.
2967 automatically. Thanks to Gary for help on this.
2960
2968
2961 2004-06-01 Fernando Perez <fperez@colorado.edu>
2969 2004-06-01 Fernando Perez <fperez@colorado.edu>
2962
2970
2963 * IPython/Logger.py (Logger.create_log): fix bug for logging
2971 * IPython/Logger.py (Logger.create_log): fix bug for logging
2964 with no filename (previous fix was incomplete).
2972 with no filename (previous fix was incomplete).
2965
2973
2966 2004-05-25 Fernando Perez <fperez@colorado.edu>
2974 2004-05-25 Fernando Perez <fperez@colorado.edu>
2967
2975
2968 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2976 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2969 parens would get passed to the shell.
2977 parens would get passed to the shell.
2970
2978
2971 2004-05-20 Fernando Perez <fperez@colorado.edu>
2979 2004-05-20 Fernando Perez <fperez@colorado.edu>
2972
2980
2973 * IPython/Magic.py (Magic.magic_prun): changed default profile
2981 * IPython/Magic.py (Magic.magic_prun): changed default profile
2974 sort order to 'time' (the more common profiling need).
2982 sort order to 'time' (the more common profiling need).
2975
2983
2976 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2984 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2977 so that source code shown is guaranteed in sync with the file on
2985 so that source code shown is guaranteed in sync with the file on
2978 disk (also changed in psource). Similar fix to the one for
2986 disk (also changed in psource). Similar fix to the one for
2979 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2987 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2980 <yann.ledu-AT-noos.fr>.
2988 <yann.ledu-AT-noos.fr>.
2981
2989
2982 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2990 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2983 with a single option would not be correctly parsed. Closes
2991 with a single option would not be correctly parsed. Closes
2984 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2992 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2985 introduced in 0.6.0 (on 2004-05-06).
2993 introduced in 0.6.0 (on 2004-05-06).
2986
2994
2987 2004-05-13 *** Released version 0.6.0
2995 2004-05-13 *** Released version 0.6.0
2988
2996
2989 2004-05-13 Fernando Perez <fperez@colorado.edu>
2997 2004-05-13 Fernando Perez <fperez@colorado.edu>
2990
2998
2991 * debian/: Added debian/ directory to CVS, so that debian support
2999 * debian/: Added debian/ directory to CVS, so that debian support
2992 is publicly accessible. The debian package is maintained by Jack
3000 is publicly accessible. The debian package is maintained by Jack
2993 Moffit <jack-AT-xiph.org>.
3001 Moffit <jack-AT-xiph.org>.
2994
3002
2995 * Documentation: included the notes about an ipython-based system
3003 * Documentation: included the notes about an ipython-based system
2996 shell (the hypothetical 'pysh') into the new_design.pdf document,
3004 shell (the hypothetical 'pysh') into the new_design.pdf document,
2997 so that these ideas get distributed to users along with the
3005 so that these ideas get distributed to users along with the
2998 official documentation.
3006 official documentation.
2999
3007
3000 2004-05-10 Fernando Perez <fperez@colorado.edu>
3008 2004-05-10 Fernando Perez <fperez@colorado.edu>
3001
3009
3002 * IPython/Logger.py (Logger.create_log): fix recently introduced
3010 * IPython/Logger.py (Logger.create_log): fix recently introduced
3003 bug (misindented line) where logstart would fail when not given an
3011 bug (misindented line) where logstart would fail when not given an
3004 explicit filename.
3012 explicit filename.
3005
3013
3006 2004-05-09 Fernando Perez <fperez@colorado.edu>
3014 2004-05-09 Fernando Perez <fperez@colorado.edu>
3007
3015
3008 * IPython/Magic.py (Magic.parse_options): skip system call when
3016 * IPython/Magic.py (Magic.parse_options): skip system call when
3009 there are no options to look for. Faster, cleaner for the common
3017 there are no options to look for. Faster, cleaner for the common
3010 case.
3018 case.
3011
3019
3012 * Documentation: many updates to the manual: describing Windows
3020 * Documentation: many updates to the manual: describing Windows
3013 support better, Gnuplot updates, credits, misc small stuff. Also
3021 support better, Gnuplot updates, credits, misc small stuff. Also
3014 updated the new_design doc a bit.
3022 updated the new_design doc a bit.
3015
3023
3016 2004-05-06 *** Released version 0.6.0.rc1
3024 2004-05-06 *** Released version 0.6.0.rc1
3017
3025
3018 2004-05-06 Fernando Perez <fperez@colorado.edu>
3026 2004-05-06 Fernando Perez <fperez@colorado.edu>
3019
3027
3020 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3028 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3021 operations to use the vastly more efficient list/''.join() method.
3029 operations to use the vastly more efficient list/''.join() method.
3022 (FormattedTB.text): Fix
3030 (FormattedTB.text): Fix
3023 http://www.scipy.net/roundup/ipython/issue12 - exception source
3031 http://www.scipy.net/roundup/ipython/issue12 - exception source
3024 extract not updated after reload. Thanks to Mike Salib
3032 extract not updated after reload. Thanks to Mike Salib
3025 <msalib-AT-mit.edu> for pinning the source of the problem.
3033 <msalib-AT-mit.edu> for pinning the source of the problem.
3026 Fortunately, the solution works inside ipython and doesn't require
3034 Fortunately, the solution works inside ipython and doesn't require
3027 any changes to python proper.
3035 any changes to python proper.
3028
3036
3029 * IPython/Magic.py (Magic.parse_options): Improved to process the
3037 * IPython/Magic.py (Magic.parse_options): Improved to process the
3030 argument list as a true shell would (by actually using the
3038 argument list as a true shell would (by actually using the
3031 underlying system shell). This way, all @magics automatically get
3039 underlying system shell). This way, all @magics automatically get
3032 shell expansion for variables. Thanks to a comment by Alex
3040 shell expansion for variables. Thanks to a comment by Alex
3033 Schmolck.
3041 Schmolck.
3034
3042
3035 2004-04-04 Fernando Perez <fperez@colorado.edu>
3043 2004-04-04 Fernando Perez <fperez@colorado.edu>
3036
3044
3037 * IPython/iplib.py (InteractiveShell.interact): Added a special
3045 * IPython/iplib.py (InteractiveShell.interact): Added a special
3038 trap for a debugger quit exception, which is basically impossible
3046 trap for a debugger quit exception, which is basically impossible
3039 to handle by normal mechanisms, given what pdb does to the stack.
3047 to handle by normal mechanisms, given what pdb does to the stack.
3040 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3048 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3041
3049
3042 2004-04-03 Fernando Perez <fperez@colorado.edu>
3050 2004-04-03 Fernando Perez <fperez@colorado.edu>
3043
3051
3044 * IPython/genutils.py (Term): Standardized the names of the Term
3052 * IPython/genutils.py (Term): Standardized the names of the Term
3045 class streams to cin/cout/cerr, following C++ naming conventions
3053 class streams to cin/cout/cerr, following C++ naming conventions
3046 (I can't use in/out/err because 'in' is not a valid attribute
3054 (I can't use in/out/err because 'in' is not a valid attribute
3047 name).
3055 name).
3048
3056
3049 * IPython/iplib.py (InteractiveShell.interact): don't increment
3057 * IPython/iplib.py (InteractiveShell.interact): don't increment
3050 the prompt if there's no user input. By Daniel 'Dang' Griffith
3058 the prompt if there's no user input. By Daniel 'Dang' Griffith
3051 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3059 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3052 Francois Pinard.
3060 Francois Pinard.
3053
3061
3054 2004-04-02 Fernando Perez <fperez@colorado.edu>
3062 2004-04-02 Fernando Perez <fperez@colorado.edu>
3055
3063
3056 * IPython/genutils.py (Stream.__init__): Modified to survive at
3064 * IPython/genutils.py (Stream.__init__): Modified to survive at
3057 least importing in contexts where stdin/out/err aren't true file
3065 least importing in contexts where stdin/out/err aren't true file
3058 objects, such as PyCrust (they lack fileno() and mode). However,
3066 objects, such as PyCrust (they lack fileno() and mode). However,
3059 the recovery facilities which rely on these things existing will
3067 the recovery facilities which rely on these things existing will
3060 not work.
3068 not work.
3061
3069
3062 2004-04-01 Fernando Perez <fperez@colorado.edu>
3070 2004-04-01 Fernando Perez <fperez@colorado.edu>
3063
3071
3064 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3072 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3065 use the new getoutputerror() function, so it properly
3073 use the new getoutputerror() function, so it properly
3066 distinguishes stdout/err.
3074 distinguishes stdout/err.
3067
3075
3068 * IPython/genutils.py (getoutputerror): added a function to
3076 * IPython/genutils.py (getoutputerror): added a function to
3069 capture separately the standard output and error of a command.
3077 capture separately the standard output and error of a command.
3070 After a comment from dang on the mailing lists. This code is
3078 After a comment from dang on the mailing lists. This code is
3071 basically a modified version of commands.getstatusoutput(), from
3079 basically a modified version of commands.getstatusoutput(), from
3072 the standard library.
3080 the standard library.
3073
3081
3074 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3082 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3075 '!!' as a special syntax (shorthand) to access @sx.
3083 '!!' as a special syntax (shorthand) to access @sx.
3076
3084
3077 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3085 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3078 command and return its output as a list split on '\n'.
3086 command and return its output as a list split on '\n'.
3079
3087
3080 2004-03-31 Fernando Perez <fperez@colorado.edu>
3088 2004-03-31 Fernando Perez <fperez@colorado.edu>
3081
3089
3082 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3090 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3083 method to dictionaries used as FakeModule instances if they lack
3091 method to dictionaries used as FakeModule instances if they lack
3084 it. At least pydoc in python2.3 breaks for runtime-defined
3092 it. At least pydoc in python2.3 breaks for runtime-defined
3085 functions without this hack. At some point I need to _really_
3093 functions without this hack. At some point I need to _really_
3086 understand what FakeModule is doing, because it's a gross hack.
3094 understand what FakeModule is doing, because it's a gross hack.
3087 But it solves Arnd's problem for now...
3095 But it solves Arnd's problem for now...
3088
3096
3089 2004-02-27 Fernando Perez <fperez@colorado.edu>
3097 2004-02-27 Fernando Perez <fperez@colorado.edu>
3090
3098
3091 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3099 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3092 mode would behave erratically. Also increased the number of
3100 mode would behave erratically. Also increased the number of
3093 possible logs in rotate mod to 999. Thanks to Rod Holland
3101 possible logs in rotate mod to 999. Thanks to Rod Holland
3094 <rhh@StructureLABS.com> for the report and fixes.
3102 <rhh@StructureLABS.com> for the report and fixes.
3095
3103
3096 2004-02-26 Fernando Perez <fperez@colorado.edu>
3104 2004-02-26 Fernando Perez <fperez@colorado.edu>
3097
3105
3098 * IPython/genutils.py (page): Check that the curses module really
3106 * IPython/genutils.py (page): Check that the curses module really
3099 has the initscr attribute before trying to use it. For some
3107 has the initscr attribute before trying to use it. For some
3100 reason, the Solaris curses module is missing this. I think this
3108 reason, the Solaris curses module is missing this. I think this
3101 should be considered a Solaris python bug, but I'm not sure.
3109 should be considered a Solaris python bug, but I'm not sure.
3102
3110
3103 2004-01-17 Fernando Perez <fperez@colorado.edu>
3111 2004-01-17 Fernando Perez <fperez@colorado.edu>
3104
3112
3105 * IPython/genutils.py (Stream.__init__): Changes to try to make
3113 * IPython/genutils.py (Stream.__init__): Changes to try to make
3106 ipython robust against stdin/out/err being closed by the user.
3114 ipython robust against stdin/out/err being closed by the user.
3107 This is 'user error' (and blocks a normal python session, at least
3115 This is 'user error' (and blocks a normal python session, at least
3108 the stdout case). However, Ipython should be able to survive such
3116 the stdout case). However, Ipython should be able to survive such
3109 instances of abuse as gracefully as possible. To simplify the
3117 instances of abuse as gracefully as possible. To simplify the
3110 coding and maintain compatibility with Gary Bishop's Term
3118 coding and maintain compatibility with Gary Bishop's Term
3111 contributions, I've made use of classmethods for this. I think
3119 contributions, I've made use of classmethods for this. I think
3112 this introduces a dependency on python 2.2.
3120 this introduces a dependency on python 2.2.
3113
3121
3114 2004-01-13 Fernando Perez <fperez@colorado.edu>
3122 2004-01-13 Fernando Perez <fperez@colorado.edu>
3115
3123
3116 * IPython/numutils.py (exp_safe): simplified the code a bit and
3124 * IPython/numutils.py (exp_safe): simplified the code a bit and
3117 removed the need for importing the kinds module altogether.
3125 removed the need for importing the kinds module altogether.
3118
3126
3119 2004-01-06 Fernando Perez <fperez@colorado.edu>
3127 2004-01-06 Fernando Perez <fperez@colorado.edu>
3120
3128
3121 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3129 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3122 a magic function instead, after some community feedback. No
3130 a magic function instead, after some community feedback. No
3123 special syntax will exist for it, but its name is deliberately
3131 special syntax will exist for it, but its name is deliberately
3124 very short.
3132 very short.
3125
3133
3126 2003-12-20 Fernando Perez <fperez@colorado.edu>
3134 2003-12-20 Fernando Perez <fperez@colorado.edu>
3127
3135
3128 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3136 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3129 new functionality, to automagically assign the result of a shell
3137 new functionality, to automagically assign the result of a shell
3130 command to a variable. I'll solicit some community feedback on
3138 command to a variable. I'll solicit some community feedback on
3131 this before making it permanent.
3139 this before making it permanent.
3132
3140
3133 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3141 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3134 requested about callables for which inspect couldn't obtain a
3142 requested about callables for which inspect couldn't obtain a
3135 proper argspec. Thanks to a crash report sent by Etienne
3143 proper argspec. Thanks to a crash report sent by Etienne
3136 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3144 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3137
3145
3138 2003-12-09 Fernando Perez <fperez@colorado.edu>
3146 2003-12-09 Fernando Perez <fperez@colorado.edu>
3139
3147
3140 * IPython/genutils.py (page): patch for the pager to work across
3148 * IPython/genutils.py (page): patch for the pager to work across
3141 various versions of Windows. By Gary Bishop.
3149 various versions of Windows. By Gary Bishop.
3142
3150
3143 2003-12-04 Fernando Perez <fperez@colorado.edu>
3151 2003-12-04 Fernando Perez <fperez@colorado.edu>
3144
3152
3145 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3153 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3146 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3154 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3147 While I tested this and it looks ok, there may still be corner
3155 While I tested this and it looks ok, there may still be corner
3148 cases I've missed.
3156 cases I've missed.
3149
3157
3150 2003-12-01 Fernando Perez <fperez@colorado.edu>
3158 2003-12-01 Fernando Perez <fperez@colorado.edu>
3151
3159
3152 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3160 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3153 where a line like 'p,q=1,2' would fail because the automagic
3161 where a line like 'p,q=1,2' would fail because the automagic
3154 system would be triggered for @p.
3162 system would be triggered for @p.
3155
3163
3156 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3164 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3157 cleanups, code unmodified.
3165 cleanups, code unmodified.
3158
3166
3159 * IPython/genutils.py (Term): added a class for IPython to handle
3167 * IPython/genutils.py (Term): added a class for IPython to handle
3160 output. In most cases it will just be a proxy for stdout/err, but
3168 output. In most cases it will just be a proxy for stdout/err, but
3161 having this allows modifications to be made for some platforms,
3169 having this allows modifications to be made for some platforms,
3162 such as handling color escapes under Windows. All of this code
3170 such as handling color escapes under Windows. All of this code
3163 was contributed by Gary Bishop, with minor modifications by me.
3171 was contributed by Gary Bishop, with minor modifications by me.
3164 The actual changes affect many files.
3172 The actual changes affect many files.
3165
3173
3166 2003-11-30 Fernando Perez <fperez@colorado.edu>
3174 2003-11-30 Fernando Perez <fperez@colorado.edu>
3167
3175
3168 * IPython/iplib.py (file_matches): new completion code, courtesy
3176 * IPython/iplib.py (file_matches): new completion code, courtesy
3169 of Jeff Collins. This enables filename completion again under
3177 of Jeff Collins. This enables filename completion again under
3170 python 2.3, which disabled it at the C level.
3178 python 2.3, which disabled it at the C level.
3171
3179
3172 2003-11-11 Fernando Perez <fperez@colorado.edu>
3180 2003-11-11 Fernando Perez <fperez@colorado.edu>
3173
3181
3174 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3182 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3175 for Numeric.array(map(...)), but often convenient.
3183 for Numeric.array(map(...)), but often convenient.
3176
3184
3177 2003-11-05 Fernando Perez <fperez@colorado.edu>
3185 2003-11-05 Fernando Perez <fperez@colorado.edu>
3178
3186
3179 * IPython/numutils.py (frange): Changed a call from int() to
3187 * IPython/numutils.py (frange): Changed a call from int() to
3180 int(round()) to prevent a problem reported with arange() in the
3188 int(round()) to prevent a problem reported with arange() in the
3181 numpy list.
3189 numpy list.
3182
3190
3183 2003-10-06 Fernando Perez <fperez@colorado.edu>
3191 2003-10-06 Fernando Perez <fperez@colorado.edu>
3184
3192
3185 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3193 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3186 prevent crashes if sys lacks an argv attribute (it happens with
3194 prevent crashes if sys lacks an argv attribute (it happens with
3187 embedded interpreters which build a bare-bones sys module).
3195 embedded interpreters which build a bare-bones sys module).
3188 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3196 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3189
3197
3190 2003-09-24 Fernando Perez <fperez@colorado.edu>
3198 2003-09-24 Fernando Perez <fperez@colorado.edu>
3191
3199
3192 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3200 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3193 to protect against poorly written user objects where __getattr__
3201 to protect against poorly written user objects where __getattr__
3194 raises exceptions other than AttributeError. Thanks to a bug
3202 raises exceptions other than AttributeError. Thanks to a bug
3195 report by Oliver Sander <osander-AT-gmx.de>.
3203 report by Oliver Sander <osander-AT-gmx.de>.
3196
3204
3197 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3205 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3198 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3206 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3199
3207
3200 2003-09-09 Fernando Perez <fperez@colorado.edu>
3208 2003-09-09 Fernando Perez <fperez@colorado.edu>
3201
3209
3202 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3210 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3203 unpacking a list whith a callable as first element would
3211 unpacking a list whith a callable as first element would
3204 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3212 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3205 Collins.
3213 Collins.
3206
3214
3207 2003-08-25 *** Released version 0.5.0
3215 2003-08-25 *** Released version 0.5.0
3208
3216
3209 2003-08-22 Fernando Perez <fperez@colorado.edu>
3217 2003-08-22 Fernando Perez <fperez@colorado.edu>
3210
3218
3211 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3219 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3212 improperly defined user exceptions. Thanks to feedback from Mark
3220 improperly defined user exceptions. Thanks to feedback from Mark
3213 Russell <mrussell-AT-verio.net>.
3221 Russell <mrussell-AT-verio.net>.
3214
3222
3215 2003-08-20 Fernando Perez <fperez@colorado.edu>
3223 2003-08-20 Fernando Perez <fperez@colorado.edu>
3216
3224
3217 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3225 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3218 printing so that it would print multi-line string forms starting
3226 printing so that it would print multi-line string forms starting
3219 with a new line. This way the formatting is better respected for
3227 with a new line. This way the formatting is better respected for
3220 objects which work hard to make nice string forms.
3228 objects which work hard to make nice string forms.
3221
3229
3222 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3230 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3223 autocall would overtake data access for objects with both
3231 autocall would overtake data access for objects with both
3224 __getitem__ and __call__.
3232 __getitem__ and __call__.
3225
3233
3226 2003-08-19 *** Released version 0.5.0-rc1
3234 2003-08-19 *** Released version 0.5.0-rc1
3227
3235
3228 2003-08-19 Fernando Perez <fperez@colorado.edu>
3236 2003-08-19 Fernando Perez <fperez@colorado.edu>
3229
3237
3230 * IPython/deep_reload.py (load_tail): single tiny change here
3238 * IPython/deep_reload.py (load_tail): single tiny change here
3231 seems to fix the long-standing bug of dreload() failing to work
3239 seems to fix the long-standing bug of dreload() failing to work
3232 for dotted names. But this module is pretty tricky, so I may have
3240 for dotted names. But this module is pretty tricky, so I may have
3233 missed some subtlety. Needs more testing!.
3241 missed some subtlety. Needs more testing!.
3234
3242
3235 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3243 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3236 exceptions which have badly implemented __str__ methods.
3244 exceptions which have badly implemented __str__ methods.
3237 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3245 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3238 which I've been getting reports about from Python 2.3 users. I
3246 which I've been getting reports about from Python 2.3 users. I
3239 wish I had a simple test case to reproduce the problem, so I could
3247 wish I had a simple test case to reproduce the problem, so I could
3240 either write a cleaner workaround or file a bug report if
3248 either write a cleaner workaround or file a bug report if
3241 necessary.
3249 necessary.
3242
3250
3243 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3251 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3244 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3252 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3245 a bug report by Tjabo Kloppenburg.
3253 a bug report by Tjabo Kloppenburg.
3246
3254
3247 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3255 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3248 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3256 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3249 seems rather unstable. Thanks to a bug report by Tjabo
3257 seems rather unstable. Thanks to a bug report by Tjabo
3250 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3258 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3251
3259
3252 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3260 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3253 this out soon because of the critical fixes in the inner loop for
3261 this out soon because of the critical fixes in the inner loop for
3254 generators.
3262 generators.
3255
3263
3256 * IPython/Magic.py (Magic.getargspec): removed. This (and
3264 * IPython/Magic.py (Magic.getargspec): removed. This (and
3257 _get_def) have been obsoleted by OInspect for a long time, I
3265 _get_def) have been obsoleted by OInspect for a long time, I
3258 hadn't noticed that they were dead code.
3266 hadn't noticed that they were dead code.
3259 (Magic._ofind): restored _ofind functionality for a few literals
3267 (Magic._ofind): restored _ofind functionality for a few literals
3260 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3268 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3261 for things like "hello".capitalize?, since that would require a
3269 for things like "hello".capitalize?, since that would require a
3262 potentially dangerous eval() again.
3270 potentially dangerous eval() again.
3263
3271
3264 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3272 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3265 logic a bit more to clean up the escapes handling and minimize the
3273 logic a bit more to clean up the escapes handling and minimize the
3266 use of _ofind to only necessary cases. The interactive 'feel' of
3274 use of _ofind to only necessary cases. The interactive 'feel' of
3267 IPython should have improved quite a bit with the changes in
3275 IPython should have improved quite a bit with the changes in
3268 _prefilter and _ofind (besides being far safer than before).
3276 _prefilter and _ofind (besides being far safer than before).
3269
3277
3270 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3278 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3271 obscure, never reported). Edit would fail to find the object to
3279 obscure, never reported). Edit would fail to find the object to
3272 edit under some circumstances.
3280 edit under some circumstances.
3273 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3281 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3274 which were causing double-calling of generators. Those eval calls
3282 which were causing double-calling of generators. Those eval calls
3275 were _very_ dangerous, since code with side effects could be
3283 were _very_ dangerous, since code with side effects could be
3276 triggered. As they say, 'eval is evil'... These were the
3284 triggered. As they say, 'eval is evil'... These were the
3277 nastiest evals in IPython. Besides, _ofind is now far simpler,
3285 nastiest evals in IPython. Besides, _ofind is now far simpler,
3278 and it should also be quite a bit faster. Its use of inspect is
3286 and it should also be quite a bit faster. Its use of inspect is
3279 also safer, so perhaps some of the inspect-related crashes I've
3287 also safer, so perhaps some of the inspect-related crashes I've
3280 seen lately with Python 2.3 might be taken care of. That will
3288 seen lately with Python 2.3 might be taken care of. That will
3281 need more testing.
3289 need more testing.
3282
3290
3283 2003-08-17 Fernando Perez <fperez@colorado.edu>
3291 2003-08-17 Fernando Perez <fperez@colorado.edu>
3284
3292
3285 * IPython/iplib.py (InteractiveShell._prefilter): significant
3293 * IPython/iplib.py (InteractiveShell._prefilter): significant
3286 simplifications to the logic for handling user escapes. Faster
3294 simplifications to the logic for handling user escapes. Faster
3287 and simpler code.
3295 and simpler code.
3288
3296
3289 2003-08-14 Fernando Perez <fperez@colorado.edu>
3297 2003-08-14 Fernando Perez <fperez@colorado.edu>
3290
3298
3291 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3299 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3292 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3300 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3293 but it should be quite a bit faster. And the recursive version
3301 but it should be quite a bit faster. And the recursive version
3294 generated O(log N) intermediate storage for all rank>1 arrays,
3302 generated O(log N) intermediate storage for all rank>1 arrays,
3295 even if they were contiguous.
3303 even if they were contiguous.
3296 (l1norm): Added this function.
3304 (l1norm): Added this function.
3297 (norm): Added this function for arbitrary norms (including
3305 (norm): Added this function for arbitrary norms (including
3298 l-infinity). l1 and l2 are still special cases for convenience
3306 l-infinity). l1 and l2 are still special cases for convenience
3299 and speed.
3307 and speed.
3300
3308
3301 2003-08-03 Fernando Perez <fperez@colorado.edu>
3309 2003-08-03 Fernando Perez <fperez@colorado.edu>
3302
3310
3303 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3311 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3304 exceptions, which now raise PendingDeprecationWarnings in Python
3312 exceptions, which now raise PendingDeprecationWarnings in Python
3305 2.3. There were some in Magic and some in Gnuplot2.
3313 2.3. There were some in Magic and some in Gnuplot2.
3306
3314
3307 2003-06-30 Fernando Perez <fperez@colorado.edu>
3315 2003-06-30 Fernando Perez <fperez@colorado.edu>
3308
3316
3309 * IPython/genutils.py (page): modified to call curses only for
3317 * IPython/genutils.py (page): modified to call curses only for
3310 terminals where TERM=='xterm'. After problems under many other
3318 terminals where TERM=='xterm'. After problems under many other
3311 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3319 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3312
3320
3313 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3321 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3314 would be triggered when readline was absent. This was just an old
3322 would be triggered when readline was absent. This was just an old
3315 debugging statement I'd forgotten to take out.
3323 debugging statement I'd forgotten to take out.
3316
3324
3317 2003-06-20 Fernando Perez <fperez@colorado.edu>
3325 2003-06-20 Fernando Perez <fperez@colorado.edu>
3318
3326
3319 * IPython/genutils.py (clock): modified to return only user time
3327 * IPython/genutils.py (clock): modified to return only user time
3320 (not counting system time), after a discussion on scipy. While
3328 (not counting system time), after a discussion on scipy. While
3321 system time may be a useful quantity occasionally, it may much
3329 system time may be a useful quantity occasionally, it may much
3322 more easily be skewed by occasional swapping or other similar
3330 more easily be skewed by occasional swapping or other similar
3323 activity.
3331 activity.
3324
3332
3325 2003-06-05 Fernando Perez <fperez@colorado.edu>
3333 2003-06-05 Fernando Perez <fperez@colorado.edu>
3326
3334
3327 * IPython/numutils.py (identity): new function, for building
3335 * IPython/numutils.py (identity): new function, for building
3328 arbitrary rank Kronecker deltas (mostly backwards compatible with
3336 arbitrary rank Kronecker deltas (mostly backwards compatible with
3329 Numeric.identity)
3337 Numeric.identity)
3330
3338
3331 2003-06-03 Fernando Perez <fperez@colorado.edu>
3339 2003-06-03 Fernando Perez <fperez@colorado.edu>
3332
3340
3333 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3341 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3334 arguments passed to magics with spaces, to allow trailing '\' to
3342 arguments passed to magics with spaces, to allow trailing '\' to
3335 work normally (mainly for Windows users).
3343 work normally (mainly for Windows users).
3336
3344
3337 2003-05-29 Fernando Perez <fperez@colorado.edu>
3345 2003-05-29 Fernando Perez <fperez@colorado.edu>
3338
3346
3339 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3347 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3340 instead of pydoc.help. This fixes a bizarre behavior where
3348 instead of pydoc.help. This fixes a bizarre behavior where
3341 printing '%s' % locals() would trigger the help system. Now
3349 printing '%s' % locals() would trigger the help system. Now
3342 ipython behaves like normal python does.
3350 ipython behaves like normal python does.
3343
3351
3344 Note that if one does 'from pydoc import help', the bizarre
3352 Note that if one does 'from pydoc import help', the bizarre
3345 behavior returns, but this will also happen in normal python, so
3353 behavior returns, but this will also happen in normal python, so
3346 it's not an ipython bug anymore (it has to do with how pydoc.help
3354 it's not an ipython bug anymore (it has to do with how pydoc.help
3347 is implemented).
3355 is implemented).
3348
3356
3349 2003-05-22 Fernando Perez <fperez@colorado.edu>
3357 2003-05-22 Fernando Perez <fperez@colorado.edu>
3350
3358
3351 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3359 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3352 return [] instead of None when nothing matches, also match to end
3360 return [] instead of None when nothing matches, also match to end
3353 of line. Patch by Gary Bishop.
3361 of line. Patch by Gary Bishop.
3354
3362
3355 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3363 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3356 protection as before, for files passed on the command line. This
3364 protection as before, for files passed on the command line. This
3357 prevents the CrashHandler from kicking in if user files call into
3365 prevents the CrashHandler from kicking in if user files call into
3358 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3366 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3359 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3367 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3360
3368
3361 2003-05-20 *** Released version 0.4.0
3369 2003-05-20 *** Released version 0.4.0
3362
3370
3363 2003-05-20 Fernando Perez <fperez@colorado.edu>
3371 2003-05-20 Fernando Perez <fperez@colorado.edu>
3364
3372
3365 * setup.py: added support for manpages. It's a bit hackish b/c of
3373 * setup.py: added support for manpages. It's a bit hackish b/c of
3366 a bug in the way the bdist_rpm distutils target handles gzipped
3374 a bug in the way the bdist_rpm distutils target handles gzipped
3367 manpages, but it works. After a patch by Jack.
3375 manpages, but it works. After a patch by Jack.
3368
3376
3369 2003-05-19 Fernando Perez <fperez@colorado.edu>
3377 2003-05-19 Fernando Perez <fperez@colorado.edu>
3370
3378
3371 * IPython/numutils.py: added a mockup of the kinds module, since
3379 * IPython/numutils.py: added a mockup of the kinds module, since
3372 it was recently removed from Numeric. This way, numutils will
3380 it was recently removed from Numeric. This way, numutils will
3373 work for all users even if they are missing kinds.
3381 work for all users even if they are missing kinds.
3374
3382
3375 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3383 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3376 failure, which can occur with SWIG-wrapped extensions. After a
3384 failure, which can occur with SWIG-wrapped extensions. After a
3377 crash report from Prabhu.
3385 crash report from Prabhu.
3378
3386
3379 2003-05-16 Fernando Perez <fperez@colorado.edu>
3387 2003-05-16 Fernando Perez <fperez@colorado.edu>
3380
3388
3381 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3389 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3382 protect ipython from user code which may call directly
3390 protect ipython from user code which may call directly
3383 sys.excepthook (this looks like an ipython crash to the user, even
3391 sys.excepthook (this looks like an ipython crash to the user, even
3384 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3392 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3385 This is especially important to help users of WxWindows, but may
3393 This is especially important to help users of WxWindows, but may
3386 also be useful in other cases.
3394 also be useful in other cases.
3387
3395
3388 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3396 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3389 an optional tb_offset to be specified, and to preserve exception
3397 an optional tb_offset to be specified, and to preserve exception
3390 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3398 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3391
3399
3392 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3400 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3393
3401
3394 2003-05-15 Fernando Perez <fperez@colorado.edu>
3402 2003-05-15 Fernando Perez <fperez@colorado.edu>
3395
3403
3396 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3404 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3397 installing for a new user under Windows.
3405 installing for a new user under Windows.
3398
3406
3399 2003-05-12 Fernando Perez <fperez@colorado.edu>
3407 2003-05-12 Fernando Perez <fperez@colorado.edu>
3400
3408
3401 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3409 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3402 handler for Emacs comint-based lines. Currently it doesn't do
3410 handler for Emacs comint-based lines. Currently it doesn't do
3403 much (but importantly, it doesn't update the history cache). In
3411 much (but importantly, it doesn't update the history cache). In
3404 the future it may be expanded if Alex needs more functionality
3412 the future it may be expanded if Alex needs more functionality
3405 there.
3413 there.
3406
3414
3407 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3415 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3408 info to crash reports.
3416 info to crash reports.
3409
3417
3410 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3418 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3411 just like Python's -c. Also fixed crash with invalid -color
3419 just like Python's -c. Also fixed crash with invalid -color
3412 option value at startup. Thanks to Will French
3420 option value at startup. Thanks to Will French
3413 <wfrench-AT-bestweb.net> for the bug report.
3421 <wfrench-AT-bestweb.net> for the bug report.
3414
3422
3415 2003-05-09 Fernando Perez <fperez@colorado.edu>
3423 2003-05-09 Fernando Perez <fperez@colorado.edu>
3416
3424
3417 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3425 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3418 to EvalDict (it's a mapping, after all) and simplified its code
3426 to EvalDict (it's a mapping, after all) and simplified its code
3419 quite a bit, after a nice discussion on c.l.py where Gustavo
3427 quite a bit, after a nice discussion on c.l.py where Gustavo
3420 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3428 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3421
3429
3422 2003-04-30 Fernando Perez <fperez@colorado.edu>
3430 2003-04-30 Fernando Perez <fperez@colorado.edu>
3423
3431
3424 * IPython/genutils.py (timings_out): modified it to reduce its
3432 * IPython/genutils.py (timings_out): modified it to reduce its
3425 overhead in the common reps==1 case.
3433 overhead in the common reps==1 case.
3426
3434
3427 2003-04-29 Fernando Perez <fperez@colorado.edu>
3435 2003-04-29 Fernando Perez <fperez@colorado.edu>
3428
3436
3429 * IPython/genutils.py (timings_out): Modified to use the resource
3437 * IPython/genutils.py (timings_out): Modified to use the resource
3430 module, which avoids the wraparound problems of time.clock().
3438 module, which avoids the wraparound problems of time.clock().
3431
3439
3432 2003-04-17 *** Released version 0.2.15pre4
3440 2003-04-17 *** Released version 0.2.15pre4
3433
3441
3434 2003-04-17 Fernando Perez <fperez@colorado.edu>
3442 2003-04-17 Fernando Perez <fperez@colorado.edu>
3435
3443
3436 * setup.py (scriptfiles): Split windows-specific stuff over to a
3444 * setup.py (scriptfiles): Split windows-specific stuff over to a
3437 separate file, in an attempt to have a Windows GUI installer.
3445 separate file, in an attempt to have a Windows GUI installer.
3438 That didn't work, but part of the groundwork is done.
3446 That didn't work, but part of the groundwork is done.
3439
3447
3440 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3448 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3441 indent/unindent with 4 spaces. Particularly useful in combination
3449 indent/unindent with 4 spaces. Particularly useful in combination
3442 with the new auto-indent option.
3450 with the new auto-indent option.
3443
3451
3444 2003-04-16 Fernando Perez <fperez@colorado.edu>
3452 2003-04-16 Fernando Perez <fperez@colorado.edu>
3445
3453
3446 * IPython/Magic.py: various replacements of self.rc for
3454 * IPython/Magic.py: various replacements of self.rc for
3447 self.shell.rc. A lot more remains to be done to fully disentangle
3455 self.shell.rc. A lot more remains to be done to fully disentangle
3448 this class from the main Shell class.
3456 this class from the main Shell class.
3449
3457
3450 * IPython/GnuplotRuntime.py: added checks for mouse support so
3458 * IPython/GnuplotRuntime.py: added checks for mouse support so
3451 that we don't try to enable it if the current gnuplot doesn't
3459 that we don't try to enable it if the current gnuplot doesn't
3452 really support it. Also added checks so that we don't try to
3460 really support it. Also added checks so that we don't try to
3453 enable persist under Windows (where Gnuplot doesn't recognize the
3461 enable persist under Windows (where Gnuplot doesn't recognize the
3454 option).
3462 option).
3455
3463
3456 * IPython/iplib.py (InteractiveShell.interact): Added optional
3464 * IPython/iplib.py (InteractiveShell.interact): Added optional
3457 auto-indenting code, after a patch by King C. Shu
3465 auto-indenting code, after a patch by King C. Shu
3458 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3466 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3459 get along well with pasting indented code. If I ever figure out
3467 get along well with pasting indented code. If I ever figure out
3460 how to make that part go well, it will become on by default.
3468 how to make that part go well, it will become on by default.
3461
3469
3462 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3470 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3463 crash ipython if there was an unmatched '%' in the user's prompt
3471 crash ipython if there was an unmatched '%' in the user's prompt
3464 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3472 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3465
3473
3466 * IPython/iplib.py (InteractiveShell.interact): removed the
3474 * IPython/iplib.py (InteractiveShell.interact): removed the
3467 ability to ask the user whether he wants to crash or not at the
3475 ability to ask the user whether he wants to crash or not at the
3468 'last line' exception handler. Calling functions at that point
3476 'last line' exception handler. Calling functions at that point
3469 changes the stack, and the error reports would have incorrect
3477 changes the stack, and the error reports would have incorrect
3470 tracebacks.
3478 tracebacks.
3471
3479
3472 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3480 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3473 pass through a peger a pretty-printed form of any object. After a
3481 pass through a peger a pretty-printed form of any object. After a
3474 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3482 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3475
3483
3476 2003-04-14 Fernando Perez <fperez@colorado.edu>
3484 2003-04-14 Fernando Perez <fperez@colorado.edu>
3477
3485
3478 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3486 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3479 all files in ~ would be modified at first install (instead of
3487 all files in ~ would be modified at first install (instead of
3480 ~/.ipython). This could be potentially disastrous, as the
3488 ~/.ipython). This could be potentially disastrous, as the
3481 modification (make line-endings native) could damage binary files.
3489 modification (make line-endings native) could damage binary files.
3482
3490
3483 2003-04-10 Fernando Perez <fperez@colorado.edu>
3491 2003-04-10 Fernando Perez <fperez@colorado.edu>
3484
3492
3485 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3493 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3486 handle only lines which are invalid python. This now means that
3494 handle only lines which are invalid python. This now means that
3487 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3495 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3488 for the bug report.
3496 for the bug report.
3489
3497
3490 2003-04-01 Fernando Perez <fperez@colorado.edu>
3498 2003-04-01 Fernando Perez <fperez@colorado.edu>
3491
3499
3492 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3500 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3493 where failing to set sys.last_traceback would crash pdb.pm().
3501 where failing to set sys.last_traceback would crash pdb.pm().
3494 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3502 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3495 report.
3503 report.
3496
3504
3497 2003-03-25 Fernando Perez <fperez@colorado.edu>
3505 2003-03-25 Fernando Perez <fperez@colorado.edu>
3498
3506
3499 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3507 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3500 before printing it (it had a lot of spurious blank lines at the
3508 before printing it (it had a lot of spurious blank lines at the
3501 end).
3509 end).
3502
3510
3503 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3511 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3504 output would be sent 21 times! Obviously people don't use this
3512 output would be sent 21 times! Obviously people don't use this
3505 too often, or I would have heard about it.
3513 too often, or I would have heard about it.
3506
3514
3507 2003-03-24 Fernando Perez <fperez@colorado.edu>
3515 2003-03-24 Fernando Perez <fperez@colorado.edu>
3508
3516
3509 * setup.py (scriptfiles): renamed the data_files parameter from
3517 * setup.py (scriptfiles): renamed the data_files parameter from
3510 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3518 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3511 for the patch.
3519 for the patch.
3512
3520
3513 2003-03-20 Fernando Perez <fperez@colorado.edu>
3521 2003-03-20 Fernando Perez <fperez@colorado.edu>
3514
3522
3515 * IPython/genutils.py (error): added error() and fatal()
3523 * IPython/genutils.py (error): added error() and fatal()
3516 functions.
3524 functions.
3517
3525
3518 2003-03-18 *** Released version 0.2.15pre3
3526 2003-03-18 *** Released version 0.2.15pre3
3519
3527
3520 2003-03-18 Fernando Perez <fperez@colorado.edu>
3528 2003-03-18 Fernando Perez <fperez@colorado.edu>
3521
3529
3522 * setupext/install_data_ext.py
3530 * setupext/install_data_ext.py
3523 (install_data_ext.initialize_options): Class contributed by Jack
3531 (install_data_ext.initialize_options): Class contributed by Jack
3524 Moffit for fixing the old distutils hack. He is sending this to
3532 Moffit for fixing the old distutils hack. He is sending this to
3525 the distutils folks so in the future we may not need it as a
3533 the distutils folks so in the future we may not need it as a
3526 private fix.
3534 private fix.
3527
3535
3528 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3536 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3529 changes for Debian packaging. See his patch for full details.
3537 changes for Debian packaging. See his patch for full details.
3530 The old distutils hack of making the ipythonrc* files carry a
3538 The old distutils hack of making the ipythonrc* files carry a
3531 bogus .py extension is gone, at last. Examples were moved to a
3539 bogus .py extension is gone, at last. Examples were moved to a
3532 separate subdir under doc/, and the separate executable scripts
3540 separate subdir under doc/, and the separate executable scripts
3533 now live in their own directory. Overall a great cleanup. The
3541 now live in their own directory. Overall a great cleanup. The
3534 manual was updated to use the new files, and setup.py has been
3542 manual was updated to use the new files, and setup.py has been
3535 fixed for this setup.
3543 fixed for this setup.
3536
3544
3537 * IPython/PyColorize.py (Parser.usage): made non-executable and
3545 * IPython/PyColorize.py (Parser.usage): made non-executable and
3538 created a pycolor wrapper around it to be included as a script.
3546 created a pycolor wrapper around it to be included as a script.
3539
3547
3540 2003-03-12 *** Released version 0.2.15pre2
3548 2003-03-12 *** Released version 0.2.15pre2
3541
3549
3542 2003-03-12 Fernando Perez <fperez@colorado.edu>
3550 2003-03-12 Fernando Perez <fperez@colorado.edu>
3543
3551
3544 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3552 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3545 long-standing problem with garbage characters in some terminals.
3553 long-standing problem with garbage characters in some terminals.
3546 The issue was really that the \001 and \002 escapes must _only_ be
3554 The issue was really that the \001 and \002 escapes must _only_ be
3547 passed to input prompts (which call readline), but _never_ to
3555 passed to input prompts (which call readline), but _never_ to
3548 normal text to be printed on screen. I changed ColorANSI to have
3556 normal text to be printed on screen. I changed ColorANSI to have
3549 two classes: TermColors and InputTermColors, each with the
3557 two classes: TermColors and InputTermColors, each with the
3550 appropriate escapes for input prompts or normal text. The code in
3558 appropriate escapes for input prompts or normal text. The code in
3551 Prompts.py got slightly more complicated, but this very old and
3559 Prompts.py got slightly more complicated, but this very old and
3552 annoying bug is finally fixed.
3560 annoying bug is finally fixed.
3553
3561
3554 All the credit for nailing down the real origin of this problem
3562 All the credit for nailing down the real origin of this problem
3555 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3563 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3556 *Many* thanks to him for spending quite a bit of effort on this.
3564 *Many* thanks to him for spending quite a bit of effort on this.
3557
3565
3558 2003-03-05 *** Released version 0.2.15pre1
3566 2003-03-05 *** Released version 0.2.15pre1
3559
3567
3560 2003-03-03 Fernando Perez <fperez@colorado.edu>
3568 2003-03-03 Fernando Perez <fperez@colorado.edu>
3561
3569
3562 * IPython/FakeModule.py: Moved the former _FakeModule to a
3570 * IPython/FakeModule.py: Moved the former _FakeModule to a
3563 separate file, because it's also needed by Magic (to fix a similar
3571 separate file, because it's also needed by Magic (to fix a similar
3564 pickle-related issue in @run).
3572 pickle-related issue in @run).
3565
3573
3566 2003-03-02 Fernando Perez <fperez@colorado.edu>
3574 2003-03-02 Fernando Perez <fperez@colorado.edu>
3567
3575
3568 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3576 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3569 the autocall option at runtime.
3577 the autocall option at runtime.
3570 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3578 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3571 across Magic.py to start separating Magic from InteractiveShell.
3579 across Magic.py to start separating Magic from InteractiveShell.
3572 (Magic._ofind): Fixed to return proper namespace for dotted
3580 (Magic._ofind): Fixed to return proper namespace for dotted
3573 names. Before, a dotted name would always return 'not currently
3581 names. Before, a dotted name would always return 'not currently
3574 defined', because it would find the 'parent'. s.x would be found,
3582 defined', because it would find the 'parent'. s.x would be found,
3575 but since 'x' isn't defined by itself, it would get confused.
3583 but since 'x' isn't defined by itself, it would get confused.
3576 (Magic.magic_run): Fixed pickling problems reported by Ralf
3584 (Magic.magic_run): Fixed pickling problems reported by Ralf
3577 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3585 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3578 that I'd used when Mike Heeter reported similar issues at the
3586 that I'd used when Mike Heeter reported similar issues at the
3579 top-level, but now for @run. It boils down to injecting the
3587 top-level, but now for @run. It boils down to injecting the
3580 namespace where code is being executed with something that looks
3588 namespace where code is being executed with something that looks
3581 enough like a module to fool pickle.dump(). Since a pickle stores
3589 enough like a module to fool pickle.dump(). Since a pickle stores
3582 a named reference to the importing module, we need this for
3590 a named reference to the importing module, we need this for
3583 pickles to save something sensible.
3591 pickles to save something sensible.
3584
3592
3585 * IPython/ipmaker.py (make_IPython): added an autocall option.
3593 * IPython/ipmaker.py (make_IPython): added an autocall option.
3586
3594
3587 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3595 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3588 the auto-eval code. Now autocalling is an option, and the code is
3596 the auto-eval code. Now autocalling is an option, and the code is
3589 also vastly safer. There is no more eval() involved at all.
3597 also vastly safer. There is no more eval() involved at all.
3590
3598
3591 2003-03-01 Fernando Perez <fperez@colorado.edu>
3599 2003-03-01 Fernando Perez <fperez@colorado.edu>
3592
3600
3593 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3601 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3594 dict with named keys instead of a tuple.
3602 dict with named keys instead of a tuple.
3595
3603
3596 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3604 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3597
3605
3598 * setup.py (make_shortcut): Fixed message about directories
3606 * setup.py (make_shortcut): Fixed message about directories
3599 created during Windows installation (the directories were ok, just
3607 created during Windows installation (the directories were ok, just
3600 the printed message was misleading). Thanks to Chris Liechti
3608 the printed message was misleading). Thanks to Chris Liechti
3601 <cliechti-AT-gmx.net> for the heads up.
3609 <cliechti-AT-gmx.net> for the heads up.
3602
3610
3603 2003-02-21 Fernando Perez <fperez@colorado.edu>
3611 2003-02-21 Fernando Perez <fperez@colorado.edu>
3604
3612
3605 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3613 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3606 of ValueError exception when checking for auto-execution. This
3614 of ValueError exception when checking for auto-execution. This
3607 one is raised by things like Numeric arrays arr.flat when the
3615 one is raised by things like Numeric arrays arr.flat when the
3608 array is non-contiguous.
3616 array is non-contiguous.
3609
3617
3610 2003-01-31 Fernando Perez <fperez@colorado.edu>
3618 2003-01-31 Fernando Perez <fperez@colorado.edu>
3611
3619
3612 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3620 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3613 not return any value at all (even though the command would get
3621 not return any value at all (even though the command would get
3614 executed).
3622 executed).
3615 (xsys): Flush stdout right after printing the command to ensure
3623 (xsys): Flush stdout right after printing the command to ensure
3616 proper ordering of commands and command output in the total
3624 proper ordering of commands and command output in the total
3617 output.
3625 output.
3618 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3626 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3619 system/getoutput as defaults. The old ones are kept for
3627 system/getoutput as defaults. The old ones are kept for
3620 compatibility reasons, so no code which uses this library needs
3628 compatibility reasons, so no code which uses this library needs
3621 changing.
3629 changing.
3622
3630
3623 2003-01-27 *** Released version 0.2.14
3631 2003-01-27 *** Released version 0.2.14
3624
3632
3625 2003-01-25 Fernando Perez <fperez@colorado.edu>
3633 2003-01-25 Fernando Perez <fperez@colorado.edu>
3626
3634
3627 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3635 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3628 functions defined in previous edit sessions could not be re-edited
3636 functions defined in previous edit sessions could not be re-edited
3629 (because the temp files were immediately removed). Now temp files
3637 (because the temp files were immediately removed). Now temp files
3630 are removed only at IPython's exit.
3638 are removed only at IPython's exit.
3631 (Magic.magic_run): Improved @run to perform shell-like expansions
3639 (Magic.magic_run): Improved @run to perform shell-like expansions
3632 on its arguments (~users and $VARS). With this, @run becomes more
3640 on its arguments (~users and $VARS). With this, @run becomes more
3633 like a normal command-line.
3641 like a normal command-line.
3634
3642
3635 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3643 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3636 bugs related to embedding and cleaned up that code. A fairly
3644 bugs related to embedding and cleaned up that code. A fairly
3637 important one was the impossibility to access the global namespace
3645 important one was the impossibility to access the global namespace
3638 through the embedded IPython (only local variables were visible).
3646 through the embedded IPython (only local variables were visible).
3639
3647
3640 2003-01-14 Fernando Perez <fperez@colorado.edu>
3648 2003-01-14 Fernando Perez <fperez@colorado.edu>
3641
3649
3642 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3650 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3643 auto-calling to be a bit more conservative. Now it doesn't get
3651 auto-calling to be a bit more conservative. Now it doesn't get
3644 triggered if any of '!=()<>' are in the rest of the input line, to
3652 triggered if any of '!=()<>' are in the rest of the input line, to
3645 allow comparing callables. Thanks to Alex for the heads up.
3653 allow comparing callables. Thanks to Alex for the heads up.
3646
3654
3647 2003-01-07 Fernando Perez <fperez@colorado.edu>
3655 2003-01-07 Fernando Perez <fperez@colorado.edu>
3648
3656
3649 * IPython/genutils.py (page): fixed estimation of the number of
3657 * IPython/genutils.py (page): fixed estimation of the number of
3650 lines in a string to be paged to simply count newlines. This
3658 lines in a string to be paged to simply count newlines. This
3651 prevents over-guessing due to embedded escape sequences. A better
3659 prevents over-guessing due to embedded escape sequences. A better
3652 long-term solution would involve stripping out the control chars
3660 long-term solution would involve stripping out the control chars
3653 for the count, but it's potentially so expensive I just don't
3661 for the count, but it's potentially so expensive I just don't
3654 think it's worth doing.
3662 think it's worth doing.
3655
3663
3656 2002-12-19 *** Released version 0.2.14pre50
3664 2002-12-19 *** Released version 0.2.14pre50
3657
3665
3658 2002-12-19 Fernando Perez <fperez@colorado.edu>
3666 2002-12-19 Fernando Perez <fperez@colorado.edu>
3659
3667
3660 * tools/release (version): Changed release scripts to inform
3668 * tools/release (version): Changed release scripts to inform
3661 Andrea and build a NEWS file with a list of recent changes.
3669 Andrea and build a NEWS file with a list of recent changes.
3662
3670
3663 * IPython/ColorANSI.py (__all__): changed terminal detection
3671 * IPython/ColorANSI.py (__all__): changed terminal detection
3664 code. Seems to work better for xterms without breaking
3672 code. Seems to work better for xterms without breaking
3665 konsole. Will need more testing to determine if WinXP and Mac OSX
3673 konsole. Will need more testing to determine if WinXP and Mac OSX
3666 also work ok.
3674 also work ok.
3667
3675
3668 2002-12-18 *** Released version 0.2.14pre49
3676 2002-12-18 *** Released version 0.2.14pre49
3669
3677
3670 2002-12-18 Fernando Perez <fperez@colorado.edu>
3678 2002-12-18 Fernando Perez <fperez@colorado.edu>
3671
3679
3672 * Docs: added new info about Mac OSX, from Andrea.
3680 * Docs: added new info about Mac OSX, from Andrea.
3673
3681
3674 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3682 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3675 allow direct plotting of python strings whose format is the same
3683 allow direct plotting of python strings whose format is the same
3676 of gnuplot data files.
3684 of gnuplot data files.
3677
3685
3678 2002-12-16 Fernando Perez <fperez@colorado.edu>
3686 2002-12-16 Fernando Perez <fperez@colorado.edu>
3679
3687
3680 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3688 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3681 value of exit question to be acknowledged.
3689 value of exit question to be acknowledged.
3682
3690
3683 2002-12-03 Fernando Perez <fperez@colorado.edu>
3691 2002-12-03 Fernando Perez <fperez@colorado.edu>
3684
3692
3685 * IPython/ipmaker.py: removed generators, which had been added
3693 * IPython/ipmaker.py: removed generators, which had been added
3686 by mistake in an earlier debugging run. This was causing trouble
3694 by mistake in an earlier debugging run. This was causing trouble
3687 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3695 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3688 for pointing this out.
3696 for pointing this out.
3689
3697
3690 2002-11-17 Fernando Perez <fperez@colorado.edu>
3698 2002-11-17 Fernando Perez <fperez@colorado.edu>
3691
3699
3692 * Manual: updated the Gnuplot section.
3700 * Manual: updated the Gnuplot section.
3693
3701
3694 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3702 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3695 a much better split of what goes in Runtime and what goes in
3703 a much better split of what goes in Runtime and what goes in
3696 Interactive.
3704 Interactive.
3697
3705
3698 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3706 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3699 being imported from iplib.
3707 being imported from iplib.
3700
3708
3701 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3709 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3702 for command-passing. Now the global Gnuplot instance is called
3710 for command-passing. Now the global Gnuplot instance is called
3703 'gp' instead of 'g', which was really a far too fragile and
3711 'gp' instead of 'g', which was really a far too fragile and
3704 common name.
3712 common name.
3705
3713
3706 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3714 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3707 bounding boxes generated by Gnuplot for square plots.
3715 bounding boxes generated by Gnuplot for square plots.
3708
3716
3709 * IPython/genutils.py (popkey): new function added. I should
3717 * IPython/genutils.py (popkey): new function added. I should
3710 suggest this on c.l.py as a dict method, it seems useful.
3718 suggest this on c.l.py as a dict method, it seems useful.
3711
3719
3712 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3720 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3713 to transparently handle PostScript generation. MUCH better than
3721 to transparently handle PostScript generation. MUCH better than
3714 the previous plot_eps/replot_eps (which I removed now). The code
3722 the previous plot_eps/replot_eps (which I removed now). The code
3715 is also fairly clean and well documented now (including
3723 is also fairly clean and well documented now (including
3716 docstrings).
3724 docstrings).
3717
3725
3718 2002-11-13 Fernando Perez <fperez@colorado.edu>
3726 2002-11-13 Fernando Perez <fperez@colorado.edu>
3719
3727
3720 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3728 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3721 (inconsistent with options).
3729 (inconsistent with options).
3722
3730
3723 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3731 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3724 manually disabled, I don't know why. Fixed it.
3732 manually disabled, I don't know why. Fixed it.
3725 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3733 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3726 eps output.
3734 eps output.
3727
3735
3728 2002-11-12 Fernando Perez <fperez@colorado.edu>
3736 2002-11-12 Fernando Perez <fperez@colorado.edu>
3729
3737
3730 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3738 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3731 don't propagate up to caller. Fixes crash reported by François
3739 don't propagate up to caller. Fixes crash reported by François
3732 Pinard.
3740 Pinard.
3733
3741
3734 2002-11-09 Fernando Perez <fperez@colorado.edu>
3742 2002-11-09 Fernando Perez <fperez@colorado.edu>
3735
3743
3736 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3744 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3737 history file for new users.
3745 history file for new users.
3738 (make_IPython): fixed bug where initial install would leave the
3746 (make_IPython): fixed bug where initial install would leave the
3739 user running in the .ipython dir.
3747 user running in the .ipython dir.
3740 (make_IPython): fixed bug where config dir .ipython would be
3748 (make_IPython): fixed bug where config dir .ipython would be
3741 created regardless of the given -ipythondir option. Thanks to Cory
3749 created regardless of the given -ipythondir option. Thanks to Cory
3742 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3750 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3743
3751
3744 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3752 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3745 type confirmations. Will need to use it in all of IPython's code
3753 type confirmations. Will need to use it in all of IPython's code
3746 consistently.
3754 consistently.
3747
3755
3748 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3756 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3749 context to print 31 lines instead of the default 5. This will make
3757 context to print 31 lines instead of the default 5. This will make
3750 the crash reports extremely detailed in case the problem is in
3758 the crash reports extremely detailed in case the problem is in
3751 libraries I don't have access to.
3759 libraries I don't have access to.
3752
3760
3753 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3761 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3754 line of defense' code to still crash, but giving users fair
3762 line of defense' code to still crash, but giving users fair
3755 warning. I don't want internal errors to go unreported: if there's
3763 warning. I don't want internal errors to go unreported: if there's
3756 an internal problem, IPython should crash and generate a full
3764 an internal problem, IPython should crash and generate a full
3757 report.
3765 report.
3758
3766
3759 2002-11-08 Fernando Perez <fperez@colorado.edu>
3767 2002-11-08 Fernando Perez <fperez@colorado.edu>
3760
3768
3761 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3769 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3762 otherwise uncaught exceptions which can appear if people set
3770 otherwise uncaught exceptions which can appear if people set
3763 sys.stdout to something badly broken. Thanks to a crash report
3771 sys.stdout to something badly broken. Thanks to a crash report
3764 from henni-AT-mail.brainbot.com.
3772 from henni-AT-mail.brainbot.com.
3765
3773
3766 2002-11-04 Fernando Perez <fperez@colorado.edu>
3774 2002-11-04 Fernando Perez <fperez@colorado.edu>
3767
3775
3768 * IPython/iplib.py (InteractiveShell.interact): added
3776 * IPython/iplib.py (InteractiveShell.interact): added
3769 __IPYTHON__active to the builtins. It's a flag which goes on when
3777 __IPYTHON__active to the builtins. It's a flag which goes on when
3770 the interaction starts and goes off again when it stops. This
3778 the interaction starts and goes off again when it stops. This
3771 allows embedding code to detect being inside IPython. Before this
3779 allows embedding code to detect being inside IPython. Before this
3772 was done via __IPYTHON__, but that only shows that an IPython
3780 was done via __IPYTHON__, but that only shows that an IPython
3773 instance has been created.
3781 instance has been created.
3774
3782
3775 * IPython/Magic.py (Magic.magic_env): I realized that in a
3783 * IPython/Magic.py (Magic.magic_env): I realized that in a
3776 UserDict, instance.data holds the data as a normal dict. So I
3784 UserDict, instance.data holds the data as a normal dict. So I
3777 modified @env to return os.environ.data instead of rebuilding a
3785 modified @env to return os.environ.data instead of rebuilding a
3778 dict by hand.
3786 dict by hand.
3779
3787
3780 2002-11-02 Fernando Perez <fperez@colorado.edu>
3788 2002-11-02 Fernando Perez <fperez@colorado.edu>
3781
3789
3782 * IPython/genutils.py (warn): changed so that level 1 prints no
3790 * IPython/genutils.py (warn): changed so that level 1 prints no
3783 header. Level 2 is now the default (with 'WARNING' header, as
3791 header. Level 2 is now the default (with 'WARNING' header, as
3784 before). I think I tracked all places where changes were needed in
3792 before). I think I tracked all places where changes were needed in
3785 IPython, but outside code using the old level numbering may have
3793 IPython, but outside code using the old level numbering may have
3786 broken.
3794 broken.
3787
3795
3788 * IPython/iplib.py (InteractiveShell.runcode): added this to
3796 * IPython/iplib.py (InteractiveShell.runcode): added this to
3789 handle the tracebacks in SystemExit traps correctly. The previous
3797 handle the tracebacks in SystemExit traps correctly. The previous
3790 code (through interact) was printing more of the stack than
3798 code (through interact) was printing more of the stack than
3791 necessary, showing IPython internal code to the user.
3799 necessary, showing IPython internal code to the user.
3792
3800
3793 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3801 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3794 default. Now that the default at the confirmation prompt is yes,
3802 default. Now that the default at the confirmation prompt is yes,
3795 it's not so intrusive. François' argument that ipython sessions
3803 it's not so intrusive. François' argument that ipython sessions
3796 tend to be complex enough not to lose them from an accidental C-d,
3804 tend to be complex enough not to lose them from an accidental C-d,
3797 is a valid one.
3805 is a valid one.
3798
3806
3799 * IPython/iplib.py (InteractiveShell.interact): added a
3807 * IPython/iplib.py (InteractiveShell.interact): added a
3800 showtraceback() call to the SystemExit trap, and modified the exit
3808 showtraceback() call to the SystemExit trap, and modified the exit
3801 confirmation to have yes as the default.
3809 confirmation to have yes as the default.
3802
3810
3803 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3811 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3804 this file. It's been gone from the code for a long time, this was
3812 this file. It's been gone from the code for a long time, this was
3805 simply leftover junk.
3813 simply leftover junk.
3806
3814
3807 2002-11-01 Fernando Perez <fperez@colorado.edu>
3815 2002-11-01 Fernando Perez <fperez@colorado.edu>
3808
3816
3809 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3817 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3810 added. If set, IPython now traps EOF and asks for
3818 added. If set, IPython now traps EOF and asks for
3811 confirmation. After a request by François Pinard.
3819 confirmation. After a request by François Pinard.
3812
3820
3813 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3821 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3814 of @abort, and with a new (better) mechanism for handling the
3822 of @abort, and with a new (better) mechanism for handling the
3815 exceptions.
3823 exceptions.
3816
3824
3817 2002-10-27 Fernando Perez <fperez@colorado.edu>
3825 2002-10-27 Fernando Perez <fperez@colorado.edu>
3818
3826
3819 * IPython/usage.py (__doc__): updated the --help information and
3827 * IPython/usage.py (__doc__): updated the --help information and
3820 the ipythonrc file to indicate that -log generates
3828 the ipythonrc file to indicate that -log generates
3821 ./ipython.log. Also fixed the corresponding info in @logstart.
3829 ./ipython.log. Also fixed the corresponding info in @logstart.
3822 This and several other fixes in the manuals thanks to reports by
3830 This and several other fixes in the manuals thanks to reports by
3823 François Pinard <pinard-AT-iro.umontreal.ca>.
3831 François Pinard <pinard-AT-iro.umontreal.ca>.
3824
3832
3825 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3833 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3826 refer to @logstart (instead of @log, which doesn't exist).
3834 refer to @logstart (instead of @log, which doesn't exist).
3827
3835
3828 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3836 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3829 AttributeError crash. Thanks to Christopher Armstrong
3837 AttributeError crash. Thanks to Christopher Armstrong
3830 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3838 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3831 introduced recently (in 0.2.14pre37) with the fix to the eval
3839 introduced recently (in 0.2.14pre37) with the fix to the eval
3832 problem mentioned below.
3840 problem mentioned below.
3833
3841
3834 2002-10-17 Fernando Perez <fperez@colorado.edu>
3842 2002-10-17 Fernando Perez <fperez@colorado.edu>
3835
3843
3836 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3844 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3837 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3845 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3838
3846
3839 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3847 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3840 this function to fix a problem reported by Alex Schmolck. He saw
3848 this function to fix a problem reported by Alex Schmolck. He saw
3841 it with list comprehensions and generators, which were getting
3849 it with list comprehensions and generators, which were getting
3842 called twice. The real problem was an 'eval' call in testing for
3850 called twice. The real problem was an 'eval' call in testing for
3843 automagic which was evaluating the input line silently.
3851 automagic which was evaluating the input line silently.
3844
3852
3845 This is a potentially very nasty bug, if the input has side
3853 This is a potentially very nasty bug, if the input has side
3846 effects which must not be repeated. The code is much cleaner now,
3854 effects which must not be repeated. The code is much cleaner now,
3847 without any blanket 'except' left and with a regexp test for
3855 without any blanket 'except' left and with a regexp test for
3848 actual function names.
3856 actual function names.
3849
3857
3850 But an eval remains, which I'm not fully comfortable with. I just
3858 But an eval remains, which I'm not fully comfortable with. I just
3851 don't know how to find out if an expression could be a callable in
3859 don't know how to find out if an expression could be a callable in
3852 the user's namespace without doing an eval on the string. However
3860 the user's namespace without doing an eval on the string. However
3853 that string is now much more strictly checked so that no code
3861 that string is now much more strictly checked so that no code
3854 slips by, so the eval should only happen for things that can
3862 slips by, so the eval should only happen for things that can
3855 really be only function/method names.
3863 really be only function/method names.
3856
3864
3857 2002-10-15 Fernando Perez <fperez@colorado.edu>
3865 2002-10-15 Fernando Perez <fperez@colorado.edu>
3858
3866
3859 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3867 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3860 OSX information to main manual, removed README_Mac_OSX file from
3868 OSX information to main manual, removed README_Mac_OSX file from
3861 distribution. Also updated credits for recent additions.
3869 distribution. Also updated credits for recent additions.
3862
3870
3863 2002-10-10 Fernando Perez <fperez@colorado.edu>
3871 2002-10-10 Fernando Perez <fperez@colorado.edu>
3864
3872
3865 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3873 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3866 terminal-related issues. Many thanks to Andrea Riciputi
3874 terminal-related issues. Many thanks to Andrea Riciputi
3867 <andrea.riciputi-AT-libero.it> for writing it.
3875 <andrea.riciputi-AT-libero.it> for writing it.
3868
3876
3869 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3877 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3870 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3878 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3871
3879
3872 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3880 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3873 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3881 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3874 <syver-en-AT-online.no> who both submitted patches for this problem.
3882 <syver-en-AT-online.no> who both submitted patches for this problem.
3875
3883
3876 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3884 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3877 global embedding to make sure that things don't overwrite user
3885 global embedding to make sure that things don't overwrite user
3878 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3886 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3879
3887
3880 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3888 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3881 compatibility. Thanks to Hayden Callow
3889 compatibility. Thanks to Hayden Callow
3882 <h.callow-AT-elec.canterbury.ac.nz>
3890 <h.callow-AT-elec.canterbury.ac.nz>
3883
3891
3884 2002-10-04 Fernando Perez <fperez@colorado.edu>
3892 2002-10-04 Fernando Perez <fperez@colorado.edu>
3885
3893
3886 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3894 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3887 Gnuplot.File objects.
3895 Gnuplot.File objects.
3888
3896
3889 2002-07-23 Fernando Perez <fperez@colorado.edu>
3897 2002-07-23 Fernando Perez <fperez@colorado.edu>
3890
3898
3891 * IPython/genutils.py (timing): Added timings() and timing() for
3899 * IPython/genutils.py (timing): Added timings() and timing() for
3892 quick access to the most commonly needed data, the execution
3900 quick access to the most commonly needed data, the execution
3893 times. Old timing() renamed to timings_out().
3901 times. Old timing() renamed to timings_out().
3894
3902
3895 2002-07-18 Fernando Perez <fperez@colorado.edu>
3903 2002-07-18 Fernando Perez <fperez@colorado.edu>
3896
3904
3897 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3905 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3898 bug with nested instances disrupting the parent's tab completion.
3906 bug with nested instances disrupting the parent's tab completion.
3899
3907
3900 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3908 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3901 all_completions code to begin the emacs integration.
3909 all_completions code to begin the emacs integration.
3902
3910
3903 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3911 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3904 argument to allow titling individual arrays when plotting.
3912 argument to allow titling individual arrays when plotting.
3905
3913
3906 2002-07-15 Fernando Perez <fperez@colorado.edu>
3914 2002-07-15 Fernando Perez <fperez@colorado.edu>
3907
3915
3908 * setup.py (make_shortcut): changed to retrieve the value of
3916 * setup.py (make_shortcut): changed to retrieve the value of
3909 'Program Files' directory from the registry (this value changes in
3917 'Program Files' directory from the registry (this value changes in
3910 non-english versions of Windows). Thanks to Thomas Fanslau
3918 non-english versions of Windows). Thanks to Thomas Fanslau
3911 <tfanslau-AT-gmx.de> for the report.
3919 <tfanslau-AT-gmx.de> for the report.
3912
3920
3913 2002-07-10 Fernando Perez <fperez@colorado.edu>
3921 2002-07-10 Fernando Perez <fperez@colorado.edu>
3914
3922
3915 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3923 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3916 a bug in pdb, which crashes if a line with only whitespace is
3924 a bug in pdb, which crashes if a line with only whitespace is
3917 entered. Bug report submitted to sourceforge.
3925 entered. Bug report submitted to sourceforge.
3918
3926
3919 2002-07-09 Fernando Perez <fperez@colorado.edu>
3927 2002-07-09 Fernando Perez <fperez@colorado.edu>
3920
3928
3921 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3929 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3922 reporting exceptions (it's a bug in inspect.py, I just set a
3930 reporting exceptions (it's a bug in inspect.py, I just set a
3923 workaround).
3931 workaround).
3924
3932
3925 2002-07-08 Fernando Perez <fperez@colorado.edu>
3933 2002-07-08 Fernando Perez <fperez@colorado.edu>
3926
3934
3927 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3935 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3928 __IPYTHON__ in __builtins__ to show up in user_ns.
3936 __IPYTHON__ in __builtins__ to show up in user_ns.
3929
3937
3930 2002-07-03 Fernando Perez <fperez@colorado.edu>
3938 2002-07-03 Fernando Perez <fperez@colorado.edu>
3931
3939
3932 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3940 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3933 name from @gp_set_instance to @gp_set_default.
3941 name from @gp_set_instance to @gp_set_default.
3934
3942
3935 * IPython/ipmaker.py (make_IPython): default editor value set to
3943 * IPython/ipmaker.py (make_IPython): default editor value set to
3936 '0' (a string), to match the rc file. Otherwise will crash when
3944 '0' (a string), to match the rc file. Otherwise will crash when
3937 .strip() is called on it.
3945 .strip() is called on it.
3938
3946
3939
3947
3940 2002-06-28 Fernando Perez <fperez@colorado.edu>
3948 2002-06-28 Fernando Perez <fperez@colorado.edu>
3941
3949
3942 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3950 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3943 of files in current directory when a file is executed via
3951 of files in current directory when a file is executed via
3944 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3952 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3945
3953
3946 * setup.py (manfiles): fix for rpm builds, submitted by RA
3954 * setup.py (manfiles): fix for rpm builds, submitted by RA
3947 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3955 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3948
3956
3949 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3957 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3950 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3958 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3951 string!). A. Schmolck caught this one.
3959 string!). A. Schmolck caught this one.
3952
3960
3953 2002-06-27 Fernando Perez <fperez@colorado.edu>
3961 2002-06-27 Fernando Perez <fperez@colorado.edu>
3954
3962
3955 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3963 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3956 defined files at the cmd line. __name__ wasn't being set to
3964 defined files at the cmd line. __name__ wasn't being set to
3957 __main__.
3965 __main__.
3958
3966
3959 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3967 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3960 regular lists and tuples besides Numeric arrays.
3968 regular lists and tuples besides Numeric arrays.
3961
3969
3962 * IPython/Prompts.py (CachedOutput.__call__): Added output
3970 * IPython/Prompts.py (CachedOutput.__call__): Added output
3963 supression for input ending with ';'. Similar to Mathematica and
3971 supression for input ending with ';'. Similar to Mathematica and
3964 Matlab. The _* vars and Out[] list are still updated, just like
3972 Matlab. The _* vars and Out[] list are still updated, just like
3965 Mathematica behaves.
3973 Mathematica behaves.
3966
3974
3967 2002-06-25 Fernando Perez <fperez@colorado.edu>
3975 2002-06-25 Fernando Perez <fperez@colorado.edu>
3968
3976
3969 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3977 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3970 .ini extensions for profiels under Windows.
3978 .ini extensions for profiels under Windows.
3971
3979
3972 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3980 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3973 string form. Fix contributed by Alexander Schmolck
3981 string form. Fix contributed by Alexander Schmolck
3974 <a.schmolck-AT-gmx.net>
3982 <a.schmolck-AT-gmx.net>
3975
3983
3976 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3984 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3977 pre-configured Gnuplot instance.
3985 pre-configured Gnuplot instance.
3978
3986
3979 2002-06-21 Fernando Perez <fperez@colorado.edu>
3987 2002-06-21 Fernando Perez <fperez@colorado.edu>
3980
3988
3981 * IPython/numutils.py (exp_safe): new function, works around the
3989 * IPython/numutils.py (exp_safe): new function, works around the
3982 underflow problems in Numeric.
3990 underflow problems in Numeric.
3983 (log2): New fn. Safe log in base 2: returns exact integer answer
3991 (log2): New fn. Safe log in base 2: returns exact integer answer
3984 for exact integer powers of 2.
3992 for exact integer powers of 2.
3985
3993
3986 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3994 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3987 properly.
3995 properly.
3988
3996
3989 2002-06-20 Fernando Perez <fperez@colorado.edu>
3997 2002-06-20 Fernando Perez <fperez@colorado.edu>
3990
3998
3991 * IPython/genutils.py (timing): new function like
3999 * IPython/genutils.py (timing): new function like
3992 Mathematica's. Similar to time_test, but returns more info.
4000 Mathematica's. Similar to time_test, but returns more info.
3993
4001
3994 2002-06-18 Fernando Perez <fperez@colorado.edu>
4002 2002-06-18 Fernando Perez <fperez@colorado.edu>
3995
4003
3996 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4004 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3997 according to Mike Heeter's suggestions.
4005 according to Mike Heeter's suggestions.
3998
4006
3999 2002-06-16 Fernando Perez <fperez@colorado.edu>
4007 2002-06-16 Fernando Perez <fperez@colorado.edu>
4000
4008
4001 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4009 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4002 system. GnuplotMagic is gone as a user-directory option. New files
4010 system. GnuplotMagic is gone as a user-directory option. New files
4003 make it easier to use all the gnuplot stuff both from external
4011 make it easier to use all the gnuplot stuff both from external
4004 programs as well as from IPython. Had to rewrite part of
4012 programs as well as from IPython. Had to rewrite part of
4005 hardcopy() b/c of a strange bug: often the ps files simply don't
4013 hardcopy() b/c of a strange bug: often the ps files simply don't
4006 get created, and require a repeat of the command (often several
4014 get created, and require a repeat of the command (often several
4007 times).
4015 times).
4008
4016
4009 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4017 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4010 resolve output channel at call time, so that if sys.stderr has
4018 resolve output channel at call time, so that if sys.stderr has
4011 been redirected by user this gets honored.
4019 been redirected by user this gets honored.
4012
4020
4013 2002-06-13 Fernando Perez <fperez@colorado.edu>
4021 2002-06-13 Fernando Perez <fperez@colorado.edu>
4014
4022
4015 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4023 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4016 IPShell. Kept a copy with the old names to avoid breaking people's
4024 IPShell. Kept a copy with the old names to avoid breaking people's
4017 embedded code.
4025 embedded code.
4018
4026
4019 * IPython/ipython: simplified it to the bare minimum after
4027 * IPython/ipython: simplified it to the bare minimum after
4020 Holger's suggestions. Added info about how to use it in
4028 Holger's suggestions. Added info about how to use it in
4021 PYTHONSTARTUP.
4029 PYTHONSTARTUP.
4022
4030
4023 * IPython/Shell.py (IPythonShell): changed the options passing
4031 * IPython/Shell.py (IPythonShell): changed the options passing
4024 from a string with funky %s replacements to a straight list. Maybe
4032 from a string with funky %s replacements to a straight list. Maybe
4025 a bit more typing, but it follows sys.argv conventions, so there's
4033 a bit more typing, but it follows sys.argv conventions, so there's
4026 less special-casing to remember.
4034 less special-casing to remember.
4027
4035
4028 2002-06-12 Fernando Perez <fperez@colorado.edu>
4036 2002-06-12 Fernando Perez <fperez@colorado.edu>
4029
4037
4030 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4038 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4031 command. Thanks to a suggestion by Mike Heeter.
4039 command. Thanks to a suggestion by Mike Heeter.
4032 (Magic.magic_pfile): added behavior to look at filenames if given
4040 (Magic.magic_pfile): added behavior to look at filenames if given
4033 arg is not a defined object.
4041 arg is not a defined object.
4034 (Magic.magic_save): New @save function to save code snippets. Also
4042 (Magic.magic_save): New @save function to save code snippets. Also
4035 a Mike Heeter idea.
4043 a Mike Heeter idea.
4036
4044
4037 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4045 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4038 plot() and replot(). Much more convenient now, especially for
4046 plot() and replot(). Much more convenient now, especially for
4039 interactive use.
4047 interactive use.
4040
4048
4041 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4049 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4042 filenames.
4050 filenames.
4043
4051
4044 2002-06-02 Fernando Perez <fperez@colorado.edu>
4052 2002-06-02 Fernando Perez <fperez@colorado.edu>
4045
4053
4046 * IPython/Struct.py (Struct.__init__): modified to admit
4054 * IPython/Struct.py (Struct.__init__): modified to admit
4047 initialization via another struct.
4055 initialization via another struct.
4048
4056
4049 * IPython/genutils.py (SystemExec.__init__): New stateful
4057 * IPython/genutils.py (SystemExec.__init__): New stateful
4050 interface to xsys and bq. Useful for writing system scripts.
4058 interface to xsys and bq. Useful for writing system scripts.
4051
4059
4052 2002-05-30 Fernando Perez <fperez@colorado.edu>
4060 2002-05-30 Fernando Perez <fperez@colorado.edu>
4053
4061
4054 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4062 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4055 documents. This will make the user download smaller (it's getting
4063 documents. This will make the user download smaller (it's getting
4056 too big).
4064 too big).
4057
4065
4058 2002-05-29 Fernando Perez <fperez@colorado.edu>
4066 2002-05-29 Fernando Perez <fperez@colorado.edu>
4059
4067
4060 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4068 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4061 fix problems with shelve and pickle. Seems to work, but I don't
4069 fix problems with shelve and pickle. Seems to work, but I don't
4062 know if corner cases break it. Thanks to Mike Heeter
4070 know if corner cases break it. Thanks to Mike Heeter
4063 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4071 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4064
4072
4065 2002-05-24 Fernando Perez <fperez@colorado.edu>
4073 2002-05-24 Fernando Perez <fperez@colorado.edu>
4066
4074
4067 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4075 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4068 macros having broken.
4076 macros having broken.
4069
4077
4070 2002-05-21 Fernando Perez <fperez@colorado.edu>
4078 2002-05-21 Fernando Perez <fperez@colorado.edu>
4071
4079
4072 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4080 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4073 introduced logging bug: all history before logging started was
4081 introduced logging bug: all history before logging started was
4074 being written one character per line! This came from the redesign
4082 being written one character per line! This came from the redesign
4075 of the input history as a special list which slices to strings,
4083 of the input history as a special list which slices to strings,
4076 not to lists.
4084 not to lists.
4077
4085
4078 2002-05-20 Fernando Perez <fperez@colorado.edu>
4086 2002-05-20 Fernando Perez <fperez@colorado.edu>
4079
4087
4080 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4088 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4081 be an attribute of all classes in this module. The design of these
4089 be an attribute of all classes in this module. The design of these
4082 classes needs some serious overhauling.
4090 classes needs some serious overhauling.
4083
4091
4084 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4092 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4085 which was ignoring '_' in option names.
4093 which was ignoring '_' in option names.
4086
4094
4087 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4095 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4088 'Verbose_novars' to 'Context' and made it the new default. It's a
4096 'Verbose_novars' to 'Context' and made it the new default. It's a
4089 bit more readable and also safer than verbose.
4097 bit more readable and also safer than verbose.
4090
4098
4091 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4099 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4092 triple-quoted strings.
4100 triple-quoted strings.
4093
4101
4094 * IPython/OInspect.py (__all__): new module exposing the object
4102 * IPython/OInspect.py (__all__): new module exposing the object
4095 introspection facilities. Now the corresponding magics are dummy
4103 introspection facilities. Now the corresponding magics are dummy
4096 wrappers around this. Having this module will make it much easier
4104 wrappers around this. Having this module will make it much easier
4097 to put these functions into our modified pdb.
4105 to put these functions into our modified pdb.
4098 This new object inspector system uses the new colorizing module,
4106 This new object inspector system uses the new colorizing module,
4099 so source code and other things are nicely syntax highlighted.
4107 so source code and other things are nicely syntax highlighted.
4100
4108
4101 2002-05-18 Fernando Perez <fperez@colorado.edu>
4109 2002-05-18 Fernando Perez <fperez@colorado.edu>
4102
4110
4103 * IPython/ColorANSI.py: Split the coloring tools into a separate
4111 * IPython/ColorANSI.py: Split the coloring tools into a separate
4104 module so I can use them in other code easier (they were part of
4112 module so I can use them in other code easier (they were part of
4105 ultraTB).
4113 ultraTB).
4106
4114
4107 2002-05-17 Fernando Perez <fperez@colorado.edu>
4115 2002-05-17 Fernando Perez <fperez@colorado.edu>
4108
4116
4109 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4117 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4110 fixed it to set the global 'g' also to the called instance, as
4118 fixed it to set the global 'g' also to the called instance, as
4111 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4119 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4112 user's 'g' variables).
4120 user's 'g' variables).
4113
4121
4114 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4122 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4115 global variables (aliases to _ih,_oh) so that users which expect
4123 global variables (aliases to _ih,_oh) so that users which expect
4116 In[5] or Out[7] to work aren't unpleasantly surprised.
4124 In[5] or Out[7] to work aren't unpleasantly surprised.
4117 (InputList.__getslice__): new class to allow executing slices of
4125 (InputList.__getslice__): new class to allow executing slices of
4118 input history directly. Very simple class, complements the use of
4126 input history directly. Very simple class, complements the use of
4119 macros.
4127 macros.
4120
4128
4121 2002-05-16 Fernando Perez <fperez@colorado.edu>
4129 2002-05-16 Fernando Perez <fperez@colorado.edu>
4122
4130
4123 * setup.py (docdirbase): make doc directory be just doc/IPython
4131 * setup.py (docdirbase): make doc directory be just doc/IPython
4124 without version numbers, it will reduce clutter for users.
4132 without version numbers, it will reduce clutter for users.
4125
4133
4126 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4134 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4127 execfile call to prevent possible memory leak. See for details:
4135 execfile call to prevent possible memory leak. See for details:
4128 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4136 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4129
4137
4130 2002-05-15 Fernando Perez <fperez@colorado.edu>
4138 2002-05-15 Fernando Perez <fperez@colorado.edu>
4131
4139
4132 * IPython/Magic.py (Magic.magic_psource): made the object
4140 * IPython/Magic.py (Magic.magic_psource): made the object
4133 introspection names be more standard: pdoc, pdef, pfile and
4141 introspection names be more standard: pdoc, pdef, pfile and
4134 psource. They all print/page their output, and it makes
4142 psource. They all print/page their output, and it makes
4135 remembering them easier. Kept old names for compatibility as
4143 remembering them easier. Kept old names for compatibility as
4136 aliases.
4144 aliases.
4137
4145
4138 2002-05-14 Fernando Perez <fperez@colorado.edu>
4146 2002-05-14 Fernando Perez <fperez@colorado.edu>
4139
4147
4140 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4148 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4141 what the mouse problem was. The trick is to use gnuplot with temp
4149 what the mouse problem was. The trick is to use gnuplot with temp
4142 files and NOT with pipes (for data communication), because having
4150 files and NOT with pipes (for data communication), because having
4143 both pipes and the mouse on is bad news.
4151 both pipes and the mouse on is bad news.
4144
4152
4145 2002-05-13 Fernando Perez <fperez@colorado.edu>
4153 2002-05-13 Fernando Perez <fperez@colorado.edu>
4146
4154
4147 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4155 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4148 bug. Information would be reported about builtins even when
4156 bug. Information would be reported about builtins even when
4149 user-defined functions overrode them.
4157 user-defined functions overrode them.
4150
4158
4151 2002-05-11 Fernando Perez <fperez@colorado.edu>
4159 2002-05-11 Fernando Perez <fperez@colorado.edu>
4152
4160
4153 * IPython/__init__.py (__all__): removed FlexCompleter from
4161 * IPython/__init__.py (__all__): removed FlexCompleter from
4154 __all__ so that things don't fail in platforms without readline.
4162 __all__ so that things don't fail in platforms without readline.
4155
4163
4156 2002-05-10 Fernando Perez <fperez@colorado.edu>
4164 2002-05-10 Fernando Perez <fperez@colorado.edu>
4157
4165
4158 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4166 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4159 it requires Numeric, effectively making Numeric a dependency for
4167 it requires Numeric, effectively making Numeric a dependency for
4160 IPython.
4168 IPython.
4161
4169
4162 * Released 0.2.13
4170 * Released 0.2.13
4163
4171
4164 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4172 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4165 profiler interface. Now all the major options from the profiler
4173 profiler interface. Now all the major options from the profiler
4166 module are directly supported in IPython, both for single
4174 module are directly supported in IPython, both for single
4167 expressions (@prun) and for full programs (@run -p).
4175 expressions (@prun) and for full programs (@run -p).
4168
4176
4169 2002-05-09 Fernando Perez <fperez@colorado.edu>
4177 2002-05-09 Fernando Perez <fperez@colorado.edu>
4170
4178
4171 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4179 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4172 magic properly formatted for screen.
4180 magic properly formatted for screen.
4173
4181
4174 * setup.py (make_shortcut): Changed things to put pdf version in
4182 * setup.py (make_shortcut): Changed things to put pdf version in
4175 doc/ instead of doc/manual (had to change lyxport a bit).
4183 doc/ instead of doc/manual (had to change lyxport a bit).
4176
4184
4177 * IPython/Magic.py (Profile.string_stats): made profile runs go
4185 * IPython/Magic.py (Profile.string_stats): made profile runs go
4178 through pager (they are long and a pager allows searching, saving,
4186 through pager (they are long and a pager allows searching, saving,
4179 etc.)
4187 etc.)
4180
4188
4181 2002-05-08 Fernando Perez <fperez@colorado.edu>
4189 2002-05-08 Fernando Perez <fperez@colorado.edu>
4182
4190
4183 * Released 0.2.12
4191 * Released 0.2.12
4184
4192
4185 2002-05-06 Fernando Perez <fperez@colorado.edu>
4193 2002-05-06 Fernando Perez <fperez@colorado.edu>
4186
4194
4187 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4195 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4188 introduced); 'hist n1 n2' was broken.
4196 introduced); 'hist n1 n2' was broken.
4189 (Magic.magic_pdb): added optional on/off arguments to @pdb
4197 (Magic.magic_pdb): added optional on/off arguments to @pdb
4190 (Magic.magic_run): added option -i to @run, which executes code in
4198 (Magic.magic_run): added option -i to @run, which executes code in
4191 the IPython namespace instead of a clean one. Also added @irun as
4199 the IPython namespace instead of a clean one. Also added @irun as
4192 an alias to @run -i.
4200 an alias to @run -i.
4193
4201
4194 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4202 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4195 fixed (it didn't really do anything, the namespaces were wrong).
4203 fixed (it didn't really do anything, the namespaces were wrong).
4196
4204
4197 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4205 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4198
4206
4199 * IPython/__init__.py (__all__): Fixed package namespace, now
4207 * IPython/__init__.py (__all__): Fixed package namespace, now
4200 'import IPython' does give access to IPython.<all> as
4208 'import IPython' does give access to IPython.<all> as
4201 expected. Also renamed __release__ to Release.
4209 expected. Also renamed __release__ to Release.
4202
4210
4203 * IPython/Debugger.py (__license__): created new Pdb class which
4211 * IPython/Debugger.py (__license__): created new Pdb class which
4204 functions like a drop-in for the normal pdb.Pdb but does NOT
4212 functions like a drop-in for the normal pdb.Pdb but does NOT
4205 import readline by default. This way it doesn't muck up IPython's
4213 import readline by default. This way it doesn't muck up IPython's
4206 readline handling, and now tab-completion finally works in the
4214 readline handling, and now tab-completion finally works in the
4207 debugger -- sort of. It completes things globally visible, but the
4215 debugger -- sort of. It completes things globally visible, but the
4208 completer doesn't track the stack as pdb walks it. That's a bit
4216 completer doesn't track the stack as pdb walks it. That's a bit
4209 tricky, and I'll have to implement it later.
4217 tricky, and I'll have to implement it later.
4210
4218
4211 2002-05-05 Fernando Perez <fperez@colorado.edu>
4219 2002-05-05 Fernando Perez <fperez@colorado.edu>
4212
4220
4213 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4221 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4214 magic docstrings when printed via ? (explicit \'s were being
4222 magic docstrings when printed via ? (explicit \'s were being
4215 printed).
4223 printed).
4216
4224
4217 * IPython/ipmaker.py (make_IPython): fixed namespace
4225 * IPython/ipmaker.py (make_IPython): fixed namespace
4218 identification bug. Now variables loaded via logs or command-line
4226 identification bug. Now variables loaded via logs or command-line
4219 files are recognized in the interactive namespace by @who.
4227 files are recognized in the interactive namespace by @who.
4220
4228
4221 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4229 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4222 log replay system stemming from the string form of Structs.
4230 log replay system stemming from the string form of Structs.
4223
4231
4224 * IPython/Magic.py (Macro.__init__): improved macros to properly
4232 * IPython/Magic.py (Macro.__init__): improved macros to properly
4225 handle magic commands in them.
4233 handle magic commands in them.
4226 (Magic.magic_logstart): usernames are now expanded so 'logstart
4234 (Magic.magic_logstart): usernames are now expanded so 'logstart
4227 ~/mylog' now works.
4235 ~/mylog' now works.
4228
4236
4229 * IPython/iplib.py (complete): fixed bug where paths starting with
4237 * IPython/iplib.py (complete): fixed bug where paths starting with
4230 '/' would be completed as magic names.
4238 '/' would be completed as magic names.
4231
4239
4232 2002-05-04 Fernando Perez <fperez@colorado.edu>
4240 2002-05-04 Fernando Perez <fperez@colorado.edu>
4233
4241
4234 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4242 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4235 allow running full programs under the profiler's control.
4243 allow running full programs under the profiler's control.
4236
4244
4237 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4245 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4238 mode to report exceptions verbosely but without formatting
4246 mode to report exceptions verbosely but without formatting
4239 variables. This addresses the issue of ipython 'freezing' (it's
4247 variables. This addresses the issue of ipython 'freezing' (it's
4240 not frozen, but caught in an expensive formatting loop) when huge
4248 not frozen, but caught in an expensive formatting loop) when huge
4241 variables are in the context of an exception.
4249 variables are in the context of an exception.
4242 (VerboseTB.text): Added '--->' markers at line where exception was
4250 (VerboseTB.text): Added '--->' markers at line where exception was
4243 triggered. Much clearer to read, especially in NoColor modes.
4251 triggered. Much clearer to read, especially in NoColor modes.
4244
4252
4245 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4253 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4246 implemented in reverse when changing to the new parse_options().
4254 implemented in reverse when changing to the new parse_options().
4247
4255
4248 2002-05-03 Fernando Perez <fperez@colorado.edu>
4256 2002-05-03 Fernando Perez <fperez@colorado.edu>
4249
4257
4250 * IPython/Magic.py (Magic.parse_options): new function so that
4258 * IPython/Magic.py (Magic.parse_options): new function so that
4251 magics can parse options easier.
4259 magics can parse options easier.
4252 (Magic.magic_prun): new function similar to profile.run(),
4260 (Magic.magic_prun): new function similar to profile.run(),
4253 suggested by Chris Hart.
4261 suggested by Chris Hart.
4254 (Magic.magic_cd): fixed behavior so that it only changes if
4262 (Magic.magic_cd): fixed behavior so that it only changes if
4255 directory actually is in history.
4263 directory actually is in history.
4256
4264
4257 * IPython/usage.py (__doc__): added information about potential
4265 * IPython/usage.py (__doc__): added information about potential
4258 slowness of Verbose exception mode when there are huge data
4266 slowness of Verbose exception mode when there are huge data
4259 structures to be formatted (thanks to Archie Paulson).
4267 structures to be formatted (thanks to Archie Paulson).
4260
4268
4261 * IPython/ipmaker.py (make_IPython): Changed default logging
4269 * IPython/ipmaker.py (make_IPython): Changed default logging
4262 (when simply called with -log) to use curr_dir/ipython.log in
4270 (when simply called with -log) to use curr_dir/ipython.log in
4263 rotate mode. Fixed crash which was occuring with -log before
4271 rotate mode. Fixed crash which was occuring with -log before
4264 (thanks to Jim Boyle).
4272 (thanks to Jim Boyle).
4265
4273
4266 2002-05-01 Fernando Perez <fperez@colorado.edu>
4274 2002-05-01 Fernando Perez <fperez@colorado.edu>
4267
4275
4268 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4276 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4269 was nasty -- though somewhat of a corner case).
4277 was nasty -- though somewhat of a corner case).
4270
4278
4271 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4279 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4272 text (was a bug).
4280 text (was a bug).
4273
4281
4274 2002-04-30 Fernando Perez <fperez@colorado.edu>
4282 2002-04-30 Fernando Perez <fperez@colorado.edu>
4275
4283
4276 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4284 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4277 a print after ^D or ^C from the user so that the In[] prompt
4285 a print after ^D or ^C from the user so that the In[] prompt
4278 doesn't over-run the gnuplot one.
4286 doesn't over-run the gnuplot one.
4279
4287
4280 2002-04-29 Fernando Perez <fperez@colorado.edu>
4288 2002-04-29 Fernando Perez <fperez@colorado.edu>
4281
4289
4282 * Released 0.2.10
4290 * Released 0.2.10
4283
4291
4284 * IPython/__release__.py (version): get date dynamically.
4292 * IPython/__release__.py (version): get date dynamically.
4285
4293
4286 * Misc. documentation updates thanks to Arnd's comments. Also ran
4294 * Misc. documentation updates thanks to Arnd's comments. Also ran
4287 a full spellcheck on the manual (hadn't been done in a while).
4295 a full spellcheck on the manual (hadn't been done in a while).
4288
4296
4289 2002-04-27 Fernando Perez <fperez@colorado.edu>
4297 2002-04-27 Fernando Perez <fperez@colorado.edu>
4290
4298
4291 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4299 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4292 starting a log in mid-session would reset the input history list.
4300 starting a log in mid-session would reset the input history list.
4293
4301
4294 2002-04-26 Fernando Perez <fperez@colorado.edu>
4302 2002-04-26 Fernando Perez <fperez@colorado.edu>
4295
4303
4296 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4304 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4297 all files were being included in an update. Now anything in
4305 all files were being included in an update. Now anything in
4298 UserConfig that matches [A-Za-z]*.py will go (this excludes
4306 UserConfig that matches [A-Za-z]*.py will go (this excludes
4299 __init__.py)
4307 __init__.py)
4300
4308
4301 2002-04-25 Fernando Perez <fperez@colorado.edu>
4309 2002-04-25 Fernando Perez <fperez@colorado.edu>
4302
4310
4303 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4311 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4304 to __builtins__ so that any form of embedded or imported code can
4312 to __builtins__ so that any form of embedded or imported code can
4305 test for being inside IPython.
4313 test for being inside IPython.
4306
4314
4307 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4315 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4308 changed to GnuplotMagic because it's now an importable module,
4316 changed to GnuplotMagic because it's now an importable module,
4309 this makes the name follow that of the standard Gnuplot module.
4317 this makes the name follow that of the standard Gnuplot module.
4310 GnuplotMagic can now be loaded at any time in mid-session.
4318 GnuplotMagic can now be loaded at any time in mid-session.
4311
4319
4312 2002-04-24 Fernando Perez <fperez@colorado.edu>
4320 2002-04-24 Fernando Perez <fperez@colorado.edu>
4313
4321
4314 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4322 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4315 the globals (IPython has its own namespace) and the
4323 the globals (IPython has its own namespace) and the
4316 PhysicalQuantity stuff is much better anyway.
4324 PhysicalQuantity stuff is much better anyway.
4317
4325
4318 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4326 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4319 embedding example to standard user directory for
4327 embedding example to standard user directory for
4320 distribution. Also put it in the manual.
4328 distribution. Also put it in the manual.
4321
4329
4322 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4330 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4323 instance as first argument (so it doesn't rely on some obscure
4331 instance as first argument (so it doesn't rely on some obscure
4324 hidden global).
4332 hidden global).
4325
4333
4326 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4334 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4327 delimiters. While it prevents ().TAB from working, it allows
4335 delimiters. While it prevents ().TAB from working, it allows
4328 completions in open (... expressions. This is by far a more common
4336 completions in open (... expressions. This is by far a more common
4329 case.
4337 case.
4330
4338
4331 2002-04-23 Fernando Perez <fperez@colorado.edu>
4339 2002-04-23 Fernando Perez <fperez@colorado.edu>
4332
4340
4333 * IPython/Extensions/InterpreterPasteInput.py: new
4341 * IPython/Extensions/InterpreterPasteInput.py: new
4334 syntax-processing module for pasting lines with >>> or ... at the
4342 syntax-processing module for pasting lines with >>> or ... at the
4335 start.
4343 start.
4336
4344
4337 * IPython/Extensions/PhysicalQ_Interactive.py
4345 * IPython/Extensions/PhysicalQ_Interactive.py
4338 (PhysicalQuantityInteractive.__int__): fixed to work with either
4346 (PhysicalQuantityInteractive.__int__): fixed to work with either
4339 Numeric or math.
4347 Numeric or math.
4340
4348
4341 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4349 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4342 provided profiles. Now we have:
4350 provided profiles. Now we have:
4343 -math -> math module as * and cmath with its own namespace.
4351 -math -> math module as * and cmath with its own namespace.
4344 -numeric -> Numeric as *, plus gnuplot & grace
4352 -numeric -> Numeric as *, plus gnuplot & grace
4345 -physics -> same as before
4353 -physics -> same as before
4346
4354
4347 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4355 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4348 user-defined magics wouldn't be found by @magic if they were
4356 user-defined magics wouldn't be found by @magic if they were
4349 defined as class methods. Also cleaned up the namespace search
4357 defined as class methods. Also cleaned up the namespace search
4350 logic and the string building (to use %s instead of many repeated
4358 logic and the string building (to use %s instead of many repeated
4351 string adds).
4359 string adds).
4352
4360
4353 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4361 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4354 of user-defined magics to operate with class methods (cleaner, in
4362 of user-defined magics to operate with class methods (cleaner, in
4355 line with the gnuplot code).
4363 line with the gnuplot code).
4356
4364
4357 2002-04-22 Fernando Perez <fperez@colorado.edu>
4365 2002-04-22 Fernando Perez <fperez@colorado.edu>
4358
4366
4359 * setup.py: updated dependency list so that manual is updated when
4367 * setup.py: updated dependency list so that manual is updated when
4360 all included files change.
4368 all included files change.
4361
4369
4362 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4370 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4363 the delimiter removal option (the fix is ugly right now).
4371 the delimiter removal option (the fix is ugly right now).
4364
4372
4365 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4373 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4366 all of the math profile (quicker loading, no conflict between
4374 all of the math profile (quicker loading, no conflict between
4367 g-9.8 and g-gnuplot).
4375 g-9.8 and g-gnuplot).
4368
4376
4369 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4377 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4370 name of post-mortem files to IPython_crash_report.txt.
4378 name of post-mortem files to IPython_crash_report.txt.
4371
4379
4372 * Cleanup/update of the docs. Added all the new readline info and
4380 * Cleanup/update of the docs. Added all the new readline info and
4373 formatted all lists as 'real lists'.
4381 formatted all lists as 'real lists'.
4374
4382
4375 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4383 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4376 tab-completion options, since the full readline parse_and_bind is
4384 tab-completion options, since the full readline parse_and_bind is
4377 now accessible.
4385 now accessible.
4378
4386
4379 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4387 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4380 handling of readline options. Now users can specify any string to
4388 handling of readline options. Now users can specify any string to
4381 be passed to parse_and_bind(), as well as the delimiters to be
4389 be passed to parse_and_bind(), as well as the delimiters to be
4382 removed.
4390 removed.
4383 (InteractiveShell.__init__): Added __name__ to the global
4391 (InteractiveShell.__init__): Added __name__ to the global
4384 namespace so that things like Itpl which rely on its existence
4392 namespace so that things like Itpl which rely on its existence
4385 don't crash.
4393 don't crash.
4386 (InteractiveShell._prefilter): Defined the default with a _ so
4394 (InteractiveShell._prefilter): Defined the default with a _ so
4387 that prefilter() is easier to override, while the default one
4395 that prefilter() is easier to override, while the default one
4388 remains available.
4396 remains available.
4389
4397
4390 2002-04-18 Fernando Perez <fperez@colorado.edu>
4398 2002-04-18 Fernando Perez <fperez@colorado.edu>
4391
4399
4392 * Added information about pdb in the docs.
4400 * Added information about pdb in the docs.
4393
4401
4394 2002-04-17 Fernando Perez <fperez@colorado.edu>
4402 2002-04-17 Fernando Perez <fperez@colorado.edu>
4395
4403
4396 * IPython/ipmaker.py (make_IPython): added rc_override option to
4404 * IPython/ipmaker.py (make_IPython): added rc_override option to
4397 allow passing config options at creation time which may override
4405 allow passing config options at creation time which may override
4398 anything set in the config files or command line. This is
4406 anything set in the config files or command line. This is
4399 particularly useful for configuring embedded instances.
4407 particularly useful for configuring embedded instances.
4400
4408
4401 2002-04-15 Fernando Perez <fperez@colorado.edu>
4409 2002-04-15 Fernando Perez <fperez@colorado.edu>
4402
4410
4403 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4411 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4404 crash embedded instances because of the input cache falling out of
4412 crash embedded instances because of the input cache falling out of
4405 sync with the output counter.
4413 sync with the output counter.
4406
4414
4407 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4415 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4408 mode which calls pdb after an uncaught exception in IPython itself.
4416 mode which calls pdb after an uncaught exception in IPython itself.
4409
4417
4410 2002-04-14 Fernando Perez <fperez@colorado.edu>
4418 2002-04-14 Fernando Perez <fperez@colorado.edu>
4411
4419
4412 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4420 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4413 readline, fix it back after each call.
4421 readline, fix it back after each call.
4414
4422
4415 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4423 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4416 method to force all access via __call__(), which guarantees that
4424 method to force all access via __call__(), which guarantees that
4417 traceback references are properly deleted.
4425 traceback references are properly deleted.
4418
4426
4419 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4427 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4420 improve printing when pprint is in use.
4428 improve printing when pprint is in use.
4421
4429
4422 2002-04-13 Fernando Perez <fperez@colorado.edu>
4430 2002-04-13 Fernando Perez <fperez@colorado.edu>
4423
4431
4424 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4432 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4425 exceptions aren't caught anymore. If the user triggers one, he
4433 exceptions aren't caught anymore. If the user triggers one, he
4426 should know why he's doing it and it should go all the way up,
4434 should know why he's doing it and it should go all the way up,
4427 just like any other exception. So now @abort will fully kill the
4435 just like any other exception. So now @abort will fully kill the
4428 embedded interpreter and the embedding code (unless that happens
4436 embedded interpreter and the embedding code (unless that happens
4429 to catch SystemExit).
4437 to catch SystemExit).
4430
4438
4431 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4439 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4432 and a debugger() method to invoke the interactive pdb debugger
4440 and a debugger() method to invoke the interactive pdb debugger
4433 after printing exception information. Also added the corresponding
4441 after printing exception information. Also added the corresponding
4434 -pdb option and @pdb magic to control this feature, and updated
4442 -pdb option and @pdb magic to control this feature, and updated
4435 the docs. After a suggestion from Christopher Hart
4443 the docs. After a suggestion from Christopher Hart
4436 (hart-AT-caltech.edu).
4444 (hart-AT-caltech.edu).
4437
4445
4438 2002-04-12 Fernando Perez <fperez@colorado.edu>
4446 2002-04-12 Fernando Perez <fperez@colorado.edu>
4439
4447
4440 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4448 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4441 the exception handlers defined by the user (not the CrashHandler)
4449 the exception handlers defined by the user (not the CrashHandler)
4442 so that user exceptions don't trigger an ipython bug report.
4450 so that user exceptions don't trigger an ipython bug report.
4443
4451
4444 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4452 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4445 configurable (it should have always been so).
4453 configurable (it should have always been so).
4446
4454
4447 2002-03-26 Fernando Perez <fperez@colorado.edu>
4455 2002-03-26 Fernando Perez <fperez@colorado.edu>
4448
4456
4449 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4457 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4450 and there to fix embedding namespace issues. This should all be
4458 and there to fix embedding namespace issues. This should all be
4451 done in a more elegant way.
4459 done in a more elegant way.
4452
4460
4453 2002-03-25 Fernando Perez <fperez@colorado.edu>
4461 2002-03-25 Fernando Perez <fperez@colorado.edu>
4454
4462
4455 * IPython/genutils.py (get_home_dir): Try to make it work under
4463 * IPython/genutils.py (get_home_dir): Try to make it work under
4456 win9x also.
4464 win9x also.
4457
4465
4458 2002-03-20 Fernando Perez <fperez@colorado.edu>
4466 2002-03-20 Fernando Perez <fperez@colorado.edu>
4459
4467
4460 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4468 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4461 sys.displayhook untouched upon __init__.
4469 sys.displayhook untouched upon __init__.
4462
4470
4463 2002-03-19 Fernando Perez <fperez@colorado.edu>
4471 2002-03-19 Fernando Perez <fperez@colorado.edu>
4464
4472
4465 * Released 0.2.9 (for embedding bug, basically).
4473 * Released 0.2.9 (for embedding bug, basically).
4466
4474
4467 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4475 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4468 exceptions so that enclosing shell's state can be restored.
4476 exceptions so that enclosing shell's state can be restored.
4469
4477
4470 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4478 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4471 naming conventions in the .ipython/ dir.
4479 naming conventions in the .ipython/ dir.
4472
4480
4473 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4481 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4474 from delimiters list so filenames with - in them get expanded.
4482 from delimiters list so filenames with - in them get expanded.
4475
4483
4476 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4484 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4477 sys.displayhook not being properly restored after an embedded call.
4485 sys.displayhook not being properly restored after an embedded call.
4478
4486
4479 2002-03-18 Fernando Perez <fperez@colorado.edu>
4487 2002-03-18 Fernando Perez <fperez@colorado.edu>
4480
4488
4481 * Released 0.2.8
4489 * Released 0.2.8
4482
4490
4483 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4491 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4484 some files weren't being included in a -upgrade.
4492 some files weren't being included in a -upgrade.
4485 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4493 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4486 on' so that the first tab completes.
4494 on' so that the first tab completes.
4487 (InteractiveShell.handle_magic): fixed bug with spaces around
4495 (InteractiveShell.handle_magic): fixed bug with spaces around
4488 quotes breaking many magic commands.
4496 quotes breaking many magic commands.
4489
4497
4490 * setup.py: added note about ignoring the syntax error messages at
4498 * setup.py: added note about ignoring the syntax error messages at
4491 installation.
4499 installation.
4492
4500
4493 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4501 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4494 streamlining the gnuplot interface, now there's only one magic @gp.
4502 streamlining the gnuplot interface, now there's only one magic @gp.
4495
4503
4496 2002-03-17 Fernando Perez <fperez@colorado.edu>
4504 2002-03-17 Fernando Perez <fperez@colorado.edu>
4497
4505
4498 * IPython/UserConfig/magic_gnuplot.py: new name for the
4506 * IPython/UserConfig/magic_gnuplot.py: new name for the
4499 example-magic_pm.py file. Much enhanced system, now with a shell
4507 example-magic_pm.py file. Much enhanced system, now with a shell
4500 for communicating directly with gnuplot, one command at a time.
4508 for communicating directly with gnuplot, one command at a time.
4501
4509
4502 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4510 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4503 setting __name__=='__main__'.
4511 setting __name__=='__main__'.
4504
4512
4505 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4513 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4506 mini-shell for accessing gnuplot from inside ipython. Should
4514 mini-shell for accessing gnuplot from inside ipython. Should
4507 extend it later for grace access too. Inspired by Arnd's
4515 extend it later for grace access too. Inspired by Arnd's
4508 suggestion.
4516 suggestion.
4509
4517
4510 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4518 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4511 calling magic functions with () in their arguments. Thanks to Arnd
4519 calling magic functions with () in their arguments. Thanks to Arnd
4512 Baecker for pointing this to me.
4520 Baecker for pointing this to me.
4513
4521
4514 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4522 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4515 infinitely for integer or complex arrays (only worked with floats).
4523 infinitely for integer or complex arrays (only worked with floats).
4516
4524
4517 2002-03-16 Fernando Perez <fperez@colorado.edu>
4525 2002-03-16 Fernando Perez <fperez@colorado.edu>
4518
4526
4519 * setup.py: Merged setup and setup_windows into a single script
4527 * setup.py: Merged setup and setup_windows into a single script
4520 which properly handles things for windows users.
4528 which properly handles things for windows users.
4521
4529
4522 2002-03-15 Fernando Perez <fperez@colorado.edu>
4530 2002-03-15 Fernando Perez <fperez@colorado.edu>
4523
4531
4524 * Big change to the manual: now the magics are all automatically
4532 * Big change to the manual: now the magics are all automatically
4525 documented. This information is generated from their docstrings
4533 documented. This information is generated from their docstrings
4526 and put in a latex file included by the manual lyx file. This way
4534 and put in a latex file included by the manual lyx file. This way
4527 we get always up to date information for the magics. The manual
4535 we get always up to date information for the magics. The manual
4528 now also has proper version information, also auto-synced.
4536 now also has proper version information, also auto-synced.
4529
4537
4530 For this to work, an undocumented --magic_docstrings option was added.
4538 For this to work, an undocumented --magic_docstrings option was added.
4531
4539
4532 2002-03-13 Fernando Perez <fperez@colorado.edu>
4540 2002-03-13 Fernando Perez <fperez@colorado.edu>
4533
4541
4534 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4542 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4535 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4543 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4536
4544
4537 2002-03-12 Fernando Perez <fperez@colorado.edu>
4545 2002-03-12 Fernando Perez <fperez@colorado.edu>
4538
4546
4539 * IPython/ultraTB.py (TermColors): changed color escapes again to
4547 * IPython/ultraTB.py (TermColors): changed color escapes again to
4540 fix the (old, reintroduced) line-wrapping bug. Basically, if
4548 fix the (old, reintroduced) line-wrapping bug. Basically, if
4541 \001..\002 aren't given in the color escapes, lines get wrapped
4549 \001..\002 aren't given in the color escapes, lines get wrapped
4542 weirdly. But giving those screws up old xterms and emacs terms. So
4550 weirdly. But giving those screws up old xterms and emacs terms. So
4543 I added some logic for emacs terms to be ok, but I can't identify old
4551 I added some logic for emacs terms to be ok, but I can't identify old
4544 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4552 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4545
4553
4546 2002-03-10 Fernando Perez <fperez@colorado.edu>
4554 2002-03-10 Fernando Perez <fperez@colorado.edu>
4547
4555
4548 * IPython/usage.py (__doc__): Various documentation cleanups and
4556 * IPython/usage.py (__doc__): Various documentation cleanups and
4549 updates, both in usage docstrings and in the manual.
4557 updates, both in usage docstrings and in the manual.
4550
4558
4551 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4559 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4552 handling of caching. Set minimum acceptabe value for having a
4560 handling of caching. Set minimum acceptabe value for having a
4553 cache at 20 values.
4561 cache at 20 values.
4554
4562
4555 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4563 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4556 install_first_time function to a method, renamed it and added an
4564 install_first_time function to a method, renamed it and added an
4557 'upgrade' mode. Now people can update their config directory with
4565 'upgrade' mode. Now people can update their config directory with
4558 a simple command line switch (-upgrade, also new).
4566 a simple command line switch (-upgrade, also new).
4559
4567
4560 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4568 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4561 @file (convenient for automagic users under Python >= 2.2).
4569 @file (convenient for automagic users under Python >= 2.2).
4562 Removed @files (it seemed more like a plural than an abbrev. of
4570 Removed @files (it seemed more like a plural than an abbrev. of
4563 'file show').
4571 'file show').
4564
4572
4565 * IPython/iplib.py (install_first_time): Fixed crash if there were
4573 * IPython/iplib.py (install_first_time): Fixed crash if there were
4566 backup files ('~') in .ipython/ install directory.
4574 backup files ('~') in .ipython/ install directory.
4567
4575
4568 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4576 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4569 system. Things look fine, but these changes are fairly
4577 system. Things look fine, but these changes are fairly
4570 intrusive. Test them for a few days.
4578 intrusive. Test them for a few days.
4571
4579
4572 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4580 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4573 the prompts system. Now all in/out prompt strings are user
4581 the prompts system. Now all in/out prompt strings are user
4574 controllable. This is particularly useful for embedding, as one
4582 controllable. This is particularly useful for embedding, as one
4575 can tag embedded instances with particular prompts.
4583 can tag embedded instances with particular prompts.
4576
4584
4577 Also removed global use of sys.ps1/2, which now allows nested
4585 Also removed global use of sys.ps1/2, which now allows nested
4578 embeddings without any problems. Added command-line options for
4586 embeddings without any problems. Added command-line options for
4579 the prompt strings.
4587 the prompt strings.
4580
4588
4581 2002-03-08 Fernando Perez <fperez@colorado.edu>
4589 2002-03-08 Fernando Perez <fperez@colorado.edu>
4582
4590
4583 * IPython/UserConfig/example-embed-short.py (ipshell): added
4591 * IPython/UserConfig/example-embed-short.py (ipshell): added
4584 example file with the bare minimum code for embedding.
4592 example file with the bare minimum code for embedding.
4585
4593
4586 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4594 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4587 functionality for the embeddable shell to be activated/deactivated
4595 functionality for the embeddable shell to be activated/deactivated
4588 either globally or at each call.
4596 either globally or at each call.
4589
4597
4590 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4598 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4591 rewriting the prompt with '--->' for auto-inputs with proper
4599 rewriting the prompt with '--->' for auto-inputs with proper
4592 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4600 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4593 this is handled by the prompts class itself, as it should.
4601 this is handled by the prompts class itself, as it should.
4594
4602
4595 2002-03-05 Fernando Perez <fperez@colorado.edu>
4603 2002-03-05 Fernando Perez <fperez@colorado.edu>
4596
4604
4597 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4605 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4598 @logstart to avoid name clashes with the math log function.
4606 @logstart to avoid name clashes with the math log function.
4599
4607
4600 * Big updates to X/Emacs section of the manual.
4608 * Big updates to X/Emacs section of the manual.
4601
4609
4602 * Removed ipython_emacs. Milan explained to me how to pass
4610 * Removed ipython_emacs. Milan explained to me how to pass
4603 arguments to ipython through Emacs. Some day I'm going to end up
4611 arguments to ipython through Emacs. Some day I'm going to end up
4604 learning some lisp...
4612 learning some lisp...
4605
4613
4606 2002-03-04 Fernando Perez <fperez@colorado.edu>
4614 2002-03-04 Fernando Perez <fperez@colorado.edu>
4607
4615
4608 * IPython/ipython_emacs: Created script to be used as the
4616 * IPython/ipython_emacs: Created script to be used as the
4609 py-python-command Emacs variable so we can pass IPython
4617 py-python-command Emacs variable so we can pass IPython
4610 parameters. I can't figure out how to tell Emacs directly to pass
4618 parameters. I can't figure out how to tell Emacs directly to pass
4611 parameters to IPython, so a dummy shell script will do it.
4619 parameters to IPython, so a dummy shell script will do it.
4612
4620
4613 Other enhancements made for things to work better under Emacs'
4621 Other enhancements made for things to work better under Emacs'
4614 various types of terminals. Many thanks to Milan Zamazal
4622 various types of terminals. Many thanks to Milan Zamazal
4615 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4623 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4616
4624
4617 2002-03-01 Fernando Perez <fperez@colorado.edu>
4625 2002-03-01 Fernando Perez <fperez@colorado.edu>
4618
4626
4619 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4627 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4620 that loading of readline is now optional. This gives better
4628 that loading of readline is now optional. This gives better
4621 control to emacs users.
4629 control to emacs users.
4622
4630
4623 * IPython/ultraTB.py (__date__): Modified color escape sequences
4631 * IPython/ultraTB.py (__date__): Modified color escape sequences
4624 and now things work fine under xterm and in Emacs' term buffers
4632 and now things work fine under xterm and in Emacs' term buffers
4625 (though not shell ones). Well, in emacs you get colors, but all
4633 (though not shell ones). Well, in emacs you get colors, but all
4626 seem to be 'light' colors (no difference between dark and light
4634 seem to be 'light' colors (no difference between dark and light
4627 ones). But the garbage chars are gone, and also in xterms. It
4635 ones). But the garbage chars are gone, and also in xterms. It
4628 seems that now I'm using 'cleaner' ansi sequences.
4636 seems that now I'm using 'cleaner' ansi sequences.
4629
4637
4630 2002-02-21 Fernando Perez <fperez@colorado.edu>
4638 2002-02-21 Fernando Perez <fperez@colorado.edu>
4631
4639
4632 * Released 0.2.7 (mainly to publish the scoping fix).
4640 * Released 0.2.7 (mainly to publish the scoping fix).
4633
4641
4634 * IPython/Logger.py (Logger.logstate): added. A corresponding
4642 * IPython/Logger.py (Logger.logstate): added. A corresponding
4635 @logstate magic was created.
4643 @logstate magic was created.
4636
4644
4637 * IPython/Magic.py: fixed nested scoping problem under Python
4645 * IPython/Magic.py: fixed nested scoping problem under Python
4638 2.1.x (automagic wasn't working).
4646 2.1.x (automagic wasn't working).
4639
4647
4640 2002-02-20 Fernando Perez <fperez@colorado.edu>
4648 2002-02-20 Fernando Perez <fperez@colorado.edu>
4641
4649
4642 * Released 0.2.6.
4650 * Released 0.2.6.
4643
4651
4644 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4652 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4645 option so that logs can come out without any headers at all.
4653 option so that logs can come out without any headers at all.
4646
4654
4647 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4655 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4648 SciPy.
4656 SciPy.
4649
4657
4650 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4658 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4651 that embedded IPython calls don't require vars() to be explicitly
4659 that embedded IPython calls don't require vars() to be explicitly
4652 passed. Now they are extracted from the caller's frame (code
4660 passed. Now they are extracted from the caller's frame (code
4653 snatched from Eric Jones' weave). Added better documentation to
4661 snatched from Eric Jones' weave). Added better documentation to
4654 the section on embedding and the example file.
4662 the section on embedding and the example file.
4655
4663
4656 * IPython/genutils.py (page): Changed so that under emacs, it just
4664 * IPython/genutils.py (page): Changed so that under emacs, it just
4657 prints the string. You can then page up and down in the emacs
4665 prints the string. You can then page up and down in the emacs
4658 buffer itself. This is how the builtin help() works.
4666 buffer itself. This is how the builtin help() works.
4659
4667
4660 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4668 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4661 macro scoping: macros need to be executed in the user's namespace
4669 macro scoping: macros need to be executed in the user's namespace
4662 to work as if they had been typed by the user.
4670 to work as if they had been typed by the user.
4663
4671
4664 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4672 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4665 execute automatically (no need to type 'exec...'). They then
4673 execute automatically (no need to type 'exec...'). They then
4666 behave like 'true macros'. The printing system was also modified
4674 behave like 'true macros'. The printing system was also modified
4667 for this to work.
4675 for this to work.
4668
4676
4669 2002-02-19 Fernando Perez <fperez@colorado.edu>
4677 2002-02-19 Fernando Perez <fperez@colorado.edu>
4670
4678
4671 * IPython/genutils.py (page_file): new function for paging files
4679 * IPython/genutils.py (page_file): new function for paging files
4672 in an OS-independent way. Also necessary for file viewing to work
4680 in an OS-independent way. Also necessary for file viewing to work
4673 well inside Emacs buffers.
4681 well inside Emacs buffers.
4674 (page): Added checks for being in an emacs buffer.
4682 (page): Added checks for being in an emacs buffer.
4675 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4683 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4676 same bug in iplib.
4684 same bug in iplib.
4677
4685
4678 2002-02-18 Fernando Perez <fperez@colorado.edu>
4686 2002-02-18 Fernando Perez <fperez@colorado.edu>
4679
4687
4680 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4688 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4681 of readline so that IPython can work inside an Emacs buffer.
4689 of readline so that IPython can work inside an Emacs buffer.
4682
4690
4683 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4691 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4684 method signatures (they weren't really bugs, but it looks cleaner
4692 method signatures (they weren't really bugs, but it looks cleaner
4685 and keeps PyChecker happy).
4693 and keeps PyChecker happy).
4686
4694
4687 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4695 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4688 for implementing various user-defined hooks. Currently only
4696 for implementing various user-defined hooks. Currently only
4689 display is done.
4697 display is done.
4690
4698
4691 * IPython/Prompts.py (CachedOutput._display): changed display
4699 * IPython/Prompts.py (CachedOutput._display): changed display
4692 functions so that they can be dynamically changed by users easily.
4700 functions so that they can be dynamically changed by users easily.
4693
4701
4694 * IPython/Extensions/numeric_formats.py (num_display): added an
4702 * IPython/Extensions/numeric_formats.py (num_display): added an
4695 extension for printing NumPy arrays in flexible manners. It
4703 extension for printing NumPy arrays in flexible manners. It
4696 doesn't do anything yet, but all the structure is in
4704 doesn't do anything yet, but all the structure is in
4697 place. Ultimately the plan is to implement output format control
4705 place. Ultimately the plan is to implement output format control
4698 like in Octave.
4706 like in Octave.
4699
4707
4700 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4708 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4701 methods are found at run-time by all the automatic machinery.
4709 methods are found at run-time by all the automatic machinery.
4702
4710
4703 2002-02-17 Fernando Perez <fperez@colorado.edu>
4711 2002-02-17 Fernando Perez <fperez@colorado.edu>
4704
4712
4705 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4713 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4706 whole file a little.
4714 whole file a little.
4707
4715
4708 * ToDo: closed this document. Now there's a new_design.lyx
4716 * ToDo: closed this document. Now there's a new_design.lyx
4709 document for all new ideas. Added making a pdf of it for the
4717 document for all new ideas. Added making a pdf of it for the
4710 end-user distro.
4718 end-user distro.
4711
4719
4712 * IPython/Logger.py (Logger.switch_log): Created this to replace
4720 * IPython/Logger.py (Logger.switch_log): Created this to replace
4713 logon() and logoff(). It also fixes a nasty crash reported by
4721 logon() and logoff(). It also fixes a nasty crash reported by
4714 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4722 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4715
4723
4716 * IPython/iplib.py (complete): got auto-completion to work with
4724 * IPython/iplib.py (complete): got auto-completion to work with
4717 automagic (I had wanted this for a long time).
4725 automagic (I had wanted this for a long time).
4718
4726
4719 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4727 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4720 to @file, since file() is now a builtin and clashes with automagic
4728 to @file, since file() is now a builtin and clashes with automagic
4721 for @file.
4729 for @file.
4722
4730
4723 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4731 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4724 of this was previously in iplib, which had grown to more than 2000
4732 of this was previously in iplib, which had grown to more than 2000
4725 lines, way too long. No new functionality, but it makes managing
4733 lines, way too long. No new functionality, but it makes managing
4726 the code a bit easier.
4734 the code a bit easier.
4727
4735
4728 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4736 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4729 information to crash reports.
4737 information to crash reports.
4730
4738
4731 2002-02-12 Fernando Perez <fperez@colorado.edu>
4739 2002-02-12 Fernando Perez <fperez@colorado.edu>
4732
4740
4733 * Released 0.2.5.
4741 * Released 0.2.5.
4734
4742
4735 2002-02-11 Fernando Perez <fperez@colorado.edu>
4743 2002-02-11 Fernando Perez <fperez@colorado.edu>
4736
4744
4737 * Wrote a relatively complete Windows installer. It puts
4745 * Wrote a relatively complete Windows installer. It puts
4738 everything in place, creates Start Menu entries and fixes the
4746 everything in place, creates Start Menu entries and fixes the
4739 color issues. Nothing fancy, but it works.
4747 color issues. Nothing fancy, but it works.
4740
4748
4741 2002-02-10 Fernando Perez <fperez@colorado.edu>
4749 2002-02-10 Fernando Perez <fperez@colorado.edu>
4742
4750
4743 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4751 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4744 os.path.expanduser() call so that we can type @run ~/myfile.py and
4752 os.path.expanduser() call so that we can type @run ~/myfile.py and
4745 have thigs work as expected.
4753 have thigs work as expected.
4746
4754
4747 * IPython/genutils.py (page): fixed exception handling so things
4755 * IPython/genutils.py (page): fixed exception handling so things
4748 work both in Unix and Windows correctly. Quitting a pager triggers
4756 work both in Unix and Windows correctly. Quitting a pager triggers
4749 an IOError/broken pipe in Unix, and in windows not finding a pager
4757 an IOError/broken pipe in Unix, and in windows not finding a pager
4750 is also an IOError, so I had to actually look at the return value
4758 is also an IOError, so I had to actually look at the return value
4751 of the exception, not just the exception itself. Should be ok now.
4759 of the exception, not just the exception itself. Should be ok now.
4752
4760
4753 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4761 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4754 modified to allow case-insensitive color scheme changes.
4762 modified to allow case-insensitive color scheme changes.
4755
4763
4756 2002-02-09 Fernando Perez <fperez@colorado.edu>
4764 2002-02-09 Fernando Perez <fperez@colorado.edu>
4757
4765
4758 * IPython/genutils.py (native_line_ends): new function to leave
4766 * IPython/genutils.py (native_line_ends): new function to leave
4759 user config files with os-native line-endings.
4767 user config files with os-native line-endings.
4760
4768
4761 * README and manual updates.
4769 * README and manual updates.
4762
4770
4763 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4771 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4764 instead of StringType to catch Unicode strings.
4772 instead of StringType to catch Unicode strings.
4765
4773
4766 * IPython/genutils.py (filefind): fixed bug for paths with
4774 * IPython/genutils.py (filefind): fixed bug for paths with
4767 embedded spaces (very common in Windows).
4775 embedded spaces (very common in Windows).
4768
4776
4769 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4777 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4770 files under Windows, so that they get automatically associated
4778 files under Windows, so that they get automatically associated
4771 with a text editor. Windows makes it a pain to handle
4779 with a text editor. Windows makes it a pain to handle
4772 extension-less files.
4780 extension-less files.
4773
4781
4774 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4782 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4775 warning about readline only occur for Posix. In Windows there's no
4783 warning about readline only occur for Posix. In Windows there's no
4776 way to get readline, so why bother with the warning.
4784 way to get readline, so why bother with the warning.
4777
4785
4778 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4786 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4779 for __str__ instead of dir(self), since dir() changed in 2.2.
4787 for __str__ instead of dir(self), since dir() changed in 2.2.
4780
4788
4781 * Ported to Windows! Tested on XP, I suspect it should work fine
4789 * Ported to Windows! Tested on XP, I suspect it should work fine
4782 on NT/2000, but I don't think it will work on 98 et al. That
4790 on NT/2000, but I don't think it will work on 98 et al. That
4783 series of Windows is such a piece of junk anyway that I won't try
4791 series of Windows is such a piece of junk anyway that I won't try
4784 porting it there. The XP port was straightforward, showed a few
4792 porting it there. The XP port was straightforward, showed a few
4785 bugs here and there (fixed all), in particular some string
4793 bugs here and there (fixed all), in particular some string
4786 handling stuff which required considering Unicode strings (which
4794 handling stuff which required considering Unicode strings (which
4787 Windows uses). This is good, but hasn't been too tested :) No
4795 Windows uses). This is good, but hasn't been too tested :) No
4788 fancy installer yet, I'll put a note in the manual so people at
4796 fancy installer yet, I'll put a note in the manual so people at
4789 least make manually a shortcut.
4797 least make manually a shortcut.
4790
4798
4791 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4799 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4792 into a single one, "colors". This now controls both prompt and
4800 into a single one, "colors". This now controls both prompt and
4793 exception color schemes, and can be changed both at startup
4801 exception color schemes, and can be changed both at startup
4794 (either via command-line switches or via ipythonrc files) and at
4802 (either via command-line switches or via ipythonrc files) and at
4795 runtime, with @colors.
4803 runtime, with @colors.
4796 (Magic.magic_run): renamed @prun to @run and removed the old
4804 (Magic.magic_run): renamed @prun to @run and removed the old
4797 @run. The two were too similar to warrant keeping both.
4805 @run. The two were too similar to warrant keeping both.
4798
4806
4799 2002-02-03 Fernando Perez <fperez@colorado.edu>
4807 2002-02-03 Fernando Perez <fperez@colorado.edu>
4800
4808
4801 * IPython/iplib.py (install_first_time): Added comment on how to
4809 * IPython/iplib.py (install_first_time): Added comment on how to
4802 configure the color options for first-time users. Put a <return>
4810 configure the color options for first-time users. Put a <return>
4803 request at the end so that small-terminal users get a chance to
4811 request at the end so that small-terminal users get a chance to
4804 read the startup info.
4812 read the startup info.
4805
4813
4806 2002-01-23 Fernando Perez <fperez@colorado.edu>
4814 2002-01-23 Fernando Perez <fperez@colorado.edu>
4807
4815
4808 * IPython/iplib.py (CachedOutput.update): Changed output memory
4816 * IPython/iplib.py (CachedOutput.update): Changed output memory
4809 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4817 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4810 input history we still use _i. Did this b/c these variable are
4818 input history we still use _i. Did this b/c these variable are
4811 very commonly used in interactive work, so the less we need to
4819 very commonly used in interactive work, so the less we need to
4812 type the better off we are.
4820 type the better off we are.
4813 (Magic.magic_prun): updated @prun to better handle the namespaces
4821 (Magic.magic_prun): updated @prun to better handle the namespaces
4814 the file will run in, including a fix for __name__ not being set
4822 the file will run in, including a fix for __name__ not being set
4815 before.
4823 before.
4816
4824
4817 2002-01-20 Fernando Perez <fperez@colorado.edu>
4825 2002-01-20 Fernando Perez <fperez@colorado.edu>
4818
4826
4819 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4827 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4820 extra garbage for Python 2.2. Need to look more carefully into
4828 extra garbage for Python 2.2. Need to look more carefully into
4821 this later.
4829 this later.
4822
4830
4823 2002-01-19 Fernando Perez <fperez@colorado.edu>
4831 2002-01-19 Fernando Perez <fperez@colorado.edu>
4824
4832
4825 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4833 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4826 display SyntaxError exceptions properly formatted when they occur
4834 display SyntaxError exceptions properly formatted when they occur
4827 (they can be triggered by imported code).
4835 (they can be triggered by imported code).
4828
4836
4829 2002-01-18 Fernando Perez <fperez@colorado.edu>
4837 2002-01-18 Fernando Perez <fperez@colorado.edu>
4830
4838
4831 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4839 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4832 SyntaxError exceptions are reported nicely formatted, instead of
4840 SyntaxError exceptions are reported nicely formatted, instead of
4833 spitting out only offset information as before.
4841 spitting out only offset information as before.
4834 (Magic.magic_prun): Added the @prun function for executing
4842 (Magic.magic_prun): Added the @prun function for executing
4835 programs with command line args inside IPython.
4843 programs with command line args inside IPython.
4836
4844
4837 2002-01-16 Fernando Perez <fperez@colorado.edu>
4845 2002-01-16 Fernando Perez <fperez@colorado.edu>
4838
4846
4839 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4847 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4840 to *not* include the last item given in a range. This brings their
4848 to *not* include the last item given in a range. This brings their
4841 behavior in line with Python's slicing:
4849 behavior in line with Python's slicing:
4842 a[n1:n2] -> a[n1]...a[n2-1]
4850 a[n1:n2] -> a[n1]...a[n2-1]
4843 It may be a bit less convenient, but I prefer to stick to Python's
4851 It may be a bit less convenient, but I prefer to stick to Python's
4844 conventions *everywhere*, so users never have to wonder.
4852 conventions *everywhere*, so users never have to wonder.
4845 (Magic.magic_macro): Added @macro function to ease the creation of
4853 (Magic.magic_macro): Added @macro function to ease the creation of
4846 macros.
4854 macros.
4847
4855
4848 2002-01-05 Fernando Perez <fperez@colorado.edu>
4856 2002-01-05 Fernando Perez <fperez@colorado.edu>
4849
4857
4850 * Released 0.2.4.
4858 * Released 0.2.4.
4851
4859
4852 * IPython/iplib.py (Magic.magic_pdef):
4860 * IPython/iplib.py (Magic.magic_pdef):
4853 (InteractiveShell.safe_execfile): report magic lines and error
4861 (InteractiveShell.safe_execfile): report magic lines and error
4854 lines without line numbers so one can easily copy/paste them for
4862 lines without line numbers so one can easily copy/paste them for
4855 re-execution.
4863 re-execution.
4856
4864
4857 * Updated manual with recent changes.
4865 * Updated manual with recent changes.
4858
4866
4859 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4867 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4860 docstring printing when class? is called. Very handy for knowing
4868 docstring printing when class? is called. Very handy for knowing
4861 how to create class instances (as long as __init__ is well
4869 how to create class instances (as long as __init__ is well
4862 documented, of course :)
4870 documented, of course :)
4863 (Magic.magic_doc): print both class and constructor docstrings.
4871 (Magic.magic_doc): print both class and constructor docstrings.
4864 (Magic.magic_pdef): give constructor info if passed a class and
4872 (Magic.magic_pdef): give constructor info if passed a class and
4865 __call__ info for callable object instances.
4873 __call__ info for callable object instances.
4866
4874
4867 2002-01-04 Fernando Perez <fperez@colorado.edu>
4875 2002-01-04 Fernando Perez <fperez@colorado.edu>
4868
4876
4869 * Made deep_reload() off by default. It doesn't always work
4877 * Made deep_reload() off by default. It doesn't always work
4870 exactly as intended, so it's probably safer to have it off. It's
4878 exactly as intended, so it's probably safer to have it off. It's
4871 still available as dreload() anyway, so nothing is lost.
4879 still available as dreload() anyway, so nothing is lost.
4872
4880
4873 2002-01-02 Fernando Perez <fperez@colorado.edu>
4881 2002-01-02 Fernando Perez <fperez@colorado.edu>
4874
4882
4875 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4883 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4876 so I wanted an updated release).
4884 so I wanted an updated release).
4877
4885
4878 2001-12-27 Fernando Perez <fperez@colorado.edu>
4886 2001-12-27 Fernando Perez <fperez@colorado.edu>
4879
4887
4880 * IPython/iplib.py (InteractiveShell.interact): Added the original
4888 * IPython/iplib.py (InteractiveShell.interact): Added the original
4881 code from 'code.py' for this module in order to change the
4889 code from 'code.py' for this module in order to change the
4882 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4890 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4883 the history cache would break when the user hit Ctrl-C, and
4891 the history cache would break when the user hit Ctrl-C, and
4884 interact() offers no way to add any hooks to it.
4892 interact() offers no way to add any hooks to it.
4885
4893
4886 2001-12-23 Fernando Perez <fperez@colorado.edu>
4894 2001-12-23 Fernando Perez <fperez@colorado.edu>
4887
4895
4888 * setup.py: added check for 'MANIFEST' before trying to remove
4896 * setup.py: added check for 'MANIFEST' before trying to remove
4889 it. Thanks to Sean Reifschneider.
4897 it. Thanks to Sean Reifschneider.
4890
4898
4891 2001-12-22 Fernando Perez <fperez@colorado.edu>
4899 2001-12-22 Fernando Perez <fperez@colorado.edu>
4892
4900
4893 * Released 0.2.2.
4901 * Released 0.2.2.
4894
4902
4895 * Finished (reasonably) writing the manual. Later will add the
4903 * Finished (reasonably) writing the manual. Later will add the
4896 python-standard navigation stylesheets, but for the time being
4904 python-standard navigation stylesheets, but for the time being
4897 it's fairly complete. Distribution will include html and pdf
4905 it's fairly complete. Distribution will include html and pdf
4898 versions.
4906 versions.
4899
4907
4900 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4908 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4901 (MayaVi author).
4909 (MayaVi author).
4902
4910
4903 2001-12-21 Fernando Perez <fperez@colorado.edu>
4911 2001-12-21 Fernando Perez <fperez@colorado.edu>
4904
4912
4905 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4913 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4906 good public release, I think (with the manual and the distutils
4914 good public release, I think (with the manual and the distutils
4907 installer). The manual can use some work, but that can go
4915 installer). The manual can use some work, but that can go
4908 slowly. Otherwise I think it's quite nice for end users. Next
4916 slowly. Otherwise I think it's quite nice for end users. Next
4909 summer, rewrite the guts of it...
4917 summer, rewrite the guts of it...
4910
4918
4911 * Changed format of ipythonrc files to use whitespace as the
4919 * Changed format of ipythonrc files to use whitespace as the
4912 separator instead of an explicit '='. Cleaner.
4920 separator instead of an explicit '='. Cleaner.
4913
4921
4914 2001-12-20 Fernando Perez <fperez@colorado.edu>
4922 2001-12-20 Fernando Perez <fperez@colorado.edu>
4915
4923
4916 * Started a manual in LyX. For now it's just a quick merge of the
4924 * Started a manual in LyX. For now it's just a quick merge of the
4917 various internal docstrings and READMEs. Later it may grow into a
4925 various internal docstrings and READMEs. Later it may grow into a
4918 nice, full-blown manual.
4926 nice, full-blown manual.
4919
4927
4920 * Set up a distutils based installer. Installation should now be
4928 * Set up a distutils based installer. Installation should now be
4921 trivially simple for end-users.
4929 trivially simple for end-users.
4922
4930
4923 2001-12-11 Fernando Perez <fperez@colorado.edu>
4931 2001-12-11 Fernando Perez <fperez@colorado.edu>
4924
4932
4925 * Released 0.2.0. First public release, announced it at
4933 * Released 0.2.0. First public release, announced it at
4926 comp.lang.python. From now on, just bugfixes...
4934 comp.lang.python. From now on, just bugfixes...
4927
4935
4928 * Went through all the files, set copyright/license notices and
4936 * Went through all the files, set copyright/license notices and
4929 cleaned up things. Ready for release.
4937 cleaned up things. Ready for release.
4930
4938
4931 2001-12-10 Fernando Perez <fperez@colorado.edu>
4939 2001-12-10 Fernando Perez <fperez@colorado.edu>
4932
4940
4933 * Changed the first-time installer not to use tarfiles. It's more
4941 * Changed the first-time installer not to use tarfiles. It's more
4934 robust now and less unix-dependent. Also makes it easier for
4942 robust now and less unix-dependent. Also makes it easier for
4935 people to later upgrade versions.
4943 people to later upgrade versions.
4936
4944
4937 * Changed @exit to @abort to reflect the fact that it's pretty
4945 * Changed @exit to @abort to reflect the fact that it's pretty
4938 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4946 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4939 becomes significant only when IPyhton is embedded: in that case,
4947 becomes significant only when IPyhton is embedded: in that case,
4940 C-D closes IPython only, but @abort kills the enclosing program
4948 C-D closes IPython only, but @abort kills the enclosing program
4941 too (unless it had called IPython inside a try catching
4949 too (unless it had called IPython inside a try catching
4942 SystemExit).
4950 SystemExit).
4943
4951
4944 * Created Shell module which exposes the actuall IPython Shell
4952 * Created Shell module which exposes the actuall IPython Shell
4945 classes, currently the normal and the embeddable one. This at
4953 classes, currently the normal and the embeddable one. This at
4946 least offers a stable interface we won't need to change when
4954 least offers a stable interface we won't need to change when
4947 (later) the internals are rewritten. That rewrite will be confined
4955 (later) the internals are rewritten. That rewrite will be confined
4948 to iplib and ipmaker, but the Shell interface should remain as is.
4956 to iplib and ipmaker, but the Shell interface should remain as is.
4949
4957
4950 * Added embed module which offers an embeddable IPShell object,
4958 * Added embed module which offers an embeddable IPShell object,
4951 useful to fire up IPython *inside* a running program. Great for
4959 useful to fire up IPython *inside* a running program. Great for
4952 debugging or dynamical data analysis.
4960 debugging or dynamical data analysis.
4953
4961
4954 2001-12-08 Fernando Perez <fperez@colorado.edu>
4962 2001-12-08 Fernando Perez <fperez@colorado.edu>
4955
4963
4956 * Fixed small bug preventing seeing info from methods of defined
4964 * Fixed small bug preventing seeing info from methods of defined
4957 objects (incorrect namespace in _ofind()).
4965 objects (incorrect namespace in _ofind()).
4958
4966
4959 * Documentation cleanup. Moved the main usage docstrings to a
4967 * Documentation cleanup. Moved the main usage docstrings to a
4960 separate file, usage.py (cleaner to maintain, and hopefully in the
4968 separate file, usage.py (cleaner to maintain, and hopefully in the
4961 future some perlpod-like way of producing interactive, man and
4969 future some perlpod-like way of producing interactive, man and
4962 html docs out of it will be found).
4970 html docs out of it will be found).
4963
4971
4964 * Added @profile to see your profile at any time.
4972 * Added @profile to see your profile at any time.
4965
4973
4966 * Added @p as an alias for 'print'. It's especially convenient if
4974 * Added @p as an alias for 'print'. It's especially convenient if
4967 using automagic ('p x' prints x).
4975 using automagic ('p x' prints x).
4968
4976
4969 * Small cleanups and fixes after a pychecker run.
4977 * Small cleanups and fixes after a pychecker run.
4970
4978
4971 * Changed the @cd command to handle @cd - and @cd -<n> for
4979 * Changed the @cd command to handle @cd - and @cd -<n> for
4972 visiting any directory in _dh.
4980 visiting any directory in _dh.
4973
4981
4974 * Introduced _dh, a history of visited directories. @dhist prints
4982 * Introduced _dh, a history of visited directories. @dhist prints
4975 it out with numbers.
4983 it out with numbers.
4976
4984
4977 2001-12-07 Fernando Perez <fperez@colorado.edu>
4985 2001-12-07 Fernando Perez <fperez@colorado.edu>
4978
4986
4979 * Released 0.1.22
4987 * Released 0.1.22
4980
4988
4981 * Made initialization a bit more robust against invalid color
4989 * Made initialization a bit more robust against invalid color
4982 options in user input (exit, not traceback-crash).
4990 options in user input (exit, not traceback-crash).
4983
4991
4984 * Changed the bug crash reporter to write the report only in the
4992 * Changed the bug crash reporter to write the report only in the
4985 user's .ipython directory. That way IPython won't litter people's
4993 user's .ipython directory. That way IPython won't litter people's
4986 hard disks with crash files all over the place. Also print on
4994 hard disks with crash files all over the place. Also print on
4987 screen the necessary mail command.
4995 screen the necessary mail command.
4988
4996
4989 * With the new ultraTB, implemented LightBG color scheme for light
4997 * With the new ultraTB, implemented LightBG color scheme for light
4990 background terminals. A lot of people like white backgrounds, so I
4998 background terminals. A lot of people like white backgrounds, so I
4991 guess we should at least give them something readable.
4999 guess we should at least give them something readable.
4992
5000
4993 2001-12-06 Fernando Perez <fperez@colorado.edu>
5001 2001-12-06 Fernando Perez <fperez@colorado.edu>
4994
5002
4995 * Modified the structure of ultraTB. Now there's a proper class
5003 * Modified the structure of ultraTB. Now there's a proper class
4996 for tables of color schemes which allow adding schemes easily and
5004 for tables of color schemes which allow adding schemes easily and
4997 switching the active scheme without creating a new instance every
5005 switching the active scheme without creating a new instance every
4998 time (which was ridiculous). The syntax for creating new schemes
5006 time (which was ridiculous). The syntax for creating new schemes
4999 is also cleaner. I think ultraTB is finally done, with a clean
5007 is also cleaner. I think ultraTB is finally done, with a clean
5000 class structure. Names are also much cleaner (now there's proper
5008 class structure. Names are also much cleaner (now there's proper
5001 color tables, no need for every variable to also have 'color' in
5009 color tables, no need for every variable to also have 'color' in
5002 its name).
5010 its name).
5003
5011
5004 * Broke down genutils into separate files. Now genutils only
5012 * Broke down genutils into separate files. Now genutils only
5005 contains utility functions, and classes have been moved to their
5013 contains utility functions, and classes have been moved to their
5006 own files (they had enough independent functionality to warrant
5014 own files (they had enough independent functionality to warrant
5007 it): ConfigLoader, OutputTrap, Struct.
5015 it): ConfigLoader, OutputTrap, Struct.
5008
5016
5009 2001-12-05 Fernando Perez <fperez@colorado.edu>
5017 2001-12-05 Fernando Perez <fperez@colorado.edu>
5010
5018
5011 * IPython turns 21! Released version 0.1.21, as a candidate for
5019 * IPython turns 21! Released version 0.1.21, as a candidate for
5012 public consumption. If all goes well, release in a few days.
5020 public consumption. If all goes well, release in a few days.
5013
5021
5014 * Fixed path bug (files in Extensions/ directory wouldn't be found
5022 * Fixed path bug (files in Extensions/ directory wouldn't be found
5015 unless IPython/ was explicitly in sys.path).
5023 unless IPython/ was explicitly in sys.path).
5016
5024
5017 * Extended the FlexCompleter class as MagicCompleter to allow
5025 * Extended the FlexCompleter class as MagicCompleter to allow
5018 completion of @-starting lines.
5026 completion of @-starting lines.
5019
5027
5020 * Created __release__.py file as a central repository for release
5028 * Created __release__.py file as a central repository for release
5021 info that other files can read from.
5029 info that other files can read from.
5022
5030
5023 * Fixed small bug in logging: when logging was turned on in
5031 * Fixed small bug in logging: when logging was turned on in
5024 mid-session, old lines with special meanings (!@?) were being
5032 mid-session, old lines with special meanings (!@?) were being
5025 logged without the prepended comment, which is necessary since
5033 logged without the prepended comment, which is necessary since
5026 they are not truly valid python syntax. This should make session
5034 they are not truly valid python syntax. This should make session
5027 restores produce less errors.
5035 restores produce less errors.
5028
5036
5029 * The namespace cleanup forced me to make a FlexCompleter class
5037 * The namespace cleanup forced me to make a FlexCompleter class
5030 which is nothing but a ripoff of rlcompleter, but with selectable
5038 which is nothing but a ripoff of rlcompleter, but with selectable
5031 namespace (rlcompleter only works in __main__.__dict__). I'll try
5039 namespace (rlcompleter only works in __main__.__dict__). I'll try
5032 to submit a note to the authors to see if this change can be
5040 to submit a note to the authors to see if this change can be
5033 incorporated in future rlcompleter releases (Dec.6: done)
5041 incorporated in future rlcompleter releases (Dec.6: done)
5034
5042
5035 * More fixes to namespace handling. It was a mess! Now all
5043 * More fixes to namespace handling. It was a mess! Now all
5036 explicit references to __main__.__dict__ are gone (except when
5044 explicit references to __main__.__dict__ are gone (except when
5037 really needed) and everything is handled through the namespace
5045 really needed) and everything is handled through the namespace
5038 dicts in the IPython instance. We seem to be getting somewhere
5046 dicts in the IPython instance. We seem to be getting somewhere
5039 with this, finally...
5047 with this, finally...
5040
5048
5041 * Small documentation updates.
5049 * Small documentation updates.
5042
5050
5043 * Created the Extensions directory under IPython (with an
5051 * Created the Extensions directory under IPython (with an
5044 __init__.py). Put the PhysicalQ stuff there. This directory should
5052 __init__.py). Put the PhysicalQ stuff there. This directory should
5045 be used for all special-purpose extensions.
5053 be used for all special-purpose extensions.
5046
5054
5047 * File renaming:
5055 * File renaming:
5048 ipythonlib --> ipmaker
5056 ipythonlib --> ipmaker
5049 ipplib --> iplib
5057 ipplib --> iplib
5050 This makes a bit more sense in terms of what these files actually do.
5058 This makes a bit more sense in terms of what these files actually do.
5051
5059
5052 * Moved all the classes and functions in ipythonlib to ipplib, so
5060 * Moved all the classes and functions in ipythonlib to ipplib, so
5053 now ipythonlib only has make_IPython(). This will ease up its
5061 now ipythonlib only has make_IPython(). This will ease up its
5054 splitting in smaller functional chunks later.
5062 splitting in smaller functional chunks later.
5055
5063
5056 * Cleaned up (done, I think) output of @whos. Better column
5064 * Cleaned up (done, I think) output of @whos. Better column
5057 formatting, and now shows str(var) for as much as it can, which is
5065 formatting, and now shows str(var) for as much as it can, which is
5058 typically what one gets with a 'print var'.
5066 typically what one gets with a 'print var'.
5059
5067
5060 2001-12-04 Fernando Perez <fperez@colorado.edu>
5068 2001-12-04 Fernando Perez <fperez@colorado.edu>
5061
5069
5062 * Fixed namespace problems. Now builtin/IPyhton/user names get
5070 * Fixed namespace problems. Now builtin/IPyhton/user names get
5063 properly reported in their namespace. Internal namespace handling
5071 properly reported in their namespace. Internal namespace handling
5064 is finally getting decent (not perfect yet, but much better than
5072 is finally getting decent (not perfect yet, but much better than
5065 the ad-hoc mess we had).
5073 the ad-hoc mess we had).
5066
5074
5067 * Removed -exit option. If people just want to run a python
5075 * Removed -exit option. If people just want to run a python
5068 script, that's what the normal interpreter is for. Less
5076 script, that's what the normal interpreter is for. Less
5069 unnecessary options, less chances for bugs.
5077 unnecessary options, less chances for bugs.
5070
5078
5071 * Added a crash handler which generates a complete post-mortem if
5079 * Added a crash handler which generates a complete post-mortem if
5072 IPython crashes. This will help a lot in tracking bugs down the
5080 IPython crashes. This will help a lot in tracking bugs down the
5073 road.
5081 road.
5074
5082
5075 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5083 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5076 which were boud to functions being reassigned would bypass the
5084 which were boud to functions being reassigned would bypass the
5077 logger, breaking the sync of _il with the prompt counter. This
5085 logger, breaking the sync of _il with the prompt counter. This
5078 would then crash IPython later when a new line was logged.
5086 would then crash IPython later when a new line was logged.
5079
5087
5080 2001-12-02 Fernando Perez <fperez@colorado.edu>
5088 2001-12-02 Fernando Perez <fperez@colorado.edu>
5081
5089
5082 * Made IPython a package. This means people don't have to clutter
5090 * Made IPython a package. This means people don't have to clutter
5083 their sys.path with yet another directory. Changed the INSTALL
5091 their sys.path with yet another directory. Changed the INSTALL
5084 file accordingly.
5092 file accordingly.
5085
5093
5086 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5094 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5087 sorts its output (so @who shows it sorted) and @whos formats the
5095 sorts its output (so @who shows it sorted) and @whos formats the
5088 table according to the width of the first column. Nicer, easier to
5096 table according to the width of the first column. Nicer, easier to
5089 read. Todo: write a generic table_format() which takes a list of
5097 read. Todo: write a generic table_format() which takes a list of
5090 lists and prints it nicely formatted, with optional row/column
5098 lists and prints it nicely formatted, with optional row/column
5091 separators and proper padding and justification.
5099 separators and proper padding and justification.
5092
5100
5093 * Released 0.1.20
5101 * Released 0.1.20
5094
5102
5095 * Fixed bug in @log which would reverse the inputcache list (a
5103 * Fixed bug in @log which would reverse the inputcache list (a
5096 copy operation was missing).
5104 copy operation was missing).
5097
5105
5098 * Code cleanup. @config was changed to use page(). Better, since
5106 * Code cleanup. @config was changed to use page(). Better, since
5099 its output is always quite long.
5107 its output is always quite long.
5100
5108
5101 * Itpl is back as a dependency. I was having too many problems
5109 * Itpl is back as a dependency. I was having too many problems
5102 getting the parametric aliases to work reliably, and it's just
5110 getting the parametric aliases to work reliably, and it's just
5103 easier to code weird string operations with it than playing %()s
5111 easier to code weird string operations with it than playing %()s
5104 games. It's only ~6k, so I don't think it's too big a deal.
5112 games. It's only ~6k, so I don't think it's too big a deal.
5105
5113
5106 * Found (and fixed) a very nasty bug with history. !lines weren't
5114 * Found (and fixed) a very nasty bug with history. !lines weren't
5107 getting cached, and the out of sync caches would crash
5115 getting cached, and the out of sync caches would crash
5108 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5116 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5109 division of labor a bit better. Bug fixed, cleaner structure.
5117 division of labor a bit better. Bug fixed, cleaner structure.
5110
5118
5111 2001-12-01 Fernando Perez <fperez@colorado.edu>
5119 2001-12-01 Fernando Perez <fperez@colorado.edu>
5112
5120
5113 * Released 0.1.19
5121 * Released 0.1.19
5114
5122
5115 * Added option -n to @hist to prevent line number printing. Much
5123 * Added option -n to @hist to prevent line number printing. Much
5116 easier to copy/paste code this way.
5124 easier to copy/paste code this way.
5117
5125
5118 * Created global _il to hold the input list. Allows easy
5126 * Created global _il to hold the input list. Allows easy
5119 re-execution of blocks of code by slicing it (inspired by Janko's
5127 re-execution of blocks of code by slicing it (inspired by Janko's
5120 comment on 'macros').
5128 comment on 'macros').
5121
5129
5122 * Small fixes and doc updates.
5130 * Small fixes and doc updates.
5123
5131
5124 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5132 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5125 much too fragile with automagic. Handles properly multi-line
5133 much too fragile with automagic. Handles properly multi-line
5126 statements and takes parameters.
5134 statements and takes parameters.
5127
5135
5128 2001-11-30 Fernando Perez <fperez@colorado.edu>
5136 2001-11-30 Fernando Perez <fperez@colorado.edu>
5129
5137
5130 * Version 0.1.18 released.
5138 * Version 0.1.18 released.
5131
5139
5132 * Fixed nasty namespace bug in initial module imports.
5140 * Fixed nasty namespace bug in initial module imports.
5133
5141
5134 * Added copyright/license notes to all code files (except
5142 * Added copyright/license notes to all code files (except
5135 DPyGetOpt). For the time being, LGPL. That could change.
5143 DPyGetOpt). For the time being, LGPL. That could change.
5136
5144
5137 * Rewrote a much nicer README, updated INSTALL, cleaned up
5145 * Rewrote a much nicer README, updated INSTALL, cleaned up
5138 ipythonrc-* samples.
5146 ipythonrc-* samples.
5139
5147
5140 * Overall code/documentation cleanup. Basically ready for
5148 * Overall code/documentation cleanup. Basically ready for
5141 release. Only remaining thing: licence decision (LGPL?).
5149 release. Only remaining thing: licence decision (LGPL?).
5142
5150
5143 * Converted load_config to a class, ConfigLoader. Now recursion
5151 * Converted load_config to a class, ConfigLoader. Now recursion
5144 control is better organized. Doesn't include the same file twice.
5152 control is better organized. Doesn't include the same file twice.
5145
5153
5146 2001-11-29 Fernando Perez <fperez@colorado.edu>
5154 2001-11-29 Fernando Perez <fperez@colorado.edu>
5147
5155
5148 * Got input history working. Changed output history variables from
5156 * Got input history working. Changed output history variables from
5149 _p to _o so that _i is for input and _o for output. Just cleaner
5157 _p to _o so that _i is for input and _o for output. Just cleaner
5150 convention.
5158 convention.
5151
5159
5152 * Implemented parametric aliases. This pretty much allows the
5160 * Implemented parametric aliases. This pretty much allows the
5153 alias system to offer full-blown shell convenience, I think.
5161 alias system to offer full-blown shell convenience, I think.
5154
5162
5155 * Version 0.1.17 released, 0.1.18 opened.
5163 * Version 0.1.17 released, 0.1.18 opened.
5156
5164
5157 * dot_ipython/ipythonrc (alias): added documentation.
5165 * dot_ipython/ipythonrc (alias): added documentation.
5158 (xcolor): Fixed small bug (xcolors -> xcolor)
5166 (xcolor): Fixed small bug (xcolors -> xcolor)
5159
5167
5160 * Changed the alias system. Now alias is a magic command to define
5168 * Changed the alias system. Now alias is a magic command to define
5161 aliases just like the shell. Rationale: the builtin magics should
5169 aliases just like the shell. Rationale: the builtin magics should
5162 be there for things deeply connected to IPython's
5170 be there for things deeply connected to IPython's
5163 architecture. And this is a much lighter system for what I think
5171 architecture. And this is a much lighter system for what I think
5164 is the really important feature: allowing users to define quickly
5172 is the really important feature: allowing users to define quickly
5165 magics that will do shell things for them, so they can customize
5173 magics that will do shell things for them, so they can customize
5166 IPython easily to match their work habits. If someone is really
5174 IPython easily to match their work habits. If someone is really
5167 desperate to have another name for a builtin alias, they can
5175 desperate to have another name for a builtin alias, they can
5168 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5176 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5169 works.
5177 works.
5170
5178
5171 2001-11-28 Fernando Perez <fperez@colorado.edu>
5179 2001-11-28 Fernando Perez <fperez@colorado.edu>
5172
5180
5173 * Changed @file so that it opens the source file at the proper
5181 * Changed @file so that it opens the source file at the proper
5174 line. Since it uses less, if your EDITOR environment is
5182 line. Since it uses less, if your EDITOR environment is
5175 configured, typing v will immediately open your editor of choice
5183 configured, typing v will immediately open your editor of choice
5176 right at the line where the object is defined. Not as quick as
5184 right at the line where the object is defined. Not as quick as
5177 having a direct @edit command, but for all intents and purposes it
5185 having a direct @edit command, but for all intents and purposes it
5178 works. And I don't have to worry about writing @edit to deal with
5186 works. And I don't have to worry about writing @edit to deal with
5179 all the editors, less does that.
5187 all the editors, less does that.
5180
5188
5181 * Version 0.1.16 released, 0.1.17 opened.
5189 * Version 0.1.16 released, 0.1.17 opened.
5182
5190
5183 * Fixed some nasty bugs in the page/page_dumb combo that could
5191 * Fixed some nasty bugs in the page/page_dumb combo that could
5184 crash IPython.
5192 crash IPython.
5185
5193
5186 2001-11-27 Fernando Perez <fperez@colorado.edu>
5194 2001-11-27 Fernando Perez <fperez@colorado.edu>
5187
5195
5188 * Version 0.1.15 released, 0.1.16 opened.
5196 * Version 0.1.15 released, 0.1.16 opened.
5189
5197
5190 * Finally got ? and ?? to work for undefined things: now it's
5198 * Finally got ? and ?? to work for undefined things: now it's
5191 possible to type {}.get? and get information about the get method
5199 possible to type {}.get? and get information about the get method
5192 of dicts, or os.path? even if only os is defined (so technically
5200 of dicts, or os.path? even if only os is defined (so technically
5193 os.path isn't). Works at any level. For example, after import os,
5201 os.path isn't). Works at any level. For example, after import os,
5194 os?, os.path?, os.path.abspath? all work. This is great, took some
5202 os?, os.path?, os.path.abspath? all work. This is great, took some
5195 work in _ofind.
5203 work in _ofind.
5196
5204
5197 * Fixed more bugs with logging. The sanest way to do it was to add
5205 * Fixed more bugs with logging. The sanest way to do it was to add
5198 to @log a 'mode' parameter. Killed two in one shot (this mode
5206 to @log a 'mode' parameter. Killed two in one shot (this mode
5199 option was a request of Janko's). I think it's finally clean
5207 option was a request of Janko's). I think it's finally clean
5200 (famous last words).
5208 (famous last words).
5201
5209
5202 * Added a page_dumb() pager which does a decent job of paging on
5210 * Added a page_dumb() pager which does a decent job of paging on
5203 screen, if better things (like less) aren't available. One less
5211 screen, if better things (like less) aren't available. One less
5204 unix dependency (someday maybe somebody will port this to
5212 unix dependency (someday maybe somebody will port this to
5205 windows).
5213 windows).
5206
5214
5207 * Fixed problem in magic_log: would lock of logging out if log
5215 * Fixed problem in magic_log: would lock of logging out if log
5208 creation failed (because it would still think it had succeeded).
5216 creation failed (because it would still think it had succeeded).
5209
5217
5210 * Improved the page() function using curses to auto-detect screen
5218 * Improved the page() function using curses to auto-detect screen
5211 size. Now it can make a much better decision on whether to print
5219 size. Now it can make a much better decision on whether to print
5212 or page a string. Option screen_length was modified: a value 0
5220 or page a string. Option screen_length was modified: a value 0
5213 means auto-detect, and that's the default now.
5221 means auto-detect, and that's the default now.
5214
5222
5215 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5223 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5216 go out. I'll test it for a few days, then talk to Janko about
5224 go out. I'll test it for a few days, then talk to Janko about
5217 licences and announce it.
5225 licences and announce it.
5218
5226
5219 * Fixed the length of the auto-generated ---> prompt which appears
5227 * Fixed the length of the auto-generated ---> prompt which appears
5220 for auto-parens and auto-quotes. Getting this right isn't trivial,
5228 for auto-parens and auto-quotes. Getting this right isn't trivial,
5221 with all the color escapes, different prompt types and optional
5229 with all the color escapes, different prompt types and optional
5222 separators. But it seems to be working in all the combinations.
5230 separators. But it seems to be working in all the combinations.
5223
5231
5224 2001-11-26 Fernando Perez <fperez@colorado.edu>
5232 2001-11-26 Fernando Perez <fperez@colorado.edu>
5225
5233
5226 * Wrote a regexp filter to get option types from the option names
5234 * Wrote a regexp filter to get option types from the option names
5227 string. This eliminates the need to manually keep two duplicate
5235 string. This eliminates the need to manually keep two duplicate
5228 lists.
5236 lists.
5229
5237
5230 * Removed the unneeded check_option_names. Now options are handled
5238 * Removed the unneeded check_option_names. Now options are handled
5231 in a much saner manner and it's easy to visually check that things
5239 in a much saner manner and it's easy to visually check that things
5232 are ok.
5240 are ok.
5233
5241
5234 * Updated version numbers on all files I modified to carry a
5242 * Updated version numbers on all files I modified to carry a
5235 notice so Janko and Nathan have clear version markers.
5243 notice so Janko and Nathan have clear version markers.
5236
5244
5237 * Updated docstring for ultraTB with my changes. I should send
5245 * Updated docstring for ultraTB with my changes. I should send
5238 this to Nathan.
5246 this to Nathan.
5239
5247
5240 * Lots of small fixes. Ran everything through pychecker again.
5248 * Lots of small fixes. Ran everything through pychecker again.
5241
5249
5242 * Made loading of deep_reload an cmd line option. If it's not too
5250 * Made loading of deep_reload an cmd line option. If it's not too
5243 kosher, now people can just disable it. With -nodeep_reload it's
5251 kosher, now people can just disable it. With -nodeep_reload it's
5244 still available as dreload(), it just won't overwrite reload().
5252 still available as dreload(), it just won't overwrite reload().
5245
5253
5246 * Moved many options to the no| form (-opt and -noopt
5254 * Moved many options to the no| form (-opt and -noopt
5247 accepted). Cleaner.
5255 accepted). Cleaner.
5248
5256
5249 * Changed magic_log so that if called with no parameters, it uses
5257 * Changed magic_log so that if called with no parameters, it uses
5250 'rotate' mode. That way auto-generated logs aren't automatically
5258 'rotate' mode. That way auto-generated logs aren't automatically
5251 over-written. For normal logs, now a backup is made if it exists
5259 over-written. For normal logs, now a backup is made if it exists
5252 (only 1 level of backups). A new 'backup' mode was added to the
5260 (only 1 level of backups). A new 'backup' mode was added to the
5253 Logger class to support this. This was a request by Janko.
5261 Logger class to support this. This was a request by Janko.
5254
5262
5255 * Added @logoff/@logon to stop/restart an active log.
5263 * Added @logoff/@logon to stop/restart an active log.
5256
5264
5257 * Fixed a lot of bugs in log saving/replay. It was pretty
5265 * Fixed a lot of bugs in log saving/replay. It was pretty
5258 broken. Now special lines (!@,/) appear properly in the command
5266 broken. Now special lines (!@,/) appear properly in the command
5259 history after a log replay.
5267 history after a log replay.
5260
5268
5261 * Tried and failed to implement full session saving via pickle. My
5269 * Tried and failed to implement full session saving via pickle. My
5262 idea was to pickle __main__.__dict__, but modules can't be
5270 idea was to pickle __main__.__dict__, but modules can't be
5263 pickled. This would be a better alternative to replaying logs, but
5271 pickled. This would be a better alternative to replaying logs, but
5264 seems quite tricky to get to work. Changed -session to be called
5272 seems quite tricky to get to work. Changed -session to be called
5265 -logplay, which more accurately reflects what it does. And if we
5273 -logplay, which more accurately reflects what it does. And if we
5266 ever get real session saving working, -session is now available.
5274 ever get real session saving working, -session is now available.
5267
5275
5268 * Implemented color schemes for prompts also. As for tracebacks,
5276 * Implemented color schemes for prompts also. As for tracebacks,
5269 currently only NoColor and Linux are supported. But now the
5277 currently only NoColor and Linux are supported. But now the
5270 infrastructure is in place, based on a generic ColorScheme
5278 infrastructure is in place, based on a generic ColorScheme
5271 class. So writing and activating new schemes both for the prompts
5279 class. So writing and activating new schemes both for the prompts
5272 and the tracebacks should be straightforward.
5280 and the tracebacks should be straightforward.
5273
5281
5274 * Version 0.1.13 released, 0.1.14 opened.
5282 * Version 0.1.13 released, 0.1.14 opened.
5275
5283
5276 * Changed handling of options for output cache. Now counter is
5284 * Changed handling of options for output cache. Now counter is
5277 hardwired starting at 1 and one specifies the maximum number of
5285 hardwired starting at 1 and one specifies the maximum number of
5278 entries *in the outcache* (not the max prompt counter). This is
5286 entries *in the outcache* (not the max prompt counter). This is
5279 much better, since many statements won't increase the cache
5287 much better, since many statements won't increase the cache
5280 count. It also eliminated some confusing options, now there's only
5288 count. It also eliminated some confusing options, now there's only
5281 one: cache_size.
5289 one: cache_size.
5282
5290
5283 * Added 'alias' magic function and magic_alias option in the
5291 * Added 'alias' magic function and magic_alias option in the
5284 ipythonrc file. Now the user can easily define whatever names he
5292 ipythonrc file. Now the user can easily define whatever names he
5285 wants for the magic functions without having to play weird
5293 wants for the magic functions without having to play weird
5286 namespace games. This gives IPython a real shell-like feel.
5294 namespace games. This gives IPython a real shell-like feel.
5287
5295
5288 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5296 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5289 @ or not).
5297 @ or not).
5290
5298
5291 This was one of the last remaining 'visible' bugs (that I know
5299 This was one of the last remaining 'visible' bugs (that I know
5292 of). I think if I can clean up the session loading so it works
5300 of). I think if I can clean up the session loading so it works
5293 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5301 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5294 about licensing).
5302 about licensing).
5295
5303
5296 2001-11-25 Fernando Perez <fperez@colorado.edu>
5304 2001-11-25 Fernando Perez <fperez@colorado.edu>
5297
5305
5298 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5306 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5299 there's a cleaner distinction between what ? and ?? show.
5307 there's a cleaner distinction between what ? and ?? show.
5300
5308
5301 * Added screen_length option. Now the user can define his own
5309 * Added screen_length option. Now the user can define his own
5302 screen size for page() operations.
5310 screen size for page() operations.
5303
5311
5304 * Implemented magic shell-like functions with automatic code
5312 * Implemented magic shell-like functions with automatic code
5305 generation. Now adding another function is just a matter of adding
5313 generation. Now adding another function is just a matter of adding
5306 an entry to a dict, and the function is dynamically generated at
5314 an entry to a dict, and the function is dynamically generated at
5307 run-time. Python has some really cool features!
5315 run-time. Python has some really cool features!
5308
5316
5309 * Renamed many options to cleanup conventions a little. Now all
5317 * Renamed many options to cleanup conventions a little. Now all
5310 are lowercase, and only underscores where needed. Also in the code
5318 are lowercase, and only underscores where needed. Also in the code
5311 option name tables are clearer.
5319 option name tables are clearer.
5312
5320
5313 * Changed prompts a little. Now input is 'In [n]:' instead of
5321 * Changed prompts a little. Now input is 'In [n]:' instead of
5314 'In[n]:='. This allows it the numbers to be aligned with the
5322 'In[n]:='. This allows it the numbers to be aligned with the
5315 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5323 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5316 Python (it was a Mathematica thing). The '...' continuation prompt
5324 Python (it was a Mathematica thing). The '...' continuation prompt
5317 was also changed a little to align better.
5325 was also changed a little to align better.
5318
5326
5319 * Fixed bug when flushing output cache. Not all _p<n> variables
5327 * Fixed bug when flushing output cache. Not all _p<n> variables
5320 exist, so their deletion needs to be wrapped in a try:
5328 exist, so their deletion needs to be wrapped in a try:
5321
5329
5322 * Figured out how to properly use inspect.formatargspec() (it
5330 * Figured out how to properly use inspect.formatargspec() (it
5323 requires the args preceded by *). So I removed all the code from
5331 requires the args preceded by *). So I removed all the code from
5324 _get_pdef in Magic, which was just replicating that.
5332 _get_pdef in Magic, which was just replicating that.
5325
5333
5326 * Added test to prefilter to allow redefining magic function names
5334 * Added test to prefilter to allow redefining magic function names
5327 as variables. This is ok, since the @ form is always available,
5335 as variables. This is ok, since the @ form is always available,
5328 but whe should allow the user to define a variable called 'ls' if
5336 but whe should allow the user to define a variable called 'ls' if
5329 he needs it.
5337 he needs it.
5330
5338
5331 * Moved the ToDo information from README into a separate ToDo.
5339 * Moved the ToDo information from README into a separate ToDo.
5332
5340
5333 * General code cleanup and small bugfixes. I think it's close to a
5341 * General code cleanup and small bugfixes. I think it's close to a
5334 state where it can be released, obviously with a big 'beta'
5342 state where it can be released, obviously with a big 'beta'
5335 warning on it.
5343 warning on it.
5336
5344
5337 * Got the magic function split to work. Now all magics are defined
5345 * Got the magic function split to work. Now all magics are defined
5338 in a separate class. It just organizes things a bit, and now
5346 in a separate class. It just organizes things a bit, and now
5339 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5347 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5340 was too long).
5348 was too long).
5341
5349
5342 * Changed @clear to @reset to avoid potential confusions with
5350 * Changed @clear to @reset to avoid potential confusions with
5343 the shell command clear. Also renamed @cl to @clear, which does
5351 the shell command clear. Also renamed @cl to @clear, which does
5344 exactly what people expect it to from their shell experience.
5352 exactly what people expect it to from their shell experience.
5345
5353
5346 Added a check to the @reset command (since it's so
5354 Added a check to the @reset command (since it's so
5347 destructive, it's probably a good idea to ask for confirmation).
5355 destructive, it's probably a good idea to ask for confirmation).
5348 But now reset only works for full namespace resetting. Since the
5356 But now reset only works for full namespace resetting. Since the
5349 del keyword is already there for deleting a few specific
5357 del keyword is already there for deleting a few specific
5350 variables, I don't see the point of having a redundant magic
5358 variables, I don't see the point of having a redundant magic
5351 function for the same task.
5359 function for the same task.
5352
5360
5353 2001-11-24 Fernando Perez <fperez@colorado.edu>
5361 2001-11-24 Fernando Perez <fperez@colorado.edu>
5354
5362
5355 * Updated the builtin docs (esp. the ? ones).
5363 * Updated the builtin docs (esp. the ? ones).
5356
5364
5357 * Ran all the code through pychecker. Not terribly impressed with
5365 * Ran all the code through pychecker. Not terribly impressed with
5358 it: lots of spurious warnings and didn't really find anything of
5366 it: lots of spurious warnings and didn't really find anything of
5359 substance (just a few modules being imported and not used).
5367 substance (just a few modules being imported and not used).
5360
5368
5361 * Implemented the new ultraTB functionality into IPython. New
5369 * Implemented the new ultraTB functionality into IPython. New
5362 option: xcolors. This chooses color scheme. xmode now only selects
5370 option: xcolors. This chooses color scheme. xmode now only selects
5363 between Plain and Verbose. Better orthogonality.
5371 between Plain and Verbose. Better orthogonality.
5364
5372
5365 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5373 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5366 mode and color scheme for the exception handlers. Now it's
5374 mode and color scheme for the exception handlers. Now it's
5367 possible to have the verbose traceback with no coloring.
5375 possible to have the verbose traceback with no coloring.
5368
5376
5369 2001-11-23 Fernando Perez <fperez@colorado.edu>
5377 2001-11-23 Fernando Perez <fperez@colorado.edu>
5370
5378
5371 * Version 0.1.12 released, 0.1.13 opened.
5379 * Version 0.1.12 released, 0.1.13 opened.
5372
5380
5373 * Removed option to set auto-quote and auto-paren escapes by
5381 * Removed option to set auto-quote and auto-paren escapes by
5374 user. The chances of breaking valid syntax are just too high. If
5382 user. The chances of breaking valid syntax are just too high. If
5375 someone *really* wants, they can always dig into the code.
5383 someone *really* wants, they can always dig into the code.
5376
5384
5377 * Made prompt separators configurable.
5385 * Made prompt separators configurable.
5378
5386
5379 2001-11-22 Fernando Perez <fperez@colorado.edu>
5387 2001-11-22 Fernando Perez <fperez@colorado.edu>
5380
5388
5381 * Small bugfixes in many places.
5389 * Small bugfixes in many places.
5382
5390
5383 * Removed the MyCompleter class from ipplib. It seemed redundant
5391 * Removed the MyCompleter class from ipplib. It seemed redundant
5384 with the C-p,C-n history search functionality. Less code to
5392 with the C-p,C-n history search functionality. Less code to
5385 maintain.
5393 maintain.
5386
5394
5387 * Moved all the original ipython.py code into ipythonlib.py. Right
5395 * Moved all the original ipython.py code into ipythonlib.py. Right
5388 now it's just one big dump into a function called make_IPython, so
5396 now it's just one big dump into a function called make_IPython, so
5389 no real modularity has been gained. But at least it makes the
5397 no real modularity has been gained. But at least it makes the
5390 wrapper script tiny, and since ipythonlib is a module, it gets
5398 wrapper script tiny, and since ipythonlib is a module, it gets
5391 compiled and startup is much faster.
5399 compiled and startup is much faster.
5392
5400
5393 This is a reasobably 'deep' change, so we should test it for a
5401 This is a reasobably 'deep' change, so we should test it for a
5394 while without messing too much more with the code.
5402 while without messing too much more with the code.
5395
5403
5396 2001-11-21 Fernando Perez <fperez@colorado.edu>
5404 2001-11-21 Fernando Perez <fperez@colorado.edu>
5397
5405
5398 * Version 0.1.11 released, 0.1.12 opened for further work.
5406 * Version 0.1.11 released, 0.1.12 opened for further work.
5399
5407
5400 * Removed dependency on Itpl. It was only needed in one place. It
5408 * Removed dependency on Itpl. It was only needed in one place. It
5401 would be nice if this became part of python, though. It makes life
5409 would be nice if this became part of python, though. It makes life
5402 *a lot* easier in some cases.
5410 *a lot* easier in some cases.
5403
5411
5404 * Simplified the prefilter code a bit. Now all handlers are
5412 * Simplified the prefilter code a bit. Now all handlers are
5405 expected to explicitly return a value (at least a blank string).
5413 expected to explicitly return a value (at least a blank string).
5406
5414
5407 * Heavy edits in ipplib. Removed the help system altogether. Now
5415 * Heavy edits in ipplib. Removed the help system altogether. Now
5408 obj?/?? is used for inspecting objects, a magic @doc prints
5416 obj?/?? is used for inspecting objects, a magic @doc prints
5409 docstrings, and full-blown Python help is accessed via the 'help'
5417 docstrings, and full-blown Python help is accessed via the 'help'
5410 keyword. This cleans up a lot of code (less to maintain) and does
5418 keyword. This cleans up a lot of code (less to maintain) and does
5411 the job. Since 'help' is now a standard Python component, might as
5419 the job. Since 'help' is now a standard Python component, might as
5412 well use it and remove duplicate functionality.
5420 well use it and remove duplicate functionality.
5413
5421
5414 Also removed the option to use ipplib as a standalone program. By
5422 Also removed the option to use ipplib as a standalone program. By
5415 now it's too dependent on other parts of IPython to function alone.
5423 now it's too dependent on other parts of IPython to function alone.
5416
5424
5417 * Fixed bug in genutils.pager. It would crash if the pager was
5425 * Fixed bug in genutils.pager. It would crash if the pager was
5418 exited immediately after opening (broken pipe).
5426 exited immediately after opening (broken pipe).
5419
5427
5420 * Trimmed down the VerboseTB reporting a little. The header is
5428 * Trimmed down the VerboseTB reporting a little. The header is
5421 much shorter now and the repeated exception arguments at the end
5429 much shorter now and the repeated exception arguments at the end
5422 have been removed. For interactive use the old header seemed a bit
5430 have been removed. For interactive use the old header seemed a bit
5423 excessive.
5431 excessive.
5424
5432
5425 * Fixed small bug in output of @whos for variables with multi-word
5433 * Fixed small bug in output of @whos for variables with multi-word
5426 types (only first word was displayed).
5434 types (only first word was displayed).
5427
5435
5428 2001-11-17 Fernando Perez <fperez@colorado.edu>
5436 2001-11-17 Fernando Perez <fperez@colorado.edu>
5429
5437
5430 * Version 0.1.10 released, 0.1.11 opened for further work.
5438 * Version 0.1.10 released, 0.1.11 opened for further work.
5431
5439
5432 * Modified dirs and friends. dirs now *returns* the stack (not
5440 * Modified dirs and friends. dirs now *returns* the stack (not
5433 prints), so one can manipulate it as a variable. Convenient to
5441 prints), so one can manipulate it as a variable. Convenient to
5434 travel along many directories.
5442 travel along many directories.
5435
5443
5436 * Fixed bug in magic_pdef: would only work with functions with
5444 * Fixed bug in magic_pdef: would only work with functions with
5437 arguments with default values.
5445 arguments with default values.
5438
5446
5439 2001-11-14 Fernando Perez <fperez@colorado.edu>
5447 2001-11-14 Fernando Perez <fperez@colorado.edu>
5440
5448
5441 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5449 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5442 example with IPython. Various other minor fixes and cleanups.
5450 example with IPython. Various other minor fixes and cleanups.
5443
5451
5444 * Version 0.1.9 released, 0.1.10 opened for further work.
5452 * Version 0.1.9 released, 0.1.10 opened for further work.
5445
5453
5446 * Added sys.path to the list of directories searched in the
5454 * Added sys.path to the list of directories searched in the
5447 execfile= option. It used to be the current directory and the
5455 execfile= option. It used to be the current directory and the
5448 user's IPYTHONDIR only.
5456 user's IPYTHONDIR only.
5449
5457
5450 2001-11-13 Fernando Perez <fperez@colorado.edu>
5458 2001-11-13 Fernando Perez <fperez@colorado.edu>
5451
5459
5452 * Reinstated the raw_input/prefilter separation that Janko had
5460 * Reinstated the raw_input/prefilter separation that Janko had
5453 initially. This gives a more convenient setup for extending the
5461 initially. This gives a more convenient setup for extending the
5454 pre-processor from the outside: raw_input always gets a string,
5462 pre-processor from the outside: raw_input always gets a string,
5455 and prefilter has to process it. We can then redefine prefilter
5463 and prefilter has to process it. We can then redefine prefilter
5456 from the outside and implement extensions for special
5464 from the outside and implement extensions for special
5457 purposes.
5465 purposes.
5458
5466
5459 Today I got one for inputting PhysicalQuantity objects
5467 Today I got one for inputting PhysicalQuantity objects
5460 (from Scientific) without needing any function calls at
5468 (from Scientific) without needing any function calls at
5461 all. Extremely convenient, and it's all done as a user-level
5469 all. Extremely convenient, and it's all done as a user-level
5462 extension (no IPython code was touched). Now instead of:
5470 extension (no IPython code was touched). Now instead of:
5463 a = PhysicalQuantity(4.2,'m/s**2')
5471 a = PhysicalQuantity(4.2,'m/s**2')
5464 one can simply say
5472 one can simply say
5465 a = 4.2 m/s**2
5473 a = 4.2 m/s**2
5466 or even
5474 or even
5467 a = 4.2 m/s^2
5475 a = 4.2 m/s^2
5468
5476
5469 I use this, but it's also a proof of concept: IPython really is
5477 I use this, but it's also a proof of concept: IPython really is
5470 fully user-extensible, even at the level of the parsing of the
5478 fully user-extensible, even at the level of the parsing of the
5471 command line. It's not trivial, but it's perfectly doable.
5479 command line. It's not trivial, but it's perfectly doable.
5472
5480
5473 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5481 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5474 the problem of modules being loaded in the inverse order in which
5482 the problem of modules being loaded in the inverse order in which
5475 they were defined in
5483 they were defined in
5476
5484
5477 * Version 0.1.8 released, 0.1.9 opened for further work.
5485 * Version 0.1.8 released, 0.1.9 opened for further work.
5478
5486
5479 * Added magics pdef, source and file. They respectively show the
5487 * Added magics pdef, source and file. They respectively show the
5480 definition line ('prototype' in C), source code and full python
5488 definition line ('prototype' in C), source code and full python
5481 file for any callable object. The object inspector oinfo uses
5489 file for any callable object. The object inspector oinfo uses
5482 these to show the same information.
5490 these to show the same information.
5483
5491
5484 * Version 0.1.7 released, 0.1.8 opened for further work.
5492 * Version 0.1.7 released, 0.1.8 opened for further work.
5485
5493
5486 * Separated all the magic functions into a class called Magic. The
5494 * Separated all the magic functions into a class called Magic. The
5487 InteractiveShell class was becoming too big for Xemacs to handle
5495 InteractiveShell class was becoming too big for Xemacs to handle
5488 (de-indenting a line would lock it up for 10 seconds while it
5496 (de-indenting a line would lock it up for 10 seconds while it
5489 backtracked on the whole class!)
5497 backtracked on the whole class!)
5490
5498
5491 FIXME: didn't work. It can be done, but right now namespaces are
5499 FIXME: didn't work. It can be done, but right now namespaces are
5492 all messed up. Do it later (reverted it for now, so at least
5500 all messed up. Do it later (reverted it for now, so at least
5493 everything works as before).
5501 everything works as before).
5494
5502
5495 * Got the object introspection system (magic_oinfo) working! I
5503 * Got the object introspection system (magic_oinfo) working! I
5496 think this is pretty much ready for release to Janko, so he can
5504 think this is pretty much ready for release to Janko, so he can
5497 test it for a while and then announce it. Pretty much 100% of what
5505 test it for a while and then announce it. Pretty much 100% of what
5498 I wanted for the 'phase 1' release is ready. Happy, tired.
5506 I wanted for the 'phase 1' release is ready. Happy, tired.
5499
5507
5500 2001-11-12 Fernando Perez <fperez@colorado.edu>
5508 2001-11-12 Fernando Perez <fperez@colorado.edu>
5501
5509
5502 * Version 0.1.6 released, 0.1.7 opened for further work.
5510 * Version 0.1.6 released, 0.1.7 opened for further work.
5503
5511
5504 * Fixed bug in printing: it used to test for truth before
5512 * Fixed bug in printing: it used to test for truth before
5505 printing, so 0 wouldn't print. Now checks for None.
5513 printing, so 0 wouldn't print. Now checks for None.
5506
5514
5507 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5515 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5508 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5516 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5509 reaches by hand into the outputcache. Think of a better way to do
5517 reaches by hand into the outputcache. Think of a better way to do
5510 this later.
5518 this later.
5511
5519
5512 * Various small fixes thanks to Nathan's comments.
5520 * Various small fixes thanks to Nathan's comments.
5513
5521
5514 * Changed magic_pprint to magic_Pprint. This way it doesn't
5522 * Changed magic_pprint to magic_Pprint. This way it doesn't
5515 collide with pprint() and the name is consistent with the command
5523 collide with pprint() and the name is consistent with the command
5516 line option.
5524 line option.
5517
5525
5518 * Changed prompt counter behavior to be fully like
5526 * Changed prompt counter behavior to be fully like
5519 Mathematica's. That is, even input that doesn't return a result
5527 Mathematica's. That is, even input that doesn't return a result
5520 raises the prompt counter. The old behavior was kind of confusing
5528 raises the prompt counter. The old behavior was kind of confusing
5521 (getting the same prompt number several times if the operation
5529 (getting the same prompt number several times if the operation
5522 didn't return a result).
5530 didn't return a result).
5523
5531
5524 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5532 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5525
5533
5526 * Fixed -Classic mode (wasn't working anymore).
5534 * Fixed -Classic mode (wasn't working anymore).
5527
5535
5528 * Added colored prompts using Nathan's new code. Colors are
5536 * Added colored prompts using Nathan's new code. Colors are
5529 currently hardwired, they can be user-configurable. For
5537 currently hardwired, they can be user-configurable. For
5530 developers, they can be chosen in file ipythonlib.py, at the
5538 developers, they can be chosen in file ipythonlib.py, at the
5531 beginning of the CachedOutput class def.
5539 beginning of the CachedOutput class def.
5532
5540
5533 2001-11-11 Fernando Perez <fperez@colorado.edu>
5541 2001-11-11 Fernando Perez <fperez@colorado.edu>
5534
5542
5535 * Version 0.1.5 released, 0.1.6 opened for further work.
5543 * Version 0.1.5 released, 0.1.6 opened for further work.
5536
5544
5537 * Changed magic_env to *return* the environment as a dict (not to
5545 * Changed magic_env to *return* the environment as a dict (not to
5538 print it). This way it prints, but it can also be processed.
5546 print it). This way it prints, but it can also be processed.
5539
5547
5540 * Added Verbose exception reporting to interactive
5548 * Added Verbose exception reporting to interactive
5541 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5549 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5542 traceback. Had to make some changes to the ultraTB file. This is
5550 traceback. Had to make some changes to the ultraTB file. This is
5543 probably the last 'big' thing in my mental todo list. This ties
5551 probably the last 'big' thing in my mental todo list. This ties
5544 in with the next entry:
5552 in with the next entry:
5545
5553
5546 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5554 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5547 has to specify is Plain, Color or Verbose for all exception
5555 has to specify is Plain, Color or Verbose for all exception
5548 handling.
5556 handling.
5549
5557
5550 * Removed ShellServices option. All this can really be done via
5558 * Removed ShellServices option. All this can really be done via
5551 the magic system. It's easier to extend, cleaner and has automatic
5559 the magic system. It's easier to extend, cleaner and has automatic
5552 namespace protection and documentation.
5560 namespace protection and documentation.
5553
5561
5554 2001-11-09 Fernando Perez <fperez@colorado.edu>
5562 2001-11-09 Fernando Perez <fperez@colorado.edu>
5555
5563
5556 * Fixed bug in output cache flushing (missing parameter to
5564 * Fixed bug in output cache flushing (missing parameter to
5557 __init__). Other small bugs fixed (found using pychecker).
5565 __init__). Other small bugs fixed (found using pychecker).
5558
5566
5559 * Version 0.1.4 opened for bugfixing.
5567 * Version 0.1.4 opened for bugfixing.
5560
5568
5561 2001-11-07 Fernando Perez <fperez@colorado.edu>
5569 2001-11-07 Fernando Perez <fperez@colorado.edu>
5562
5570
5563 * Version 0.1.3 released, mainly because of the raw_input bug.
5571 * Version 0.1.3 released, mainly because of the raw_input bug.
5564
5572
5565 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5573 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5566 and when testing for whether things were callable, a call could
5574 and when testing for whether things were callable, a call could
5567 actually be made to certain functions. They would get called again
5575 actually be made to certain functions. They would get called again
5568 once 'really' executed, with a resulting double call. A disaster
5576 once 'really' executed, with a resulting double call. A disaster
5569 in many cases (list.reverse() would never work!).
5577 in many cases (list.reverse() would never work!).
5570
5578
5571 * Removed prefilter() function, moved its code to raw_input (which
5579 * Removed prefilter() function, moved its code to raw_input (which
5572 after all was just a near-empty caller for prefilter). This saves
5580 after all was just a near-empty caller for prefilter). This saves
5573 a function call on every prompt, and simplifies the class a tiny bit.
5581 a function call on every prompt, and simplifies the class a tiny bit.
5574
5582
5575 * Fix _ip to __ip name in magic example file.
5583 * Fix _ip to __ip name in magic example file.
5576
5584
5577 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5585 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5578 work with non-gnu versions of tar.
5586 work with non-gnu versions of tar.
5579
5587
5580 2001-11-06 Fernando Perez <fperez@colorado.edu>
5588 2001-11-06 Fernando Perez <fperez@colorado.edu>
5581
5589
5582 * Version 0.1.2. Just to keep track of the recent changes.
5590 * Version 0.1.2. Just to keep track of the recent changes.
5583
5591
5584 * Fixed nasty bug in output prompt routine. It used to check 'if
5592 * Fixed nasty bug in output prompt routine. It used to check 'if
5585 arg != None...'. Problem is, this fails if arg implements a
5593 arg != None...'. Problem is, this fails if arg implements a
5586 special comparison (__cmp__) which disallows comparing to
5594 special comparison (__cmp__) which disallows comparing to
5587 None. Found it when trying to use the PhysicalQuantity module from
5595 None. Found it when trying to use the PhysicalQuantity module from
5588 ScientificPython.
5596 ScientificPython.
5589
5597
5590 2001-11-05 Fernando Perez <fperez@colorado.edu>
5598 2001-11-05 Fernando Perez <fperez@colorado.edu>
5591
5599
5592 * Also added dirs. Now the pushd/popd/dirs family functions
5600 * Also added dirs. Now the pushd/popd/dirs family functions
5593 basically like the shell, with the added convenience of going home
5601 basically like the shell, with the added convenience of going home
5594 when called with no args.
5602 when called with no args.
5595
5603
5596 * pushd/popd slightly modified to mimic shell behavior more
5604 * pushd/popd slightly modified to mimic shell behavior more
5597 closely.
5605 closely.
5598
5606
5599 * Added env,pushd,popd from ShellServices as magic functions. I
5607 * Added env,pushd,popd from ShellServices as magic functions. I
5600 think the cleanest will be to port all desired functions from
5608 think the cleanest will be to port all desired functions from
5601 ShellServices as magics and remove ShellServices altogether. This
5609 ShellServices as magics and remove ShellServices altogether. This
5602 will provide a single, clean way of adding functionality
5610 will provide a single, clean way of adding functionality
5603 (shell-type or otherwise) to IP.
5611 (shell-type or otherwise) to IP.
5604
5612
5605 2001-11-04 Fernando Perez <fperez@colorado.edu>
5613 2001-11-04 Fernando Perez <fperez@colorado.edu>
5606
5614
5607 * Added .ipython/ directory to sys.path. This way users can keep
5615 * Added .ipython/ directory to sys.path. This way users can keep
5608 customizations there and access them via import.
5616 customizations there and access them via import.
5609
5617
5610 2001-11-03 Fernando Perez <fperez@colorado.edu>
5618 2001-11-03 Fernando Perez <fperez@colorado.edu>
5611
5619
5612 * Opened version 0.1.1 for new changes.
5620 * Opened version 0.1.1 for new changes.
5613
5621
5614 * Changed version number to 0.1.0: first 'public' release, sent to
5622 * Changed version number to 0.1.0: first 'public' release, sent to
5615 Nathan and Janko.
5623 Nathan and Janko.
5616
5624
5617 * Lots of small fixes and tweaks.
5625 * Lots of small fixes and tweaks.
5618
5626
5619 * Minor changes to whos format. Now strings are shown, snipped if
5627 * Minor changes to whos format. Now strings are shown, snipped if
5620 too long.
5628 too long.
5621
5629
5622 * Changed ShellServices to work on __main__ so they show up in @who
5630 * Changed ShellServices to work on __main__ so they show up in @who
5623
5631
5624 * Help also works with ? at the end of a line:
5632 * Help also works with ? at the end of a line:
5625 ?sin and sin?
5633 ?sin and sin?
5626 both produce the same effect. This is nice, as often I use the
5634 both produce the same effect. This is nice, as often I use the
5627 tab-complete to find the name of a method, but I used to then have
5635 tab-complete to find the name of a method, but I used to then have
5628 to go to the beginning of the line to put a ? if I wanted more
5636 to go to the beginning of the line to put a ? if I wanted more
5629 info. Now I can just add the ? and hit return. Convenient.
5637 info. Now I can just add the ? and hit return. Convenient.
5630
5638
5631 2001-11-02 Fernando Perez <fperez@colorado.edu>
5639 2001-11-02 Fernando Perez <fperez@colorado.edu>
5632
5640
5633 * Python version check (>=2.1) added.
5641 * Python version check (>=2.1) added.
5634
5642
5635 * Added LazyPython documentation. At this point the docs are quite
5643 * Added LazyPython documentation. At this point the docs are quite
5636 a mess. A cleanup is in order.
5644 a mess. A cleanup is in order.
5637
5645
5638 * Auto-installer created. For some bizarre reason, the zipfiles
5646 * Auto-installer created. For some bizarre reason, the zipfiles
5639 module isn't working on my system. So I made a tar version
5647 module isn't working on my system. So I made a tar version
5640 (hopefully the command line options in various systems won't kill
5648 (hopefully the command line options in various systems won't kill
5641 me).
5649 me).
5642
5650
5643 * Fixes to Struct in genutils. Now all dictionary-like methods are
5651 * Fixes to Struct in genutils. Now all dictionary-like methods are
5644 protected (reasonably).
5652 protected (reasonably).
5645
5653
5646 * Added pager function to genutils and changed ? to print usage
5654 * Added pager function to genutils and changed ? to print usage
5647 note through it (it was too long).
5655 note through it (it was too long).
5648
5656
5649 * Added the LazyPython functionality. Works great! I changed the
5657 * Added the LazyPython functionality. Works great! I changed the
5650 auto-quote escape to ';', it's on home row and next to '. But
5658 auto-quote escape to ';', it's on home row and next to '. But
5651 both auto-quote and auto-paren (still /) escapes are command-line
5659 both auto-quote and auto-paren (still /) escapes are command-line
5652 parameters.
5660 parameters.
5653
5661
5654
5662
5655 2001-11-01 Fernando Perez <fperez@colorado.edu>
5663 2001-11-01 Fernando Perez <fperez@colorado.edu>
5656
5664
5657 * Version changed to 0.0.7. Fairly large change: configuration now
5665 * Version changed to 0.0.7. Fairly large change: configuration now
5658 is all stored in a directory, by default .ipython. There, all
5666 is all stored in a directory, by default .ipython. There, all
5659 config files have normal looking names (not .names)
5667 config files have normal looking names (not .names)
5660
5668
5661 * Version 0.0.6 Released first to Lucas and Archie as a test
5669 * Version 0.0.6 Released first to Lucas and Archie as a test
5662 run. Since it's the first 'semi-public' release, change version to
5670 run. Since it's the first 'semi-public' release, change version to
5663 > 0.0.6 for any changes now.
5671 > 0.0.6 for any changes now.
5664
5672
5665 * Stuff I had put in the ipplib.py changelog:
5673 * Stuff I had put in the ipplib.py changelog:
5666
5674
5667 Changes to InteractiveShell:
5675 Changes to InteractiveShell:
5668
5676
5669 - Made the usage message a parameter.
5677 - Made the usage message a parameter.
5670
5678
5671 - Require the name of the shell variable to be given. It's a bit
5679 - Require the name of the shell variable to be given. It's a bit
5672 of a hack, but allows the name 'shell' not to be hardwired in the
5680 of a hack, but allows the name 'shell' not to be hardwired in the
5673 magic (@) handler, which is problematic b/c it requires
5681 magic (@) handler, which is problematic b/c it requires
5674 polluting the global namespace with 'shell'. This in turn is
5682 polluting the global namespace with 'shell'. This in turn is
5675 fragile: if a user redefines a variable called shell, things
5683 fragile: if a user redefines a variable called shell, things
5676 break.
5684 break.
5677
5685
5678 - magic @: all functions available through @ need to be defined
5686 - magic @: all functions available through @ need to be defined
5679 as magic_<name>, even though they can be called simply as
5687 as magic_<name>, even though they can be called simply as
5680 @<name>. This allows the special command @magic to gather
5688 @<name>. This allows the special command @magic to gather
5681 information automatically about all existing magic functions,
5689 information automatically about all existing magic functions,
5682 even if they are run-time user extensions, by parsing the shell
5690 even if they are run-time user extensions, by parsing the shell
5683 instance __dict__ looking for special magic_ names.
5691 instance __dict__ looking for special magic_ names.
5684
5692
5685 - mainloop: added *two* local namespace parameters. This allows
5693 - mainloop: added *two* local namespace parameters. This allows
5686 the class to differentiate between parameters which were there
5694 the class to differentiate between parameters which were there
5687 before and after command line initialization was processed. This
5695 before and after command line initialization was processed. This
5688 way, later @who can show things loaded at startup by the
5696 way, later @who can show things loaded at startup by the
5689 user. This trick was necessary to make session saving/reloading
5697 user. This trick was necessary to make session saving/reloading
5690 really work: ideally after saving/exiting/reloading a session,
5698 really work: ideally after saving/exiting/reloading a session,
5691 *everything* should look the same, including the output of @who. I
5699 *everything* should look the same, including the output of @who. I
5692 was only able to make this work with this double namespace
5700 was only able to make this work with this double namespace
5693 trick.
5701 trick.
5694
5702
5695 - added a header to the logfile which allows (almost) full
5703 - added a header to the logfile which allows (almost) full
5696 session restoring.
5704 session restoring.
5697
5705
5698 - prepend lines beginning with @ or !, with a and log
5706 - prepend lines beginning with @ or !, with a and log
5699 them. Why? !lines: may be useful to know what you did @lines:
5707 them. Why? !lines: may be useful to know what you did @lines:
5700 they may affect session state. So when restoring a session, at
5708 they may affect session state. So when restoring a session, at
5701 least inform the user of their presence. I couldn't quite get
5709 least inform the user of their presence. I couldn't quite get
5702 them to properly re-execute, but at least the user is warned.
5710 them to properly re-execute, but at least the user is warned.
5703
5711
5704 * Started ChangeLog.
5712 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now