##// END OF EJS Templates
Oinspect.py: Only show docstring for nonexisting/binary files...
vivainio -
Show More
@@ -1,475 +1,483 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 1058 2006-01-22 14:30:01Z vivainio $
9 $Id: OInspect.py 1300 2006-05-15 16:27:36Z vivainio $
10 """
10 """
11
11
12 #*****************************************************************************
12 #*****************************************************************************
13 # Copyright (C) 2001-2004 Fernando Perez <fperez@colorado.edu>
13 # Copyright (C) 2001-2004 Fernando Perez <fperez@colorado.edu>
14 #
14 #
15 # Distributed under the terms of the BSD License. The full license is in
15 # Distributed under the terms of the BSD License. The full license is in
16 # the file COPYING, distributed as part of this software.
16 # the file COPYING, distributed as part of this software.
17 #*****************************************************************************
17 #*****************************************************************************
18
18
19 from IPython import Release
19 from IPython import Release
20 __author__ = '%s <%s>' % Release.authors['Fernando']
20 __author__ = '%s <%s>' % Release.authors['Fernando']
21 __license__ = Release.license
21 __license__ = Release.license
22
22
23 __all__ = ['Inspector','InspectColors']
23 __all__ = ['Inspector','InspectColors']
24
24
25 # stdlib modules
25 # stdlib modules
26 import __builtin__
26 import __builtin__
27 import inspect
27 import inspect
28 import linecache
28 import linecache
29 import string
29 import string
30 import StringIO
30 import StringIO
31 import types
31 import types
32
32 import os
33 # IPython's own
33 # IPython's own
34 from IPython import PyColorize
34 from IPython import PyColorize
35 from IPython.genutils import page,indent,Term,mkdict
35 from IPython.genutils import page,indent,Term,mkdict
36 from IPython.Itpl import itpl
36 from IPython.Itpl import itpl
37 from IPython.wildcard import list_namespace
37 from IPython.wildcard import list_namespace
38 from IPython.ColorANSI import *
38 from IPython.ColorANSI import *
39
39
40 #****************************************************************************
40 #****************************************************************************
41 # Builtin color schemes
41 # Builtin color schemes
42
42
43 Colors = TermColors # just a shorthand
43 Colors = TermColors # just a shorthand
44
44
45 # Build a few color schemes
45 # Build a few color schemes
46 NoColor = ColorScheme(
46 NoColor = ColorScheme(
47 'NoColor',{
47 'NoColor',{
48 'header' : Colors.NoColor,
48 'header' : Colors.NoColor,
49 'normal' : Colors.NoColor # color off (usu. Colors.Normal)
49 'normal' : Colors.NoColor # color off (usu. Colors.Normal)
50 } )
50 } )
51
51
52 LinuxColors = ColorScheme(
52 LinuxColors = ColorScheme(
53 'Linux',{
53 'Linux',{
54 'header' : Colors.LightRed,
54 'header' : Colors.LightRed,
55 'normal' : Colors.Normal # color off (usu. Colors.Normal)
55 'normal' : Colors.Normal # color off (usu. Colors.Normal)
56 } )
56 } )
57
57
58 LightBGColors = ColorScheme(
58 LightBGColors = ColorScheme(
59 'LightBG',{
59 'LightBG',{
60 'header' : Colors.Red,
60 'header' : Colors.Red,
61 'normal' : Colors.Normal # color off (usu. Colors.Normal)
61 'normal' : Colors.Normal # color off (usu. Colors.Normal)
62 } )
62 } )
63
63
64 # Build table of color schemes (needed by the parser)
64 # Build table of color schemes (needed by the parser)
65 InspectColors = ColorSchemeTable([NoColor,LinuxColors,LightBGColors],
65 InspectColors = ColorSchemeTable([NoColor,LinuxColors,LightBGColors],
66 'Linux')
66 'Linux')
67
67
68 #****************************************************************************
68 #****************************************************************************
69 # Auxiliary functions
69 # Auxiliary functions
70 def getdoc(obj):
70 def getdoc(obj):
71 """Stable wrapper around inspect.getdoc.
71 """Stable wrapper around inspect.getdoc.
72
72
73 This can't crash because of attribute problems.
73 This can't crash because of attribute problems.
74
74
75 It also attempts to call a getdoc() method on the given object. This
75 It also attempts to call a getdoc() method on the given object. This
76 allows objects which provide their docstrings via non-standard mechanisms
76 allows objects which provide their docstrings via non-standard mechanisms
77 (like Pyro proxies) to still be inspected by ipython's ? system."""
77 (like Pyro proxies) to still be inspected by ipython's ? system."""
78
78
79 ds = None # default return value
79 ds = None # default return value
80 try:
80 try:
81 ds = inspect.getdoc(obj)
81 ds = inspect.getdoc(obj)
82 except:
82 except:
83 # Harden against an inspect failure, which can occur with
83 # Harden against an inspect failure, which can occur with
84 # SWIG-wrapped extensions.
84 # SWIG-wrapped extensions.
85 pass
85 pass
86 # Allow objects to offer customized documentation via a getdoc method:
86 # Allow objects to offer customized documentation via a getdoc method:
87 try:
87 try:
88 ds2 = obj.getdoc()
88 ds2 = obj.getdoc()
89 except:
89 except:
90 pass
90 pass
91 else:
91 else:
92 # if we get extra info, we add it to the normal docstring.
92 # if we get extra info, we add it to the normal docstring.
93 if ds is None:
93 if ds is None:
94 ds = ds2
94 ds = ds2
95 else:
95 else:
96 ds = '%s\n%s' % (ds,ds2)
96 ds = '%s\n%s' % (ds,ds2)
97 return ds
97 return ds
98
98
99 #****************************************************************************
99 #****************************************************************************
100 # Class definitions
100 # Class definitions
101
101
102 class myStringIO(StringIO.StringIO):
102 class myStringIO(StringIO.StringIO):
103 """Adds a writeln method to normal StringIO."""
103 """Adds a writeln method to normal StringIO."""
104 def writeln(self,*arg,**kw):
104 def writeln(self,*arg,**kw):
105 """Does a write() and then a write('\n')"""
105 """Does a write() and then a write('\n')"""
106 self.write(*arg,**kw)
106 self.write(*arg,**kw)
107 self.write('\n')
107 self.write('\n')
108
108
109 class Inspector:
109 class Inspector:
110 def __init__(self,color_table,code_color_table,scheme):
110 def __init__(self,color_table,code_color_table,scheme):
111 self.color_table = color_table
111 self.color_table = color_table
112 self.parser = PyColorize.Parser(code_color_table,out='str')
112 self.parser = PyColorize.Parser(code_color_table,out='str')
113 self.format = self.parser.format
113 self.format = self.parser.format
114 self.set_active_scheme(scheme)
114 self.set_active_scheme(scheme)
115
115
116 def __getargspec(self,obj):
116 def __getargspec(self,obj):
117 """Get the names and default values of a function's arguments.
117 """Get the names and default values of a function's arguments.
118
118
119 A tuple of four things is returned: (args, varargs, varkw, defaults).
119 A tuple of four things is returned: (args, varargs, varkw, defaults).
120 'args' is a list of the argument names (it may contain nested lists).
120 'args' is a list of the argument names (it may contain nested lists).
121 'varargs' and 'varkw' are the names of the * and ** arguments or None.
121 'varargs' and 'varkw' are the names of the * and ** arguments or None.
122 'defaults' is an n-tuple of the default values of the last n arguments.
122 'defaults' is an n-tuple of the default values of the last n arguments.
123
123
124 Modified version of inspect.getargspec from the Python Standard
124 Modified version of inspect.getargspec from the Python Standard
125 Library."""
125 Library."""
126
126
127 if inspect.isfunction(obj):
127 if inspect.isfunction(obj):
128 func_obj = obj
128 func_obj = obj
129 elif inspect.ismethod(obj):
129 elif inspect.ismethod(obj):
130 func_obj = obj.im_func
130 func_obj = obj.im_func
131 else:
131 else:
132 raise TypeError, 'arg is not a Python function'
132 raise TypeError, 'arg is not a Python function'
133 args, varargs, varkw = inspect.getargs(func_obj.func_code)
133 args, varargs, varkw = inspect.getargs(func_obj.func_code)
134 return args, varargs, varkw, func_obj.func_defaults
134 return args, varargs, varkw, func_obj.func_defaults
135
135
136 def __getdef(self,obj,oname=''):
136 def __getdef(self,obj,oname=''):
137 """Return the definition header for any callable object.
137 """Return the definition header for any callable object.
138
138
139 If any exception is generated, None is returned instead and the
139 If any exception is generated, None is returned instead and the
140 exception is suppressed."""
140 exception is suppressed."""
141
141
142 try:
142 try:
143 return oname + inspect.formatargspec(*self.__getargspec(obj))
143 return oname + inspect.formatargspec(*self.__getargspec(obj))
144 except:
144 except:
145 return None
145 return None
146
146
147 def __head(self,h):
147 def __head(self,h):
148 """Return a header string with proper colors."""
148 """Return a header string with proper colors."""
149 return '%s%s%s' % (self.color_table.active_colors.header,h,
149 return '%s%s%s' % (self.color_table.active_colors.header,h,
150 self.color_table.active_colors.normal)
150 self.color_table.active_colors.normal)
151
151
152 def set_active_scheme(self,scheme):
152 def set_active_scheme(self,scheme):
153 self.color_table.set_active_scheme(scheme)
153 self.color_table.set_active_scheme(scheme)
154 self.parser.color_table.set_active_scheme(scheme)
154 self.parser.color_table.set_active_scheme(scheme)
155
155
156 def noinfo(self,msg,oname):
156 def noinfo(self,msg,oname):
157 """Generic message when no information is found."""
157 """Generic message when no information is found."""
158 print 'No %s found' % msg,
158 print 'No %s found' % msg,
159 if oname:
159 if oname:
160 print 'for %s' % oname
160 print 'for %s' % oname
161 else:
161 else:
162 print
162 print
163
163
164 def pdef(self,obj,oname=''):
164 def pdef(self,obj,oname=''):
165 """Print the definition header for any callable object.
165 """Print the definition header for any callable object.
166
166
167 If the object is a class, print the constructor information."""
167 If the object is a class, print the constructor information."""
168
168
169 if not callable(obj):
169 if not callable(obj):
170 print 'Object is not callable.'
170 print 'Object is not callable.'
171 return
171 return
172
172
173 header = ''
173 header = ''
174 if type(obj) is types.ClassType:
174 if type(obj) is types.ClassType:
175 header = self.__head('Class constructor information:\n')
175 header = self.__head('Class constructor information:\n')
176 obj = obj.__init__
176 obj = obj.__init__
177 elif type(obj) is types.InstanceType:
177 elif type(obj) is types.InstanceType:
178 obj = obj.__call__
178 obj = obj.__call__
179
179
180 output = self.__getdef(obj,oname)
180 output = self.__getdef(obj,oname)
181 if output is None:
181 if output is None:
182 self.noinfo('definition header',oname)
182 self.noinfo('definition header',oname)
183 else:
183 else:
184 print >>Term.cout, header,self.format(output),
184 print >>Term.cout, header,self.format(output),
185
185
186 def pdoc(self,obj,oname='',formatter = None):
186 def pdoc(self,obj,oname='',formatter = None):
187 """Print the docstring for any object.
187 """Print the docstring for any object.
188
188
189 Optional:
189 Optional:
190 -formatter: a function to run the docstring through for specially
190 -formatter: a function to run the docstring through for specially
191 formatted docstrings."""
191 formatted docstrings."""
192
192
193 head = self.__head # so that itpl can find it even if private
193 head = self.__head # so that itpl can find it even if private
194 ds = getdoc(obj)
194 ds = getdoc(obj)
195 if formatter:
195 if formatter:
196 ds = formatter(ds)
196 ds = formatter(ds)
197 if type(obj) is types.ClassType:
197 if type(obj) is types.ClassType:
198 init_ds = getdoc(obj.__init__)
198 init_ds = getdoc(obj.__init__)
199 output = itpl('$head("Class Docstring:")\n'
199 output = itpl('$head("Class Docstring:")\n'
200 '$indent(ds)\n'
200 '$indent(ds)\n'
201 '$head("Constructor Docstring"):\n'
201 '$head("Constructor Docstring"):\n'
202 '$indent(init_ds)')
202 '$indent(init_ds)')
203 elif type(obj) is types.InstanceType and hasattr(obj,'__call__'):
203 elif type(obj) is types.InstanceType and hasattr(obj,'__call__'):
204 call_ds = getdoc(obj.__call__)
204 call_ds = getdoc(obj.__call__)
205 if call_ds:
205 if call_ds:
206 output = itpl('$head("Class Docstring:")\n$indent(ds)\n'
206 output = itpl('$head("Class Docstring:")\n$indent(ds)\n'
207 '$head("Calling Docstring:")\n$indent(call_ds)')
207 '$head("Calling Docstring:")\n$indent(call_ds)')
208 else:
208 else:
209 output = ds
209 output = ds
210 else:
210 else:
211 output = ds
211 output = ds
212 if output is None:
212 if output is None:
213 self.noinfo('documentation',oname)
213 self.noinfo('documentation',oname)
214 return
214 return
215 page(output)
215 page(output)
216
216
217 def psource(self,obj,oname=''):
217 def psource(self,obj,oname=''):
218 """Print the source code for an object."""
218 """Print the source code for an object."""
219
219
220 # Flush the source cache because inspect can return out-of-date source
220 # Flush the source cache because inspect can return out-of-date source
221 linecache.checkcache()
221 linecache.checkcache()
222 try:
222 try:
223 src = inspect.getsource(obj)
223 src = inspect.getsource(obj)
224 except:
224 except:
225 self.noinfo('source',oname)
225 self.noinfo('source',oname)
226 else:
226 else:
227 page(self.format(src))
227 page(self.format(src))
228
228
229 def pfile(self,obj,oname=''):
229 def pfile(self,obj,oname=''):
230 """Show the whole file where an object was defined."""
230 """Show the whole file where an object was defined."""
231 try:
231 try:
232 sourcelines,lineno = inspect.getsourcelines(obj)
232 sourcelines,lineno = inspect.getsourcelines(obj)
233 except:
233 except:
234 self.noinfo('file',oname)
234 self.noinfo('file',oname)
235 else:
235 else:
236 # run contents of file through pager starting at line
236 # run contents of file through pager starting at line
237 # where the object is defined
237 # where the object is defined
238 ofile = inspect.getabsfile(obj)
238 ofile = inspect.getabsfile(obj)
239
239
240 if (ofile.endswith('.so') or ofile.endswith('.dll')):
240 if (ofile.endswith('.so') or ofile.endswith('.dll')):
241 print 'File %r is binary, not printing.' % ofile
241 print 'File %r is binary, not printing.' % ofile
242 elif not os.path.isfile(ofile):
243 print 'File %r does not exist, not printing.' % ofile
242 else:
244 else:
243 # Print only text files, not extension binaries.
245 # Print only text files, not extension binaries.
244 page(self.format(open(ofile).read()),lineno)
246 page(self.format(open(ofile).read()),lineno)
245 #page(self.format(open(inspect.getabsfile(obj)).read()),lineno)
247 #page(self.format(open(inspect.getabsfile(obj)).read()),lineno)
246
248
247 def pinfo(self,obj,oname='',formatter=None,info=None,detail_level=0):
249 def pinfo(self,obj,oname='',formatter=None,info=None,detail_level=0):
248 """Show detailed information about an object.
250 """Show detailed information about an object.
249
251
250 Optional arguments:
252 Optional arguments:
251
253
252 - oname: name of the variable pointing to the object.
254 - oname: name of the variable pointing to the object.
253
255
254 - formatter: special formatter for docstrings (see pdoc)
256 - formatter: special formatter for docstrings (see pdoc)
255
257
256 - info: a structure with some information fields which may have been
258 - info: a structure with some information fields which may have been
257 precomputed already.
259 precomputed already.
258
260
259 - detail_level: if set to 1, more information is given.
261 - detail_level: if set to 1, more information is given.
260 """
262 """
261
263
262 obj_type = type(obj)
264 obj_type = type(obj)
263
265
264 header = self.__head
266 header = self.__head
265 if info is None:
267 if info is None:
266 ismagic = 0
268 ismagic = 0
267 isalias = 0
269 isalias = 0
268 ospace = ''
270 ospace = ''
269 else:
271 else:
270 ismagic = info.ismagic
272 ismagic = info.ismagic
271 isalias = info.isalias
273 isalias = info.isalias
272 ospace = info.namespace
274 ospace = info.namespace
273 # Get docstring, special-casing aliases:
275 # Get docstring, special-casing aliases:
274 if isalias:
276 if isalias:
275 ds = "Alias to the system command:\n %s" % obj[1]
277 ds = "Alias to the system command:\n %s" % obj[1]
276 else:
278 else:
277 ds = getdoc(obj)
279 ds = getdoc(obj)
278 if ds is None:
280 if ds is None:
279 ds = '<no docstring>'
281 ds = '<no docstring>'
280 if formatter is not None:
282 if formatter is not None:
281 ds = formatter(ds)
283 ds = formatter(ds)
282
284
283 # store output in a list which gets joined with \n at the end.
285 # store output in a list which gets joined with \n at the end.
284 out = myStringIO()
286 out = myStringIO()
285
287
286 string_max = 200 # max size of strings to show (snipped if longer)
288 string_max = 200 # max size of strings to show (snipped if longer)
287 shalf = int((string_max -5)/2)
289 shalf = int((string_max -5)/2)
288
290
289 if ismagic:
291 if ismagic:
290 obj_type_name = 'Magic function'
292 obj_type_name = 'Magic function'
291 elif isalias:
293 elif isalias:
292 obj_type_name = 'System alias'
294 obj_type_name = 'System alias'
293 else:
295 else:
294 obj_type_name = obj_type.__name__
296 obj_type_name = obj_type.__name__
295 out.writeln(header('Type:\t\t')+obj_type_name)
297 out.writeln(header('Type:\t\t')+obj_type_name)
296
298
297 try:
299 try:
298 bclass = obj.__class__
300 bclass = obj.__class__
299 out.writeln(header('Base Class:\t')+str(bclass))
301 out.writeln(header('Base Class:\t')+str(bclass))
300 except: pass
302 except: pass
301
303
302 # String form, but snip if too long in ? form (full in ??)
304 # String form, but snip if too long in ? form (full in ??)
303 try:
305 try:
304 ostr = str(obj)
306 ostr = str(obj)
305 str_head = 'String Form:'
307 str_head = 'String Form:'
306 if not detail_level and len(ostr)>string_max:
308 if not detail_level and len(ostr)>string_max:
307 ostr = ostr[:shalf] + ' <...> ' + ostr[-shalf:]
309 ostr = ostr[:shalf] + ' <...> ' + ostr[-shalf:]
308 ostr = ("\n" + " " * len(str_head.expandtabs())).\
310 ostr = ("\n" + " " * len(str_head.expandtabs())).\
309 join(map(string.strip,ostr.split("\n")))
311 join(map(string.strip,ostr.split("\n")))
310 if ostr.find('\n') > -1:
312 if ostr.find('\n') > -1:
311 # Print multi-line strings starting at the next line.
313 # Print multi-line strings starting at the next line.
312 str_sep = '\n'
314 str_sep = '\n'
313 else:
315 else:
314 str_sep = '\t'
316 str_sep = '\t'
315 out.writeln("%s%s%s" % (header(str_head),str_sep,ostr))
317 out.writeln("%s%s%s" % (header(str_head),str_sep,ostr))
316 except:
318 except:
317 pass
319 pass
318
320
319 if ospace:
321 if ospace:
320 out.writeln(header('Namespace:\t')+ospace)
322 out.writeln(header('Namespace:\t')+ospace)
321
323
322 # Length (for strings and lists)
324 # Length (for strings and lists)
323 try:
325 try:
324 length = str(len(obj))
326 length = str(len(obj))
325 out.writeln(header('Length:\t\t')+length)
327 out.writeln(header('Length:\t\t')+length)
326 except: pass
328 except: pass
327
329
328 # Filename where object was defined
330 # Filename where object was defined
329 binary_file = False
331 binary_file = False
330 try:
332 try:
331 fname = inspect.getabsfile(obj)
333 fname = inspect.getabsfile(obj)
332 if fname.endswith('<string>'):
334 if fname.endswith('<string>'):
333 fname = 'Dynamically generated function. No source code available.'
335 fname = 'Dynamically generated function. No source code available.'
334 if fname.endswith('.so') or fname.endswith('.dll'):
336 if (fname.endswith('.so') or fname.endswith('.dll') or
337 not os.path.isfile(fname)):
335 binary_file = True
338 binary_file = True
336 out.writeln(header('File:\t\t')+fname)
339 out.writeln(header('File:\t\t')+fname)
337 except:
340 except:
338 # if anything goes wrong, we don't want to show source, so it's as
341 # if anything goes wrong, we don't want to show source, so it's as
339 # if the file was binary
342 # if the file was binary
340 binary_file = True
343 binary_file = True
341
344
342 # reconstruct the function definition and print it:
345 # reconstruct the function definition and print it:
343 defln = self.__getdef(obj,oname)
346 defln = self.__getdef(obj,oname)
344 if defln:
347 if defln:
345 out.write(header('Definition:\t')+self.format(defln))
348 out.write(header('Definition:\t')+self.format(defln))
346
349
347 # Docstrings only in detail 0 mode, since source contains them (we
350 # Docstrings only in detail 0 mode, since source contains them (we
348 # avoid repetitions). If source fails, we add them back, see below.
351 # avoid repetitions). If source fails, we add them back, see below.
349 if ds and detail_level == 0:
352 if ds and detail_level == 0:
350 out.writeln(header('Docstring:\n') + indent(ds))
353 out.writeln(header('Docstring:\n') + indent(ds))
351
354
355
352 # Original source code for any callable
356 # Original source code for any callable
353 if detail_level:
357 if detail_level:
354 # Flush the source cache because inspect can return out-of-date source
358 # Flush the source cache because inspect can return out-of-date source
355 linecache.checkcache()
359 linecache.checkcache()
360 source_success = False
356 try:
361 try:
357 if not binary_file:
362 if not binary_file:
358 source = self.format(inspect.getsource(obj))
363 source = self.format(inspect.getsource(obj))
359 out.write(header('Source:\n')+source.rstrip())
364 out.write(header('Source:\n')+source.rstrip())
365 source_success = True
360 except:
366 except:
361 if ds:
367 pass
362 out.writeln(header('Docstring:\n') + indent(ds))
368
369 if ds and not source_success:
370 out.writeln(header('Docstring [source file open failed]:\n') + indent(ds))
363
371
364 # Constructor docstring for classes
372 # Constructor docstring for classes
365 if obj_type is types.ClassType:
373 if obj_type is types.ClassType:
366 # reconstruct the function definition and print it:
374 # reconstruct the function definition and print it:
367 try:
375 try:
368 obj_init = obj.__init__
376 obj_init = obj.__init__
369 except AttributeError:
377 except AttributeError:
370 init_def = init_ds = None
378 init_def = init_ds = None
371 else:
379 else:
372 init_def = self.__getdef(obj_init,oname)
380 init_def = self.__getdef(obj_init,oname)
373 init_ds = getdoc(obj_init)
381 init_ds = getdoc(obj_init)
374
382
375 if init_def or init_ds:
383 if init_def or init_ds:
376 out.writeln(header('\nConstructor information:'))
384 out.writeln(header('\nConstructor information:'))
377 if init_def:
385 if init_def:
378 out.write(header('Definition:\t')+ self.format(init_def))
386 out.write(header('Definition:\t')+ self.format(init_def))
379 if init_ds:
387 if init_ds:
380 out.writeln(header('Docstring:\n') + indent(init_ds))
388 out.writeln(header('Docstring:\n') + indent(init_ds))
381 # and class docstring for instances:
389 # and class docstring for instances:
382 elif obj_type is types.InstanceType:
390 elif obj_type is types.InstanceType:
383
391
384 # First, check whether the instance docstring is identical to the
392 # First, check whether the instance docstring is identical to the
385 # class one, and print it separately if they don't coincide. In
393 # class one, and print it separately if they don't coincide. In
386 # most cases they will, but it's nice to print all the info for
394 # most cases they will, but it's nice to print all the info for
387 # objects which use instance-customized docstrings.
395 # objects which use instance-customized docstrings.
388 if ds:
396 if ds:
389 class_ds = getdoc(obj.__class__)
397 class_ds = getdoc(obj.__class__)
390 if class_ds and ds != class_ds:
398 if class_ds and ds != class_ds:
391 out.writeln(header('Class Docstring:\n') +
399 out.writeln(header('Class Docstring:\n') +
392 indent(class_ds))
400 indent(class_ds))
393
401
394 # Next, try to show constructor docstrings
402 # Next, try to show constructor docstrings
395 try:
403 try:
396 init_ds = getdoc(obj.__init__)
404 init_ds = getdoc(obj.__init__)
397 except AttributeError:
405 except AttributeError:
398 init_ds = None
406 init_ds = None
399 if init_ds:
407 if init_ds:
400 out.writeln(header('Constructor Docstring:\n') +
408 out.writeln(header('Constructor Docstring:\n') +
401 indent(init_ds))
409 indent(init_ds))
402
410
403 # Call form docstring for callable instances
411 # Call form docstring for callable instances
404 if hasattr(obj,'__call__'):
412 if hasattr(obj,'__call__'):
405 out.writeln(header('Callable:\t')+'Yes')
413 out.writeln(header('Callable:\t')+'Yes')
406 call_def = self.__getdef(obj.__call__,oname)
414 call_def = self.__getdef(obj.__call__,oname)
407 if call_def is None:
415 if call_def is None:
408 out.write(header('Call def:\t')+
416 out.write(header('Call def:\t')+
409 'Calling definition not available.')
417 'Calling definition not available.')
410 else:
418 else:
411 out.write(header('Call def:\t')+self.format(call_def))
419 out.write(header('Call def:\t')+self.format(call_def))
412 call_ds = getdoc(obj.__call__)
420 call_ds = getdoc(obj.__call__)
413 if call_ds:
421 if call_ds:
414 out.writeln(header('Call docstring:\n') + indent(call_ds))
422 out.writeln(header('Call docstring:\n') + indent(call_ds))
415
423
416 # Finally send to printer/pager
424 # Finally send to printer/pager
417 output = out.getvalue()
425 output = out.getvalue()
418 if output:
426 if output:
419 page(output)
427 page(output)
420 # end pinfo
428 # end pinfo
421
429
422 def psearch(self,pattern,ns_table,ns_search=[],
430 def psearch(self,pattern,ns_table,ns_search=[],
423 ignore_case=False,show_all=False):
431 ignore_case=False,show_all=False):
424 """Search namespaces with wildcards for objects.
432 """Search namespaces with wildcards for objects.
425
433
426 Arguments:
434 Arguments:
427
435
428 - pattern: string containing shell-like wildcards to use in namespace
436 - pattern: string containing shell-like wildcards to use in namespace
429 searches and optionally a type specification to narrow the search to
437 searches and optionally a type specification to narrow the search to
430 objects of that type.
438 objects of that type.
431
439
432 - ns_table: dict of name->namespaces for search.
440 - ns_table: dict of name->namespaces for search.
433
441
434 Optional arguments:
442 Optional arguments:
435
443
436 - ns_search: list of namespace names to include in search.
444 - ns_search: list of namespace names to include in search.
437
445
438 - ignore_case(False): make the search case-insensitive.
446 - ignore_case(False): make the search case-insensitive.
439
447
440 - show_all(False): show all names, including those starting with
448 - show_all(False): show all names, including those starting with
441 underscores.
449 underscores.
442 """
450 """
443 # defaults
451 # defaults
444 type_pattern = 'all'
452 type_pattern = 'all'
445 filter = ''
453 filter = ''
446
454
447 cmds = pattern.split()
455 cmds = pattern.split()
448 len_cmds = len(cmds)
456 len_cmds = len(cmds)
449 if len_cmds == 1:
457 if len_cmds == 1:
450 # Only filter pattern given
458 # Only filter pattern given
451 filter = cmds[0]
459 filter = cmds[0]
452 elif len_cmds == 2:
460 elif len_cmds == 2:
453 # Both filter and type specified
461 # Both filter and type specified
454 filter,type_pattern = cmds
462 filter,type_pattern = cmds
455 else:
463 else:
456 raise ValueError('invalid argument string for psearch: <%s>' %
464 raise ValueError('invalid argument string for psearch: <%s>' %
457 pattern)
465 pattern)
458
466
459 # filter search namespaces
467 # filter search namespaces
460 for name in ns_search:
468 for name in ns_search:
461 if name not in ns_table:
469 if name not in ns_table:
462 raise ValueError('invalid namespace <%s>. Valid names: %s' %
470 raise ValueError('invalid namespace <%s>. Valid names: %s' %
463 (name,ns_table.keys()))
471 (name,ns_table.keys()))
464
472
465 #print 'type_pattern:',type_pattern # dbg
473 #print 'type_pattern:',type_pattern # dbg
466 search_result = []
474 search_result = []
467 for ns_name in ns_search:
475 for ns_name in ns_search:
468 ns = ns_table[ns_name]
476 ns = ns_table[ns_name]
469 tmp_res = list(list_namespace(ns,type_pattern,filter,
477 tmp_res = list(list_namespace(ns,type_pattern,filter,
470 ignore_case=ignore_case,
478 ignore_case=ignore_case,
471 show_all=show_all))
479 show_all=show_all))
472 search_result.extend(tmp_res)
480 search_result.extend(tmp_res)
473 search_result.sort()
481 search_result.sort()
474
482
475 page('\n'.join(search_result))
483 page('\n'.join(search_result))
@@ -1,5324 +1,5330 b''
1 2006-05-15 Ville Vainio <vivainio@gmail.com>
2
3 * Oinspect.py: Only show docstring for nonexisting/binary files
4 when doing object??, closing ticket #62
5
6
1 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
7 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2
8
3 * IPython\Shell.py (MTInteractiveShell.runsource): Fix threading
9 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
4 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
10 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
5 was being released in a routine which hadn't checked if it had
11 was being released in a routine which hadn't checked if it had
6 been the one to acquire it.
12 been the one to acquire it.
7
13
8 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
14 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
9
15
10 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
16 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
11
17
12 2006-04-11 Ville Vainio <vivainio@gmail.com>
18 2006-04-11 Ville Vainio <vivainio@gmail.com>
13
19
14 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
20 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
15 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
21 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
16 prefilters, allowing stuff like magics and aliases in the file.
22 prefilters, allowing stuff like magics and aliases in the file.
17
23
18 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
24 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
19 added. Supported now are "%clear in" and "%clear out" (clear input and
25 added. Supported now are "%clear in" and "%clear out" (clear input and
20 output history, respectively). Also fixed CachedOutput.flush to
26 output history, respectively). Also fixed CachedOutput.flush to
21 properly flush the output cache.
27 properly flush the output cache.
22
28
23 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
29 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
24 half-success (and fail explicitly).
30 half-success (and fail explicitly).
25
31
26 2006-03-28 Ville Vainio <vivainio@gmail.com>
32 2006-03-28 Ville Vainio <vivainio@gmail.com>
27
33
28 * iplib.py: Fix quoting of aliases so that only argless ones
34 * iplib.py: Fix quoting of aliases so that only argless ones
29 are quoted
35 are quoted
30
36
31 2006-03-28 Ville Vainio <vivainio@gmail.com>
37 2006-03-28 Ville Vainio <vivainio@gmail.com>
32
38
33 * iplib.py: Quote aliases with spaces in the name.
39 * iplib.py: Quote aliases with spaces in the name.
34 "c:\program files\blah\bin" is now legal alias target.
40 "c:\program files\blah\bin" is now legal alias target.
35
41
36 * ext_rehashdir.py: Space no longer allowed as arg
42 * ext_rehashdir.py: Space no longer allowed as arg
37 separator, since space is legal in path names.
43 separator, since space is legal in path names.
38
44
39 2006-03-16 Ville Vainio <vivainio@gmail.com>
45 2006-03-16 Ville Vainio <vivainio@gmail.com>
40
46
41 * upgrade_dir.py: Take path.py from Extensions, correcting
47 * upgrade_dir.py: Take path.py from Extensions, correcting
42 %upgrade magic
48 %upgrade magic
43
49
44 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
50 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
45
51
46 * hooks.py: Only enclose editor binary in quotes if legal and
52 * hooks.py: Only enclose editor binary in quotes if legal and
47 necessary (space in the name, and is an existing file). Fixes a bug
53 necessary (space in the name, and is an existing file). Fixes a bug
48 reported by Zachary Pincus.
54 reported by Zachary Pincus.
49
55
50 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
56 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
51
57
52 * Manual: thanks to a tip on proper color handling for Emacs, by
58 * Manual: thanks to a tip on proper color handling for Emacs, by
53 Eric J Haywiser <ejh1-AT-MIT.EDU>.
59 Eric J Haywiser <ejh1-AT-MIT.EDU>.
54
60
55 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
61 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
56 by applying the provided patch. Thanks to Liu Jin
62 by applying the provided patch. Thanks to Liu Jin
57 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
63 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
58 XEmacs/Linux, I'm trusting the submitter that it actually helps
64 XEmacs/Linux, I'm trusting the submitter that it actually helps
59 under win32/GNU Emacs. Will revisit if any problems are reported.
65 under win32/GNU Emacs. Will revisit if any problems are reported.
60
66
61 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
67 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
62
68
63 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
69 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
64 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
70 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
65
71
66 2006-03-12 Ville Vainio <vivainio@gmail.com>
72 2006-03-12 Ville Vainio <vivainio@gmail.com>
67
73
68 * Magic.py (magic_timeit): Added %timeit magic, contributed by
74 * Magic.py (magic_timeit): Added %timeit magic, contributed by
69 Torsten Marek.
75 Torsten Marek.
70
76
71 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
77 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
72
78
73 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
79 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
74 line ranges works again.
80 line ranges works again.
75
81
76 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
82 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
77
83
78 * IPython/iplib.py (showtraceback): add back sys.last_traceback
84 * IPython/iplib.py (showtraceback): add back sys.last_traceback
79 and friends, after a discussion with Zach Pincus on ipython-user.
85 and friends, after a discussion with Zach Pincus on ipython-user.
80 I'm not 100% sure, but after thinking aobut it quite a bit, it may
86 I'm not 100% sure, but after thinking aobut it quite a bit, it may
81 be OK. Testing with the multithreaded shells didn't reveal any
87 be OK. Testing with the multithreaded shells didn't reveal any
82 problems, but let's keep an eye out.
88 problems, but let's keep an eye out.
83
89
84 In the process, I fixed a few things which were calling
90 In the process, I fixed a few things which were calling
85 self.InteractiveTB() directly (like safe_execfile), which is a
91 self.InteractiveTB() directly (like safe_execfile), which is a
86 mistake: ALL exception reporting should be done by calling
92 mistake: ALL exception reporting should be done by calling
87 self.showtraceback(), which handles state and tab-completion and
93 self.showtraceback(), which handles state and tab-completion and
88 more.
94 more.
89
95
90 2006-03-01 Ville Vainio <vivainio@gmail.com>
96 2006-03-01 Ville Vainio <vivainio@gmail.com>
91
97
92 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
98 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
93 To use, do "from ipipe import *".
99 To use, do "from ipipe import *".
94
100
95 2006-02-24 Ville Vainio <vivainio@gmail.com>
101 2006-02-24 Ville Vainio <vivainio@gmail.com>
96
102
97 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
103 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
98 "cleanly" and safely than the older upgrade mechanism.
104 "cleanly" and safely than the older upgrade mechanism.
99
105
100 2006-02-21 Ville Vainio <vivainio@gmail.com>
106 2006-02-21 Ville Vainio <vivainio@gmail.com>
101
107
102 * Magic.py: %save works again.
108 * Magic.py: %save works again.
103
109
104 2006-02-15 Ville Vainio <vivainio@gmail.com>
110 2006-02-15 Ville Vainio <vivainio@gmail.com>
105
111
106 * Magic.py: %Pprint works again
112 * Magic.py: %Pprint works again
107
113
108 * Extensions/ipy_sane_defaults.py: Provide everything provided
114 * Extensions/ipy_sane_defaults.py: Provide everything provided
109 in default ipythonrc, to make it possible to have a completely empty
115 in default ipythonrc, to make it possible to have a completely empty
110 ipythonrc (and thus completely rc-file free configuration)
116 ipythonrc (and thus completely rc-file free configuration)
111
117
112
118
113 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
119 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
114
120
115 * IPython/hooks.py (editor): quote the call to the editor command,
121 * IPython/hooks.py (editor): quote the call to the editor command,
116 to allow commands with spaces in them. Problem noted by watching
122 to allow commands with spaces in them. Problem noted by watching
117 Ian Oswald's video about textpad under win32 at
123 Ian Oswald's video about textpad under win32 at
118 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
124 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
119
125
120 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
126 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
121 describing magics (we haven't used @ for a loong time).
127 describing magics (we haven't used @ for a loong time).
122
128
123 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
129 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
124 contributed by marienz to close
130 contributed by marienz to close
125 http://www.scipy.net/roundup/ipython/issue53.
131 http://www.scipy.net/roundup/ipython/issue53.
126
132
127 2006-02-10 Ville Vainio <vivainio@gmail.com>
133 2006-02-10 Ville Vainio <vivainio@gmail.com>
128
134
129 * genutils.py: getoutput now works in win32 too
135 * genutils.py: getoutput now works in win32 too
130
136
131 * completer.py: alias and magic completion only invoked
137 * completer.py: alias and magic completion only invoked
132 at the first "item" in the line, to avoid "cd %store"
138 at the first "item" in the line, to avoid "cd %store"
133 nonsense.
139 nonsense.
134
140
135 2006-02-09 Ville Vainio <vivainio@gmail.com>
141 2006-02-09 Ville Vainio <vivainio@gmail.com>
136
142
137 * test/*: Added a unit testing framework (finally).
143 * test/*: Added a unit testing framework (finally).
138 '%run runtests.py' to run test_*.
144 '%run runtests.py' to run test_*.
139
145
140 * ipapi.py: Exposed runlines and set_custom_exc
146 * ipapi.py: Exposed runlines and set_custom_exc
141
147
142 2006-02-07 Ville Vainio <vivainio@gmail.com>
148 2006-02-07 Ville Vainio <vivainio@gmail.com>
143
149
144 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
150 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
145 instead use "f(1 2)" as before.
151 instead use "f(1 2)" as before.
146
152
147 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
153 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
148
154
149 * IPython/demo.py (IPythonDemo): Add new classes to the demo
155 * IPython/demo.py (IPythonDemo): Add new classes to the demo
150 facilities, for demos processed by the IPython input filter
156 facilities, for demos processed by the IPython input filter
151 (IPythonDemo), and for running a script one-line-at-a-time as a
157 (IPythonDemo), and for running a script one-line-at-a-time as a
152 demo, both for pure Python (LineDemo) and for IPython-processed
158 demo, both for pure Python (LineDemo) and for IPython-processed
153 input (IPythonLineDemo). After a request by Dave Kohel, from the
159 input (IPythonLineDemo). After a request by Dave Kohel, from the
154 SAGE team.
160 SAGE team.
155 (Demo.edit): added and edit() method to the demo objects, to edit
161 (Demo.edit): added and edit() method to the demo objects, to edit
156 the in-memory copy of the last executed block.
162 the in-memory copy of the last executed block.
157
163
158 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
164 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
159 processing to %edit, %macro and %save. These commands can now be
165 processing to %edit, %macro and %save. These commands can now be
160 invoked on the unprocessed input as it was typed by the user
166 invoked on the unprocessed input as it was typed by the user
161 (without any prefilters applied). After requests by the SAGE team
167 (without any prefilters applied). After requests by the SAGE team
162 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
168 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
163
169
164 2006-02-01 Ville Vainio <vivainio@gmail.com>
170 2006-02-01 Ville Vainio <vivainio@gmail.com>
165
171
166 * setup.py, eggsetup.py: easy_install ipython==dev works
172 * setup.py, eggsetup.py: easy_install ipython==dev works
167 correctly now (on Linux)
173 correctly now (on Linux)
168
174
169 * ipy_user_conf,ipmaker: user config changes, removed spurious
175 * ipy_user_conf,ipmaker: user config changes, removed spurious
170 warnings
176 warnings
171
177
172 * iplib: if rc.banner is string, use it as is.
178 * iplib: if rc.banner is string, use it as is.
173
179
174 * Magic: %pycat accepts a string argument and pages it's contents.
180 * Magic: %pycat accepts a string argument and pages it's contents.
175
181
176
182
177 2006-01-30 Ville Vainio <vivainio@gmail.com>
183 2006-01-30 Ville Vainio <vivainio@gmail.com>
178
184
179 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
185 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
180 Now %store and bookmarks work through PickleShare, meaning that
186 Now %store and bookmarks work through PickleShare, meaning that
181 concurrent access is possible and all ipython sessions see the
187 concurrent access is possible and all ipython sessions see the
182 same database situation all the time, instead of snapshot of
188 same database situation all the time, instead of snapshot of
183 the situation when the session was started. Hence, %bookmark
189 the situation when the session was started. Hence, %bookmark
184 results are immediately accessible from othes sessions. The database
190 results are immediately accessible from othes sessions. The database
185 is also available for use by user extensions. See:
191 is also available for use by user extensions. See:
186 http://www.python.org/pypi/pickleshare
192 http://www.python.org/pypi/pickleshare
187
193
188 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
194 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
189
195
190 * aliases can now be %store'd
196 * aliases can now be %store'd
191
197
192 * path.py move to Extensions so that pickleshare does not need
198 * path.py move to Extensions so that pickleshare does not need
193 IPython-specific import. Extensions added to pythonpath right
199 IPython-specific import. Extensions added to pythonpath right
194 at __init__.
200 at __init__.
195
201
196 * iplib.py: ipalias deprecated/redundant; aliases are converted and
202 * iplib.py: ipalias deprecated/redundant; aliases are converted and
197 called with _ip.system and the pre-transformed command string.
203 called with _ip.system and the pre-transformed command string.
198
204
199 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
205 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
200
206
201 * IPython/iplib.py (interact): Fix that we were not catching
207 * IPython/iplib.py (interact): Fix that we were not catching
202 KeyboardInterrupt exceptions properly. I'm not quite sure why the
208 KeyboardInterrupt exceptions properly. I'm not quite sure why the
203 logic here had to change, but it's fixed now.
209 logic here had to change, but it's fixed now.
204
210
205 2006-01-29 Ville Vainio <vivainio@gmail.com>
211 2006-01-29 Ville Vainio <vivainio@gmail.com>
206
212
207 * iplib.py: Try to import pyreadline on Windows.
213 * iplib.py: Try to import pyreadline on Windows.
208
214
209 2006-01-27 Ville Vainio <vivainio@gmail.com>
215 2006-01-27 Ville Vainio <vivainio@gmail.com>
210
216
211 * iplib.py: Expose ipapi as _ip in builtin namespace.
217 * iplib.py: Expose ipapi as _ip in builtin namespace.
212 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
218 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
213 and ip_set_hook (-> _ip.set_hook) redundant. % and !
219 and ip_set_hook (-> _ip.set_hook) redundant. % and !
214 syntax now produce _ip.* variant of the commands.
220 syntax now produce _ip.* variant of the commands.
215
221
216 * "_ip.options().autoedit_syntax = 2" automatically throws
222 * "_ip.options().autoedit_syntax = 2" automatically throws
217 user to editor for syntax error correction without prompting.
223 user to editor for syntax error correction without prompting.
218
224
219 2006-01-27 Ville Vainio <vivainio@gmail.com>
225 2006-01-27 Ville Vainio <vivainio@gmail.com>
220
226
221 * ipmaker.py: Give "realistic" sys.argv for scripts (without
227 * ipmaker.py: Give "realistic" sys.argv for scripts (without
222 'ipython' at argv[0]) executed through command line.
228 'ipython' at argv[0]) executed through command line.
223 NOTE: this DEPRECATES calling ipython with multiple scripts
229 NOTE: this DEPRECATES calling ipython with multiple scripts
224 ("ipython a.py b.py c.py")
230 ("ipython a.py b.py c.py")
225
231
226 * iplib.py, hooks.py: Added configurable input prefilter,
232 * iplib.py, hooks.py: Added configurable input prefilter,
227 named 'input_prefilter'. See ext_rescapture.py for example
233 named 'input_prefilter'. See ext_rescapture.py for example
228 usage.
234 usage.
229
235
230 * ext_rescapture.py, Magic.py: Better system command output capture
236 * ext_rescapture.py, Magic.py: Better system command output capture
231 through 'var = !ls' (deprecates user-visible %sc). Same notation
237 through 'var = !ls' (deprecates user-visible %sc). Same notation
232 applies for magics, 'var = %alias' assigns alias list to var.
238 applies for magics, 'var = %alias' assigns alias list to var.
233
239
234 * ipapi.py: added meta() for accessing extension-usable data store.
240 * ipapi.py: added meta() for accessing extension-usable data store.
235
241
236 * iplib.py: added InteractiveShell.getapi(). New magics should be
242 * iplib.py: added InteractiveShell.getapi(). New magics should be
237 written doing self.getapi() instead of using the shell directly.
243 written doing self.getapi() instead of using the shell directly.
238
244
239 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
245 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
240 %store foo >> ~/myfoo.txt to store variables to files (in clean
246 %store foo >> ~/myfoo.txt to store variables to files (in clean
241 textual form, not a restorable pickle).
247 textual form, not a restorable pickle).
242
248
243 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
249 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
244
250
245 * usage.py, Magic.py: added %quickref
251 * usage.py, Magic.py: added %quickref
246
252
247 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
253 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
248
254
249 * GetoptErrors when invoking magics etc. with wrong args
255 * GetoptErrors when invoking magics etc. with wrong args
250 are now more helpful:
256 are now more helpful:
251 GetoptError: option -l not recognized (allowed: "qb" )
257 GetoptError: option -l not recognized (allowed: "qb" )
252
258
253 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
259 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
254
260
255 * IPython/demo.py (Demo.show): Flush stdout after each block, so
261 * IPython/demo.py (Demo.show): Flush stdout after each block, so
256 computationally intensive blocks don't appear to stall the demo.
262 computationally intensive blocks don't appear to stall the demo.
257
263
258 2006-01-24 Ville Vainio <vivainio@gmail.com>
264 2006-01-24 Ville Vainio <vivainio@gmail.com>
259
265
260 * iplib.py, hooks.py: 'result_display' hook can return a non-None
266 * iplib.py, hooks.py: 'result_display' hook can return a non-None
261 value to manipulate resulting history entry.
267 value to manipulate resulting history entry.
262
268
263 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
269 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
264 to instance methods of IPApi class, to make extending an embedded
270 to instance methods of IPApi class, to make extending an embedded
265 IPython feasible. See ext_rehashdir.py for example usage.
271 IPython feasible. See ext_rehashdir.py for example usage.
266
272
267 * Merged 1071-1076 from banches/0.7.1
273 * Merged 1071-1076 from banches/0.7.1
268
274
269
275
270 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
276 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
271
277
272 * tools/release (daystamp): Fix build tools to use the new
278 * tools/release (daystamp): Fix build tools to use the new
273 eggsetup.py script to build lightweight eggs.
279 eggsetup.py script to build lightweight eggs.
274
280
275 * Applied changesets 1062 and 1064 before 0.7.1 release.
281 * Applied changesets 1062 and 1064 before 0.7.1 release.
276
282
277 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
283 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
278 see the raw input history (without conversions like %ls ->
284 see the raw input history (without conversions like %ls ->
279 ipmagic("ls")). After a request from W. Stein, SAGE
285 ipmagic("ls")). After a request from W. Stein, SAGE
280 (http://modular.ucsd.edu/sage) developer. This information is
286 (http://modular.ucsd.edu/sage) developer. This information is
281 stored in the input_hist_raw attribute of the IPython instance, so
287 stored in the input_hist_raw attribute of the IPython instance, so
282 developers can access it if needed (it's an InputList instance).
288 developers can access it if needed (it's an InputList instance).
283
289
284 * Versionstring = 0.7.2.svn
290 * Versionstring = 0.7.2.svn
285
291
286 * eggsetup.py: A separate script for constructing eggs, creates
292 * eggsetup.py: A separate script for constructing eggs, creates
287 proper launch scripts even on Windows (an .exe file in
293 proper launch scripts even on Windows (an .exe file in
288 \python24\scripts).
294 \python24\scripts).
289
295
290 * ipapi.py: launch_new_instance, launch entry point needed for the
296 * ipapi.py: launch_new_instance, launch entry point needed for the
291 egg.
297 egg.
292
298
293 2006-01-23 Ville Vainio <vivainio@gmail.com>
299 2006-01-23 Ville Vainio <vivainio@gmail.com>
294
300
295 * Added %cpaste magic for pasting python code
301 * Added %cpaste magic for pasting python code
296
302
297 2006-01-22 Ville Vainio <vivainio@gmail.com>
303 2006-01-22 Ville Vainio <vivainio@gmail.com>
298
304
299 * Merge from branches/0.7.1 into trunk, revs 1052-1057
305 * Merge from branches/0.7.1 into trunk, revs 1052-1057
300
306
301 * Versionstring = 0.7.2.svn
307 * Versionstring = 0.7.2.svn
302
308
303 * eggsetup.py: A separate script for constructing eggs, creates
309 * eggsetup.py: A separate script for constructing eggs, creates
304 proper launch scripts even on Windows (an .exe file in
310 proper launch scripts even on Windows (an .exe file in
305 \python24\scripts).
311 \python24\scripts).
306
312
307 * ipapi.py: launch_new_instance, launch entry point needed for the
313 * ipapi.py: launch_new_instance, launch entry point needed for the
308 egg.
314 egg.
309
315
310 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
316 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
311
317
312 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
318 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
313 %pfile foo would print the file for foo even if it was a binary.
319 %pfile foo would print the file for foo even if it was a binary.
314 Now, extensions '.so' and '.dll' are skipped.
320 Now, extensions '.so' and '.dll' are skipped.
315
321
316 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
322 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
317 bug, where macros would fail in all threaded modes. I'm not 100%
323 bug, where macros would fail in all threaded modes. I'm not 100%
318 sure, so I'm going to put out an rc instead of making a release
324 sure, so I'm going to put out an rc instead of making a release
319 today, and wait for feedback for at least a few days.
325 today, and wait for feedback for at least a few days.
320
326
321 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
327 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
322 it...) the handling of pasting external code with autoindent on.
328 it...) the handling of pasting external code with autoindent on.
323 To get out of a multiline input, the rule will appear for most
329 To get out of a multiline input, the rule will appear for most
324 users unchanged: two blank lines or change the indent level
330 users unchanged: two blank lines or change the indent level
325 proposed by IPython. But there is a twist now: you can
331 proposed by IPython. But there is a twist now: you can
326 add/subtract only *one or two spaces*. If you add/subtract three
332 add/subtract only *one or two spaces*. If you add/subtract three
327 or more (unless you completely delete the line), IPython will
333 or more (unless you completely delete the line), IPython will
328 accept that line, and you'll need to enter a second one of pure
334 accept that line, and you'll need to enter a second one of pure
329 whitespace. I know it sounds complicated, but I can't find a
335 whitespace. I know it sounds complicated, but I can't find a
330 different solution that covers all the cases, with the right
336 different solution that covers all the cases, with the right
331 heuristics. Hopefully in actual use, nobody will really notice
337 heuristics. Hopefully in actual use, nobody will really notice
332 all these strange rules and things will 'just work'.
338 all these strange rules and things will 'just work'.
333
339
334 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
340 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
335
341
336 * IPython/iplib.py (interact): catch exceptions which can be
342 * IPython/iplib.py (interact): catch exceptions which can be
337 triggered asynchronously by signal handlers. Thanks to an
343 triggered asynchronously by signal handlers. Thanks to an
338 automatic crash report, submitted by Colin Kingsley
344 automatic crash report, submitted by Colin Kingsley
339 <tercel-AT-gentoo.org>.
345 <tercel-AT-gentoo.org>.
340
346
341 2006-01-20 Ville Vainio <vivainio@gmail.com>
347 2006-01-20 Ville Vainio <vivainio@gmail.com>
342
348
343 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
349 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
344 (%rehashdir, very useful, try it out) of how to extend ipython
350 (%rehashdir, very useful, try it out) of how to extend ipython
345 with new magics. Also added Extensions dir to pythonpath to make
351 with new magics. Also added Extensions dir to pythonpath to make
346 importing extensions easy.
352 importing extensions easy.
347
353
348 * %store now complains when trying to store interactively declared
354 * %store now complains when trying to store interactively declared
349 classes / instances of those classes.
355 classes / instances of those classes.
350
356
351 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
357 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
352 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
358 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
353 if they exist, and ipy_user_conf.py with some defaults is created for
359 if they exist, and ipy_user_conf.py with some defaults is created for
354 the user.
360 the user.
355
361
356 * Startup rehashing done by the config file, not InterpreterExec.
362 * Startup rehashing done by the config file, not InterpreterExec.
357 This means system commands are available even without selecting the
363 This means system commands are available even without selecting the
358 pysh profile. It's the sensible default after all.
364 pysh profile. It's the sensible default after all.
359
365
360 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
366 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
361
367
362 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
368 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
363 multiline code with autoindent on working. But I am really not
369 multiline code with autoindent on working. But I am really not
364 sure, so this needs more testing. Will commit a debug-enabled
370 sure, so this needs more testing. Will commit a debug-enabled
365 version for now, while I test it some more, so that Ville and
371 version for now, while I test it some more, so that Ville and
366 others may also catch any problems. Also made
372 others may also catch any problems. Also made
367 self.indent_current_str() a method, to ensure that there's no
373 self.indent_current_str() a method, to ensure that there's no
368 chance of the indent space count and the corresponding string
374 chance of the indent space count and the corresponding string
369 falling out of sync. All code needing the string should just call
375 falling out of sync. All code needing the string should just call
370 the method.
376 the method.
371
377
372 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
378 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
373
379
374 * IPython/Magic.py (magic_edit): fix check for when users don't
380 * IPython/Magic.py (magic_edit): fix check for when users don't
375 save their output files, the try/except was in the wrong section.
381 save their output files, the try/except was in the wrong section.
376
382
377 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
383 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
378
384
379 * IPython/Magic.py (magic_run): fix __file__ global missing from
385 * IPython/Magic.py (magic_run): fix __file__ global missing from
380 script's namespace when executed via %run. After a report by
386 script's namespace when executed via %run. After a report by
381 Vivian.
387 Vivian.
382
388
383 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
389 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
384 when using python 2.4. The parent constructor changed in 2.4, and
390 when using python 2.4. The parent constructor changed in 2.4, and
385 we need to track it directly (we can't call it, as it messes up
391 we need to track it directly (we can't call it, as it messes up
386 readline and tab-completion inside our pdb would stop working).
392 readline and tab-completion inside our pdb would stop working).
387 After a bug report by R. Bernstein <rocky-AT-panix.com>.
393 After a bug report by R. Bernstein <rocky-AT-panix.com>.
388
394
389 2006-01-16 Ville Vainio <vivainio@gmail.com>
395 2006-01-16 Ville Vainio <vivainio@gmail.com>
390
396
391 * Ipython/magic.py:Reverted back to old %edit functionality
397 * Ipython/magic.py:Reverted back to old %edit functionality
392 that returns file contents on exit.
398 that returns file contents on exit.
393
399
394 * IPython/path.py: Added Jason Orendorff's "path" module to
400 * IPython/path.py: Added Jason Orendorff's "path" module to
395 IPython tree, http://www.jorendorff.com/articles/python/path/.
401 IPython tree, http://www.jorendorff.com/articles/python/path/.
396 You can get path objects conveniently through %sc, and !!, e.g.:
402 You can get path objects conveniently through %sc, and !!, e.g.:
397 sc files=ls
403 sc files=ls
398 for p in files.paths: # or files.p
404 for p in files.paths: # or files.p
399 print p,p.mtime
405 print p,p.mtime
400
406
401 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
407 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
402 now work again without considering the exclusion regexp -
408 now work again without considering the exclusion regexp -
403 hence, things like ',foo my/path' turn to 'foo("my/path")'
409 hence, things like ',foo my/path' turn to 'foo("my/path")'
404 instead of syntax error.
410 instead of syntax error.
405
411
406
412
407 2006-01-14 Ville Vainio <vivainio@gmail.com>
413 2006-01-14 Ville Vainio <vivainio@gmail.com>
408
414
409 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
415 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
410 ipapi decorators for python 2.4 users, options() provides access to rc
416 ipapi decorators for python 2.4 users, options() provides access to rc
411 data.
417 data.
412
418
413 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
419 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
414 as path separators (even on Linux ;-). Space character after
420 as path separators (even on Linux ;-). Space character after
415 backslash (as yielded by tab completer) is still space;
421 backslash (as yielded by tab completer) is still space;
416 "%cd long\ name" works as expected.
422 "%cd long\ name" works as expected.
417
423
418 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
424 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
419 as "chain of command", with priority. API stays the same,
425 as "chain of command", with priority. API stays the same,
420 TryNext exception raised by a hook function signals that
426 TryNext exception raised by a hook function signals that
421 current hook failed and next hook should try handling it, as
427 current hook failed and next hook should try handling it, as
422 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
428 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
423 requested configurable display hook, which is now implemented.
429 requested configurable display hook, which is now implemented.
424
430
425 2006-01-13 Ville Vainio <vivainio@gmail.com>
431 2006-01-13 Ville Vainio <vivainio@gmail.com>
426
432
427 * IPython/platutils*.py: platform specific utility functions,
433 * IPython/platutils*.py: platform specific utility functions,
428 so far only set_term_title is implemented (change terminal
434 so far only set_term_title is implemented (change terminal
429 label in windowing systems). %cd now changes the title to
435 label in windowing systems). %cd now changes the title to
430 current dir.
436 current dir.
431
437
432 * IPython/Release.py: Added myself to "authors" list,
438 * IPython/Release.py: Added myself to "authors" list,
433 had to create new files.
439 had to create new files.
434
440
435 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
441 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
436 shell escape; not a known bug but had potential to be one in the
442 shell escape; not a known bug but had potential to be one in the
437 future.
443 future.
438
444
439 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
445 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
440 extension API for IPython! See the module for usage example. Fix
446 extension API for IPython! See the module for usage example. Fix
441 OInspect for docstring-less magic functions.
447 OInspect for docstring-less magic functions.
442
448
443
449
444 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
450 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
445
451
446 * IPython/iplib.py (raw_input): temporarily deactivate all
452 * IPython/iplib.py (raw_input): temporarily deactivate all
447 attempts at allowing pasting of code with autoindent on. It
453 attempts at allowing pasting of code with autoindent on. It
448 introduced bugs (reported by Prabhu) and I can't seem to find a
454 introduced bugs (reported by Prabhu) and I can't seem to find a
449 robust combination which works in all cases. Will have to revisit
455 robust combination which works in all cases. Will have to revisit
450 later.
456 later.
451
457
452 * IPython/genutils.py: remove isspace() function. We've dropped
458 * IPython/genutils.py: remove isspace() function. We've dropped
453 2.2 compatibility, so it's OK to use the string method.
459 2.2 compatibility, so it's OK to use the string method.
454
460
455 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
461 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
456
462
457 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
463 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
458 matching what NOT to autocall on, to include all python binary
464 matching what NOT to autocall on, to include all python binary
459 operators (including things like 'and', 'or', 'is' and 'in').
465 operators (including things like 'and', 'or', 'is' and 'in').
460 Prompted by a bug report on 'foo & bar', but I realized we had
466 Prompted by a bug report on 'foo & bar', but I realized we had
461 many more potential bug cases with other operators. The regexp is
467 many more potential bug cases with other operators. The regexp is
462 self.re_exclude_auto, it's fairly commented.
468 self.re_exclude_auto, it's fairly commented.
463
469
464 2006-01-12 Ville Vainio <vivainio@gmail.com>
470 2006-01-12 Ville Vainio <vivainio@gmail.com>
465
471
466 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
472 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
467 Prettified and hardened string/backslash quoting with ipsystem(),
473 Prettified and hardened string/backslash quoting with ipsystem(),
468 ipalias() and ipmagic(). Now even \ characters are passed to
474 ipalias() and ipmagic(). Now even \ characters are passed to
469 %magics, !shell escapes and aliases exactly as they are in the
475 %magics, !shell escapes and aliases exactly as they are in the
470 ipython command line. Should improve backslash experience,
476 ipython command line. Should improve backslash experience,
471 particularly in Windows (path delimiter for some commands that
477 particularly in Windows (path delimiter for some commands that
472 won't understand '/'), but Unix benefits as well (regexps). %cd
478 won't understand '/'), but Unix benefits as well (regexps). %cd
473 magic still doesn't support backslash path delimiters, though. Also
479 magic still doesn't support backslash path delimiters, though. Also
474 deleted all pretense of supporting multiline command strings in
480 deleted all pretense of supporting multiline command strings in
475 !system or %magic commands. Thanks to Jerry McRae for suggestions.
481 !system or %magic commands. Thanks to Jerry McRae for suggestions.
476
482
477 * doc/build_doc_instructions.txt added. Documentation on how to
483 * doc/build_doc_instructions.txt added. Documentation on how to
478 use doc/update_manual.py, added yesterday. Both files contributed
484 use doc/update_manual.py, added yesterday. Both files contributed
479 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
485 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
480 doc/*.sh for deprecation at a later date.
486 doc/*.sh for deprecation at a later date.
481
487
482 * /ipython.py Added ipython.py to root directory for
488 * /ipython.py Added ipython.py to root directory for
483 zero-installation (tar xzvf ipython.tgz; cd ipython; python
489 zero-installation (tar xzvf ipython.tgz; cd ipython; python
484 ipython.py) and development convenience (no need to kee doing
490 ipython.py) and development convenience (no need to kee doing
485 "setup.py install" between changes).
491 "setup.py install" between changes).
486
492
487 * Made ! and !! shell escapes work (again) in multiline expressions:
493 * Made ! and !! shell escapes work (again) in multiline expressions:
488 if 1:
494 if 1:
489 !ls
495 !ls
490 !!ls
496 !!ls
491
497
492 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
498 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
493
499
494 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
500 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
495 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
501 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
496 module in case-insensitive installation. Was causing crashes
502 module in case-insensitive installation. Was causing crashes
497 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
503 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
498
504
499 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
505 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
500 <marienz-AT-gentoo.org>, closes
506 <marienz-AT-gentoo.org>, closes
501 http://www.scipy.net/roundup/ipython/issue51.
507 http://www.scipy.net/roundup/ipython/issue51.
502
508
503 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
509 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
504
510
505 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
511 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
506 problem of excessive CPU usage under *nix and keyboard lag under
512 problem of excessive CPU usage under *nix and keyboard lag under
507 win32.
513 win32.
508
514
509 2006-01-10 *** Released version 0.7.0
515 2006-01-10 *** Released version 0.7.0
510
516
511 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
517 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
512
518
513 * IPython/Release.py (revision): tag version number to 0.7.0,
519 * IPython/Release.py (revision): tag version number to 0.7.0,
514 ready for release.
520 ready for release.
515
521
516 * IPython/Magic.py (magic_edit): Add print statement to %edit so
522 * IPython/Magic.py (magic_edit): Add print statement to %edit so
517 it informs the user of the name of the temp. file used. This can
523 it informs the user of the name of the temp. file used. This can
518 help if you decide later to reuse that same file, so you know
524 help if you decide later to reuse that same file, so you know
519 where to copy the info from.
525 where to copy the info from.
520
526
521 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
527 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
522
528
523 * setup_bdist_egg.py: little script to build an egg. Added
529 * setup_bdist_egg.py: little script to build an egg. Added
524 support in the release tools as well.
530 support in the release tools as well.
525
531
526 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
532 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
527
533
528 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
534 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
529 version selection (new -wxversion command line and ipythonrc
535 version selection (new -wxversion command line and ipythonrc
530 parameter). Patch contributed by Arnd Baecker
536 parameter). Patch contributed by Arnd Baecker
531 <arnd.baecker-AT-web.de>.
537 <arnd.baecker-AT-web.de>.
532
538
533 * IPython/iplib.py (embed_mainloop): fix tab-completion in
539 * IPython/iplib.py (embed_mainloop): fix tab-completion in
534 embedded instances, for variables defined at the interactive
540 embedded instances, for variables defined at the interactive
535 prompt of the embedded ipython. Reported by Arnd.
541 prompt of the embedded ipython. Reported by Arnd.
536
542
537 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
543 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
538 it can be used as a (stateful) toggle, or with a direct parameter.
544 it can be used as a (stateful) toggle, or with a direct parameter.
539
545
540 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
546 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
541 could be triggered in certain cases and cause the traceback
547 could be triggered in certain cases and cause the traceback
542 printer not to work.
548 printer not to work.
543
549
544 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
550 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
545
551
546 * IPython/iplib.py (_should_recompile): Small fix, closes
552 * IPython/iplib.py (_should_recompile): Small fix, closes
547 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
553 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
548
554
549 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
555 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
550
556
551 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
557 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
552 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
558 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
553 Moad for help with tracking it down.
559 Moad for help with tracking it down.
554
560
555 * IPython/iplib.py (handle_auto): fix autocall handling for
561 * IPython/iplib.py (handle_auto): fix autocall handling for
556 objects which support BOTH __getitem__ and __call__ (so that f [x]
562 objects which support BOTH __getitem__ and __call__ (so that f [x]
557 is left alone, instead of becoming f([x]) automatically).
563 is left alone, instead of becoming f([x]) automatically).
558
564
559 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
565 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
560 Ville's patch.
566 Ville's patch.
561
567
562 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
568 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
563
569
564 * IPython/iplib.py (handle_auto): changed autocall semantics to
570 * IPython/iplib.py (handle_auto): changed autocall semantics to
565 include 'smart' mode, where the autocall transformation is NOT
571 include 'smart' mode, where the autocall transformation is NOT
566 applied if there are no arguments on the line. This allows you to
572 applied if there are no arguments on the line. This allows you to
567 just type 'foo' if foo is a callable to see its internal form,
573 just type 'foo' if foo is a callable to see its internal form,
568 instead of having it called with no arguments (typically a
574 instead of having it called with no arguments (typically a
569 mistake). The old 'full' autocall still exists: for that, you
575 mistake). The old 'full' autocall still exists: for that, you
570 need to set the 'autocall' parameter to 2 in your ipythonrc file.
576 need to set the 'autocall' parameter to 2 in your ipythonrc file.
571
577
572 * IPython/completer.py (Completer.attr_matches): add
578 * IPython/completer.py (Completer.attr_matches): add
573 tab-completion support for Enthoughts' traits. After a report by
579 tab-completion support for Enthoughts' traits. After a report by
574 Arnd and a patch by Prabhu.
580 Arnd and a patch by Prabhu.
575
581
576 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
582 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
577
583
578 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
584 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
579 Schmolck's patch to fix inspect.getinnerframes().
585 Schmolck's patch to fix inspect.getinnerframes().
580
586
581 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
587 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
582 for embedded instances, regarding handling of namespaces and items
588 for embedded instances, regarding handling of namespaces and items
583 added to the __builtin__ one. Multiple embedded instances and
589 added to the __builtin__ one. Multiple embedded instances and
584 recursive embeddings should work better now (though I'm not sure
590 recursive embeddings should work better now (though I'm not sure
585 I've got all the corner cases fixed, that code is a bit of a brain
591 I've got all the corner cases fixed, that code is a bit of a brain
586 twister).
592 twister).
587
593
588 * IPython/Magic.py (magic_edit): added support to edit in-memory
594 * IPython/Magic.py (magic_edit): added support to edit in-memory
589 macros (automatically creates the necessary temp files). %edit
595 macros (automatically creates the necessary temp files). %edit
590 also doesn't return the file contents anymore, it's just noise.
596 also doesn't return the file contents anymore, it's just noise.
591
597
592 * IPython/completer.py (Completer.attr_matches): revert change to
598 * IPython/completer.py (Completer.attr_matches): revert change to
593 complete only on attributes listed in __all__. I realized it
599 complete only on attributes listed in __all__. I realized it
594 cripples the tab-completion system as a tool for exploring the
600 cripples the tab-completion system as a tool for exploring the
595 internals of unknown libraries (it renders any non-__all__
601 internals of unknown libraries (it renders any non-__all__
596 attribute off-limits). I got bit by this when trying to see
602 attribute off-limits). I got bit by this when trying to see
597 something inside the dis module.
603 something inside the dis module.
598
604
599 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
605 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
600
606
601 * IPython/iplib.py (InteractiveShell.__init__): add .meta
607 * IPython/iplib.py (InteractiveShell.__init__): add .meta
602 namespace for users and extension writers to hold data in. This
608 namespace for users and extension writers to hold data in. This
603 follows the discussion in
609 follows the discussion in
604 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
610 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
605
611
606 * IPython/completer.py (IPCompleter.complete): small patch to help
612 * IPython/completer.py (IPCompleter.complete): small patch to help
607 tab-completion under Emacs, after a suggestion by John Barnard
613 tab-completion under Emacs, after a suggestion by John Barnard
608 <barnarj-AT-ccf.org>.
614 <barnarj-AT-ccf.org>.
609
615
610 * IPython/Magic.py (Magic.extract_input_slices): added support for
616 * IPython/Magic.py (Magic.extract_input_slices): added support for
611 the slice notation in magics to use N-M to represent numbers N...M
617 the slice notation in magics to use N-M to represent numbers N...M
612 (closed endpoints). This is used by %macro and %save.
618 (closed endpoints). This is used by %macro and %save.
613
619
614 * IPython/completer.py (Completer.attr_matches): for modules which
620 * IPython/completer.py (Completer.attr_matches): for modules which
615 define __all__, complete only on those. After a patch by Jeffrey
621 define __all__, complete only on those. After a patch by Jeffrey
616 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
622 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
617 speed up this routine.
623 speed up this routine.
618
624
619 * IPython/Logger.py (Logger.log): fix a history handling bug. I
625 * IPython/Logger.py (Logger.log): fix a history handling bug. I
620 don't know if this is the end of it, but the behavior now is
626 don't know if this is the end of it, but the behavior now is
621 certainly much more correct. Note that coupled with macros,
627 certainly much more correct. Note that coupled with macros,
622 slightly surprising (at first) behavior may occur: a macro will in
628 slightly surprising (at first) behavior may occur: a macro will in
623 general expand to multiple lines of input, so upon exiting, the
629 general expand to multiple lines of input, so upon exiting, the
624 in/out counters will both be bumped by the corresponding amount
630 in/out counters will both be bumped by the corresponding amount
625 (as if the macro's contents had been typed interactively). Typing
631 (as if the macro's contents had been typed interactively). Typing
626 %hist will reveal the intermediate (silently processed) lines.
632 %hist will reveal the intermediate (silently processed) lines.
627
633
628 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
634 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
629 pickle to fail (%run was overwriting __main__ and not restoring
635 pickle to fail (%run was overwriting __main__ and not restoring
630 it, but pickle relies on __main__ to operate).
636 it, but pickle relies on __main__ to operate).
631
637
632 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
638 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
633 using properties, but forgot to make the main InteractiveShell
639 using properties, but forgot to make the main InteractiveShell
634 class a new-style class. Properties fail silently, and
640 class a new-style class. Properties fail silently, and
635 misteriously, with old-style class (getters work, but
641 misteriously, with old-style class (getters work, but
636 setters don't do anything).
642 setters don't do anything).
637
643
638 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
644 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
639
645
640 * IPython/Magic.py (magic_history): fix history reporting bug (I
646 * IPython/Magic.py (magic_history): fix history reporting bug (I
641 know some nasties are still there, I just can't seem to find a
647 know some nasties are still there, I just can't seem to find a
642 reproducible test case to track them down; the input history is
648 reproducible test case to track them down; the input history is
643 falling out of sync...)
649 falling out of sync...)
644
650
645 * IPython/iplib.py (handle_shell_escape): fix bug where both
651 * IPython/iplib.py (handle_shell_escape): fix bug where both
646 aliases and system accesses where broken for indented code (such
652 aliases and system accesses where broken for indented code (such
647 as loops).
653 as loops).
648
654
649 * IPython/genutils.py (shell): fix small but critical bug for
655 * IPython/genutils.py (shell): fix small but critical bug for
650 win32 system access.
656 win32 system access.
651
657
652 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
658 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
653
659
654 * IPython/iplib.py (showtraceback): remove use of the
660 * IPython/iplib.py (showtraceback): remove use of the
655 sys.last_{type/value/traceback} structures, which are non
661 sys.last_{type/value/traceback} structures, which are non
656 thread-safe.
662 thread-safe.
657 (_prefilter): change control flow to ensure that we NEVER
663 (_prefilter): change control flow to ensure that we NEVER
658 introspect objects when autocall is off. This will guarantee that
664 introspect objects when autocall is off. This will guarantee that
659 having an input line of the form 'x.y', where access to attribute
665 having an input line of the form 'x.y', where access to attribute
660 'y' has side effects, doesn't trigger the side effect TWICE. It
666 'y' has side effects, doesn't trigger the side effect TWICE. It
661 is important to note that, with autocall on, these side effects
667 is important to note that, with autocall on, these side effects
662 can still happen.
668 can still happen.
663 (ipsystem): new builtin, to complete the ip{magic/alias/system}
669 (ipsystem): new builtin, to complete the ip{magic/alias/system}
664 trio. IPython offers these three kinds of special calls which are
670 trio. IPython offers these three kinds of special calls which are
665 not python code, and it's a good thing to have their call method
671 not python code, and it's a good thing to have their call method
666 be accessible as pure python functions (not just special syntax at
672 be accessible as pure python functions (not just special syntax at
667 the command line). It gives us a better internal implementation
673 the command line). It gives us a better internal implementation
668 structure, as well as exposing these for user scripting more
674 structure, as well as exposing these for user scripting more
669 cleanly.
675 cleanly.
670
676
671 * IPython/macro.py (Macro.__init__): moved macros to a standalone
677 * IPython/macro.py (Macro.__init__): moved macros to a standalone
672 file. Now that they'll be more likely to be used with the
678 file. Now that they'll be more likely to be used with the
673 persistance system (%store), I want to make sure their module path
679 persistance system (%store), I want to make sure their module path
674 doesn't change in the future, so that we don't break things for
680 doesn't change in the future, so that we don't break things for
675 users' persisted data.
681 users' persisted data.
676
682
677 * IPython/iplib.py (autoindent_update): move indentation
683 * IPython/iplib.py (autoindent_update): move indentation
678 management into the _text_ processing loop, not the keyboard
684 management into the _text_ processing loop, not the keyboard
679 interactive one. This is necessary to correctly process non-typed
685 interactive one. This is necessary to correctly process non-typed
680 multiline input (such as macros).
686 multiline input (such as macros).
681
687
682 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
688 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
683 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
689 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
684 which was producing problems in the resulting manual.
690 which was producing problems in the resulting manual.
685 (magic_whos): improve reporting of instances (show their class,
691 (magic_whos): improve reporting of instances (show their class,
686 instead of simply printing 'instance' which isn't terribly
692 instead of simply printing 'instance' which isn't terribly
687 informative).
693 informative).
688
694
689 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
695 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
690 (minor mods) to support network shares under win32.
696 (minor mods) to support network shares under win32.
691
697
692 * IPython/winconsole.py (get_console_size): add new winconsole
698 * IPython/winconsole.py (get_console_size): add new winconsole
693 module and fixes to page_dumb() to improve its behavior under
699 module and fixes to page_dumb() to improve its behavior under
694 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
700 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
695
701
696 * IPython/Magic.py (Macro): simplified Macro class to just
702 * IPython/Magic.py (Macro): simplified Macro class to just
697 subclass list. We've had only 2.2 compatibility for a very long
703 subclass list. We've had only 2.2 compatibility for a very long
698 time, yet I was still avoiding subclassing the builtin types. No
704 time, yet I was still avoiding subclassing the builtin types. No
699 more (I'm also starting to use properties, though I won't shift to
705 more (I'm also starting to use properties, though I won't shift to
700 2.3-specific features quite yet).
706 2.3-specific features quite yet).
701 (magic_store): added Ville's patch for lightweight variable
707 (magic_store): added Ville's patch for lightweight variable
702 persistence, after a request on the user list by Matt Wilkie
708 persistence, after a request on the user list by Matt Wilkie
703 <maphew-AT-gmail.com>. The new %store magic's docstring has full
709 <maphew-AT-gmail.com>. The new %store magic's docstring has full
704 details.
710 details.
705
711
706 * IPython/iplib.py (InteractiveShell.post_config_initialization):
712 * IPython/iplib.py (InteractiveShell.post_config_initialization):
707 changed the default logfile name from 'ipython.log' to
713 changed the default logfile name from 'ipython.log' to
708 'ipython_log.py'. These logs are real python files, and now that
714 'ipython_log.py'. These logs are real python files, and now that
709 we have much better multiline support, people are more likely to
715 we have much better multiline support, people are more likely to
710 want to use them as such. Might as well name them correctly.
716 want to use them as such. Might as well name them correctly.
711
717
712 * IPython/Magic.py: substantial cleanup. While we can't stop
718 * IPython/Magic.py: substantial cleanup. While we can't stop
713 using magics as mixins, due to the existing customizations 'out
719 using magics as mixins, due to the existing customizations 'out
714 there' which rely on the mixin naming conventions, at least I
720 there' which rely on the mixin naming conventions, at least I
715 cleaned out all cross-class name usage. So once we are OK with
721 cleaned out all cross-class name usage. So once we are OK with
716 breaking compatibility, the two systems can be separated.
722 breaking compatibility, the two systems can be separated.
717
723
718 * IPython/Logger.py: major cleanup. This one is NOT a mixin
724 * IPython/Logger.py: major cleanup. This one is NOT a mixin
719 anymore, and the class is a fair bit less hideous as well. New
725 anymore, and the class is a fair bit less hideous as well. New
720 features were also introduced: timestamping of input, and logging
726 features were also introduced: timestamping of input, and logging
721 of output results. These are user-visible with the -t and -o
727 of output results. These are user-visible with the -t and -o
722 options to %logstart. Closes
728 options to %logstart. Closes
723 http://www.scipy.net/roundup/ipython/issue11 and a request by
729 http://www.scipy.net/roundup/ipython/issue11 and a request by
724 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
730 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
725
731
726 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
732 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
727
733
728 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
734 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
729 better hadnle backslashes in paths. See the thread 'More Windows
735 better hadnle backslashes in paths. See the thread 'More Windows
730 questions part 2 - \/ characters revisited' on the iypthon user
736 questions part 2 - \/ characters revisited' on the iypthon user
731 list:
737 list:
732 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
738 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
733
739
734 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
740 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
735
741
736 (InteractiveShell.__init__): change threaded shells to not use the
742 (InteractiveShell.__init__): change threaded shells to not use the
737 ipython crash handler. This was causing more problems than not,
743 ipython crash handler. This was causing more problems than not,
738 as exceptions in the main thread (GUI code, typically) would
744 as exceptions in the main thread (GUI code, typically) would
739 always show up as a 'crash', when they really weren't.
745 always show up as a 'crash', when they really weren't.
740
746
741 The colors and exception mode commands (%colors/%xmode) have been
747 The colors and exception mode commands (%colors/%xmode) have been
742 synchronized to also take this into account, so users can get
748 synchronized to also take this into account, so users can get
743 verbose exceptions for their threaded code as well. I also added
749 verbose exceptions for their threaded code as well. I also added
744 support for activating pdb inside this exception handler as well,
750 support for activating pdb inside this exception handler as well,
745 so now GUI authors can use IPython's enhanced pdb at runtime.
751 so now GUI authors can use IPython's enhanced pdb at runtime.
746
752
747 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
753 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
748 true by default, and add it to the shipped ipythonrc file. Since
754 true by default, and add it to the shipped ipythonrc file. Since
749 this asks the user before proceeding, I think it's OK to make it
755 this asks the user before proceeding, I think it's OK to make it
750 true by default.
756 true by default.
751
757
752 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
758 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
753 of the previous special-casing of input in the eval loop. I think
759 of the previous special-casing of input in the eval loop. I think
754 this is cleaner, as they really are commands and shouldn't have
760 this is cleaner, as they really are commands and shouldn't have
755 a special role in the middle of the core code.
761 a special role in the middle of the core code.
756
762
757 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
763 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
758
764
759 * IPython/iplib.py (edit_syntax_error): added support for
765 * IPython/iplib.py (edit_syntax_error): added support for
760 automatically reopening the editor if the file had a syntax error
766 automatically reopening the editor if the file had a syntax error
761 in it. Thanks to scottt who provided the patch at:
767 in it. Thanks to scottt who provided the patch at:
762 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
768 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
763 version committed).
769 version committed).
764
770
765 * IPython/iplib.py (handle_normal): add suport for multi-line
771 * IPython/iplib.py (handle_normal): add suport for multi-line
766 input with emtpy lines. This fixes
772 input with emtpy lines. This fixes
767 http://www.scipy.net/roundup/ipython/issue43 and a similar
773 http://www.scipy.net/roundup/ipython/issue43 and a similar
768 discussion on the user list.
774 discussion on the user list.
769
775
770 WARNING: a behavior change is necessarily introduced to support
776 WARNING: a behavior change is necessarily introduced to support
771 blank lines: now a single blank line with whitespace does NOT
777 blank lines: now a single blank line with whitespace does NOT
772 break the input loop, which means that when autoindent is on, by
778 break the input loop, which means that when autoindent is on, by
773 default hitting return on the next (indented) line does NOT exit.
779 default hitting return on the next (indented) line does NOT exit.
774
780
775 Instead, to exit a multiline input you can either have:
781 Instead, to exit a multiline input you can either have:
776
782
777 - TWO whitespace lines (just hit return again), or
783 - TWO whitespace lines (just hit return again), or
778 - a single whitespace line of a different length than provided
784 - a single whitespace line of a different length than provided
779 by the autoindent (add or remove a space).
785 by the autoindent (add or remove a space).
780
786
781 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
787 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
782 module to better organize all readline-related functionality.
788 module to better organize all readline-related functionality.
783 I've deleted FlexCompleter and put all completion clases here.
789 I've deleted FlexCompleter and put all completion clases here.
784
790
785 * IPython/iplib.py (raw_input): improve indentation management.
791 * IPython/iplib.py (raw_input): improve indentation management.
786 It is now possible to paste indented code with autoindent on, and
792 It is now possible to paste indented code with autoindent on, and
787 the code is interpreted correctly (though it still looks bad on
793 the code is interpreted correctly (though it still looks bad on
788 screen, due to the line-oriented nature of ipython).
794 screen, due to the line-oriented nature of ipython).
789 (MagicCompleter.complete): change behavior so that a TAB key on an
795 (MagicCompleter.complete): change behavior so that a TAB key on an
790 otherwise empty line actually inserts a tab, instead of completing
796 otherwise empty line actually inserts a tab, instead of completing
791 on the entire global namespace. This makes it easier to use the
797 on the entire global namespace. This makes it easier to use the
792 TAB key for indentation. After a request by Hans Meine
798 TAB key for indentation. After a request by Hans Meine
793 <hans_meine-AT-gmx.net>
799 <hans_meine-AT-gmx.net>
794 (_prefilter): add support so that typing plain 'exit' or 'quit'
800 (_prefilter): add support so that typing plain 'exit' or 'quit'
795 does a sensible thing. Originally I tried to deviate as little as
801 does a sensible thing. Originally I tried to deviate as little as
796 possible from the default python behavior, but even that one may
802 possible from the default python behavior, but even that one may
797 change in this direction (thread on python-dev to that effect).
803 change in this direction (thread on python-dev to that effect).
798 Regardless, ipython should do the right thing even if CPython's
804 Regardless, ipython should do the right thing even if CPython's
799 '>>>' prompt doesn't.
805 '>>>' prompt doesn't.
800 (InteractiveShell): removed subclassing code.InteractiveConsole
806 (InteractiveShell): removed subclassing code.InteractiveConsole
801 class. By now we'd overridden just about all of its methods: I've
807 class. By now we'd overridden just about all of its methods: I've
802 copied the remaining two over, and now ipython is a standalone
808 copied the remaining two over, and now ipython is a standalone
803 class. This will provide a clearer picture for the chainsaw
809 class. This will provide a clearer picture for the chainsaw
804 branch refactoring.
810 branch refactoring.
805
811
806 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
812 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
807
813
808 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
814 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
809 failures for objects which break when dir() is called on them.
815 failures for objects which break when dir() is called on them.
810
816
811 * IPython/FlexCompleter.py (Completer.__init__): Added support for
817 * IPython/FlexCompleter.py (Completer.__init__): Added support for
812 distinct local and global namespaces in the completer API. This
818 distinct local and global namespaces in the completer API. This
813 change allows us top properly handle completion with distinct
819 change allows us top properly handle completion with distinct
814 scopes, including in embedded instances (this had never really
820 scopes, including in embedded instances (this had never really
815 worked correctly).
821 worked correctly).
816
822
817 Note: this introduces a change in the constructor for
823 Note: this introduces a change in the constructor for
818 MagicCompleter, as a new global_namespace parameter is now the
824 MagicCompleter, as a new global_namespace parameter is now the
819 second argument (the others were bumped one position).
825 second argument (the others were bumped one position).
820
826
821 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
827 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
822
828
823 * IPython/iplib.py (embed_mainloop): fix tab-completion in
829 * IPython/iplib.py (embed_mainloop): fix tab-completion in
824 embedded instances (which can be done now thanks to Vivian's
830 embedded instances (which can be done now thanks to Vivian's
825 frame-handling fixes for pdb).
831 frame-handling fixes for pdb).
826 (InteractiveShell.__init__): Fix namespace handling problem in
832 (InteractiveShell.__init__): Fix namespace handling problem in
827 embedded instances. We were overwriting __main__ unconditionally,
833 embedded instances. We were overwriting __main__ unconditionally,
828 and this should only be done for 'full' (non-embedded) IPython;
834 and this should only be done for 'full' (non-embedded) IPython;
829 embedded instances must respect the caller's __main__. Thanks to
835 embedded instances must respect the caller's __main__. Thanks to
830 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
836 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
831
837
832 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
838 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
833
839
834 * setup.py: added download_url to setup(). This registers the
840 * setup.py: added download_url to setup(). This registers the
835 download address at PyPI, which is not only useful to humans
841 download address at PyPI, which is not only useful to humans
836 browsing the site, but is also picked up by setuptools (the Eggs
842 browsing the site, but is also picked up by setuptools (the Eggs
837 machinery). Thanks to Ville and R. Kern for the info/discussion
843 machinery). Thanks to Ville and R. Kern for the info/discussion
838 on this.
844 on this.
839
845
840 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
846 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
841
847
842 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
848 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
843 This brings a lot of nice functionality to the pdb mode, which now
849 This brings a lot of nice functionality to the pdb mode, which now
844 has tab-completion, syntax highlighting, and better stack handling
850 has tab-completion, syntax highlighting, and better stack handling
845 than before. Many thanks to Vivian De Smedt
851 than before. Many thanks to Vivian De Smedt
846 <vivian-AT-vdesmedt.com> for the original patches.
852 <vivian-AT-vdesmedt.com> for the original patches.
847
853
848 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
854 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
849
855
850 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
856 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
851 sequence to consistently accept the banner argument. The
857 sequence to consistently accept the banner argument. The
852 inconsistency was tripping SAGE, thanks to Gary Zablackis
858 inconsistency was tripping SAGE, thanks to Gary Zablackis
853 <gzabl-AT-yahoo.com> for the report.
859 <gzabl-AT-yahoo.com> for the report.
854
860
855 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
861 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
856
862
857 * IPython/iplib.py (InteractiveShell.post_config_initialization):
863 * IPython/iplib.py (InteractiveShell.post_config_initialization):
858 Fix bug where a naked 'alias' call in the ipythonrc file would
864 Fix bug where a naked 'alias' call in the ipythonrc file would
859 cause a crash. Bug reported by Jorgen Stenarson.
865 cause a crash. Bug reported by Jorgen Stenarson.
860
866
861 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
867 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
862
868
863 * IPython/ipmaker.py (make_IPython): cleanups which should improve
869 * IPython/ipmaker.py (make_IPython): cleanups which should improve
864 startup time.
870 startup time.
865
871
866 * IPython/iplib.py (runcode): my globals 'fix' for embedded
872 * IPython/iplib.py (runcode): my globals 'fix' for embedded
867 instances had introduced a bug with globals in normal code. Now
873 instances had introduced a bug with globals in normal code. Now
868 it's working in all cases.
874 it's working in all cases.
869
875
870 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
876 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
871 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
877 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
872 has been introduced to set the default case sensitivity of the
878 has been introduced to set the default case sensitivity of the
873 searches. Users can still select either mode at runtime on a
879 searches. Users can still select either mode at runtime on a
874 per-search basis.
880 per-search basis.
875
881
876 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
882 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
877
883
878 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
884 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
879 attributes in wildcard searches for subclasses. Modified version
885 attributes in wildcard searches for subclasses. Modified version
880 of a patch by Jorgen.
886 of a patch by Jorgen.
881
887
882 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
888 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
883
889
884 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
890 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
885 embedded instances. I added a user_global_ns attribute to the
891 embedded instances. I added a user_global_ns attribute to the
886 InteractiveShell class to handle this.
892 InteractiveShell class to handle this.
887
893
888 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
894 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
889
895
890 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
896 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
891 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
897 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
892 (reported under win32, but may happen also in other platforms).
898 (reported under win32, but may happen also in other platforms).
893 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
899 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
894
900
895 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
901 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
896
902
897 * IPython/Magic.py (magic_psearch): new support for wildcard
903 * IPython/Magic.py (magic_psearch): new support for wildcard
898 patterns. Now, typing ?a*b will list all names which begin with a
904 patterns. Now, typing ?a*b will list all names which begin with a
899 and end in b, for example. The %psearch magic has full
905 and end in b, for example. The %psearch magic has full
900 docstrings. Many thanks to JΓΆrgen Stenarson
906 docstrings. Many thanks to JΓΆrgen Stenarson
901 <jorgen.stenarson-AT-bostream.nu>, author of the patches
907 <jorgen.stenarson-AT-bostream.nu>, author of the patches
902 implementing this functionality.
908 implementing this functionality.
903
909
904 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
910 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
905
911
906 * Manual: fixed long-standing annoyance of double-dashes (as in
912 * Manual: fixed long-standing annoyance of double-dashes (as in
907 --prefix=~, for example) being stripped in the HTML version. This
913 --prefix=~, for example) being stripped in the HTML version. This
908 is a latex2html bug, but a workaround was provided. Many thanks
914 is a latex2html bug, but a workaround was provided. Many thanks
909 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
915 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
910 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
916 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
911 rolling. This seemingly small issue had tripped a number of users
917 rolling. This seemingly small issue had tripped a number of users
912 when first installing, so I'm glad to see it gone.
918 when first installing, so I'm glad to see it gone.
913
919
914 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
920 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
915
921
916 * IPython/Extensions/numeric_formats.py: fix missing import,
922 * IPython/Extensions/numeric_formats.py: fix missing import,
917 reported by Stephen Walton.
923 reported by Stephen Walton.
918
924
919 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
925 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
920
926
921 * IPython/demo.py: finish demo module, fully documented now.
927 * IPython/demo.py: finish demo module, fully documented now.
922
928
923 * IPython/genutils.py (file_read): simple little utility to read a
929 * IPython/genutils.py (file_read): simple little utility to read a
924 file and ensure it's closed afterwards.
930 file and ensure it's closed afterwards.
925
931
926 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
932 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
927
933
928 * IPython/demo.py (Demo.__init__): added support for individually
934 * IPython/demo.py (Demo.__init__): added support for individually
929 tagging blocks for automatic execution.
935 tagging blocks for automatic execution.
930
936
931 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
937 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
932 syntax-highlighted python sources, requested by John.
938 syntax-highlighted python sources, requested by John.
933
939
934 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
940 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
935
941
936 * IPython/demo.py (Demo.again): fix bug where again() blocks after
942 * IPython/demo.py (Demo.again): fix bug where again() blocks after
937 finishing.
943 finishing.
938
944
939 * IPython/genutils.py (shlex_split): moved from Magic to here,
945 * IPython/genutils.py (shlex_split): moved from Magic to here,
940 where all 2.2 compatibility stuff lives. I needed it for demo.py.
946 where all 2.2 compatibility stuff lives. I needed it for demo.py.
941
947
942 * IPython/demo.py (Demo.__init__): added support for silent
948 * IPython/demo.py (Demo.__init__): added support for silent
943 blocks, improved marks as regexps, docstrings written.
949 blocks, improved marks as regexps, docstrings written.
944 (Demo.__init__): better docstring, added support for sys.argv.
950 (Demo.__init__): better docstring, added support for sys.argv.
945
951
946 * IPython/genutils.py (marquee): little utility used by the demo
952 * IPython/genutils.py (marquee): little utility used by the demo
947 code, handy in general.
953 code, handy in general.
948
954
949 * IPython/demo.py (Demo.__init__): new class for interactive
955 * IPython/demo.py (Demo.__init__): new class for interactive
950 demos. Not documented yet, I just wrote it in a hurry for
956 demos. Not documented yet, I just wrote it in a hurry for
951 scipy'05. Will docstring later.
957 scipy'05. Will docstring later.
952
958
953 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
959 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
954
960
955 * IPython/Shell.py (sigint_handler): Drastic simplification which
961 * IPython/Shell.py (sigint_handler): Drastic simplification which
956 also seems to make Ctrl-C work correctly across threads! This is
962 also seems to make Ctrl-C work correctly across threads! This is
957 so simple, that I can't beleive I'd missed it before. Needs more
963 so simple, that I can't beleive I'd missed it before. Needs more
958 testing, though.
964 testing, though.
959 (KBINT): Never mind, revert changes. I'm sure I'd tried something
965 (KBINT): Never mind, revert changes. I'm sure I'd tried something
960 like this before...
966 like this before...
961
967
962 * IPython/genutils.py (get_home_dir): add protection against
968 * IPython/genutils.py (get_home_dir): add protection against
963 non-dirs in win32 registry.
969 non-dirs in win32 registry.
964
970
965 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
971 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
966 bug where dict was mutated while iterating (pysh crash).
972 bug where dict was mutated while iterating (pysh crash).
967
973
968 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
974 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
969
975
970 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
976 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
971 spurious newlines added by this routine. After a report by
977 spurious newlines added by this routine. After a report by
972 F. Mantegazza.
978 F. Mantegazza.
973
979
974 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
980 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
975
981
976 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
982 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
977 calls. These were a leftover from the GTK 1.x days, and can cause
983 calls. These were a leftover from the GTK 1.x days, and can cause
978 problems in certain cases (after a report by John Hunter).
984 problems in certain cases (after a report by John Hunter).
979
985
980 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
986 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
981 os.getcwd() fails at init time. Thanks to patch from David Remahl
987 os.getcwd() fails at init time. Thanks to patch from David Remahl
982 <chmod007-AT-mac.com>.
988 <chmod007-AT-mac.com>.
983 (InteractiveShell.__init__): prevent certain special magics from
989 (InteractiveShell.__init__): prevent certain special magics from
984 being shadowed by aliases. Closes
990 being shadowed by aliases. Closes
985 http://www.scipy.net/roundup/ipython/issue41.
991 http://www.scipy.net/roundup/ipython/issue41.
986
992
987 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
993 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
988
994
989 * IPython/iplib.py (InteractiveShell.complete): Added new
995 * IPython/iplib.py (InteractiveShell.complete): Added new
990 top-level completion method to expose the completion mechanism
996 top-level completion method to expose the completion mechanism
991 beyond readline-based environments.
997 beyond readline-based environments.
992
998
993 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
999 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
994
1000
995 * tools/ipsvnc (svnversion): fix svnversion capture.
1001 * tools/ipsvnc (svnversion): fix svnversion capture.
996
1002
997 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1003 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
998 attribute to self, which was missing. Before, it was set by a
1004 attribute to self, which was missing. Before, it was set by a
999 routine which in certain cases wasn't being called, so the
1005 routine which in certain cases wasn't being called, so the
1000 instance could end up missing the attribute. This caused a crash.
1006 instance could end up missing the attribute. This caused a crash.
1001 Closes http://www.scipy.net/roundup/ipython/issue40.
1007 Closes http://www.scipy.net/roundup/ipython/issue40.
1002
1008
1003 2005-08-16 Fernando Perez <fperez@colorado.edu>
1009 2005-08-16 Fernando Perez <fperez@colorado.edu>
1004
1010
1005 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1011 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1006 contains non-string attribute. Closes
1012 contains non-string attribute. Closes
1007 http://www.scipy.net/roundup/ipython/issue38.
1013 http://www.scipy.net/roundup/ipython/issue38.
1008
1014
1009 2005-08-14 Fernando Perez <fperez@colorado.edu>
1015 2005-08-14 Fernando Perez <fperez@colorado.edu>
1010
1016
1011 * tools/ipsvnc: Minor improvements, to add changeset info.
1017 * tools/ipsvnc: Minor improvements, to add changeset info.
1012
1018
1013 2005-08-12 Fernando Perez <fperez@colorado.edu>
1019 2005-08-12 Fernando Perez <fperez@colorado.edu>
1014
1020
1015 * IPython/iplib.py (runsource): remove self.code_to_run_src
1021 * IPython/iplib.py (runsource): remove self.code_to_run_src
1016 attribute. I realized this is nothing more than
1022 attribute. I realized this is nothing more than
1017 '\n'.join(self.buffer), and having the same data in two different
1023 '\n'.join(self.buffer), and having the same data in two different
1018 places is just asking for synchronization bugs. This may impact
1024 places is just asking for synchronization bugs. This may impact
1019 people who have custom exception handlers, so I need to warn
1025 people who have custom exception handlers, so I need to warn
1020 ipython-dev about it (F. Mantegazza may use them).
1026 ipython-dev about it (F. Mantegazza may use them).
1021
1027
1022 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1028 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1023
1029
1024 * IPython/genutils.py: fix 2.2 compatibility (generators)
1030 * IPython/genutils.py: fix 2.2 compatibility (generators)
1025
1031
1026 2005-07-18 Fernando Perez <fperez@colorado.edu>
1032 2005-07-18 Fernando Perez <fperez@colorado.edu>
1027
1033
1028 * IPython/genutils.py (get_home_dir): fix to help users with
1034 * IPython/genutils.py (get_home_dir): fix to help users with
1029 invalid $HOME under win32.
1035 invalid $HOME under win32.
1030
1036
1031 2005-07-17 Fernando Perez <fperez@colorado.edu>
1037 2005-07-17 Fernando Perez <fperez@colorado.edu>
1032
1038
1033 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1039 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1034 some old hacks and clean up a bit other routines; code should be
1040 some old hacks and clean up a bit other routines; code should be
1035 simpler and a bit faster.
1041 simpler and a bit faster.
1036
1042
1037 * IPython/iplib.py (interact): removed some last-resort attempts
1043 * IPython/iplib.py (interact): removed some last-resort attempts
1038 to survive broken stdout/stderr. That code was only making it
1044 to survive broken stdout/stderr. That code was only making it
1039 harder to abstract out the i/o (necessary for gui integration),
1045 harder to abstract out the i/o (necessary for gui integration),
1040 and the crashes it could prevent were extremely rare in practice
1046 and the crashes it could prevent were extremely rare in practice
1041 (besides being fully user-induced in a pretty violent manner).
1047 (besides being fully user-induced in a pretty violent manner).
1042
1048
1043 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1049 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1044 Nothing major yet, but the code is simpler to read; this should
1050 Nothing major yet, but the code is simpler to read; this should
1045 make it easier to do more serious modifications in the future.
1051 make it easier to do more serious modifications in the future.
1046
1052
1047 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1053 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1048 which broke in .15 (thanks to a report by Ville).
1054 which broke in .15 (thanks to a report by Ville).
1049
1055
1050 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1056 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1051 be quite correct, I know next to nothing about unicode). This
1057 be quite correct, I know next to nothing about unicode). This
1052 will allow unicode strings to be used in prompts, amongst other
1058 will allow unicode strings to be used in prompts, amongst other
1053 cases. It also will prevent ipython from crashing when unicode
1059 cases. It also will prevent ipython from crashing when unicode
1054 shows up unexpectedly in many places. If ascii encoding fails, we
1060 shows up unexpectedly in many places. If ascii encoding fails, we
1055 assume utf_8. Currently the encoding is not a user-visible
1061 assume utf_8. Currently the encoding is not a user-visible
1056 setting, though it could be made so if there is demand for it.
1062 setting, though it could be made so if there is demand for it.
1057
1063
1058 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1064 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1059
1065
1060 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1066 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1061
1067
1062 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1068 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1063
1069
1064 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1070 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1065 code can work transparently for 2.2/2.3.
1071 code can work transparently for 2.2/2.3.
1066
1072
1067 2005-07-16 Fernando Perez <fperez@colorado.edu>
1073 2005-07-16 Fernando Perez <fperez@colorado.edu>
1068
1074
1069 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1075 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1070 out of the color scheme table used for coloring exception
1076 out of the color scheme table used for coloring exception
1071 tracebacks. This allows user code to add new schemes at runtime.
1077 tracebacks. This allows user code to add new schemes at runtime.
1072 This is a minimally modified version of the patch at
1078 This is a minimally modified version of the patch at
1073 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1079 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1074 for the contribution.
1080 for the contribution.
1075
1081
1076 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1082 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1077 slightly modified version of the patch in
1083 slightly modified version of the patch in
1078 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1084 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1079 to remove the previous try/except solution (which was costlier).
1085 to remove the previous try/except solution (which was costlier).
1080 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1086 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1081
1087
1082 2005-06-08 Fernando Perez <fperez@colorado.edu>
1088 2005-06-08 Fernando Perez <fperez@colorado.edu>
1083
1089
1084 * IPython/iplib.py (write/write_err): Add methods to abstract all
1090 * IPython/iplib.py (write/write_err): Add methods to abstract all
1085 I/O a bit more.
1091 I/O a bit more.
1086
1092
1087 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1093 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1088 warning, reported by Aric Hagberg, fix by JD Hunter.
1094 warning, reported by Aric Hagberg, fix by JD Hunter.
1089
1095
1090 2005-06-02 *** Released version 0.6.15
1096 2005-06-02 *** Released version 0.6.15
1091
1097
1092 2005-06-01 Fernando Perez <fperez@colorado.edu>
1098 2005-06-01 Fernando Perez <fperez@colorado.edu>
1093
1099
1094 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1100 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1095 tab-completion of filenames within open-quoted strings. Note that
1101 tab-completion of filenames within open-quoted strings. Note that
1096 this requires that in ~/.ipython/ipythonrc, users change the
1102 this requires that in ~/.ipython/ipythonrc, users change the
1097 readline delimiters configuration to read:
1103 readline delimiters configuration to read:
1098
1104
1099 readline_remove_delims -/~
1105 readline_remove_delims -/~
1100
1106
1101
1107
1102 2005-05-31 *** Released version 0.6.14
1108 2005-05-31 *** Released version 0.6.14
1103
1109
1104 2005-05-29 Fernando Perez <fperez@colorado.edu>
1110 2005-05-29 Fernando Perez <fperez@colorado.edu>
1105
1111
1106 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1112 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1107 with files not on the filesystem. Reported by Eliyahu Sandler
1113 with files not on the filesystem. Reported by Eliyahu Sandler
1108 <eli@gondolin.net>
1114 <eli@gondolin.net>
1109
1115
1110 2005-05-22 Fernando Perez <fperez@colorado.edu>
1116 2005-05-22 Fernando Perez <fperez@colorado.edu>
1111
1117
1112 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1118 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1113 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1119 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1114
1120
1115 2005-05-19 Fernando Perez <fperez@colorado.edu>
1121 2005-05-19 Fernando Perez <fperez@colorado.edu>
1116
1122
1117 * IPython/iplib.py (safe_execfile): close a file which could be
1123 * IPython/iplib.py (safe_execfile): close a file which could be
1118 left open (causing problems in win32, which locks open files).
1124 left open (causing problems in win32, which locks open files).
1119 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1125 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1120
1126
1121 2005-05-18 Fernando Perez <fperez@colorado.edu>
1127 2005-05-18 Fernando Perez <fperez@colorado.edu>
1122
1128
1123 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1129 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1124 keyword arguments correctly to safe_execfile().
1130 keyword arguments correctly to safe_execfile().
1125
1131
1126 2005-05-13 Fernando Perez <fperez@colorado.edu>
1132 2005-05-13 Fernando Perez <fperez@colorado.edu>
1127
1133
1128 * ipython.1: Added info about Qt to manpage, and threads warning
1134 * ipython.1: Added info about Qt to manpage, and threads warning
1129 to usage page (invoked with --help).
1135 to usage page (invoked with --help).
1130
1136
1131 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1137 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1132 new matcher (it goes at the end of the priority list) to do
1138 new matcher (it goes at the end of the priority list) to do
1133 tab-completion on named function arguments. Submitted by George
1139 tab-completion on named function arguments. Submitted by George
1134 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1140 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1135 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1141 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1136 for more details.
1142 for more details.
1137
1143
1138 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1144 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1139 SystemExit exceptions in the script being run. Thanks to a report
1145 SystemExit exceptions in the script being run. Thanks to a report
1140 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1146 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1141 producing very annoying behavior when running unit tests.
1147 producing very annoying behavior when running unit tests.
1142
1148
1143 2005-05-12 Fernando Perez <fperez@colorado.edu>
1149 2005-05-12 Fernando Perez <fperez@colorado.edu>
1144
1150
1145 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1151 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1146 which I'd broken (again) due to a changed regexp. In the process,
1152 which I'd broken (again) due to a changed regexp. In the process,
1147 added ';' as an escape to auto-quote the whole line without
1153 added ';' as an escape to auto-quote the whole line without
1148 splitting its arguments. Thanks to a report by Jerry McRae
1154 splitting its arguments. Thanks to a report by Jerry McRae
1149 <qrs0xyc02-AT-sneakemail.com>.
1155 <qrs0xyc02-AT-sneakemail.com>.
1150
1156
1151 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1157 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1152 possible crashes caused by a TokenError. Reported by Ed Schofield
1158 possible crashes caused by a TokenError. Reported by Ed Schofield
1153 <schofield-AT-ftw.at>.
1159 <schofield-AT-ftw.at>.
1154
1160
1155 2005-05-06 Fernando Perez <fperez@colorado.edu>
1161 2005-05-06 Fernando Perez <fperez@colorado.edu>
1156
1162
1157 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1163 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1158
1164
1159 2005-04-29 Fernando Perez <fperez@colorado.edu>
1165 2005-04-29 Fernando Perez <fperez@colorado.edu>
1160
1166
1161 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1167 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1162 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1168 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1163 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1169 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1164 which provides support for Qt interactive usage (similar to the
1170 which provides support for Qt interactive usage (similar to the
1165 existing one for WX and GTK). This had been often requested.
1171 existing one for WX and GTK). This had been often requested.
1166
1172
1167 2005-04-14 *** Released version 0.6.13
1173 2005-04-14 *** Released version 0.6.13
1168
1174
1169 2005-04-08 Fernando Perez <fperez@colorado.edu>
1175 2005-04-08 Fernando Perez <fperez@colorado.edu>
1170
1176
1171 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1177 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1172 from _ofind, which gets called on almost every input line. Now,
1178 from _ofind, which gets called on almost every input line. Now,
1173 we only try to get docstrings if they are actually going to be
1179 we only try to get docstrings if they are actually going to be
1174 used (the overhead of fetching unnecessary docstrings can be
1180 used (the overhead of fetching unnecessary docstrings can be
1175 noticeable for certain objects, such as Pyro proxies).
1181 noticeable for certain objects, such as Pyro proxies).
1176
1182
1177 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1183 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1178 for completers. For some reason I had been passing them the state
1184 for completers. For some reason I had been passing them the state
1179 variable, which completers never actually need, and was in
1185 variable, which completers never actually need, and was in
1180 conflict with the rlcompleter API. Custom completers ONLY need to
1186 conflict with the rlcompleter API. Custom completers ONLY need to
1181 take the text parameter.
1187 take the text parameter.
1182
1188
1183 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1189 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1184 work correctly in pysh. I've also moved all the logic which used
1190 work correctly in pysh. I've also moved all the logic which used
1185 to be in pysh.py here, which will prevent problems with future
1191 to be in pysh.py here, which will prevent problems with future
1186 upgrades. However, this time I must warn users to update their
1192 upgrades. However, this time I must warn users to update their
1187 pysh profile to include the line
1193 pysh profile to include the line
1188
1194
1189 import_all IPython.Extensions.InterpreterExec
1195 import_all IPython.Extensions.InterpreterExec
1190
1196
1191 because otherwise things won't work for them. They MUST also
1197 because otherwise things won't work for them. They MUST also
1192 delete pysh.py and the line
1198 delete pysh.py and the line
1193
1199
1194 execfile pysh.py
1200 execfile pysh.py
1195
1201
1196 from their ipythonrc-pysh.
1202 from their ipythonrc-pysh.
1197
1203
1198 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1204 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1199 robust in the face of objects whose dir() returns non-strings
1205 robust in the face of objects whose dir() returns non-strings
1200 (which it shouldn't, but some broken libs like ITK do). Thanks to
1206 (which it shouldn't, but some broken libs like ITK do). Thanks to
1201 a patch by John Hunter (implemented differently, though). Also
1207 a patch by John Hunter (implemented differently, though). Also
1202 minor improvements by using .extend instead of + on lists.
1208 minor improvements by using .extend instead of + on lists.
1203
1209
1204 * pysh.py:
1210 * pysh.py:
1205
1211
1206 2005-04-06 Fernando Perez <fperez@colorado.edu>
1212 2005-04-06 Fernando Perez <fperez@colorado.edu>
1207
1213
1208 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1214 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1209 by default, so that all users benefit from it. Those who don't
1215 by default, so that all users benefit from it. Those who don't
1210 want it can still turn it off.
1216 want it can still turn it off.
1211
1217
1212 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1218 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1213 config file, I'd forgotten about this, so users were getting it
1219 config file, I'd forgotten about this, so users were getting it
1214 off by default.
1220 off by default.
1215
1221
1216 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1222 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1217 consistency. Now magics can be called in multiline statements,
1223 consistency. Now magics can be called in multiline statements,
1218 and python variables can be expanded in magic calls via $var.
1224 and python variables can be expanded in magic calls via $var.
1219 This makes the magic system behave just like aliases or !system
1225 This makes the magic system behave just like aliases or !system
1220 calls.
1226 calls.
1221
1227
1222 2005-03-28 Fernando Perez <fperez@colorado.edu>
1228 2005-03-28 Fernando Perez <fperez@colorado.edu>
1223
1229
1224 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1230 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1225 expensive string additions for building command. Add support for
1231 expensive string additions for building command. Add support for
1226 trailing ';' when autocall is used.
1232 trailing ';' when autocall is used.
1227
1233
1228 2005-03-26 Fernando Perez <fperez@colorado.edu>
1234 2005-03-26 Fernando Perez <fperez@colorado.edu>
1229
1235
1230 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1236 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1231 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1237 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1232 ipython.el robust against prompts with any number of spaces
1238 ipython.el robust against prompts with any number of spaces
1233 (including 0) after the ':' character.
1239 (including 0) after the ':' character.
1234
1240
1235 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1241 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1236 continuation prompt, which misled users to think the line was
1242 continuation prompt, which misled users to think the line was
1237 already indented. Closes debian Bug#300847, reported to me by
1243 already indented. Closes debian Bug#300847, reported to me by
1238 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1244 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1239
1245
1240 2005-03-23 Fernando Perez <fperez@colorado.edu>
1246 2005-03-23 Fernando Perez <fperez@colorado.edu>
1241
1247
1242 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1248 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1243 properly aligned if they have embedded newlines.
1249 properly aligned if they have embedded newlines.
1244
1250
1245 * IPython/iplib.py (runlines): Add a public method to expose
1251 * IPython/iplib.py (runlines): Add a public method to expose
1246 IPython's code execution machinery, so that users can run strings
1252 IPython's code execution machinery, so that users can run strings
1247 as if they had been typed at the prompt interactively.
1253 as if they had been typed at the prompt interactively.
1248 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1254 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1249 methods which can call the system shell, but with python variable
1255 methods which can call the system shell, but with python variable
1250 expansion. The three such methods are: __IPYTHON__.system,
1256 expansion. The three such methods are: __IPYTHON__.system,
1251 .getoutput and .getoutputerror. These need to be documented in a
1257 .getoutput and .getoutputerror. These need to be documented in a
1252 'public API' section (to be written) of the manual.
1258 'public API' section (to be written) of the manual.
1253
1259
1254 2005-03-20 Fernando Perez <fperez@colorado.edu>
1260 2005-03-20 Fernando Perez <fperez@colorado.edu>
1255
1261
1256 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1262 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1257 for custom exception handling. This is quite powerful, and it
1263 for custom exception handling. This is quite powerful, and it
1258 allows for user-installable exception handlers which can trap
1264 allows for user-installable exception handlers which can trap
1259 custom exceptions at runtime and treat them separately from
1265 custom exceptions at runtime and treat them separately from
1260 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1266 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1261 Mantegazza <mantegazza-AT-ill.fr>.
1267 Mantegazza <mantegazza-AT-ill.fr>.
1262 (InteractiveShell.set_custom_completer): public API function to
1268 (InteractiveShell.set_custom_completer): public API function to
1263 add new completers at runtime.
1269 add new completers at runtime.
1264
1270
1265 2005-03-19 Fernando Perez <fperez@colorado.edu>
1271 2005-03-19 Fernando Perez <fperez@colorado.edu>
1266
1272
1267 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1273 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1268 allow objects which provide their docstrings via non-standard
1274 allow objects which provide their docstrings via non-standard
1269 mechanisms (like Pyro proxies) to still be inspected by ipython's
1275 mechanisms (like Pyro proxies) to still be inspected by ipython's
1270 ? system.
1276 ? system.
1271
1277
1272 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1278 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1273 automatic capture system. I tried quite hard to make it work
1279 automatic capture system. I tried quite hard to make it work
1274 reliably, and simply failed. I tried many combinations with the
1280 reliably, and simply failed. I tried many combinations with the
1275 subprocess module, but eventually nothing worked in all needed
1281 subprocess module, but eventually nothing worked in all needed
1276 cases (not blocking stdin for the child, duplicating stdout
1282 cases (not blocking stdin for the child, duplicating stdout
1277 without blocking, etc). The new %sc/%sx still do capture to these
1283 without blocking, etc). The new %sc/%sx still do capture to these
1278 magical list/string objects which make shell use much more
1284 magical list/string objects which make shell use much more
1279 conveninent, so not all is lost.
1285 conveninent, so not all is lost.
1280
1286
1281 XXX - FIX MANUAL for the change above!
1287 XXX - FIX MANUAL for the change above!
1282
1288
1283 (runsource): I copied code.py's runsource() into ipython to modify
1289 (runsource): I copied code.py's runsource() into ipython to modify
1284 it a bit. Now the code object and source to be executed are
1290 it a bit. Now the code object and source to be executed are
1285 stored in ipython. This makes this info accessible to third-party
1291 stored in ipython. This makes this info accessible to third-party
1286 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1292 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1287 Mantegazza <mantegazza-AT-ill.fr>.
1293 Mantegazza <mantegazza-AT-ill.fr>.
1288
1294
1289 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1295 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1290 history-search via readline (like C-p/C-n). I'd wanted this for a
1296 history-search via readline (like C-p/C-n). I'd wanted this for a
1291 long time, but only recently found out how to do it. For users
1297 long time, but only recently found out how to do it. For users
1292 who already have their ipythonrc files made and want this, just
1298 who already have their ipythonrc files made and want this, just
1293 add:
1299 add:
1294
1300
1295 readline_parse_and_bind "\e[A": history-search-backward
1301 readline_parse_and_bind "\e[A": history-search-backward
1296 readline_parse_and_bind "\e[B": history-search-forward
1302 readline_parse_and_bind "\e[B": history-search-forward
1297
1303
1298 2005-03-18 Fernando Perez <fperez@colorado.edu>
1304 2005-03-18 Fernando Perez <fperez@colorado.edu>
1299
1305
1300 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1306 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1301 LSString and SList classes which allow transparent conversions
1307 LSString and SList classes which allow transparent conversions
1302 between list mode and whitespace-separated string.
1308 between list mode and whitespace-separated string.
1303 (magic_r): Fix recursion problem in %r.
1309 (magic_r): Fix recursion problem in %r.
1304
1310
1305 * IPython/genutils.py (LSString): New class to be used for
1311 * IPython/genutils.py (LSString): New class to be used for
1306 automatic storage of the results of all alias/system calls in _o
1312 automatic storage of the results of all alias/system calls in _o
1307 and _e (stdout/err). These provide a .l/.list attribute which
1313 and _e (stdout/err). These provide a .l/.list attribute which
1308 does automatic splitting on newlines. This means that for most
1314 does automatic splitting on newlines. This means that for most
1309 uses, you'll never need to do capturing of output with %sc/%sx
1315 uses, you'll never need to do capturing of output with %sc/%sx
1310 anymore, since ipython keeps this always done for you. Note that
1316 anymore, since ipython keeps this always done for you. Note that
1311 only the LAST results are stored, the _o/e variables are
1317 only the LAST results are stored, the _o/e variables are
1312 overwritten on each call. If you need to save their contents
1318 overwritten on each call. If you need to save their contents
1313 further, simply bind them to any other name.
1319 further, simply bind them to any other name.
1314
1320
1315 2005-03-17 Fernando Perez <fperez@colorado.edu>
1321 2005-03-17 Fernando Perez <fperez@colorado.edu>
1316
1322
1317 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1323 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1318 prompt namespace handling.
1324 prompt namespace handling.
1319
1325
1320 2005-03-16 Fernando Perez <fperez@colorado.edu>
1326 2005-03-16 Fernando Perez <fperez@colorado.edu>
1321
1327
1322 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1328 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1323 classic prompts to be '>>> ' (final space was missing, and it
1329 classic prompts to be '>>> ' (final space was missing, and it
1324 trips the emacs python mode).
1330 trips the emacs python mode).
1325 (BasePrompt.__str__): Added safe support for dynamic prompt
1331 (BasePrompt.__str__): Added safe support for dynamic prompt
1326 strings. Now you can set your prompt string to be '$x', and the
1332 strings. Now you can set your prompt string to be '$x', and the
1327 value of x will be printed from your interactive namespace. The
1333 value of x will be printed from your interactive namespace. The
1328 interpolation syntax includes the full Itpl support, so
1334 interpolation syntax includes the full Itpl support, so
1329 ${foo()+x+bar()} is a valid prompt string now, and the function
1335 ${foo()+x+bar()} is a valid prompt string now, and the function
1330 calls will be made at runtime.
1336 calls will be made at runtime.
1331
1337
1332 2005-03-15 Fernando Perez <fperez@colorado.edu>
1338 2005-03-15 Fernando Perez <fperez@colorado.edu>
1333
1339
1334 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1340 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1335 avoid name clashes in pylab. %hist still works, it just forwards
1341 avoid name clashes in pylab. %hist still works, it just forwards
1336 the call to %history.
1342 the call to %history.
1337
1343
1338 2005-03-02 *** Released version 0.6.12
1344 2005-03-02 *** Released version 0.6.12
1339
1345
1340 2005-03-02 Fernando Perez <fperez@colorado.edu>
1346 2005-03-02 Fernando Perez <fperez@colorado.edu>
1341
1347
1342 * IPython/iplib.py (handle_magic): log magic calls properly as
1348 * IPython/iplib.py (handle_magic): log magic calls properly as
1343 ipmagic() function calls.
1349 ipmagic() function calls.
1344
1350
1345 * IPython/Magic.py (magic_time): Improved %time to support
1351 * IPython/Magic.py (magic_time): Improved %time to support
1346 statements and provide wall-clock as well as CPU time.
1352 statements and provide wall-clock as well as CPU time.
1347
1353
1348 2005-02-27 Fernando Perez <fperez@colorado.edu>
1354 2005-02-27 Fernando Perez <fperez@colorado.edu>
1349
1355
1350 * IPython/hooks.py: New hooks module, to expose user-modifiable
1356 * IPython/hooks.py: New hooks module, to expose user-modifiable
1351 IPython functionality in a clean manner. For now only the editor
1357 IPython functionality in a clean manner. For now only the editor
1352 hook is actually written, and other thigns which I intend to turn
1358 hook is actually written, and other thigns which I intend to turn
1353 into proper hooks aren't yet there. The display and prefilter
1359 into proper hooks aren't yet there. The display and prefilter
1354 stuff, for example, should be hooks. But at least now the
1360 stuff, for example, should be hooks. But at least now the
1355 framework is in place, and the rest can be moved here with more
1361 framework is in place, and the rest can be moved here with more
1356 time later. IPython had had a .hooks variable for a long time for
1362 time later. IPython had had a .hooks variable for a long time for
1357 this purpose, but I'd never actually used it for anything.
1363 this purpose, but I'd never actually used it for anything.
1358
1364
1359 2005-02-26 Fernando Perez <fperez@colorado.edu>
1365 2005-02-26 Fernando Perez <fperez@colorado.edu>
1360
1366
1361 * IPython/ipmaker.py (make_IPython): make the default ipython
1367 * IPython/ipmaker.py (make_IPython): make the default ipython
1362 directory be called _ipython under win32, to follow more the
1368 directory be called _ipython under win32, to follow more the
1363 naming peculiarities of that platform (where buggy software like
1369 naming peculiarities of that platform (where buggy software like
1364 Visual Sourcesafe breaks with .named directories). Reported by
1370 Visual Sourcesafe breaks with .named directories). Reported by
1365 Ville Vainio.
1371 Ville Vainio.
1366
1372
1367 2005-02-23 Fernando Perez <fperez@colorado.edu>
1373 2005-02-23 Fernando Perez <fperez@colorado.edu>
1368
1374
1369 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1375 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1370 auto_aliases for win32 which were causing problems. Users can
1376 auto_aliases for win32 which were causing problems. Users can
1371 define the ones they personally like.
1377 define the ones they personally like.
1372
1378
1373 2005-02-21 Fernando Perez <fperez@colorado.edu>
1379 2005-02-21 Fernando Perez <fperez@colorado.edu>
1374
1380
1375 * IPython/Magic.py (magic_time): new magic to time execution of
1381 * IPython/Magic.py (magic_time): new magic to time execution of
1376 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1382 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1377
1383
1378 2005-02-19 Fernando Perez <fperez@colorado.edu>
1384 2005-02-19 Fernando Perez <fperez@colorado.edu>
1379
1385
1380 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1386 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1381 into keys (for prompts, for example).
1387 into keys (for prompts, for example).
1382
1388
1383 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1389 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1384 prompts in case users want them. This introduces a small behavior
1390 prompts in case users want them. This introduces a small behavior
1385 change: ipython does not automatically add a space to all prompts
1391 change: ipython does not automatically add a space to all prompts
1386 anymore. To get the old prompts with a space, users should add it
1392 anymore. To get the old prompts with a space, users should add it
1387 manually to their ipythonrc file, so for example prompt_in1 should
1393 manually to their ipythonrc file, so for example prompt_in1 should
1388 now read 'In [\#]: ' instead of 'In [\#]:'.
1394 now read 'In [\#]: ' instead of 'In [\#]:'.
1389 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1395 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1390 file) to control left-padding of secondary prompts.
1396 file) to control left-padding of secondary prompts.
1391
1397
1392 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1398 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1393 the profiler can't be imported. Fix for Debian, which removed
1399 the profiler can't be imported. Fix for Debian, which removed
1394 profile.py because of License issues. I applied a slightly
1400 profile.py because of License issues. I applied a slightly
1395 modified version of the original Debian patch at
1401 modified version of the original Debian patch at
1396 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1402 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1397
1403
1398 2005-02-17 Fernando Perez <fperez@colorado.edu>
1404 2005-02-17 Fernando Perez <fperez@colorado.edu>
1399
1405
1400 * IPython/genutils.py (native_line_ends): Fix bug which would
1406 * IPython/genutils.py (native_line_ends): Fix bug which would
1401 cause improper line-ends under win32 b/c I was not opening files
1407 cause improper line-ends under win32 b/c I was not opening files
1402 in binary mode. Bug report and fix thanks to Ville.
1408 in binary mode. Bug report and fix thanks to Ville.
1403
1409
1404 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1410 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1405 trying to catch spurious foo[1] autocalls. My fix actually broke
1411 trying to catch spurious foo[1] autocalls. My fix actually broke
1406 ',/' autoquote/call with explicit escape (bad regexp).
1412 ',/' autoquote/call with explicit escape (bad regexp).
1407
1413
1408 2005-02-15 *** Released version 0.6.11
1414 2005-02-15 *** Released version 0.6.11
1409
1415
1410 2005-02-14 Fernando Perez <fperez@colorado.edu>
1416 2005-02-14 Fernando Perez <fperez@colorado.edu>
1411
1417
1412 * IPython/background_jobs.py: New background job management
1418 * IPython/background_jobs.py: New background job management
1413 subsystem. This is implemented via a new set of classes, and
1419 subsystem. This is implemented via a new set of classes, and
1414 IPython now provides a builtin 'jobs' object for background job
1420 IPython now provides a builtin 'jobs' object for background job
1415 execution. A convenience %bg magic serves as a lightweight
1421 execution. A convenience %bg magic serves as a lightweight
1416 frontend for starting the more common type of calls. This was
1422 frontend for starting the more common type of calls. This was
1417 inspired by discussions with B. Granger and the BackgroundCommand
1423 inspired by discussions with B. Granger and the BackgroundCommand
1418 class described in the book Python Scripting for Computational
1424 class described in the book Python Scripting for Computational
1419 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1425 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1420 (although ultimately no code from this text was used, as IPython's
1426 (although ultimately no code from this text was used, as IPython's
1421 system is a separate implementation).
1427 system is a separate implementation).
1422
1428
1423 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1429 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1424 to control the completion of single/double underscore names
1430 to control the completion of single/double underscore names
1425 separately. As documented in the example ipytonrc file, the
1431 separately. As documented in the example ipytonrc file, the
1426 readline_omit__names variable can now be set to 2, to omit even
1432 readline_omit__names variable can now be set to 2, to omit even
1427 single underscore names. Thanks to a patch by Brian Wong
1433 single underscore names. Thanks to a patch by Brian Wong
1428 <BrianWong-AT-AirgoNetworks.Com>.
1434 <BrianWong-AT-AirgoNetworks.Com>.
1429 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1435 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1430 be autocalled as foo([1]) if foo were callable. A problem for
1436 be autocalled as foo([1]) if foo were callable. A problem for
1431 things which are both callable and implement __getitem__.
1437 things which are both callable and implement __getitem__.
1432 (init_readline): Fix autoindentation for win32. Thanks to a patch
1438 (init_readline): Fix autoindentation for win32. Thanks to a patch
1433 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1439 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1434
1440
1435 2005-02-12 Fernando Perez <fperez@colorado.edu>
1441 2005-02-12 Fernando Perez <fperez@colorado.edu>
1436
1442
1437 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1443 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1438 which I had written long ago to sort out user error messages which
1444 which I had written long ago to sort out user error messages which
1439 may occur during startup. This seemed like a good idea initially,
1445 may occur during startup. This seemed like a good idea initially,
1440 but it has proven a disaster in retrospect. I don't want to
1446 but it has proven a disaster in retrospect. I don't want to
1441 change much code for now, so my fix is to set the internal 'debug'
1447 change much code for now, so my fix is to set the internal 'debug'
1442 flag to true everywhere, whose only job was precisely to control
1448 flag to true everywhere, whose only job was precisely to control
1443 this subsystem. This closes issue 28 (as well as avoiding all
1449 this subsystem. This closes issue 28 (as well as avoiding all
1444 sorts of strange hangups which occur from time to time).
1450 sorts of strange hangups which occur from time to time).
1445
1451
1446 2005-02-07 Fernando Perez <fperez@colorado.edu>
1452 2005-02-07 Fernando Perez <fperez@colorado.edu>
1447
1453
1448 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1454 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1449 previous call produced a syntax error.
1455 previous call produced a syntax error.
1450
1456
1451 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1457 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1452 classes without constructor.
1458 classes without constructor.
1453
1459
1454 2005-02-06 Fernando Perez <fperez@colorado.edu>
1460 2005-02-06 Fernando Perez <fperez@colorado.edu>
1455
1461
1456 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1462 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1457 completions with the results of each matcher, so we return results
1463 completions with the results of each matcher, so we return results
1458 to the user from all namespaces. This breaks with ipython
1464 to the user from all namespaces. This breaks with ipython
1459 tradition, but I think it's a nicer behavior. Now you get all
1465 tradition, but I think it's a nicer behavior. Now you get all
1460 possible completions listed, from all possible namespaces (python,
1466 possible completions listed, from all possible namespaces (python,
1461 filesystem, magics...) After a request by John Hunter
1467 filesystem, magics...) After a request by John Hunter
1462 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1468 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1463
1469
1464 2005-02-05 Fernando Perez <fperez@colorado.edu>
1470 2005-02-05 Fernando Perez <fperez@colorado.edu>
1465
1471
1466 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1472 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1467 the call had quote characters in it (the quotes were stripped).
1473 the call had quote characters in it (the quotes were stripped).
1468
1474
1469 2005-01-31 Fernando Perez <fperez@colorado.edu>
1475 2005-01-31 Fernando Perez <fperez@colorado.edu>
1470
1476
1471 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1477 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1472 Itpl.itpl() to make the code more robust against psyco
1478 Itpl.itpl() to make the code more robust against psyco
1473 optimizations.
1479 optimizations.
1474
1480
1475 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1481 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1476 of causing an exception. Quicker, cleaner.
1482 of causing an exception. Quicker, cleaner.
1477
1483
1478 2005-01-28 Fernando Perez <fperez@colorado.edu>
1484 2005-01-28 Fernando Perez <fperez@colorado.edu>
1479
1485
1480 * scripts/ipython_win_post_install.py (install): hardcode
1486 * scripts/ipython_win_post_install.py (install): hardcode
1481 sys.prefix+'python.exe' as the executable path. It turns out that
1487 sys.prefix+'python.exe' as the executable path. It turns out that
1482 during the post-installation run, sys.executable resolves to the
1488 during the post-installation run, sys.executable resolves to the
1483 name of the binary installer! I should report this as a distutils
1489 name of the binary installer! I should report this as a distutils
1484 bug, I think. I updated the .10 release with this tiny fix, to
1490 bug, I think. I updated the .10 release with this tiny fix, to
1485 avoid annoying the lists further.
1491 avoid annoying the lists further.
1486
1492
1487 2005-01-27 *** Released version 0.6.10
1493 2005-01-27 *** Released version 0.6.10
1488
1494
1489 2005-01-27 Fernando Perez <fperez@colorado.edu>
1495 2005-01-27 Fernando Perez <fperez@colorado.edu>
1490
1496
1491 * IPython/numutils.py (norm): Added 'inf' as optional name for
1497 * IPython/numutils.py (norm): Added 'inf' as optional name for
1492 L-infinity norm, included references to mathworld.com for vector
1498 L-infinity norm, included references to mathworld.com for vector
1493 norm definitions.
1499 norm definitions.
1494 (amin/amax): added amin/amax for array min/max. Similar to what
1500 (amin/amax): added amin/amax for array min/max. Similar to what
1495 pylab ships with after the recent reorganization of names.
1501 pylab ships with after the recent reorganization of names.
1496 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1502 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1497
1503
1498 * ipython.el: committed Alex's recent fixes and improvements.
1504 * ipython.el: committed Alex's recent fixes and improvements.
1499 Tested with python-mode from CVS, and it looks excellent. Since
1505 Tested with python-mode from CVS, and it looks excellent. Since
1500 python-mode hasn't released anything in a while, I'm temporarily
1506 python-mode hasn't released anything in a while, I'm temporarily
1501 putting a copy of today's CVS (v 4.70) of python-mode in:
1507 putting a copy of today's CVS (v 4.70) of python-mode in:
1502 http://ipython.scipy.org/tmp/python-mode.el
1508 http://ipython.scipy.org/tmp/python-mode.el
1503
1509
1504 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1510 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1505 sys.executable for the executable name, instead of assuming it's
1511 sys.executable for the executable name, instead of assuming it's
1506 called 'python.exe' (the post-installer would have produced broken
1512 called 'python.exe' (the post-installer would have produced broken
1507 setups on systems with a differently named python binary).
1513 setups on systems with a differently named python binary).
1508
1514
1509 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1515 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1510 references to os.linesep, to make the code more
1516 references to os.linesep, to make the code more
1511 platform-independent. This is also part of the win32 coloring
1517 platform-independent. This is also part of the win32 coloring
1512 fixes.
1518 fixes.
1513
1519
1514 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1520 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1515 lines, which actually cause coloring bugs because the length of
1521 lines, which actually cause coloring bugs because the length of
1516 the line is very difficult to correctly compute with embedded
1522 the line is very difficult to correctly compute with embedded
1517 escapes. This was the source of all the coloring problems under
1523 escapes. This was the source of all the coloring problems under
1518 Win32. I think that _finally_, Win32 users have a properly
1524 Win32. I think that _finally_, Win32 users have a properly
1519 working ipython in all respects. This would never have happened
1525 working ipython in all respects. This would never have happened
1520 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1526 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1521
1527
1522 2005-01-26 *** Released version 0.6.9
1528 2005-01-26 *** Released version 0.6.9
1523
1529
1524 2005-01-25 Fernando Perez <fperez@colorado.edu>
1530 2005-01-25 Fernando Perez <fperez@colorado.edu>
1525
1531
1526 * setup.py: finally, we have a true Windows installer, thanks to
1532 * setup.py: finally, we have a true Windows installer, thanks to
1527 the excellent work of Viktor Ransmayr
1533 the excellent work of Viktor Ransmayr
1528 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1534 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1529 Windows users. The setup routine is quite a bit cleaner thanks to
1535 Windows users. The setup routine is quite a bit cleaner thanks to
1530 this, and the post-install script uses the proper functions to
1536 this, and the post-install script uses the proper functions to
1531 allow a clean de-installation using the standard Windows Control
1537 allow a clean de-installation using the standard Windows Control
1532 Panel.
1538 Panel.
1533
1539
1534 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1540 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1535 environment variable under all OSes (including win32) if
1541 environment variable under all OSes (including win32) if
1536 available. This will give consistency to win32 users who have set
1542 available. This will give consistency to win32 users who have set
1537 this variable for any reason. If os.environ['HOME'] fails, the
1543 this variable for any reason. If os.environ['HOME'] fails, the
1538 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1544 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1539
1545
1540 2005-01-24 Fernando Perez <fperez@colorado.edu>
1546 2005-01-24 Fernando Perez <fperez@colorado.edu>
1541
1547
1542 * IPython/numutils.py (empty_like): add empty_like(), similar to
1548 * IPython/numutils.py (empty_like): add empty_like(), similar to
1543 zeros_like() but taking advantage of the new empty() Numeric routine.
1549 zeros_like() but taking advantage of the new empty() Numeric routine.
1544
1550
1545 2005-01-23 *** Released version 0.6.8
1551 2005-01-23 *** Released version 0.6.8
1546
1552
1547 2005-01-22 Fernando Perez <fperez@colorado.edu>
1553 2005-01-22 Fernando Perez <fperez@colorado.edu>
1548
1554
1549 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1555 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1550 automatic show() calls. After discussing things with JDH, it
1556 automatic show() calls. After discussing things with JDH, it
1551 turns out there are too many corner cases where this can go wrong.
1557 turns out there are too many corner cases where this can go wrong.
1552 It's best not to try to be 'too smart', and simply have ipython
1558 It's best not to try to be 'too smart', and simply have ipython
1553 reproduce as much as possible the default behavior of a normal
1559 reproduce as much as possible the default behavior of a normal
1554 python shell.
1560 python shell.
1555
1561
1556 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1562 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1557 line-splitting regexp and _prefilter() to avoid calling getattr()
1563 line-splitting regexp and _prefilter() to avoid calling getattr()
1558 on assignments. This closes
1564 on assignments. This closes
1559 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1565 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1560 readline uses getattr(), so a simple <TAB> keypress is still
1566 readline uses getattr(), so a simple <TAB> keypress is still
1561 enough to trigger getattr() calls on an object.
1567 enough to trigger getattr() calls on an object.
1562
1568
1563 2005-01-21 Fernando Perez <fperez@colorado.edu>
1569 2005-01-21 Fernando Perez <fperez@colorado.edu>
1564
1570
1565 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1571 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1566 docstring under pylab so it doesn't mask the original.
1572 docstring under pylab so it doesn't mask the original.
1567
1573
1568 2005-01-21 *** Released version 0.6.7
1574 2005-01-21 *** Released version 0.6.7
1569
1575
1570 2005-01-21 Fernando Perez <fperez@colorado.edu>
1576 2005-01-21 Fernando Perez <fperez@colorado.edu>
1571
1577
1572 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1578 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1573 signal handling for win32 users in multithreaded mode.
1579 signal handling for win32 users in multithreaded mode.
1574
1580
1575 2005-01-17 Fernando Perez <fperez@colorado.edu>
1581 2005-01-17 Fernando Perez <fperez@colorado.edu>
1576
1582
1577 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1583 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1578 instances with no __init__. After a crash report by Norbert Nemec
1584 instances with no __init__. After a crash report by Norbert Nemec
1579 <Norbert-AT-nemec-online.de>.
1585 <Norbert-AT-nemec-online.de>.
1580
1586
1581 2005-01-14 Fernando Perez <fperez@colorado.edu>
1587 2005-01-14 Fernando Perez <fperez@colorado.edu>
1582
1588
1583 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1589 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1584 names for verbose exceptions, when multiple dotted names and the
1590 names for verbose exceptions, when multiple dotted names and the
1585 'parent' object were present on the same line.
1591 'parent' object were present on the same line.
1586
1592
1587 2005-01-11 Fernando Perez <fperez@colorado.edu>
1593 2005-01-11 Fernando Perez <fperez@colorado.edu>
1588
1594
1589 * IPython/genutils.py (flag_calls): new utility to trap and flag
1595 * IPython/genutils.py (flag_calls): new utility to trap and flag
1590 calls in functions. I need it to clean up matplotlib support.
1596 calls in functions. I need it to clean up matplotlib support.
1591 Also removed some deprecated code in genutils.
1597 Also removed some deprecated code in genutils.
1592
1598
1593 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1599 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1594 that matplotlib scripts called with %run, which don't call show()
1600 that matplotlib scripts called with %run, which don't call show()
1595 themselves, still have their plotting windows open.
1601 themselves, still have their plotting windows open.
1596
1602
1597 2005-01-05 Fernando Perez <fperez@colorado.edu>
1603 2005-01-05 Fernando Perez <fperez@colorado.edu>
1598
1604
1599 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1605 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1600 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1606 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1601
1607
1602 2004-12-19 Fernando Perez <fperez@colorado.edu>
1608 2004-12-19 Fernando Perez <fperez@colorado.edu>
1603
1609
1604 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1610 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1605 parent_runcode, which was an eyesore. The same result can be
1611 parent_runcode, which was an eyesore. The same result can be
1606 obtained with Python's regular superclass mechanisms.
1612 obtained with Python's regular superclass mechanisms.
1607
1613
1608 2004-12-17 Fernando Perez <fperez@colorado.edu>
1614 2004-12-17 Fernando Perez <fperez@colorado.edu>
1609
1615
1610 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1616 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1611 reported by Prabhu.
1617 reported by Prabhu.
1612 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1618 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1613 sys.stderr) instead of explicitly calling sys.stderr. This helps
1619 sys.stderr) instead of explicitly calling sys.stderr. This helps
1614 maintain our I/O abstractions clean, for future GUI embeddings.
1620 maintain our I/O abstractions clean, for future GUI embeddings.
1615
1621
1616 * IPython/genutils.py (info): added new utility for sys.stderr
1622 * IPython/genutils.py (info): added new utility for sys.stderr
1617 unified info message handling (thin wrapper around warn()).
1623 unified info message handling (thin wrapper around warn()).
1618
1624
1619 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1625 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1620 composite (dotted) names on verbose exceptions.
1626 composite (dotted) names on verbose exceptions.
1621 (VerboseTB.nullrepr): harden against another kind of errors which
1627 (VerboseTB.nullrepr): harden against another kind of errors which
1622 Python's inspect module can trigger, and which were crashing
1628 Python's inspect module can trigger, and which were crashing
1623 IPython. Thanks to a report by Marco Lombardi
1629 IPython. Thanks to a report by Marco Lombardi
1624 <mlombard-AT-ma010192.hq.eso.org>.
1630 <mlombard-AT-ma010192.hq.eso.org>.
1625
1631
1626 2004-12-13 *** Released version 0.6.6
1632 2004-12-13 *** Released version 0.6.6
1627
1633
1628 2004-12-12 Fernando Perez <fperez@colorado.edu>
1634 2004-12-12 Fernando Perez <fperez@colorado.edu>
1629
1635
1630 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1636 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1631 generated by pygtk upon initialization if it was built without
1637 generated by pygtk upon initialization if it was built without
1632 threads (for matplotlib users). After a crash reported by
1638 threads (for matplotlib users). After a crash reported by
1633 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1639 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1634
1640
1635 * IPython/ipmaker.py (make_IPython): fix small bug in the
1641 * IPython/ipmaker.py (make_IPython): fix small bug in the
1636 import_some parameter for multiple imports.
1642 import_some parameter for multiple imports.
1637
1643
1638 * IPython/iplib.py (ipmagic): simplified the interface of
1644 * IPython/iplib.py (ipmagic): simplified the interface of
1639 ipmagic() to take a single string argument, just as it would be
1645 ipmagic() to take a single string argument, just as it would be
1640 typed at the IPython cmd line.
1646 typed at the IPython cmd line.
1641 (ipalias): Added new ipalias() with an interface identical to
1647 (ipalias): Added new ipalias() with an interface identical to
1642 ipmagic(). This completes exposing a pure python interface to the
1648 ipmagic(). This completes exposing a pure python interface to the
1643 alias and magic system, which can be used in loops or more complex
1649 alias and magic system, which can be used in loops or more complex
1644 code where IPython's automatic line mangling is not active.
1650 code where IPython's automatic line mangling is not active.
1645
1651
1646 * IPython/genutils.py (timing): changed interface of timing to
1652 * IPython/genutils.py (timing): changed interface of timing to
1647 simply run code once, which is the most common case. timings()
1653 simply run code once, which is the most common case. timings()
1648 remains unchanged, for the cases where you want multiple runs.
1654 remains unchanged, for the cases where you want multiple runs.
1649
1655
1650 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1656 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1651 bug where Python2.2 crashes with exec'ing code which does not end
1657 bug where Python2.2 crashes with exec'ing code which does not end
1652 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1658 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1653 before.
1659 before.
1654
1660
1655 2004-12-10 Fernando Perez <fperez@colorado.edu>
1661 2004-12-10 Fernando Perez <fperez@colorado.edu>
1656
1662
1657 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1663 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1658 -t to -T, to accomodate the new -t flag in %run (the %run and
1664 -t to -T, to accomodate the new -t flag in %run (the %run and
1659 %prun options are kind of intermixed, and it's not easy to change
1665 %prun options are kind of intermixed, and it's not easy to change
1660 this with the limitations of python's getopt).
1666 this with the limitations of python's getopt).
1661
1667
1662 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1668 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1663 the execution of scripts. It's not as fine-tuned as timeit.py,
1669 the execution of scripts. It's not as fine-tuned as timeit.py,
1664 but it works from inside ipython (and under 2.2, which lacks
1670 but it works from inside ipython (and under 2.2, which lacks
1665 timeit.py). Optionally a number of runs > 1 can be given for
1671 timeit.py). Optionally a number of runs > 1 can be given for
1666 timing very short-running code.
1672 timing very short-running code.
1667
1673
1668 * IPython/genutils.py (uniq_stable): new routine which returns a
1674 * IPython/genutils.py (uniq_stable): new routine which returns a
1669 list of unique elements in any iterable, but in stable order of
1675 list of unique elements in any iterable, but in stable order of
1670 appearance. I needed this for the ultraTB fixes, and it's a handy
1676 appearance. I needed this for the ultraTB fixes, and it's a handy
1671 utility.
1677 utility.
1672
1678
1673 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1679 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1674 dotted names in Verbose exceptions. This had been broken since
1680 dotted names in Verbose exceptions. This had been broken since
1675 the very start, now x.y will properly be printed in a Verbose
1681 the very start, now x.y will properly be printed in a Verbose
1676 traceback, instead of x being shown and y appearing always as an
1682 traceback, instead of x being shown and y appearing always as an
1677 'undefined global'. Getting this to work was a bit tricky,
1683 'undefined global'. Getting this to work was a bit tricky,
1678 because by default python tokenizers are stateless. Saved by
1684 because by default python tokenizers are stateless. Saved by
1679 python's ability to easily add a bit of state to an arbitrary
1685 python's ability to easily add a bit of state to an arbitrary
1680 function (without needing to build a full-blown callable object).
1686 function (without needing to build a full-blown callable object).
1681
1687
1682 Also big cleanup of this code, which had horrendous runtime
1688 Also big cleanup of this code, which had horrendous runtime
1683 lookups of zillions of attributes for colorization. Moved all
1689 lookups of zillions of attributes for colorization. Moved all
1684 this code into a few templates, which make it cleaner and quicker.
1690 this code into a few templates, which make it cleaner and quicker.
1685
1691
1686 Printout quality was also improved for Verbose exceptions: one
1692 Printout quality was also improved for Verbose exceptions: one
1687 variable per line, and memory addresses are printed (this can be
1693 variable per line, and memory addresses are printed (this can be
1688 quite handy in nasty debugging situations, which is what Verbose
1694 quite handy in nasty debugging situations, which is what Verbose
1689 is for).
1695 is for).
1690
1696
1691 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1697 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1692 the command line as scripts to be loaded by embedded instances.
1698 the command line as scripts to be loaded by embedded instances.
1693 Doing so has the potential for an infinite recursion if there are
1699 Doing so has the potential for an infinite recursion if there are
1694 exceptions thrown in the process. This fixes a strange crash
1700 exceptions thrown in the process. This fixes a strange crash
1695 reported by Philippe MULLER <muller-AT-irit.fr>.
1701 reported by Philippe MULLER <muller-AT-irit.fr>.
1696
1702
1697 2004-12-09 Fernando Perez <fperez@colorado.edu>
1703 2004-12-09 Fernando Perez <fperez@colorado.edu>
1698
1704
1699 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1705 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1700 to reflect new names in matplotlib, which now expose the
1706 to reflect new names in matplotlib, which now expose the
1701 matlab-compatible interface via a pylab module instead of the
1707 matlab-compatible interface via a pylab module instead of the
1702 'matlab' name. The new code is backwards compatible, so users of
1708 'matlab' name. The new code is backwards compatible, so users of
1703 all matplotlib versions are OK. Patch by J. Hunter.
1709 all matplotlib versions are OK. Patch by J. Hunter.
1704
1710
1705 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1711 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1706 of __init__ docstrings for instances (class docstrings are already
1712 of __init__ docstrings for instances (class docstrings are already
1707 automatically printed). Instances with customized docstrings
1713 automatically printed). Instances with customized docstrings
1708 (indep. of the class) are also recognized and all 3 separate
1714 (indep. of the class) are also recognized and all 3 separate
1709 docstrings are printed (instance, class, constructor). After some
1715 docstrings are printed (instance, class, constructor). After some
1710 comments/suggestions by J. Hunter.
1716 comments/suggestions by J. Hunter.
1711
1717
1712 2004-12-05 Fernando Perez <fperez@colorado.edu>
1718 2004-12-05 Fernando Perez <fperez@colorado.edu>
1713
1719
1714 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1720 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1715 warnings when tab-completion fails and triggers an exception.
1721 warnings when tab-completion fails and triggers an exception.
1716
1722
1717 2004-12-03 Fernando Perez <fperez@colorado.edu>
1723 2004-12-03 Fernando Perez <fperez@colorado.edu>
1718
1724
1719 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1725 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1720 be triggered when using 'run -p'. An incorrect option flag was
1726 be triggered when using 'run -p'. An incorrect option flag was
1721 being set ('d' instead of 'D').
1727 being set ('d' instead of 'D').
1722 (manpage): fix missing escaped \- sign.
1728 (manpage): fix missing escaped \- sign.
1723
1729
1724 2004-11-30 *** Released version 0.6.5
1730 2004-11-30 *** Released version 0.6.5
1725
1731
1726 2004-11-30 Fernando Perez <fperez@colorado.edu>
1732 2004-11-30 Fernando Perez <fperez@colorado.edu>
1727
1733
1728 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1734 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1729 setting with -d option.
1735 setting with -d option.
1730
1736
1731 * setup.py (docfiles): Fix problem where the doc glob I was using
1737 * setup.py (docfiles): Fix problem where the doc glob I was using
1732 was COMPLETELY BROKEN. It was giving the right files by pure
1738 was COMPLETELY BROKEN. It was giving the right files by pure
1733 accident, but failed once I tried to include ipython.el. Note:
1739 accident, but failed once I tried to include ipython.el. Note:
1734 glob() does NOT allow you to do exclusion on multiple endings!
1740 glob() does NOT allow you to do exclusion on multiple endings!
1735
1741
1736 2004-11-29 Fernando Perez <fperez@colorado.edu>
1742 2004-11-29 Fernando Perez <fperez@colorado.edu>
1737
1743
1738 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1744 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1739 the manpage as the source. Better formatting & consistency.
1745 the manpage as the source. Better formatting & consistency.
1740
1746
1741 * IPython/Magic.py (magic_run): Added new -d option, to run
1747 * IPython/Magic.py (magic_run): Added new -d option, to run
1742 scripts under the control of the python pdb debugger. Note that
1748 scripts under the control of the python pdb debugger. Note that
1743 this required changing the %prun option -d to -D, to avoid a clash
1749 this required changing the %prun option -d to -D, to avoid a clash
1744 (since %run must pass options to %prun, and getopt is too dumb to
1750 (since %run must pass options to %prun, and getopt is too dumb to
1745 handle options with string values with embedded spaces). Thanks
1751 handle options with string values with embedded spaces). Thanks
1746 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1752 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1747 (magic_who_ls): added type matching to %who and %whos, so that one
1753 (magic_who_ls): added type matching to %who and %whos, so that one
1748 can filter their output to only include variables of certain
1754 can filter their output to only include variables of certain
1749 types. Another suggestion by Matthew.
1755 types. Another suggestion by Matthew.
1750 (magic_whos): Added memory summaries in kb and Mb for arrays.
1756 (magic_whos): Added memory summaries in kb and Mb for arrays.
1751 (magic_who): Improve formatting (break lines every 9 vars).
1757 (magic_who): Improve formatting (break lines every 9 vars).
1752
1758
1753 2004-11-28 Fernando Perez <fperez@colorado.edu>
1759 2004-11-28 Fernando Perez <fperez@colorado.edu>
1754
1760
1755 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1761 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1756 cache when empty lines were present.
1762 cache when empty lines were present.
1757
1763
1758 2004-11-24 Fernando Perez <fperez@colorado.edu>
1764 2004-11-24 Fernando Perez <fperez@colorado.edu>
1759
1765
1760 * IPython/usage.py (__doc__): document the re-activated threading
1766 * IPython/usage.py (__doc__): document the re-activated threading
1761 options for WX and GTK.
1767 options for WX and GTK.
1762
1768
1763 2004-11-23 Fernando Perez <fperez@colorado.edu>
1769 2004-11-23 Fernando Perez <fperez@colorado.edu>
1764
1770
1765 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1771 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1766 the -wthread and -gthread options, along with a new -tk one to try
1772 the -wthread and -gthread options, along with a new -tk one to try
1767 and coordinate Tk threading with wx/gtk. The tk support is very
1773 and coordinate Tk threading with wx/gtk. The tk support is very
1768 platform dependent, since it seems to require Tcl and Tk to be
1774 platform dependent, since it seems to require Tcl and Tk to be
1769 built with threads (Fedora1/2 appears NOT to have it, but in
1775 built with threads (Fedora1/2 appears NOT to have it, but in
1770 Prabhu's Debian boxes it works OK). But even with some Tk
1776 Prabhu's Debian boxes it works OK). But even with some Tk
1771 limitations, this is a great improvement.
1777 limitations, this is a great improvement.
1772
1778
1773 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1779 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1774 info in user prompts. Patch by Prabhu.
1780 info in user prompts. Patch by Prabhu.
1775
1781
1776 2004-11-18 Fernando Perez <fperez@colorado.edu>
1782 2004-11-18 Fernando Perez <fperez@colorado.edu>
1777
1783
1778 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1784 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1779 EOFErrors and bail, to avoid infinite loops if a non-terminating
1785 EOFErrors and bail, to avoid infinite loops if a non-terminating
1780 file is fed into ipython. Patch submitted in issue 19 by user,
1786 file is fed into ipython. Patch submitted in issue 19 by user,
1781 many thanks.
1787 many thanks.
1782
1788
1783 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1789 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1784 autoquote/parens in continuation prompts, which can cause lots of
1790 autoquote/parens in continuation prompts, which can cause lots of
1785 problems. Closes roundup issue 20.
1791 problems. Closes roundup issue 20.
1786
1792
1787 2004-11-17 Fernando Perez <fperez@colorado.edu>
1793 2004-11-17 Fernando Perez <fperez@colorado.edu>
1788
1794
1789 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1795 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1790 reported as debian bug #280505. I'm not sure my local changelog
1796 reported as debian bug #280505. I'm not sure my local changelog
1791 entry has the proper debian format (Jack?).
1797 entry has the proper debian format (Jack?).
1792
1798
1793 2004-11-08 *** Released version 0.6.4
1799 2004-11-08 *** Released version 0.6.4
1794
1800
1795 2004-11-08 Fernando Perez <fperez@colorado.edu>
1801 2004-11-08 Fernando Perez <fperez@colorado.edu>
1796
1802
1797 * IPython/iplib.py (init_readline): Fix exit message for Windows
1803 * IPython/iplib.py (init_readline): Fix exit message for Windows
1798 when readline is active. Thanks to a report by Eric Jones
1804 when readline is active. Thanks to a report by Eric Jones
1799 <eric-AT-enthought.com>.
1805 <eric-AT-enthought.com>.
1800
1806
1801 2004-11-07 Fernando Perez <fperez@colorado.edu>
1807 2004-11-07 Fernando Perez <fperez@colorado.edu>
1802
1808
1803 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1809 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1804 sometimes seen by win2k/cygwin users.
1810 sometimes seen by win2k/cygwin users.
1805
1811
1806 2004-11-06 Fernando Perez <fperez@colorado.edu>
1812 2004-11-06 Fernando Perez <fperez@colorado.edu>
1807
1813
1808 * IPython/iplib.py (interact): Change the handling of %Exit from
1814 * IPython/iplib.py (interact): Change the handling of %Exit from
1809 trying to propagate a SystemExit to an internal ipython flag.
1815 trying to propagate a SystemExit to an internal ipython flag.
1810 This is less elegant than using Python's exception mechanism, but
1816 This is less elegant than using Python's exception mechanism, but
1811 I can't get that to work reliably with threads, so under -pylab
1817 I can't get that to work reliably with threads, so under -pylab
1812 %Exit was hanging IPython. Cross-thread exception handling is
1818 %Exit was hanging IPython. Cross-thread exception handling is
1813 really a bitch. Thaks to a bug report by Stephen Walton
1819 really a bitch. Thaks to a bug report by Stephen Walton
1814 <stephen.walton-AT-csun.edu>.
1820 <stephen.walton-AT-csun.edu>.
1815
1821
1816 2004-11-04 Fernando Perez <fperez@colorado.edu>
1822 2004-11-04 Fernando Perez <fperez@colorado.edu>
1817
1823
1818 * IPython/iplib.py (raw_input_original): store a pointer to the
1824 * IPython/iplib.py (raw_input_original): store a pointer to the
1819 true raw_input to harden against code which can modify it
1825 true raw_input to harden against code which can modify it
1820 (wx.py.PyShell does this and would otherwise crash ipython).
1826 (wx.py.PyShell does this and would otherwise crash ipython).
1821 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1827 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1822
1828
1823 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1829 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1824 Ctrl-C problem, which does not mess up the input line.
1830 Ctrl-C problem, which does not mess up the input line.
1825
1831
1826 2004-11-03 Fernando Perez <fperez@colorado.edu>
1832 2004-11-03 Fernando Perez <fperez@colorado.edu>
1827
1833
1828 * IPython/Release.py: Changed licensing to BSD, in all files.
1834 * IPython/Release.py: Changed licensing to BSD, in all files.
1829 (name): lowercase name for tarball/RPM release.
1835 (name): lowercase name for tarball/RPM release.
1830
1836
1831 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1837 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1832 use throughout ipython.
1838 use throughout ipython.
1833
1839
1834 * IPython/Magic.py (Magic._ofind): Switch to using the new
1840 * IPython/Magic.py (Magic._ofind): Switch to using the new
1835 OInspect.getdoc() function.
1841 OInspect.getdoc() function.
1836
1842
1837 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1843 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1838 of the line currently being canceled via Ctrl-C. It's extremely
1844 of the line currently being canceled via Ctrl-C. It's extremely
1839 ugly, but I don't know how to do it better (the problem is one of
1845 ugly, but I don't know how to do it better (the problem is one of
1840 handling cross-thread exceptions).
1846 handling cross-thread exceptions).
1841
1847
1842 2004-10-28 Fernando Perez <fperez@colorado.edu>
1848 2004-10-28 Fernando Perez <fperez@colorado.edu>
1843
1849
1844 * IPython/Shell.py (signal_handler): add signal handlers to trap
1850 * IPython/Shell.py (signal_handler): add signal handlers to trap
1845 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1851 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1846 report by Francesc Alted.
1852 report by Francesc Alted.
1847
1853
1848 2004-10-21 Fernando Perez <fperez@colorado.edu>
1854 2004-10-21 Fernando Perez <fperez@colorado.edu>
1849
1855
1850 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1856 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1851 to % for pysh syntax extensions.
1857 to % for pysh syntax extensions.
1852
1858
1853 2004-10-09 Fernando Perez <fperez@colorado.edu>
1859 2004-10-09 Fernando Perez <fperez@colorado.edu>
1854
1860
1855 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1861 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1856 arrays to print a more useful summary, without calling str(arr).
1862 arrays to print a more useful summary, without calling str(arr).
1857 This avoids the problem of extremely lengthy computations which
1863 This avoids the problem of extremely lengthy computations which
1858 occur if arr is large, and appear to the user as a system lockup
1864 occur if arr is large, and appear to the user as a system lockup
1859 with 100% cpu activity. After a suggestion by Kristian Sandberg
1865 with 100% cpu activity. After a suggestion by Kristian Sandberg
1860 <Kristian.Sandberg@colorado.edu>.
1866 <Kristian.Sandberg@colorado.edu>.
1861 (Magic.__init__): fix bug in global magic escapes not being
1867 (Magic.__init__): fix bug in global magic escapes not being
1862 correctly set.
1868 correctly set.
1863
1869
1864 2004-10-08 Fernando Perez <fperez@colorado.edu>
1870 2004-10-08 Fernando Perez <fperez@colorado.edu>
1865
1871
1866 * IPython/Magic.py (__license__): change to absolute imports of
1872 * IPython/Magic.py (__license__): change to absolute imports of
1867 ipython's own internal packages, to start adapting to the absolute
1873 ipython's own internal packages, to start adapting to the absolute
1868 import requirement of PEP-328.
1874 import requirement of PEP-328.
1869
1875
1870 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1876 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1871 files, and standardize author/license marks through the Release
1877 files, and standardize author/license marks through the Release
1872 module instead of having per/file stuff (except for files with
1878 module instead of having per/file stuff (except for files with
1873 particular licenses, like the MIT/PSF-licensed codes).
1879 particular licenses, like the MIT/PSF-licensed codes).
1874
1880
1875 * IPython/Debugger.py: remove dead code for python 2.1
1881 * IPython/Debugger.py: remove dead code for python 2.1
1876
1882
1877 2004-10-04 Fernando Perez <fperez@colorado.edu>
1883 2004-10-04 Fernando Perez <fperez@colorado.edu>
1878
1884
1879 * IPython/iplib.py (ipmagic): New function for accessing magics
1885 * IPython/iplib.py (ipmagic): New function for accessing magics
1880 via a normal python function call.
1886 via a normal python function call.
1881
1887
1882 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1888 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1883 from '@' to '%', to accomodate the new @decorator syntax of python
1889 from '@' to '%', to accomodate the new @decorator syntax of python
1884 2.4.
1890 2.4.
1885
1891
1886 2004-09-29 Fernando Perez <fperez@colorado.edu>
1892 2004-09-29 Fernando Perez <fperez@colorado.edu>
1887
1893
1888 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1894 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1889 matplotlib.use to prevent running scripts which try to switch
1895 matplotlib.use to prevent running scripts which try to switch
1890 interactive backends from within ipython. This will just crash
1896 interactive backends from within ipython. This will just crash
1891 the python interpreter, so we can't allow it (but a detailed error
1897 the python interpreter, so we can't allow it (but a detailed error
1892 is given to the user).
1898 is given to the user).
1893
1899
1894 2004-09-28 Fernando Perez <fperez@colorado.edu>
1900 2004-09-28 Fernando Perez <fperez@colorado.edu>
1895
1901
1896 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1902 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1897 matplotlib-related fixes so that using @run with non-matplotlib
1903 matplotlib-related fixes so that using @run with non-matplotlib
1898 scripts doesn't pop up spurious plot windows. This requires
1904 scripts doesn't pop up spurious plot windows. This requires
1899 matplotlib >= 0.63, where I had to make some changes as well.
1905 matplotlib >= 0.63, where I had to make some changes as well.
1900
1906
1901 * IPython/ipmaker.py (make_IPython): update version requirement to
1907 * IPython/ipmaker.py (make_IPython): update version requirement to
1902 python 2.2.
1908 python 2.2.
1903
1909
1904 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1910 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1905 banner arg for embedded customization.
1911 banner arg for embedded customization.
1906
1912
1907 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1913 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1908 explicit uses of __IP as the IPython's instance name. Now things
1914 explicit uses of __IP as the IPython's instance name. Now things
1909 are properly handled via the shell.name value. The actual code
1915 are properly handled via the shell.name value. The actual code
1910 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1916 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1911 is much better than before. I'll clean things completely when the
1917 is much better than before. I'll clean things completely when the
1912 magic stuff gets a real overhaul.
1918 magic stuff gets a real overhaul.
1913
1919
1914 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1920 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1915 minor changes to debian dir.
1921 minor changes to debian dir.
1916
1922
1917 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1923 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1918 pointer to the shell itself in the interactive namespace even when
1924 pointer to the shell itself in the interactive namespace even when
1919 a user-supplied dict is provided. This is needed for embedding
1925 a user-supplied dict is provided. This is needed for embedding
1920 purposes (found by tests with Michel Sanner).
1926 purposes (found by tests with Michel Sanner).
1921
1927
1922 2004-09-27 Fernando Perez <fperez@colorado.edu>
1928 2004-09-27 Fernando Perez <fperez@colorado.edu>
1923
1929
1924 * IPython/UserConfig/ipythonrc: remove []{} from
1930 * IPython/UserConfig/ipythonrc: remove []{} from
1925 readline_remove_delims, so that things like [modname.<TAB> do
1931 readline_remove_delims, so that things like [modname.<TAB> do
1926 proper completion. This disables [].TAB, but that's a less common
1932 proper completion. This disables [].TAB, but that's a less common
1927 case than module names in list comprehensions, for example.
1933 case than module names in list comprehensions, for example.
1928 Thanks to a report by Andrea Riciputi.
1934 Thanks to a report by Andrea Riciputi.
1929
1935
1930 2004-09-09 Fernando Perez <fperez@colorado.edu>
1936 2004-09-09 Fernando Perez <fperez@colorado.edu>
1931
1937
1932 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1938 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1933 blocking problems in win32 and osx. Fix by John.
1939 blocking problems in win32 and osx. Fix by John.
1934
1940
1935 2004-09-08 Fernando Perez <fperez@colorado.edu>
1941 2004-09-08 Fernando Perez <fperez@colorado.edu>
1936
1942
1937 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1943 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1938 for Win32 and OSX. Fix by John Hunter.
1944 for Win32 and OSX. Fix by John Hunter.
1939
1945
1940 2004-08-30 *** Released version 0.6.3
1946 2004-08-30 *** Released version 0.6.3
1941
1947
1942 2004-08-30 Fernando Perez <fperez@colorado.edu>
1948 2004-08-30 Fernando Perez <fperez@colorado.edu>
1943
1949
1944 * setup.py (isfile): Add manpages to list of dependent files to be
1950 * setup.py (isfile): Add manpages to list of dependent files to be
1945 updated.
1951 updated.
1946
1952
1947 2004-08-27 Fernando Perez <fperez@colorado.edu>
1953 2004-08-27 Fernando Perez <fperez@colorado.edu>
1948
1954
1949 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1955 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1950 for now. They don't really work with standalone WX/GTK code
1956 for now. They don't really work with standalone WX/GTK code
1951 (though matplotlib IS working fine with both of those backends).
1957 (though matplotlib IS working fine with both of those backends).
1952 This will neeed much more testing. I disabled most things with
1958 This will neeed much more testing. I disabled most things with
1953 comments, so turning it back on later should be pretty easy.
1959 comments, so turning it back on later should be pretty easy.
1954
1960
1955 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1961 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1956 autocalling of expressions like r'foo', by modifying the line
1962 autocalling of expressions like r'foo', by modifying the line
1957 split regexp. Closes
1963 split regexp. Closes
1958 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1964 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1959 Riley <ipythonbugs-AT-sabi.net>.
1965 Riley <ipythonbugs-AT-sabi.net>.
1960 (InteractiveShell.mainloop): honor --nobanner with banner
1966 (InteractiveShell.mainloop): honor --nobanner with banner
1961 extensions.
1967 extensions.
1962
1968
1963 * IPython/Shell.py: Significant refactoring of all classes, so
1969 * IPython/Shell.py: Significant refactoring of all classes, so
1964 that we can really support ALL matplotlib backends and threading
1970 that we can really support ALL matplotlib backends and threading
1965 models (John spotted a bug with Tk which required this). Now we
1971 models (John spotted a bug with Tk which required this). Now we
1966 should support single-threaded, WX-threads and GTK-threads, both
1972 should support single-threaded, WX-threads and GTK-threads, both
1967 for generic code and for matplotlib.
1973 for generic code and for matplotlib.
1968
1974
1969 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1975 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1970 -pylab, to simplify things for users. Will also remove the pylab
1976 -pylab, to simplify things for users. Will also remove the pylab
1971 profile, since now all of matplotlib configuration is directly
1977 profile, since now all of matplotlib configuration is directly
1972 handled here. This also reduces startup time.
1978 handled here. This also reduces startup time.
1973
1979
1974 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1980 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1975 shell wasn't being correctly called. Also in IPShellWX.
1981 shell wasn't being correctly called. Also in IPShellWX.
1976
1982
1977 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1983 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1978 fine-tune banner.
1984 fine-tune banner.
1979
1985
1980 * IPython/numutils.py (spike): Deprecate these spike functions,
1986 * IPython/numutils.py (spike): Deprecate these spike functions,
1981 delete (long deprecated) gnuplot_exec handler.
1987 delete (long deprecated) gnuplot_exec handler.
1982
1988
1983 2004-08-26 Fernando Perez <fperez@colorado.edu>
1989 2004-08-26 Fernando Perez <fperez@colorado.edu>
1984
1990
1985 * ipython.1: Update for threading options, plus some others which
1991 * ipython.1: Update for threading options, plus some others which
1986 were missing.
1992 were missing.
1987
1993
1988 * IPython/ipmaker.py (__call__): Added -wthread option for
1994 * IPython/ipmaker.py (__call__): Added -wthread option for
1989 wxpython thread handling. Make sure threading options are only
1995 wxpython thread handling. Make sure threading options are only
1990 valid at the command line.
1996 valid at the command line.
1991
1997
1992 * scripts/ipython: moved shell selection into a factory function
1998 * scripts/ipython: moved shell selection into a factory function
1993 in Shell.py, to keep the starter script to a minimum.
1999 in Shell.py, to keep the starter script to a minimum.
1994
2000
1995 2004-08-25 Fernando Perez <fperez@colorado.edu>
2001 2004-08-25 Fernando Perez <fperez@colorado.edu>
1996
2002
1997 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2003 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1998 John. Along with some recent changes he made to matplotlib, the
2004 John. Along with some recent changes he made to matplotlib, the
1999 next versions of both systems should work very well together.
2005 next versions of both systems should work very well together.
2000
2006
2001 2004-08-24 Fernando Perez <fperez@colorado.edu>
2007 2004-08-24 Fernando Perez <fperez@colorado.edu>
2002
2008
2003 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2009 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2004 tried to switch the profiling to using hotshot, but I'm getting
2010 tried to switch the profiling to using hotshot, but I'm getting
2005 strange errors from prof.runctx() there. I may be misreading the
2011 strange errors from prof.runctx() there. I may be misreading the
2006 docs, but it looks weird. For now the profiling code will
2012 docs, but it looks weird. For now the profiling code will
2007 continue to use the standard profiler.
2013 continue to use the standard profiler.
2008
2014
2009 2004-08-23 Fernando Perez <fperez@colorado.edu>
2015 2004-08-23 Fernando Perez <fperez@colorado.edu>
2010
2016
2011 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2017 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2012 threaded shell, by John Hunter. It's not quite ready yet, but
2018 threaded shell, by John Hunter. It's not quite ready yet, but
2013 close.
2019 close.
2014
2020
2015 2004-08-22 Fernando Perez <fperez@colorado.edu>
2021 2004-08-22 Fernando Perez <fperez@colorado.edu>
2016
2022
2017 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2023 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2018 in Magic and ultraTB.
2024 in Magic and ultraTB.
2019
2025
2020 * ipython.1: document threading options in manpage.
2026 * ipython.1: document threading options in manpage.
2021
2027
2022 * scripts/ipython: Changed name of -thread option to -gthread,
2028 * scripts/ipython: Changed name of -thread option to -gthread,
2023 since this is GTK specific. I want to leave the door open for a
2029 since this is GTK specific. I want to leave the door open for a
2024 -wthread option for WX, which will most likely be necessary. This
2030 -wthread option for WX, which will most likely be necessary. This
2025 change affects usage and ipmaker as well.
2031 change affects usage and ipmaker as well.
2026
2032
2027 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2033 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2028 handle the matplotlib shell issues. Code by John Hunter
2034 handle the matplotlib shell issues. Code by John Hunter
2029 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2035 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2030 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2036 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2031 broken (and disabled for end users) for now, but it puts the
2037 broken (and disabled for end users) for now, but it puts the
2032 infrastructure in place.
2038 infrastructure in place.
2033
2039
2034 2004-08-21 Fernando Perez <fperez@colorado.edu>
2040 2004-08-21 Fernando Perez <fperez@colorado.edu>
2035
2041
2036 * ipythonrc-pylab: Add matplotlib support.
2042 * ipythonrc-pylab: Add matplotlib support.
2037
2043
2038 * matplotlib_config.py: new files for matplotlib support, part of
2044 * matplotlib_config.py: new files for matplotlib support, part of
2039 the pylab profile.
2045 the pylab profile.
2040
2046
2041 * IPython/usage.py (__doc__): documented the threading options.
2047 * IPython/usage.py (__doc__): documented the threading options.
2042
2048
2043 2004-08-20 Fernando Perez <fperez@colorado.edu>
2049 2004-08-20 Fernando Perez <fperez@colorado.edu>
2044
2050
2045 * ipython: Modified the main calling routine to handle the -thread
2051 * ipython: Modified the main calling routine to handle the -thread
2046 and -mpthread options. This needs to be done as a top-level hack,
2052 and -mpthread options. This needs to be done as a top-level hack,
2047 because it determines which class to instantiate for IPython
2053 because it determines which class to instantiate for IPython
2048 itself.
2054 itself.
2049
2055
2050 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2056 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2051 classes to support multithreaded GTK operation without blocking,
2057 classes to support multithreaded GTK operation without blocking,
2052 and matplotlib with all backends. This is a lot of still very
2058 and matplotlib with all backends. This is a lot of still very
2053 experimental code, and threads are tricky. So it may still have a
2059 experimental code, and threads are tricky. So it may still have a
2054 few rough edges... This code owes a lot to
2060 few rough edges... This code owes a lot to
2055 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2061 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2056 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2062 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2057 to John Hunter for all the matplotlib work.
2063 to John Hunter for all the matplotlib work.
2058
2064
2059 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2065 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2060 options for gtk thread and matplotlib support.
2066 options for gtk thread and matplotlib support.
2061
2067
2062 2004-08-16 Fernando Perez <fperez@colorado.edu>
2068 2004-08-16 Fernando Perez <fperez@colorado.edu>
2063
2069
2064 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2070 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2065 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2071 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2066 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2072 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2067
2073
2068 2004-08-11 Fernando Perez <fperez@colorado.edu>
2074 2004-08-11 Fernando Perez <fperez@colorado.edu>
2069
2075
2070 * setup.py (isfile): Fix build so documentation gets updated for
2076 * setup.py (isfile): Fix build so documentation gets updated for
2071 rpms (it was only done for .tgz builds).
2077 rpms (it was only done for .tgz builds).
2072
2078
2073 2004-08-10 Fernando Perez <fperez@colorado.edu>
2079 2004-08-10 Fernando Perez <fperez@colorado.edu>
2074
2080
2075 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2081 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2076
2082
2077 * iplib.py : Silence syntax error exceptions in tab-completion.
2083 * iplib.py : Silence syntax error exceptions in tab-completion.
2078
2084
2079 2004-08-05 Fernando Perez <fperez@colorado.edu>
2085 2004-08-05 Fernando Perez <fperez@colorado.edu>
2080
2086
2081 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2087 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2082 'color off' mark for continuation prompts. This was causing long
2088 'color off' mark for continuation prompts. This was causing long
2083 continuation lines to mis-wrap.
2089 continuation lines to mis-wrap.
2084
2090
2085 2004-08-01 Fernando Perez <fperez@colorado.edu>
2091 2004-08-01 Fernando Perez <fperez@colorado.edu>
2086
2092
2087 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2093 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2088 for building ipython to be a parameter. All this is necessary
2094 for building ipython to be a parameter. All this is necessary
2089 right now to have a multithreaded version, but this insane
2095 right now to have a multithreaded version, but this insane
2090 non-design will be cleaned up soon. For now, it's a hack that
2096 non-design will be cleaned up soon. For now, it's a hack that
2091 works.
2097 works.
2092
2098
2093 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2099 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2094 args in various places. No bugs so far, but it's a dangerous
2100 args in various places. No bugs so far, but it's a dangerous
2095 practice.
2101 practice.
2096
2102
2097 2004-07-31 Fernando Perez <fperez@colorado.edu>
2103 2004-07-31 Fernando Perez <fperez@colorado.edu>
2098
2104
2099 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2105 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2100 fix completion of files with dots in their names under most
2106 fix completion of files with dots in their names under most
2101 profiles (pysh was OK because the completion order is different).
2107 profiles (pysh was OK because the completion order is different).
2102
2108
2103 2004-07-27 Fernando Perez <fperez@colorado.edu>
2109 2004-07-27 Fernando Perez <fperez@colorado.edu>
2104
2110
2105 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2111 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2106 keywords manually, b/c the one in keyword.py was removed in python
2112 keywords manually, b/c the one in keyword.py was removed in python
2107 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2113 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2108 This is NOT a bug under python 2.3 and earlier.
2114 This is NOT a bug under python 2.3 and earlier.
2109
2115
2110 2004-07-26 Fernando Perez <fperez@colorado.edu>
2116 2004-07-26 Fernando Perez <fperez@colorado.edu>
2111
2117
2112 * IPython/ultraTB.py (VerboseTB.text): Add another
2118 * IPython/ultraTB.py (VerboseTB.text): Add another
2113 linecache.checkcache() call to try to prevent inspect.py from
2119 linecache.checkcache() call to try to prevent inspect.py from
2114 crashing under python 2.3. I think this fixes
2120 crashing under python 2.3. I think this fixes
2115 http://www.scipy.net/roundup/ipython/issue17.
2121 http://www.scipy.net/roundup/ipython/issue17.
2116
2122
2117 2004-07-26 *** Released version 0.6.2
2123 2004-07-26 *** Released version 0.6.2
2118
2124
2119 2004-07-26 Fernando Perez <fperez@colorado.edu>
2125 2004-07-26 Fernando Perez <fperez@colorado.edu>
2120
2126
2121 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2127 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2122 fail for any number.
2128 fail for any number.
2123 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2129 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2124 empty bookmarks.
2130 empty bookmarks.
2125
2131
2126 2004-07-26 *** Released version 0.6.1
2132 2004-07-26 *** Released version 0.6.1
2127
2133
2128 2004-07-26 Fernando Perez <fperez@colorado.edu>
2134 2004-07-26 Fernando Perez <fperez@colorado.edu>
2129
2135
2130 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2136 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2131
2137
2132 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2138 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2133 escaping '()[]{}' in filenames.
2139 escaping '()[]{}' in filenames.
2134
2140
2135 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2141 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2136 Python 2.2 users who lack a proper shlex.split.
2142 Python 2.2 users who lack a proper shlex.split.
2137
2143
2138 2004-07-19 Fernando Perez <fperez@colorado.edu>
2144 2004-07-19 Fernando Perez <fperez@colorado.edu>
2139
2145
2140 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2146 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2141 for reading readline's init file. I follow the normal chain:
2147 for reading readline's init file. I follow the normal chain:
2142 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2148 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2143 report by Mike Heeter. This closes
2149 report by Mike Heeter. This closes
2144 http://www.scipy.net/roundup/ipython/issue16.
2150 http://www.scipy.net/roundup/ipython/issue16.
2145
2151
2146 2004-07-18 Fernando Perez <fperez@colorado.edu>
2152 2004-07-18 Fernando Perez <fperez@colorado.edu>
2147
2153
2148 * IPython/iplib.py (__init__): Add better handling of '\' under
2154 * IPython/iplib.py (__init__): Add better handling of '\' under
2149 Win32 for filenames. After a patch by Ville.
2155 Win32 for filenames. After a patch by Ville.
2150
2156
2151 2004-07-17 Fernando Perez <fperez@colorado.edu>
2157 2004-07-17 Fernando Perez <fperez@colorado.edu>
2152
2158
2153 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2159 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2154 autocalling would be triggered for 'foo is bar' if foo is
2160 autocalling would be triggered for 'foo is bar' if foo is
2155 callable. I also cleaned up the autocall detection code to use a
2161 callable. I also cleaned up the autocall detection code to use a
2156 regexp, which is faster. Bug reported by Alexander Schmolck.
2162 regexp, which is faster. Bug reported by Alexander Schmolck.
2157
2163
2158 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2164 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2159 '?' in them would confuse the help system. Reported by Alex
2165 '?' in them would confuse the help system. Reported by Alex
2160 Schmolck.
2166 Schmolck.
2161
2167
2162 2004-07-16 Fernando Perez <fperez@colorado.edu>
2168 2004-07-16 Fernando Perez <fperez@colorado.edu>
2163
2169
2164 * IPython/GnuplotInteractive.py (__all__): added plot2.
2170 * IPython/GnuplotInteractive.py (__all__): added plot2.
2165
2171
2166 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2172 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2167 plotting dictionaries, lists or tuples of 1d arrays.
2173 plotting dictionaries, lists or tuples of 1d arrays.
2168
2174
2169 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2175 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2170 optimizations.
2176 optimizations.
2171
2177
2172 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2178 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2173 the information which was there from Janko's original IPP code:
2179 the information which was there from Janko's original IPP code:
2174
2180
2175 03.05.99 20:53 porto.ifm.uni-kiel.de
2181 03.05.99 20:53 porto.ifm.uni-kiel.de
2176 --Started changelog.
2182 --Started changelog.
2177 --make clear do what it say it does
2183 --make clear do what it say it does
2178 --added pretty output of lines from inputcache
2184 --added pretty output of lines from inputcache
2179 --Made Logger a mixin class, simplifies handling of switches
2185 --Made Logger a mixin class, simplifies handling of switches
2180 --Added own completer class. .string<TAB> expands to last history
2186 --Added own completer class. .string<TAB> expands to last history
2181 line which starts with string. The new expansion is also present
2187 line which starts with string. The new expansion is also present
2182 with Ctrl-r from the readline library. But this shows, who this
2188 with Ctrl-r from the readline library. But this shows, who this
2183 can be done for other cases.
2189 can be done for other cases.
2184 --Added convention that all shell functions should accept a
2190 --Added convention that all shell functions should accept a
2185 parameter_string This opens the door for different behaviour for
2191 parameter_string This opens the door for different behaviour for
2186 each function. @cd is a good example of this.
2192 each function. @cd is a good example of this.
2187
2193
2188 04.05.99 12:12 porto.ifm.uni-kiel.de
2194 04.05.99 12:12 porto.ifm.uni-kiel.de
2189 --added logfile rotation
2195 --added logfile rotation
2190 --added new mainloop method which freezes first the namespace
2196 --added new mainloop method which freezes first the namespace
2191
2197
2192 07.05.99 21:24 porto.ifm.uni-kiel.de
2198 07.05.99 21:24 porto.ifm.uni-kiel.de
2193 --added the docreader classes. Now there is a help system.
2199 --added the docreader classes. Now there is a help system.
2194 -This is only a first try. Currently it's not easy to put new
2200 -This is only a first try. Currently it's not easy to put new
2195 stuff in the indices. But this is the way to go. Info would be
2201 stuff in the indices. But this is the way to go. Info would be
2196 better, but HTML is every where and not everybody has an info
2202 better, but HTML is every where and not everybody has an info
2197 system installed and it's not so easy to change html-docs to info.
2203 system installed and it's not so easy to change html-docs to info.
2198 --added global logfile option
2204 --added global logfile option
2199 --there is now a hook for object inspection method pinfo needs to
2205 --there is now a hook for object inspection method pinfo needs to
2200 be provided for this. Can be reached by two '??'.
2206 be provided for this. Can be reached by two '??'.
2201
2207
2202 08.05.99 20:51 porto.ifm.uni-kiel.de
2208 08.05.99 20:51 porto.ifm.uni-kiel.de
2203 --added a README
2209 --added a README
2204 --bug in rc file. Something has changed so functions in the rc
2210 --bug in rc file. Something has changed so functions in the rc
2205 file need to reference the shell and not self. Not clear if it's a
2211 file need to reference the shell and not self. Not clear if it's a
2206 bug or feature.
2212 bug or feature.
2207 --changed rc file for new behavior
2213 --changed rc file for new behavior
2208
2214
2209 2004-07-15 Fernando Perez <fperez@colorado.edu>
2215 2004-07-15 Fernando Perez <fperez@colorado.edu>
2210
2216
2211 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2217 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2212 cache was falling out of sync in bizarre manners when multi-line
2218 cache was falling out of sync in bizarre manners when multi-line
2213 input was present. Minor optimizations and cleanup.
2219 input was present. Minor optimizations and cleanup.
2214
2220
2215 (Logger): Remove old Changelog info for cleanup. This is the
2221 (Logger): Remove old Changelog info for cleanup. This is the
2216 information which was there from Janko's original code:
2222 information which was there from Janko's original code:
2217
2223
2218 Changes to Logger: - made the default log filename a parameter
2224 Changes to Logger: - made the default log filename a parameter
2219
2225
2220 - put a check for lines beginning with !@? in log(). Needed
2226 - put a check for lines beginning with !@? in log(). Needed
2221 (even if the handlers properly log their lines) for mid-session
2227 (even if the handlers properly log their lines) for mid-session
2222 logging activation to work properly. Without this, lines logged
2228 logging activation to work properly. Without this, lines logged
2223 in mid session, which get read from the cache, would end up
2229 in mid session, which get read from the cache, would end up
2224 'bare' (with !@? in the open) in the log. Now they are caught
2230 'bare' (with !@? in the open) in the log. Now they are caught
2225 and prepended with a #.
2231 and prepended with a #.
2226
2232
2227 * IPython/iplib.py (InteractiveShell.init_readline): added check
2233 * IPython/iplib.py (InteractiveShell.init_readline): added check
2228 in case MagicCompleter fails to be defined, so we don't crash.
2234 in case MagicCompleter fails to be defined, so we don't crash.
2229
2235
2230 2004-07-13 Fernando Perez <fperez@colorado.edu>
2236 2004-07-13 Fernando Perez <fperez@colorado.edu>
2231
2237
2232 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2238 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2233 of EPS if the requested filename ends in '.eps'.
2239 of EPS if the requested filename ends in '.eps'.
2234
2240
2235 2004-07-04 Fernando Perez <fperez@colorado.edu>
2241 2004-07-04 Fernando Perez <fperez@colorado.edu>
2236
2242
2237 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2243 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2238 escaping of quotes when calling the shell.
2244 escaping of quotes when calling the shell.
2239
2245
2240 2004-07-02 Fernando Perez <fperez@colorado.edu>
2246 2004-07-02 Fernando Perez <fperez@colorado.edu>
2241
2247
2242 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2248 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2243 gettext not working because we were clobbering '_'. Fixes
2249 gettext not working because we were clobbering '_'. Fixes
2244 http://www.scipy.net/roundup/ipython/issue6.
2250 http://www.scipy.net/roundup/ipython/issue6.
2245
2251
2246 2004-07-01 Fernando Perez <fperez@colorado.edu>
2252 2004-07-01 Fernando Perez <fperez@colorado.edu>
2247
2253
2248 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2254 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2249 into @cd. Patch by Ville.
2255 into @cd. Patch by Ville.
2250
2256
2251 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2257 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2252 new function to store things after ipmaker runs. Patch by Ville.
2258 new function to store things after ipmaker runs. Patch by Ville.
2253 Eventually this will go away once ipmaker is removed and the class
2259 Eventually this will go away once ipmaker is removed and the class
2254 gets cleaned up, but for now it's ok. Key functionality here is
2260 gets cleaned up, but for now it's ok. Key functionality here is
2255 the addition of the persistent storage mechanism, a dict for
2261 the addition of the persistent storage mechanism, a dict for
2256 keeping data across sessions (for now just bookmarks, but more can
2262 keeping data across sessions (for now just bookmarks, but more can
2257 be implemented later).
2263 be implemented later).
2258
2264
2259 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2265 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2260 persistent across sections. Patch by Ville, I modified it
2266 persistent across sections. Patch by Ville, I modified it
2261 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2267 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2262 added a '-l' option to list all bookmarks.
2268 added a '-l' option to list all bookmarks.
2263
2269
2264 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2270 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2265 center for cleanup. Registered with atexit.register(). I moved
2271 center for cleanup. Registered with atexit.register(). I moved
2266 here the old exit_cleanup(). After a patch by Ville.
2272 here the old exit_cleanup(). After a patch by Ville.
2267
2273
2268 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2274 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2269 characters in the hacked shlex_split for python 2.2.
2275 characters in the hacked shlex_split for python 2.2.
2270
2276
2271 * IPython/iplib.py (file_matches): more fixes to filenames with
2277 * IPython/iplib.py (file_matches): more fixes to filenames with
2272 whitespace in them. It's not perfect, but limitations in python's
2278 whitespace in them. It's not perfect, but limitations in python's
2273 readline make it impossible to go further.
2279 readline make it impossible to go further.
2274
2280
2275 2004-06-29 Fernando Perez <fperez@colorado.edu>
2281 2004-06-29 Fernando Perez <fperez@colorado.edu>
2276
2282
2277 * IPython/iplib.py (file_matches): escape whitespace correctly in
2283 * IPython/iplib.py (file_matches): escape whitespace correctly in
2278 filename completions. Bug reported by Ville.
2284 filename completions. Bug reported by Ville.
2279
2285
2280 2004-06-28 Fernando Perez <fperez@colorado.edu>
2286 2004-06-28 Fernando Perez <fperez@colorado.edu>
2281
2287
2282 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2288 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2283 the history file will be called 'history-PROFNAME' (or just
2289 the history file will be called 'history-PROFNAME' (or just
2284 'history' if no profile is loaded). I was getting annoyed at
2290 'history' if no profile is loaded). I was getting annoyed at
2285 getting my Numerical work history clobbered by pysh sessions.
2291 getting my Numerical work history clobbered by pysh sessions.
2286
2292
2287 * IPython/iplib.py (InteractiveShell.__init__): Internal
2293 * IPython/iplib.py (InteractiveShell.__init__): Internal
2288 getoutputerror() function so that we can honor the system_verbose
2294 getoutputerror() function so that we can honor the system_verbose
2289 flag for _all_ system calls. I also added escaping of #
2295 flag for _all_ system calls. I also added escaping of #
2290 characters here to avoid confusing Itpl.
2296 characters here to avoid confusing Itpl.
2291
2297
2292 * IPython/Magic.py (shlex_split): removed call to shell in
2298 * IPython/Magic.py (shlex_split): removed call to shell in
2293 parse_options and replaced it with shlex.split(). The annoying
2299 parse_options and replaced it with shlex.split(). The annoying
2294 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2300 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2295 to backport it from 2.3, with several frail hacks (the shlex
2301 to backport it from 2.3, with several frail hacks (the shlex
2296 module is rather limited in 2.2). Thanks to a suggestion by Ville
2302 module is rather limited in 2.2). Thanks to a suggestion by Ville
2297 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2303 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2298 problem.
2304 problem.
2299
2305
2300 (Magic.magic_system_verbose): new toggle to print the actual
2306 (Magic.magic_system_verbose): new toggle to print the actual
2301 system calls made by ipython. Mainly for debugging purposes.
2307 system calls made by ipython. Mainly for debugging purposes.
2302
2308
2303 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2309 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2304 doesn't support persistence. Reported (and fix suggested) by
2310 doesn't support persistence. Reported (and fix suggested) by
2305 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2311 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2306
2312
2307 2004-06-26 Fernando Perez <fperez@colorado.edu>
2313 2004-06-26 Fernando Perez <fperez@colorado.edu>
2308
2314
2309 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2315 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2310 continue prompts.
2316 continue prompts.
2311
2317
2312 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2318 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2313 function (basically a big docstring) and a few more things here to
2319 function (basically a big docstring) and a few more things here to
2314 speedup startup. pysh.py is now very lightweight. We want because
2320 speedup startup. pysh.py is now very lightweight. We want because
2315 it gets execfile'd, while InterpreterExec gets imported, so
2321 it gets execfile'd, while InterpreterExec gets imported, so
2316 byte-compilation saves time.
2322 byte-compilation saves time.
2317
2323
2318 2004-06-25 Fernando Perez <fperez@colorado.edu>
2324 2004-06-25 Fernando Perez <fperez@colorado.edu>
2319
2325
2320 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2326 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2321 -NUM', which was recently broken.
2327 -NUM', which was recently broken.
2322
2328
2323 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2329 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2324 in multi-line input (but not !!, which doesn't make sense there).
2330 in multi-line input (but not !!, which doesn't make sense there).
2325
2331
2326 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2332 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2327 It's just too useful, and people can turn it off in the less
2333 It's just too useful, and people can turn it off in the less
2328 common cases where it's a problem.
2334 common cases where it's a problem.
2329
2335
2330 2004-06-24 Fernando Perez <fperez@colorado.edu>
2336 2004-06-24 Fernando Perez <fperez@colorado.edu>
2331
2337
2332 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2338 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2333 special syntaxes (like alias calling) is now allied in multi-line
2339 special syntaxes (like alias calling) is now allied in multi-line
2334 input. This is still _very_ experimental, but it's necessary for
2340 input. This is still _very_ experimental, but it's necessary for
2335 efficient shell usage combining python looping syntax with system
2341 efficient shell usage combining python looping syntax with system
2336 calls. For now it's restricted to aliases, I don't think it
2342 calls. For now it's restricted to aliases, I don't think it
2337 really even makes sense to have this for magics.
2343 really even makes sense to have this for magics.
2338
2344
2339 2004-06-23 Fernando Perez <fperez@colorado.edu>
2345 2004-06-23 Fernando Perez <fperez@colorado.edu>
2340
2346
2341 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2347 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2342 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2348 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2343
2349
2344 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2350 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2345 extensions under Windows (after code sent by Gary Bishop). The
2351 extensions under Windows (after code sent by Gary Bishop). The
2346 extensions considered 'executable' are stored in IPython's rc
2352 extensions considered 'executable' are stored in IPython's rc
2347 structure as win_exec_ext.
2353 structure as win_exec_ext.
2348
2354
2349 * IPython/genutils.py (shell): new function, like system() but
2355 * IPython/genutils.py (shell): new function, like system() but
2350 without return value. Very useful for interactive shell work.
2356 without return value. Very useful for interactive shell work.
2351
2357
2352 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2358 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2353 delete aliases.
2359 delete aliases.
2354
2360
2355 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2361 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2356 sure that the alias table doesn't contain python keywords.
2362 sure that the alias table doesn't contain python keywords.
2357
2363
2358 2004-06-21 Fernando Perez <fperez@colorado.edu>
2364 2004-06-21 Fernando Perez <fperez@colorado.edu>
2359
2365
2360 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2366 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2361 non-existent items are found in $PATH. Reported by Thorsten.
2367 non-existent items are found in $PATH. Reported by Thorsten.
2362
2368
2363 2004-06-20 Fernando Perez <fperez@colorado.edu>
2369 2004-06-20 Fernando Perez <fperez@colorado.edu>
2364
2370
2365 * IPython/iplib.py (complete): modified the completer so that the
2371 * IPython/iplib.py (complete): modified the completer so that the
2366 order of priorities can be easily changed at runtime.
2372 order of priorities can be easily changed at runtime.
2367
2373
2368 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2374 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2369 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2375 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2370
2376
2371 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2377 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2372 expand Python variables prepended with $ in all system calls. The
2378 expand Python variables prepended with $ in all system calls. The
2373 same was done to InteractiveShell.handle_shell_escape. Now all
2379 same was done to InteractiveShell.handle_shell_escape. Now all
2374 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2380 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2375 expansion of python variables and expressions according to the
2381 expansion of python variables and expressions according to the
2376 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2382 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2377
2383
2378 Though PEP-215 has been rejected, a similar (but simpler) one
2384 Though PEP-215 has been rejected, a similar (but simpler) one
2379 seems like it will go into Python 2.4, PEP-292 -
2385 seems like it will go into Python 2.4, PEP-292 -
2380 http://www.python.org/peps/pep-0292.html.
2386 http://www.python.org/peps/pep-0292.html.
2381
2387
2382 I'll keep the full syntax of PEP-215, since IPython has since the
2388 I'll keep the full syntax of PEP-215, since IPython has since the
2383 start used Ka-Ping Yee's reference implementation discussed there
2389 start used Ka-Ping Yee's reference implementation discussed there
2384 (Itpl), and I actually like the powerful semantics it offers.
2390 (Itpl), and I actually like the powerful semantics it offers.
2385
2391
2386 In order to access normal shell variables, the $ has to be escaped
2392 In order to access normal shell variables, the $ has to be escaped
2387 via an extra $. For example:
2393 via an extra $. For example:
2388
2394
2389 In [7]: PATH='a python variable'
2395 In [7]: PATH='a python variable'
2390
2396
2391 In [8]: !echo $PATH
2397 In [8]: !echo $PATH
2392 a python variable
2398 a python variable
2393
2399
2394 In [9]: !echo $$PATH
2400 In [9]: !echo $$PATH
2395 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2401 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2396
2402
2397 (Magic.parse_options): escape $ so the shell doesn't evaluate
2403 (Magic.parse_options): escape $ so the shell doesn't evaluate
2398 things prematurely.
2404 things prematurely.
2399
2405
2400 * IPython/iplib.py (InteractiveShell.call_alias): added the
2406 * IPython/iplib.py (InteractiveShell.call_alias): added the
2401 ability for aliases to expand python variables via $.
2407 ability for aliases to expand python variables via $.
2402
2408
2403 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2409 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2404 system, now there's a @rehash/@rehashx pair of magics. These work
2410 system, now there's a @rehash/@rehashx pair of magics. These work
2405 like the csh rehash command, and can be invoked at any time. They
2411 like the csh rehash command, and can be invoked at any time. They
2406 build a table of aliases to everything in the user's $PATH
2412 build a table of aliases to everything in the user's $PATH
2407 (@rehash uses everything, @rehashx is slower but only adds
2413 (@rehash uses everything, @rehashx is slower but only adds
2408 executable files). With this, the pysh.py-based shell profile can
2414 executable files). With this, the pysh.py-based shell profile can
2409 now simply call rehash upon startup, and full access to all
2415 now simply call rehash upon startup, and full access to all
2410 programs in the user's path is obtained.
2416 programs in the user's path is obtained.
2411
2417
2412 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2418 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2413 functionality is now fully in place. I removed the old dynamic
2419 functionality is now fully in place. I removed the old dynamic
2414 code generation based approach, in favor of a much lighter one
2420 code generation based approach, in favor of a much lighter one
2415 based on a simple dict. The advantage is that this allows me to
2421 based on a simple dict. The advantage is that this allows me to
2416 now have thousands of aliases with negligible cost (unthinkable
2422 now have thousands of aliases with negligible cost (unthinkable
2417 with the old system).
2423 with the old system).
2418
2424
2419 2004-06-19 Fernando Perez <fperez@colorado.edu>
2425 2004-06-19 Fernando Perez <fperez@colorado.edu>
2420
2426
2421 * IPython/iplib.py (__init__): extended MagicCompleter class to
2427 * IPython/iplib.py (__init__): extended MagicCompleter class to
2422 also complete (last in priority) on user aliases.
2428 also complete (last in priority) on user aliases.
2423
2429
2424 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2430 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2425 call to eval.
2431 call to eval.
2426 (ItplNS.__init__): Added a new class which functions like Itpl,
2432 (ItplNS.__init__): Added a new class which functions like Itpl,
2427 but allows configuring the namespace for the evaluation to occur
2433 but allows configuring the namespace for the evaluation to occur
2428 in.
2434 in.
2429
2435
2430 2004-06-18 Fernando Perez <fperez@colorado.edu>
2436 2004-06-18 Fernando Perez <fperez@colorado.edu>
2431
2437
2432 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2438 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2433 better message when 'exit' or 'quit' are typed (a common newbie
2439 better message when 'exit' or 'quit' are typed (a common newbie
2434 confusion).
2440 confusion).
2435
2441
2436 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2442 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2437 check for Windows users.
2443 check for Windows users.
2438
2444
2439 * IPython/iplib.py (InteractiveShell.user_setup): removed
2445 * IPython/iplib.py (InteractiveShell.user_setup): removed
2440 disabling of colors for Windows. I'll test at runtime and issue a
2446 disabling of colors for Windows. I'll test at runtime and issue a
2441 warning if Gary's readline isn't found, as to nudge users to
2447 warning if Gary's readline isn't found, as to nudge users to
2442 download it.
2448 download it.
2443
2449
2444 2004-06-16 Fernando Perez <fperez@colorado.edu>
2450 2004-06-16 Fernando Perez <fperez@colorado.edu>
2445
2451
2446 * IPython/genutils.py (Stream.__init__): changed to print errors
2452 * IPython/genutils.py (Stream.__init__): changed to print errors
2447 to sys.stderr. I had a circular dependency here. Now it's
2453 to sys.stderr. I had a circular dependency here. Now it's
2448 possible to run ipython as IDLE's shell (consider this pre-alpha,
2454 possible to run ipython as IDLE's shell (consider this pre-alpha,
2449 since true stdout things end up in the starting terminal instead
2455 since true stdout things end up in the starting terminal instead
2450 of IDLE's out).
2456 of IDLE's out).
2451
2457
2452 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2458 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2453 users who haven't # updated their prompt_in2 definitions. Remove
2459 users who haven't # updated their prompt_in2 definitions. Remove
2454 eventually.
2460 eventually.
2455 (multiple_replace): added credit to original ASPN recipe.
2461 (multiple_replace): added credit to original ASPN recipe.
2456
2462
2457 2004-06-15 Fernando Perez <fperez@colorado.edu>
2463 2004-06-15 Fernando Perez <fperez@colorado.edu>
2458
2464
2459 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2465 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2460 list of auto-defined aliases.
2466 list of auto-defined aliases.
2461
2467
2462 2004-06-13 Fernando Perez <fperez@colorado.edu>
2468 2004-06-13 Fernando Perez <fperez@colorado.edu>
2463
2469
2464 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2470 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2465 install was really requested (so setup.py can be used for other
2471 install was really requested (so setup.py can be used for other
2466 things under Windows).
2472 things under Windows).
2467
2473
2468 2004-06-10 Fernando Perez <fperez@colorado.edu>
2474 2004-06-10 Fernando Perez <fperez@colorado.edu>
2469
2475
2470 * IPython/Logger.py (Logger.create_log): Manually remove any old
2476 * IPython/Logger.py (Logger.create_log): Manually remove any old
2471 backup, since os.remove may fail under Windows. Fixes bug
2477 backup, since os.remove may fail under Windows. Fixes bug
2472 reported by Thorsten.
2478 reported by Thorsten.
2473
2479
2474 2004-06-09 Fernando Perez <fperez@colorado.edu>
2480 2004-06-09 Fernando Perez <fperez@colorado.edu>
2475
2481
2476 * examples/example-embed.py: fixed all references to %n (replaced
2482 * examples/example-embed.py: fixed all references to %n (replaced
2477 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2483 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2478 for all examples and the manual as well.
2484 for all examples and the manual as well.
2479
2485
2480 2004-06-08 Fernando Perez <fperez@colorado.edu>
2486 2004-06-08 Fernando Perez <fperez@colorado.edu>
2481
2487
2482 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2488 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2483 alignment and color management. All 3 prompt subsystems now
2489 alignment and color management. All 3 prompt subsystems now
2484 inherit from BasePrompt.
2490 inherit from BasePrompt.
2485
2491
2486 * tools/release: updates for windows installer build and tag rpms
2492 * tools/release: updates for windows installer build and tag rpms
2487 with python version (since paths are fixed).
2493 with python version (since paths are fixed).
2488
2494
2489 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2495 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2490 which will become eventually obsolete. Also fixed the default
2496 which will become eventually obsolete. Also fixed the default
2491 prompt_in2 to use \D, so at least new users start with the correct
2497 prompt_in2 to use \D, so at least new users start with the correct
2492 defaults.
2498 defaults.
2493 WARNING: Users with existing ipythonrc files will need to apply
2499 WARNING: Users with existing ipythonrc files will need to apply
2494 this fix manually!
2500 this fix manually!
2495
2501
2496 * setup.py: make windows installer (.exe). This is finally the
2502 * setup.py: make windows installer (.exe). This is finally the
2497 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2503 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2498 which I hadn't included because it required Python 2.3 (or recent
2504 which I hadn't included because it required Python 2.3 (or recent
2499 distutils).
2505 distutils).
2500
2506
2501 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2507 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2502 usage of new '\D' escape.
2508 usage of new '\D' escape.
2503
2509
2504 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2510 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2505 lacks os.getuid())
2511 lacks os.getuid())
2506 (CachedOutput.set_colors): Added the ability to turn coloring
2512 (CachedOutput.set_colors): Added the ability to turn coloring
2507 on/off with @colors even for manually defined prompt colors. It
2513 on/off with @colors even for manually defined prompt colors. It
2508 uses a nasty global, but it works safely and via the generic color
2514 uses a nasty global, but it works safely and via the generic color
2509 handling mechanism.
2515 handling mechanism.
2510 (Prompt2.__init__): Introduced new escape '\D' for continuation
2516 (Prompt2.__init__): Introduced new escape '\D' for continuation
2511 prompts. It represents the counter ('\#') as dots.
2517 prompts. It represents the counter ('\#') as dots.
2512 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2518 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2513 need to update their ipythonrc files and replace '%n' with '\D' in
2519 need to update their ipythonrc files and replace '%n' with '\D' in
2514 their prompt_in2 settings everywhere. Sorry, but there's
2520 their prompt_in2 settings everywhere. Sorry, but there's
2515 otherwise no clean way to get all prompts to properly align. The
2521 otherwise no clean way to get all prompts to properly align. The
2516 ipythonrc shipped with IPython has been updated.
2522 ipythonrc shipped with IPython has been updated.
2517
2523
2518 2004-06-07 Fernando Perez <fperez@colorado.edu>
2524 2004-06-07 Fernando Perez <fperez@colorado.edu>
2519
2525
2520 * setup.py (isfile): Pass local_icons option to latex2html, so the
2526 * setup.py (isfile): Pass local_icons option to latex2html, so the
2521 resulting HTML file is self-contained. Thanks to
2527 resulting HTML file is self-contained. Thanks to
2522 dryice-AT-liu.com.cn for the tip.
2528 dryice-AT-liu.com.cn for the tip.
2523
2529
2524 * pysh.py: I created a new profile 'shell', which implements a
2530 * pysh.py: I created a new profile 'shell', which implements a
2525 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2531 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2526 system shell, nor will it become one anytime soon. It's mainly
2532 system shell, nor will it become one anytime soon. It's mainly
2527 meant to illustrate the use of the new flexible bash-like prompts.
2533 meant to illustrate the use of the new flexible bash-like prompts.
2528 I guess it could be used by hardy souls for true shell management,
2534 I guess it could be used by hardy souls for true shell management,
2529 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2535 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2530 profile. This uses the InterpreterExec extension provided by
2536 profile. This uses the InterpreterExec extension provided by
2531 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2537 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2532
2538
2533 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2539 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2534 auto-align itself with the length of the previous input prompt
2540 auto-align itself with the length of the previous input prompt
2535 (taking into account the invisible color escapes).
2541 (taking into account the invisible color escapes).
2536 (CachedOutput.__init__): Large restructuring of this class. Now
2542 (CachedOutput.__init__): Large restructuring of this class. Now
2537 all three prompts (primary1, primary2, output) are proper objects,
2543 all three prompts (primary1, primary2, output) are proper objects,
2538 managed by the 'parent' CachedOutput class. The code is still a
2544 managed by the 'parent' CachedOutput class. The code is still a
2539 bit hackish (all prompts share state via a pointer to the cache),
2545 bit hackish (all prompts share state via a pointer to the cache),
2540 but it's overall far cleaner than before.
2546 but it's overall far cleaner than before.
2541
2547
2542 * IPython/genutils.py (getoutputerror): modified to add verbose,
2548 * IPython/genutils.py (getoutputerror): modified to add verbose,
2543 debug and header options. This makes the interface of all getout*
2549 debug and header options. This makes the interface of all getout*
2544 functions uniform.
2550 functions uniform.
2545 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2551 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2546
2552
2547 * IPython/Magic.py (Magic.default_option): added a function to
2553 * IPython/Magic.py (Magic.default_option): added a function to
2548 allow registering default options for any magic command. This
2554 allow registering default options for any magic command. This
2549 makes it easy to have profiles which customize the magics globally
2555 makes it easy to have profiles which customize the magics globally
2550 for a certain use. The values set through this function are
2556 for a certain use. The values set through this function are
2551 picked up by the parse_options() method, which all magics should
2557 picked up by the parse_options() method, which all magics should
2552 use to parse their options.
2558 use to parse their options.
2553
2559
2554 * IPython/genutils.py (warn): modified the warnings framework to
2560 * IPython/genutils.py (warn): modified the warnings framework to
2555 use the Term I/O class. I'm trying to slowly unify all of
2561 use the Term I/O class. I'm trying to slowly unify all of
2556 IPython's I/O operations to pass through Term.
2562 IPython's I/O operations to pass through Term.
2557
2563
2558 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2564 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2559 the secondary prompt to correctly match the length of the primary
2565 the secondary prompt to correctly match the length of the primary
2560 one for any prompt. Now multi-line code will properly line up
2566 one for any prompt. Now multi-line code will properly line up
2561 even for path dependent prompts, such as the new ones available
2567 even for path dependent prompts, such as the new ones available
2562 via the prompt_specials.
2568 via the prompt_specials.
2563
2569
2564 2004-06-06 Fernando Perez <fperez@colorado.edu>
2570 2004-06-06 Fernando Perez <fperez@colorado.edu>
2565
2571
2566 * IPython/Prompts.py (prompt_specials): Added the ability to have
2572 * IPython/Prompts.py (prompt_specials): Added the ability to have
2567 bash-like special sequences in the prompts, which get
2573 bash-like special sequences in the prompts, which get
2568 automatically expanded. Things like hostname, current working
2574 automatically expanded. Things like hostname, current working
2569 directory and username are implemented already, but it's easy to
2575 directory and username are implemented already, but it's easy to
2570 add more in the future. Thanks to a patch by W.J. van der Laan
2576 add more in the future. Thanks to a patch by W.J. van der Laan
2571 <gnufnork-AT-hetdigitalegat.nl>
2577 <gnufnork-AT-hetdigitalegat.nl>
2572 (prompt_specials): Added color support for prompt strings, so
2578 (prompt_specials): Added color support for prompt strings, so
2573 users can define arbitrary color setups for their prompts.
2579 users can define arbitrary color setups for their prompts.
2574
2580
2575 2004-06-05 Fernando Perez <fperez@colorado.edu>
2581 2004-06-05 Fernando Perez <fperez@colorado.edu>
2576
2582
2577 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2583 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2578 code to load Gary Bishop's readline and configure it
2584 code to load Gary Bishop's readline and configure it
2579 automatically. Thanks to Gary for help on this.
2585 automatically. Thanks to Gary for help on this.
2580
2586
2581 2004-06-01 Fernando Perez <fperez@colorado.edu>
2587 2004-06-01 Fernando Perez <fperez@colorado.edu>
2582
2588
2583 * IPython/Logger.py (Logger.create_log): fix bug for logging
2589 * IPython/Logger.py (Logger.create_log): fix bug for logging
2584 with no filename (previous fix was incomplete).
2590 with no filename (previous fix was incomplete).
2585
2591
2586 2004-05-25 Fernando Perez <fperez@colorado.edu>
2592 2004-05-25 Fernando Perez <fperez@colorado.edu>
2587
2593
2588 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2594 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2589 parens would get passed to the shell.
2595 parens would get passed to the shell.
2590
2596
2591 2004-05-20 Fernando Perez <fperez@colorado.edu>
2597 2004-05-20 Fernando Perez <fperez@colorado.edu>
2592
2598
2593 * IPython/Magic.py (Magic.magic_prun): changed default profile
2599 * IPython/Magic.py (Magic.magic_prun): changed default profile
2594 sort order to 'time' (the more common profiling need).
2600 sort order to 'time' (the more common profiling need).
2595
2601
2596 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2602 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2597 so that source code shown is guaranteed in sync with the file on
2603 so that source code shown is guaranteed in sync with the file on
2598 disk (also changed in psource). Similar fix to the one for
2604 disk (also changed in psource). Similar fix to the one for
2599 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2605 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2600 <yann.ledu-AT-noos.fr>.
2606 <yann.ledu-AT-noos.fr>.
2601
2607
2602 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2608 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2603 with a single option would not be correctly parsed. Closes
2609 with a single option would not be correctly parsed. Closes
2604 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2610 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2605 introduced in 0.6.0 (on 2004-05-06).
2611 introduced in 0.6.0 (on 2004-05-06).
2606
2612
2607 2004-05-13 *** Released version 0.6.0
2613 2004-05-13 *** Released version 0.6.0
2608
2614
2609 2004-05-13 Fernando Perez <fperez@colorado.edu>
2615 2004-05-13 Fernando Perez <fperez@colorado.edu>
2610
2616
2611 * debian/: Added debian/ directory to CVS, so that debian support
2617 * debian/: Added debian/ directory to CVS, so that debian support
2612 is publicly accessible. The debian package is maintained by Jack
2618 is publicly accessible. The debian package is maintained by Jack
2613 Moffit <jack-AT-xiph.org>.
2619 Moffit <jack-AT-xiph.org>.
2614
2620
2615 * Documentation: included the notes about an ipython-based system
2621 * Documentation: included the notes about an ipython-based system
2616 shell (the hypothetical 'pysh') into the new_design.pdf document,
2622 shell (the hypothetical 'pysh') into the new_design.pdf document,
2617 so that these ideas get distributed to users along with the
2623 so that these ideas get distributed to users along with the
2618 official documentation.
2624 official documentation.
2619
2625
2620 2004-05-10 Fernando Perez <fperez@colorado.edu>
2626 2004-05-10 Fernando Perez <fperez@colorado.edu>
2621
2627
2622 * IPython/Logger.py (Logger.create_log): fix recently introduced
2628 * IPython/Logger.py (Logger.create_log): fix recently introduced
2623 bug (misindented line) where logstart would fail when not given an
2629 bug (misindented line) where logstart would fail when not given an
2624 explicit filename.
2630 explicit filename.
2625
2631
2626 2004-05-09 Fernando Perez <fperez@colorado.edu>
2632 2004-05-09 Fernando Perez <fperez@colorado.edu>
2627
2633
2628 * IPython/Magic.py (Magic.parse_options): skip system call when
2634 * IPython/Magic.py (Magic.parse_options): skip system call when
2629 there are no options to look for. Faster, cleaner for the common
2635 there are no options to look for. Faster, cleaner for the common
2630 case.
2636 case.
2631
2637
2632 * Documentation: many updates to the manual: describing Windows
2638 * Documentation: many updates to the manual: describing Windows
2633 support better, Gnuplot updates, credits, misc small stuff. Also
2639 support better, Gnuplot updates, credits, misc small stuff. Also
2634 updated the new_design doc a bit.
2640 updated the new_design doc a bit.
2635
2641
2636 2004-05-06 *** Released version 0.6.0.rc1
2642 2004-05-06 *** Released version 0.6.0.rc1
2637
2643
2638 2004-05-06 Fernando Perez <fperez@colorado.edu>
2644 2004-05-06 Fernando Perez <fperez@colorado.edu>
2639
2645
2640 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2646 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2641 operations to use the vastly more efficient list/''.join() method.
2647 operations to use the vastly more efficient list/''.join() method.
2642 (FormattedTB.text): Fix
2648 (FormattedTB.text): Fix
2643 http://www.scipy.net/roundup/ipython/issue12 - exception source
2649 http://www.scipy.net/roundup/ipython/issue12 - exception source
2644 extract not updated after reload. Thanks to Mike Salib
2650 extract not updated after reload. Thanks to Mike Salib
2645 <msalib-AT-mit.edu> for pinning the source of the problem.
2651 <msalib-AT-mit.edu> for pinning the source of the problem.
2646 Fortunately, the solution works inside ipython and doesn't require
2652 Fortunately, the solution works inside ipython and doesn't require
2647 any changes to python proper.
2653 any changes to python proper.
2648
2654
2649 * IPython/Magic.py (Magic.parse_options): Improved to process the
2655 * IPython/Magic.py (Magic.parse_options): Improved to process the
2650 argument list as a true shell would (by actually using the
2656 argument list as a true shell would (by actually using the
2651 underlying system shell). This way, all @magics automatically get
2657 underlying system shell). This way, all @magics automatically get
2652 shell expansion for variables. Thanks to a comment by Alex
2658 shell expansion for variables. Thanks to a comment by Alex
2653 Schmolck.
2659 Schmolck.
2654
2660
2655 2004-04-04 Fernando Perez <fperez@colorado.edu>
2661 2004-04-04 Fernando Perez <fperez@colorado.edu>
2656
2662
2657 * IPython/iplib.py (InteractiveShell.interact): Added a special
2663 * IPython/iplib.py (InteractiveShell.interact): Added a special
2658 trap for a debugger quit exception, which is basically impossible
2664 trap for a debugger quit exception, which is basically impossible
2659 to handle by normal mechanisms, given what pdb does to the stack.
2665 to handle by normal mechanisms, given what pdb does to the stack.
2660 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2666 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2661
2667
2662 2004-04-03 Fernando Perez <fperez@colorado.edu>
2668 2004-04-03 Fernando Perez <fperez@colorado.edu>
2663
2669
2664 * IPython/genutils.py (Term): Standardized the names of the Term
2670 * IPython/genutils.py (Term): Standardized the names of the Term
2665 class streams to cin/cout/cerr, following C++ naming conventions
2671 class streams to cin/cout/cerr, following C++ naming conventions
2666 (I can't use in/out/err because 'in' is not a valid attribute
2672 (I can't use in/out/err because 'in' is not a valid attribute
2667 name).
2673 name).
2668
2674
2669 * IPython/iplib.py (InteractiveShell.interact): don't increment
2675 * IPython/iplib.py (InteractiveShell.interact): don't increment
2670 the prompt if there's no user input. By Daniel 'Dang' Griffith
2676 the prompt if there's no user input. By Daniel 'Dang' Griffith
2671 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2677 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2672 Francois Pinard.
2678 Francois Pinard.
2673
2679
2674 2004-04-02 Fernando Perez <fperez@colorado.edu>
2680 2004-04-02 Fernando Perez <fperez@colorado.edu>
2675
2681
2676 * IPython/genutils.py (Stream.__init__): Modified to survive at
2682 * IPython/genutils.py (Stream.__init__): Modified to survive at
2677 least importing in contexts where stdin/out/err aren't true file
2683 least importing in contexts where stdin/out/err aren't true file
2678 objects, such as PyCrust (they lack fileno() and mode). However,
2684 objects, such as PyCrust (they lack fileno() and mode). However,
2679 the recovery facilities which rely on these things existing will
2685 the recovery facilities which rely on these things existing will
2680 not work.
2686 not work.
2681
2687
2682 2004-04-01 Fernando Perez <fperez@colorado.edu>
2688 2004-04-01 Fernando Perez <fperez@colorado.edu>
2683
2689
2684 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2690 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2685 use the new getoutputerror() function, so it properly
2691 use the new getoutputerror() function, so it properly
2686 distinguishes stdout/err.
2692 distinguishes stdout/err.
2687
2693
2688 * IPython/genutils.py (getoutputerror): added a function to
2694 * IPython/genutils.py (getoutputerror): added a function to
2689 capture separately the standard output and error of a command.
2695 capture separately the standard output and error of a command.
2690 After a comment from dang on the mailing lists. This code is
2696 After a comment from dang on the mailing lists. This code is
2691 basically a modified version of commands.getstatusoutput(), from
2697 basically a modified version of commands.getstatusoutput(), from
2692 the standard library.
2698 the standard library.
2693
2699
2694 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2700 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2695 '!!' as a special syntax (shorthand) to access @sx.
2701 '!!' as a special syntax (shorthand) to access @sx.
2696
2702
2697 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2703 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2698 command and return its output as a list split on '\n'.
2704 command and return its output as a list split on '\n'.
2699
2705
2700 2004-03-31 Fernando Perez <fperez@colorado.edu>
2706 2004-03-31 Fernando Perez <fperez@colorado.edu>
2701
2707
2702 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2708 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2703 method to dictionaries used as FakeModule instances if they lack
2709 method to dictionaries used as FakeModule instances if they lack
2704 it. At least pydoc in python2.3 breaks for runtime-defined
2710 it. At least pydoc in python2.3 breaks for runtime-defined
2705 functions without this hack. At some point I need to _really_
2711 functions without this hack. At some point I need to _really_
2706 understand what FakeModule is doing, because it's a gross hack.
2712 understand what FakeModule is doing, because it's a gross hack.
2707 But it solves Arnd's problem for now...
2713 But it solves Arnd's problem for now...
2708
2714
2709 2004-02-27 Fernando Perez <fperez@colorado.edu>
2715 2004-02-27 Fernando Perez <fperez@colorado.edu>
2710
2716
2711 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2717 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2712 mode would behave erratically. Also increased the number of
2718 mode would behave erratically. Also increased the number of
2713 possible logs in rotate mod to 999. Thanks to Rod Holland
2719 possible logs in rotate mod to 999. Thanks to Rod Holland
2714 <rhh@StructureLABS.com> for the report and fixes.
2720 <rhh@StructureLABS.com> for the report and fixes.
2715
2721
2716 2004-02-26 Fernando Perez <fperez@colorado.edu>
2722 2004-02-26 Fernando Perez <fperez@colorado.edu>
2717
2723
2718 * IPython/genutils.py (page): Check that the curses module really
2724 * IPython/genutils.py (page): Check that the curses module really
2719 has the initscr attribute before trying to use it. For some
2725 has the initscr attribute before trying to use it. For some
2720 reason, the Solaris curses module is missing this. I think this
2726 reason, the Solaris curses module is missing this. I think this
2721 should be considered a Solaris python bug, but I'm not sure.
2727 should be considered a Solaris python bug, but I'm not sure.
2722
2728
2723 2004-01-17 Fernando Perez <fperez@colorado.edu>
2729 2004-01-17 Fernando Perez <fperez@colorado.edu>
2724
2730
2725 * IPython/genutils.py (Stream.__init__): Changes to try to make
2731 * IPython/genutils.py (Stream.__init__): Changes to try to make
2726 ipython robust against stdin/out/err being closed by the user.
2732 ipython robust against stdin/out/err being closed by the user.
2727 This is 'user error' (and blocks a normal python session, at least
2733 This is 'user error' (and blocks a normal python session, at least
2728 the stdout case). However, Ipython should be able to survive such
2734 the stdout case). However, Ipython should be able to survive such
2729 instances of abuse as gracefully as possible. To simplify the
2735 instances of abuse as gracefully as possible. To simplify the
2730 coding and maintain compatibility with Gary Bishop's Term
2736 coding and maintain compatibility with Gary Bishop's Term
2731 contributions, I've made use of classmethods for this. I think
2737 contributions, I've made use of classmethods for this. I think
2732 this introduces a dependency on python 2.2.
2738 this introduces a dependency on python 2.2.
2733
2739
2734 2004-01-13 Fernando Perez <fperez@colorado.edu>
2740 2004-01-13 Fernando Perez <fperez@colorado.edu>
2735
2741
2736 * IPython/numutils.py (exp_safe): simplified the code a bit and
2742 * IPython/numutils.py (exp_safe): simplified the code a bit and
2737 removed the need for importing the kinds module altogether.
2743 removed the need for importing the kinds module altogether.
2738
2744
2739 2004-01-06 Fernando Perez <fperez@colorado.edu>
2745 2004-01-06 Fernando Perez <fperez@colorado.edu>
2740
2746
2741 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2747 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2742 a magic function instead, after some community feedback. No
2748 a magic function instead, after some community feedback. No
2743 special syntax will exist for it, but its name is deliberately
2749 special syntax will exist for it, but its name is deliberately
2744 very short.
2750 very short.
2745
2751
2746 2003-12-20 Fernando Perez <fperez@colorado.edu>
2752 2003-12-20 Fernando Perez <fperez@colorado.edu>
2747
2753
2748 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2754 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2749 new functionality, to automagically assign the result of a shell
2755 new functionality, to automagically assign the result of a shell
2750 command to a variable. I'll solicit some community feedback on
2756 command to a variable. I'll solicit some community feedback on
2751 this before making it permanent.
2757 this before making it permanent.
2752
2758
2753 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2759 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2754 requested about callables for which inspect couldn't obtain a
2760 requested about callables for which inspect couldn't obtain a
2755 proper argspec. Thanks to a crash report sent by Etienne
2761 proper argspec. Thanks to a crash report sent by Etienne
2756 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2762 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2757
2763
2758 2003-12-09 Fernando Perez <fperez@colorado.edu>
2764 2003-12-09 Fernando Perez <fperez@colorado.edu>
2759
2765
2760 * IPython/genutils.py (page): patch for the pager to work across
2766 * IPython/genutils.py (page): patch for the pager to work across
2761 various versions of Windows. By Gary Bishop.
2767 various versions of Windows. By Gary Bishop.
2762
2768
2763 2003-12-04 Fernando Perez <fperez@colorado.edu>
2769 2003-12-04 Fernando Perez <fperez@colorado.edu>
2764
2770
2765 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2771 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2766 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2772 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2767 While I tested this and it looks ok, there may still be corner
2773 While I tested this and it looks ok, there may still be corner
2768 cases I've missed.
2774 cases I've missed.
2769
2775
2770 2003-12-01 Fernando Perez <fperez@colorado.edu>
2776 2003-12-01 Fernando Perez <fperez@colorado.edu>
2771
2777
2772 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2778 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2773 where a line like 'p,q=1,2' would fail because the automagic
2779 where a line like 'p,q=1,2' would fail because the automagic
2774 system would be triggered for @p.
2780 system would be triggered for @p.
2775
2781
2776 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2782 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2777 cleanups, code unmodified.
2783 cleanups, code unmodified.
2778
2784
2779 * IPython/genutils.py (Term): added a class for IPython to handle
2785 * IPython/genutils.py (Term): added a class for IPython to handle
2780 output. In most cases it will just be a proxy for stdout/err, but
2786 output. In most cases it will just be a proxy for stdout/err, but
2781 having this allows modifications to be made for some platforms,
2787 having this allows modifications to be made for some platforms,
2782 such as handling color escapes under Windows. All of this code
2788 such as handling color escapes under Windows. All of this code
2783 was contributed by Gary Bishop, with minor modifications by me.
2789 was contributed by Gary Bishop, with minor modifications by me.
2784 The actual changes affect many files.
2790 The actual changes affect many files.
2785
2791
2786 2003-11-30 Fernando Perez <fperez@colorado.edu>
2792 2003-11-30 Fernando Perez <fperez@colorado.edu>
2787
2793
2788 * IPython/iplib.py (file_matches): new completion code, courtesy
2794 * IPython/iplib.py (file_matches): new completion code, courtesy
2789 of Jeff Collins. This enables filename completion again under
2795 of Jeff Collins. This enables filename completion again under
2790 python 2.3, which disabled it at the C level.
2796 python 2.3, which disabled it at the C level.
2791
2797
2792 2003-11-11 Fernando Perez <fperez@colorado.edu>
2798 2003-11-11 Fernando Perez <fperez@colorado.edu>
2793
2799
2794 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2800 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2795 for Numeric.array(map(...)), but often convenient.
2801 for Numeric.array(map(...)), but often convenient.
2796
2802
2797 2003-11-05 Fernando Perez <fperez@colorado.edu>
2803 2003-11-05 Fernando Perez <fperez@colorado.edu>
2798
2804
2799 * IPython/numutils.py (frange): Changed a call from int() to
2805 * IPython/numutils.py (frange): Changed a call from int() to
2800 int(round()) to prevent a problem reported with arange() in the
2806 int(round()) to prevent a problem reported with arange() in the
2801 numpy list.
2807 numpy list.
2802
2808
2803 2003-10-06 Fernando Perez <fperez@colorado.edu>
2809 2003-10-06 Fernando Perez <fperez@colorado.edu>
2804
2810
2805 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2811 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2806 prevent crashes if sys lacks an argv attribute (it happens with
2812 prevent crashes if sys lacks an argv attribute (it happens with
2807 embedded interpreters which build a bare-bones sys module).
2813 embedded interpreters which build a bare-bones sys module).
2808 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2814 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2809
2815
2810 2003-09-24 Fernando Perez <fperez@colorado.edu>
2816 2003-09-24 Fernando Perez <fperez@colorado.edu>
2811
2817
2812 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2818 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2813 to protect against poorly written user objects where __getattr__
2819 to protect against poorly written user objects where __getattr__
2814 raises exceptions other than AttributeError. Thanks to a bug
2820 raises exceptions other than AttributeError. Thanks to a bug
2815 report by Oliver Sander <osander-AT-gmx.de>.
2821 report by Oliver Sander <osander-AT-gmx.de>.
2816
2822
2817 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2823 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2818 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2824 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2819
2825
2820 2003-09-09 Fernando Perez <fperez@colorado.edu>
2826 2003-09-09 Fernando Perez <fperez@colorado.edu>
2821
2827
2822 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2828 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2823 unpacking a list whith a callable as first element would
2829 unpacking a list whith a callable as first element would
2824 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2830 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2825 Collins.
2831 Collins.
2826
2832
2827 2003-08-25 *** Released version 0.5.0
2833 2003-08-25 *** Released version 0.5.0
2828
2834
2829 2003-08-22 Fernando Perez <fperez@colorado.edu>
2835 2003-08-22 Fernando Perez <fperez@colorado.edu>
2830
2836
2831 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2837 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2832 improperly defined user exceptions. Thanks to feedback from Mark
2838 improperly defined user exceptions. Thanks to feedback from Mark
2833 Russell <mrussell-AT-verio.net>.
2839 Russell <mrussell-AT-verio.net>.
2834
2840
2835 2003-08-20 Fernando Perez <fperez@colorado.edu>
2841 2003-08-20 Fernando Perez <fperez@colorado.edu>
2836
2842
2837 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2843 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2838 printing so that it would print multi-line string forms starting
2844 printing so that it would print multi-line string forms starting
2839 with a new line. This way the formatting is better respected for
2845 with a new line. This way the formatting is better respected for
2840 objects which work hard to make nice string forms.
2846 objects which work hard to make nice string forms.
2841
2847
2842 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2848 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2843 autocall would overtake data access for objects with both
2849 autocall would overtake data access for objects with both
2844 __getitem__ and __call__.
2850 __getitem__ and __call__.
2845
2851
2846 2003-08-19 *** Released version 0.5.0-rc1
2852 2003-08-19 *** Released version 0.5.0-rc1
2847
2853
2848 2003-08-19 Fernando Perez <fperez@colorado.edu>
2854 2003-08-19 Fernando Perez <fperez@colorado.edu>
2849
2855
2850 * IPython/deep_reload.py (load_tail): single tiny change here
2856 * IPython/deep_reload.py (load_tail): single tiny change here
2851 seems to fix the long-standing bug of dreload() failing to work
2857 seems to fix the long-standing bug of dreload() failing to work
2852 for dotted names. But this module is pretty tricky, so I may have
2858 for dotted names. But this module is pretty tricky, so I may have
2853 missed some subtlety. Needs more testing!.
2859 missed some subtlety. Needs more testing!.
2854
2860
2855 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2861 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2856 exceptions which have badly implemented __str__ methods.
2862 exceptions which have badly implemented __str__ methods.
2857 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2863 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2858 which I've been getting reports about from Python 2.3 users. I
2864 which I've been getting reports about from Python 2.3 users. I
2859 wish I had a simple test case to reproduce the problem, so I could
2865 wish I had a simple test case to reproduce the problem, so I could
2860 either write a cleaner workaround or file a bug report if
2866 either write a cleaner workaround or file a bug report if
2861 necessary.
2867 necessary.
2862
2868
2863 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2869 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2864 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2870 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2865 a bug report by Tjabo Kloppenburg.
2871 a bug report by Tjabo Kloppenburg.
2866
2872
2867 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2873 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2868 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2874 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2869 seems rather unstable. Thanks to a bug report by Tjabo
2875 seems rather unstable. Thanks to a bug report by Tjabo
2870 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2876 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2871
2877
2872 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2878 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2873 this out soon because of the critical fixes in the inner loop for
2879 this out soon because of the critical fixes in the inner loop for
2874 generators.
2880 generators.
2875
2881
2876 * IPython/Magic.py (Magic.getargspec): removed. This (and
2882 * IPython/Magic.py (Magic.getargspec): removed. This (and
2877 _get_def) have been obsoleted by OInspect for a long time, I
2883 _get_def) have been obsoleted by OInspect for a long time, I
2878 hadn't noticed that they were dead code.
2884 hadn't noticed that they were dead code.
2879 (Magic._ofind): restored _ofind functionality for a few literals
2885 (Magic._ofind): restored _ofind functionality for a few literals
2880 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2886 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2881 for things like "hello".capitalize?, since that would require a
2887 for things like "hello".capitalize?, since that would require a
2882 potentially dangerous eval() again.
2888 potentially dangerous eval() again.
2883
2889
2884 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2890 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2885 logic a bit more to clean up the escapes handling and minimize the
2891 logic a bit more to clean up the escapes handling and minimize the
2886 use of _ofind to only necessary cases. The interactive 'feel' of
2892 use of _ofind to only necessary cases. The interactive 'feel' of
2887 IPython should have improved quite a bit with the changes in
2893 IPython should have improved quite a bit with the changes in
2888 _prefilter and _ofind (besides being far safer than before).
2894 _prefilter and _ofind (besides being far safer than before).
2889
2895
2890 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2896 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2891 obscure, never reported). Edit would fail to find the object to
2897 obscure, never reported). Edit would fail to find the object to
2892 edit under some circumstances.
2898 edit under some circumstances.
2893 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2899 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2894 which were causing double-calling of generators. Those eval calls
2900 which were causing double-calling of generators. Those eval calls
2895 were _very_ dangerous, since code with side effects could be
2901 were _very_ dangerous, since code with side effects could be
2896 triggered. As they say, 'eval is evil'... These were the
2902 triggered. As they say, 'eval is evil'... These were the
2897 nastiest evals in IPython. Besides, _ofind is now far simpler,
2903 nastiest evals in IPython. Besides, _ofind is now far simpler,
2898 and it should also be quite a bit faster. Its use of inspect is
2904 and it should also be quite a bit faster. Its use of inspect is
2899 also safer, so perhaps some of the inspect-related crashes I've
2905 also safer, so perhaps some of the inspect-related crashes I've
2900 seen lately with Python 2.3 might be taken care of. That will
2906 seen lately with Python 2.3 might be taken care of. That will
2901 need more testing.
2907 need more testing.
2902
2908
2903 2003-08-17 Fernando Perez <fperez@colorado.edu>
2909 2003-08-17 Fernando Perez <fperez@colorado.edu>
2904
2910
2905 * IPython/iplib.py (InteractiveShell._prefilter): significant
2911 * IPython/iplib.py (InteractiveShell._prefilter): significant
2906 simplifications to the logic for handling user escapes. Faster
2912 simplifications to the logic for handling user escapes. Faster
2907 and simpler code.
2913 and simpler code.
2908
2914
2909 2003-08-14 Fernando Perez <fperez@colorado.edu>
2915 2003-08-14 Fernando Perez <fperez@colorado.edu>
2910
2916
2911 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2917 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2912 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2918 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2913 but it should be quite a bit faster. And the recursive version
2919 but it should be quite a bit faster. And the recursive version
2914 generated O(log N) intermediate storage for all rank>1 arrays,
2920 generated O(log N) intermediate storage for all rank>1 arrays,
2915 even if they were contiguous.
2921 even if they were contiguous.
2916 (l1norm): Added this function.
2922 (l1norm): Added this function.
2917 (norm): Added this function for arbitrary norms (including
2923 (norm): Added this function for arbitrary norms (including
2918 l-infinity). l1 and l2 are still special cases for convenience
2924 l-infinity). l1 and l2 are still special cases for convenience
2919 and speed.
2925 and speed.
2920
2926
2921 2003-08-03 Fernando Perez <fperez@colorado.edu>
2927 2003-08-03 Fernando Perez <fperez@colorado.edu>
2922
2928
2923 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2929 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2924 exceptions, which now raise PendingDeprecationWarnings in Python
2930 exceptions, which now raise PendingDeprecationWarnings in Python
2925 2.3. There were some in Magic and some in Gnuplot2.
2931 2.3. There were some in Magic and some in Gnuplot2.
2926
2932
2927 2003-06-30 Fernando Perez <fperez@colorado.edu>
2933 2003-06-30 Fernando Perez <fperez@colorado.edu>
2928
2934
2929 * IPython/genutils.py (page): modified to call curses only for
2935 * IPython/genutils.py (page): modified to call curses only for
2930 terminals where TERM=='xterm'. After problems under many other
2936 terminals where TERM=='xterm'. After problems under many other
2931 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2937 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2932
2938
2933 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2939 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2934 would be triggered when readline was absent. This was just an old
2940 would be triggered when readline was absent. This was just an old
2935 debugging statement I'd forgotten to take out.
2941 debugging statement I'd forgotten to take out.
2936
2942
2937 2003-06-20 Fernando Perez <fperez@colorado.edu>
2943 2003-06-20 Fernando Perez <fperez@colorado.edu>
2938
2944
2939 * IPython/genutils.py (clock): modified to return only user time
2945 * IPython/genutils.py (clock): modified to return only user time
2940 (not counting system time), after a discussion on scipy. While
2946 (not counting system time), after a discussion on scipy. While
2941 system time may be a useful quantity occasionally, it may much
2947 system time may be a useful quantity occasionally, it may much
2942 more easily be skewed by occasional swapping or other similar
2948 more easily be skewed by occasional swapping or other similar
2943 activity.
2949 activity.
2944
2950
2945 2003-06-05 Fernando Perez <fperez@colorado.edu>
2951 2003-06-05 Fernando Perez <fperez@colorado.edu>
2946
2952
2947 * IPython/numutils.py (identity): new function, for building
2953 * IPython/numutils.py (identity): new function, for building
2948 arbitrary rank Kronecker deltas (mostly backwards compatible with
2954 arbitrary rank Kronecker deltas (mostly backwards compatible with
2949 Numeric.identity)
2955 Numeric.identity)
2950
2956
2951 2003-06-03 Fernando Perez <fperez@colorado.edu>
2957 2003-06-03 Fernando Perez <fperez@colorado.edu>
2952
2958
2953 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2959 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2954 arguments passed to magics with spaces, to allow trailing '\' to
2960 arguments passed to magics with spaces, to allow trailing '\' to
2955 work normally (mainly for Windows users).
2961 work normally (mainly for Windows users).
2956
2962
2957 2003-05-29 Fernando Perez <fperez@colorado.edu>
2963 2003-05-29 Fernando Perez <fperez@colorado.edu>
2958
2964
2959 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2965 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2960 instead of pydoc.help. This fixes a bizarre behavior where
2966 instead of pydoc.help. This fixes a bizarre behavior where
2961 printing '%s' % locals() would trigger the help system. Now
2967 printing '%s' % locals() would trigger the help system. Now
2962 ipython behaves like normal python does.
2968 ipython behaves like normal python does.
2963
2969
2964 Note that if one does 'from pydoc import help', the bizarre
2970 Note that if one does 'from pydoc import help', the bizarre
2965 behavior returns, but this will also happen in normal python, so
2971 behavior returns, but this will also happen in normal python, so
2966 it's not an ipython bug anymore (it has to do with how pydoc.help
2972 it's not an ipython bug anymore (it has to do with how pydoc.help
2967 is implemented).
2973 is implemented).
2968
2974
2969 2003-05-22 Fernando Perez <fperez@colorado.edu>
2975 2003-05-22 Fernando Perez <fperez@colorado.edu>
2970
2976
2971 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2977 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2972 return [] instead of None when nothing matches, also match to end
2978 return [] instead of None when nothing matches, also match to end
2973 of line. Patch by Gary Bishop.
2979 of line. Patch by Gary Bishop.
2974
2980
2975 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2981 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2976 protection as before, for files passed on the command line. This
2982 protection as before, for files passed on the command line. This
2977 prevents the CrashHandler from kicking in if user files call into
2983 prevents the CrashHandler from kicking in if user files call into
2978 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2984 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2979 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2985 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2980
2986
2981 2003-05-20 *** Released version 0.4.0
2987 2003-05-20 *** Released version 0.4.0
2982
2988
2983 2003-05-20 Fernando Perez <fperez@colorado.edu>
2989 2003-05-20 Fernando Perez <fperez@colorado.edu>
2984
2990
2985 * setup.py: added support for manpages. It's a bit hackish b/c of
2991 * setup.py: added support for manpages. It's a bit hackish b/c of
2986 a bug in the way the bdist_rpm distutils target handles gzipped
2992 a bug in the way the bdist_rpm distutils target handles gzipped
2987 manpages, but it works. After a patch by Jack.
2993 manpages, but it works. After a patch by Jack.
2988
2994
2989 2003-05-19 Fernando Perez <fperez@colorado.edu>
2995 2003-05-19 Fernando Perez <fperez@colorado.edu>
2990
2996
2991 * IPython/numutils.py: added a mockup of the kinds module, since
2997 * IPython/numutils.py: added a mockup of the kinds module, since
2992 it was recently removed from Numeric. This way, numutils will
2998 it was recently removed from Numeric. This way, numutils will
2993 work for all users even if they are missing kinds.
2999 work for all users even if they are missing kinds.
2994
3000
2995 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3001 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2996 failure, which can occur with SWIG-wrapped extensions. After a
3002 failure, which can occur with SWIG-wrapped extensions. After a
2997 crash report from Prabhu.
3003 crash report from Prabhu.
2998
3004
2999 2003-05-16 Fernando Perez <fperez@colorado.edu>
3005 2003-05-16 Fernando Perez <fperez@colorado.edu>
3000
3006
3001 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3007 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3002 protect ipython from user code which may call directly
3008 protect ipython from user code which may call directly
3003 sys.excepthook (this looks like an ipython crash to the user, even
3009 sys.excepthook (this looks like an ipython crash to the user, even
3004 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3010 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3005 This is especially important to help users of WxWindows, but may
3011 This is especially important to help users of WxWindows, but may
3006 also be useful in other cases.
3012 also be useful in other cases.
3007
3013
3008 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3014 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3009 an optional tb_offset to be specified, and to preserve exception
3015 an optional tb_offset to be specified, and to preserve exception
3010 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3016 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3011
3017
3012 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3018 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3013
3019
3014 2003-05-15 Fernando Perez <fperez@colorado.edu>
3020 2003-05-15 Fernando Perez <fperez@colorado.edu>
3015
3021
3016 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3022 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3017 installing for a new user under Windows.
3023 installing for a new user under Windows.
3018
3024
3019 2003-05-12 Fernando Perez <fperez@colorado.edu>
3025 2003-05-12 Fernando Perez <fperez@colorado.edu>
3020
3026
3021 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3027 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3022 handler for Emacs comint-based lines. Currently it doesn't do
3028 handler for Emacs comint-based lines. Currently it doesn't do
3023 much (but importantly, it doesn't update the history cache). In
3029 much (but importantly, it doesn't update the history cache). In
3024 the future it may be expanded if Alex needs more functionality
3030 the future it may be expanded if Alex needs more functionality
3025 there.
3031 there.
3026
3032
3027 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3033 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3028 info to crash reports.
3034 info to crash reports.
3029
3035
3030 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3036 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3031 just like Python's -c. Also fixed crash with invalid -color
3037 just like Python's -c. Also fixed crash with invalid -color
3032 option value at startup. Thanks to Will French
3038 option value at startup. Thanks to Will French
3033 <wfrench-AT-bestweb.net> for the bug report.
3039 <wfrench-AT-bestweb.net> for the bug report.
3034
3040
3035 2003-05-09 Fernando Perez <fperez@colorado.edu>
3041 2003-05-09 Fernando Perez <fperez@colorado.edu>
3036
3042
3037 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3043 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3038 to EvalDict (it's a mapping, after all) and simplified its code
3044 to EvalDict (it's a mapping, after all) and simplified its code
3039 quite a bit, after a nice discussion on c.l.py where Gustavo
3045 quite a bit, after a nice discussion on c.l.py where Gustavo
3040 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3046 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3041
3047
3042 2003-04-30 Fernando Perez <fperez@colorado.edu>
3048 2003-04-30 Fernando Perez <fperez@colorado.edu>
3043
3049
3044 * IPython/genutils.py (timings_out): modified it to reduce its
3050 * IPython/genutils.py (timings_out): modified it to reduce its
3045 overhead in the common reps==1 case.
3051 overhead in the common reps==1 case.
3046
3052
3047 2003-04-29 Fernando Perez <fperez@colorado.edu>
3053 2003-04-29 Fernando Perez <fperez@colorado.edu>
3048
3054
3049 * IPython/genutils.py (timings_out): Modified to use the resource
3055 * IPython/genutils.py (timings_out): Modified to use the resource
3050 module, which avoids the wraparound problems of time.clock().
3056 module, which avoids the wraparound problems of time.clock().
3051
3057
3052 2003-04-17 *** Released version 0.2.15pre4
3058 2003-04-17 *** Released version 0.2.15pre4
3053
3059
3054 2003-04-17 Fernando Perez <fperez@colorado.edu>
3060 2003-04-17 Fernando Perez <fperez@colorado.edu>
3055
3061
3056 * setup.py (scriptfiles): Split windows-specific stuff over to a
3062 * setup.py (scriptfiles): Split windows-specific stuff over to a
3057 separate file, in an attempt to have a Windows GUI installer.
3063 separate file, in an attempt to have a Windows GUI installer.
3058 That didn't work, but part of the groundwork is done.
3064 That didn't work, but part of the groundwork is done.
3059
3065
3060 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3066 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3061 indent/unindent with 4 spaces. Particularly useful in combination
3067 indent/unindent with 4 spaces. Particularly useful in combination
3062 with the new auto-indent option.
3068 with the new auto-indent option.
3063
3069
3064 2003-04-16 Fernando Perez <fperez@colorado.edu>
3070 2003-04-16 Fernando Perez <fperez@colorado.edu>
3065
3071
3066 * IPython/Magic.py: various replacements of self.rc for
3072 * IPython/Magic.py: various replacements of self.rc for
3067 self.shell.rc. A lot more remains to be done to fully disentangle
3073 self.shell.rc. A lot more remains to be done to fully disentangle
3068 this class from the main Shell class.
3074 this class from the main Shell class.
3069
3075
3070 * IPython/GnuplotRuntime.py: added checks for mouse support so
3076 * IPython/GnuplotRuntime.py: added checks for mouse support so
3071 that we don't try to enable it if the current gnuplot doesn't
3077 that we don't try to enable it if the current gnuplot doesn't
3072 really support it. Also added checks so that we don't try to
3078 really support it. Also added checks so that we don't try to
3073 enable persist under Windows (where Gnuplot doesn't recognize the
3079 enable persist under Windows (where Gnuplot doesn't recognize the
3074 option).
3080 option).
3075
3081
3076 * IPython/iplib.py (InteractiveShell.interact): Added optional
3082 * IPython/iplib.py (InteractiveShell.interact): Added optional
3077 auto-indenting code, after a patch by King C. Shu
3083 auto-indenting code, after a patch by King C. Shu
3078 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3084 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3079 get along well with pasting indented code. If I ever figure out
3085 get along well with pasting indented code. If I ever figure out
3080 how to make that part go well, it will become on by default.
3086 how to make that part go well, it will become on by default.
3081
3087
3082 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3088 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3083 crash ipython if there was an unmatched '%' in the user's prompt
3089 crash ipython if there was an unmatched '%' in the user's prompt
3084 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3090 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3085
3091
3086 * IPython/iplib.py (InteractiveShell.interact): removed the
3092 * IPython/iplib.py (InteractiveShell.interact): removed the
3087 ability to ask the user whether he wants to crash or not at the
3093 ability to ask the user whether he wants to crash or not at the
3088 'last line' exception handler. Calling functions at that point
3094 'last line' exception handler. Calling functions at that point
3089 changes the stack, and the error reports would have incorrect
3095 changes the stack, and the error reports would have incorrect
3090 tracebacks.
3096 tracebacks.
3091
3097
3092 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3098 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3093 pass through a peger a pretty-printed form of any object. After a
3099 pass through a peger a pretty-printed form of any object. After a
3094 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3100 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3095
3101
3096 2003-04-14 Fernando Perez <fperez@colorado.edu>
3102 2003-04-14 Fernando Perez <fperez@colorado.edu>
3097
3103
3098 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3104 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3099 all files in ~ would be modified at first install (instead of
3105 all files in ~ would be modified at first install (instead of
3100 ~/.ipython). This could be potentially disastrous, as the
3106 ~/.ipython). This could be potentially disastrous, as the
3101 modification (make line-endings native) could damage binary files.
3107 modification (make line-endings native) could damage binary files.
3102
3108
3103 2003-04-10 Fernando Perez <fperez@colorado.edu>
3109 2003-04-10 Fernando Perez <fperez@colorado.edu>
3104
3110
3105 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3111 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3106 handle only lines which are invalid python. This now means that
3112 handle only lines which are invalid python. This now means that
3107 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3113 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3108 for the bug report.
3114 for the bug report.
3109
3115
3110 2003-04-01 Fernando Perez <fperez@colorado.edu>
3116 2003-04-01 Fernando Perez <fperez@colorado.edu>
3111
3117
3112 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3118 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3113 where failing to set sys.last_traceback would crash pdb.pm().
3119 where failing to set sys.last_traceback would crash pdb.pm().
3114 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3120 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3115 report.
3121 report.
3116
3122
3117 2003-03-25 Fernando Perez <fperez@colorado.edu>
3123 2003-03-25 Fernando Perez <fperez@colorado.edu>
3118
3124
3119 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3125 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3120 before printing it (it had a lot of spurious blank lines at the
3126 before printing it (it had a lot of spurious blank lines at the
3121 end).
3127 end).
3122
3128
3123 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3129 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3124 output would be sent 21 times! Obviously people don't use this
3130 output would be sent 21 times! Obviously people don't use this
3125 too often, or I would have heard about it.
3131 too often, or I would have heard about it.
3126
3132
3127 2003-03-24 Fernando Perez <fperez@colorado.edu>
3133 2003-03-24 Fernando Perez <fperez@colorado.edu>
3128
3134
3129 * setup.py (scriptfiles): renamed the data_files parameter from
3135 * setup.py (scriptfiles): renamed the data_files parameter from
3130 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3136 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3131 for the patch.
3137 for the patch.
3132
3138
3133 2003-03-20 Fernando Perez <fperez@colorado.edu>
3139 2003-03-20 Fernando Perez <fperez@colorado.edu>
3134
3140
3135 * IPython/genutils.py (error): added error() and fatal()
3141 * IPython/genutils.py (error): added error() and fatal()
3136 functions.
3142 functions.
3137
3143
3138 2003-03-18 *** Released version 0.2.15pre3
3144 2003-03-18 *** Released version 0.2.15pre3
3139
3145
3140 2003-03-18 Fernando Perez <fperez@colorado.edu>
3146 2003-03-18 Fernando Perez <fperez@colorado.edu>
3141
3147
3142 * setupext/install_data_ext.py
3148 * setupext/install_data_ext.py
3143 (install_data_ext.initialize_options): Class contributed by Jack
3149 (install_data_ext.initialize_options): Class contributed by Jack
3144 Moffit for fixing the old distutils hack. He is sending this to
3150 Moffit for fixing the old distutils hack. He is sending this to
3145 the distutils folks so in the future we may not need it as a
3151 the distutils folks so in the future we may not need it as a
3146 private fix.
3152 private fix.
3147
3153
3148 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3154 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3149 changes for Debian packaging. See his patch for full details.
3155 changes for Debian packaging. See his patch for full details.
3150 The old distutils hack of making the ipythonrc* files carry a
3156 The old distutils hack of making the ipythonrc* files carry a
3151 bogus .py extension is gone, at last. Examples were moved to a
3157 bogus .py extension is gone, at last. Examples were moved to a
3152 separate subdir under doc/, and the separate executable scripts
3158 separate subdir under doc/, and the separate executable scripts
3153 now live in their own directory. Overall a great cleanup. The
3159 now live in their own directory. Overall a great cleanup. The
3154 manual was updated to use the new files, and setup.py has been
3160 manual was updated to use the new files, and setup.py has been
3155 fixed for this setup.
3161 fixed for this setup.
3156
3162
3157 * IPython/PyColorize.py (Parser.usage): made non-executable and
3163 * IPython/PyColorize.py (Parser.usage): made non-executable and
3158 created a pycolor wrapper around it to be included as a script.
3164 created a pycolor wrapper around it to be included as a script.
3159
3165
3160 2003-03-12 *** Released version 0.2.15pre2
3166 2003-03-12 *** Released version 0.2.15pre2
3161
3167
3162 2003-03-12 Fernando Perez <fperez@colorado.edu>
3168 2003-03-12 Fernando Perez <fperez@colorado.edu>
3163
3169
3164 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3170 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3165 long-standing problem with garbage characters in some terminals.
3171 long-standing problem with garbage characters in some terminals.
3166 The issue was really that the \001 and \002 escapes must _only_ be
3172 The issue was really that the \001 and \002 escapes must _only_ be
3167 passed to input prompts (which call readline), but _never_ to
3173 passed to input prompts (which call readline), but _never_ to
3168 normal text to be printed on screen. I changed ColorANSI to have
3174 normal text to be printed on screen. I changed ColorANSI to have
3169 two classes: TermColors and InputTermColors, each with the
3175 two classes: TermColors and InputTermColors, each with the
3170 appropriate escapes for input prompts or normal text. The code in
3176 appropriate escapes for input prompts or normal text. The code in
3171 Prompts.py got slightly more complicated, but this very old and
3177 Prompts.py got slightly more complicated, but this very old and
3172 annoying bug is finally fixed.
3178 annoying bug is finally fixed.
3173
3179
3174 All the credit for nailing down the real origin of this problem
3180 All the credit for nailing down the real origin of this problem
3175 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3181 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3176 *Many* thanks to him for spending quite a bit of effort on this.
3182 *Many* thanks to him for spending quite a bit of effort on this.
3177
3183
3178 2003-03-05 *** Released version 0.2.15pre1
3184 2003-03-05 *** Released version 0.2.15pre1
3179
3185
3180 2003-03-03 Fernando Perez <fperez@colorado.edu>
3186 2003-03-03 Fernando Perez <fperez@colorado.edu>
3181
3187
3182 * IPython/FakeModule.py: Moved the former _FakeModule to a
3188 * IPython/FakeModule.py: Moved the former _FakeModule to a
3183 separate file, because it's also needed by Magic (to fix a similar
3189 separate file, because it's also needed by Magic (to fix a similar
3184 pickle-related issue in @run).
3190 pickle-related issue in @run).
3185
3191
3186 2003-03-02 Fernando Perez <fperez@colorado.edu>
3192 2003-03-02 Fernando Perez <fperez@colorado.edu>
3187
3193
3188 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3194 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3189 the autocall option at runtime.
3195 the autocall option at runtime.
3190 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3196 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3191 across Magic.py to start separating Magic from InteractiveShell.
3197 across Magic.py to start separating Magic from InteractiveShell.
3192 (Magic._ofind): Fixed to return proper namespace for dotted
3198 (Magic._ofind): Fixed to return proper namespace for dotted
3193 names. Before, a dotted name would always return 'not currently
3199 names. Before, a dotted name would always return 'not currently
3194 defined', because it would find the 'parent'. s.x would be found,
3200 defined', because it would find the 'parent'. s.x would be found,
3195 but since 'x' isn't defined by itself, it would get confused.
3201 but since 'x' isn't defined by itself, it would get confused.
3196 (Magic.magic_run): Fixed pickling problems reported by Ralf
3202 (Magic.magic_run): Fixed pickling problems reported by Ralf
3197 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3203 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3198 that I'd used when Mike Heeter reported similar issues at the
3204 that I'd used when Mike Heeter reported similar issues at the
3199 top-level, but now for @run. It boils down to injecting the
3205 top-level, but now for @run. It boils down to injecting the
3200 namespace where code is being executed with something that looks
3206 namespace where code is being executed with something that looks
3201 enough like a module to fool pickle.dump(). Since a pickle stores
3207 enough like a module to fool pickle.dump(). Since a pickle stores
3202 a named reference to the importing module, we need this for
3208 a named reference to the importing module, we need this for
3203 pickles to save something sensible.
3209 pickles to save something sensible.
3204
3210
3205 * IPython/ipmaker.py (make_IPython): added an autocall option.
3211 * IPython/ipmaker.py (make_IPython): added an autocall option.
3206
3212
3207 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3213 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3208 the auto-eval code. Now autocalling is an option, and the code is
3214 the auto-eval code. Now autocalling is an option, and the code is
3209 also vastly safer. There is no more eval() involved at all.
3215 also vastly safer. There is no more eval() involved at all.
3210
3216
3211 2003-03-01 Fernando Perez <fperez@colorado.edu>
3217 2003-03-01 Fernando Perez <fperez@colorado.edu>
3212
3218
3213 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3219 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3214 dict with named keys instead of a tuple.
3220 dict with named keys instead of a tuple.
3215
3221
3216 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3222 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3217
3223
3218 * setup.py (make_shortcut): Fixed message about directories
3224 * setup.py (make_shortcut): Fixed message about directories
3219 created during Windows installation (the directories were ok, just
3225 created during Windows installation (the directories were ok, just
3220 the printed message was misleading). Thanks to Chris Liechti
3226 the printed message was misleading). Thanks to Chris Liechti
3221 <cliechti-AT-gmx.net> for the heads up.
3227 <cliechti-AT-gmx.net> for the heads up.
3222
3228
3223 2003-02-21 Fernando Perez <fperez@colorado.edu>
3229 2003-02-21 Fernando Perez <fperez@colorado.edu>
3224
3230
3225 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3231 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3226 of ValueError exception when checking for auto-execution. This
3232 of ValueError exception when checking for auto-execution. This
3227 one is raised by things like Numeric arrays arr.flat when the
3233 one is raised by things like Numeric arrays arr.flat when the
3228 array is non-contiguous.
3234 array is non-contiguous.
3229
3235
3230 2003-01-31 Fernando Perez <fperez@colorado.edu>
3236 2003-01-31 Fernando Perez <fperez@colorado.edu>
3231
3237
3232 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3238 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3233 not return any value at all (even though the command would get
3239 not return any value at all (even though the command would get
3234 executed).
3240 executed).
3235 (xsys): Flush stdout right after printing the command to ensure
3241 (xsys): Flush stdout right after printing the command to ensure
3236 proper ordering of commands and command output in the total
3242 proper ordering of commands and command output in the total
3237 output.
3243 output.
3238 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3244 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3239 system/getoutput as defaults. The old ones are kept for
3245 system/getoutput as defaults. The old ones are kept for
3240 compatibility reasons, so no code which uses this library needs
3246 compatibility reasons, so no code which uses this library needs
3241 changing.
3247 changing.
3242
3248
3243 2003-01-27 *** Released version 0.2.14
3249 2003-01-27 *** Released version 0.2.14
3244
3250
3245 2003-01-25 Fernando Perez <fperez@colorado.edu>
3251 2003-01-25 Fernando Perez <fperez@colorado.edu>
3246
3252
3247 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3253 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3248 functions defined in previous edit sessions could not be re-edited
3254 functions defined in previous edit sessions could not be re-edited
3249 (because the temp files were immediately removed). Now temp files
3255 (because the temp files were immediately removed). Now temp files
3250 are removed only at IPython's exit.
3256 are removed only at IPython's exit.
3251 (Magic.magic_run): Improved @run to perform shell-like expansions
3257 (Magic.magic_run): Improved @run to perform shell-like expansions
3252 on its arguments (~users and $VARS). With this, @run becomes more
3258 on its arguments (~users and $VARS). With this, @run becomes more
3253 like a normal command-line.
3259 like a normal command-line.
3254
3260
3255 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3261 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3256 bugs related to embedding and cleaned up that code. A fairly
3262 bugs related to embedding and cleaned up that code. A fairly
3257 important one was the impossibility to access the global namespace
3263 important one was the impossibility to access the global namespace
3258 through the embedded IPython (only local variables were visible).
3264 through the embedded IPython (only local variables were visible).
3259
3265
3260 2003-01-14 Fernando Perez <fperez@colorado.edu>
3266 2003-01-14 Fernando Perez <fperez@colorado.edu>
3261
3267
3262 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3268 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3263 auto-calling to be a bit more conservative. Now it doesn't get
3269 auto-calling to be a bit more conservative. Now it doesn't get
3264 triggered if any of '!=()<>' are in the rest of the input line, to
3270 triggered if any of '!=()<>' are in the rest of the input line, to
3265 allow comparing callables. Thanks to Alex for the heads up.
3271 allow comparing callables. Thanks to Alex for the heads up.
3266
3272
3267 2003-01-07 Fernando Perez <fperez@colorado.edu>
3273 2003-01-07 Fernando Perez <fperez@colorado.edu>
3268
3274
3269 * IPython/genutils.py (page): fixed estimation of the number of
3275 * IPython/genutils.py (page): fixed estimation of the number of
3270 lines in a string to be paged to simply count newlines. This
3276 lines in a string to be paged to simply count newlines. This
3271 prevents over-guessing due to embedded escape sequences. A better
3277 prevents over-guessing due to embedded escape sequences. A better
3272 long-term solution would involve stripping out the control chars
3278 long-term solution would involve stripping out the control chars
3273 for the count, but it's potentially so expensive I just don't
3279 for the count, but it's potentially so expensive I just don't
3274 think it's worth doing.
3280 think it's worth doing.
3275
3281
3276 2002-12-19 *** Released version 0.2.14pre50
3282 2002-12-19 *** Released version 0.2.14pre50
3277
3283
3278 2002-12-19 Fernando Perez <fperez@colorado.edu>
3284 2002-12-19 Fernando Perez <fperez@colorado.edu>
3279
3285
3280 * tools/release (version): Changed release scripts to inform
3286 * tools/release (version): Changed release scripts to inform
3281 Andrea and build a NEWS file with a list of recent changes.
3287 Andrea and build a NEWS file with a list of recent changes.
3282
3288
3283 * IPython/ColorANSI.py (__all__): changed terminal detection
3289 * IPython/ColorANSI.py (__all__): changed terminal detection
3284 code. Seems to work better for xterms without breaking
3290 code. Seems to work better for xterms without breaking
3285 konsole. Will need more testing to determine if WinXP and Mac OSX
3291 konsole. Will need more testing to determine if WinXP and Mac OSX
3286 also work ok.
3292 also work ok.
3287
3293
3288 2002-12-18 *** Released version 0.2.14pre49
3294 2002-12-18 *** Released version 0.2.14pre49
3289
3295
3290 2002-12-18 Fernando Perez <fperez@colorado.edu>
3296 2002-12-18 Fernando Perez <fperez@colorado.edu>
3291
3297
3292 * Docs: added new info about Mac OSX, from Andrea.
3298 * Docs: added new info about Mac OSX, from Andrea.
3293
3299
3294 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3300 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3295 allow direct plotting of python strings whose format is the same
3301 allow direct plotting of python strings whose format is the same
3296 of gnuplot data files.
3302 of gnuplot data files.
3297
3303
3298 2002-12-16 Fernando Perez <fperez@colorado.edu>
3304 2002-12-16 Fernando Perez <fperez@colorado.edu>
3299
3305
3300 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3306 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3301 value of exit question to be acknowledged.
3307 value of exit question to be acknowledged.
3302
3308
3303 2002-12-03 Fernando Perez <fperez@colorado.edu>
3309 2002-12-03 Fernando Perez <fperez@colorado.edu>
3304
3310
3305 * IPython/ipmaker.py: removed generators, which had been added
3311 * IPython/ipmaker.py: removed generators, which had been added
3306 by mistake in an earlier debugging run. This was causing trouble
3312 by mistake in an earlier debugging run. This was causing trouble
3307 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3313 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3308 for pointing this out.
3314 for pointing this out.
3309
3315
3310 2002-11-17 Fernando Perez <fperez@colorado.edu>
3316 2002-11-17 Fernando Perez <fperez@colorado.edu>
3311
3317
3312 * Manual: updated the Gnuplot section.
3318 * Manual: updated the Gnuplot section.
3313
3319
3314 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3320 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3315 a much better split of what goes in Runtime and what goes in
3321 a much better split of what goes in Runtime and what goes in
3316 Interactive.
3322 Interactive.
3317
3323
3318 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3324 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3319 being imported from iplib.
3325 being imported from iplib.
3320
3326
3321 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3327 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3322 for command-passing. Now the global Gnuplot instance is called
3328 for command-passing. Now the global Gnuplot instance is called
3323 'gp' instead of 'g', which was really a far too fragile and
3329 'gp' instead of 'g', which was really a far too fragile and
3324 common name.
3330 common name.
3325
3331
3326 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3332 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3327 bounding boxes generated by Gnuplot for square plots.
3333 bounding boxes generated by Gnuplot for square plots.
3328
3334
3329 * IPython/genutils.py (popkey): new function added. I should
3335 * IPython/genutils.py (popkey): new function added. I should
3330 suggest this on c.l.py as a dict method, it seems useful.
3336 suggest this on c.l.py as a dict method, it seems useful.
3331
3337
3332 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3338 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3333 to transparently handle PostScript generation. MUCH better than
3339 to transparently handle PostScript generation. MUCH better than
3334 the previous plot_eps/replot_eps (which I removed now). The code
3340 the previous plot_eps/replot_eps (which I removed now). The code
3335 is also fairly clean and well documented now (including
3341 is also fairly clean and well documented now (including
3336 docstrings).
3342 docstrings).
3337
3343
3338 2002-11-13 Fernando Perez <fperez@colorado.edu>
3344 2002-11-13 Fernando Perez <fperez@colorado.edu>
3339
3345
3340 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3346 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3341 (inconsistent with options).
3347 (inconsistent with options).
3342
3348
3343 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3349 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3344 manually disabled, I don't know why. Fixed it.
3350 manually disabled, I don't know why. Fixed it.
3345 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3351 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3346 eps output.
3352 eps output.
3347
3353
3348 2002-11-12 Fernando Perez <fperez@colorado.edu>
3354 2002-11-12 Fernando Perez <fperez@colorado.edu>
3349
3355
3350 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3356 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3351 don't propagate up to caller. Fixes crash reported by François
3357 don't propagate up to caller. Fixes crash reported by François
3352 Pinard.
3358 Pinard.
3353
3359
3354 2002-11-09 Fernando Perez <fperez@colorado.edu>
3360 2002-11-09 Fernando Perez <fperez@colorado.edu>
3355
3361
3356 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3362 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3357 history file for new users.
3363 history file for new users.
3358 (make_IPython): fixed bug where initial install would leave the
3364 (make_IPython): fixed bug where initial install would leave the
3359 user running in the .ipython dir.
3365 user running in the .ipython dir.
3360 (make_IPython): fixed bug where config dir .ipython would be
3366 (make_IPython): fixed bug where config dir .ipython would be
3361 created regardless of the given -ipythondir option. Thanks to Cory
3367 created regardless of the given -ipythondir option. Thanks to Cory
3362 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3368 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3363
3369
3364 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3370 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3365 type confirmations. Will need to use it in all of IPython's code
3371 type confirmations. Will need to use it in all of IPython's code
3366 consistently.
3372 consistently.
3367
3373
3368 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3374 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3369 context to print 31 lines instead of the default 5. This will make
3375 context to print 31 lines instead of the default 5. This will make
3370 the crash reports extremely detailed in case the problem is in
3376 the crash reports extremely detailed in case the problem is in
3371 libraries I don't have access to.
3377 libraries I don't have access to.
3372
3378
3373 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3379 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3374 line of defense' code to still crash, but giving users fair
3380 line of defense' code to still crash, but giving users fair
3375 warning. I don't want internal errors to go unreported: if there's
3381 warning. I don't want internal errors to go unreported: if there's
3376 an internal problem, IPython should crash and generate a full
3382 an internal problem, IPython should crash and generate a full
3377 report.
3383 report.
3378
3384
3379 2002-11-08 Fernando Perez <fperez@colorado.edu>
3385 2002-11-08 Fernando Perez <fperez@colorado.edu>
3380
3386
3381 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3387 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3382 otherwise uncaught exceptions which can appear if people set
3388 otherwise uncaught exceptions which can appear if people set
3383 sys.stdout to something badly broken. Thanks to a crash report
3389 sys.stdout to something badly broken. Thanks to a crash report
3384 from henni-AT-mail.brainbot.com.
3390 from henni-AT-mail.brainbot.com.
3385
3391
3386 2002-11-04 Fernando Perez <fperez@colorado.edu>
3392 2002-11-04 Fernando Perez <fperez@colorado.edu>
3387
3393
3388 * IPython/iplib.py (InteractiveShell.interact): added
3394 * IPython/iplib.py (InteractiveShell.interact): added
3389 __IPYTHON__active to the builtins. It's a flag which goes on when
3395 __IPYTHON__active to the builtins. It's a flag which goes on when
3390 the interaction starts and goes off again when it stops. This
3396 the interaction starts and goes off again when it stops. This
3391 allows embedding code to detect being inside IPython. Before this
3397 allows embedding code to detect being inside IPython. Before this
3392 was done via __IPYTHON__, but that only shows that an IPython
3398 was done via __IPYTHON__, but that only shows that an IPython
3393 instance has been created.
3399 instance has been created.
3394
3400
3395 * IPython/Magic.py (Magic.magic_env): I realized that in a
3401 * IPython/Magic.py (Magic.magic_env): I realized that in a
3396 UserDict, instance.data holds the data as a normal dict. So I
3402 UserDict, instance.data holds the data as a normal dict. So I
3397 modified @env to return os.environ.data instead of rebuilding a
3403 modified @env to return os.environ.data instead of rebuilding a
3398 dict by hand.
3404 dict by hand.
3399
3405
3400 2002-11-02 Fernando Perez <fperez@colorado.edu>
3406 2002-11-02 Fernando Perez <fperez@colorado.edu>
3401
3407
3402 * IPython/genutils.py (warn): changed so that level 1 prints no
3408 * IPython/genutils.py (warn): changed so that level 1 prints no
3403 header. Level 2 is now the default (with 'WARNING' header, as
3409 header. Level 2 is now the default (with 'WARNING' header, as
3404 before). I think I tracked all places where changes were needed in
3410 before). I think I tracked all places where changes were needed in
3405 IPython, but outside code using the old level numbering may have
3411 IPython, but outside code using the old level numbering may have
3406 broken.
3412 broken.
3407
3413
3408 * IPython/iplib.py (InteractiveShell.runcode): added this to
3414 * IPython/iplib.py (InteractiveShell.runcode): added this to
3409 handle the tracebacks in SystemExit traps correctly. The previous
3415 handle the tracebacks in SystemExit traps correctly. The previous
3410 code (through interact) was printing more of the stack than
3416 code (through interact) was printing more of the stack than
3411 necessary, showing IPython internal code to the user.
3417 necessary, showing IPython internal code to the user.
3412
3418
3413 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3419 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3414 default. Now that the default at the confirmation prompt is yes,
3420 default. Now that the default at the confirmation prompt is yes,
3415 it's not so intrusive. François' argument that ipython sessions
3421 it's not so intrusive. François' argument that ipython sessions
3416 tend to be complex enough not to lose them from an accidental C-d,
3422 tend to be complex enough not to lose them from an accidental C-d,
3417 is a valid one.
3423 is a valid one.
3418
3424
3419 * IPython/iplib.py (InteractiveShell.interact): added a
3425 * IPython/iplib.py (InteractiveShell.interact): added a
3420 showtraceback() call to the SystemExit trap, and modified the exit
3426 showtraceback() call to the SystemExit trap, and modified the exit
3421 confirmation to have yes as the default.
3427 confirmation to have yes as the default.
3422
3428
3423 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3429 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3424 this file. It's been gone from the code for a long time, this was
3430 this file. It's been gone from the code for a long time, this was
3425 simply leftover junk.
3431 simply leftover junk.
3426
3432
3427 2002-11-01 Fernando Perez <fperez@colorado.edu>
3433 2002-11-01 Fernando Perez <fperez@colorado.edu>
3428
3434
3429 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3435 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3430 added. If set, IPython now traps EOF and asks for
3436 added. If set, IPython now traps EOF and asks for
3431 confirmation. After a request by François Pinard.
3437 confirmation. After a request by François Pinard.
3432
3438
3433 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3439 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3434 of @abort, and with a new (better) mechanism for handling the
3440 of @abort, and with a new (better) mechanism for handling the
3435 exceptions.
3441 exceptions.
3436
3442
3437 2002-10-27 Fernando Perez <fperez@colorado.edu>
3443 2002-10-27 Fernando Perez <fperez@colorado.edu>
3438
3444
3439 * IPython/usage.py (__doc__): updated the --help information and
3445 * IPython/usage.py (__doc__): updated the --help information and
3440 the ipythonrc file to indicate that -log generates
3446 the ipythonrc file to indicate that -log generates
3441 ./ipython.log. Also fixed the corresponding info in @logstart.
3447 ./ipython.log. Also fixed the corresponding info in @logstart.
3442 This and several other fixes in the manuals thanks to reports by
3448 This and several other fixes in the manuals thanks to reports by
3443 François Pinard <pinard-AT-iro.umontreal.ca>.
3449 François Pinard <pinard-AT-iro.umontreal.ca>.
3444
3450
3445 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3451 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3446 refer to @logstart (instead of @log, which doesn't exist).
3452 refer to @logstart (instead of @log, which doesn't exist).
3447
3453
3448 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3454 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3449 AttributeError crash. Thanks to Christopher Armstrong
3455 AttributeError crash. Thanks to Christopher Armstrong
3450 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3456 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3451 introduced recently (in 0.2.14pre37) with the fix to the eval
3457 introduced recently (in 0.2.14pre37) with the fix to the eval
3452 problem mentioned below.
3458 problem mentioned below.
3453
3459
3454 2002-10-17 Fernando Perez <fperez@colorado.edu>
3460 2002-10-17 Fernando Perez <fperez@colorado.edu>
3455
3461
3456 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3462 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3457 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3463 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3458
3464
3459 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3465 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3460 this function to fix a problem reported by Alex Schmolck. He saw
3466 this function to fix a problem reported by Alex Schmolck. He saw
3461 it with list comprehensions and generators, which were getting
3467 it with list comprehensions and generators, which were getting
3462 called twice. The real problem was an 'eval' call in testing for
3468 called twice. The real problem was an 'eval' call in testing for
3463 automagic which was evaluating the input line silently.
3469 automagic which was evaluating the input line silently.
3464
3470
3465 This is a potentially very nasty bug, if the input has side
3471 This is a potentially very nasty bug, if the input has side
3466 effects which must not be repeated. The code is much cleaner now,
3472 effects which must not be repeated. The code is much cleaner now,
3467 without any blanket 'except' left and with a regexp test for
3473 without any blanket 'except' left and with a regexp test for
3468 actual function names.
3474 actual function names.
3469
3475
3470 But an eval remains, which I'm not fully comfortable with. I just
3476 But an eval remains, which I'm not fully comfortable with. I just
3471 don't know how to find out if an expression could be a callable in
3477 don't know how to find out if an expression could be a callable in
3472 the user's namespace without doing an eval on the string. However
3478 the user's namespace without doing an eval on the string. However
3473 that string is now much more strictly checked so that no code
3479 that string is now much more strictly checked so that no code
3474 slips by, so the eval should only happen for things that can
3480 slips by, so the eval should only happen for things that can
3475 really be only function/method names.
3481 really be only function/method names.
3476
3482
3477 2002-10-15 Fernando Perez <fperez@colorado.edu>
3483 2002-10-15 Fernando Perez <fperez@colorado.edu>
3478
3484
3479 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3485 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3480 OSX information to main manual, removed README_Mac_OSX file from
3486 OSX information to main manual, removed README_Mac_OSX file from
3481 distribution. Also updated credits for recent additions.
3487 distribution. Also updated credits for recent additions.
3482
3488
3483 2002-10-10 Fernando Perez <fperez@colorado.edu>
3489 2002-10-10 Fernando Perez <fperez@colorado.edu>
3484
3490
3485 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3491 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3486 terminal-related issues. Many thanks to Andrea Riciputi
3492 terminal-related issues. Many thanks to Andrea Riciputi
3487 <andrea.riciputi-AT-libero.it> for writing it.
3493 <andrea.riciputi-AT-libero.it> for writing it.
3488
3494
3489 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3495 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3490 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3496 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3491
3497
3492 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3498 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3493 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3499 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3494 <syver-en-AT-online.no> who both submitted patches for this problem.
3500 <syver-en-AT-online.no> who both submitted patches for this problem.
3495
3501
3496 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3502 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3497 global embedding to make sure that things don't overwrite user
3503 global embedding to make sure that things don't overwrite user
3498 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3504 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3499
3505
3500 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3506 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3501 compatibility. Thanks to Hayden Callow
3507 compatibility. Thanks to Hayden Callow
3502 <h.callow-AT-elec.canterbury.ac.nz>
3508 <h.callow-AT-elec.canterbury.ac.nz>
3503
3509
3504 2002-10-04 Fernando Perez <fperez@colorado.edu>
3510 2002-10-04 Fernando Perez <fperez@colorado.edu>
3505
3511
3506 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3512 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3507 Gnuplot.File objects.
3513 Gnuplot.File objects.
3508
3514
3509 2002-07-23 Fernando Perez <fperez@colorado.edu>
3515 2002-07-23 Fernando Perez <fperez@colorado.edu>
3510
3516
3511 * IPython/genutils.py (timing): Added timings() and timing() for
3517 * IPython/genutils.py (timing): Added timings() and timing() for
3512 quick access to the most commonly needed data, the execution
3518 quick access to the most commonly needed data, the execution
3513 times. Old timing() renamed to timings_out().
3519 times. Old timing() renamed to timings_out().
3514
3520
3515 2002-07-18 Fernando Perez <fperez@colorado.edu>
3521 2002-07-18 Fernando Perez <fperez@colorado.edu>
3516
3522
3517 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3523 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3518 bug with nested instances disrupting the parent's tab completion.
3524 bug with nested instances disrupting the parent's tab completion.
3519
3525
3520 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3526 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3521 all_completions code to begin the emacs integration.
3527 all_completions code to begin the emacs integration.
3522
3528
3523 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3529 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3524 argument to allow titling individual arrays when plotting.
3530 argument to allow titling individual arrays when plotting.
3525
3531
3526 2002-07-15 Fernando Perez <fperez@colorado.edu>
3532 2002-07-15 Fernando Perez <fperez@colorado.edu>
3527
3533
3528 * setup.py (make_shortcut): changed to retrieve the value of
3534 * setup.py (make_shortcut): changed to retrieve the value of
3529 'Program Files' directory from the registry (this value changes in
3535 'Program Files' directory from the registry (this value changes in
3530 non-english versions of Windows). Thanks to Thomas Fanslau
3536 non-english versions of Windows). Thanks to Thomas Fanslau
3531 <tfanslau-AT-gmx.de> for the report.
3537 <tfanslau-AT-gmx.de> for the report.
3532
3538
3533 2002-07-10 Fernando Perez <fperez@colorado.edu>
3539 2002-07-10 Fernando Perez <fperez@colorado.edu>
3534
3540
3535 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3541 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3536 a bug in pdb, which crashes if a line with only whitespace is
3542 a bug in pdb, which crashes if a line with only whitespace is
3537 entered. Bug report submitted to sourceforge.
3543 entered. Bug report submitted to sourceforge.
3538
3544
3539 2002-07-09 Fernando Perez <fperez@colorado.edu>
3545 2002-07-09 Fernando Perez <fperez@colorado.edu>
3540
3546
3541 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3547 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3542 reporting exceptions (it's a bug in inspect.py, I just set a
3548 reporting exceptions (it's a bug in inspect.py, I just set a
3543 workaround).
3549 workaround).
3544
3550
3545 2002-07-08 Fernando Perez <fperez@colorado.edu>
3551 2002-07-08 Fernando Perez <fperez@colorado.edu>
3546
3552
3547 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3553 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3548 __IPYTHON__ in __builtins__ to show up in user_ns.
3554 __IPYTHON__ in __builtins__ to show up in user_ns.
3549
3555
3550 2002-07-03 Fernando Perez <fperez@colorado.edu>
3556 2002-07-03 Fernando Perez <fperez@colorado.edu>
3551
3557
3552 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3558 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3553 name from @gp_set_instance to @gp_set_default.
3559 name from @gp_set_instance to @gp_set_default.
3554
3560
3555 * IPython/ipmaker.py (make_IPython): default editor value set to
3561 * IPython/ipmaker.py (make_IPython): default editor value set to
3556 '0' (a string), to match the rc file. Otherwise will crash when
3562 '0' (a string), to match the rc file. Otherwise will crash when
3557 .strip() is called on it.
3563 .strip() is called on it.
3558
3564
3559
3565
3560 2002-06-28 Fernando Perez <fperez@colorado.edu>
3566 2002-06-28 Fernando Perez <fperez@colorado.edu>
3561
3567
3562 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3568 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3563 of files in current directory when a file is executed via
3569 of files in current directory when a file is executed via
3564 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3570 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3565
3571
3566 * setup.py (manfiles): fix for rpm builds, submitted by RA
3572 * setup.py (manfiles): fix for rpm builds, submitted by RA
3567 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3573 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3568
3574
3569 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3575 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3570 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3576 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3571 string!). A. Schmolck caught this one.
3577 string!). A. Schmolck caught this one.
3572
3578
3573 2002-06-27 Fernando Perez <fperez@colorado.edu>
3579 2002-06-27 Fernando Perez <fperez@colorado.edu>
3574
3580
3575 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3581 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3576 defined files at the cmd line. __name__ wasn't being set to
3582 defined files at the cmd line. __name__ wasn't being set to
3577 __main__.
3583 __main__.
3578
3584
3579 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3585 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3580 regular lists and tuples besides Numeric arrays.
3586 regular lists and tuples besides Numeric arrays.
3581
3587
3582 * IPython/Prompts.py (CachedOutput.__call__): Added output
3588 * IPython/Prompts.py (CachedOutput.__call__): Added output
3583 supression for input ending with ';'. Similar to Mathematica and
3589 supression for input ending with ';'. Similar to Mathematica and
3584 Matlab. The _* vars and Out[] list are still updated, just like
3590 Matlab. The _* vars and Out[] list are still updated, just like
3585 Mathematica behaves.
3591 Mathematica behaves.
3586
3592
3587 2002-06-25 Fernando Perez <fperez@colorado.edu>
3593 2002-06-25 Fernando Perez <fperez@colorado.edu>
3588
3594
3589 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3595 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3590 .ini extensions for profiels under Windows.
3596 .ini extensions for profiels under Windows.
3591
3597
3592 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3598 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3593 string form. Fix contributed by Alexander Schmolck
3599 string form. Fix contributed by Alexander Schmolck
3594 <a.schmolck-AT-gmx.net>
3600 <a.schmolck-AT-gmx.net>
3595
3601
3596 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3602 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3597 pre-configured Gnuplot instance.
3603 pre-configured Gnuplot instance.
3598
3604
3599 2002-06-21 Fernando Perez <fperez@colorado.edu>
3605 2002-06-21 Fernando Perez <fperez@colorado.edu>
3600
3606
3601 * IPython/numutils.py (exp_safe): new function, works around the
3607 * IPython/numutils.py (exp_safe): new function, works around the
3602 underflow problems in Numeric.
3608 underflow problems in Numeric.
3603 (log2): New fn. Safe log in base 2: returns exact integer answer
3609 (log2): New fn. Safe log in base 2: returns exact integer answer
3604 for exact integer powers of 2.
3610 for exact integer powers of 2.
3605
3611
3606 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3612 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3607 properly.
3613 properly.
3608
3614
3609 2002-06-20 Fernando Perez <fperez@colorado.edu>
3615 2002-06-20 Fernando Perez <fperez@colorado.edu>
3610
3616
3611 * IPython/genutils.py (timing): new function like
3617 * IPython/genutils.py (timing): new function like
3612 Mathematica's. Similar to time_test, but returns more info.
3618 Mathematica's. Similar to time_test, but returns more info.
3613
3619
3614 2002-06-18 Fernando Perez <fperez@colorado.edu>
3620 2002-06-18 Fernando Perez <fperez@colorado.edu>
3615
3621
3616 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3622 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3617 according to Mike Heeter's suggestions.
3623 according to Mike Heeter's suggestions.
3618
3624
3619 2002-06-16 Fernando Perez <fperez@colorado.edu>
3625 2002-06-16 Fernando Perez <fperez@colorado.edu>
3620
3626
3621 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3627 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3622 system. GnuplotMagic is gone as a user-directory option. New files
3628 system. GnuplotMagic is gone as a user-directory option. New files
3623 make it easier to use all the gnuplot stuff both from external
3629 make it easier to use all the gnuplot stuff both from external
3624 programs as well as from IPython. Had to rewrite part of
3630 programs as well as from IPython. Had to rewrite part of
3625 hardcopy() b/c of a strange bug: often the ps files simply don't
3631 hardcopy() b/c of a strange bug: often the ps files simply don't
3626 get created, and require a repeat of the command (often several
3632 get created, and require a repeat of the command (often several
3627 times).
3633 times).
3628
3634
3629 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3635 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3630 resolve output channel at call time, so that if sys.stderr has
3636 resolve output channel at call time, so that if sys.stderr has
3631 been redirected by user this gets honored.
3637 been redirected by user this gets honored.
3632
3638
3633 2002-06-13 Fernando Perez <fperez@colorado.edu>
3639 2002-06-13 Fernando Perez <fperez@colorado.edu>
3634
3640
3635 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3641 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3636 IPShell. Kept a copy with the old names to avoid breaking people's
3642 IPShell. Kept a copy with the old names to avoid breaking people's
3637 embedded code.
3643 embedded code.
3638
3644
3639 * IPython/ipython: simplified it to the bare minimum after
3645 * IPython/ipython: simplified it to the bare minimum after
3640 Holger's suggestions. Added info about how to use it in
3646 Holger's suggestions. Added info about how to use it in
3641 PYTHONSTARTUP.
3647 PYTHONSTARTUP.
3642
3648
3643 * IPython/Shell.py (IPythonShell): changed the options passing
3649 * IPython/Shell.py (IPythonShell): changed the options passing
3644 from a string with funky %s replacements to a straight list. Maybe
3650 from a string with funky %s replacements to a straight list. Maybe
3645 a bit more typing, but it follows sys.argv conventions, so there's
3651 a bit more typing, but it follows sys.argv conventions, so there's
3646 less special-casing to remember.
3652 less special-casing to remember.
3647
3653
3648 2002-06-12 Fernando Perez <fperez@colorado.edu>
3654 2002-06-12 Fernando Perez <fperez@colorado.edu>
3649
3655
3650 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3656 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3651 command. Thanks to a suggestion by Mike Heeter.
3657 command. Thanks to a suggestion by Mike Heeter.
3652 (Magic.magic_pfile): added behavior to look at filenames if given
3658 (Magic.magic_pfile): added behavior to look at filenames if given
3653 arg is not a defined object.
3659 arg is not a defined object.
3654 (Magic.magic_save): New @save function to save code snippets. Also
3660 (Magic.magic_save): New @save function to save code snippets. Also
3655 a Mike Heeter idea.
3661 a Mike Heeter idea.
3656
3662
3657 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3663 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3658 plot() and replot(). Much more convenient now, especially for
3664 plot() and replot(). Much more convenient now, especially for
3659 interactive use.
3665 interactive use.
3660
3666
3661 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3667 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3662 filenames.
3668 filenames.
3663
3669
3664 2002-06-02 Fernando Perez <fperez@colorado.edu>
3670 2002-06-02 Fernando Perez <fperez@colorado.edu>
3665
3671
3666 * IPython/Struct.py (Struct.__init__): modified to admit
3672 * IPython/Struct.py (Struct.__init__): modified to admit
3667 initialization via another struct.
3673 initialization via another struct.
3668
3674
3669 * IPython/genutils.py (SystemExec.__init__): New stateful
3675 * IPython/genutils.py (SystemExec.__init__): New stateful
3670 interface to xsys and bq. Useful for writing system scripts.
3676 interface to xsys and bq. Useful for writing system scripts.
3671
3677
3672 2002-05-30 Fernando Perez <fperez@colorado.edu>
3678 2002-05-30 Fernando Perez <fperez@colorado.edu>
3673
3679
3674 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3680 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3675 documents. This will make the user download smaller (it's getting
3681 documents. This will make the user download smaller (it's getting
3676 too big).
3682 too big).
3677
3683
3678 2002-05-29 Fernando Perez <fperez@colorado.edu>
3684 2002-05-29 Fernando Perez <fperez@colorado.edu>
3679
3685
3680 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3686 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3681 fix problems with shelve and pickle. Seems to work, but I don't
3687 fix problems with shelve and pickle. Seems to work, but I don't
3682 know if corner cases break it. Thanks to Mike Heeter
3688 know if corner cases break it. Thanks to Mike Heeter
3683 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3689 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3684
3690
3685 2002-05-24 Fernando Perez <fperez@colorado.edu>
3691 2002-05-24 Fernando Perez <fperez@colorado.edu>
3686
3692
3687 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3693 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3688 macros having broken.
3694 macros having broken.
3689
3695
3690 2002-05-21 Fernando Perez <fperez@colorado.edu>
3696 2002-05-21 Fernando Perez <fperez@colorado.edu>
3691
3697
3692 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3698 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3693 introduced logging bug: all history before logging started was
3699 introduced logging bug: all history before logging started was
3694 being written one character per line! This came from the redesign
3700 being written one character per line! This came from the redesign
3695 of the input history as a special list which slices to strings,
3701 of the input history as a special list which slices to strings,
3696 not to lists.
3702 not to lists.
3697
3703
3698 2002-05-20 Fernando Perez <fperez@colorado.edu>
3704 2002-05-20 Fernando Perez <fperez@colorado.edu>
3699
3705
3700 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3706 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3701 be an attribute of all classes in this module. The design of these
3707 be an attribute of all classes in this module. The design of these
3702 classes needs some serious overhauling.
3708 classes needs some serious overhauling.
3703
3709
3704 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3710 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3705 which was ignoring '_' in option names.
3711 which was ignoring '_' in option names.
3706
3712
3707 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3713 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3708 'Verbose_novars' to 'Context' and made it the new default. It's a
3714 'Verbose_novars' to 'Context' and made it the new default. It's a
3709 bit more readable and also safer than verbose.
3715 bit more readable and also safer than verbose.
3710
3716
3711 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3717 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3712 triple-quoted strings.
3718 triple-quoted strings.
3713
3719
3714 * IPython/OInspect.py (__all__): new module exposing the object
3720 * IPython/OInspect.py (__all__): new module exposing the object
3715 introspection facilities. Now the corresponding magics are dummy
3721 introspection facilities. Now the corresponding magics are dummy
3716 wrappers around this. Having this module will make it much easier
3722 wrappers around this. Having this module will make it much easier
3717 to put these functions into our modified pdb.
3723 to put these functions into our modified pdb.
3718 This new object inspector system uses the new colorizing module,
3724 This new object inspector system uses the new colorizing module,
3719 so source code and other things are nicely syntax highlighted.
3725 so source code and other things are nicely syntax highlighted.
3720
3726
3721 2002-05-18 Fernando Perez <fperez@colorado.edu>
3727 2002-05-18 Fernando Perez <fperez@colorado.edu>
3722
3728
3723 * IPython/ColorANSI.py: Split the coloring tools into a separate
3729 * IPython/ColorANSI.py: Split the coloring tools into a separate
3724 module so I can use them in other code easier (they were part of
3730 module so I can use them in other code easier (they were part of
3725 ultraTB).
3731 ultraTB).
3726
3732
3727 2002-05-17 Fernando Perez <fperez@colorado.edu>
3733 2002-05-17 Fernando Perez <fperez@colorado.edu>
3728
3734
3729 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3735 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3730 fixed it to set the global 'g' also to the called instance, as
3736 fixed it to set the global 'g' also to the called instance, as
3731 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3737 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3732 user's 'g' variables).
3738 user's 'g' variables).
3733
3739
3734 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3740 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3735 global variables (aliases to _ih,_oh) so that users which expect
3741 global variables (aliases to _ih,_oh) so that users which expect
3736 In[5] or Out[7] to work aren't unpleasantly surprised.
3742 In[5] or Out[7] to work aren't unpleasantly surprised.
3737 (InputList.__getslice__): new class to allow executing slices of
3743 (InputList.__getslice__): new class to allow executing slices of
3738 input history directly. Very simple class, complements the use of
3744 input history directly. Very simple class, complements the use of
3739 macros.
3745 macros.
3740
3746
3741 2002-05-16 Fernando Perez <fperez@colorado.edu>
3747 2002-05-16 Fernando Perez <fperez@colorado.edu>
3742
3748
3743 * setup.py (docdirbase): make doc directory be just doc/IPython
3749 * setup.py (docdirbase): make doc directory be just doc/IPython
3744 without version numbers, it will reduce clutter for users.
3750 without version numbers, it will reduce clutter for users.
3745
3751
3746 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3752 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3747 execfile call to prevent possible memory leak. See for details:
3753 execfile call to prevent possible memory leak. See for details:
3748 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3754 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3749
3755
3750 2002-05-15 Fernando Perez <fperez@colorado.edu>
3756 2002-05-15 Fernando Perez <fperez@colorado.edu>
3751
3757
3752 * IPython/Magic.py (Magic.magic_psource): made the object
3758 * IPython/Magic.py (Magic.magic_psource): made the object
3753 introspection names be more standard: pdoc, pdef, pfile and
3759 introspection names be more standard: pdoc, pdef, pfile and
3754 psource. They all print/page their output, and it makes
3760 psource. They all print/page their output, and it makes
3755 remembering them easier. Kept old names for compatibility as
3761 remembering them easier. Kept old names for compatibility as
3756 aliases.
3762 aliases.
3757
3763
3758 2002-05-14 Fernando Perez <fperez@colorado.edu>
3764 2002-05-14 Fernando Perez <fperez@colorado.edu>
3759
3765
3760 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3766 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3761 what the mouse problem was. The trick is to use gnuplot with temp
3767 what the mouse problem was. The trick is to use gnuplot with temp
3762 files and NOT with pipes (for data communication), because having
3768 files and NOT with pipes (for data communication), because having
3763 both pipes and the mouse on is bad news.
3769 both pipes and the mouse on is bad news.
3764
3770
3765 2002-05-13 Fernando Perez <fperez@colorado.edu>
3771 2002-05-13 Fernando Perez <fperez@colorado.edu>
3766
3772
3767 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3773 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3768 bug. Information would be reported about builtins even when
3774 bug. Information would be reported about builtins even when
3769 user-defined functions overrode them.
3775 user-defined functions overrode them.
3770
3776
3771 2002-05-11 Fernando Perez <fperez@colorado.edu>
3777 2002-05-11 Fernando Perez <fperez@colorado.edu>
3772
3778
3773 * IPython/__init__.py (__all__): removed FlexCompleter from
3779 * IPython/__init__.py (__all__): removed FlexCompleter from
3774 __all__ so that things don't fail in platforms without readline.
3780 __all__ so that things don't fail in platforms without readline.
3775
3781
3776 2002-05-10 Fernando Perez <fperez@colorado.edu>
3782 2002-05-10 Fernando Perez <fperez@colorado.edu>
3777
3783
3778 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3784 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3779 it requires Numeric, effectively making Numeric a dependency for
3785 it requires Numeric, effectively making Numeric a dependency for
3780 IPython.
3786 IPython.
3781
3787
3782 * Released 0.2.13
3788 * Released 0.2.13
3783
3789
3784 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3790 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3785 profiler interface. Now all the major options from the profiler
3791 profiler interface. Now all the major options from the profiler
3786 module are directly supported in IPython, both for single
3792 module are directly supported in IPython, both for single
3787 expressions (@prun) and for full programs (@run -p).
3793 expressions (@prun) and for full programs (@run -p).
3788
3794
3789 2002-05-09 Fernando Perez <fperez@colorado.edu>
3795 2002-05-09 Fernando Perez <fperez@colorado.edu>
3790
3796
3791 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3797 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3792 magic properly formatted for screen.
3798 magic properly formatted for screen.
3793
3799
3794 * setup.py (make_shortcut): Changed things to put pdf version in
3800 * setup.py (make_shortcut): Changed things to put pdf version in
3795 doc/ instead of doc/manual (had to change lyxport a bit).
3801 doc/ instead of doc/manual (had to change lyxport a bit).
3796
3802
3797 * IPython/Magic.py (Profile.string_stats): made profile runs go
3803 * IPython/Magic.py (Profile.string_stats): made profile runs go
3798 through pager (they are long and a pager allows searching, saving,
3804 through pager (they are long and a pager allows searching, saving,
3799 etc.)
3805 etc.)
3800
3806
3801 2002-05-08 Fernando Perez <fperez@colorado.edu>
3807 2002-05-08 Fernando Perez <fperez@colorado.edu>
3802
3808
3803 * Released 0.2.12
3809 * Released 0.2.12
3804
3810
3805 2002-05-06 Fernando Perez <fperez@colorado.edu>
3811 2002-05-06 Fernando Perez <fperez@colorado.edu>
3806
3812
3807 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3813 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3808 introduced); 'hist n1 n2' was broken.
3814 introduced); 'hist n1 n2' was broken.
3809 (Magic.magic_pdb): added optional on/off arguments to @pdb
3815 (Magic.magic_pdb): added optional on/off arguments to @pdb
3810 (Magic.magic_run): added option -i to @run, which executes code in
3816 (Magic.magic_run): added option -i to @run, which executes code in
3811 the IPython namespace instead of a clean one. Also added @irun as
3817 the IPython namespace instead of a clean one. Also added @irun as
3812 an alias to @run -i.
3818 an alias to @run -i.
3813
3819
3814 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3820 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3815 fixed (it didn't really do anything, the namespaces were wrong).
3821 fixed (it didn't really do anything, the namespaces were wrong).
3816
3822
3817 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3823 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3818
3824
3819 * IPython/__init__.py (__all__): Fixed package namespace, now
3825 * IPython/__init__.py (__all__): Fixed package namespace, now
3820 'import IPython' does give access to IPython.<all> as
3826 'import IPython' does give access to IPython.<all> as
3821 expected. Also renamed __release__ to Release.
3827 expected. Also renamed __release__ to Release.
3822
3828
3823 * IPython/Debugger.py (__license__): created new Pdb class which
3829 * IPython/Debugger.py (__license__): created new Pdb class which
3824 functions like a drop-in for the normal pdb.Pdb but does NOT
3830 functions like a drop-in for the normal pdb.Pdb but does NOT
3825 import readline by default. This way it doesn't muck up IPython's
3831 import readline by default. This way it doesn't muck up IPython's
3826 readline handling, and now tab-completion finally works in the
3832 readline handling, and now tab-completion finally works in the
3827 debugger -- sort of. It completes things globally visible, but the
3833 debugger -- sort of. It completes things globally visible, but the
3828 completer doesn't track the stack as pdb walks it. That's a bit
3834 completer doesn't track the stack as pdb walks it. That's a bit
3829 tricky, and I'll have to implement it later.
3835 tricky, and I'll have to implement it later.
3830
3836
3831 2002-05-05 Fernando Perez <fperez@colorado.edu>
3837 2002-05-05 Fernando Perez <fperez@colorado.edu>
3832
3838
3833 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3839 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3834 magic docstrings when printed via ? (explicit \'s were being
3840 magic docstrings when printed via ? (explicit \'s were being
3835 printed).
3841 printed).
3836
3842
3837 * IPython/ipmaker.py (make_IPython): fixed namespace
3843 * IPython/ipmaker.py (make_IPython): fixed namespace
3838 identification bug. Now variables loaded via logs or command-line
3844 identification bug. Now variables loaded via logs or command-line
3839 files are recognized in the interactive namespace by @who.
3845 files are recognized in the interactive namespace by @who.
3840
3846
3841 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3847 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3842 log replay system stemming from the string form of Structs.
3848 log replay system stemming from the string form of Structs.
3843
3849
3844 * IPython/Magic.py (Macro.__init__): improved macros to properly
3850 * IPython/Magic.py (Macro.__init__): improved macros to properly
3845 handle magic commands in them.
3851 handle magic commands in them.
3846 (Magic.magic_logstart): usernames are now expanded so 'logstart
3852 (Magic.magic_logstart): usernames are now expanded so 'logstart
3847 ~/mylog' now works.
3853 ~/mylog' now works.
3848
3854
3849 * IPython/iplib.py (complete): fixed bug where paths starting with
3855 * IPython/iplib.py (complete): fixed bug where paths starting with
3850 '/' would be completed as magic names.
3856 '/' would be completed as magic names.
3851
3857
3852 2002-05-04 Fernando Perez <fperez@colorado.edu>
3858 2002-05-04 Fernando Perez <fperez@colorado.edu>
3853
3859
3854 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3860 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3855 allow running full programs under the profiler's control.
3861 allow running full programs under the profiler's control.
3856
3862
3857 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3863 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3858 mode to report exceptions verbosely but without formatting
3864 mode to report exceptions verbosely but without formatting
3859 variables. This addresses the issue of ipython 'freezing' (it's
3865 variables. This addresses the issue of ipython 'freezing' (it's
3860 not frozen, but caught in an expensive formatting loop) when huge
3866 not frozen, but caught in an expensive formatting loop) when huge
3861 variables are in the context of an exception.
3867 variables are in the context of an exception.
3862 (VerboseTB.text): Added '--->' markers at line where exception was
3868 (VerboseTB.text): Added '--->' markers at line where exception was
3863 triggered. Much clearer to read, especially in NoColor modes.
3869 triggered. Much clearer to read, especially in NoColor modes.
3864
3870
3865 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3871 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3866 implemented in reverse when changing to the new parse_options().
3872 implemented in reverse when changing to the new parse_options().
3867
3873
3868 2002-05-03 Fernando Perez <fperez@colorado.edu>
3874 2002-05-03 Fernando Perez <fperez@colorado.edu>
3869
3875
3870 * IPython/Magic.py (Magic.parse_options): new function so that
3876 * IPython/Magic.py (Magic.parse_options): new function so that
3871 magics can parse options easier.
3877 magics can parse options easier.
3872 (Magic.magic_prun): new function similar to profile.run(),
3878 (Magic.magic_prun): new function similar to profile.run(),
3873 suggested by Chris Hart.
3879 suggested by Chris Hart.
3874 (Magic.magic_cd): fixed behavior so that it only changes if
3880 (Magic.magic_cd): fixed behavior so that it only changes if
3875 directory actually is in history.
3881 directory actually is in history.
3876
3882
3877 * IPython/usage.py (__doc__): added information about potential
3883 * IPython/usage.py (__doc__): added information about potential
3878 slowness of Verbose exception mode when there are huge data
3884 slowness of Verbose exception mode when there are huge data
3879 structures to be formatted (thanks to Archie Paulson).
3885 structures to be formatted (thanks to Archie Paulson).
3880
3886
3881 * IPython/ipmaker.py (make_IPython): Changed default logging
3887 * IPython/ipmaker.py (make_IPython): Changed default logging
3882 (when simply called with -log) to use curr_dir/ipython.log in
3888 (when simply called with -log) to use curr_dir/ipython.log in
3883 rotate mode. Fixed crash which was occuring with -log before
3889 rotate mode. Fixed crash which was occuring with -log before
3884 (thanks to Jim Boyle).
3890 (thanks to Jim Boyle).
3885
3891
3886 2002-05-01 Fernando Perez <fperez@colorado.edu>
3892 2002-05-01 Fernando Perez <fperez@colorado.edu>
3887
3893
3888 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3894 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3889 was nasty -- though somewhat of a corner case).
3895 was nasty -- though somewhat of a corner case).
3890
3896
3891 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3897 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3892 text (was a bug).
3898 text (was a bug).
3893
3899
3894 2002-04-30 Fernando Perez <fperez@colorado.edu>
3900 2002-04-30 Fernando Perez <fperez@colorado.edu>
3895
3901
3896 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3902 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3897 a print after ^D or ^C from the user so that the In[] prompt
3903 a print after ^D or ^C from the user so that the In[] prompt
3898 doesn't over-run the gnuplot one.
3904 doesn't over-run the gnuplot one.
3899
3905
3900 2002-04-29 Fernando Perez <fperez@colorado.edu>
3906 2002-04-29 Fernando Perez <fperez@colorado.edu>
3901
3907
3902 * Released 0.2.10
3908 * Released 0.2.10
3903
3909
3904 * IPython/__release__.py (version): get date dynamically.
3910 * IPython/__release__.py (version): get date dynamically.
3905
3911
3906 * Misc. documentation updates thanks to Arnd's comments. Also ran
3912 * Misc. documentation updates thanks to Arnd's comments. Also ran
3907 a full spellcheck on the manual (hadn't been done in a while).
3913 a full spellcheck on the manual (hadn't been done in a while).
3908
3914
3909 2002-04-27 Fernando Perez <fperez@colorado.edu>
3915 2002-04-27 Fernando Perez <fperez@colorado.edu>
3910
3916
3911 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3917 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3912 starting a log in mid-session would reset the input history list.
3918 starting a log in mid-session would reset the input history list.
3913
3919
3914 2002-04-26 Fernando Perez <fperez@colorado.edu>
3920 2002-04-26 Fernando Perez <fperez@colorado.edu>
3915
3921
3916 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3922 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3917 all files were being included in an update. Now anything in
3923 all files were being included in an update. Now anything in
3918 UserConfig that matches [A-Za-z]*.py will go (this excludes
3924 UserConfig that matches [A-Za-z]*.py will go (this excludes
3919 __init__.py)
3925 __init__.py)
3920
3926
3921 2002-04-25 Fernando Perez <fperez@colorado.edu>
3927 2002-04-25 Fernando Perez <fperez@colorado.edu>
3922
3928
3923 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3929 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3924 to __builtins__ so that any form of embedded or imported code can
3930 to __builtins__ so that any form of embedded or imported code can
3925 test for being inside IPython.
3931 test for being inside IPython.
3926
3932
3927 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3933 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3928 changed to GnuplotMagic because it's now an importable module,
3934 changed to GnuplotMagic because it's now an importable module,
3929 this makes the name follow that of the standard Gnuplot module.
3935 this makes the name follow that of the standard Gnuplot module.
3930 GnuplotMagic can now be loaded at any time in mid-session.
3936 GnuplotMagic can now be loaded at any time in mid-session.
3931
3937
3932 2002-04-24 Fernando Perez <fperez@colorado.edu>
3938 2002-04-24 Fernando Perez <fperez@colorado.edu>
3933
3939
3934 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3940 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3935 the globals (IPython has its own namespace) and the
3941 the globals (IPython has its own namespace) and the
3936 PhysicalQuantity stuff is much better anyway.
3942 PhysicalQuantity stuff is much better anyway.
3937
3943
3938 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3944 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3939 embedding example to standard user directory for
3945 embedding example to standard user directory for
3940 distribution. Also put it in the manual.
3946 distribution. Also put it in the manual.
3941
3947
3942 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3948 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3943 instance as first argument (so it doesn't rely on some obscure
3949 instance as first argument (so it doesn't rely on some obscure
3944 hidden global).
3950 hidden global).
3945
3951
3946 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3952 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3947 delimiters. While it prevents ().TAB from working, it allows
3953 delimiters. While it prevents ().TAB from working, it allows
3948 completions in open (... expressions. This is by far a more common
3954 completions in open (... expressions. This is by far a more common
3949 case.
3955 case.
3950
3956
3951 2002-04-23 Fernando Perez <fperez@colorado.edu>
3957 2002-04-23 Fernando Perez <fperez@colorado.edu>
3952
3958
3953 * IPython/Extensions/InterpreterPasteInput.py: new
3959 * IPython/Extensions/InterpreterPasteInput.py: new
3954 syntax-processing module for pasting lines with >>> or ... at the
3960 syntax-processing module for pasting lines with >>> or ... at the
3955 start.
3961 start.
3956
3962
3957 * IPython/Extensions/PhysicalQ_Interactive.py
3963 * IPython/Extensions/PhysicalQ_Interactive.py
3958 (PhysicalQuantityInteractive.__int__): fixed to work with either
3964 (PhysicalQuantityInteractive.__int__): fixed to work with either
3959 Numeric or math.
3965 Numeric or math.
3960
3966
3961 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3967 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3962 provided profiles. Now we have:
3968 provided profiles. Now we have:
3963 -math -> math module as * and cmath with its own namespace.
3969 -math -> math module as * and cmath with its own namespace.
3964 -numeric -> Numeric as *, plus gnuplot & grace
3970 -numeric -> Numeric as *, plus gnuplot & grace
3965 -physics -> same as before
3971 -physics -> same as before
3966
3972
3967 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3973 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3968 user-defined magics wouldn't be found by @magic if they were
3974 user-defined magics wouldn't be found by @magic if they were
3969 defined as class methods. Also cleaned up the namespace search
3975 defined as class methods. Also cleaned up the namespace search
3970 logic and the string building (to use %s instead of many repeated
3976 logic and the string building (to use %s instead of many repeated
3971 string adds).
3977 string adds).
3972
3978
3973 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3979 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3974 of user-defined magics to operate with class methods (cleaner, in
3980 of user-defined magics to operate with class methods (cleaner, in
3975 line with the gnuplot code).
3981 line with the gnuplot code).
3976
3982
3977 2002-04-22 Fernando Perez <fperez@colorado.edu>
3983 2002-04-22 Fernando Perez <fperez@colorado.edu>
3978
3984
3979 * setup.py: updated dependency list so that manual is updated when
3985 * setup.py: updated dependency list so that manual is updated when
3980 all included files change.
3986 all included files change.
3981
3987
3982 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3988 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3983 the delimiter removal option (the fix is ugly right now).
3989 the delimiter removal option (the fix is ugly right now).
3984
3990
3985 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3991 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3986 all of the math profile (quicker loading, no conflict between
3992 all of the math profile (quicker loading, no conflict between
3987 g-9.8 and g-gnuplot).
3993 g-9.8 and g-gnuplot).
3988
3994
3989 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3995 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3990 name of post-mortem files to IPython_crash_report.txt.
3996 name of post-mortem files to IPython_crash_report.txt.
3991
3997
3992 * Cleanup/update of the docs. Added all the new readline info and
3998 * Cleanup/update of the docs. Added all the new readline info and
3993 formatted all lists as 'real lists'.
3999 formatted all lists as 'real lists'.
3994
4000
3995 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4001 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3996 tab-completion options, since the full readline parse_and_bind is
4002 tab-completion options, since the full readline parse_and_bind is
3997 now accessible.
4003 now accessible.
3998
4004
3999 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4005 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4000 handling of readline options. Now users can specify any string to
4006 handling of readline options. Now users can specify any string to
4001 be passed to parse_and_bind(), as well as the delimiters to be
4007 be passed to parse_and_bind(), as well as the delimiters to be
4002 removed.
4008 removed.
4003 (InteractiveShell.__init__): Added __name__ to the global
4009 (InteractiveShell.__init__): Added __name__ to the global
4004 namespace so that things like Itpl which rely on its existence
4010 namespace so that things like Itpl which rely on its existence
4005 don't crash.
4011 don't crash.
4006 (InteractiveShell._prefilter): Defined the default with a _ so
4012 (InteractiveShell._prefilter): Defined the default with a _ so
4007 that prefilter() is easier to override, while the default one
4013 that prefilter() is easier to override, while the default one
4008 remains available.
4014 remains available.
4009
4015
4010 2002-04-18 Fernando Perez <fperez@colorado.edu>
4016 2002-04-18 Fernando Perez <fperez@colorado.edu>
4011
4017
4012 * Added information about pdb in the docs.
4018 * Added information about pdb in the docs.
4013
4019
4014 2002-04-17 Fernando Perez <fperez@colorado.edu>
4020 2002-04-17 Fernando Perez <fperez@colorado.edu>
4015
4021
4016 * IPython/ipmaker.py (make_IPython): added rc_override option to
4022 * IPython/ipmaker.py (make_IPython): added rc_override option to
4017 allow passing config options at creation time which may override
4023 allow passing config options at creation time which may override
4018 anything set in the config files or command line. This is
4024 anything set in the config files or command line. This is
4019 particularly useful for configuring embedded instances.
4025 particularly useful for configuring embedded instances.
4020
4026
4021 2002-04-15 Fernando Perez <fperez@colorado.edu>
4027 2002-04-15 Fernando Perez <fperez@colorado.edu>
4022
4028
4023 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4029 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4024 crash embedded instances because of the input cache falling out of
4030 crash embedded instances because of the input cache falling out of
4025 sync with the output counter.
4031 sync with the output counter.
4026
4032
4027 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4033 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4028 mode which calls pdb after an uncaught exception in IPython itself.
4034 mode which calls pdb after an uncaught exception in IPython itself.
4029
4035
4030 2002-04-14 Fernando Perez <fperez@colorado.edu>
4036 2002-04-14 Fernando Perez <fperez@colorado.edu>
4031
4037
4032 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4038 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4033 readline, fix it back after each call.
4039 readline, fix it back after each call.
4034
4040
4035 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4041 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4036 method to force all access via __call__(), which guarantees that
4042 method to force all access via __call__(), which guarantees that
4037 traceback references are properly deleted.
4043 traceback references are properly deleted.
4038
4044
4039 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4045 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4040 improve printing when pprint is in use.
4046 improve printing when pprint is in use.
4041
4047
4042 2002-04-13 Fernando Perez <fperez@colorado.edu>
4048 2002-04-13 Fernando Perez <fperez@colorado.edu>
4043
4049
4044 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4050 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4045 exceptions aren't caught anymore. If the user triggers one, he
4051 exceptions aren't caught anymore. If the user triggers one, he
4046 should know why he's doing it and it should go all the way up,
4052 should know why he's doing it and it should go all the way up,
4047 just like any other exception. So now @abort will fully kill the
4053 just like any other exception. So now @abort will fully kill the
4048 embedded interpreter and the embedding code (unless that happens
4054 embedded interpreter and the embedding code (unless that happens
4049 to catch SystemExit).
4055 to catch SystemExit).
4050
4056
4051 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4057 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4052 and a debugger() method to invoke the interactive pdb debugger
4058 and a debugger() method to invoke the interactive pdb debugger
4053 after printing exception information. Also added the corresponding
4059 after printing exception information. Also added the corresponding
4054 -pdb option and @pdb magic to control this feature, and updated
4060 -pdb option and @pdb magic to control this feature, and updated
4055 the docs. After a suggestion from Christopher Hart
4061 the docs. After a suggestion from Christopher Hart
4056 (hart-AT-caltech.edu).
4062 (hart-AT-caltech.edu).
4057
4063
4058 2002-04-12 Fernando Perez <fperez@colorado.edu>
4064 2002-04-12 Fernando Perez <fperez@colorado.edu>
4059
4065
4060 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4066 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4061 the exception handlers defined by the user (not the CrashHandler)
4067 the exception handlers defined by the user (not the CrashHandler)
4062 so that user exceptions don't trigger an ipython bug report.
4068 so that user exceptions don't trigger an ipython bug report.
4063
4069
4064 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4070 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4065 configurable (it should have always been so).
4071 configurable (it should have always been so).
4066
4072
4067 2002-03-26 Fernando Perez <fperez@colorado.edu>
4073 2002-03-26 Fernando Perez <fperez@colorado.edu>
4068
4074
4069 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4075 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4070 and there to fix embedding namespace issues. This should all be
4076 and there to fix embedding namespace issues. This should all be
4071 done in a more elegant way.
4077 done in a more elegant way.
4072
4078
4073 2002-03-25 Fernando Perez <fperez@colorado.edu>
4079 2002-03-25 Fernando Perez <fperez@colorado.edu>
4074
4080
4075 * IPython/genutils.py (get_home_dir): Try to make it work under
4081 * IPython/genutils.py (get_home_dir): Try to make it work under
4076 win9x also.
4082 win9x also.
4077
4083
4078 2002-03-20 Fernando Perez <fperez@colorado.edu>
4084 2002-03-20 Fernando Perez <fperez@colorado.edu>
4079
4085
4080 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4086 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4081 sys.displayhook untouched upon __init__.
4087 sys.displayhook untouched upon __init__.
4082
4088
4083 2002-03-19 Fernando Perez <fperez@colorado.edu>
4089 2002-03-19 Fernando Perez <fperez@colorado.edu>
4084
4090
4085 * Released 0.2.9 (for embedding bug, basically).
4091 * Released 0.2.9 (for embedding bug, basically).
4086
4092
4087 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4093 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4088 exceptions so that enclosing shell's state can be restored.
4094 exceptions so that enclosing shell's state can be restored.
4089
4095
4090 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4096 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4091 naming conventions in the .ipython/ dir.
4097 naming conventions in the .ipython/ dir.
4092
4098
4093 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4099 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4094 from delimiters list so filenames with - in them get expanded.
4100 from delimiters list so filenames with - in them get expanded.
4095
4101
4096 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4102 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4097 sys.displayhook not being properly restored after an embedded call.
4103 sys.displayhook not being properly restored after an embedded call.
4098
4104
4099 2002-03-18 Fernando Perez <fperez@colorado.edu>
4105 2002-03-18 Fernando Perez <fperez@colorado.edu>
4100
4106
4101 * Released 0.2.8
4107 * Released 0.2.8
4102
4108
4103 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4109 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4104 some files weren't being included in a -upgrade.
4110 some files weren't being included in a -upgrade.
4105 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4111 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4106 on' so that the first tab completes.
4112 on' so that the first tab completes.
4107 (InteractiveShell.handle_magic): fixed bug with spaces around
4113 (InteractiveShell.handle_magic): fixed bug with spaces around
4108 quotes breaking many magic commands.
4114 quotes breaking many magic commands.
4109
4115
4110 * setup.py: added note about ignoring the syntax error messages at
4116 * setup.py: added note about ignoring the syntax error messages at
4111 installation.
4117 installation.
4112
4118
4113 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4119 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4114 streamlining the gnuplot interface, now there's only one magic @gp.
4120 streamlining the gnuplot interface, now there's only one magic @gp.
4115
4121
4116 2002-03-17 Fernando Perez <fperez@colorado.edu>
4122 2002-03-17 Fernando Perez <fperez@colorado.edu>
4117
4123
4118 * IPython/UserConfig/magic_gnuplot.py: new name for the
4124 * IPython/UserConfig/magic_gnuplot.py: new name for the
4119 example-magic_pm.py file. Much enhanced system, now with a shell
4125 example-magic_pm.py file. Much enhanced system, now with a shell
4120 for communicating directly with gnuplot, one command at a time.
4126 for communicating directly with gnuplot, one command at a time.
4121
4127
4122 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4128 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4123 setting __name__=='__main__'.
4129 setting __name__=='__main__'.
4124
4130
4125 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4131 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4126 mini-shell for accessing gnuplot from inside ipython. Should
4132 mini-shell for accessing gnuplot from inside ipython. Should
4127 extend it later for grace access too. Inspired by Arnd's
4133 extend it later for grace access too. Inspired by Arnd's
4128 suggestion.
4134 suggestion.
4129
4135
4130 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4136 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4131 calling magic functions with () in their arguments. Thanks to Arnd
4137 calling magic functions with () in their arguments. Thanks to Arnd
4132 Baecker for pointing this to me.
4138 Baecker for pointing this to me.
4133
4139
4134 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4140 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4135 infinitely for integer or complex arrays (only worked with floats).
4141 infinitely for integer or complex arrays (only worked with floats).
4136
4142
4137 2002-03-16 Fernando Perez <fperez@colorado.edu>
4143 2002-03-16 Fernando Perez <fperez@colorado.edu>
4138
4144
4139 * setup.py: Merged setup and setup_windows into a single script
4145 * setup.py: Merged setup and setup_windows into a single script
4140 which properly handles things for windows users.
4146 which properly handles things for windows users.
4141
4147
4142 2002-03-15 Fernando Perez <fperez@colorado.edu>
4148 2002-03-15 Fernando Perez <fperez@colorado.edu>
4143
4149
4144 * Big change to the manual: now the magics are all automatically
4150 * Big change to the manual: now the magics are all automatically
4145 documented. This information is generated from their docstrings
4151 documented. This information is generated from their docstrings
4146 and put in a latex file included by the manual lyx file. This way
4152 and put in a latex file included by the manual lyx file. This way
4147 we get always up to date information for the magics. The manual
4153 we get always up to date information for the magics. The manual
4148 now also has proper version information, also auto-synced.
4154 now also has proper version information, also auto-synced.
4149
4155
4150 For this to work, an undocumented --magic_docstrings option was added.
4156 For this to work, an undocumented --magic_docstrings option was added.
4151
4157
4152 2002-03-13 Fernando Perez <fperez@colorado.edu>
4158 2002-03-13 Fernando Perez <fperez@colorado.edu>
4153
4159
4154 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4160 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4155 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4161 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4156
4162
4157 2002-03-12 Fernando Perez <fperez@colorado.edu>
4163 2002-03-12 Fernando Perez <fperez@colorado.edu>
4158
4164
4159 * IPython/ultraTB.py (TermColors): changed color escapes again to
4165 * IPython/ultraTB.py (TermColors): changed color escapes again to
4160 fix the (old, reintroduced) line-wrapping bug. Basically, if
4166 fix the (old, reintroduced) line-wrapping bug. Basically, if
4161 \001..\002 aren't given in the color escapes, lines get wrapped
4167 \001..\002 aren't given in the color escapes, lines get wrapped
4162 weirdly. But giving those screws up old xterms and emacs terms. So
4168 weirdly. But giving those screws up old xterms and emacs terms. So
4163 I added some logic for emacs terms to be ok, but I can't identify old
4169 I added some logic for emacs terms to be ok, but I can't identify old
4164 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4170 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4165
4171
4166 2002-03-10 Fernando Perez <fperez@colorado.edu>
4172 2002-03-10 Fernando Perez <fperez@colorado.edu>
4167
4173
4168 * IPython/usage.py (__doc__): Various documentation cleanups and
4174 * IPython/usage.py (__doc__): Various documentation cleanups and
4169 updates, both in usage docstrings and in the manual.
4175 updates, both in usage docstrings and in the manual.
4170
4176
4171 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4177 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4172 handling of caching. Set minimum acceptabe value for having a
4178 handling of caching. Set minimum acceptabe value for having a
4173 cache at 20 values.
4179 cache at 20 values.
4174
4180
4175 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4181 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4176 install_first_time function to a method, renamed it and added an
4182 install_first_time function to a method, renamed it and added an
4177 'upgrade' mode. Now people can update their config directory with
4183 'upgrade' mode. Now people can update their config directory with
4178 a simple command line switch (-upgrade, also new).
4184 a simple command line switch (-upgrade, also new).
4179
4185
4180 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4186 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4181 @file (convenient for automagic users under Python >= 2.2).
4187 @file (convenient for automagic users under Python >= 2.2).
4182 Removed @files (it seemed more like a plural than an abbrev. of
4188 Removed @files (it seemed more like a plural than an abbrev. of
4183 'file show').
4189 'file show').
4184
4190
4185 * IPython/iplib.py (install_first_time): Fixed crash if there were
4191 * IPython/iplib.py (install_first_time): Fixed crash if there were
4186 backup files ('~') in .ipython/ install directory.
4192 backup files ('~') in .ipython/ install directory.
4187
4193
4188 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4194 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4189 system. Things look fine, but these changes are fairly
4195 system. Things look fine, but these changes are fairly
4190 intrusive. Test them for a few days.
4196 intrusive. Test them for a few days.
4191
4197
4192 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4198 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4193 the prompts system. Now all in/out prompt strings are user
4199 the prompts system. Now all in/out prompt strings are user
4194 controllable. This is particularly useful for embedding, as one
4200 controllable. This is particularly useful for embedding, as one
4195 can tag embedded instances with particular prompts.
4201 can tag embedded instances with particular prompts.
4196
4202
4197 Also removed global use of sys.ps1/2, which now allows nested
4203 Also removed global use of sys.ps1/2, which now allows nested
4198 embeddings without any problems. Added command-line options for
4204 embeddings without any problems. Added command-line options for
4199 the prompt strings.
4205 the prompt strings.
4200
4206
4201 2002-03-08 Fernando Perez <fperez@colorado.edu>
4207 2002-03-08 Fernando Perez <fperez@colorado.edu>
4202
4208
4203 * IPython/UserConfig/example-embed-short.py (ipshell): added
4209 * IPython/UserConfig/example-embed-short.py (ipshell): added
4204 example file with the bare minimum code for embedding.
4210 example file with the bare minimum code for embedding.
4205
4211
4206 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4212 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4207 functionality for the embeddable shell to be activated/deactivated
4213 functionality for the embeddable shell to be activated/deactivated
4208 either globally or at each call.
4214 either globally or at each call.
4209
4215
4210 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4216 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4211 rewriting the prompt with '--->' for auto-inputs with proper
4217 rewriting the prompt with '--->' for auto-inputs with proper
4212 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4218 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4213 this is handled by the prompts class itself, as it should.
4219 this is handled by the prompts class itself, as it should.
4214
4220
4215 2002-03-05 Fernando Perez <fperez@colorado.edu>
4221 2002-03-05 Fernando Perez <fperez@colorado.edu>
4216
4222
4217 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4223 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4218 @logstart to avoid name clashes with the math log function.
4224 @logstart to avoid name clashes with the math log function.
4219
4225
4220 * Big updates to X/Emacs section of the manual.
4226 * Big updates to X/Emacs section of the manual.
4221
4227
4222 * Removed ipython_emacs. Milan explained to me how to pass
4228 * Removed ipython_emacs. Milan explained to me how to pass
4223 arguments to ipython through Emacs. Some day I'm going to end up
4229 arguments to ipython through Emacs. Some day I'm going to end up
4224 learning some lisp...
4230 learning some lisp...
4225
4231
4226 2002-03-04 Fernando Perez <fperez@colorado.edu>
4232 2002-03-04 Fernando Perez <fperez@colorado.edu>
4227
4233
4228 * IPython/ipython_emacs: Created script to be used as the
4234 * IPython/ipython_emacs: Created script to be used as the
4229 py-python-command Emacs variable so we can pass IPython
4235 py-python-command Emacs variable so we can pass IPython
4230 parameters. I can't figure out how to tell Emacs directly to pass
4236 parameters. I can't figure out how to tell Emacs directly to pass
4231 parameters to IPython, so a dummy shell script will do it.
4237 parameters to IPython, so a dummy shell script will do it.
4232
4238
4233 Other enhancements made for things to work better under Emacs'
4239 Other enhancements made for things to work better under Emacs'
4234 various types of terminals. Many thanks to Milan Zamazal
4240 various types of terminals. Many thanks to Milan Zamazal
4235 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4241 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4236
4242
4237 2002-03-01 Fernando Perez <fperez@colorado.edu>
4243 2002-03-01 Fernando Perez <fperez@colorado.edu>
4238
4244
4239 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4245 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4240 that loading of readline is now optional. This gives better
4246 that loading of readline is now optional. This gives better
4241 control to emacs users.
4247 control to emacs users.
4242
4248
4243 * IPython/ultraTB.py (__date__): Modified color escape sequences
4249 * IPython/ultraTB.py (__date__): Modified color escape sequences
4244 and now things work fine under xterm and in Emacs' term buffers
4250 and now things work fine under xterm and in Emacs' term buffers
4245 (though not shell ones). Well, in emacs you get colors, but all
4251 (though not shell ones). Well, in emacs you get colors, but all
4246 seem to be 'light' colors (no difference between dark and light
4252 seem to be 'light' colors (no difference between dark and light
4247 ones). But the garbage chars are gone, and also in xterms. It
4253 ones). But the garbage chars are gone, and also in xterms. It
4248 seems that now I'm using 'cleaner' ansi sequences.
4254 seems that now I'm using 'cleaner' ansi sequences.
4249
4255
4250 2002-02-21 Fernando Perez <fperez@colorado.edu>
4256 2002-02-21 Fernando Perez <fperez@colorado.edu>
4251
4257
4252 * Released 0.2.7 (mainly to publish the scoping fix).
4258 * Released 0.2.7 (mainly to publish the scoping fix).
4253
4259
4254 * IPython/Logger.py (Logger.logstate): added. A corresponding
4260 * IPython/Logger.py (Logger.logstate): added. A corresponding
4255 @logstate magic was created.
4261 @logstate magic was created.
4256
4262
4257 * IPython/Magic.py: fixed nested scoping problem under Python
4263 * IPython/Magic.py: fixed nested scoping problem under Python
4258 2.1.x (automagic wasn't working).
4264 2.1.x (automagic wasn't working).
4259
4265
4260 2002-02-20 Fernando Perez <fperez@colorado.edu>
4266 2002-02-20 Fernando Perez <fperez@colorado.edu>
4261
4267
4262 * Released 0.2.6.
4268 * Released 0.2.6.
4263
4269
4264 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4270 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4265 option so that logs can come out without any headers at all.
4271 option so that logs can come out without any headers at all.
4266
4272
4267 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4273 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4268 SciPy.
4274 SciPy.
4269
4275
4270 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4276 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4271 that embedded IPython calls don't require vars() to be explicitly
4277 that embedded IPython calls don't require vars() to be explicitly
4272 passed. Now they are extracted from the caller's frame (code
4278 passed. Now they are extracted from the caller's frame (code
4273 snatched from Eric Jones' weave). Added better documentation to
4279 snatched from Eric Jones' weave). Added better documentation to
4274 the section on embedding and the example file.
4280 the section on embedding and the example file.
4275
4281
4276 * IPython/genutils.py (page): Changed so that under emacs, it just
4282 * IPython/genutils.py (page): Changed so that under emacs, it just
4277 prints the string. You can then page up and down in the emacs
4283 prints the string. You can then page up and down in the emacs
4278 buffer itself. This is how the builtin help() works.
4284 buffer itself. This is how the builtin help() works.
4279
4285
4280 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4286 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4281 macro scoping: macros need to be executed in the user's namespace
4287 macro scoping: macros need to be executed in the user's namespace
4282 to work as if they had been typed by the user.
4288 to work as if they had been typed by the user.
4283
4289
4284 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4290 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4285 execute automatically (no need to type 'exec...'). They then
4291 execute automatically (no need to type 'exec...'). They then
4286 behave like 'true macros'. The printing system was also modified
4292 behave like 'true macros'. The printing system was also modified
4287 for this to work.
4293 for this to work.
4288
4294
4289 2002-02-19 Fernando Perez <fperez@colorado.edu>
4295 2002-02-19 Fernando Perez <fperez@colorado.edu>
4290
4296
4291 * IPython/genutils.py (page_file): new function for paging files
4297 * IPython/genutils.py (page_file): new function for paging files
4292 in an OS-independent way. Also necessary for file viewing to work
4298 in an OS-independent way. Also necessary for file viewing to work
4293 well inside Emacs buffers.
4299 well inside Emacs buffers.
4294 (page): Added checks for being in an emacs buffer.
4300 (page): Added checks for being in an emacs buffer.
4295 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4301 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4296 same bug in iplib.
4302 same bug in iplib.
4297
4303
4298 2002-02-18 Fernando Perez <fperez@colorado.edu>
4304 2002-02-18 Fernando Perez <fperez@colorado.edu>
4299
4305
4300 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4306 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4301 of readline so that IPython can work inside an Emacs buffer.
4307 of readline so that IPython can work inside an Emacs buffer.
4302
4308
4303 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4309 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4304 method signatures (they weren't really bugs, but it looks cleaner
4310 method signatures (they weren't really bugs, but it looks cleaner
4305 and keeps PyChecker happy).
4311 and keeps PyChecker happy).
4306
4312
4307 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4313 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4308 for implementing various user-defined hooks. Currently only
4314 for implementing various user-defined hooks. Currently only
4309 display is done.
4315 display is done.
4310
4316
4311 * IPython/Prompts.py (CachedOutput._display): changed display
4317 * IPython/Prompts.py (CachedOutput._display): changed display
4312 functions so that they can be dynamically changed by users easily.
4318 functions so that they can be dynamically changed by users easily.
4313
4319
4314 * IPython/Extensions/numeric_formats.py (num_display): added an
4320 * IPython/Extensions/numeric_formats.py (num_display): added an
4315 extension for printing NumPy arrays in flexible manners. It
4321 extension for printing NumPy arrays in flexible manners. It
4316 doesn't do anything yet, but all the structure is in
4322 doesn't do anything yet, but all the structure is in
4317 place. Ultimately the plan is to implement output format control
4323 place. Ultimately the plan is to implement output format control
4318 like in Octave.
4324 like in Octave.
4319
4325
4320 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4326 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4321 methods are found at run-time by all the automatic machinery.
4327 methods are found at run-time by all the automatic machinery.
4322
4328
4323 2002-02-17 Fernando Perez <fperez@colorado.edu>
4329 2002-02-17 Fernando Perez <fperez@colorado.edu>
4324
4330
4325 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4331 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4326 whole file a little.
4332 whole file a little.
4327
4333
4328 * ToDo: closed this document. Now there's a new_design.lyx
4334 * ToDo: closed this document. Now there's a new_design.lyx
4329 document for all new ideas. Added making a pdf of it for the
4335 document for all new ideas. Added making a pdf of it for the
4330 end-user distro.
4336 end-user distro.
4331
4337
4332 * IPython/Logger.py (Logger.switch_log): Created this to replace
4338 * IPython/Logger.py (Logger.switch_log): Created this to replace
4333 logon() and logoff(). It also fixes a nasty crash reported by
4339 logon() and logoff(). It also fixes a nasty crash reported by
4334 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4340 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4335
4341
4336 * IPython/iplib.py (complete): got auto-completion to work with
4342 * IPython/iplib.py (complete): got auto-completion to work with
4337 automagic (I had wanted this for a long time).
4343 automagic (I had wanted this for a long time).
4338
4344
4339 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4345 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4340 to @file, since file() is now a builtin and clashes with automagic
4346 to @file, since file() is now a builtin and clashes with automagic
4341 for @file.
4347 for @file.
4342
4348
4343 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4349 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4344 of this was previously in iplib, which had grown to more than 2000
4350 of this was previously in iplib, which had grown to more than 2000
4345 lines, way too long. No new functionality, but it makes managing
4351 lines, way too long. No new functionality, but it makes managing
4346 the code a bit easier.
4352 the code a bit easier.
4347
4353
4348 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4354 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4349 information to crash reports.
4355 information to crash reports.
4350
4356
4351 2002-02-12 Fernando Perez <fperez@colorado.edu>
4357 2002-02-12 Fernando Perez <fperez@colorado.edu>
4352
4358
4353 * Released 0.2.5.
4359 * Released 0.2.5.
4354
4360
4355 2002-02-11 Fernando Perez <fperez@colorado.edu>
4361 2002-02-11 Fernando Perez <fperez@colorado.edu>
4356
4362
4357 * Wrote a relatively complete Windows installer. It puts
4363 * Wrote a relatively complete Windows installer. It puts
4358 everything in place, creates Start Menu entries and fixes the
4364 everything in place, creates Start Menu entries and fixes the
4359 color issues. Nothing fancy, but it works.
4365 color issues. Nothing fancy, but it works.
4360
4366
4361 2002-02-10 Fernando Perez <fperez@colorado.edu>
4367 2002-02-10 Fernando Perez <fperez@colorado.edu>
4362
4368
4363 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4369 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4364 os.path.expanduser() call so that we can type @run ~/myfile.py and
4370 os.path.expanduser() call so that we can type @run ~/myfile.py and
4365 have thigs work as expected.
4371 have thigs work as expected.
4366
4372
4367 * IPython/genutils.py (page): fixed exception handling so things
4373 * IPython/genutils.py (page): fixed exception handling so things
4368 work both in Unix and Windows correctly. Quitting a pager triggers
4374 work both in Unix and Windows correctly. Quitting a pager triggers
4369 an IOError/broken pipe in Unix, and in windows not finding a pager
4375 an IOError/broken pipe in Unix, and in windows not finding a pager
4370 is also an IOError, so I had to actually look at the return value
4376 is also an IOError, so I had to actually look at the return value
4371 of the exception, not just the exception itself. Should be ok now.
4377 of the exception, not just the exception itself. Should be ok now.
4372
4378
4373 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4379 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4374 modified to allow case-insensitive color scheme changes.
4380 modified to allow case-insensitive color scheme changes.
4375
4381
4376 2002-02-09 Fernando Perez <fperez@colorado.edu>
4382 2002-02-09 Fernando Perez <fperez@colorado.edu>
4377
4383
4378 * IPython/genutils.py (native_line_ends): new function to leave
4384 * IPython/genutils.py (native_line_ends): new function to leave
4379 user config files with os-native line-endings.
4385 user config files with os-native line-endings.
4380
4386
4381 * README and manual updates.
4387 * README and manual updates.
4382
4388
4383 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4389 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4384 instead of StringType to catch Unicode strings.
4390 instead of StringType to catch Unicode strings.
4385
4391
4386 * IPython/genutils.py (filefind): fixed bug for paths with
4392 * IPython/genutils.py (filefind): fixed bug for paths with
4387 embedded spaces (very common in Windows).
4393 embedded spaces (very common in Windows).
4388
4394
4389 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4395 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4390 files under Windows, so that they get automatically associated
4396 files under Windows, so that they get automatically associated
4391 with a text editor. Windows makes it a pain to handle
4397 with a text editor. Windows makes it a pain to handle
4392 extension-less files.
4398 extension-less files.
4393
4399
4394 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4400 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4395 warning about readline only occur for Posix. In Windows there's no
4401 warning about readline only occur for Posix. In Windows there's no
4396 way to get readline, so why bother with the warning.
4402 way to get readline, so why bother with the warning.
4397
4403
4398 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4404 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4399 for __str__ instead of dir(self), since dir() changed in 2.2.
4405 for __str__ instead of dir(self), since dir() changed in 2.2.
4400
4406
4401 * Ported to Windows! Tested on XP, I suspect it should work fine
4407 * Ported to Windows! Tested on XP, I suspect it should work fine
4402 on NT/2000, but I don't think it will work on 98 et al. That
4408 on NT/2000, but I don't think it will work on 98 et al. That
4403 series of Windows is such a piece of junk anyway that I won't try
4409 series of Windows is such a piece of junk anyway that I won't try
4404 porting it there. The XP port was straightforward, showed a few
4410 porting it there. The XP port was straightforward, showed a few
4405 bugs here and there (fixed all), in particular some string
4411 bugs here and there (fixed all), in particular some string
4406 handling stuff which required considering Unicode strings (which
4412 handling stuff which required considering Unicode strings (which
4407 Windows uses). This is good, but hasn't been too tested :) No
4413 Windows uses). This is good, but hasn't been too tested :) No
4408 fancy installer yet, I'll put a note in the manual so people at
4414 fancy installer yet, I'll put a note in the manual so people at
4409 least make manually a shortcut.
4415 least make manually a shortcut.
4410
4416
4411 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4417 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4412 into a single one, "colors". This now controls both prompt and
4418 into a single one, "colors". This now controls both prompt and
4413 exception color schemes, and can be changed both at startup
4419 exception color schemes, and can be changed both at startup
4414 (either via command-line switches or via ipythonrc files) and at
4420 (either via command-line switches or via ipythonrc files) and at
4415 runtime, with @colors.
4421 runtime, with @colors.
4416 (Magic.magic_run): renamed @prun to @run and removed the old
4422 (Magic.magic_run): renamed @prun to @run and removed the old
4417 @run. The two were too similar to warrant keeping both.
4423 @run. The two were too similar to warrant keeping both.
4418
4424
4419 2002-02-03 Fernando Perez <fperez@colorado.edu>
4425 2002-02-03 Fernando Perez <fperez@colorado.edu>
4420
4426
4421 * IPython/iplib.py (install_first_time): Added comment on how to
4427 * IPython/iplib.py (install_first_time): Added comment on how to
4422 configure the color options for first-time users. Put a <return>
4428 configure the color options for first-time users. Put a <return>
4423 request at the end so that small-terminal users get a chance to
4429 request at the end so that small-terminal users get a chance to
4424 read the startup info.
4430 read the startup info.
4425
4431
4426 2002-01-23 Fernando Perez <fperez@colorado.edu>
4432 2002-01-23 Fernando Perez <fperez@colorado.edu>
4427
4433
4428 * IPython/iplib.py (CachedOutput.update): Changed output memory
4434 * IPython/iplib.py (CachedOutput.update): Changed output memory
4429 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4435 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4430 input history we still use _i. Did this b/c these variable are
4436 input history we still use _i. Did this b/c these variable are
4431 very commonly used in interactive work, so the less we need to
4437 very commonly used in interactive work, so the less we need to
4432 type the better off we are.
4438 type the better off we are.
4433 (Magic.magic_prun): updated @prun to better handle the namespaces
4439 (Magic.magic_prun): updated @prun to better handle the namespaces
4434 the file will run in, including a fix for __name__ not being set
4440 the file will run in, including a fix for __name__ not being set
4435 before.
4441 before.
4436
4442
4437 2002-01-20 Fernando Perez <fperez@colorado.edu>
4443 2002-01-20 Fernando Perez <fperez@colorado.edu>
4438
4444
4439 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4445 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4440 extra garbage for Python 2.2. Need to look more carefully into
4446 extra garbage for Python 2.2. Need to look more carefully into
4441 this later.
4447 this later.
4442
4448
4443 2002-01-19 Fernando Perez <fperez@colorado.edu>
4449 2002-01-19 Fernando Perez <fperez@colorado.edu>
4444
4450
4445 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4451 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4446 display SyntaxError exceptions properly formatted when they occur
4452 display SyntaxError exceptions properly formatted when they occur
4447 (they can be triggered by imported code).
4453 (they can be triggered by imported code).
4448
4454
4449 2002-01-18 Fernando Perez <fperez@colorado.edu>
4455 2002-01-18 Fernando Perez <fperez@colorado.edu>
4450
4456
4451 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4457 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4452 SyntaxError exceptions are reported nicely formatted, instead of
4458 SyntaxError exceptions are reported nicely formatted, instead of
4453 spitting out only offset information as before.
4459 spitting out only offset information as before.
4454 (Magic.magic_prun): Added the @prun function for executing
4460 (Magic.magic_prun): Added the @prun function for executing
4455 programs with command line args inside IPython.
4461 programs with command line args inside IPython.
4456
4462
4457 2002-01-16 Fernando Perez <fperez@colorado.edu>
4463 2002-01-16 Fernando Perez <fperez@colorado.edu>
4458
4464
4459 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4465 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4460 to *not* include the last item given in a range. This brings their
4466 to *not* include the last item given in a range. This brings their
4461 behavior in line with Python's slicing:
4467 behavior in line with Python's slicing:
4462 a[n1:n2] -> a[n1]...a[n2-1]
4468 a[n1:n2] -> a[n1]...a[n2-1]
4463 It may be a bit less convenient, but I prefer to stick to Python's
4469 It may be a bit less convenient, but I prefer to stick to Python's
4464 conventions *everywhere*, so users never have to wonder.
4470 conventions *everywhere*, so users never have to wonder.
4465 (Magic.magic_macro): Added @macro function to ease the creation of
4471 (Magic.magic_macro): Added @macro function to ease the creation of
4466 macros.
4472 macros.
4467
4473
4468 2002-01-05 Fernando Perez <fperez@colorado.edu>
4474 2002-01-05 Fernando Perez <fperez@colorado.edu>
4469
4475
4470 * Released 0.2.4.
4476 * Released 0.2.4.
4471
4477
4472 * IPython/iplib.py (Magic.magic_pdef):
4478 * IPython/iplib.py (Magic.magic_pdef):
4473 (InteractiveShell.safe_execfile): report magic lines and error
4479 (InteractiveShell.safe_execfile): report magic lines and error
4474 lines without line numbers so one can easily copy/paste them for
4480 lines without line numbers so one can easily copy/paste them for
4475 re-execution.
4481 re-execution.
4476
4482
4477 * Updated manual with recent changes.
4483 * Updated manual with recent changes.
4478
4484
4479 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4485 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4480 docstring printing when class? is called. Very handy for knowing
4486 docstring printing when class? is called. Very handy for knowing
4481 how to create class instances (as long as __init__ is well
4487 how to create class instances (as long as __init__ is well
4482 documented, of course :)
4488 documented, of course :)
4483 (Magic.magic_doc): print both class and constructor docstrings.
4489 (Magic.magic_doc): print both class and constructor docstrings.
4484 (Magic.magic_pdef): give constructor info if passed a class and
4490 (Magic.magic_pdef): give constructor info if passed a class and
4485 __call__ info for callable object instances.
4491 __call__ info for callable object instances.
4486
4492
4487 2002-01-04 Fernando Perez <fperez@colorado.edu>
4493 2002-01-04 Fernando Perez <fperez@colorado.edu>
4488
4494
4489 * Made deep_reload() off by default. It doesn't always work
4495 * Made deep_reload() off by default. It doesn't always work
4490 exactly as intended, so it's probably safer to have it off. It's
4496 exactly as intended, so it's probably safer to have it off. It's
4491 still available as dreload() anyway, so nothing is lost.
4497 still available as dreload() anyway, so nothing is lost.
4492
4498
4493 2002-01-02 Fernando Perez <fperez@colorado.edu>
4499 2002-01-02 Fernando Perez <fperez@colorado.edu>
4494
4500
4495 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4501 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4496 so I wanted an updated release).
4502 so I wanted an updated release).
4497
4503
4498 2001-12-27 Fernando Perez <fperez@colorado.edu>
4504 2001-12-27 Fernando Perez <fperez@colorado.edu>
4499
4505
4500 * IPython/iplib.py (InteractiveShell.interact): Added the original
4506 * IPython/iplib.py (InteractiveShell.interact): Added the original
4501 code from 'code.py' for this module in order to change the
4507 code from 'code.py' for this module in order to change the
4502 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4508 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4503 the history cache would break when the user hit Ctrl-C, and
4509 the history cache would break when the user hit Ctrl-C, and
4504 interact() offers no way to add any hooks to it.
4510 interact() offers no way to add any hooks to it.
4505
4511
4506 2001-12-23 Fernando Perez <fperez@colorado.edu>
4512 2001-12-23 Fernando Perez <fperez@colorado.edu>
4507
4513
4508 * setup.py: added check for 'MANIFEST' before trying to remove
4514 * setup.py: added check for 'MANIFEST' before trying to remove
4509 it. Thanks to Sean Reifschneider.
4515 it. Thanks to Sean Reifschneider.
4510
4516
4511 2001-12-22 Fernando Perez <fperez@colorado.edu>
4517 2001-12-22 Fernando Perez <fperez@colorado.edu>
4512
4518
4513 * Released 0.2.2.
4519 * Released 0.2.2.
4514
4520
4515 * Finished (reasonably) writing the manual. Later will add the
4521 * Finished (reasonably) writing the manual. Later will add the
4516 python-standard navigation stylesheets, but for the time being
4522 python-standard navigation stylesheets, but for the time being
4517 it's fairly complete. Distribution will include html and pdf
4523 it's fairly complete. Distribution will include html and pdf
4518 versions.
4524 versions.
4519
4525
4520 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4526 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4521 (MayaVi author).
4527 (MayaVi author).
4522
4528
4523 2001-12-21 Fernando Perez <fperez@colorado.edu>
4529 2001-12-21 Fernando Perez <fperez@colorado.edu>
4524
4530
4525 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4531 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4526 good public release, I think (with the manual and the distutils
4532 good public release, I think (with the manual and the distutils
4527 installer). The manual can use some work, but that can go
4533 installer). The manual can use some work, but that can go
4528 slowly. Otherwise I think it's quite nice for end users. Next
4534 slowly. Otherwise I think it's quite nice for end users. Next
4529 summer, rewrite the guts of it...
4535 summer, rewrite the guts of it...
4530
4536
4531 * Changed format of ipythonrc files to use whitespace as the
4537 * Changed format of ipythonrc files to use whitespace as the
4532 separator instead of an explicit '='. Cleaner.
4538 separator instead of an explicit '='. Cleaner.
4533
4539
4534 2001-12-20 Fernando Perez <fperez@colorado.edu>
4540 2001-12-20 Fernando Perez <fperez@colorado.edu>
4535
4541
4536 * Started a manual in LyX. For now it's just a quick merge of the
4542 * Started a manual in LyX. For now it's just a quick merge of the
4537 various internal docstrings and READMEs. Later it may grow into a
4543 various internal docstrings and READMEs. Later it may grow into a
4538 nice, full-blown manual.
4544 nice, full-blown manual.
4539
4545
4540 * Set up a distutils based installer. Installation should now be
4546 * Set up a distutils based installer. Installation should now be
4541 trivially simple for end-users.
4547 trivially simple for end-users.
4542
4548
4543 2001-12-11 Fernando Perez <fperez@colorado.edu>
4549 2001-12-11 Fernando Perez <fperez@colorado.edu>
4544
4550
4545 * Released 0.2.0. First public release, announced it at
4551 * Released 0.2.0. First public release, announced it at
4546 comp.lang.python. From now on, just bugfixes...
4552 comp.lang.python. From now on, just bugfixes...
4547
4553
4548 * Went through all the files, set copyright/license notices and
4554 * Went through all the files, set copyright/license notices and
4549 cleaned up things. Ready for release.
4555 cleaned up things. Ready for release.
4550
4556
4551 2001-12-10 Fernando Perez <fperez@colorado.edu>
4557 2001-12-10 Fernando Perez <fperez@colorado.edu>
4552
4558
4553 * Changed the first-time installer not to use tarfiles. It's more
4559 * Changed the first-time installer not to use tarfiles. It's more
4554 robust now and less unix-dependent. Also makes it easier for
4560 robust now and less unix-dependent. Also makes it easier for
4555 people to later upgrade versions.
4561 people to later upgrade versions.
4556
4562
4557 * Changed @exit to @abort to reflect the fact that it's pretty
4563 * Changed @exit to @abort to reflect the fact that it's pretty
4558 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4564 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4559 becomes significant only when IPyhton is embedded: in that case,
4565 becomes significant only when IPyhton is embedded: in that case,
4560 C-D closes IPython only, but @abort kills the enclosing program
4566 C-D closes IPython only, but @abort kills the enclosing program
4561 too (unless it had called IPython inside a try catching
4567 too (unless it had called IPython inside a try catching
4562 SystemExit).
4568 SystemExit).
4563
4569
4564 * Created Shell module which exposes the actuall IPython Shell
4570 * Created Shell module which exposes the actuall IPython Shell
4565 classes, currently the normal and the embeddable one. This at
4571 classes, currently the normal and the embeddable one. This at
4566 least offers a stable interface we won't need to change when
4572 least offers a stable interface we won't need to change when
4567 (later) the internals are rewritten. That rewrite will be confined
4573 (later) the internals are rewritten. That rewrite will be confined
4568 to iplib and ipmaker, but the Shell interface should remain as is.
4574 to iplib and ipmaker, but the Shell interface should remain as is.
4569
4575
4570 * Added embed module which offers an embeddable IPShell object,
4576 * Added embed module which offers an embeddable IPShell object,
4571 useful to fire up IPython *inside* a running program. Great for
4577 useful to fire up IPython *inside* a running program. Great for
4572 debugging or dynamical data analysis.
4578 debugging or dynamical data analysis.
4573
4579
4574 2001-12-08 Fernando Perez <fperez@colorado.edu>
4580 2001-12-08 Fernando Perez <fperez@colorado.edu>
4575
4581
4576 * Fixed small bug preventing seeing info from methods of defined
4582 * Fixed small bug preventing seeing info from methods of defined
4577 objects (incorrect namespace in _ofind()).
4583 objects (incorrect namespace in _ofind()).
4578
4584
4579 * Documentation cleanup. Moved the main usage docstrings to a
4585 * Documentation cleanup. Moved the main usage docstrings to a
4580 separate file, usage.py (cleaner to maintain, and hopefully in the
4586 separate file, usage.py (cleaner to maintain, and hopefully in the
4581 future some perlpod-like way of producing interactive, man and
4587 future some perlpod-like way of producing interactive, man and
4582 html docs out of it will be found).
4588 html docs out of it will be found).
4583
4589
4584 * Added @profile to see your profile at any time.
4590 * Added @profile to see your profile at any time.
4585
4591
4586 * Added @p as an alias for 'print'. It's especially convenient if
4592 * Added @p as an alias for 'print'. It's especially convenient if
4587 using automagic ('p x' prints x).
4593 using automagic ('p x' prints x).
4588
4594
4589 * Small cleanups and fixes after a pychecker run.
4595 * Small cleanups and fixes after a pychecker run.
4590
4596
4591 * Changed the @cd command to handle @cd - and @cd -<n> for
4597 * Changed the @cd command to handle @cd - and @cd -<n> for
4592 visiting any directory in _dh.
4598 visiting any directory in _dh.
4593
4599
4594 * Introduced _dh, a history of visited directories. @dhist prints
4600 * Introduced _dh, a history of visited directories. @dhist prints
4595 it out with numbers.
4601 it out with numbers.
4596
4602
4597 2001-12-07 Fernando Perez <fperez@colorado.edu>
4603 2001-12-07 Fernando Perez <fperez@colorado.edu>
4598
4604
4599 * Released 0.1.22
4605 * Released 0.1.22
4600
4606
4601 * Made initialization a bit more robust against invalid color
4607 * Made initialization a bit more robust against invalid color
4602 options in user input (exit, not traceback-crash).
4608 options in user input (exit, not traceback-crash).
4603
4609
4604 * Changed the bug crash reporter to write the report only in the
4610 * Changed the bug crash reporter to write the report only in the
4605 user's .ipython directory. That way IPython won't litter people's
4611 user's .ipython directory. That way IPython won't litter people's
4606 hard disks with crash files all over the place. Also print on
4612 hard disks with crash files all over the place. Also print on
4607 screen the necessary mail command.
4613 screen the necessary mail command.
4608
4614
4609 * With the new ultraTB, implemented LightBG color scheme for light
4615 * With the new ultraTB, implemented LightBG color scheme for light
4610 background terminals. A lot of people like white backgrounds, so I
4616 background terminals. A lot of people like white backgrounds, so I
4611 guess we should at least give them something readable.
4617 guess we should at least give them something readable.
4612
4618
4613 2001-12-06 Fernando Perez <fperez@colorado.edu>
4619 2001-12-06 Fernando Perez <fperez@colorado.edu>
4614
4620
4615 * Modified the structure of ultraTB. Now there's a proper class
4621 * Modified the structure of ultraTB. Now there's a proper class
4616 for tables of color schemes which allow adding schemes easily and
4622 for tables of color schemes which allow adding schemes easily and
4617 switching the active scheme without creating a new instance every
4623 switching the active scheme without creating a new instance every
4618 time (which was ridiculous). The syntax for creating new schemes
4624 time (which was ridiculous). The syntax for creating new schemes
4619 is also cleaner. I think ultraTB is finally done, with a clean
4625 is also cleaner. I think ultraTB is finally done, with a clean
4620 class structure. Names are also much cleaner (now there's proper
4626 class structure. Names are also much cleaner (now there's proper
4621 color tables, no need for every variable to also have 'color' in
4627 color tables, no need for every variable to also have 'color' in
4622 its name).
4628 its name).
4623
4629
4624 * Broke down genutils into separate files. Now genutils only
4630 * Broke down genutils into separate files. Now genutils only
4625 contains utility functions, and classes have been moved to their
4631 contains utility functions, and classes have been moved to their
4626 own files (they had enough independent functionality to warrant
4632 own files (they had enough independent functionality to warrant
4627 it): ConfigLoader, OutputTrap, Struct.
4633 it): ConfigLoader, OutputTrap, Struct.
4628
4634
4629 2001-12-05 Fernando Perez <fperez@colorado.edu>
4635 2001-12-05 Fernando Perez <fperez@colorado.edu>
4630
4636
4631 * IPython turns 21! Released version 0.1.21, as a candidate for
4637 * IPython turns 21! Released version 0.1.21, as a candidate for
4632 public consumption. If all goes well, release in a few days.
4638 public consumption. If all goes well, release in a few days.
4633
4639
4634 * Fixed path bug (files in Extensions/ directory wouldn't be found
4640 * Fixed path bug (files in Extensions/ directory wouldn't be found
4635 unless IPython/ was explicitly in sys.path).
4641 unless IPython/ was explicitly in sys.path).
4636
4642
4637 * Extended the FlexCompleter class as MagicCompleter to allow
4643 * Extended the FlexCompleter class as MagicCompleter to allow
4638 completion of @-starting lines.
4644 completion of @-starting lines.
4639
4645
4640 * Created __release__.py file as a central repository for release
4646 * Created __release__.py file as a central repository for release
4641 info that other files can read from.
4647 info that other files can read from.
4642
4648
4643 * Fixed small bug in logging: when logging was turned on in
4649 * Fixed small bug in logging: when logging was turned on in
4644 mid-session, old lines with special meanings (!@?) were being
4650 mid-session, old lines with special meanings (!@?) were being
4645 logged without the prepended comment, which is necessary since
4651 logged without the prepended comment, which is necessary since
4646 they are not truly valid python syntax. This should make session
4652 they are not truly valid python syntax. This should make session
4647 restores produce less errors.
4653 restores produce less errors.
4648
4654
4649 * The namespace cleanup forced me to make a FlexCompleter class
4655 * The namespace cleanup forced me to make a FlexCompleter class
4650 which is nothing but a ripoff of rlcompleter, but with selectable
4656 which is nothing but a ripoff of rlcompleter, but with selectable
4651 namespace (rlcompleter only works in __main__.__dict__). I'll try
4657 namespace (rlcompleter only works in __main__.__dict__). I'll try
4652 to submit a note to the authors to see if this change can be
4658 to submit a note to the authors to see if this change can be
4653 incorporated in future rlcompleter releases (Dec.6: done)
4659 incorporated in future rlcompleter releases (Dec.6: done)
4654
4660
4655 * More fixes to namespace handling. It was a mess! Now all
4661 * More fixes to namespace handling. It was a mess! Now all
4656 explicit references to __main__.__dict__ are gone (except when
4662 explicit references to __main__.__dict__ are gone (except when
4657 really needed) and everything is handled through the namespace
4663 really needed) and everything is handled through the namespace
4658 dicts in the IPython instance. We seem to be getting somewhere
4664 dicts in the IPython instance. We seem to be getting somewhere
4659 with this, finally...
4665 with this, finally...
4660
4666
4661 * Small documentation updates.
4667 * Small documentation updates.
4662
4668
4663 * Created the Extensions directory under IPython (with an
4669 * Created the Extensions directory under IPython (with an
4664 __init__.py). Put the PhysicalQ stuff there. This directory should
4670 __init__.py). Put the PhysicalQ stuff there. This directory should
4665 be used for all special-purpose extensions.
4671 be used for all special-purpose extensions.
4666
4672
4667 * File renaming:
4673 * File renaming:
4668 ipythonlib --> ipmaker
4674 ipythonlib --> ipmaker
4669 ipplib --> iplib
4675 ipplib --> iplib
4670 This makes a bit more sense in terms of what these files actually do.
4676 This makes a bit more sense in terms of what these files actually do.
4671
4677
4672 * Moved all the classes and functions in ipythonlib to ipplib, so
4678 * Moved all the classes and functions in ipythonlib to ipplib, so
4673 now ipythonlib only has make_IPython(). This will ease up its
4679 now ipythonlib only has make_IPython(). This will ease up its
4674 splitting in smaller functional chunks later.
4680 splitting in smaller functional chunks later.
4675
4681
4676 * Cleaned up (done, I think) output of @whos. Better column
4682 * Cleaned up (done, I think) output of @whos. Better column
4677 formatting, and now shows str(var) for as much as it can, which is
4683 formatting, and now shows str(var) for as much as it can, which is
4678 typically what one gets with a 'print var'.
4684 typically what one gets with a 'print var'.
4679
4685
4680 2001-12-04 Fernando Perez <fperez@colorado.edu>
4686 2001-12-04 Fernando Perez <fperez@colorado.edu>
4681
4687
4682 * Fixed namespace problems. Now builtin/IPyhton/user names get
4688 * Fixed namespace problems. Now builtin/IPyhton/user names get
4683 properly reported in their namespace. Internal namespace handling
4689 properly reported in their namespace. Internal namespace handling
4684 is finally getting decent (not perfect yet, but much better than
4690 is finally getting decent (not perfect yet, but much better than
4685 the ad-hoc mess we had).
4691 the ad-hoc mess we had).
4686
4692
4687 * Removed -exit option. If people just want to run a python
4693 * Removed -exit option. If people just want to run a python
4688 script, that's what the normal interpreter is for. Less
4694 script, that's what the normal interpreter is for. Less
4689 unnecessary options, less chances for bugs.
4695 unnecessary options, less chances for bugs.
4690
4696
4691 * Added a crash handler which generates a complete post-mortem if
4697 * Added a crash handler which generates a complete post-mortem if
4692 IPython crashes. This will help a lot in tracking bugs down the
4698 IPython crashes. This will help a lot in tracking bugs down the
4693 road.
4699 road.
4694
4700
4695 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4701 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4696 which were boud to functions being reassigned would bypass the
4702 which were boud to functions being reassigned would bypass the
4697 logger, breaking the sync of _il with the prompt counter. This
4703 logger, breaking the sync of _il with the prompt counter. This
4698 would then crash IPython later when a new line was logged.
4704 would then crash IPython later when a new line was logged.
4699
4705
4700 2001-12-02 Fernando Perez <fperez@colorado.edu>
4706 2001-12-02 Fernando Perez <fperez@colorado.edu>
4701
4707
4702 * Made IPython a package. This means people don't have to clutter
4708 * Made IPython a package. This means people don't have to clutter
4703 their sys.path with yet another directory. Changed the INSTALL
4709 their sys.path with yet another directory. Changed the INSTALL
4704 file accordingly.
4710 file accordingly.
4705
4711
4706 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4712 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4707 sorts its output (so @who shows it sorted) and @whos formats the
4713 sorts its output (so @who shows it sorted) and @whos formats the
4708 table according to the width of the first column. Nicer, easier to
4714 table according to the width of the first column. Nicer, easier to
4709 read. Todo: write a generic table_format() which takes a list of
4715 read. Todo: write a generic table_format() which takes a list of
4710 lists and prints it nicely formatted, with optional row/column
4716 lists and prints it nicely formatted, with optional row/column
4711 separators and proper padding and justification.
4717 separators and proper padding and justification.
4712
4718
4713 * Released 0.1.20
4719 * Released 0.1.20
4714
4720
4715 * Fixed bug in @log which would reverse the inputcache list (a
4721 * Fixed bug in @log which would reverse the inputcache list (a
4716 copy operation was missing).
4722 copy operation was missing).
4717
4723
4718 * Code cleanup. @config was changed to use page(). Better, since
4724 * Code cleanup. @config was changed to use page(). Better, since
4719 its output is always quite long.
4725 its output is always quite long.
4720
4726
4721 * Itpl is back as a dependency. I was having too many problems
4727 * Itpl is back as a dependency. I was having too many problems
4722 getting the parametric aliases to work reliably, and it's just
4728 getting the parametric aliases to work reliably, and it's just
4723 easier to code weird string operations with it than playing %()s
4729 easier to code weird string operations with it than playing %()s
4724 games. It's only ~6k, so I don't think it's too big a deal.
4730 games. It's only ~6k, so I don't think it's too big a deal.
4725
4731
4726 * Found (and fixed) a very nasty bug with history. !lines weren't
4732 * Found (and fixed) a very nasty bug with history. !lines weren't
4727 getting cached, and the out of sync caches would crash
4733 getting cached, and the out of sync caches would crash
4728 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4734 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4729 division of labor a bit better. Bug fixed, cleaner structure.
4735 division of labor a bit better. Bug fixed, cleaner structure.
4730
4736
4731 2001-12-01 Fernando Perez <fperez@colorado.edu>
4737 2001-12-01 Fernando Perez <fperez@colorado.edu>
4732
4738
4733 * Released 0.1.19
4739 * Released 0.1.19
4734
4740
4735 * Added option -n to @hist to prevent line number printing. Much
4741 * Added option -n to @hist to prevent line number printing. Much
4736 easier to copy/paste code this way.
4742 easier to copy/paste code this way.
4737
4743
4738 * Created global _il to hold the input list. Allows easy
4744 * Created global _il to hold the input list. Allows easy
4739 re-execution of blocks of code by slicing it (inspired by Janko's
4745 re-execution of blocks of code by slicing it (inspired by Janko's
4740 comment on 'macros').
4746 comment on 'macros').
4741
4747
4742 * Small fixes and doc updates.
4748 * Small fixes and doc updates.
4743
4749
4744 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4750 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4745 much too fragile with automagic. Handles properly multi-line
4751 much too fragile with automagic. Handles properly multi-line
4746 statements and takes parameters.
4752 statements and takes parameters.
4747
4753
4748 2001-11-30 Fernando Perez <fperez@colorado.edu>
4754 2001-11-30 Fernando Perez <fperez@colorado.edu>
4749
4755
4750 * Version 0.1.18 released.
4756 * Version 0.1.18 released.
4751
4757
4752 * Fixed nasty namespace bug in initial module imports.
4758 * Fixed nasty namespace bug in initial module imports.
4753
4759
4754 * Added copyright/license notes to all code files (except
4760 * Added copyright/license notes to all code files (except
4755 DPyGetOpt). For the time being, LGPL. That could change.
4761 DPyGetOpt). For the time being, LGPL. That could change.
4756
4762
4757 * Rewrote a much nicer README, updated INSTALL, cleaned up
4763 * Rewrote a much nicer README, updated INSTALL, cleaned up
4758 ipythonrc-* samples.
4764 ipythonrc-* samples.
4759
4765
4760 * Overall code/documentation cleanup. Basically ready for
4766 * Overall code/documentation cleanup. Basically ready for
4761 release. Only remaining thing: licence decision (LGPL?).
4767 release. Only remaining thing: licence decision (LGPL?).
4762
4768
4763 * Converted load_config to a class, ConfigLoader. Now recursion
4769 * Converted load_config to a class, ConfigLoader. Now recursion
4764 control is better organized. Doesn't include the same file twice.
4770 control is better organized. Doesn't include the same file twice.
4765
4771
4766 2001-11-29 Fernando Perez <fperez@colorado.edu>
4772 2001-11-29 Fernando Perez <fperez@colorado.edu>
4767
4773
4768 * Got input history working. Changed output history variables from
4774 * Got input history working. Changed output history variables from
4769 _p to _o so that _i is for input and _o for output. Just cleaner
4775 _p to _o so that _i is for input and _o for output. Just cleaner
4770 convention.
4776 convention.
4771
4777
4772 * Implemented parametric aliases. This pretty much allows the
4778 * Implemented parametric aliases. This pretty much allows the
4773 alias system to offer full-blown shell convenience, I think.
4779 alias system to offer full-blown shell convenience, I think.
4774
4780
4775 * Version 0.1.17 released, 0.1.18 opened.
4781 * Version 0.1.17 released, 0.1.18 opened.
4776
4782
4777 * dot_ipython/ipythonrc (alias): added documentation.
4783 * dot_ipython/ipythonrc (alias): added documentation.
4778 (xcolor): Fixed small bug (xcolors -> xcolor)
4784 (xcolor): Fixed small bug (xcolors -> xcolor)
4779
4785
4780 * Changed the alias system. Now alias is a magic command to define
4786 * Changed the alias system. Now alias is a magic command to define
4781 aliases just like the shell. Rationale: the builtin magics should
4787 aliases just like the shell. Rationale: the builtin magics should
4782 be there for things deeply connected to IPython's
4788 be there for things deeply connected to IPython's
4783 architecture. And this is a much lighter system for what I think
4789 architecture. And this is a much lighter system for what I think
4784 is the really important feature: allowing users to define quickly
4790 is the really important feature: allowing users to define quickly
4785 magics that will do shell things for them, so they can customize
4791 magics that will do shell things for them, so they can customize
4786 IPython easily to match their work habits. If someone is really
4792 IPython easily to match their work habits. If someone is really
4787 desperate to have another name for a builtin alias, they can
4793 desperate to have another name for a builtin alias, they can
4788 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4794 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4789 works.
4795 works.
4790
4796
4791 2001-11-28 Fernando Perez <fperez@colorado.edu>
4797 2001-11-28 Fernando Perez <fperez@colorado.edu>
4792
4798
4793 * Changed @file so that it opens the source file at the proper
4799 * Changed @file so that it opens the source file at the proper
4794 line. Since it uses less, if your EDITOR environment is
4800 line. Since it uses less, if your EDITOR environment is
4795 configured, typing v will immediately open your editor of choice
4801 configured, typing v will immediately open your editor of choice
4796 right at the line where the object is defined. Not as quick as
4802 right at the line where the object is defined. Not as quick as
4797 having a direct @edit command, but for all intents and purposes it
4803 having a direct @edit command, but for all intents and purposes it
4798 works. And I don't have to worry about writing @edit to deal with
4804 works. And I don't have to worry about writing @edit to deal with
4799 all the editors, less does that.
4805 all the editors, less does that.
4800
4806
4801 * Version 0.1.16 released, 0.1.17 opened.
4807 * Version 0.1.16 released, 0.1.17 opened.
4802
4808
4803 * Fixed some nasty bugs in the page/page_dumb combo that could
4809 * Fixed some nasty bugs in the page/page_dumb combo that could
4804 crash IPython.
4810 crash IPython.
4805
4811
4806 2001-11-27 Fernando Perez <fperez@colorado.edu>
4812 2001-11-27 Fernando Perez <fperez@colorado.edu>
4807
4813
4808 * Version 0.1.15 released, 0.1.16 opened.
4814 * Version 0.1.15 released, 0.1.16 opened.
4809
4815
4810 * Finally got ? and ?? to work for undefined things: now it's
4816 * Finally got ? and ?? to work for undefined things: now it's
4811 possible to type {}.get? and get information about the get method
4817 possible to type {}.get? and get information about the get method
4812 of dicts, or os.path? even if only os is defined (so technically
4818 of dicts, or os.path? even if only os is defined (so technically
4813 os.path isn't). Works at any level. For example, after import os,
4819 os.path isn't). Works at any level. For example, after import os,
4814 os?, os.path?, os.path.abspath? all work. This is great, took some
4820 os?, os.path?, os.path.abspath? all work. This is great, took some
4815 work in _ofind.
4821 work in _ofind.
4816
4822
4817 * Fixed more bugs with logging. The sanest way to do it was to add
4823 * Fixed more bugs with logging. The sanest way to do it was to add
4818 to @log a 'mode' parameter. Killed two in one shot (this mode
4824 to @log a 'mode' parameter. Killed two in one shot (this mode
4819 option was a request of Janko's). I think it's finally clean
4825 option was a request of Janko's). I think it's finally clean
4820 (famous last words).
4826 (famous last words).
4821
4827
4822 * Added a page_dumb() pager which does a decent job of paging on
4828 * Added a page_dumb() pager which does a decent job of paging on
4823 screen, if better things (like less) aren't available. One less
4829 screen, if better things (like less) aren't available. One less
4824 unix dependency (someday maybe somebody will port this to
4830 unix dependency (someday maybe somebody will port this to
4825 windows).
4831 windows).
4826
4832
4827 * Fixed problem in magic_log: would lock of logging out if log
4833 * Fixed problem in magic_log: would lock of logging out if log
4828 creation failed (because it would still think it had succeeded).
4834 creation failed (because it would still think it had succeeded).
4829
4835
4830 * Improved the page() function using curses to auto-detect screen
4836 * Improved the page() function using curses to auto-detect screen
4831 size. Now it can make a much better decision on whether to print
4837 size. Now it can make a much better decision on whether to print
4832 or page a string. Option screen_length was modified: a value 0
4838 or page a string. Option screen_length was modified: a value 0
4833 means auto-detect, and that's the default now.
4839 means auto-detect, and that's the default now.
4834
4840
4835 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4841 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4836 go out. I'll test it for a few days, then talk to Janko about
4842 go out. I'll test it for a few days, then talk to Janko about
4837 licences and announce it.
4843 licences and announce it.
4838
4844
4839 * Fixed the length of the auto-generated ---> prompt which appears
4845 * Fixed the length of the auto-generated ---> prompt which appears
4840 for auto-parens and auto-quotes. Getting this right isn't trivial,
4846 for auto-parens and auto-quotes. Getting this right isn't trivial,
4841 with all the color escapes, different prompt types and optional
4847 with all the color escapes, different prompt types and optional
4842 separators. But it seems to be working in all the combinations.
4848 separators. But it seems to be working in all the combinations.
4843
4849
4844 2001-11-26 Fernando Perez <fperez@colorado.edu>
4850 2001-11-26 Fernando Perez <fperez@colorado.edu>
4845
4851
4846 * Wrote a regexp filter to get option types from the option names
4852 * Wrote a regexp filter to get option types from the option names
4847 string. This eliminates the need to manually keep two duplicate
4853 string. This eliminates the need to manually keep two duplicate
4848 lists.
4854 lists.
4849
4855
4850 * Removed the unneeded check_option_names. Now options are handled
4856 * Removed the unneeded check_option_names. Now options are handled
4851 in a much saner manner and it's easy to visually check that things
4857 in a much saner manner and it's easy to visually check that things
4852 are ok.
4858 are ok.
4853
4859
4854 * Updated version numbers on all files I modified to carry a
4860 * Updated version numbers on all files I modified to carry a
4855 notice so Janko and Nathan have clear version markers.
4861 notice so Janko and Nathan have clear version markers.
4856
4862
4857 * Updated docstring for ultraTB with my changes. I should send
4863 * Updated docstring for ultraTB with my changes. I should send
4858 this to Nathan.
4864 this to Nathan.
4859
4865
4860 * Lots of small fixes. Ran everything through pychecker again.
4866 * Lots of small fixes. Ran everything through pychecker again.
4861
4867
4862 * Made loading of deep_reload an cmd line option. If it's not too
4868 * Made loading of deep_reload an cmd line option. If it's not too
4863 kosher, now people can just disable it. With -nodeep_reload it's
4869 kosher, now people can just disable it. With -nodeep_reload it's
4864 still available as dreload(), it just won't overwrite reload().
4870 still available as dreload(), it just won't overwrite reload().
4865
4871
4866 * Moved many options to the no| form (-opt and -noopt
4872 * Moved many options to the no| form (-opt and -noopt
4867 accepted). Cleaner.
4873 accepted). Cleaner.
4868
4874
4869 * Changed magic_log so that if called with no parameters, it uses
4875 * Changed magic_log so that if called with no parameters, it uses
4870 'rotate' mode. That way auto-generated logs aren't automatically
4876 'rotate' mode. That way auto-generated logs aren't automatically
4871 over-written. For normal logs, now a backup is made if it exists
4877 over-written. For normal logs, now a backup is made if it exists
4872 (only 1 level of backups). A new 'backup' mode was added to the
4878 (only 1 level of backups). A new 'backup' mode was added to the
4873 Logger class to support this. This was a request by Janko.
4879 Logger class to support this. This was a request by Janko.
4874
4880
4875 * Added @logoff/@logon to stop/restart an active log.
4881 * Added @logoff/@logon to stop/restart an active log.
4876
4882
4877 * Fixed a lot of bugs in log saving/replay. It was pretty
4883 * Fixed a lot of bugs in log saving/replay. It was pretty
4878 broken. Now special lines (!@,/) appear properly in the command
4884 broken. Now special lines (!@,/) appear properly in the command
4879 history after a log replay.
4885 history after a log replay.
4880
4886
4881 * Tried and failed to implement full session saving via pickle. My
4887 * Tried and failed to implement full session saving via pickle. My
4882 idea was to pickle __main__.__dict__, but modules can't be
4888 idea was to pickle __main__.__dict__, but modules can't be
4883 pickled. This would be a better alternative to replaying logs, but
4889 pickled. This would be a better alternative to replaying logs, but
4884 seems quite tricky to get to work. Changed -session to be called
4890 seems quite tricky to get to work. Changed -session to be called
4885 -logplay, which more accurately reflects what it does. And if we
4891 -logplay, which more accurately reflects what it does. And if we
4886 ever get real session saving working, -session is now available.
4892 ever get real session saving working, -session is now available.
4887
4893
4888 * Implemented color schemes for prompts also. As for tracebacks,
4894 * Implemented color schemes for prompts also. As for tracebacks,
4889 currently only NoColor and Linux are supported. But now the
4895 currently only NoColor and Linux are supported. But now the
4890 infrastructure is in place, based on a generic ColorScheme
4896 infrastructure is in place, based on a generic ColorScheme
4891 class. So writing and activating new schemes both for the prompts
4897 class. So writing and activating new schemes both for the prompts
4892 and the tracebacks should be straightforward.
4898 and the tracebacks should be straightforward.
4893
4899
4894 * Version 0.1.13 released, 0.1.14 opened.
4900 * Version 0.1.13 released, 0.1.14 opened.
4895
4901
4896 * Changed handling of options for output cache. Now counter is
4902 * Changed handling of options for output cache. Now counter is
4897 hardwired starting at 1 and one specifies the maximum number of
4903 hardwired starting at 1 and one specifies the maximum number of
4898 entries *in the outcache* (not the max prompt counter). This is
4904 entries *in the outcache* (not the max prompt counter). This is
4899 much better, since many statements won't increase the cache
4905 much better, since many statements won't increase the cache
4900 count. It also eliminated some confusing options, now there's only
4906 count. It also eliminated some confusing options, now there's only
4901 one: cache_size.
4907 one: cache_size.
4902
4908
4903 * Added 'alias' magic function and magic_alias option in the
4909 * Added 'alias' magic function and magic_alias option in the
4904 ipythonrc file. Now the user can easily define whatever names he
4910 ipythonrc file. Now the user can easily define whatever names he
4905 wants for the magic functions without having to play weird
4911 wants for the magic functions without having to play weird
4906 namespace games. This gives IPython a real shell-like feel.
4912 namespace games. This gives IPython a real shell-like feel.
4907
4913
4908 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4914 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4909 @ or not).
4915 @ or not).
4910
4916
4911 This was one of the last remaining 'visible' bugs (that I know
4917 This was one of the last remaining 'visible' bugs (that I know
4912 of). I think if I can clean up the session loading so it works
4918 of). I think if I can clean up the session loading so it works
4913 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4919 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4914 about licensing).
4920 about licensing).
4915
4921
4916 2001-11-25 Fernando Perez <fperez@colorado.edu>
4922 2001-11-25 Fernando Perez <fperez@colorado.edu>
4917
4923
4918 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4924 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4919 there's a cleaner distinction between what ? and ?? show.
4925 there's a cleaner distinction between what ? and ?? show.
4920
4926
4921 * Added screen_length option. Now the user can define his own
4927 * Added screen_length option. Now the user can define his own
4922 screen size for page() operations.
4928 screen size for page() operations.
4923
4929
4924 * Implemented magic shell-like functions with automatic code
4930 * Implemented magic shell-like functions with automatic code
4925 generation. Now adding another function is just a matter of adding
4931 generation. Now adding another function is just a matter of adding
4926 an entry to a dict, and the function is dynamically generated at
4932 an entry to a dict, and the function is dynamically generated at
4927 run-time. Python has some really cool features!
4933 run-time. Python has some really cool features!
4928
4934
4929 * Renamed many options to cleanup conventions a little. Now all
4935 * Renamed many options to cleanup conventions a little. Now all
4930 are lowercase, and only underscores where needed. Also in the code
4936 are lowercase, and only underscores where needed. Also in the code
4931 option name tables are clearer.
4937 option name tables are clearer.
4932
4938
4933 * Changed prompts a little. Now input is 'In [n]:' instead of
4939 * Changed prompts a little. Now input is 'In [n]:' instead of
4934 'In[n]:='. This allows it the numbers to be aligned with the
4940 'In[n]:='. This allows it the numbers to be aligned with the
4935 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4941 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4936 Python (it was a Mathematica thing). The '...' continuation prompt
4942 Python (it was a Mathematica thing). The '...' continuation prompt
4937 was also changed a little to align better.
4943 was also changed a little to align better.
4938
4944
4939 * Fixed bug when flushing output cache. Not all _p<n> variables
4945 * Fixed bug when flushing output cache. Not all _p<n> variables
4940 exist, so their deletion needs to be wrapped in a try:
4946 exist, so their deletion needs to be wrapped in a try:
4941
4947
4942 * Figured out how to properly use inspect.formatargspec() (it
4948 * Figured out how to properly use inspect.formatargspec() (it
4943 requires the args preceded by *). So I removed all the code from
4949 requires the args preceded by *). So I removed all the code from
4944 _get_pdef in Magic, which was just replicating that.
4950 _get_pdef in Magic, which was just replicating that.
4945
4951
4946 * Added test to prefilter to allow redefining magic function names
4952 * Added test to prefilter to allow redefining magic function names
4947 as variables. This is ok, since the @ form is always available,
4953 as variables. This is ok, since the @ form is always available,
4948 but whe should allow the user to define a variable called 'ls' if
4954 but whe should allow the user to define a variable called 'ls' if
4949 he needs it.
4955 he needs it.
4950
4956
4951 * Moved the ToDo information from README into a separate ToDo.
4957 * Moved the ToDo information from README into a separate ToDo.
4952
4958
4953 * General code cleanup and small bugfixes. I think it's close to a
4959 * General code cleanup and small bugfixes. I think it's close to a
4954 state where it can be released, obviously with a big 'beta'
4960 state where it can be released, obviously with a big 'beta'
4955 warning on it.
4961 warning on it.
4956
4962
4957 * Got the magic function split to work. Now all magics are defined
4963 * Got the magic function split to work. Now all magics are defined
4958 in a separate class. It just organizes things a bit, and now
4964 in a separate class. It just organizes things a bit, and now
4959 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4965 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4960 was too long).
4966 was too long).
4961
4967
4962 * Changed @clear to @reset to avoid potential confusions with
4968 * Changed @clear to @reset to avoid potential confusions with
4963 the shell command clear. Also renamed @cl to @clear, which does
4969 the shell command clear. Also renamed @cl to @clear, which does
4964 exactly what people expect it to from their shell experience.
4970 exactly what people expect it to from their shell experience.
4965
4971
4966 Added a check to the @reset command (since it's so
4972 Added a check to the @reset command (since it's so
4967 destructive, it's probably a good idea to ask for confirmation).
4973 destructive, it's probably a good idea to ask for confirmation).
4968 But now reset only works for full namespace resetting. Since the
4974 But now reset only works for full namespace resetting. Since the
4969 del keyword is already there for deleting a few specific
4975 del keyword is already there for deleting a few specific
4970 variables, I don't see the point of having a redundant magic
4976 variables, I don't see the point of having a redundant magic
4971 function for the same task.
4977 function for the same task.
4972
4978
4973 2001-11-24 Fernando Perez <fperez@colorado.edu>
4979 2001-11-24 Fernando Perez <fperez@colorado.edu>
4974
4980
4975 * Updated the builtin docs (esp. the ? ones).
4981 * Updated the builtin docs (esp. the ? ones).
4976
4982
4977 * Ran all the code through pychecker. Not terribly impressed with
4983 * Ran all the code through pychecker. Not terribly impressed with
4978 it: lots of spurious warnings and didn't really find anything of
4984 it: lots of spurious warnings and didn't really find anything of
4979 substance (just a few modules being imported and not used).
4985 substance (just a few modules being imported and not used).
4980
4986
4981 * Implemented the new ultraTB functionality into IPython. New
4987 * Implemented the new ultraTB functionality into IPython. New
4982 option: xcolors. This chooses color scheme. xmode now only selects
4988 option: xcolors. This chooses color scheme. xmode now only selects
4983 between Plain and Verbose. Better orthogonality.
4989 between Plain and Verbose. Better orthogonality.
4984
4990
4985 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4991 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4986 mode and color scheme for the exception handlers. Now it's
4992 mode and color scheme for the exception handlers. Now it's
4987 possible to have the verbose traceback with no coloring.
4993 possible to have the verbose traceback with no coloring.
4988
4994
4989 2001-11-23 Fernando Perez <fperez@colorado.edu>
4995 2001-11-23 Fernando Perez <fperez@colorado.edu>
4990
4996
4991 * Version 0.1.12 released, 0.1.13 opened.
4997 * Version 0.1.12 released, 0.1.13 opened.
4992
4998
4993 * Removed option to set auto-quote and auto-paren escapes by
4999 * Removed option to set auto-quote and auto-paren escapes by
4994 user. The chances of breaking valid syntax are just too high. If
5000 user. The chances of breaking valid syntax are just too high. If
4995 someone *really* wants, they can always dig into the code.
5001 someone *really* wants, they can always dig into the code.
4996
5002
4997 * Made prompt separators configurable.
5003 * Made prompt separators configurable.
4998
5004
4999 2001-11-22 Fernando Perez <fperez@colorado.edu>
5005 2001-11-22 Fernando Perez <fperez@colorado.edu>
5000
5006
5001 * Small bugfixes in many places.
5007 * Small bugfixes in many places.
5002
5008
5003 * Removed the MyCompleter class from ipplib. It seemed redundant
5009 * Removed the MyCompleter class from ipplib. It seemed redundant
5004 with the C-p,C-n history search functionality. Less code to
5010 with the C-p,C-n history search functionality. Less code to
5005 maintain.
5011 maintain.
5006
5012
5007 * Moved all the original ipython.py code into ipythonlib.py. Right
5013 * Moved all the original ipython.py code into ipythonlib.py. Right
5008 now it's just one big dump into a function called make_IPython, so
5014 now it's just one big dump into a function called make_IPython, so
5009 no real modularity has been gained. But at least it makes the
5015 no real modularity has been gained. But at least it makes the
5010 wrapper script tiny, and since ipythonlib is a module, it gets
5016 wrapper script tiny, and since ipythonlib is a module, it gets
5011 compiled and startup is much faster.
5017 compiled and startup is much faster.
5012
5018
5013 This is a reasobably 'deep' change, so we should test it for a
5019 This is a reasobably 'deep' change, so we should test it for a
5014 while without messing too much more with the code.
5020 while without messing too much more with the code.
5015
5021
5016 2001-11-21 Fernando Perez <fperez@colorado.edu>
5022 2001-11-21 Fernando Perez <fperez@colorado.edu>
5017
5023
5018 * Version 0.1.11 released, 0.1.12 opened for further work.
5024 * Version 0.1.11 released, 0.1.12 opened for further work.
5019
5025
5020 * Removed dependency on Itpl. It was only needed in one place. It
5026 * Removed dependency on Itpl. It was only needed in one place. It
5021 would be nice if this became part of python, though. It makes life
5027 would be nice if this became part of python, though. It makes life
5022 *a lot* easier in some cases.
5028 *a lot* easier in some cases.
5023
5029
5024 * Simplified the prefilter code a bit. Now all handlers are
5030 * Simplified the prefilter code a bit. Now all handlers are
5025 expected to explicitly return a value (at least a blank string).
5031 expected to explicitly return a value (at least a blank string).
5026
5032
5027 * Heavy edits in ipplib. Removed the help system altogether. Now
5033 * Heavy edits in ipplib. Removed the help system altogether. Now
5028 obj?/?? is used for inspecting objects, a magic @doc prints
5034 obj?/?? is used for inspecting objects, a magic @doc prints
5029 docstrings, and full-blown Python help is accessed via the 'help'
5035 docstrings, and full-blown Python help is accessed via the 'help'
5030 keyword. This cleans up a lot of code (less to maintain) and does
5036 keyword. This cleans up a lot of code (less to maintain) and does
5031 the job. Since 'help' is now a standard Python component, might as
5037 the job. Since 'help' is now a standard Python component, might as
5032 well use it and remove duplicate functionality.
5038 well use it and remove duplicate functionality.
5033
5039
5034 Also removed the option to use ipplib as a standalone program. By
5040 Also removed the option to use ipplib as a standalone program. By
5035 now it's too dependent on other parts of IPython to function alone.
5041 now it's too dependent on other parts of IPython to function alone.
5036
5042
5037 * Fixed bug in genutils.pager. It would crash if the pager was
5043 * Fixed bug in genutils.pager. It would crash if the pager was
5038 exited immediately after opening (broken pipe).
5044 exited immediately after opening (broken pipe).
5039
5045
5040 * Trimmed down the VerboseTB reporting a little. The header is
5046 * Trimmed down the VerboseTB reporting a little. The header is
5041 much shorter now and the repeated exception arguments at the end
5047 much shorter now and the repeated exception arguments at the end
5042 have been removed. For interactive use the old header seemed a bit
5048 have been removed. For interactive use the old header seemed a bit
5043 excessive.
5049 excessive.
5044
5050
5045 * Fixed small bug in output of @whos for variables with multi-word
5051 * Fixed small bug in output of @whos for variables with multi-word
5046 types (only first word was displayed).
5052 types (only first word was displayed).
5047
5053
5048 2001-11-17 Fernando Perez <fperez@colorado.edu>
5054 2001-11-17 Fernando Perez <fperez@colorado.edu>
5049
5055
5050 * Version 0.1.10 released, 0.1.11 opened for further work.
5056 * Version 0.1.10 released, 0.1.11 opened for further work.
5051
5057
5052 * Modified dirs and friends. dirs now *returns* the stack (not
5058 * Modified dirs and friends. dirs now *returns* the stack (not
5053 prints), so one can manipulate it as a variable. Convenient to
5059 prints), so one can manipulate it as a variable. Convenient to
5054 travel along many directories.
5060 travel along many directories.
5055
5061
5056 * Fixed bug in magic_pdef: would only work with functions with
5062 * Fixed bug in magic_pdef: would only work with functions with
5057 arguments with default values.
5063 arguments with default values.
5058
5064
5059 2001-11-14 Fernando Perez <fperez@colorado.edu>
5065 2001-11-14 Fernando Perez <fperez@colorado.edu>
5060
5066
5061 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5067 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5062 example with IPython. Various other minor fixes and cleanups.
5068 example with IPython. Various other minor fixes and cleanups.
5063
5069
5064 * Version 0.1.9 released, 0.1.10 opened for further work.
5070 * Version 0.1.9 released, 0.1.10 opened for further work.
5065
5071
5066 * Added sys.path to the list of directories searched in the
5072 * Added sys.path to the list of directories searched in the
5067 execfile= option. It used to be the current directory and the
5073 execfile= option. It used to be the current directory and the
5068 user's IPYTHONDIR only.
5074 user's IPYTHONDIR only.
5069
5075
5070 2001-11-13 Fernando Perez <fperez@colorado.edu>
5076 2001-11-13 Fernando Perez <fperez@colorado.edu>
5071
5077
5072 * Reinstated the raw_input/prefilter separation that Janko had
5078 * Reinstated the raw_input/prefilter separation that Janko had
5073 initially. This gives a more convenient setup for extending the
5079 initially. This gives a more convenient setup for extending the
5074 pre-processor from the outside: raw_input always gets a string,
5080 pre-processor from the outside: raw_input always gets a string,
5075 and prefilter has to process it. We can then redefine prefilter
5081 and prefilter has to process it. We can then redefine prefilter
5076 from the outside and implement extensions for special
5082 from the outside and implement extensions for special
5077 purposes.
5083 purposes.
5078
5084
5079 Today I got one for inputting PhysicalQuantity objects
5085 Today I got one for inputting PhysicalQuantity objects
5080 (from Scientific) without needing any function calls at
5086 (from Scientific) without needing any function calls at
5081 all. Extremely convenient, and it's all done as a user-level
5087 all. Extremely convenient, and it's all done as a user-level
5082 extension (no IPython code was touched). Now instead of:
5088 extension (no IPython code was touched). Now instead of:
5083 a = PhysicalQuantity(4.2,'m/s**2')
5089 a = PhysicalQuantity(4.2,'m/s**2')
5084 one can simply say
5090 one can simply say
5085 a = 4.2 m/s**2
5091 a = 4.2 m/s**2
5086 or even
5092 or even
5087 a = 4.2 m/s^2
5093 a = 4.2 m/s^2
5088
5094
5089 I use this, but it's also a proof of concept: IPython really is
5095 I use this, but it's also a proof of concept: IPython really is
5090 fully user-extensible, even at the level of the parsing of the
5096 fully user-extensible, even at the level of the parsing of the
5091 command line. It's not trivial, but it's perfectly doable.
5097 command line. It's not trivial, but it's perfectly doable.
5092
5098
5093 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5099 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5094 the problem of modules being loaded in the inverse order in which
5100 the problem of modules being loaded in the inverse order in which
5095 they were defined in
5101 they were defined in
5096
5102
5097 * Version 0.1.8 released, 0.1.9 opened for further work.
5103 * Version 0.1.8 released, 0.1.9 opened for further work.
5098
5104
5099 * Added magics pdef, source and file. They respectively show the
5105 * Added magics pdef, source and file. They respectively show the
5100 definition line ('prototype' in C), source code and full python
5106 definition line ('prototype' in C), source code and full python
5101 file for any callable object. The object inspector oinfo uses
5107 file for any callable object. The object inspector oinfo uses
5102 these to show the same information.
5108 these to show the same information.
5103
5109
5104 * Version 0.1.7 released, 0.1.8 opened for further work.
5110 * Version 0.1.7 released, 0.1.8 opened for further work.
5105
5111
5106 * Separated all the magic functions into a class called Magic. The
5112 * Separated all the magic functions into a class called Magic. The
5107 InteractiveShell class was becoming too big for Xemacs to handle
5113 InteractiveShell class was becoming too big for Xemacs to handle
5108 (de-indenting a line would lock it up for 10 seconds while it
5114 (de-indenting a line would lock it up for 10 seconds while it
5109 backtracked on the whole class!)
5115 backtracked on the whole class!)
5110
5116
5111 FIXME: didn't work. It can be done, but right now namespaces are
5117 FIXME: didn't work. It can be done, but right now namespaces are
5112 all messed up. Do it later (reverted it for now, so at least
5118 all messed up. Do it later (reverted it for now, so at least
5113 everything works as before).
5119 everything works as before).
5114
5120
5115 * Got the object introspection system (magic_oinfo) working! I
5121 * Got the object introspection system (magic_oinfo) working! I
5116 think this is pretty much ready for release to Janko, so he can
5122 think this is pretty much ready for release to Janko, so he can
5117 test it for a while and then announce it. Pretty much 100% of what
5123 test it for a while and then announce it. Pretty much 100% of what
5118 I wanted for the 'phase 1' release is ready. Happy, tired.
5124 I wanted for the 'phase 1' release is ready. Happy, tired.
5119
5125
5120 2001-11-12 Fernando Perez <fperez@colorado.edu>
5126 2001-11-12 Fernando Perez <fperez@colorado.edu>
5121
5127
5122 * Version 0.1.6 released, 0.1.7 opened for further work.
5128 * Version 0.1.6 released, 0.1.7 opened for further work.
5123
5129
5124 * Fixed bug in printing: it used to test for truth before
5130 * Fixed bug in printing: it used to test for truth before
5125 printing, so 0 wouldn't print. Now checks for None.
5131 printing, so 0 wouldn't print. Now checks for None.
5126
5132
5127 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5133 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5128 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5134 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5129 reaches by hand into the outputcache. Think of a better way to do
5135 reaches by hand into the outputcache. Think of a better way to do
5130 this later.
5136 this later.
5131
5137
5132 * Various small fixes thanks to Nathan's comments.
5138 * Various small fixes thanks to Nathan's comments.
5133
5139
5134 * Changed magic_pprint to magic_Pprint. This way it doesn't
5140 * Changed magic_pprint to magic_Pprint. This way it doesn't
5135 collide with pprint() and the name is consistent with the command
5141 collide with pprint() and the name is consistent with the command
5136 line option.
5142 line option.
5137
5143
5138 * Changed prompt counter behavior to be fully like
5144 * Changed prompt counter behavior to be fully like
5139 Mathematica's. That is, even input that doesn't return a result
5145 Mathematica's. That is, even input that doesn't return a result
5140 raises the prompt counter. The old behavior was kind of confusing
5146 raises the prompt counter. The old behavior was kind of confusing
5141 (getting the same prompt number several times if the operation
5147 (getting the same prompt number several times if the operation
5142 didn't return a result).
5148 didn't return a result).
5143
5149
5144 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5150 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5145
5151
5146 * Fixed -Classic mode (wasn't working anymore).
5152 * Fixed -Classic mode (wasn't working anymore).
5147
5153
5148 * Added colored prompts using Nathan's new code. Colors are
5154 * Added colored prompts using Nathan's new code. Colors are
5149 currently hardwired, they can be user-configurable. For
5155 currently hardwired, they can be user-configurable. For
5150 developers, they can be chosen in file ipythonlib.py, at the
5156 developers, they can be chosen in file ipythonlib.py, at the
5151 beginning of the CachedOutput class def.
5157 beginning of the CachedOutput class def.
5152
5158
5153 2001-11-11 Fernando Perez <fperez@colorado.edu>
5159 2001-11-11 Fernando Perez <fperez@colorado.edu>
5154
5160
5155 * Version 0.1.5 released, 0.1.6 opened for further work.
5161 * Version 0.1.5 released, 0.1.6 opened for further work.
5156
5162
5157 * Changed magic_env to *return* the environment as a dict (not to
5163 * Changed magic_env to *return* the environment as a dict (not to
5158 print it). This way it prints, but it can also be processed.
5164 print it). This way it prints, but it can also be processed.
5159
5165
5160 * Added Verbose exception reporting to interactive
5166 * Added Verbose exception reporting to interactive
5161 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5167 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5162 traceback. Had to make some changes to the ultraTB file. This is
5168 traceback. Had to make some changes to the ultraTB file. This is
5163 probably the last 'big' thing in my mental todo list. This ties
5169 probably the last 'big' thing in my mental todo list. This ties
5164 in with the next entry:
5170 in with the next entry:
5165
5171
5166 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5172 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5167 has to specify is Plain, Color or Verbose for all exception
5173 has to specify is Plain, Color or Verbose for all exception
5168 handling.
5174 handling.
5169
5175
5170 * Removed ShellServices option. All this can really be done via
5176 * Removed ShellServices option. All this can really be done via
5171 the magic system. It's easier to extend, cleaner and has automatic
5177 the magic system. It's easier to extend, cleaner and has automatic
5172 namespace protection and documentation.
5178 namespace protection and documentation.
5173
5179
5174 2001-11-09 Fernando Perez <fperez@colorado.edu>
5180 2001-11-09 Fernando Perez <fperez@colorado.edu>
5175
5181
5176 * Fixed bug in output cache flushing (missing parameter to
5182 * Fixed bug in output cache flushing (missing parameter to
5177 __init__). Other small bugs fixed (found using pychecker).
5183 __init__). Other small bugs fixed (found using pychecker).
5178
5184
5179 * Version 0.1.4 opened for bugfixing.
5185 * Version 0.1.4 opened for bugfixing.
5180
5186
5181 2001-11-07 Fernando Perez <fperez@colorado.edu>
5187 2001-11-07 Fernando Perez <fperez@colorado.edu>
5182
5188
5183 * Version 0.1.3 released, mainly because of the raw_input bug.
5189 * Version 0.1.3 released, mainly because of the raw_input bug.
5184
5190
5185 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5191 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5186 and when testing for whether things were callable, a call could
5192 and when testing for whether things were callable, a call could
5187 actually be made to certain functions. They would get called again
5193 actually be made to certain functions. They would get called again
5188 once 'really' executed, with a resulting double call. A disaster
5194 once 'really' executed, with a resulting double call. A disaster
5189 in many cases (list.reverse() would never work!).
5195 in many cases (list.reverse() would never work!).
5190
5196
5191 * Removed prefilter() function, moved its code to raw_input (which
5197 * Removed prefilter() function, moved its code to raw_input (which
5192 after all was just a near-empty caller for prefilter). This saves
5198 after all was just a near-empty caller for prefilter). This saves
5193 a function call on every prompt, and simplifies the class a tiny bit.
5199 a function call on every prompt, and simplifies the class a tiny bit.
5194
5200
5195 * Fix _ip to __ip name in magic example file.
5201 * Fix _ip to __ip name in magic example file.
5196
5202
5197 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5203 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5198 work with non-gnu versions of tar.
5204 work with non-gnu versions of tar.
5199
5205
5200 2001-11-06 Fernando Perez <fperez@colorado.edu>
5206 2001-11-06 Fernando Perez <fperez@colorado.edu>
5201
5207
5202 * Version 0.1.2. Just to keep track of the recent changes.
5208 * Version 0.1.2. Just to keep track of the recent changes.
5203
5209
5204 * Fixed nasty bug in output prompt routine. It used to check 'if
5210 * Fixed nasty bug in output prompt routine. It used to check 'if
5205 arg != None...'. Problem is, this fails if arg implements a
5211 arg != None...'. Problem is, this fails if arg implements a
5206 special comparison (__cmp__) which disallows comparing to
5212 special comparison (__cmp__) which disallows comparing to
5207 None. Found it when trying to use the PhysicalQuantity module from
5213 None. Found it when trying to use the PhysicalQuantity module from
5208 ScientificPython.
5214 ScientificPython.
5209
5215
5210 2001-11-05 Fernando Perez <fperez@colorado.edu>
5216 2001-11-05 Fernando Perez <fperez@colorado.edu>
5211
5217
5212 * Also added dirs. Now the pushd/popd/dirs family functions
5218 * Also added dirs. Now the pushd/popd/dirs family functions
5213 basically like the shell, with the added convenience of going home
5219 basically like the shell, with the added convenience of going home
5214 when called with no args.
5220 when called with no args.
5215
5221
5216 * pushd/popd slightly modified to mimic shell behavior more
5222 * pushd/popd slightly modified to mimic shell behavior more
5217 closely.
5223 closely.
5218
5224
5219 * Added env,pushd,popd from ShellServices as magic functions. I
5225 * Added env,pushd,popd from ShellServices as magic functions. I
5220 think the cleanest will be to port all desired functions from
5226 think the cleanest will be to port all desired functions from
5221 ShellServices as magics and remove ShellServices altogether. This
5227 ShellServices as magics and remove ShellServices altogether. This
5222 will provide a single, clean way of adding functionality
5228 will provide a single, clean way of adding functionality
5223 (shell-type or otherwise) to IP.
5229 (shell-type or otherwise) to IP.
5224
5230
5225 2001-11-04 Fernando Perez <fperez@colorado.edu>
5231 2001-11-04 Fernando Perez <fperez@colorado.edu>
5226
5232
5227 * Added .ipython/ directory to sys.path. This way users can keep
5233 * Added .ipython/ directory to sys.path. This way users can keep
5228 customizations there and access them via import.
5234 customizations there and access them via import.
5229
5235
5230 2001-11-03 Fernando Perez <fperez@colorado.edu>
5236 2001-11-03 Fernando Perez <fperez@colorado.edu>
5231
5237
5232 * Opened version 0.1.1 for new changes.
5238 * Opened version 0.1.1 for new changes.
5233
5239
5234 * Changed version number to 0.1.0: first 'public' release, sent to
5240 * Changed version number to 0.1.0: first 'public' release, sent to
5235 Nathan and Janko.
5241 Nathan and Janko.
5236
5242
5237 * Lots of small fixes and tweaks.
5243 * Lots of small fixes and tweaks.
5238
5244
5239 * Minor changes to whos format. Now strings are shown, snipped if
5245 * Minor changes to whos format. Now strings are shown, snipped if
5240 too long.
5246 too long.
5241
5247
5242 * Changed ShellServices to work on __main__ so they show up in @who
5248 * Changed ShellServices to work on __main__ so they show up in @who
5243
5249
5244 * Help also works with ? at the end of a line:
5250 * Help also works with ? at the end of a line:
5245 ?sin and sin?
5251 ?sin and sin?
5246 both produce the same effect. This is nice, as often I use the
5252 both produce the same effect. This is nice, as often I use the
5247 tab-complete to find the name of a method, but I used to then have
5253 tab-complete to find the name of a method, but I used to then have
5248 to go to the beginning of the line to put a ? if I wanted more
5254 to go to the beginning of the line to put a ? if I wanted more
5249 info. Now I can just add the ? and hit return. Convenient.
5255 info. Now I can just add the ? and hit return. Convenient.
5250
5256
5251 2001-11-02 Fernando Perez <fperez@colorado.edu>
5257 2001-11-02 Fernando Perez <fperez@colorado.edu>
5252
5258
5253 * Python version check (>=2.1) added.
5259 * Python version check (>=2.1) added.
5254
5260
5255 * Added LazyPython documentation. At this point the docs are quite
5261 * Added LazyPython documentation. At this point the docs are quite
5256 a mess. A cleanup is in order.
5262 a mess. A cleanup is in order.
5257
5263
5258 * Auto-installer created. For some bizarre reason, the zipfiles
5264 * Auto-installer created. For some bizarre reason, the zipfiles
5259 module isn't working on my system. So I made a tar version
5265 module isn't working on my system. So I made a tar version
5260 (hopefully the command line options in various systems won't kill
5266 (hopefully the command line options in various systems won't kill
5261 me).
5267 me).
5262
5268
5263 * Fixes to Struct in genutils. Now all dictionary-like methods are
5269 * Fixes to Struct in genutils. Now all dictionary-like methods are
5264 protected (reasonably).
5270 protected (reasonably).
5265
5271
5266 * Added pager function to genutils and changed ? to print usage
5272 * Added pager function to genutils and changed ? to print usage
5267 note through it (it was too long).
5273 note through it (it was too long).
5268
5274
5269 * Added the LazyPython functionality. Works great! I changed the
5275 * Added the LazyPython functionality. Works great! I changed the
5270 auto-quote escape to ';', it's on home row and next to '. But
5276 auto-quote escape to ';', it's on home row and next to '. But
5271 both auto-quote and auto-paren (still /) escapes are command-line
5277 both auto-quote and auto-paren (still /) escapes are command-line
5272 parameters.
5278 parameters.
5273
5279
5274
5280
5275 2001-11-01 Fernando Perez <fperez@colorado.edu>
5281 2001-11-01 Fernando Perez <fperez@colorado.edu>
5276
5282
5277 * Version changed to 0.0.7. Fairly large change: configuration now
5283 * Version changed to 0.0.7. Fairly large change: configuration now
5278 is all stored in a directory, by default .ipython. There, all
5284 is all stored in a directory, by default .ipython. There, all
5279 config files have normal looking names (not .names)
5285 config files have normal looking names (not .names)
5280
5286
5281 * Version 0.0.6 Released first to Lucas and Archie as a test
5287 * Version 0.0.6 Released first to Lucas and Archie as a test
5282 run. Since it's the first 'semi-public' release, change version to
5288 run. Since it's the first 'semi-public' release, change version to
5283 > 0.0.6 for any changes now.
5289 > 0.0.6 for any changes now.
5284
5290
5285 * Stuff I had put in the ipplib.py changelog:
5291 * Stuff I had put in the ipplib.py changelog:
5286
5292
5287 Changes to InteractiveShell:
5293 Changes to InteractiveShell:
5288
5294
5289 - Made the usage message a parameter.
5295 - Made the usage message a parameter.
5290
5296
5291 - Require the name of the shell variable to be given. It's a bit
5297 - Require the name of the shell variable to be given. It's a bit
5292 of a hack, but allows the name 'shell' not to be hardwire in the
5298 of a hack, but allows the name 'shell' not to be hardwire in the
5293 magic (@) handler, which is problematic b/c it requires
5299 magic (@) handler, which is problematic b/c it requires
5294 polluting the global namespace with 'shell'. This in turn is
5300 polluting the global namespace with 'shell'. This in turn is
5295 fragile: if a user redefines a variable called shell, things
5301 fragile: if a user redefines a variable called shell, things
5296 break.
5302 break.
5297
5303
5298 - magic @: all functions available through @ need to be defined
5304 - magic @: all functions available through @ need to be defined
5299 as magic_<name>, even though they can be called simply as
5305 as magic_<name>, even though they can be called simply as
5300 @<name>. This allows the special command @magic to gather
5306 @<name>. This allows the special command @magic to gather
5301 information automatically about all existing magic functions,
5307 information automatically about all existing magic functions,
5302 even if they are run-time user extensions, by parsing the shell
5308 even if they are run-time user extensions, by parsing the shell
5303 instance __dict__ looking for special magic_ names.
5309 instance __dict__ looking for special magic_ names.
5304
5310
5305 - mainloop: added *two* local namespace parameters. This allows
5311 - mainloop: added *two* local namespace parameters. This allows
5306 the class to differentiate between parameters which were there
5312 the class to differentiate between parameters which were there
5307 before and after command line initialization was processed. This
5313 before and after command line initialization was processed. This
5308 way, later @who can show things loaded at startup by the
5314 way, later @who can show things loaded at startup by the
5309 user. This trick was necessary to make session saving/reloading
5315 user. This trick was necessary to make session saving/reloading
5310 really work: ideally after saving/exiting/reloading a session,
5316 really work: ideally after saving/exiting/reloading a session,
5311 *everythin* should look the same, including the output of @who. I
5317 *everythin* should look the same, including the output of @who. I
5312 was only able to make this work with this double namespace
5318 was only able to make this work with this double namespace
5313 trick.
5319 trick.
5314
5320
5315 - added a header to the logfile which allows (almost) full
5321 - added a header to the logfile which allows (almost) full
5316 session restoring.
5322 session restoring.
5317
5323
5318 - prepend lines beginning with @ or !, with a and log
5324 - prepend lines beginning with @ or !, with a and log
5319 them. Why? !lines: may be useful to know what you did @lines:
5325 them. Why? !lines: may be useful to know what you did @lines:
5320 they may affect session state. So when restoring a session, at
5326 they may affect session state. So when restoring a session, at
5321 least inform the user of their presence. I couldn't quite get
5327 least inform the user of their presence. I couldn't quite get
5322 them to properly re-execute, but at least the user is warned.
5328 them to properly re-execute, but at least the user is warned.
5323
5329
5324 * Started ChangeLog.
5330 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now