##// END OF EJS Templates
Oinspect.py: Only show docstring for nonexisting/binary files...
vivainio -
Show More
@@ -1,475 +1,483 b''
1 1 # -*- coding: utf-8 -*-
2 2 """Tools for inspecting Python objects.
3 3
4 4 Uses syntax highlighting for presenting the various information elements.
5 5
6 6 Similar in spirit to the inspect module, but all calls take a name argument to
7 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 13 # Copyright (C) 2001-2004 Fernando Perez <fperez@colorado.edu>
14 14 #
15 15 # Distributed under the terms of the BSD License. The full license is in
16 16 # the file COPYING, distributed as part of this software.
17 17 #*****************************************************************************
18 18
19 19 from IPython import Release
20 20 __author__ = '%s <%s>' % Release.authors['Fernando']
21 21 __license__ = Release.license
22 22
23 23 __all__ = ['Inspector','InspectColors']
24 24
25 25 # stdlib modules
26 26 import __builtin__
27 27 import inspect
28 28 import linecache
29 29 import string
30 30 import StringIO
31 31 import types
32
32 import os
33 33 # IPython's own
34 34 from IPython import PyColorize
35 35 from IPython.genutils import page,indent,Term,mkdict
36 36 from IPython.Itpl import itpl
37 37 from IPython.wildcard import list_namespace
38 38 from IPython.ColorANSI import *
39 39
40 40 #****************************************************************************
41 41 # Builtin color schemes
42 42
43 43 Colors = TermColors # just a shorthand
44 44
45 45 # Build a few color schemes
46 46 NoColor = ColorScheme(
47 47 'NoColor',{
48 48 'header' : Colors.NoColor,
49 49 'normal' : Colors.NoColor # color off (usu. Colors.Normal)
50 50 } )
51 51
52 52 LinuxColors = ColorScheme(
53 53 'Linux',{
54 54 'header' : Colors.LightRed,
55 55 'normal' : Colors.Normal # color off (usu. Colors.Normal)
56 56 } )
57 57
58 58 LightBGColors = ColorScheme(
59 59 'LightBG',{
60 60 'header' : Colors.Red,
61 61 'normal' : Colors.Normal # color off (usu. Colors.Normal)
62 62 } )
63 63
64 64 # Build table of color schemes (needed by the parser)
65 65 InspectColors = ColorSchemeTable([NoColor,LinuxColors,LightBGColors],
66 66 'Linux')
67 67
68 68 #****************************************************************************
69 69 # Auxiliary functions
70 70 def getdoc(obj):
71 71 """Stable wrapper around inspect.getdoc.
72 72
73 73 This can't crash because of attribute problems.
74 74
75 75 It also attempts to call a getdoc() method on the given object. This
76 76 allows objects which provide their docstrings via non-standard mechanisms
77 77 (like Pyro proxies) to still be inspected by ipython's ? system."""
78 78
79 79 ds = None # default return value
80 80 try:
81 81 ds = inspect.getdoc(obj)
82 82 except:
83 83 # Harden against an inspect failure, which can occur with
84 84 # SWIG-wrapped extensions.
85 85 pass
86 86 # Allow objects to offer customized documentation via a getdoc method:
87 87 try:
88 88 ds2 = obj.getdoc()
89 89 except:
90 90 pass
91 91 else:
92 92 # if we get extra info, we add it to the normal docstring.
93 93 if ds is None:
94 94 ds = ds2
95 95 else:
96 96 ds = '%s\n%s' % (ds,ds2)
97 97 return ds
98 98
99 99 #****************************************************************************
100 100 # Class definitions
101 101
102 102 class myStringIO(StringIO.StringIO):
103 103 """Adds a writeln method to normal StringIO."""
104 104 def writeln(self,*arg,**kw):
105 105 """Does a write() and then a write('\n')"""
106 106 self.write(*arg,**kw)
107 107 self.write('\n')
108 108
109 109 class Inspector:
110 110 def __init__(self,color_table,code_color_table,scheme):
111 111 self.color_table = color_table
112 112 self.parser = PyColorize.Parser(code_color_table,out='str')
113 113 self.format = self.parser.format
114 114 self.set_active_scheme(scheme)
115 115
116 116 def __getargspec(self,obj):
117 117 """Get the names and default values of a function's arguments.
118 118
119 119 A tuple of four things is returned: (args, varargs, varkw, defaults).
120 120 'args' is a list of the argument names (it may contain nested lists).
121 121 'varargs' and 'varkw' are the names of the * and ** arguments or None.
122 122 'defaults' is an n-tuple of the default values of the last n arguments.
123 123
124 124 Modified version of inspect.getargspec from the Python Standard
125 125 Library."""
126 126
127 127 if inspect.isfunction(obj):
128 128 func_obj = obj
129 129 elif inspect.ismethod(obj):
130 130 func_obj = obj.im_func
131 131 else:
132 132 raise TypeError, 'arg is not a Python function'
133 133 args, varargs, varkw = inspect.getargs(func_obj.func_code)
134 134 return args, varargs, varkw, func_obj.func_defaults
135 135
136 136 def __getdef(self,obj,oname=''):
137 137 """Return the definition header for any callable object.
138 138
139 139 If any exception is generated, None is returned instead and the
140 140 exception is suppressed."""
141 141
142 142 try:
143 143 return oname + inspect.formatargspec(*self.__getargspec(obj))
144 144 except:
145 145 return None
146 146
147 147 def __head(self,h):
148 148 """Return a header string with proper colors."""
149 149 return '%s%s%s' % (self.color_table.active_colors.header,h,
150 150 self.color_table.active_colors.normal)
151 151
152 152 def set_active_scheme(self,scheme):
153 153 self.color_table.set_active_scheme(scheme)
154 154 self.parser.color_table.set_active_scheme(scheme)
155 155
156 156 def noinfo(self,msg,oname):
157 157 """Generic message when no information is found."""
158 158 print 'No %s found' % msg,
159 159 if oname:
160 160 print 'for %s' % oname
161 161 else:
162 162 print
163 163
164 164 def pdef(self,obj,oname=''):
165 165 """Print the definition header for any callable object.
166 166
167 167 If the object is a class, print the constructor information."""
168 168
169 169 if not callable(obj):
170 170 print 'Object is not callable.'
171 171 return
172 172
173 173 header = ''
174 174 if type(obj) is types.ClassType:
175 175 header = self.__head('Class constructor information:\n')
176 176 obj = obj.__init__
177 177 elif type(obj) is types.InstanceType:
178 178 obj = obj.__call__
179 179
180 180 output = self.__getdef(obj,oname)
181 181 if output is None:
182 182 self.noinfo('definition header',oname)
183 183 else:
184 184 print >>Term.cout, header,self.format(output),
185 185
186 186 def pdoc(self,obj,oname='',formatter = None):
187 187 """Print the docstring for any object.
188 188
189 189 Optional:
190 190 -formatter: a function to run the docstring through for specially
191 191 formatted docstrings."""
192 192
193 193 head = self.__head # so that itpl can find it even if private
194 194 ds = getdoc(obj)
195 195 if formatter:
196 196 ds = formatter(ds)
197 197 if type(obj) is types.ClassType:
198 198 init_ds = getdoc(obj.__init__)
199 199 output = itpl('$head("Class Docstring:")\n'
200 200 '$indent(ds)\n'
201 201 '$head("Constructor Docstring"):\n'
202 202 '$indent(init_ds)')
203 203 elif type(obj) is types.InstanceType and hasattr(obj,'__call__'):
204 204 call_ds = getdoc(obj.__call__)
205 205 if call_ds:
206 206 output = itpl('$head("Class Docstring:")\n$indent(ds)\n'
207 207 '$head("Calling Docstring:")\n$indent(call_ds)')
208 208 else:
209 209 output = ds
210 210 else:
211 211 output = ds
212 212 if output is None:
213 213 self.noinfo('documentation',oname)
214 214 return
215 215 page(output)
216 216
217 217 def psource(self,obj,oname=''):
218 218 """Print the source code for an object."""
219 219
220 220 # Flush the source cache because inspect can return out-of-date source
221 221 linecache.checkcache()
222 222 try:
223 223 src = inspect.getsource(obj)
224 224 except:
225 225 self.noinfo('source',oname)
226 226 else:
227 227 page(self.format(src))
228 228
229 229 def pfile(self,obj,oname=''):
230 230 """Show the whole file where an object was defined."""
231 231 try:
232 232 sourcelines,lineno = inspect.getsourcelines(obj)
233 233 except:
234 234 self.noinfo('file',oname)
235 235 else:
236 236 # run contents of file through pager starting at line
237 237 # where the object is defined
238 238 ofile = inspect.getabsfile(obj)
239 239
240 240 if (ofile.endswith('.so') or ofile.endswith('.dll')):
241 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 244 else:
243 245 # Print only text files, not extension binaries.
244 246 page(self.format(open(ofile).read()),lineno)
245 247 #page(self.format(open(inspect.getabsfile(obj)).read()),lineno)
246 248
247 249 def pinfo(self,obj,oname='',formatter=None,info=None,detail_level=0):
248 250 """Show detailed information about an object.
249 251
250 252 Optional arguments:
251 253
252 254 - oname: name of the variable pointing to the object.
253 255
254 256 - formatter: special formatter for docstrings (see pdoc)
255 257
256 258 - info: a structure with some information fields which may have been
257 259 precomputed already.
258 260
259 261 - detail_level: if set to 1, more information is given.
260 262 """
261 263
262 264 obj_type = type(obj)
263 265
264 266 header = self.__head
265 267 if info is None:
266 268 ismagic = 0
267 269 isalias = 0
268 270 ospace = ''
269 271 else:
270 272 ismagic = info.ismagic
271 273 isalias = info.isalias
272 274 ospace = info.namespace
273 275 # Get docstring, special-casing aliases:
274 276 if isalias:
275 277 ds = "Alias to the system command:\n %s" % obj[1]
276 278 else:
277 279 ds = getdoc(obj)
278 280 if ds is None:
279 281 ds = '<no docstring>'
280 282 if formatter is not None:
281 283 ds = formatter(ds)
282 284
283 285 # store output in a list which gets joined with \n at the end.
284 286 out = myStringIO()
285 287
286 288 string_max = 200 # max size of strings to show (snipped if longer)
287 289 shalf = int((string_max -5)/2)
288 290
289 291 if ismagic:
290 292 obj_type_name = 'Magic function'
291 293 elif isalias:
292 294 obj_type_name = 'System alias'
293 295 else:
294 296 obj_type_name = obj_type.__name__
295 297 out.writeln(header('Type:\t\t')+obj_type_name)
296 298
297 299 try:
298 300 bclass = obj.__class__
299 301 out.writeln(header('Base Class:\t')+str(bclass))
300 302 except: pass
301 303
302 304 # String form, but snip if too long in ? form (full in ??)
303 305 try:
304 306 ostr = str(obj)
305 307 str_head = 'String Form:'
306 308 if not detail_level and len(ostr)>string_max:
307 309 ostr = ostr[:shalf] + ' <...> ' + ostr[-shalf:]
308 310 ostr = ("\n" + " " * len(str_head.expandtabs())).\
309 311 join(map(string.strip,ostr.split("\n")))
310 312 if ostr.find('\n') > -1:
311 313 # Print multi-line strings starting at the next line.
312 314 str_sep = '\n'
313 315 else:
314 316 str_sep = '\t'
315 317 out.writeln("%s%s%s" % (header(str_head),str_sep,ostr))
316 318 except:
317 319 pass
318 320
319 321 if ospace:
320 322 out.writeln(header('Namespace:\t')+ospace)
321 323
322 324 # Length (for strings and lists)
323 325 try:
324 326 length = str(len(obj))
325 327 out.writeln(header('Length:\t\t')+length)
326 328 except: pass
327 329
328 330 # Filename where object was defined
329 331 binary_file = False
330 332 try:
331 333 fname = inspect.getabsfile(obj)
332 334 if fname.endswith('<string>'):
333 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 338 binary_file = True
336 339 out.writeln(header('File:\t\t')+fname)
337 340 except:
338 341 # if anything goes wrong, we don't want to show source, so it's as
339 342 # if the file was binary
340 343 binary_file = True
341 344
342 345 # reconstruct the function definition and print it:
343 346 defln = self.__getdef(obj,oname)
344 347 if defln:
345 348 out.write(header('Definition:\t')+self.format(defln))
346 349
347 350 # Docstrings only in detail 0 mode, since source contains them (we
348 351 # avoid repetitions). If source fails, we add them back, see below.
349 352 if ds and detail_level == 0:
350 353 out.writeln(header('Docstring:\n') + indent(ds))
351 354
355
352 356 # Original source code for any callable
353 357 if detail_level:
354 358 # Flush the source cache because inspect can return out-of-date source
355 359 linecache.checkcache()
360 source_success = False
356 361 try:
357 362 if not binary_file:
358 363 source = self.format(inspect.getsource(obj))
359 364 out.write(header('Source:\n')+source.rstrip())
365 source_success = True
360 366 except:
361 if ds:
362 out.writeln(header('Docstring:\n') + indent(ds))
367 pass
368
369 if ds and not source_success:
370 out.writeln(header('Docstring [source file open failed]:\n') + indent(ds))
363 371
364 372 # Constructor docstring for classes
365 373 if obj_type is types.ClassType:
366 374 # reconstruct the function definition and print it:
367 375 try:
368 376 obj_init = obj.__init__
369 377 except AttributeError:
370 378 init_def = init_ds = None
371 379 else:
372 380 init_def = self.__getdef(obj_init,oname)
373 381 init_ds = getdoc(obj_init)
374 382
375 383 if init_def or init_ds:
376 384 out.writeln(header('\nConstructor information:'))
377 385 if init_def:
378 386 out.write(header('Definition:\t')+ self.format(init_def))
379 387 if init_ds:
380 388 out.writeln(header('Docstring:\n') + indent(init_ds))
381 389 # and class docstring for instances:
382 390 elif obj_type is types.InstanceType:
383 391
384 392 # First, check whether the instance docstring is identical to the
385 393 # class one, and print it separately if they don't coincide. In
386 394 # most cases they will, but it's nice to print all the info for
387 395 # objects which use instance-customized docstrings.
388 396 if ds:
389 397 class_ds = getdoc(obj.__class__)
390 398 if class_ds and ds != class_ds:
391 399 out.writeln(header('Class Docstring:\n') +
392 400 indent(class_ds))
393 401
394 402 # Next, try to show constructor docstrings
395 403 try:
396 404 init_ds = getdoc(obj.__init__)
397 405 except AttributeError:
398 406 init_ds = None
399 407 if init_ds:
400 408 out.writeln(header('Constructor Docstring:\n') +
401 409 indent(init_ds))
402 410
403 411 # Call form docstring for callable instances
404 412 if hasattr(obj,'__call__'):
405 413 out.writeln(header('Callable:\t')+'Yes')
406 414 call_def = self.__getdef(obj.__call__,oname)
407 415 if call_def is None:
408 416 out.write(header('Call def:\t')+
409 417 'Calling definition not available.')
410 418 else:
411 419 out.write(header('Call def:\t')+self.format(call_def))
412 420 call_ds = getdoc(obj.__call__)
413 421 if call_ds:
414 422 out.writeln(header('Call docstring:\n') + indent(call_ds))
415 423
416 424 # Finally send to printer/pager
417 425 output = out.getvalue()
418 426 if output:
419 427 page(output)
420 428 # end pinfo
421 429
422 430 def psearch(self,pattern,ns_table,ns_search=[],
423 431 ignore_case=False,show_all=False):
424 432 """Search namespaces with wildcards for objects.
425 433
426 434 Arguments:
427 435
428 436 - pattern: string containing shell-like wildcards to use in namespace
429 437 searches and optionally a type specification to narrow the search to
430 438 objects of that type.
431 439
432 440 - ns_table: dict of name->namespaces for search.
433 441
434 442 Optional arguments:
435 443
436 444 - ns_search: list of namespace names to include in search.
437 445
438 446 - ignore_case(False): make the search case-insensitive.
439 447
440 448 - show_all(False): show all names, including those starting with
441 449 underscores.
442 450 """
443 451 # defaults
444 452 type_pattern = 'all'
445 453 filter = ''
446 454
447 455 cmds = pattern.split()
448 456 len_cmds = len(cmds)
449 457 if len_cmds == 1:
450 458 # Only filter pattern given
451 459 filter = cmds[0]
452 460 elif len_cmds == 2:
453 461 # Both filter and type specified
454 462 filter,type_pattern = cmds
455 463 else:
456 464 raise ValueError('invalid argument string for psearch: <%s>' %
457 465 pattern)
458 466
459 467 # filter search namespaces
460 468 for name in ns_search:
461 469 if name not in ns_table:
462 470 raise ValueError('invalid namespace <%s>. Valid names: %s' %
463 471 (name,ns_table.keys()))
464 472
465 473 #print 'type_pattern:',type_pattern # dbg
466 474 search_result = []
467 475 for ns_name in ns_search:
468 476 ns = ns_table[ns_name]
469 477 tmp_res = list(list_namespace(ns,type_pattern,filter,
470 478 ignore_case=ignore_case,
471 479 show_all=show_all))
472 480 search_result.extend(tmp_res)
473 481 search_result.sort()
474 482
475 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 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 10 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
5 11 was being released in a routine which hadn't checked if it had
6 12 been the one to acquire it.
7 13
8 14 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
9 15
10 16 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
11 17
12 18 2006-04-11 Ville Vainio <vivainio@gmail.com>
13 19
14 20 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
15 21 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
16 22 prefilters, allowing stuff like magics and aliases in the file.
17 23
18 24 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
19 25 added. Supported now are "%clear in" and "%clear out" (clear input and
20 26 output history, respectively). Also fixed CachedOutput.flush to
21 27 properly flush the output cache.
22 28
23 29 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
24 30 half-success (and fail explicitly).
25 31
26 32 2006-03-28 Ville Vainio <vivainio@gmail.com>
27 33
28 34 * iplib.py: Fix quoting of aliases so that only argless ones
29 35 are quoted
30 36
31 37 2006-03-28 Ville Vainio <vivainio@gmail.com>
32 38
33 39 * iplib.py: Quote aliases with spaces in the name.
34 40 "c:\program files\blah\bin" is now legal alias target.
35 41
36 42 * ext_rehashdir.py: Space no longer allowed as arg
37 43 separator, since space is legal in path names.
38 44
39 45 2006-03-16 Ville Vainio <vivainio@gmail.com>
40 46
41 47 * upgrade_dir.py: Take path.py from Extensions, correcting
42 48 %upgrade magic
43 49
44 50 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
45 51
46 52 * hooks.py: Only enclose editor binary in quotes if legal and
47 53 necessary (space in the name, and is an existing file). Fixes a bug
48 54 reported by Zachary Pincus.
49 55
50 56 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
51 57
52 58 * Manual: thanks to a tip on proper color handling for Emacs, by
53 59 Eric J Haywiser <ejh1-AT-MIT.EDU>.
54 60
55 61 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
56 62 by applying the provided patch. Thanks to Liu Jin
57 63 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
58 64 XEmacs/Linux, I'm trusting the submitter that it actually helps
59 65 under win32/GNU Emacs. Will revisit if any problems are reported.
60 66
61 67 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
62 68
63 69 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
64 70 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
65 71
66 72 2006-03-12 Ville Vainio <vivainio@gmail.com>
67 73
68 74 * Magic.py (magic_timeit): Added %timeit magic, contributed by
69 75 Torsten Marek.
70 76
71 77 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
72 78
73 79 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
74 80 line ranges works again.
75 81
76 82 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
77 83
78 84 * IPython/iplib.py (showtraceback): add back sys.last_traceback
79 85 and friends, after a discussion with Zach Pincus on ipython-user.
80 86 I'm not 100% sure, but after thinking aobut it quite a bit, it may
81 87 be OK. Testing with the multithreaded shells didn't reveal any
82 88 problems, but let's keep an eye out.
83 89
84 90 In the process, I fixed a few things which were calling
85 91 self.InteractiveTB() directly (like safe_execfile), which is a
86 92 mistake: ALL exception reporting should be done by calling
87 93 self.showtraceback(), which handles state and tab-completion and
88 94 more.
89 95
90 96 2006-03-01 Ville Vainio <vivainio@gmail.com>
91 97
92 98 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
93 99 To use, do "from ipipe import *".
94 100
95 101 2006-02-24 Ville Vainio <vivainio@gmail.com>
96 102
97 103 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
98 104 "cleanly" and safely than the older upgrade mechanism.
99 105
100 106 2006-02-21 Ville Vainio <vivainio@gmail.com>
101 107
102 108 * Magic.py: %save works again.
103 109
104 110 2006-02-15 Ville Vainio <vivainio@gmail.com>
105 111
106 112 * Magic.py: %Pprint works again
107 113
108 114 * Extensions/ipy_sane_defaults.py: Provide everything provided
109 115 in default ipythonrc, to make it possible to have a completely empty
110 116 ipythonrc (and thus completely rc-file free configuration)
111 117
112 118
113 119 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
114 120
115 121 * IPython/hooks.py (editor): quote the call to the editor command,
116 122 to allow commands with spaces in them. Problem noted by watching
117 123 Ian Oswald's video about textpad under win32 at
118 124 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
119 125
120 126 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
121 127 describing magics (we haven't used @ for a loong time).
122 128
123 129 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
124 130 contributed by marienz to close
125 131 http://www.scipy.net/roundup/ipython/issue53.
126 132
127 133 2006-02-10 Ville Vainio <vivainio@gmail.com>
128 134
129 135 * genutils.py: getoutput now works in win32 too
130 136
131 137 * completer.py: alias and magic completion only invoked
132 138 at the first "item" in the line, to avoid "cd %store"
133 139 nonsense.
134 140
135 141 2006-02-09 Ville Vainio <vivainio@gmail.com>
136 142
137 143 * test/*: Added a unit testing framework (finally).
138 144 '%run runtests.py' to run test_*.
139 145
140 146 * ipapi.py: Exposed runlines and set_custom_exc
141 147
142 148 2006-02-07 Ville Vainio <vivainio@gmail.com>
143 149
144 150 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
145 151 instead use "f(1 2)" as before.
146 152
147 153 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
148 154
149 155 * IPython/demo.py (IPythonDemo): Add new classes to the demo
150 156 facilities, for demos processed by the IPython input filter
151 157 (IPythonDemo), and for running a script one-line-at-a-time as a
152 158 demo, both for pure Python (LineDemo) and for IPython-processed
153 159 input (IPythonLineDemo). After a request by Dave Kohel, from the
154 160 SAGE team.
155 161 (Demo.edit): added and edit() method to the demo objects, to edit
156 162 the in-memory copy of the last executed block.
157 163
158 164 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
159 165 processing to %edit, %macro and %save. These commands can now be
160 166 invoked on the unprocessed input as it was typed by the user
161 167 (without any prefilters applied). After requests by the SAGE team
162 168 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
163 169
164 170 2006-02-01 Ville Vainio <vivainio@gmail.com>
165 171
166 172 * setup.py, eggsetup.py: easy_install ipython==dev works
167 173 correctly now (on Linux)
168 174
169 175 * ipy_user_conf,ipmaker: user config changes, removed spurious
170 176 warnings
171 177
172 178 * iplib: if rc.banner is string, use it as is.
173 179
174 180 * Magic: %pycat accepts a string argument and pages it's contents.
175 181
176 182
177 183 2006-01-30 Ville Vainio <vivainio@gmail.com>
178 184
179 185 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
180 186 Now %store and bookmarks work through PickleShare, meaning that
181 187 concurrent access is possible and all ipython sessions see the
182 188 same database situation all the time, instead of snapshot of
183 189 the situation when the session was started. Hence, %bookmark
184 190 results are immediately accessible from othes sessions. The database
185 191 is also available for use by user extensions. See:
186 192 http://www.python.org/pypi/pickleshare
187 193
188 194 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
189 195
190 196 * aliases can now be %store'd
191 197
192 198 * path.py move to Extensions so that pickleshare does not need
193 199 IPython-specific import. Extensions added to pythonpath right
194 200 at __init__.
195 201
196 202 * iplib.py: ipalias deprecated/redundant; aliases are converted and
197 203 called with _ip.system and the pre-transformed command string.
198 204
199 205 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
200 206
201 207 * IPython/iplib.py (interact): Fix that we were not catching
202 208 KeyboardInterrupt exceptions properly. I'm not quite sure why the
203 209 logic here had to change, but it's fixed now.
204 210
205 211 2006-01-29 Ville Vainio <vivainio@gmail.com>
206 212
207 213 * iplib.py: Try to import pyreadline on Windows.
208 214
209 215 2006-01-27 Ville Vainio <vivainio@gmail.com>
210 216
211 217 * iplib.py: Expose ipapi as _ip in builtin namespace.
212 218 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
213 219 and ip_set_hook (-> _ip.set_hook) redundant. % and !
214 220 syntax now produce _ip.* variant of the commands.
215 221
216 222 * "_ip.options().autoedit_syntax = 2" automatically throws
217 223 user to editor for syntax error correction without prompting.
218 224
219 225 2006-01-27 Ville Vainio <vivainio@gmail.com>
220 226
221 227 * ipmaker.py: Give "realistic" sys.argv for scripts (without
222 228 'ipython' at argv[0]) executed through command line.
223 229 NOTE: this DEPRECATES calling ipython with multiple scripts
224 230 ("ipython a.py b.py c.py")
225 231
226 232 * iplib.py, hooks.py: Added configurable input prefilter,
227 233 named 'input_prefilter'. See ext_rescapture.py for example
228 234 usage.
229 235
230 236 * ext_rescapture.py, Magic.py: Better system command output capture
231 237 through 'var = !ls' (deprecates user-visible %sc). Same notation
232 238 applies for magics, 'var = %alias' assigns alias list to var.
233 239
234 240 * ipapi.py: added meta() for accessing extension-usable data store.
235 241
236 242 * iplib.py: added InteractiveShell.getapi(). New magics should be
237 243 written doing self.getapi() instead of using the shell directly.
238 244
239 245 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
240 246 %store foo >> ~/myfoo.txt to store variables to files (in clean
241 247 textual form, not a restorable pickle).
242 248
243 249 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
244 250
245 251 * usage.py, Magic.py: added %quickref
246 252
247 253 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
248 254
249 255 * GetoptErrors when invoking magics etc. with wrong args
250 256 are now more helpful:
251 257 GetoptError: option -l not recognized (allowed: "qb" )
252 258
253 259 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
254 260
255 261 * IPython/demo.py (Demo.show): Flush stdout after each block, so
256 262 computationally intensive blocks don't appear to stall the demo.
257 263
258 264 2006-01-24 Ville Vainio <vivainio@gmail.com>
259 265
260 266 * iplib.py, hooks.py: 'result_display' hook can return a non-None
261 267 value to manipulate resulting history entry.
262 268
263 269 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
264 270 to instance methods of IPApi class, to make extending an embedded
265 271 IPython feasible. See ext_rehashdir.py for example usage.
266 272
267 273 * Merged 1071-1076 from banches/0.7.1
268 274
269 275
270 276 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
271 277
272 278 * tools/release (daystamp): Fix build tools to use the new
273 279 eggsetup.py script to build lightweight eggs.
274 280
275 281 * Applied changesets 1062 and 1064 before 0.7.1 release.
276 282
277 283 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
278 284 see the raw input history (without conversions like %ls ->
279 285 ipmagic("ls")). After a request from W. Stein, SAGE
280 286 (http://modular.ucsd.edu/sage) developer. This information is
281 287 stored in the input_hist_raw attribute of the IPython instance, so
282 288 developers can access it if needed (it's an InputList instance).
283 289
284 290 * Versionstring = 0.7.2.svn
285 291
286 292 * eggsetup.py: A separate script for constructing eggs, creates
287 293 proper launch scripts even on Windows (an .exe file in
288 294 \python24\scripts).
289 295
290 296 * ipapi.py: launch_new_instance, launch entry point needed for the
291 297 egg.
292 298
293 299 2006-01-23 Ville Vainio <vivainio@gmail.com>
294 300
295 301 * Added %cpaste magic for pasting python code
296 302
297 303 2006-01-22 Ville Vainio <vivainio@gmail.com>
298 304
299 305 * Merge from branches/0.7.1 into trunk, revs 1052-1057
300 306
301 307 * Versionstring = 0.7.2.svn
302 308
303 309 * eggsetup.py: A separate script for constructing eggs, creates
304 310 proper launch scripts even on Windows (an .exe file in
305 311 \python24\scripts).
306 312
307 313 * ipapi.py: launch_new_instance, launch entry point needed for the
308 314 egg.
309 315
310 316 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
311 317
312 318 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
313 319 %pfile foo would print the file for foo even if it was a binary.
314 320 Now, extensions '.so' and '.dll' are skipped.
315 321
316 322 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
317 323 bug, where macros would fail in all threaded modes. I'm not 100%
318 324 sure, so I'm going to put out an rc instead of making a release
319 325 today, and wait for feedback for at least a few days.
320 326
321 327 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
322 328 it...) the handling of pasting external code with autoindent on.
323 329 To get out of a multiline input, the rule will appear for most
324 330 users unchanged: two blank lines or change the indent level
325 331 proposed by IPython. But there is a twist now: you can
326 332 add/subtract only *one or two spaces*. If you add/subtract three
327 333 or more (unless you completely delete the line), IPython will
328 334 accept that line, and you'll need to enter a second one of pure
329 335 whitespace. I know it sounds complicated, but I can't find a
330 336 different solution that covers all the cases, with the right
331 337 heuristics. Hopefully in actual use, nobody will really notice
332 338 all these strange rules and things will 'just work'.
333 339
334 340 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
335 341
336 342 * IPython/iplib.py (interact): catch exceptions which can be
337 343 triggered asynchronously by signal handlers. Thanks to an
338 344 automatic crash report, submitted by Colin Kingsley
339 345 <tercel-AT-gentoo.org>.
340 346
341 347 2006-01-20 Ville Vainio <vivainio@gmail.com>
342 348
343 349 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
344 350 (%rehashdir, very useful, try it out) of how to extend ipython
345 351 with new magics. Also added Extensions dir to pythonpath to make
346 352 importing extensions easy.
347 353
348 354 * %store now complains when trying to store interactively declared
349 355 classes / instances of those classes.
350 356
351 357 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
352 358 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
353 359 if they exist, and ipy_user_conf.py with some defaults is created for
354 360 the user.
355 361
356 362 * Startup rehashing done by the config file, not InterpreterExec.
357 363 This means system commands are available even without selecting the
358 364 pysh profile. It's the sensible default after all.
359 365
360 366 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
361 367
362 368 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
363 369 multiline code with autoindent on working. But I am really not
364 370 sure, so this needs more testing. Will commit a debug-enabled
365 371 version for now, while I test it some more, so that Ville and
366 372 others may also catch any problems. Also made
367 373 self.indent_current_str() a method, to ensure that there's no
368 374 chance of the indent space count and the corresponding string
369 375 falling out of sync. All code needing the string should just call
370 376 the method.
371 377
372 378 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
373 379
374 380 * IPython/Magic.py (magic_edit): fix check for when users don't
375 381 save their output files, the try/except was in the wrong section.
376 382
377 383 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
378 384
379 385 * IPython/Magic.py (magic_run): fix __file__ global missing from
380 386 script's namespace when executed via %run. After a report by
381 387 Vivian.
382 388
383 389 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
384 390 when using python 2.4. The parent constructor changed in 2.4, and
385 391 we need to track it directly (we can't call it, as it messes up
386 392 readline and tab-completion inside our pdb would stop working).
387 393 After a bug report by R. Bernstein <rocky-AT-panix.com>.
388 394
389 395 2006-01-16 Ville Vainio <vivainio@gmail.com>
390 396
391 397 * Ipython/magic.py:Reverted back to old %edit functionality
392 398 that returns file contents on exit.
393 399
394 400 * IPython/path.py: Added Jason Orendorff's "path" module to
395 401 IPython tree, http://www.jorendorff.com/articles/python/path/.
396 402 You can get path objects conveniently through %sc, and !!, e.g.:
397 403 sc files=ls
398 404 for p in files.paths: # or files.p
399 405 print p,p.mtime
400 406
401 407 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
402 408 now work again without considering the exclusion regexp -
403 409 hence, things like ',foo my/path' turn to 'foo("my/path")'
404 410 instead of syntax error.
405 411
406 412
407 413 2006-01-14 Ville Vainio <vivainio@gmail.com>
408 414
409 415 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
410 416 ipapi decorators for python 2.4 users, options() provides access to rc
411 417 data.
412 418
413 419 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
414 420 as path separators (even on Linux ;-). Space character after
415 421 backslash (as yielded by tab completer) is still space;
416 422 "%cd long\ name" works as expected.
417 423
418 424 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
419 425 as "chain of command", with priority. API stays the same,
420 426 TryNext exception raised by a hook function signals that
421 427 current hook failed and next hook should try handling it, as
422 428 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
423 429 requested configurable display hook, which is now implemented.
424 430
425 431 2006-01-13 Ville Vainio <vivainio@gmail.com>
426 432
427 433 * IPython/platutils*.py: platform specific utility functions,
428 434 so far only set_term_title is implemented (change terminal
429 435 label in windowing systems). %cd now changes the title to
430 436 current dir.
431 437
432 438 * IPython/Release.py: Added myself to "authors" list,
433 439 had to create new files.
434 440
435 441 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
436 442 shell escape; not a known bug but had potential to be one in the
437 443 future.
438 444
439 445 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
440 446 extension API for IPython! See the module for usage example. Fix
441 447 OInspect for docstring-less magic functions.
442 448
443 449
444 450 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
445 451
446 452 * IPython/iplib.py (raw_input): temporarily deactivate all
447 453 attempts at allowing pasting of code with autoindent on. It
448 454 introduced bugs (reported by Prabhu) and I can't seem to find a
449 455 robust combination which works in all cases. Will have to revisit
450 456 later.
451 457
452 458 * IPython/genutils.py: remove isspace() function. We've dropped
453 459 2.2 compatibility, so it's OK to use the string method.
454 460
455 461 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
456 462
457 463 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
458 464 matching what NOT to autocall on, to include all python binary
459 465 operators (including things like 'and', 'or', 'is' and 'in').
460 466 Prompted by a bug report on 'foo & bar', but I realized we had
461 467 many more potential bug cases with other operators. The regexp is
462 468 self.re_exclude_auto, it's fairly commented.
463 469
464 470 2006-01-12 Ville Vainio <vivainio@gmail.com>
465 471
466 472 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
467 473 Prettified and hardened string/backslash quoting with ipsystem(),
468 474 ipalias() and ipmagic(). Now even \ characters are passed to
469 475 %magics, !shell escapes and aliases exactly as they are in the
470 476 ipython command line. Should improve backslash experience,
471 477 particularly in Windows (path delimiter for some commands that
472 478 won't understand '/'), but Unix benefits as well (regexps). %cd
473 479 magic still doesn't support backslash path delimiters, though. Also
474 480 deleted all pretense of supporting multiline command strings in
475 481 !system or %magic commands. Thanks to Jerry McRae for suggestions.
476 482
477 483 * doc/build_doc_instructions.txt added. Documentation on how to
478 484 use doc/update_manual.py, added yesterday. Both files contributed
479 485 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
480 486 doc/*.sh for deprecation at a later date.
481 487
482 488 * /ipython.py Added ipython.py to root directory for
483 489 zero-installation (tar xzvf ipython.tgz; cd ipython; python
484 490 ipython.py) and development convenience (no need to kee doing
485 491 "setup.py install" between changes).
486 492
487 493 * Made ! and !! shell escapes work (again) in multiline expressions:
488 494 if 1:
489 495 !ls
490 496 !!ls
491 497
492 498 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
493 499
494 500 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
495 501 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
496 502 module in case-insensitive installation. Was causing crashes
497 503 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
498 504
499 505 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
500 506 <marienz-AT-gentoo.org>, closes
501 507 http://www.scipy.net/roundup/ipython/issue51.
502 508
503 509 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
504 510
505 511 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
506 512 problem of excessive CPU usage under *nix and keyboard lag under
507 513 win32.
508 514
509 515 2006-01-10 *** Released version 0.7.0
510 516
511 517 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
512 518
513 519 * IPython/Release.py (revision): tag version number to 0.7.0,
514 520 ready for release.
515 521
516 522 * IPython/Magic.py (magic_edit): Add print statement to %edit so
517 523 it informs the user of the name of the temp. file used. This can
518 524 help if you decide later to reuse that same file, so you know
519 525 where to copy the info from.
520 526
521 527 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
522 528
523 529 * setup_bdist_egg.py: little script to build an egg. Added
524 530 support in the release tools as well.
525 531
526 532 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
527 533
528 534 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
529 535 version selection (new -wxversion command line and ipythonrc
530 536 parameter). Patch contributed by Arnd Baecker
531 537 <arnd.baecker-AT-web.de>.
532 538
533 539 * IPython/iplib.py (embed_mainloop): fix tab-completion in
534 540 embedded instances, for variables defined at the interactive
535 541 prompt of the embedded ipython. Reported by Arnd.
536 542
537 543 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
538 544 it can be used as a (stateful) toggle, or with a direct parameter.
539 545
540 546 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
541 547 could be triggered in certain cases and cause the traceback
542 548 printer not to work.
543 549
544 550 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
545 551
546 552 * IPython/iplib.py (_should_recompile): Small fix, closes
547 553 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
548 554
549 555 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
550 556
551 557 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
552 558 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
553 559 Moad for help with tracking it down.
554 560
555 561 * IPython/iplib.py (handle_auto): fix autocall handling for
556 562 objects which support BOTH __getitem__ and __call__ (so that f [x]
557 563 is left alone, instead of becoming f([x]) automatically).
558 564
559 565 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
560 566 Ville's patch.
561 567
562 568 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
563 569
564 570 * IPython/iplib.py (handle_auto): changed autocall semantics to
565 571 include 'smart' mode, where the autocall transformation is NOT
566 572 applied if there are no arguments on the line. This allows you to
567 573 just type 'foo' if foo is a callable to see its internal form,
568 574 instead of having it called with no arguments (typically a
569 575 mistake). The old 'full' autocall still exists: for that, you
570 576 need to set the 'autocall' parameter to 2 in your ipythonrc file.
571 577
572 578 * IPython/completer.py (Completer.attr_matches): add
573 579 tab-completion support for Enthoughts' traits. After a report by
574 580 Arnd and a patch by Prabhu.
575 581
576 582 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
577 583
578 584 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
579 585 Schmolck's patch to fix inspect.getinnerframes().
580 586
581 587 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
582 588 for embedded instances, regarding handling of namespaces and items
583 589 added to the __builtin__ one. Multiple embedded instances and
584 590 recursive embeddings should work better now (though I'm not sure
585 591 I've got all the corner cases fixed, that code is a bit of a brain
586 592 twister).
587 593
588 594 * IPython/Magic.py (magic_edit): added support to edit in-memory
589 595 macros (automatically creates the necessary temp files). %edit
590 596 also doesn't return the file contents anymore, it's just noise.
591 597
592 598 * IPython/completer.py (Completer.attr_matches): revert change to
593 599 complete only on attributes listed in __all__. I realized it
594 600 cripples the tab-completion system as a tool for exploring the
595 601 internals of unknown libraries (it renders any non-__all__
596 602 attribute off-limits). I got bit by this when trying to see
597 603 something inside the dis module.
598 604
599 605 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
600 606
601 607 * IPython/iplib.py (InteractiveShell.__init__): add .meta
602 608 namespace for users and extension writers to hold data in. This
603 609 follows the discussion in
604 610 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
605 611
606 612 * IPython/completer.py (IPCompleter.complete): small patch to help
607 613 tab-completion under Emacs, after a suggestion by John Barnard
608 614 <barnarj-AT-ccf.org>.
609 615
610 616 * IPython/Magic.py (Magic.extract_input_slices): added support for
611 617 the slice notation in magics to use N-M to represent numbers N...M
612 618 (closed endpoints). This is used by %macro and %save.
613 619
614 620 * IPython/completer.py (Completer.attr_matches): for modules which
615 621 define __all__, complete only on those. After a patch by Jeffrey
616 622 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
617 623 speed up this routine.
618 624
619 625 * IPython/Logger.py (Logger.log): fix a history handling bug. I
620 626 don't know if this is the end of it, but the behavior now is
621 627 certainly much more correct. Note that coupled with macros,
622 628 slightly surprising (at first) behavior may occur: a macro will in
623 629 general expand to multiple lines of input, so upon exiting, the
624 630 in/out counters will both be bumped by the corresponding amount
625 631 (as if the macro's contents had been typed interactively). Typing
626 632 %hist will reveal the intermediate (silently processed) lines.
627 633
628 634 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
629 635 pickle to fail (%run was overwriting __main__ and not restoring
630 636 it, but pickle relies on __main__ to operate).
631 637
632 638 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
633 639 using properties, but forgot to make the main InteractiveShell
634 640 class a new-style class. Properties fail silently, and
635 641 misteriously, with old-style class (getters work, but
636 642 setters don't do anything).
637 643
638 644 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
639 645
640 646 * IPython/Magic.py (magic_history): fix history reporting bug (I
641 647 know some nasties are still there, I just can't seem to find a
642 648 reproducible test case to track them down; the input history is
643 649 falling out of sync...)
644 650
645 651 * IPython/iplib.py (handle_shell_escape): fix bug where both
646 652 aliases and system accesses where broken for indented code (such
647 653 as loops).
648 654
649 655 * IPython/genutils.py (shell): fix small but critical bug for
650 656 win32 system access.
651 657
652 658 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
653 659
654 660 * IPython/iplib.py (showtraceback): remove use of the
655 661 sys.last_{type/value/traceback} structures, which are non
656 662 thread-safe.
657 663 (_prefilter): change control flow to ensure that we NEVER
658 664 introspect objects when autocall is off. This will guarantee that
659 665 having an input line of the form 'x.y', where access to attribute
660 666 'y' has side effects, doesn't trigger the side effect TWICE. It
661 667 is important to note that, with autocall on, these side effects
662 668 can still happen.
663 669 (ipsystem): new builtin, to complete the ip{magic/alias/system}
664 670 trio. IPython offers these three kinds of special calls which are
665 671 not python code, and it's a good thing to have their call method
666 672 be accessible as pure python functions (not just special syntax at
667 673 the command line). It gives us a better internal implementation
668 674 structure, as well as exposing these for user scripting more
669 675 cleanly.
670 676
671 677 * IPython/macro.py (Macro.__init__): moved macros to a standalone
672 678 file. Now that they'll be more likely to be used with the
673 679 persistance system (%store), I want to make sure their module path
674 680 doesn't change in the future, so that we don't break things for
675 681 users' persisted data.
676 682
677 683 * IPython/iplib.py (autoindent_update): move indentation
678 684 management into the _text_ processing loop, not the keyboard
679 685 interactive one. This is necessary to correctly process non-typed
680 686 multiline input (such as macros).
681 687
682 688 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
683 689 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
684 690 which was producing problems in the resulting manual.
685 691 (magic_whos): improve reporting of instances (show their class,
686 692 instead of simply printing 'instance' which isn't terribly
687 693 informative).
688 694
689 695 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
690 696 (minor mods) to support network shares under win32.
691 697
692 698 * IPython/winconsole.py (get_console_size): add new winconsole
693 699 module and fixes to page_dumb() to improve its behavior under
694 700 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
695 701
696 702 * IPython/Magic.py (Macro): simplified Macro class to just
697 703 subclass list. We've had only 2.2 compatibility for a very long
698 704 time, yet I was still avoiding subclassing the builtin types. No
699 705 more (I'm also starting to use properties, though I won't shift to
700 706 2.3-specific features quite yet).
701 707 (magic_store): added Ville's patch for lightweight variable
702 708 persistence, after a request on the user list by Matt Wilkie
703 709 <maphew-AT-gmail.com>. The new %store magic's docstring has full
704 710 details.
705 711
706 712 * IPython/iplib.py (InteractiveShell.post_config_initialization):
707 713 changed the default logfile name from 'ipython.log' to
708 714 'ipython_log.py'. These logs are real python files, and now that
709 715 we have much better multiline support, people are more likely to
710 716 want to use them as such. Might as well name them correctly.
711 717
712 718 * IPython/Magic.py: substantial cleanup. While we can't stop
713 719 using magics as mixins, due to the existing customizations 'out
714 720 there' which rely on the mixin naming conventions, at least I
715 721 cleaned out all cross-class name usage. So once we are OK with
716 722 breaking compatibility, the two systems can be separated.
717 723
718 724 * IPython/Logger.py: major cleanup. This one is NOT a mixin
719 725 anymore, and the class is a fair bit less hideous as well. New
720 726 features were also introduced: timestamping of input, and logging
721 727 of output results. These are user-visible with the -t and -o
722 728 options to %logstart. Closes
723 729 http://www.scipy.net/roundup/ipython/issue11 and a request by
724 730 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
725 731
726 732 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
727 733
728 734 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
729 735 better hadnle backslashes in paths. See the thread 'More Windows
730 736 questions part 2 - \/ characters revisited' on the iypthon user
731 737 list:
732 738 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
733 739
734 740 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
735 741
736 742 (InteractiveShell.__init__): change threaded shells to not use the
737 743 ipython crash handler. This was causing more problems than not,
738 744 as exceptions in the main thread (GUI code, typically) would
739 745 always show up as a 'crash', when they really weren't.
740 746
741 747 The colors and exception mode commands (%colors/%xmode) have been
742 748 synchronized to also take this into account, so users can get
743 749 verbose exceptions for their threaded code as well. I also added
744 750 support for activating pdb inside this exception handler as well,
745 751 so now GUI authors can use IPython's enhanced pdb at runtime.
746 752
747 753 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
748 754 true by default, and add it to the shipped ipythonrc file. Since
749 755 this asks the user before proceeding, I think it's OK to make it
750 756 true by default.
751 757
752 758 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
753 759 of the previous special-casing of input in the eval loop. I think
754 760 this is cleaner, as they really are commands and shouldn't have
755 761 a special role in the middle of the core code.
756 762
757 763 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
758 764
759 765 * IPython/iplib.py (edit_syntax_error): added support for
760 766 automatically reopening the editor if the file had a syntax error
761 767 in it. Thanks to scottt who provided the patch at:
762 768 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
763 769 version committed).
764 770
765 771 * IPython/iplib.py (handle_normal): add suport for multi-line
766 772 input with emtpy lines. This fixes
767 773 http://www.scipy.net/roundup/ipython/issue43 and a similar
768 774 discussion on the user list.
769 775
770 776 WARNING: a behavior change is necessarily introduced to support
771 777 blank lines: now a single blank line with whitespace does NOT
772 778 break the input loop, which means that when autoindent is on, by
773 779 default hitting return on the next (indented) line does NOT exit.
774 780
775 781 Instead, to exit a multiline input you can either have:
776 782
777 783 - TWO whitespace lines (just hit return again), or
778 784 - a single whitespace line of a different length than provided
779 785 by the autoindent (add or remove a space).
780 786
781 787 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
782 788 module to better organize all readline-related functionality.
783 789 I've deleted FlexCompleter and put all completion clases here.
784 790
785 791 * IPython/iplib.py (raw_input): improve indentation management.
786 792 It is now possible to paste indented code with autoindent on, and
787 793 the code is interpreted correctly (though it still looks bad on
788 794 screen, due to the line-oriented nature of ipython).
789 795 (MagicCompleter.complete): change behavior so that a TAB key on an
790 796 otherwise empty line actually inserts a tab, instead of completing
791 797 on the entire global namespace. This makes it easier to use the
792 798 TAB key for indentation. After a request by Hans Meine
793 799 <hans_meine-AT-gmx.net>
794 800 (_prefilter): add support so that typing plain 'exit' or 'quit'
795 801 does a sensible thing. Originally I tried to deviate as little as
796 802 possible from the default python behavior, but even that one may
797 803 change in this direction (thread on python-dev to that effect).
798 804 Regardless, ipython should do the right thing even if CPython's
799 805 '>>>' prompt doesn't.
800 806 (InteractiveShell): removed subclassing code.InteractiveConsole
801 807 class. By now we'd overridden just about all of its methods: I've
802 808 copied the remaining two over, and now ipython is a standalone
803 809 class. This will provide a clearer picture for the chainsaw
804 810 branch refactoring.
805 811
806 812 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
807 813
808 814 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
809 815 failures for objects which break when dir() is called on them.
810 816
811 817 * IPython/FlexCompleter.py (Completer.__init__): Added support for
812 818 distinct local and global namespaces in the completer API. This
813 819 change allows us top properly handle completion with distinct
814 820 scopes, including in embedded instances (this had never really
815 821 worked correctly).
816 822
817 823 Note: this introduces a change in the constructor for
818 824 MagicCompleter, as a new global_namespace parameter is now the
819 825 second argument (the others were bumped one position).
820 826
821 827 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
822 828
823 829 * IPython/iplib.py (embed_mainloop): fix tab-completion in
824 830 embedded instances (which can be done now thanks to Vivian's
825 831 frame-handling fixes for pdb).
826 832 (InteractiveShell.__init__): Fix namespace handling problem in
827 833 embedded instances. We were overwriting __main__ unconditionally,
828 834 and this should only be done for 'full' (non-embedded) IPython;
829 835 embedded instances must respect the caller's __main__. Thanks to
830 836 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
831 837
832 838 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
833 839
834 840 * setup.py: added download_url to setup(). This registers the
835 841 download address at PyPI, which is not only useful to humans
836 842 browsing the site, but is also picked up by setuptools (the Eggs
837 843 machinery). Thanks to Ville and R. Kern for the info/discussion
838 844 on this.
839 845
840 846 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
841 847
842 848 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
843 849 This brings a lot of nice functionality to the pdb mode, which now
844 850 has tab-completion, syntax highlighting, and better stack handling
845 851 than before. Many thanks to Vivian De Smedt
846 852 <vivian-AT-vdesmedt.com> for the original patches.
847 853
848 854 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
849 855
850 856 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
851 857 sequence to consistently accept the banner argument. The
852 858 inconsistency was tripping SAGE, thanks to Gary Zablackis
853 859 <gzabl-AT-yahoo.com> for the report.
854 860
855 861 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
856 862
857 863 * IPython/iplib.py (InteractiveShell.post_config_initialization):
858 864 Fix bug where a naked 'alias' call in the ipythonrc file would
859 865 cause a crash. Bug reported by Jorgen Stenarson.
860 866
861 867 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
862 868
863 869 * IPython/ipmaker.py (make_IPython): cleanups which should improve
864 870 startup time.
865 871
866 872 * IPython/iplib.py (runcode): my globals 'fix' for embedded
867 873 instances had introduced a bug with globals in normal code. Now
868 874 it's working in all cases.
869 875
870 876 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
871 877 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
872 878 has been introduced to set the default case sensitivity of the
873 879 searches. Users can still select either mode at runtime on a
874 880 per-search basis.
875 881
876 882 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
877 883
878 884 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
879 885 attributes in wildcard searches for subclasses. Modified version
880 886 of a patch by Jorgen.
881 887
882 888 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
883 889
884 890 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
885 891 embedded instances. I added a user_global_ns attribute to the
886 892 InteractiveShell class to handle this.
887 893
888 894 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
889 895
890 896 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
891 897 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
892 898 (reported under win32, but may happen also in other platforms).
893 899 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
894 900
895 901 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
896 902
897 903 * IPython/Magic.py (magic_psearch): new support for wildcard
898 904 patterns. Now, typing ?a*b will list all names which begin with a
899 905 and end in b, for example. The %psearch magic has full
900 906 docstrings. Many thanks to JΓΆrgen Stenarson
901 907 <jorgen.stenarson-AT-bostream.nu>, author of the patches
902 908 implementing this functionality.
903 909
904 910 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
905 911
906 912 * Manual: fixed long-standing annoyance of double-dashes (as in
907 913 --prefix=~, for example) being stripped in the HTML version. This
908 914 is a latex2html bug, but a workaround was provided. Many thanks
909 915 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
910 916 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
911 917 rolling. This seemingly small issue had tripped a number of users
912 918 when first installing, so I'm glad to see it gone.
913 919
914 920 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
915 921
916 922 * IPython/Extensions/numeric_formats.py: fix missing import,
917 923 reported by Stephen Walton.
918 924
919 925 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
920 926
921 927 * IPython/demo.py: finish demo module, fully documented now.
922 928
923 929 * IPython/genutils.py (file_read): simple little utility to read a
924 930 file and ensure it's closed afterwards.
925 931
926 932 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
927 933
928 934 * IPython/demo.py (Demo.__init__): added support for individually
929 935 tagging blocks for automatic execution.
930 936
931 937 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
932 938 syntax-highlighted python sources, requested by John.
933 939
934 940 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
935 941
936 942 * IPython/demo.py (Demo.again): fix bug where again() blocks after
937 943 finishing.
938 944
939 945 * IPython/genutils.py (shlex_split): moved from Magic to here,
940 946 where all 2.2 compatibility stuff lives. I needed it for demo.py.
941 947
942 948 * IPython/demo.py (Demo.__init__): added support for silent
943 949 blocks, improved marks as regexps, docstrings written.
944 950 (Demo.__init__): better docstring, added support for sys.argv.
945 951
946 952 * IPython/genutils.py (marquee): little utility used by the demo
947 953 code, handy in general.
948 954
949 955 * IPython/demo.py (Demo.__init__): new class for interactive
950 956 demos. Not documented yet, I just wrote it in a hurry for
951 957 scipy'05. Will docstring later.
952 958
953 959 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
954 960
955 961 * IPython/Shell.py (sigint_handler): Drastic simplification which
956 962 also seems to make Ctrl-C work correctly across threads! This is
957 963 so simple, that I can't beleive I'd missed it before. Needs more
958 964 testing, though.
959 965 (KBINT): Never mind, revert changes. I'm sure I'd tried something
960 966 like this before...
961 967
962 968 * IPython/genutils.py (get_home_dir): add protection against
963 969 non-dirs in win32 registry.
964 970
965 971 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
966 972 bug where dict was mutated while iterating (pysh crash).
967 973
968 974 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
969 975
970 976 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
971 977 spurious newlines added by this routine. After a report by
972 978 F. Mantegazza.
973 979
974 980 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
975 981
976 982 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
977 983 calls. These were a leftover from the GTK 1.x days, and can cause
978 984 problems in certain cases (after a report by John Hunter).
979 985
980 986 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
981 987 os.getcwd() fails at init time. Thanks to patch from David Remahl
982 988 <chmod007-AT-mac.com>.
983 989 (InteractiveShell.__init__): prevent certain special magics from
984 990 being shadowed by aliases. Closes
985 991 http://www.scipy.net/roundup/ipython/issue41.
986 992
987 993 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
988 994
989 995 * IPython/iplib.py (InteractiveShell.complete): Added new
990 996 top-level completion method to expose the completion mechanism
991 997 beyond readline-based environments.
992 998
993 999 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
994 1000
995 1001 * tools/ipsvnc (svnversion): fix svnversion capture.
996 1002
997 1003 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
998 1004 attribute to self, which was missing. Before, it was set by a
999 1005 routine which in certain cases wasn't being called, so the
1000 1006 instance could end up missing the attribute. This caused a crash.
1001 1007 Closes http://www.scipy.net/roundup/ipython/issue40.
1002 1008
1003 1009 2005-08-16 Fernando Perez <fperez@colorado.edu>
1004 1010
1005 1011 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1006 1012 contains non-string attribute. Closes
1007 1013 http://www.scipy.net/roundup/ipython/issue38.
1008 1014
1009 1015 2005-08-14 Fernando Perez <fperez@colorado.edu>
1010 1016
1011 1017 * tools/ipsvnc: Minor improvements, to add changeset info.
1012 1018
1013 1019 2005-08-12 Fernando Perez <fperez@colorado.edu>
1014 1020
1015 1021 * IPython/iplib.py (runsource): remove self.code_to_run_src
1016 1022 attribute. I realized this is nothing more than
1017 1023 '\n'.join(self.buffer), and having the same data in two different
1018 1024 places is just asking for synchronization bugs. This may impact
1019 1025 people who have custom exception handlers, so I need to warn
1020 1026 ipython-dev about it (F. Mantegazza may use them).
1021 1027
1022 1028 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1023 1029
1024 1030 * IPython/genutils.py: fix 2.2 compatibility (generators)
1025 1031
1026 1032 2005-07-18 Fernando Perez <fperez@colorado.edu>
1027 1033
1028 1034 * IPython/genutils.py (get_home_dir): fix to help users with
1029 1035 invalid $HOME under win32.
1030 1036
1031 1037 2005-07-17 Fernando Perez <fperez@colorado.edu>
1032 1038
1033 1039 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1034 1040 some old hacks and clean up a bit other routines; code should be
1035 1041 simpler and a bit faster.
1036 1042
1037 1043 * IPython/iplib.py (interact): removed some last-resort attempts
1038 1044 to survive broken stdout/stderr. That code was only making it
1039 1045 harder to abstract out the i/o (necessary for gui integration),
1040 1046 and the crashes it could prevent were extremely rare in practice
1041 1047 (besides being fully user-induced in a pretty violent manner).
1042 1048
1043 1049 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1044 1050 Nothing major yet, but the code is simpler to read; this should
1045 1051 make it easier to do more serious modifications in the future.
1046 1052
1047 1053 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1048 1054 which broke in .15 (thanks to a report by Ville).
1049 1055
1050 1056 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1051 1057 be quite correct, I know next to nothing about unicode). This
1052 1058 will allow unicode strings to be used in prompts, amongst other
1053 1059 cases. It also will prevent ipython from crashing when unicode
1054 1060 shows up unexpectedly in many places. If ascii encoding fails, we
1055 1061 assume utf_8. Currently the encoding is not a user-visible
1056 1062 setting, though it could be made so if there is demand for it.
1057 1063
1058 1064 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1059 1065
1060 1066 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1061 1067
1062 1068 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1063 1069
1064 1070 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1065 1071 code can work transparently for 2.2/2.3.
1066 1072
1067 1073 2005-07-16 Fernando Perez <fperez@colorado.edu>
1068 1074
1069 1075 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1070 1076 out of the color scheme table used for coloring exception
1071 1077 tracebacks. This allows user code to add new schemes at runtime.
1072 1078 This is a minimally modified version of the patch at
1073 1079 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1074 1080 for the contribution.
1075 1081
1076 1082 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1077 1083 slightly modified version of the patch in
1078 1084 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1079 1085 to remove the previous try/except solution (which was costlier).
1080 1086 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1081 1087
1082 1088 2005-06-08 Fernando Perez <fperez@colorado.edu>
1083 1089
1084 1090 * IPython/iplib.py (write/write_err): Add methods to abstract all
1085 1091 I/O a bit more.
1086 1092
1087 1093 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1088 1094 warning, reported by Aric Hagberg, fix by JD Hunter.
1089 1095
1090 1096 2005-06-02 *** Released version 0.6.15
1091 1097
1092 1098 2005-06-01 Fernando Perez <fperez@colorado.edu>
1093 1099
1094 1100 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1095 1101 tab-completion of filenames within open-quoted strings. Note that
1096 1102 this requires that in ~/.ipython/ipythonrc, users change the
1097 1103 readline delimiters configuration to read:
1098 1104
1099 1105 readline_remove_delims -/~
1100 1106
1101 1107
1102 1108 2005-05-31 *** Released version 0.6.14
1103 1109
1104 1110 2005-05-29 Fernando Perez <fperez@colorado.edu>
1105 1111
1106 1112 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1107 1113 with files not on the filesystem. Reported by Eliyahu Sandler
1108 1114 <eli@gondolin.net>
1109 1115
1110 1116 2005-05-22 Fernando Perez <fperez@colorado.edu>
1111 1117
1112 1118 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1113 1119 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1114 1120
1115 1121 2005-05-19 Fernando Perez <fperez@colorado.edu>
1116 1122
1117 1123 * IPython/iplib.py (safe_execfile): close a file which could be
1118 1124 left open (causing problems in win32, which locks open files).
1119 1125 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1120 1126
1121 1127 2005-05-18 Fernando Perez <fperez@colorado.edu>
1122 1128
1123 1129 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1124 1130 keyword arguments correctly to safe_execfile().
1125 1131
1126 1132 2005-05-13 Fernando Perez <fperez@colorado.edu>
1127 1133
1128 1134 * ipython.1: Added info about Qt to manpage, and threads warning
1129 1135 to usage page (invoked with --help).
1130 1136
1131 1137 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1132 1138 new matcher (it goes at the end of the priority list) to do
1133 1139 tab-completion on named function arguments. Submitted by George
1134 1140 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1135 1141 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1136 1142 for more details.
1137 1143
1138 1144 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1139 1145 SystemExit exceptions in the script being run. Thanks to a report
1140 1146 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1141 1147 producing very annoying behavior when running unit tests.
1142 1148
1143 1149 2005-05-12 Fernando Perez <fperez@colorado.edu>
1144 1150
1145 1151 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1146 1152 which I'd broken (again) due to a changed regexp. In the process,
1147 1153 added ';' as an escape to auto-quote the whole line without
1148 1154 splitting its arguments. Thanks to a report by Jerry McRae
1149 1155 <qrs0xyc02-AT-sneakemail.com>.
1150 1156
1151 1157 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1152 1158 possible crashes caused by a TokenError. Reported by Ed Schofield
1153 1159 <schofield-AT-ftw.at>.
1154 1160
1155 1161 2005-05-06 Fernando Perez <fperez@colorado.edu>
1156 1162
1157 1163 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1158 1164
1159 1165 2005-04-29 Fernando Perez <fperez@colorado.edu>
1160 1166
1161 1167 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1162 1168 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1163 1169 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1164 1170 which provides support for Qt interactive usage (similar to the
1165 1171 existing one for WX and GTK). This had been often requested.
1166 1172
1167 1173 2005-04-14 *** Released version 0.6.13
1168 1174
1169 1175 2005-04-08 Fernando Perez <fperez@colorado.edu>
1170 1176
1171 1177 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1172 1178 from _ofind, which gets called on almost every input line. Now,
1173 1179 we only try to get docstrings if they are actually going to be
1174 1180 used (the overhead of fetching unnecessary docstrings can be
1175 1181 noticeable for certain objects, such as Pyro proxies).
1176 1182
1177 1183 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1178 1184 for completers. For some reason I had been passing them the state
1179 1185 variable, which completers never actually need, and was in
1180 1186 conflict with the rlcompleter API. Custom completers ONLY need to
1181 1187 take the text parameter.
1182 1188
1183 1189 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1184 1190 work correctly in pysh. I've also moved all the logic which used
1185 1191 to be in pysh.py here, which will prevent problems with future
1186 1192 upgrades. However, this time I must warn users to update their
1187 1193 pysh profile to include the line
1188 1194
1189 1195 import_all IPython.Extensions.InterpreterExec
1190 1196
1191 1197 because otherwise things won't work for them. They MUST also
1192 1198 delete pysh.py and the line
1193 1199
1194 1200 execfile pysh.py
1195 1201
1196 1202 from their ipythonrc-pysh.
1197 1203
1198 1204 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1199 1205 robust in the face of objects whose dir() returns non-strings
1200 1206 (which it shouldn't, but some broken libs like ITK do). Thanks to
1201 1207 a patch by John Hunter (implemented differently, though). Also
1202 1208 minor improvements by using .extend instead of + on lists.
1203 1209
1204 1210 * pysh.py:
1205 1211
1206 1212 2005-04-06 Fernando Perez <fperez@colorado.edu>
1207 1213
1208 1214 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1209 1215 by default, so that all users benefit from it. Those who don't
1210 1216 want it can still turn it off.
1211 1217
1212 1218 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1213 1219 config file, I'd forgotten about this, so users were getting it
1214 1220 off by default.
1215 1221
1216 1222 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1217 1223 consistency. Now magics can be called in multiline statements,
1218 1224 and python variables can be expanded in magic calls via $var.
1219 1225 This makes the magic system behave just like aliases or !system
1220 1226 calls.
1221 1227
1222 1228 2005-03-28 Fernando Perez <fperez@colorado.edu>
1223 1229
1224 1230 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1225 1231 expensive string additions for building command. Add support for
1226 1232 trailing ';' when autocall is used.
1227 1233
1228 1234 2005-03-26 Fernando Perez <fperez@colorado.edu>
1229 1235
1230 1236 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1231 1237 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1232 1238 ipython.el robust against prompts with any number of spaces
1233 1239 (including 0) after the ':' character.
1234 1240
1235 1241 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1236 1242 continuation prompt, which misled users to think the line was
1237 1243 already indented. Closes debian Bug#300847, reported to me by
1238 1244 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1239 1245
1240 1246 2005-03-23 Fernando Perez <fperez@colorado.edu>
1241 1247
1242 1248 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1243 1249 properly aligned if they have embedded newlines.
1244 1250
1245 1251 * IPython/iplib.py (runlines): Add a public method to expose
1246 1252 IPython's code execution machinery, so that users can run strings
1247 1253 as if they had been typed at the prompt interactively.
1248 1254 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1249 1255 methods which can call the system shell, but with python variable
1250 1256 expansion. The three such methods are: __IPYTHON__.system,
1251 1257 .getoutput and .getoutputerror. These need to be documented in a
1252 1258 'public API' section (to be written) of the manual.
1253 1259
1254 1260 2005-03-20 Fernando Perez <fperez@colorado.edu>
1255 1261
1256 1262 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1257 1263 for custom exception handling. This is quite powerful, and it
1258 1264 allows for user-installable exception handlers which can trap
1259 1265 custom exceptions at runtime and treat them separately from
1260 1266 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1261 1267 Mantegazza <mantegazza-AT-ill.fr>.
1262 1268 (InteractiveShell.set_custom_completer): public API function to
1263 1269 add new completers at runtime.
1264 1270
1265 1271 2005-03-19 Fernando Perez <fperez@colorado.edu>
1266 1272
1267 1273 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1268 1274 allow objects which provide their docstrings via non-standard
1269 1275 mechanisms (like Pyro proxies) to still be inspected by ipython's
1270 1276 ? system.
1271 1277
1272 1278 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1273 1279 automatic capture system. I tried quite hard to make it work
1274 1280 reliably, and simply failed. I tried many combinations with the
1275 1281 subprocess module, but eventually nothing worked in all needed
1276 1282 cases (not blocking stdin for the child, duplicating stdout
1277 1283 without blocking, etc). The new %sc/%sx still do capture to these
1278 1284 magical list/string objects which make shell use much more
1279 1285 conveninent, so not all is lost.
1280 1286
1281 1287 XXX - FIX MANUAL for the change above!
1282 1288
1283 1289 (runsource): I copied code.py's runsource() into ipython to modify
1284 1290 it a bit. Now the code object and source to be executed are
1285 1291 stored in ipython. This makes this info accessible to third-party
1286 1292 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1287 1293 Mantegazza <mantegazza-AT-ill.fr>.
1288 1294
1289 1295 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1290 1296 history-search via readline (like C-p/C-n). I'd wanted this for a
1291 1297 long time, but only recently found out how to do it. For users
1292 1298 who already have their ipythonrc files made and want this, just
1293 1299 add:
1294 1300
1295 1301 readline_parse_and_bind "\e[A": history-search-backward
1296 1302 readline_parse_and_bind "\e[B": history-search-forward
1297 1303
1298 1304 2005-03-18 Fernando Perez <fperez@colorado.edu>
1299 1305
1300 1306 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1301 1307 LSString and SList classes which allow transparent conversions
1302 1308 between list mode and whitespace-separated string.
1303 1309 (magic_r): Fix recursion problem in %r.
1304 1310
1305 1311 * IPython/genutils.py (LSString): New class to be used for
1306 1312 automatic storage of the results of all alias/system calls in _o
1307 1313 and _e (stdout/err). These provide a .l/.list attribute which
1308 1314 does automatic splitting on newlines. This means that for most
1309 1315 uses, you'll never need to do capturing of output with %sc/%sx
1310 1316 anymore, since ipython keeps this always done for you. Note that
1311 1317 only the LAST results are stored, the _o/e variables are
1312 1318 overwritten on each call. If you need to save their contents
1313 1319 further, simply bind them to any other name.
1314 1320
1315 1321 2005-03-17 Fernando Perez <fperez@colorado.edu>
1316 1322
1317 1323 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1318 1324 prompt namespace handling.
1319 1325
1320 1326 2005-03-16 Fernando Perez <fperez@colorado.edu>
1321 1327
1322 1328 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1323 1329 classic prompts to be '>>> ' (final space was missing, and it
1324 1330 trips the emacs python mode).
1325 1331 (BasePrompt.__str__): Added safe support for dynamic prompt
1326 1332 strings. Now you can set your prompt string to be '$x', and the
1327 1333 value of x will be printed from your interactive namespace. The
1328 1334 interpolation syntax includes the full Itpl support, so
1329 1335 ${foo()+x+bar()} is a valid prompt string now, and the function
1330 1336 calls will be made at runtime.
1331 1337
1332 1338 2005-03-15 Fernando Perez <fperez@colorado.edu>
1333 1339
1334 1340 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1335 1341 avoid name clashes in pylab. %hist still works, it just forwards
1336 1342 the call to %history.
1337 1343
1338 1344 2005-03-02 *** Released version 0.6.12
1339 1345
1340 1346 2005-03-02 Fernando Perez <fperez@colorado.edu>
1341 1347
1342 1348 * IPython/iplib.py (handle_magic): log magic calls properly as
1343 1349 ipmagic() function calls.
1344 1350
1345 1351 * IPython/Magic.py (magic_time): Improved %time to support
1346 1352 statements and provide wall-clock as well as CPU time.
1347 1353
1348 1354 2005-02-27 Fernando Perez <fperez@colorado.edu>
1349 1355
1350 1356 * IPython/hooks.py: New hooks module, to expose user-modifiable
1351 1357 IPython functionality in a clean manner. For now only the editor
1352 1358 hook is actually written, and other thigns which I intend to turn
1353 1359 into proper hooks aren't yet there. The display and prefilter
1354 1360 stuff, for example, should be hooks. But at least now the
1355 1361 framework is in place, and the rest can be moved here with more
1356 1362 time later. IPython had had a .hooks variable for a long time for
1357 1363 this purpose, but I'd never actually used it for anything.
1358 1364
1359 1365 2005-02-26 Fernando Perez <fperez@colorado.edu>
1360 1366
1361 1367 * IPython/ipmaker.py (make_IPython): make the default ipython
1362 1368 directory be called _ipython under win32, to follow more the
1363 1369 naming peculiarities of that platform (where buggy software like
1364 1370 Visual Sourcesafe breaks with .named directories). Reported by
1365 1371 Ville Vainio.
1366 1372
1367 1373 2005-02-23 Fernando Perez <fperez@colorado.edu>
1368 1374
1369 1375 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1370 1376 auto_aliases for win32 which were causing problems. Users can
1371 1377 define the ones they personally like.
1372 1378
1373 1379 2005-02-21 Fernando Perez <fperez@colorado.edu>
1374 1380
1375 1381 * IPython/Magic.py (magic_time): new magic to time execution of
1376 1382 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1377 1383
1378 1384 2005-02-19 Fernando Perez <fperez@colorado.edu>
1379 1385
1380 1386 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1381 1387 into keys (for prompts, for example).
1382 1388
1383 1389 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1384 1390 prompts in case users want them. This introduces a small behavior
1385 1391 change: ipython does not automatically add a space to all prompts
1386 1392 anymore. To get the old prompts with a space, users should add it
1387 1393 manually to their ipythonrc file, so for example prompt_in1 should
1388 1394 now read 'In [\#]: ' instead of 'In [\#]:'.
1389 1395 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1390 1396 file) to control left-padding of secondary prompts.
1391 1397
1392 1398 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1393 1399 the profiler can't be imported. Fix for Debian, which removed
1394 1400 profile.py because of License issues. I applied a slightly
1395 1401 modified version of the original Debian patch at
1396 1402 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1397 1403
1398 1404 2005-02-17 Fernando Perez <fperez@colorado.edu>
1399 1405
1400 1406 * IPython/genutils.py (native_line_ends): Fix bug which would
1401 1407 cause improper line-ends under win32 b/c I was not opening files
1402 1408 in binary mode. Bug report and fix thanks to Ville.
1403 1409
1404 1410 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1405 1411 trying to catch spurious foo[1] autocalls. My fix actually broke
1406 1412 ',/' autoquote/call with explicit escape (bad regexp).
1407 1413
1408 1414 2005-02-15 *** Released version 0.6.11
1409 1415
1410 1416 2005-02-14 Fernando Perez <fperez@colorado.edu>
1411 1417
1412 1418 * IPython/background_jobs.py: New background job management
1413 1419 subsystem. This is implemented via a new set of classes, and
1414 1420 IPython now provides a builtin 'jobs' object for background job
1415 1421 execution. A convenience %bg magic serves as a lightweight
1416 1422 frontend for starting the more common type of calls. This was
1417 1423 inspired by discussions with B. Granger and the BackgroundCommand
1418 1424 class described in the book Python Scripting for Computational
1419 1425 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1420 1426 (although ultimately no code from this text was used, as IPython's
1421 1427 system is a separate implementation).
1422 1428
1423 1429 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1424 1430 to control the completion of single/double underscore names
1425 1431 separately. As documented in the example ipytonrc file, the
1426 1432 readline_omit__names variable can now be set to 2, to omit even
1427 1433 single underscore names. Thanks to a patch by Brian Wong
1428 1434 <BrianWong-AT-AirgoNetworks.Com>.
1429 1435 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1430 1436 be autocalled as foo([1]) if foo were callable. A problem for
1431 1437 things which are both callable and implement __getitem__.
1432 1438 (init_readline): Fix autoindentation for win32. Thanks to a patch
1433 1439 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1434 1440
1435 1441 2005-02-12 Fernando Perez <fperez@colorado.edu>
1436 1442
1437 1443 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1438 1444 which I had written long ago to sort out user error messages which
1439 1445 may occur during startup. This seemed like a good idea initially,
1440 1446 but it has proven a disaster in retrospect. I don't want to
1441 1447 change much code for now, so my fix is to set the internal 'debug'
1442 1448 flag to true everywhere, whose only job was precisely to control
1443 1449 this subsystem. This closes issue 28 (as well as avoiding all
1444 1450 sorts of strange hangups which occur from time to time).
1445 1451
1446 1452 2005-02-07 Fernando Perez <fperez@colorado.edu>
1447 1453
1448 1454 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1449 1455 previous call produced a syntax error.
1450 1456
1451 1457 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1452 1458 classes without constructor.
1453 1459
1454 1460 2005-02-06 Fernando Perez <fperez@colorado.edu>
1455 1461
1456 1462 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1457 1463 completions with the results of each matcher, so we return results
1458 1464 to the user from all namespaces. This breaks with ipython
1459 1465 tradition, but I think it's a nicer behavior. Now you get all
1460 1466 possible completions listed, from all possible namespaces (python,
1461 1467 filesystem, magics...) After a request by John Hunter
1462 1468 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1463 1469
1464 1470 2005-02-05 Fernando Perez <fperez@colorado.edu>
1465 1471
1466 1472 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1467 1473 the call had quote characters in it (the quotes were stripped).
1468 1474
1469 1475 2005-01-31 Fernando Perez <fperez@colorado.edu>
1470 1476
1471 1477 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1472 1478 Itpl.itpl() to make the code more robust against psyco
1473 1479 optimizations.
1474 1480
1475 1481 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1476 1482 of causing an exception. Quicker, cleaner.
1477 1483
1478 1484 2005-01-28 Fernando Perez <fperez@colorado.edu>
1479 1485
1480 1486 * scripts/ipython_win_post_install.py (install): hardcode
1481 1487 sys.prefix+'python.exe' as the executable path. It turns out that
1482 1488 during the post-installation run, sys.executable resolves to the
1483 1489 name of the binary installer! I should report this as a distutils
1484 1490 bug, I think. I updated the .10 release with this tiny fix, to
1485 1491 avoid annoying the lists further.
1486 1492
1487 1493 2005-01-27 *** Released version 0.6.10
1488 1494
1489 1495 2005-01-27 Fernando Perez <fperez@colorado.edu>
1490 1496
1491 1497 * IPython/numutils.py (norm): Added 'inf' as optional name for
1492 1498 L-infinity norm, included references to mathworld.com for vector
1493 1499 norm definitions.
1494 1500 (amin/amax): added amin/amax for array min/max. Similar to what
1495 1501 pylab ships with after the recent reorganization of names.
1496 1502 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1497 1503
1498 1504 * ipython.el: committed Alex's recent fixes and improvements.
1499 1505 Tested with python-mode from CVS, and it looks excellent. Since
1500 1506 python-mode hasn't released anything in a while, I'm temporarily
1501 1507 putting a copy of today's CVS (v 4.70) of python-mode in:
1502 1508 http://ipython.scipy.org/tmp/python-mode.el
1503 1509
1504 1510 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1505 1511 sys.executable for the executable name, instead of assuming it's
1506 1512 called 'python.exe' (the post-installer would have produced broken
1507 1513 setups on systems with a differently named python binary).
1508 1514
1509 1515 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1510 1516 references to os.linesep, to make the code more
1511 1517 platform-independent. This is also part of the win32 coloring
1512 1518 fixes.
1513 1519
1514 1520 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1515 1521 lines, which actually cause coloring bugs because the length of
1516 1522 the line is very difficult to correctly compute with embedded
1517 1523 escapes. This was the source of all the coloring problems under
1518 1524 Win32. I think that _finally_, Win32 users have a properly
1519 1525 working ipython in all respects. This would never have happened
1520 1526 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1521 1527
1522 1528 2005-01-26 *** Released version 0.6.9
1523 1529
1524 1530 2005-01-25 Fernando Perez <fperez@colorado.edu>
1525 1531
1526 1532 * setup.py: finally, we have a true Windows installer, thanks to
1527 1533 the excellent work of Viktor Ransmayr
1528 1534 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1529 1535 Windows users. The setup routine is quite a bit cleaner thanks to
1530 1536 this, and the post-install script uses the proper functions to
1531 1537 allow a clean de-installation using the standard Windows Control
1532 1538 Panel.
1533 1539
1534 1540 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1535 1541 environment variable under all OSes (including win32) if
1536 1542 available. This will give consistency to win32 users who have set
1537 1543 this variable for any reason. If os.environ['HOME'] fails, the
1538 1544 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1539 1545
1540 1546 2005-01-24 Fernando Perez <fperez@colorado.edu>
1541 1547
1542 1548 * IPython/numutils.py (empty_like): add empty_like(), similar to
1543 1549 zeros_like() but taking advantage of the new empty() Numeric routine.
1544 1550
1545 1551 2005-01-23 *** Released version 0.6.8
1546 1552
1547 1553 2005-01-22 Fernando Perez <fperez@colorado.edu>
1548 1554
1549 1555 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1550 1556 automatic show() calls. After discussing things with JDH, it
1551 1557 turns out there are too many corner cases where this can go wrong.
1552 1558 It's best not to try to be 'too smart', and simply have ipython
1553 1559 reproduce as much as possible the default behavior of a normal
1554 1560 python shell.
1555 1561
1556 1562 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1557 1563 line-splitting regexp and _prefilter() to avoid calling getattr()
1558 1564 on assignments. This closes
1559 1565 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1560 1566 readline uses getattr(), so a simple <TAB> keypress is still
1561 1567 enough to trigger getattr() calls on an object.
1562 1568
1563 1569 2005-01-21 Fernando Perez <fperez@colorado.edu>
1564 1570
1565 1571 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1566 1572 docstring under pylab so it doesn't mask the original.
1567 1573
1568 1574 2005-01-21 *** Released version 0.6.7
1569 1575
1570 1576 2005-01-21 Fernando Perez <fperez@colorado.edu>
1571 1577
1572 1578 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1573 1579 signal handling for win32 users in multithreaded mode.
1574 1580
1575 1581 2005-01-17 Fernando Perez <fperez@colorado.edu>
1576 1582
1577 1583 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1578 1584 instances with no __init__. After a crash report by Norbert Nemec
1579 1585 <Norbert-AT-nemec-online.de>.
1580 1586
1581 1587 2005-01-14 Fernando Perez <fperez@colorado.edu>
1582 1588
1583 1589 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1584 1590 names for verbose exceptions, when multiple dotted names and the
1585 1591 'parent' object were present on the same line.
1586 1592
1587 1593 2005-01-11 Fernando Perez <fperez@colorado.edu>
1588 1594
1589 1595 * IPython/genutils.py (flag_calls): new utility to trap and flag
1590 1596 calls in functions. I need it to clean up matplotlib support.
1591 1597 Also removed some deprecated code in genutils.
1592 1598
1593 1599 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1594 1600 that matplotlib scripts called with %run, which don't call show()
1595 1601 themselves, still have their plotting windows open.
1596 1602
1597 1603 2005-01-05 Fernando Perez <fperez@colorado.edu>
1598 1604
1599 1605 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1600 1606 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1601 1607
1602 1608 2004-12-19 Fernando Perez <fperez@colorado.edu>
1603 1609
1604 1610 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1605 1611 parent_runcode, which was an eyesore. The same result can be
1606 1612 obtained with Python's regular superclass mechanisms.
1607 1613
1608 1614 2004-12-17 Fernando Perez <fperez@colorado.edu>
1609 1615
1610 1616 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1611 1617 reported by Prabhu.
1612 1618 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1613 1619 sys.stderr) instead of explicitly calling sys.stderr. This helps
1614 1620 maintain our I/O abstractions clean, for future GUI embeddings.
1615 1621
1616 1622 * IPython/genutils.py (info): added new utility for sys.stderr
1617 1623 unified info message handling (thin wrapper around warn()).
1618 1624
1619 1625 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1620 1626 composite (dotted) names on verbose exceptions.
1621 1627 (VerboseTB.nullrepr): harden against another kind of errors which
1622 1628 Python's inspect module can trigger, and which were crashing
1623 1629 IPython. Thanks to a report by Marco Lombardi
1624 1630 <mlombard-AT-ma010192.hq.eso.org>.
1625 1631
1626 1632 2004-12-13 *** Released version 0.6.6
1627 1633
1628 1634 2004-12-12 Fernando Perez <fperez@colorado.edu>
1629 1635
1630 1636 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1631 1637 generated by pygtk upon initialization if it was built without
1632 1638 threads (for matplotlib users). After a crash reported by
1633 1639 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1634 1640
1635 1641 * IPython/ipmaker.py (make_IPython): fix small bug in the
1636 1642 import_some parameter for multiple imports.
1637 1643
1638 1644 * IPython/iplib.py (ipmagic): simplified the interface of
1639 1645 ipmagic() to take a single string argument, just as it would be
1640 1646 typed at the IPython cmd line.
1641 1647 (ipalias): Added new ipalias() with an interface identical to
1642 1648 ipmagic(). This completes exposing a pure python interface to the
1643 1649 alias and magic system, which can be used in loops or more complex
1644 1650 code where IPython's automatic line mangling is not active.
1645 1651
1646 1652 * IPython/genutils.py (timing): changed interface of timing to
1647 1653 simply run code once, which is the most common case. timings()
1648 1654 remains unchanged, for the cases where you want multiple runs.
1649 1655
1650 1656 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1651 1657 bug where Python2.2 crashes with exec'ing code which does not end
1652 1658 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1653 1659 before.
1654 1660
1655 1661 2004-12-10 Fernando Perez <fperez@colorado.edu>
1656 1662
1657 1663 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1658 1664 -t to -T, to accomodate the new -t flag in %run (the %run and
1659 1665 %prun options are kind of intermixed, and it's not easy to change
1660 1666 this with the limitations of python's getopt).
1661 1667
1662 1668 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1663 1669 the execution of scripts. It's not as fine-tuned as timeit.py,
1664 1670 but it works from inside ipython (and under 2.2, which lacks
1665 1671 timeit.py). Optionally a number of runs > 1 can be given for
1666 1672 timing very short-running code.
1667 1673
1668 1674 * IPython/genutils.py (uniq_stable): new routine which returns a
1669 1675 list of unique elements in any iterable, but in stable order of
1670 1676 appearance. I needed this for the ultraTB fixes, and it's a handy
1671 1677 utility.
1672 1678
1673 1679 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1674 1680 dotted names in Verbose exceptions. This had been broken since
1675 1681 the very start, now x.y will properly be printed in a Verbose
1676 1682 traceback, instead of x being shown and y appearing always as an
1677 1683 'undefined global'. Getting this to work was a bit tricky,
1678 1684 because by default python tokenizers are stateless. Saved by
1679 1685 python's ability to easily add a bit of state to an arbitrary
1680 1686 function (without needing to build a full-blown callable object).
1681 1687
1682 1688 Also big cleanup of this code, which had horrendous runtime
1683 1689 lookups of zillions of attributes for colorization. Moved all
1684 1690 this code into a few templates, which make it cleaner and quicker.
1685 1691
1686 1692 Printout quality was also improved for Verbose exceptions: one
1687 1693 variable per line, and memory addresses are printed (this can be
1688 1694 quite handy in nasty debugging situations, which is what Verbose
1689 1695 is for).
1690 1696
1691 1697 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1692 1698 the command line as scripts to be loaded by embedded instances.
1693 1699 Doing so has the potential for an infinite recursion if there are
1694 1700 exceptions thrown in the process. This fixes a strange crash
1695 1701 reported by Philippe MULLER <muller-AT-irit.fr>.
1696 1702
1697 1703 2004-12-09 Fernando Perez <fperez@colorado.edu>
1698 1704
1699 1705 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1700 1706 to reflect new names in matplotlib, which now expose the
1701 1707 matlab-compatible interface via a pylab module instead of the
1702 1708 'matlab' name. The new code is backwards compatible, so users of
1703 1709 all matplotlib versions are OK. Patch by J. Hunter.
1704 1710
1705 1711 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1706 1712 of __init__ docstrings for instances (class docstrings are already
1707 1713 automatically printed). Instances with customized docstrings
1708 1714 (indep. of the class) are also recognized and all 3 separate
1709 1715 docstrings are printed (instance, class, constructor). After some
1710 1716 comments/suggestions by J. Hunter.
1711 1717
1712 1718 2004-12-05 Fernando Perez <fperez@colorado.edu>
1713 1719
1714 1720 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1715 1721 warnings when tab-completion fails and triggers an exception.
1716 1722
1717 1723 2004-12-03 Fernando Perez <fperez@colorado.edu>
1718 1724
1719 1725 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1720 1726 be triggered when using 'run -p'. An incorrect option flag was
1721 1727 being set ('d' instead of 'D').
1722 1728 (manpage): fix missing escaped \- sign.
1723 1729
1724 1730 2004-11-30 *** Released version 0.6.5
1725 1731
1726 1732 2004-11-30 Fernando Perez <fperez@colorado.edu>
1727 1733
1728 1734 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1729 1735 setting with -d option.
1730 1736
1731 1737 * setup.py (docfiles): Fix problem where the doc glob I was using
1732 1738 was COMPLETELY BROKEN. It was giving the right files by pure
1733 1739 accident, but failed once I tried to include ipython.el. Note:
1734 1740 glob() does NOT allow you to do exclusion on multiple endings!
1735 1741
1736 1742 2004-11-29 Fernando Perez <fperez@colorado.edu>
1737 1743
1738 1744 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1739 1745 the manpage as the source. Better formatting & consistency.
1740 1746
1741 1747 * IPython/Magic.py (magic_run): Added new -d option, to run
1742 1748 scripts under the control of the python pdb debugger. Note that
1743 1749 this required changing the %prun option -d to -D, to avoid a clash
1744 1750 (since %run must pass options to %prun, and getopt is too dumb to
1745 1751 handle options with string values with embedded spaces). Thanks
1746 1752 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1747 1753 (magic_who_ls): added type matching to %who and %whos, so that one
1748 1754 can filter their output to only include variables of certain
1749 1755 types. Another suggestion by Matthew.
1750 1756 (magic_whos): Added memory summaries in kb and Mb for arrays.
1751 1757 (magic_who): Improve formatting (break lines every 9 vars).
1752 1758
1753 1759 2004-11-28 Fernando Perez <fperez@colorado.edu>
1754 1760
1755 1761 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1756 1762 cache when empty lines were present.
1757 1763
1758 1764 2004-11-24 Fernando Perez <fperez@colorado.edu>
1759 1765
1760 1766 * IPython/usage.py (__doc__): document the re-activated threading
1761 1767 options for WX and GTK.
1762 1768
1763 1769 2004-11-23 Fernando Perez <fperez@colorado.edu>
1764 1770
1765 1771 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1766 1772 the -wthread and -gthread options, along with a new -tk one to try
1767 1773 and coordinate Tk threading with wx/gtk. The tk support is very
1768 1774 platform dependent, since it seems to require Tcl and Tk to be
1769 1775 built with threads (Fedora1/2 appears NOT to have it, but in
1770 1776 Prabhu's Debian boxes it works OK). But even with some Tk
1771 1777 limitations, this is a great improvement.
1772 1778
1773 1779 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1774 1780 info in user prompts. Patch by Prabhu.
1775 1781
1776 1782 2004-11-18 Fernando Perez <fperez@colorado.edu>
1777 1783
1778 1784 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1779 1785 EOFErrors and bail, to avoid infinite loops if a non-terminating
1780 1786 file is fed into ipython. Patch submitted in issue 19 by user,
1781 1787 many thanks.
1782 1788
1783 1789 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1784 1790 autoquote/parens in continuation prompts, which can cause lots of
1785 1791 problems. Closes roundup issue 20.
1786 1792
1787 1793 2004-11-17 Fernando Perez <fperez@colorado.edu>
1788 1794
1789 1795 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1790 1796 reported as debian bug #280505. I'm not sure my local changelog
1791 1797 entry has the proper debian format (Jack?).
1792 1798
1793 1799 2004-11-08 *** Released version 0.6.4
1794 1800
1795 1801 2004-11-08 Fernando Perez <fperez@colorado.edu>
1796 1802
1797 1803 * IPython/iplib.py (init_readline): Fix exit message for Windows
1798 1804 when readline is active. Thanks to a report by Eric Jones
1799 1805 <eric-AT-enthought.com>.
1800 1806
1801 1807 2004-11-07 Fernando Perez <fperez@colorado.edu>
1802 1808
1803 1809 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1804 1810 sometimes seen by win2k/cygwin users.
1805 1811
1806 1812 2004-11-06 Fernando Perez <fperez@colorado.edu>
1807 1813
1808 1814 * IPython/iplib.py (interact): Change the handling of %Exit from
1809 1815 trying to propagate a SystemExit to an internal ipython flag.
1810 1816 This is less elegant than using Python's exception mechanism, but
1811 1817 I can't get that to work reliably with threads, so under -pylab
1812 1818 %Exit was hanging IPython. Cross-thread exception handling is
1813 1819 really a bitch. Thaks to a bug report by Stephen Walton
1814 1820 <stephen.walton-AT-csun.edu>.
1815 1821
1816 1822 2004-11-04 Fernando Perez <fperez@colorado.edu>
1817 1823
1818 1824 * IPython/iplib.py (raw_input_original): store a pointer to the
1819 1825 true raw_input to harden against code which can modify it
1820 1826 (wx.py.PyShell does this and would otherwise crash ipython).
1821 1827 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1822 1828
1823 1829 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1824 1830 Ctrl-C problem, which does not mess up the input line.
1825 1831
1826 1832 2004-11-03 Fernando Perez <fperez@colorado.edu>
1827 1833
1828 1834 * IPython/Release.py: Changed licensing to BSD, in all files.
1829 1835 (name): lowercase name for tarball/RPM release.
1830 1836
1831 1837 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1832 1838 use throughout ipython.
1833 1839
1834 1840 * IPython/Magic.py (Magic._ofind): Switch to using the new
1835 1841 OInspect.getdoc() function.
1836 1842
1837 1843 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1838 1844 of the line currently being canceled via Ctrl-C. It's extremely
1839 1845 ugly, but I don't know how to do it better (the problem is one of
1840 1846 handling cross-thread exceptions).
1841 1847
1842 1848 2004-10-28 Fernando Perez <fperez@colorado.edu>
1843 1849
1844 1850 * IPython/Shell.py (signal_handler): add signal handlers to trap
1845 1851 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1846 1852 report by Francesc Alted.
1847 1853
1848 1854 2004-10-21 Fernando Perez <fperez@colorado.edu>
1849 1855
1850 1856 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1851 1857 to % for pysh syntax extensions.
1852 1858
1853 1859 2004-10-09 Fernando Perez <fperez@colorado.edu>
1854 1860
1855 1861 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1856 1862 arrays to print a more useful summary, without calling str(arr).
1857 1863 This avoids the problem of extremely lengthy computations which
1858 1864 occur if arr is large, and appear to the user as a system lockup
1859 1865 with 100% cpu activity. After a suggestion by Kristian Sandberg
1860 1866 <Kristian.Sandberg@colorado.edu>.
1861 1867 (Magic.__init__): fix bug in global magic escapes not being
1862 1868 correctly set.
1863 1869
1864 1870 2004-10-08 Fernando Perez <fperez@colorado.edu>
1865 1871
1866 1872 * IPython/Magic.py (__license__): change to absolute imports of
1867 1873 ipython's own internal packages, to start adapting to the absolute
1868 1874 import requirement of PEP-328.
1869 1875
1870 1876 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1871 1877 files, and standardize author/license marks through the Release
1872 1878 module instead of having per/file stuff (except for files with
1873 1879 particular licenses, like the MIT/PSF-licensed codes).
1874 1880
1875 1881 * IPython/Debugger.py: remove dead code for python 2.1
1876 1882
1877 1883 2004-10-04 Fernando Perez <fperez@colorado.edu>
1878 1884
1879 1885 * IPython/iplib.py (ipmagic): New function for accessing magics
1880 1886 via a normal python function call.
1881 1887
1882 1888 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1883 1889 from '@' to '%', to accomodate the new @decorator syntax of python
1884 1890 2.4.
1885 1891
1886 1892 2004-09-29 Fernando Perez <fperez@colorado.edu>
1887 1893
1888 1894 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1889 1895 matplotlib.use to prevent running scripts which try to switch
1890 1896 interactive backends from within ipython. This will just crash
1891 1897 the python interpreter, so we can't allow it (but a detailed error
1892 1898 is given to the user).
1893 1899
1894 1900 2004-09-28 Fernando Perez <fperez@colorado.edu>
1895 1901
1896 1902 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1897 1903 matplotlib-related fixes so that using @run with non-matplotlib
1898 1904 scripts doesn't pop up spurious plot windows. This requires
1899 1905 matplotlib >= 0.63, where I had to make some changes as well.
1900 1906
1901 1907 * IPython/ipmaker.py (make_IPython): update version requirement to
1902 1908 python 2.2.
1903 1909
1904 1910 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1905 1911 banner arg for embedded customization.
1906 1912
1907 1913 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1908 1914 explicit uses of __IP as the IPython's instance name. Now things
1909 1915 are properly handled via the shell.name value. The actual code
1910 1916 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1911 1917 is much better than before. I'll clean things completely when the
1912 1918 magic stuff gets a real overhaul.
1913 1919
1914 1920 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1915 1921 minor changes to debian dir.
1916 1922
1917 1923 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1918 1924 pointer to the shell itself in the interactive namespace even when
1919 1925 a user-supplied dict is provided. This is needed for embedding
1920 1926 purposes (found by tests with Michel Sanner).
1921 1927
1922 1928 2004-09-27 Fernando Perez <fperez@colorado.edu>
1923 1929
1924 1930 * IPython/UserConfig/ipythonrc: remove []{} from
1925 1931 readline_remove_delims, so that things like [modname.<TAB> do
1926 1932 proper completion. This disables [].TAB, but that's a less common
1927 1933 case than module names in list comprehensions, for example.
1928 1934 Thanks to a report by Andrea Riciputi.
1929 1935
1930 1936 2004-09-09 Fernando Perez <fperez@colorado.edu>
1931 1937
1932 1938 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1933 1939 blocking problems in win32 and osx. Fix by John.
1934 1940
1935 1941 2004-09-08 Fernando Perez <fperez@colorado.edu>
1936 1942
1937 1943 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1938 1944 for Win32 and OSX. Fix by John Hunter.
1939 1945
1940 1946 2004-08-30 *** Released version 0.6.3
1941 1947
1942 1948 2004-08-30 Fernando Perez <fperez@colorado.edu>
1943 1949
1944 1950 * setup.py (isfile): Add manpages to list of dependent files to be
1945 1951 updated.
1946 1952
1947 1953 2004-08-27 Fernando Perez <fperez@colorado.edu>
1948 1954
1949 1955 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1950 1956 for now. They don't really work with standalone WX/GTK code
1951 1957 (though matplotlib IS working fine with both of those backends).
1952 1958 This will neeed much more testing. I disabled most things with
1953 1959 comments, so turning it back on later should be pretty easy.
1954 1960
1955 1961 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1956 1962 autocalling of expressions like r'foo', by modifying the line
1957 1963 split regexp. Closes
1958 1964 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1959 1965 Riley <ipythonbugs-AT-sabi.net>.
1960 1966 (InteractiveShell.mainloop): honor --nobanner with banner
1961 1967 extensions.
1962 1968
1963 1969 * IPython/Shell.py: Significant refactoring of all classes, so
1964 1970 that we can really support ALL matplotlib backends and threading
1965 1971 models (John spotted a bug with Tk which required this). Now we
1966 1972 should support single-threaded, WX-threads and GTK-threads, both
1967 1973 for generic code and for matplotlib.
1968 1974
1969 1975 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1970 1976 -pylab, to simplify things for users. Will also remove the pylab
1971 1977 profile, since now all of matplotlib configuration is directly
1972 1978 handled here. This also reduces startup time.
1973 1979
1974 1980 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1975 1981 shell wasn't being correctly called. Also in IPShellWX.
1976 1982
1977 1983 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1978 1984 fine-tune banner.
1979 1985
1980 1986 * IPython/numutils.py (spike): Deprecate these spike functions,
1981 1987 delete (long deprecated) gnuplot_exec handler.
1982 1988
1983 1989 2004-08-26 Fernando Perez <fperez@colorado.edu>
1984 1990
1985 1991 * ipython.1: Update for threading options, plus some others which
1986 1992 were missing.
1987 1993
1988 1994 * IPython/ipmaker.py (__call__): Added -wthread option for
1989 1995 wxpython thread handling. Make sure threading options are only
1990 1996 valid at the command line.
1991 1997
1992 1998 * scripts/ipython: moved shell selection into a factory function
1993 1999 in Shell.py, to keep the starter script to a minimum.
1994 2000
1995 2001 2004-08-25 Fernando Perez <fperez@colorado.edu>
1996 2002
1997 2003 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1998 2004 John. Along with some recent changes he made to matplotlib, the
1999 2005 next versions of both systems should work very well together.
2000 2006
2001 2007 2004-08-24 Fernando Perez <fperez@colorado.edu>
2002 2008
2003 2009 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2004 2010 tried to switch the profiling to using hotshot, but I'm getting
2005 2011 strange errors from prof.runctx() there. I may be misreading the
2006 2012 docs, but it looks weird. For now the profiling code will
2007 2013 continue to use the standard profiler.
2008 2014
2009 2015 2004-08-23 Fernando Perez <fperez@colorado.edu>
2010 2016
2011 2017 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2012 2018 threaded shell, by John Hunter. It's not quite ready yet, but
2013 2019 close.
2014 2020
2015 2021 2004-08-22 Fernando Perez <fperez@colorado.edu>
2016 2022
2017 2023 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2018 2024 in Magic and ultraTB.
2019 2025
2020 2026 * ipython.1: document threading options in manpage.
2021 2027
2022 2028 * scripts/ipython: Changed name of -thread option to -gthread,
2023 2029 since this is GTK specific. I want to leave the door open for a
2024 2030 -wthread option for WX, which will most likely be necessary. This
2025 2031 change affects usage and ipmaker as well.
2026 2032
2027 2033 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2028 2034 handle the matplotlib shell issues. Code by John Hunter
2029 2035 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2030 2036 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2031 2037 broken (and disabled for end users) for now, but it puts the
2032 2038 infrastructure in place.
2033 2039
2034 2040 2004-08-21 Fernando Perez <fperez@colorado.edu>
2035 2041
2036 2042 * ipythonrc-pylab: Add matplotlib support.
2037 2043
2038 2044 * matplotlib_config.py: new files for matplotlib support, part of
2039 2045 the pylab profile.
2040 2046
2041 2047 * IPython/usage.py (__doc__): documented the threading options.
2042 2048
2043 2049 2004-08-20 Fernando Perez <fperez@colorado.edu>
2044 2050
2045 2051 * ipython: Modified the main calling routine to handle the -thread
2046 2052 and -mpthread options. This needs to be done as a top-level hack,
2047 2053 because it determines which class to instantiate for IPython
2048 2054 itself.
2049 2055
2050 2056 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2051 2057 classes to support multithreaded GTK operation without blocking,
2052 2058 and matplotlib with all backends. This is a lot of still very
2053 2059 experimental code, and threads are tricky. So it may still have a
2054 2060 few rough edges... This code owes a lot to
2055 2061 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2056 2062 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2057 2063 to John Hunter for all the matplotlib work.
2058 2064
2059 2065 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2060 2066 options for gtk thread and matplotlib support.
2061 2067
2062 2068 2004-08-16 Fernando Perez <fperez@colorado.edu>
2063 2069
2064 2070 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2065 2071 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2066 2072 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2067 2073
2068 2074 2004-08-11 Fernando Perez <fperez@colorado.edu>
2069 2075
2070 2076 * setup.py (isfile): Fix build so documentation gets updated for
2071 2077 rpms (it was only done for .tgz builds).
2072 2078
2073 2079 2004-08-10 Fernando Perez <fperez@colorado.edu>
2074 2080
2075 2081 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2076 2082
2077 2083 * iplib.py : Silence syntax error exceptions in tab-completion.
2078 2084
2079 2085 2004-08-05 Fernando Perez <fperez@colorado.edu>
2080 2086
2081 2087 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2082 2088 'color off' mark for continuation prompts. This was causing long
2083 2089 continuation lines to mis-wrap.
2084 2090
2085 2091 2004-08-01 Fernando Perez <fperez@colorado.edu>
2086 2092
2087 2093 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2088 2094 for building ipython to be a parameter. All this is necessary
2089 2095 right now to have a multithreaded version, but this insane
2090 2096 non-design will be cleaned up soon. For now, it's a hack that
2091 2097 works.
2092 2098
2093 2099 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2094 2100 args in various places. No bugs so far, but it's a dangerous
2095 2101 practice.
2096 2102
2097 2103 2004-07-31 Fernando Perez <fperez@colorado.edu>
2098 2104
2099 2105 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2100 2106 fix completion of files with dots in their names under most
2101 2107 profiles (pysh was OK because the completion order is different).
2102 2108
2103 2109 2004-07-27 Fernando Perez <fperez@colorado.edu>
2104 2110
2105 2111 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2106 2112 keywords manually, b/c the one in keyword.py was removed in python
2107 2113 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2108 2114 This is NOT a bug under python 2.3 and earlier.
2109 2115
2110 2116 2004-07-26 Fernando Perez <fperez@colorado.edu>
2111 2117
2112 2118 * IPython/ultraTB.py (VerboseTB.text): Add another
2113 2119 linecache.checkcache() call to try to prevent inspect.py from
2114 2120 crashing under python 2.3. I think this fixes
2115 2121 http://www.scipy.net/roundup/ipython/issue17.
2116 2122
2117 2123 2004-07-26 *** Released version 0.6.2
2118 2124
2119 2125 2004-07-26 Fernando Perez <fperez@colorado.edu>
2120 2126
2121 2127 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2122 2128 fail for any number.
2123 2129 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2124 2130 empty bookmarks.
2125 2131
2126 2132 2004-07-26 *** Released version 0.6.1
2127 2133
2128 2134 2004-07-26 Fernando Perez <fperez@colorado.edu>
2129 2135
2130 2136 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2131 2137
2132 2138 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2133 2139 escaping '()[]{}' in filenames.
2134 2140
2135 2141 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2136 2142 Python 2.2 users who lack a proper shlex.split.
2137 2143
2138 2144 2004-07-19 Fernando Perez <fperez@colorado.edu>
2139 2145
2140 2146 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2141 2147 for reading readline's init file. I follow the normal chain:
2142 2148 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2143 2149 report by Mike Heeter. This closes
2144 2150 http://www.scipy.net/roundup/ipython/issue16.
2145 2151
2146 2152 2004-07-18 Fernando Perez <fperez@colorado.edu>
2147 2153
2148 2154 * IPython/iplib.py (__init__): Add better handling of '\' under
2149 2155 Win32 for filenames. After a patch by Ville.
2150 2156
2151 2157 2004-07-17 Fernando Perez <fperez@colorado.edu>
2152 2158
2153 2159 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2154 2160 autocalling would be triggered for 'foo is bar' if foo is
2155 2161 callable. I also cleaned up the autocall detection code to use a
2156 2162 regexp, which is faster. Bug reported by Alexander Schmolck.
2157 2163
2158 2164 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2159 2165 '?' in them would confuse the help system. Reported by Alex
2160 2166 Schmolck.
2161 2167
2162 2168 2004-07-16 Fernando Perez <fperez@colorado.edu>
2163 2169
2164 2170 * IPython/GnuplotInteractive.py (__all__): added plot2.
2165 2171
2166 2172 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2167 2173 plotting dictionaries, lists or tuples of 1d arrays.
2168 2174
2169 2175 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2170 2176 optimizations.
2171 2177
2172 2178 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2173 2179 the information which was there from Janko's original IPP code:
2174 2180
2175 2181 03.05.99 20:53 porto.ifm.uni-kiel.de
2176 2182 --Started changelog.
2177 2183 --make clear do what it say it does
2178 2184 --added pretty output of lines from inputcache
2179 2185 --Made Logger a mixin class, simplifies handling of switches
2180 2186 --Added own completer class. .string<TAB> expands to last history
2181 2187 line which starts with string. The new expansion is also present
2182 2188 with Ctrl-r from the readline library. But this shows, who this
2183 2189 can be done for other cases.
2184 2190 --Added convention that all shell functions should accept a
2185 2191 parameter_string This opens the door for different behaviour for
2186 2192 each function. @cd is a good example of this.
2187 2193
2188 2194 04.05.99 12:12 porto.ifm.uni-kiel.de
2189 2195 --added logfile rotation
2190 2196 --added new mainloop method which freezes first the namespace
2191 2197
2192 2198 07.05.99 21:24 porto.ifm.uni-kiel.de
2193 2199 --added the docreader classes. Now there is a help system.
2194 2200 -This is only a first try. Currently it's not easy to put new
2195 2201 stuff in the indices. But this is the way to go. Info would be
2196 2202 better, but HTML is every where and not everybody has an info
2197 2203 system installed and it's not so easy to change html-docs to info.
2198 2204 --added global logfile option
2199 2205 --there is now a hook for object inspection method pinfo needs to
2200 2206 be provided for this. Can be reached by two '??'.
2201 2207
2202 2208 08.05.99 20:51 porto.ifm.uni-kiel.de
2203 2209 --added a README
2204 2210 --bug in rc file. Something has changed so functions in the rc
2205 2211 file need to reference the shell and not self. Not clear if it's a
2206 2212 bug or feature.
2207 2213 --changed rc file for new behavior
2208 2214
2209 2215 2004-07-15 Fernando Perez <fperez@colorado.edu>
2210 2216
2211 2217 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2212 2218 cache was falling out of sync in bizarre manners when multi-line
2213 2219 input was present. Minor optimizations and cleanup.
2214 2220
2215 2221 (Logger): Remove old Changelog info for cleanup. This is the
2216 2222 information which was there from Janko's original code:
2217 2223
2218 2224 Changes to Logger: - made the default log filename a parameter
2219 2225
2220 2226 - put a check for lines beginning with !@? in log(). Needed
2221 2227 (even if the handlers properly log their lines) for mid-session
2222 2228 logging activation to work properly. Without this, lines logged
2223 2229 in mid session, which get read from the cache, would end up
2224 2230 'bare' (with !@? in the open) in the log. Now they are caught
2225 2231 and prepended with a #.
2226 2232
2227 2233 * IPython/iplib.py (InteractiveShell.init_readline): added check
2228 2234 in case MagicCompleter fails to be defined, so we don't crash.
2229 2235
2230 2236 2004-07-13 Fernando Perez <fperez@colorado.edu>
2231 2237
2232 2238 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2233 2239 of EPS if the requested filename ends in '.eps'.
2234 2240
2235 2241 2004-07-04 Fernando Perez <fperez@colorado.edu>
2236 2242
2237 2243 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2238 2244 escaping of quotes when calling the shell.
2239 2245
2240 2246 2004-07-02 Fernando Perez <fperez@colorado.edu>
2241 2247
2242 2248 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2243 2249 gettext not working because we were clobbering '_'. Fixes
2244 2250 http://www.scipy.net/roundup/ipython/issue6.
2245 2251
2246 2252 2004-07-01 Fernando Perez <fperez@colorado.edu>
2247 2253
2248 2254 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2249 2255 into @cd. Patch by Ville.
2250 2256
2251 2257 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2252 2258 new function to store things after ipmaker runs. Patch by Ville.
2253 2259 Eventually this will go away once ipmaker is removed and the class
2254 2260 gets cleaned up, but for now it's ok. Key functionality here is
2255 2261 the addition of the persistent storage mechanism, a dict for
2256 2262 keeping data across sessions (for now just bookmarks, but more can
2257 2263 be implemented later).
2258 2264
2259 2265 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2260 2266 persistent across sections. Patch by Ville, I modified it
2261 2267 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2262 2268 added a '-l' option to list all bookmarks.
2263 2269
2264 2270 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2265 2271 center for cleanup. Registered with atexit.register(). I moved
2266 2272 here the old exit_cleanup(). After a patch by Ville.
2267 2273
2268 2274 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2269 2275 characters in the hacked shlex_split for python 2.2.
2270 2276
2271 2277 * IPython/iplib.py (file_matches): more fixes to filenames with
2272 2278 whitespace in them. It's not perfect, but limitations in python's
2273 2279 readline make it impossible to go further.
2274 2280
2275 2281 2004-06-29 Fernando Perez <fperez@colorado.edu>
2276 2282
2277 2283 * IPython/iplib.py (file_matches): escape whitespace correctly in
2278 2284 filename completions. Bug reported by Ville.
2279 2285
2280 2286 2004-06-28 Fernando Perez <fperez@colorado.edu>
2281 2287
2282 2288 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2283 2289 the history file will be called 'history-PROFNAME' (or just
2284 2290 'history' if no profile is loaded). I was getting annoyed at
2285 2291 getting my Numerical work history clobbered by pysh sessions.
2286 2292
2287 2293 * IPython/iplib.py (InteractiveShell.__init__): Internal
2288 2294 getoutputerror() function so that we can honor the system_verbose
2289 2295 flag for _all_ system calls. I also added escaping of #
2290 2296 characters here to avoid confusing Itpl.
2291 2297
2292 2298 * IPython/Magic.py (shlex_split): removed call to shell in
2293 2299 parse_options and replaced it with shlex.split(). The annoying
2294 2300 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2295 2301 to backport it from 2.3, with several frail hacks (the shlex
2296 2302 module is rather limited in 2.2). Thanks to a suggestion by Ville
2297 2303 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2298 2304 problem.
2299 2305
2300 2306 (Magic.magic_system_verbose): new toggle to print the actual
2301 2307 system calls made by ipython. Mainly for debugging purposes.
2302 2308
2303 2309 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2304 2310 doesn't support persistence. Reported (and fix suggested) by
2305 2311 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2306 2312
2307 2313 2004-06-26 Fernando Perez <fperez@colorado.edu>
2308 2314
2309 2315 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2310 2316 continue prompts.
2311 2317
2312 2318 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2313 2319 function (basically a big docstring) and a few more things here to
2314 2320 speedup startup. pysh.py is now very lightweight. We want because
2315 2321 it gets execfile'd, while InterpreterExec gets imported, so
2316 2322 byte-compilation saves time.
2317 2323
2318 2324 2004-06-25 Fernando Perez <fperez@colorado.edu>
2319 2325
2320 2326 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2321 2327 -NUM', which was recently broken.
2322 2328
2323 2329 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2324 2330 in multi-line input (but not !!, which doesn't make sense there).
2325 2331
2326 2332 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2327 2333 It's just too useful, and people can turn it off in the less
2328 2334 common cases where it's a problem.
2329 2335
2330 2336 2004-06-24 Fernando Perez <fperez@colorado.edu>
2331 2337
2332 2338 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2333 2339 special syntaxes (like alias calling) is now allied in multi-line
2334 2340 input. This is still _very_ experimental, but it's necessary for
2335 2341 efficient shell usage combining python looping syntax with system
2336 2342 calls. For now it's restricted to aliases, I don't think it
2337 2343 really even makes sense to have this for magics.
2338 2344
2339 2345 2004-06-23 Fernando Perez <fperez@colorado.edu>
2340 2346
2341 2347 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2342 2348 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2343 2349
2344 2350 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2345 2351 extensions under Windows (after code sent by Gary Bishop). The
2346 2352 extensions considered 'executable' are stored in IPython's rc
2347 2353 structure as win_exec_ext.
2348 2354
2349 2355 * IPython/genutils.py (shell): new function, like system() but
2350 2356 without return value. Very useful for interactive shell work.
2351 2357
2352 2358 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2353 2359 delete aliases.
2354 2360
2355 2361 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2356 2362 sure that the alias table doesn't contain python keywords.
2357 2363
2358 2364 2004-06-21 Fernando Perez <fperez@colorado.edu>
2359 2365
2360 2366 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2361 2367 non-existent items are found in $PATH. Reported by Thorsten.
2362 2368
2363 2369 2004-06-20 Fernando Perez <fperez@colorado.edu>
2364 2370
2365 2371 * IPython/iplib.py (complete): modified the completer so that the
2366 2372 order of priorities can be easily changed at runtime.
2367 2373
2368 2374 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2369 2375 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2370 2376
2371 2377 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2372 2378 expand Python variables prepended with $ in all system calls. The
2373 2379 same was done to InteractiveShell.handle_shell_escape. Now all
2374 2380 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2375 2381 expansion of python variables and expressions according to the
2376 2382 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2377 2383
2378 2384 Though PEP-215 has been rejected, a similar (but simpler) one
2379 2385 seems like it will go into Python 2.4, PEP-292 -
2380 2386 http://www.python.org/peps/pep-0292.html.
2381 2387
2382 2388 I'll keep the full syntax of PEP-215, since IPython has since the
2383 2389 start used Ka-Ping Yee's reference implementation discussed there
2384 2390 (Itpl), and I actually like the powerful semantics it offers.
2385 2391
2386 2392 In order to access normal shell variables, the $ has to be escaped
2387 2393 via an extra $. For example:
2388 2394
2389 2395 In [7]: PATH='a python variable'
2390 2396
2391 2397 In [8]: !echo $PATH
2392 2398 a python variable
2393 2399
2394 2400 In [9]: !echo $$PATH
2395 2401 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2396 2402
2397 2403 (Magic.parse_options): escape $ so the shell doesn't evaluate
2398 2404 things prematurely.
2399 2405
2400 2406 * IPython/iplib.py (InteractiveShell.call_alias): added the
2401 2407 ability for aliases to expand python variables via $.
2402 2408
2403 2409 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2404 2410 system, now there's a @rehash/@rehashx pair of magics. These work
2405 2411 like the csh rehash command, and can be invoked at any time. They
2406 2412 build a table of aliases to everything in the user's $PATH
2407 2413 (@rehash uses everything, @rehashx is slower but only adds
2408 2414 executable files). With this, the pysh.py-based shell profile can
2409 2415 now simply call rehash upon startup, and full access to all
2410 2416 programs in the user's path is obtained.
2411 2417
2412 2418 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2413 2419 functionality is now fully in place. I removed the old dynamic
2414 2420 code generation based approach, in favor of a much lighter one
2415 2421 based on a simple dict. The advantage is that this allows me to
2416 2422 now have thousands of aliases with negligible cost (unthinkable
2417 2423 with the old system).
2418 2424
2419 2425 2004-06-19 Fernando Perez <fperez@colorado.edu>
2420 2426
2421 2427 * IPython/iplib.py (__init__): extended MagicCompleter class to
2422 2428 also complete (last in priority) on user aliases.
2423 2429
2424 2430 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2425 2431 call to eval.
2426 2432 (ItplNS.__init__): Added a new class which functions like Itpl,
2427 2433 but allows configuring the namespace for the evaluation to occur
2428 2434 in.
2429 2435
2430 2436 2004-06-18 Fernando Perez <fperez@colorado.edu>
2431 2437
2432 2438 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2433 2439 better message when 'exit' or 'quit' are typed (a common newbie
2434 2440 confusion).
2435 2441
2436 2442 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2437 2443 check for Windows users.
2438 2444
2439 2445 * IPython/iplib.py (InteractiveShell.user_setup): removed
2440 2446 disabling of colors for Windows. I'll test at runtime and issue a
2441 2447 warning if Gary's readline isn't found, as to nudge users to
2442 2448 download it.
2443 2449
2444 2450 2004-06-16 Fernando Perez <fperez@colorado.edu>
2445 2451
2446 2452 * IPython/genutils.py (Stream.__init__): changed to print errors
2447 2453 to sys.stderr. I had a circular dependency here. Now it's
2448 2454 possible to run ipython as IDLE's shell (consider this pre-alpha,
2449 2455 since true stdout things end up in the starting terminal instead
2450 2456 of IDLE's out).
2451 2457
2452 2458 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2453 2459 users who haven't # updated their prompt_in2 definitions. Remove
2454 2460 eventually.
2455 2461 (multiple_replace): added credit to original ASPN recipe.
2456 2462
2457 2463 2004-06-15 Fernando Perez <fperez@colorado.edu>
2458 2464
2459 2465 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2460 2466 list of auto-defined aliases.
2461 2467
2462 2468 2004-06-13 Fernando Perez <fperez@colorado.edu>
2463 2469
2464 2470 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2465 2471 install was really requested (so setup.py can be used for other
2466 2472 things under Windows).
2467 2473
2468 2474 2004-06-10 Fernando Perez <fperez@colorado.edu>
2469 2475
2470 2476 * IPython/Logger.py (Logger.create_log): Manually remove any old
2471 2477 backup, since os.remove may fail under Windows. Fixes bug
2472 2478 reported by Thorsten.
2473 2479
2474 2480 2004-06-09 Fernando Perez <fperez@colorado.edu>
2475 2481
2476 2482 * examples/example-embed.py: fixed all references to %n (replaced
2477 2483 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2478 2484 for all examples and the manual as well.
2479 2485
2480 2486 2004-06-08 Fernando Perez <fperez@colorado.edu>
2481 2487
2482 2488 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2483 2489 alignment and color management. All 3 prompt subsystems now
2484 2490 inherit from BasePrompt.
2485 2491
2486 2492 * tools/release: updates for windows installer build and tag rpms
2487 2493 with python version (since paths are fixed).
2488 2494
2489 2495 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2490 2496 which will become eventually obsolete. Also fixed the default
2491 2497 prompt_in2 to use \D, so at least new users start with the correct
2492 2498 defaults.
2493 2499 WARNING: Users with existing ipythonrc files will need to apply
2494 2500 this fix manually!
2495 2501
2496 2502 * setup.py: make windows installer (.exe). This is finally the
2497 2503 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2498 2504 which I hadn't included because it required Python 2.3 (or recent
2499 2505 distutils).
2500 2506
2501 2507 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2502 2508 usage of new '\D' escape.
2503 2509
2504 2510 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2505 2511 lacks os.getuid())
2506 2512 (CachedOutput.set_colors): Added the ability to turn coloring
2507 2513 on/off with @colors even for manually defined prompt colors. It
2508 2514 uses a nasty global, but it works safely and via the generic color
2509 2515 handling mechanism.
2510 2516 (Prompt2.__init__): Introduced new escape '\D' for continuation
2511 2517 prompts. It represents the counter ('\#') as dots.
2512 2518 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2513 2519 need to update their ipythonrc files and replace '%n' with '\D' in
2514 2520 their prompt_in2 settings everywhere. Sorry, but there's
2515 2521 otherwise no clean way to get all prompts to properly align. The
2516 2522 ipythonrc shipped with IPython has been updated.
2517 2523
2518 2524 2004-06-07 Fernando Perez <fperez@colorado.edu>
2519 2525
2520 2526 * setup.py (isfile): Pass local_icons option to latex2html, so the
2521 2527 resulting HTML file is self-contained. Thanks to
2522 2528 dryice-AT-liu.com.cn for the tip.
2523 2529
2524 2530 * pysh.py: I created a new profile 'shell', which implements a
2525 2531 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2526 2532 system shell, nor will it become one anytime soon. It's mainly
2527 2533 meant to illustrate the use of the new flexible bash-like prompts.
2528 2534 I guess it could be used by hardy souls for true shell management,
2529 2535 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2530 2536 profile. This uses the InterpreterExec extension provided by
2531 2537 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2532 2538
2533 2539 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2534 2540 auto-align itself with the length of the previous input prompt
2535 2541 (taking into account the invisible color escapes).
2536 2542 (CachedOutput.__init__): Large restructuring of this class. Now
2537 2543 all three prompts (primary1, primary2, output) are proper objects,
2538 2544 managed by the 'parent' CachedOutput class. The code is still a
2539 2545 bit hackish (all prompts share state via a pointer to the cache),
2540 2546 but it's overall far cleaner than before.
2541 2547
2542 2548 * IPython/genutils.py (getoutputerror): modified to add verbose,
2543 2549 debug and header options. This makes the interface of all getout*
2544 2550 functions uniform.
2545 2551 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2546 2552
2547 2553 * IPython/Magic.py (Magic.default_option): added a function to
2548 2554 allow registering default options for any magic command. This
2549 2555 makes it easy to have profiles which customize the magics globally
2550 2556 for a certain use. The values set through this function are
2551 2557 picked up by the parse_options() method, which all magics should
2552 2558 use to parse their options.
2553 2559
2554 2560 * IPython/genutils.py (warn): modified the warnings framework to
2555 2561 use the Term I/O class. I'm trying to slowly unify all of
2556 2562 IPython's I/O operations to pass through Term.
2557 2563
2558 2564 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2559 2565 the secondary prompt to correctly match the length of the primary
2560 2566 one for any prompt. Now multi-line code will properly line up
2561 2567 even for path dependent prompts, such as the new ones available
2562 2568 via the prompt_specials.
2563 2569
2564 2570 2004-06-06 Fernando Perez <fperez@colorado.edu>
2565 2571
2566 2572 * IPython/Prompts.py (prompt_specials): Added the ability to have
2567 2573 bash-like special sequences in the prompts, which get
2568 2574 automatically expanded. Things like hostname, current working
2569 2575 directory and username are implemented already, but it's easy to
2570 2576 add more in the future. Thanks to a patch by W.J. van der Laan
2571 2577 <gnufnork-AT-hetdigitalegat.nl>
2572 2578 (prompt_specials): Added color support for prompt strings, so
2573 2579 users can define arbitrary color setups for their prompts.
2574 2580
2575 2581 2004-06-05 Fernando Perez <fperez@colorado.edu>
2576 2582
2577 2583 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2578 2584 code to load Gary Bishop's readline and configure it
2579 2585 automatically. Thanks to Gary for help on this.
2580 2586
2581 2587 2004-06-01 Fernando Perez <fperez@colorado.edu>
2582 2588
2583 2589 * IPython/Logger.py (Logger.create_log): fix bug for logging
2584 2590 with no filename (previous fix was incomplete).
2585 2591
2586 2592 2004-05-25 Fernando Perez <fperez@colorado.edu>
2587 2593
2588 2594 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2589 2595 parens would get passed to the shell.
2590 2596
2591 2597 2004-05-20 Fernando Perez <fperez@colorado.edu>
2592 2598
2593 2599 * IPython/Magic.py (Magic.magic_prun): changed default profile
2594 2600 sort order to 'time' (the more common profiling need).
2595 2601
2596 2602 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2597 2603 so that source code shown is guaranteed in sync with the file on
2598 2604 disk (also changed in psource). Similar fix to the one for
2599 2605 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2600 2606 <yann.ledu-AT-noos.fr>.
2601 2607
2602 2608 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2603 2609 with a single option would not be correctly parsed. Closes
2604 2610 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2605 2611 introduced in 0.6.0 (on 2004-05-06).
2606 2612
2607 2613 2004-05-13 *** Released version 0.6.0
2608 2614
2609 2615 2004-05-13 Fernando Perez <fperez@colorado.edu>
2610 2616
2611 2617 * debian/: Added debian/ directory to CVS, so that debian support
2612 2618 is publicly accessible. The debian package is maintained by Jack
2613 2619 Moffit <jack-AT-xiph.org>.
2614 2620
2615 2621 * Documentation: included the notes about an ipython-based system
2616 2622 shell (the hypothetical 'pysh') into the new_design.pdf document,
2617 2623 so that these ideas get distributed to users along with the
2618 2624 official documentation.
2619 2625
2620 2626 2004-05-10 Fernando Perez <fperez@colorado.edu>
2621 2627
2622 2628 * IPython/Logger.py (Logger.create_log): fix recently introduced
2623 2629 bug (misindented line) where logstart would fail when not given an
2624 2630 explicit filename.
2625 2631
2626 2632 2004-05-09 Fernando Perez <fperez@colorado.edu>
2627 2633
2628 2634 * IPython/Magic.py (Magic.parse_options): skip system call when
2629 2635 there are no options to look for. Faster, cleaner for the common
2630 2636 case.
2631 2637
2632 2638 * Documentation: many updates to the manual: describing Windows
2633 2639 support better, Gnuplot updates, credits, misc small stuff. Also
2634 2640 updated the new_design doc a bit.
2635 2641
2636 2642 2004-05-06 *** Released version 0.6.0.rc1
2637 2643
2638 2644 2004-05-06 Fernando Perez <fperez@colorado.edu>
2639 2645
2640 2646 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2641 2647 operations to use the vastly more efficient list/''.join() method.
2642 2648 (FormattedTB.text): Fix
2643 2649 http://www.scipy.net/roundup/ipython/issue12 - exception source
2644 2650 extract not updated after reload. Thanks to Mike Salib
2645 2651 <msalib-AT-mit.edu> for pinning the source of the problem.
2646 2652 Fortunately, the solution works inside ipython and doesn't require
2647 2653 any changes to python proper.
2648 2654
2649 2655 * IPython/Magic.py (Magic.parse_options): Improved to process the
2650 2656 argument list as a true shell would (by actually using the
2651 2657 underlying system shell). This way, all @magics automatically get
2652 2658 shell expansion for variables. Thanks to a comment by Alex
2653 2659 Schmolck.
2654 2660
2655 2661 2004-04-04 Fernando Perez <fperez@colorado.edu>
2656 2662
2657 2663 * IPython/iplib.py (InteractiveShell.interact): Added a special
2658 2664 trap for a debugger quit exception, which is basically impossible
2659 2665 to handle by normal mechanisms, given what pdb does to the stack.
2660 2666 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2661 2667
2662 2668 2004-04-03 Fernando Perez <fperez@colorado.edu>
2663 2669
2664 2670 * IPython/genutils.py (Term): Standardized the names of the Term
2665 2671 class streams to cin/cout/cerr, following C++ naming conventions
2666 2672 (I can't use in/out/err because 'in' is not a valid attribute
2667 2673 name).
2668 2674
2669 2675 * IPython/iplib.py (InteractiveShell.interact): don't increment
2670 2676 the prompt if there's no user input. By Daniel 'Dang' Griffith
2671 2677 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2672 2678 Francois Pinard.
2673 2679
2674 2680 2004-04-02 Fernando Perez <fperez@colorado.edu>
2675 2681
2676 2682 * IPython/genutils.py (Stream.__init__): Modified to survive at
2677 2683 least importing in contexts where stdin/out/err aren't true file
2678 2684 objects, such as PyCrust (they lack fileno() and mode). However,
2679 2685 the recovery facilities which rely on these things existing will
2680 2686 not work.
2681 2687
2682 2688 2004-04-01 Fernando Perez <fperez@colorado.edu>
2683 2689
2684 2690 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2685 2691 use the new getoutputerror() function, so it properly
2686 2692 distinguishes stdout/err.
2687 2693
2688 2694 * IPython/genutils.py (getoutputerror): added a function to
2689 2695 capture separately the standard output and error of a command.
2690 2696 After a comment from dang on the mailing lists. This code is
2691 2697 basically a modified version of commands.getstatusoutput(), from
2692 2698 the standard library.
2693 2699
2694 2700 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2695 2701 '!!' as a special syntax (shorthand) to access @sx.
2696 2702
2697 2703 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2698 2704 command and return its output as a list split on '\n'.
2699 2705
2700 2706 2004-03-31 Fernando Perez <fperez@colorado.edu>
2701 2707
2702 2708 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2703 2709 method to dictionaries used as FakeModule instances if they lack
2704 2710 it. At least pydoc in python2.3 breaks for runtime-defined
2705 2711 functions without this hack. At some point I need to _really_
2706 2712 understand what FakeModule is doing, because it's a gross hack.
2707 2713 But it solves Arnd's problem for now...
2708 2714
2709 2715 2004-02-27 Fernando Perez <fperez@colorado.edu>
2710 2716
2711 2717 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2712 2718 mode would behave erratically. Also increased the number of
2713 2719 possible logs in rotate mod to 999. Thanks to Rod Holland
2714 2720 <rhh@StructureLABS.com> for the report and fixes.
2715 2721
2716 2722 2004-02-26 Fernando Perez <fperez@colorado.edu>
2717 2723
2718 2724 * IPython/genutils.py (page): Check that the curses module really
2719 2725 has the initscr attribute before trying to use it. For some
2720 2726 reason, the Solaris curses module is missing this. I think this
2721 2727 should be considered a Solaris python bug, but I'm not sure.
2722 2728
2723 2729 2004-01-17 Fernando Perez <fperez@colorado.edu>
2724 2730
2725 2731 * IPython/genutils.py (Stream.__init__): Changes to try to make
2726 2732 ipython robust against stdin/out/err being closed by the user.
2727 2733 This is 'user error' (and blocks a normal python session, at least
2728 2734 the stdout case). However, Ipython should be able to survive such
2729 2735 instances of abuse as gracefully as possible. To simplify the
2730 2736 coding and maintain compatibility with Gary Bishop's Term
2731 2737 contributions, I've made use of classmethods for this. I think
2732 2738 this introduces a dependency on python 2.2.
2733 2739
2734 2740 2004-01-13 Fernando Perez <fperez@colorado.edu>
2735 2741
2736 2742 * IPython/numutils.py (exp_safe): simplified the code a bit and
2737 2743 removed the need for importing the kinds module altogether.
2738 2744
2739 2745 2004-01-06 Fernando Perez <fperez@colorado.edu>
2740 2746
2741 2747 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2742 2748 a magic function instead, after some community feedback. No
2743 2749 special syntax will exist for it, but its name is deliberately
2744 2750 very short.
2745 2751
2746 2752 2003-12-20 Fernando Perez <fperez@colorado.edu>
2747 2753
2748 2754 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2749 2755 new functionality, to automagically assign the result of a shell
2750 2756 command to a variable. I'll solicit some community feedback on
2751 2757 this before making it permanent.
2752 2758
2753 2759 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2754 2760 requested about callables for which inspect couldn't obtain a
2755 2761 proper argspec. Thanks to a crash report sent by Etienne
2756 2762 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2757 2763
2758 2764 2003-12-09 Fernando Perez <fperez@colorado.edu>
2759 2765
2760 2766 * IPython/genutils.py (page): patch for the pager to work across
2761 2767 various versions of Windows. By Gary Bishop.
2762 2768
2763 2769 2003-12-04 Fernando Perez <fperez@colorado.edu>
2764 2770
2765 2771 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2766 2772 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2767 2773 While I tested this and it looks ok, there may still be corner
2768 2774 cases I've missed.
2769 2775
2770 2776 2003-12-01 Fernando Perez <fperez@colorado.edu>
2771 2777
2772 2778 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2773 2779 where a line like 'p,q=1,2' would fail because the automagic
2774 2780 system would be triggered for @p.
2775 2781
2776 2782 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2777 2783 cleanups, code unmodified.
2778 2784
2779 2785 * IPython/genutils.py (Term): added a class for IPython to handle
2780 2786 output. In most cases it will just be a proxy for stdout/err, but
2781 2787 having this allows modifications to be made for some platforms,
2782 2788 such as handling color escapes under Windows. All of this code
2783 2789 was contributed by Gary Bishop, with minor modifications by me.
2784 2790 The actual changes affect many files.
2785 2791
2786 2792 2003-11-30 Fernando Perez <fperez@colorado.edu>
2787 2793
2788 2794 * IPython/iplib.py (file_matches): new completion code, courtesy
2789 2795 of Jeff Collins. This enables filename completion again under
2790 2796 python 2.3, which disabled it at the C level.
2791 2797
2792 2798 2003-11-11 Fernando Perez <fperez@colorado.edu>
2793 2799
2794 2800 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2795 2801 for Numeric.array(map(...)), but often convenient.
2796 2802
2797 2803 2003-11-05 Fernando Perez <fperez@colorado.edu>
2798 2804
2799 2805 * IPython/numutils.py (frange): Changed a call from int() to
2800 2806 int(round()) to prevent a problem reported with arange() in the
2801 2807 numpy list.
2802 2808
2803 2809 2003-10-06 Fernando Perez <fperez@colorado.edu>
2804 2810
2805 2811 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2806 2812 prevent crashes if sys lacks an argv attribute (it happens with
2807 2813 embedded interpreters which build a bare-bones sys module).
2808 2814 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2809 2815
2810 2816 2003-09-24 Fernando Perez <fperez@colorado.edu>
2811 2817
2812 2818 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2813 2819 to protect against poorly written user objects where __getattr__
2814 2820 raises exceptions other than AttributeError. Thanks to a bug
2815 2821 report by Oliver Sander <osander-AT-gmx.de>.
2816 2822
2817 2823 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2818 2824 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2819 2825
2820 2826 2003-09-09 Fernando Perez <fperez@colorado.edu>
2821 2827
2822 2828 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2823 2829 unpacking a list whith a callable as first element would
2824 2830 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2825 2831 Collins.
2826 2832
2827 2833 2003-08-25 *** Released version 0.5.0
2828 2834
2829 2835 2003-08-22 Fernando Perez <fperez@colorado.edu>
2830 2836
2831 2837 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2832 2838 improperly defined user exceptions. Thanks to feedback from Mark
2833 2839 Russell <mrussell-AT-verio.net>.
2834 2840
2835 2841 2003-08-20 Fernando Perez <fperez@colorado.edu>
2836 2842
2837 2843 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2838 2844 printing so that it would print multi-line string forms starting
2839 2845 with a new line. This way the formatting is better respected for
2840 2846 objects which work hard to make nice string forms.
2841 2847
2842 2848 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2843 2849 autocall would overtake data access for objects with both
2844 2850 __getitem__ and __call__.
2845 2851
2846 2852 2003-08-19 *** Released version 0.5.0-rc1
2847 2853
2848 2854 2003-08-19 Fernando Perez <fperez@colorado.edu>
2849 2855
2850 2856 * IPython/deep_reload.py (load_tail): single tiny change here
2851 2857 seems to fix the long-standing bug of dreload() failing to work
2852 2858 for dotted names. But this module is pretty tricky, so I may have
2853 2859 missed some subtlety. Needs more testing!.
2854 2860
2855 2861 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2856 2862 exceptions which have badly implemented __str__ methods.
2857 2863 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2858 2864 which I've been getting reports about from Python 2.3 users. I
2859 2865 wish I had a simple test case to reproduce the problem, so I could
2860 2866 either write a cleaner workaround or file a bug report if
2861 2867 necessary.
2862 2868
2863 2869 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2864 2870 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2865 2871 a bug report by Tjabo Kloppenburg.
2866 2872
2867 2873 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2868 2874 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2869 2875 seems rather unstable. Thanks to a bug report by Tjabo
2870 2876 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2871 2877
2872 2878 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2873 2879 this out soon because of the critical fixes in the inner loop for
2874 2880 generators.
2875 2881
2876 2882 * IPython/Magic.py (Magic.getargspec): removed. This (and
2877 2883 _get_def) have been obsoleted by OInspect for a long time, I
2878 2884 hadn't noticed that they were dead code.
2879 2885 (Magic._ofind): restored _ofind functionality for a few literals
2880 2886 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2881 2887 for things like "hello".capitalize?, since that would require a
2882 2888 potentially dangerous eval() again.
2883 2889
2884 2890 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2885 2891 logic a bit more to clean up the escapes handling and minimize the
2886 2892 use of _ofind to only necessary cases. The interactive 'feel' of
2887 2893 IPython should have improved quite a bit with the changes in
2888 2894 _prefilter and _ofind (besides being far safer than before).
2889 2895
2890 2896 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2891 2897 obscure, never reported). Edit would fail to find the object to
2892 2898 edit under some circumstances.
2893 2899 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2894 2900 which were causing double-calling of generators. Those eval calls
2895 2901 were _very_ dangerous, since code with side effects could be
2896 2902 triggered. As they say, 'eval is evil'... These were the
2897 2903 nastiest evals in IPython. Besides, _ofind is now far simpler,
2898 2904 and it should also be quite a bit faster. Its use of inspect is
2899 2905 also safer, so perhaps some of the inspect-related crashes I've
2900 2906 seen lately with Python 2.3 might be taken care of. That will
2901 2907 need more testing.
2902 2908
2903 2909 2003-08-17 Fernando Perez <fperez@colorado.edu>
2904 2910
2905 2911 * IPython/iplib.py (InteractiveShell._prefilter): significant
2906 2912 simplifications to the logic for handling user escapes. Faster
2907 2913 and simpler code.
2908 2914
2909 2915 2003-08-14 Fernando Perez <fperez@colorado.edu>
2910 2916
2911 2917 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2912 2918 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2913 2919 but it should be quite a bit faster. And the recursive version
2914 2920 generated O(log N) intermediate storage for all rank>1 arrays,
2915 2921 even if they were contiguous.
2916 2922 (l1norm): Added this function.
2917 2923 (norm): Added this function for arbitrary norms (including
2918 2924 l-infinity). l1 and l2 are still special cases for convenience
2919 2925 and speed.
2920 2926
2921 2927 2003-08-03 Fernando Perez <fperez@colorado.edu>
2922 2928
2923 2929 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2924 2930 exceptions, which now raise PendingDeprecationWarnings in Python
2925 2931 2.3. There were some in Magic and some in Gnuplot2.
2926 2932
2927 2933 2003-06-30 Fernando Perez <fperez@colorado.edu>
2928 2934
2929 2935 * IPython/genutils.py (page): modified to call curses only for
2930 2936 terminals where TERM=='xterm'. After problems under many other
2931 2937 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2932 2938
2933 2939 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2934 2940 would be triggered when readline was absent. This was just an old
2935 2941 debugging statement I'd forgotten to take out.
2936 2942
2937 2943 2003-06-20 Fernando Perez <fperez@colorado.edu>
2938 2944
2939 2945 * IPython/genutils.py (clock): modified to return only user time
2940 2946 (not counting system time), after a discussion on scipy. While
2941 2947 system time may be a useful quantity occasionally, it may much
2942 2948 more easily be skewed by occasional swapping or other similar
2943 2949 activity.
2944 2950
2945 2951 2003-06-05 Fernando Perez <fperez@colorado.edu>
2946 2952
2947 2953 * IPython/numutils.py (identity): new function, for building
2948 2954 arbitrary rank Kronecker deltas (mostly backwards compatible with
2949 2955 Numeric.identity)
2950 2956
2951 2957 2003-06-03 Fernando Perez <fperez@colorado.edu>
2952 2958
2953 2959 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2954 2960 arguments passed to magics with spaces, to allow trailing '\' to
2955 2961 work normally (mainly for Windows users).
2956 2962
2957 2963 2003-05-29 Fernando Perez <fperez@colorado.edu>
2958 2964
2959 2965 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2960 2966 instead of pydoc.help. This fixes a bizarre behavior where
2961 2967 printing '%s' % locals() would trigger the help system. Now
2962 2968 ipython behaves like normal python does.
2963 2969
2964 2970 Note that if one does 'from pydoc import help', the bizarre
2965 2971 behavior returns, but this will also happen in normal python, so
2966 2972 it's not an ipython bug anymore (it has to do with how pydoc.help
2967 2973 is implemented).
2968 2974
2969 2975 2003-05-22 Fernando Perez <fperez@colorado.edu>
2970 2976
2971 2977 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2972 2978 return [] instead of None when nothing matches, also match to end
2973 2979 of line. Patch by Gary Bishop.
2974 2980
2975 2981 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2976 2982 protection as before, for files passed on the command line. This
2977 2983 prevents the CrashHandler from kicking in if user files call into
2978 2984 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2979 2985 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2980 2986
2981 2987 2003-05-20 *** Released version 0.4.0
2982 2988
2983 2989 2003-05-20 Fernando Perez <fperez@colorado.edu>
2984 2990
2985 2991 * setup.py: added support for manpages. It's a bit hackish b/c of
2986 2992 a bug in the way the bdist_rpm distutils target handles gzipped
2987 2993 manpages, but it works. After a patch by Jack.
2988 2994
2989 2995 2003-05-19 Fernando Perez <fperez@colorado.edu>
2990 2996
2991 2997 * IPython/numutils.py: added a mockup of the kinds module, since
2992 2998 it was recently removed from Numeric. This way, numutils will
2993 2999 work for all users even if they are missing kinds.
2994 3000
2995 3001 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2996 3002 failure, which can occur with SWIG-wrapped extensions. After a
2997 3003 crash report from Prabhu.
2998 3004
2999 3005 2003-05-16 Fernando Perez <fperez@colorado.edu>
3000 3006
3001 3007 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3002 3008 protect ipython from user code which may call directly
3003 3009 sys.excepthook (this looks like an ipython crash to the user, even
3004 3010 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3005 3011 This is especially important to help users of WxWindows, but may
3006 3012 also be useful in other cases.
3007 3013
3008 3014 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3009 3015 an optional tb_offset to be specified, and to preserve exception
3010 3016 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3011 3017
3012 3018 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3013 3019
3014 3020 2003-05-15 Fernando Perez <fperez@colorado.edu>
3015 3021
3016 3022 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3017 3023 installing for a new user under Windows.
3018 3024
3019 3025 2003-05-12 Fernando Perez <fperez@colorado.edu>
3020 3026
3021 3027 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3022 3028 handler for Emacs comint-based lines. Currently it doesn't do
3023 3029 much (but importantly, it doesn't update the history cache). In
3024 3030 the future it may be expanded if Alex needs more functionality
3025 3031 there.
3026 3032
3027 3033 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3028 3034 info to crash reports.
3029 3035
3030 3036 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3031 3037 just like Python's -c. Also fixed crash with invalid -color
3032 3038 option value at startup. Thanks to Will French
3033 3039 <wfrench-AT-bestweb.net> for the bug report.
3034 3040
3035 3041 2003-05-09 Fernando Perez <fperez@colorado.edu>
3036 3042
3037 3043 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3038 3044 to EvalDict (it's a mapping, after all) and simplified its code
3039 3045 quite a bit, after a nice discussion on c.l.py where Gustavo
3040 3046 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3041 3047
3042 3048 2003-04-30 Fernando Perez <fperez@colorado.edu>
3043 3049
3044 3050 * IPython/genutils.py (timings_out): modified it to reduce its
3045 3051 overhead in the common reps==1 case.
3046 3052
3047 3053 2003-04-29 Fernando Perez <fperez@colorado.edu>
3048 3054
3049 3055 * IPython/genutils.py (timings_out): Modified to use the resource
3050 3056 module, which avoids the wraparound problems of time.clock().
3051 3057
3052 3058 2003-04-17 *** Released version 0.2.15pre4
3053 3059
3054 3060 2003-04-17 Fernando Perez <fperez@colorado.edu>
3055 3061
3056 3062 * setup.py (scriptfiles): Split windows-specific stuff over to a
3057 3063 separate file, in an attempt to have a Windows GUI installer.
3058 3064 That didn't work, but part of the groundwork is done.
3059 3065
3060 3066 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3061 3067 indent/unindent with 4 spaces. Particularly useful in combination
3062 3068 with the new auto-indent option.
3063 3069
3064 3070 2003-04-16 Fernando Perez <fperez@colorado.edu>
3065 3071
3066 3072 * IPython/Magic.py: various replacements of self.rc for
3067 3073 self.shell.rc. A lot more remains to be done to fully disentangle
3068 3074 this class from the main Shell class.
3069 3075
3070 3076 * IPython/GnuplotRuntime.py: added checks for mouse support so
3071 3077 that we don't try to enable it if the current gnuplot doesn't
3072 3078 really support it. Also added checks so that we don't try to
3073 3079 enable persist under Windows (where Gnuplot doesn't recognize the
3074 3080 option).
3075 3081
3076 3082 * IPython/iplib.py (InteractiveShell.interact): Added optional
3077 3083 auto-indenting code, after a patch by King C. Shu
3078 3084 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3079 3085 get along well with pasting indented code. If I ever figure out
3080 3086 how to make that part go well, it will become on by default.
3081 3087
3082 3088 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3083 3089 crash ipython if there was an unmatched '%' in the user's prompt
3084 3090 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3085 3091
3086 3092 * IPython/iplib.py (InteractiveShell.interact): removed the
3087 3093 ability to ask the user whether he wants to crash or not at the
3088 3094 'last line' exception handler. Calling functions at that point
3089 3095 changes the stack, and the error reports would have incorrect
3090 3096 tracebacks.
3091 3097
3092 3098 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3093 3099 pass through a peger a pretty-printed form of any object. After a
3094 3100 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3095 3101
3096 3102 2003-04-14 Fernando Perez <fperez@colorado.edu>
3097 3103
3098 3104 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3099 3105 all files in ~ would be modified at first install (instead of
3100 3106 ~/.ipython). This could be potentially disastrous, as the
3101 3107 modification (make line-endings native) could damage binary files.
3102 3108
3103 3109 2003-04-10 Fernando Perez <fperez@colorado.edu>
3104 3110
3105 3111 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3106 3112 handle only lines which are invalid python. This now means that
3107 3113 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3108 3114 for the bug report.
3109 3115
3110 3116 2003-04-01 Fernando Perez <fperez@colorado.edu>
3111 3117
3112 3118 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3113 3119 where failing to set sys.last_traceback would crash pdb.pm().
3114 3120 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3115 3121 report.
3116 3122
3117 3123 2003-03-25 Fernando Perez <fperez@colorado.edu>
3118 3124
3119 3125 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3120 3126 before printing it (it had a lot of spurious blank lines at the
3121 3127 end).
3122 3128
3123 3129 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3124 3130 output would be sent 21 times! Obviously people don't use this
3125 3131 too often, or I would have heard about it.
3126 3132
3127 3133 2003-03-24 Fernando Perez <fperez@colorado.edu>
3128 3134
3129 3135 * setup.py (scriptfiles): renamed the data_files parameter from
3130 3136 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3131 3137 for the patch.
3132 3138
3133 3139 2003-03-20 Fernando Perez <fperez@colorado.edu>
3134 3140
3135 3141 * IPython/genutils.py (error): added error() and fatal()
3136 3142 functions.
3137 3143
3138 3144 2003-03-18 *** Released version 0.2.15pre3
3139 3145
3140 3146 2003-03-18 Fernando Perez <fperez@colorado.edu>
3141 3147
3142 3148 * setupext/install_data_ext.py
3143 3149 (install_data_ext.initialize_options): Class contributed by Jack
3144 3150 Moffit for fixing the old distutils hack. He is sending this to
3145 3151 the distutils folks so in the future we may not need it as a
3146 3152 private fix.
3147 3153
3148 3154 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3149 3155 changes for Debian packaging. See his patch for full details.
3150 3156 The old distutils hack of making the ipythonrc* files carry a
3151 3157 bogus .py extension is gone, at last. Examples were moved to a
3152 3158 separate subdir under doc/, and the separate executable scripts
3153 3159 now live in their own directory. Overall a great cleanup. The
3154 3160 manual was updated to use the new files, and setup.py has been
3155 3161 fixed for this setup.
3156 3162
3157 3163 * IPython/PyColorize.py (Parser.usage): made non-executable and
3158 3164 created a pycolor wrapper around it to be included as a script.
3159 3165
3160 3166 2003-03-12 *** Released version 0.2.15pre2
3161 3167
3162 3168 2003-03-12 Fernando Perez <fperez@colorado.edu>
3163 3169
3164 3170 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3165 3171 long-standing problem with garbage characters in some terminals.
3166 3172 The issue was really that the \001 and \002 escapes must _only_ be
3167 3173 passed to input prompts (which call readline), but _never_ to
3168 3174 normal text to be printed on screen. I changed ColorANSI to have
3169 3175 two classes: TermColors and InputTermColors, each with the
3170 3176 appropriate escapes for input prompts or normal text. The code in
3171 3177 Prompts.py got slightly more complicated, but this very old and
3172 3178 annoying bug is finally fixed.
3173 3179
3174 3180 All the credit for nailing down the real origin of this problem
3175 3181 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3176 3182 *Many* thanks to him for spending quite a bit of effort on this.
3177 3183
3178 3184 2003-03-05 *** Released version 0.2.15pre1
3179 3185
3180 3186 2003-03-03 Fernando Perez <fperez@colorado.edu>
3181 3187
3182 3188 * IPython/FakeModule.py: Moved the former _FakeModule to a
3183 3189 separate file, because it's also needed by Magic (to fix a similar
3184 3190 pickle-related issue in @run).
3185 3191
3186 3192 2003-03-02 Fernando Perez <fperez@colorado.edu>
3187 3193
3188 3194 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3189 3195 the autocall option at runtime.
3190 3196 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3191 3197 across Magic.py to start separating Magic from InteractiveShell.
3192 3198 (Magic._ofind): Fixed to return proper namespace for dotted
3193 3199 names. Before, a dotted name would always return 'not currently
3194 3200 defined', because it would find the 'parent'. s.x would be found,
3195 3201 but since 'x' isn't defined by itself, it would get confused.
3196 3202 (Magic.magic_run): Fixed pickling problems reported by Ralf
3197 3203 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3198 3204 that I'd used when Mike Heeter reported similar issues at the
3199 3205 top-level, but now for @run. It boils down to injecting the
3200 3206 namespace where code is being executed with something that looks
3201 3207 enough like a module to fool pickle.dump(). Since a pickle stores
3202 3208 a named reference to the importing module, we need this for
3203 3209 pickles to save something sensible.
3204 3210
3205 3211 * IPython/ipmaker.py (make_IPython): added an autocall option.
3206 3212
3207 3213 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3208 3214 the auto-eval code. Now autocalling is an option, and the code is
3209 3215 also vastly safer. There is no more eval() involved at all.
3210 3216
3211 3217 2003-03-01 Fernando Perez <fperez@colorado.edu>
3212 3218
3213 3219 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3214 3220 dict with named keys instead of a tuple.
3215 3221
3216 3222 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3217 3223
3218 3224 * setup.py (make_shortcut): Fixed message about directories
3219 3225 created during Windows installation (the directories were ok, just
3220 3226 the printed message was misleading). Thanks to Chris Liechti
3221 3227 <cliechti-AT-gmx.net> for the heads up.
3222 3228
3223 3229 2003-02-21 Fernando Perez <fperez@colorado.edu>
3224 3230
3225 3231 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3226 3232 of ValueError exception when checking for auto-execution. This
3227 3233 one is raised by things like Numeric arrays arr.flat when the
3228 3234 array is non-contiguous.
3229 3235
3230 3236 2003-01-31 Fernando Perez <fperez@colorado.edu>
3231 3237
3232 3238 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3233 3239 not return any value at all (even though the command would get
3234 3240 executed).
3235 3241 (xsys): Flush stdout right after printing the command to ensure
3236 3242 proper ordering of commands and command output in the total
3237 3243 output.
3238 3244 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3239 3245 system/getoutput as defaults. The old ones are kept for
3240 3246 compatibility reasons, so no code which uses this library needs
3241 3247 changing.
3242 3248
3243 3249 2003-01-27 *** Released version 0.2.14
3244 3250
3245 3251 2003-01-25 Fernando Perez <fperez@colorado.edu>
3246 3252
3247 3253 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3248 3254 functions defined in previous edit sessions could not be re-edited
3249 3255 (because the temp files were immediately removed). Now temp files
3250 3256 are removed only at IPython's exit.
3251 3257 (Magic.magic_run): Improved @run to perform shell-like expansions
3252 3258 on its arguments (~users and $VARS). With this, @run becomes more
3253 3259 like a normal command-line.
3254 3260
3255 3261 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3256 3262 bugs related to embedding and cleaned up that code. A fairly
3257 3263 important one was the impossibility to access the global namespace
3258 3264 through the embedded IPython (only local variables were visible).
3259 3265
3260 3266 2003-01-14 Fernando Perez <fperez@colorado.edu>
3261 3267
3262 3268 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3263 3269 auto-calling to be a bit more conservative. Now it doesn't get
3264 3270 triggered if any of '!=()<>' are in the rest of the input line, to
3265 3271 allow comparing callables. Thanks to Alex for the heads up.
3266 3272
3267 3273 2003-01-07 Fernando Perez <fperez@colorado.edu>
3268 3274
3269 3275 * IPython/genutils.py (page): fixed estimation of the number of
3270 3276 lines in a string to be paged to simply count newlines. This
3271 3277 prevents over-guessing due to embedded escape sequences. A better
3272 3278 long-term solution would involve stripping out the control chars
3273 3279 for the count, but it's potentially so expensive I just don't
3274 3280 think it's worth doing.
3275 3281
3276 3282 2002-12-19 *** Released version 0.2.14pre50
3277 3283
3278 3284 2002-12-19 Fernando Perez <fperez@colorado.edu>
3279 3285
3280 3286 * tools/release (version): Changed release scripts to inform
3281 3287 Andrea and build a NEWS file with a list of recent changes.
3282 3288
3283 3289 * IPython/ColorANSI.py (__all__): changed terminal detection
3284 3290 code. Seems to work better for xterms without breaking
3285 3291 konsole. Will need more testing to determine if WinXP and Mac OSX
3286 3292 also work ok.
3287 3293
3288 3294 2002-12-18 *** Released version 0.2.14pre49
3289 3295
3290 3296 2002-12-18 Fernando Perez <fperez@colorado.edu>
3291 3297
3292 3298 * Docs: added new info about Mac OSX, from Andrea.
3293 3299
3294 3300 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3295 3301 allow direct plotting of python strings whose format is the same
3296 3302 of gnuplot data files.
3297 3303
3298 3304 2002-12-16 Fernando Perez <fperez@colorado.edu>
3299 3305
3300 3306 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3301 3307 value of exit question to be acknowledged.
3302 3308
3303 3309 2002-12-03 Fernando Perez <fperez@colorado.edu>
3304 3310
3305 3311 * IPython/ipmaker.py: removed generators, which had been added
3306 3312 by mistake in an earlier debugging run. This was causing trouble
3307 3313 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3308 3314 for pointing this out.
3309 3315
3310 3316 2002-11-17 Fernando Perez <fperez@colorado.edu>
3311 3317
3312 3318 * Manual: updated the Gnuplot section.
3313 3319
3314 3320 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3315 3321 a much better split of what goes in Runtime and what goes in
3316 3322 Interactive.
3317 3323
3318 3324 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3319 3325 being imported from iplib.
3320 3326
3321 3327 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3322 3328 for command-passing. Now the global Gnuplot instance is called
3323 3329 'gp' instead of 'g', which was really a far too fragile and
3324 3330 common name.
3325 3331
3326 3332 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3327 3333 bounding boxes generated by Gnuplot for square plots.
3328 3334
3329 3335 * IPython/genutils.py (popkey): new function added. I should
3330 3336 suggest this on c.l.py as a dict method, it seems useful.
3331 3337
3332 3338 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3333 3339 to transparently handle PostScript generation. MUCH better than
3334 3340 the previous plot_eps/replot_eps (which I removed now). The code
3335 3341 is also fairly clean and well documented now (including
3336 3342 docstrings).
3337 3343
3338 3344 2002-11-13 Fernando Perez <fperez@colorado.edu>
3339 3345
3340 3346 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3341 3347 (inconsistent with options).
3342 3348
3343 3349 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3344 3350 manually disabled, I don't know why. Fixed it.
3345 3351 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3346 3352 eps output.
3347 3353
3348 3354 2002-11-12 Fernando Perez <fperez@colorado.edu>
3349 3355
3350 3356 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3351 3357 don't propagate up to caller. Fixes crash reported by François
3352 3358 Pinard.
3353 3359
3354 3360 2002-11-09 Fernando Perez <fperez@colorado.edu>
3355 3361
3356 3362 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3357 3363 history file for new users.
3358 3364 (make_IPython): fixed bug where initial install would leave the
3359 3365 user running in the .ipython dir.
3360 3366 (make_IPython): fixed bug where config dir .ipython would be
3361 3367 created regardless of the given -ipythondir option. Thanks to Cory
3362 3368 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3363 3369
3364 3370 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3365 3371 type confirmations. Will need to use it in all of IPython's code
3366 3372 consistently.
3367 3373
3368 3374 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3369 3375 context to print 31 lines instead of the default 5. This will make
3370 3376 the crash reports extremely detailed in case the problem is in
3371 3377 libraries I don't have access to.
3372 3378
3373 3379 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3374 3380 line of defense' code to still crash, but giving users fair
3375 3381 warning. I don't want internal errors to go unreported: if there's
3376 3382 an internal problem, IPython should crash and generate a full
3377 3383 report.
3378 3384
3379 3385 2002-11-08 Fernando Perez <fperez@colorado.edu>
3380 3386
3381 3387 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3382 3388 otherwise uncaught exceptions which can appear if people set
3383 3389 sys.stdout to something badly broken. Thanks to a crash report
3384 3390 from henni-AT-mail.brainbot.com.
3385 3391
3386 3392 2002-11-04 Fernando Perez <fperez@colorado.edu>
3387 3393
3388 3394 * IPython/iplib.py (InteractiveShell.interact): added
3389 3395 __IPYTHON__active to the builtins. It's a flag which goes on when
3390 3396 the interaction starts and goes off again when it stops. This
3391 3397 allows embedding code to detect being inside IPython. Before this
3392 3398 was done via __IPYTHON__, but that only shows that an IPython
3393 3399 instance has been created.
3394 3400
3395 3401 * IPython/Magic.py (Magic.magic_env): I realized that in a
3396 3402 UserDict, instance.data holds the data as a normal dict. So I
3397 3403 modified @env to return os.environ.data instead of rebuilding a
3398 3404 dict by hand.
3399 3405
3400 3406 2002-11-02 Fernando Perez <fperez@colorado.edu>
3401 3407
3402 3408 * IPython/genutils.py (warn): changed so that level 1 prints no
3403 3409 header. Level 2 is now the default (with 'WARNING' header, as
3404 3410 before). I think I tracked all places where changes were needed in
3405 3411 IPython, but outside code using the old level numbering may have
3406 3412 broken.
3407 3413
3408 3414 * IPython/iplib.py (InteractiveShell.runcode): added this to
3409 3415 handle the tracebacks in SystemExit traps correctly. The previous
3410 3416 code (through interact) was printing more of the stack than
3411 3417 necessary, showing IPython internal code to the user.
3412 3418
3413 3419 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3414 3420 default. Now that the default at the confirmation prompt is yes,
3415 3421 it's not so intrusive. François' argument that ipython sessions
3416 3422 tend to be complex enough not to lose them from an accidental C-d,
3417 3423 is a valid one.
3418 3424
3419 3425 * IPython/iplib.py (InteractiveShell.interact): added a
3420 3426 showtraceback() call to the SystemExit trap, and modified the exit
3421 3427 confirmation to have yes as the default.
3422 3428
3423 3429 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3424 3430 this file. It's been gone from the code for a long time, this was
3425 3431 simply leftover junk.
3426 3432
3427 3433 2002-11-01 Fernando Perez <fperez@colorado.edu>
3428 3434
3429 3435 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3430 3436 added. If set, IPython now traps EOF and asks for
3431 3437 confirmation. After a request by François Pinard.
3432 3438
3433 3439 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3434 3440 of @abort, and with a new (better) mechanism for handling the
3435 3441 exceptions.
3436 3442
3437 3443 2002-10-27 Fernando Perez <fperez@colorado.edu>
3438 3444
3439 3445 * IPython/usage.py (__doc__): updated the --help information and
3440 3446 the ipythonrc file to indicate that -log generates
3441 3447 ./ipython.log. Also fixed the corresponding info in @logstart.
3442 3448 This and several other fixes in the manuals thanks to reports by
3443 3449 François Pinard <pinard-AT-iro.umontreal.ca>.
3444 3450
3445 3451 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3446 3452 refer to @logstart (instead of @log, which doesn't exist).
3447 3453
3448 3454 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3449 3455 AttributeError crash. Thanks to Christopher Armstrong
3450 3456 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3451 3457 introduced recently (in 0.2.14pre37) with the fix to the eval
3452 3458 problem mentioned below.
3453 3459
3454 3460 2002-10-17 Fernando Perez <fperez@colorado.edu>
3455 3461
3456 3462 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3457 3463 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3458 3464
3459 3465 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3460 3466 this function to fix a problem reported by Alex Schmolck. He saw
3461 3467 it with list comprehensions and generators, which were getting
3462 3468 called twice. The real problem was an 'eval' call in testing for
3463 3469 automagic which was evaluating the input line silently.
3464 3470
3465 3471 This is a potentially very nasty bug, if the input has side
3466 3472 effects which must not be repeated. The code is much cleaner now,
3467 3473 without any blanket 'except' left and with a regexp test for
3468 3474 actual function names.
3469 3475
3470 3476 But an eval remains, which I'm not fully comfortable with. I just
3471 3477 don't know how to find out if an expression could be a callable in
3472 3478 the user's namespace without doing an eval on the string. However
3473 3479 that string is now much more strictly checked so that no code
3474 3480 slips by, so the eval should only happen for things that can
3475 3481 really be only function/method names.
3476 3482
3477 3483 2002-10-15 Fernando Perez <fperez@colorado.edu>
3478 3484
3479 3485 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3480 3486 OSX information to main manual, removed README_Mac_OSX file from
3481 3487 distribution. Also updated credits for recent additions.
3482 3488
3483 3489 2002-10-10 Fernando Perez <fperez@colorado.edu>
3484 3490
3485 3491 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3486 3492 terminal-related issues. Many thanks to Andrea Riciputi
3487 3493 <andrea.riciputi-AT-libero.it> for writing it.
3488 3494
3489 3495 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3490 3496 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3491 3497
3492 3498 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3493 3499 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3494 3500 <syver-en-AT-online.no> who both submitted patches for this problem.
3495 3501
3496 3502 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3497 3503 global embedding to make sure that things don't overwrite user
3498 3504 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3499 3505
3500 3506 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3501 3507 compatibility. Thanks to Hayden Callow
3502 3508 <h.callow-AT-elec.canterbury.ac.nz>
3503 3509
3504 3510 2002-10-04 Fernando Perez <fperez@colorado.edu>
3505 3511
3506 3512 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3507 3513 Gnuplot.File objects.
3508 3514
3509 3515 2002-07-23 Fernando Perez <fperez@colorado.edu>
3510 3516
3511 3517 * IPython/genutils.py (timing): Added timings() and timing() for
3512 3518 quick access to the most commonly needed data, the execution
3513 3519 times. Old timing() renamed to timings_out().
3514 3520
3515 3521 2002-07-18 Fernando Perez <fperez@colorado.edu>
3516 3522
3517 3523 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3518 3524 bug with nested instances disrupting the parent's tab completion.
3519 3525
3520 3526 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3521 3527 all_completions code to begin the emacs integration.
3522 3528
3523 3529 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3524 3530 argument to allow titling individual arrays when plotting.
3525 3531
3526 3532 2002-07-15 Fernando Perez <fperez@colorado.edu>
3527 3533
3528 3534 * setup.py (make_shortcut): changed to retrieve the value of
3529 3535 'Program Files' directory from the registry (this value changes in
3530 3536 non-english versions of Windows). Thanks to Thomas Fanslau
3531 3537 <tfanslau-AT-gmx.de> for the report.
3532 3538
3533 3539 2002-07-10 Fernando Perez <fperez@colorado.edu>
3534 3540
3535 3541 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3536 3542 a bug in pdb, which crashes if a line with only whitespace is
3537 3543 entered. Bug report submitted to sourceforge.
3538 3544
3539 3545 2002-07-09 Fernando Perez <fperez@colorado.edu>
3540 3546
3541 3547 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3542 3548 reporting exceptions (it's a bug in inspect.py, I just set a
3543 3549 workaround).
3544 3550
3545 3551 2002-07-08 Fernando Perez <fperez@colorado.edu>
3546 3552
3547 3553 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3548 3554 __IPYTHON__ in __builtins__ to show up in user_ns.
3549 3555
3550 3556 2002-07-03 Fernando Perez <fperez@colorado.edu>
3551 3557
3552 3558 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3553 3559 name from @gp_set_instance to @gp_set_default.
3554 3560
3555 3561 * IPython/ipmaker.py (make_IPython): default editor value set to
3556 3562 '0' (a string), to match the rc file. Otherwise will crash when
3557 3563 .strip() is called on it.
3558 3564
3559 3565
3560 3566 2002-06-28 Fernando Perez <fperez@colorado.edu>
3561 3567
3562 3568 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3563 3569 of files in current directory when a file is executed via
3564 3570 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3565 3571
3566 3572 * setup.py (manfiles): fix for rpm builds, submitted by RA
3567 3573 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3568 3574
3569 3575 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3570 3576 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3571 3577 string!). A. Schmolck caught this one.
3572 3578
3573 3579 2002-06-27 Fernando Perez <fperez@colorado.edu>
3574 3580
3575 3581 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3576 3582 defined files at the cmd line. __name__ wasn't being set to
3577 3583 __main__.
3578 3584
3579 3585 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3580 3586 regular lists and tuples besides Numeric arrays.
3581 3587
3582 3588 * IPython/Prompts.py (CachedOutput.__call__): Added output
3583 3589 supression for input ending with ';'. Similar to Mathematica and
3584 3590 Matlab. The _* vars and Out[] list are still updated, just like
3585 3591 Mathematica behaves.
3586 3592
3587 3593 2002-06-25 Fernando Perez <fperez@colorado.edu>
3588 3594
3589 3595 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3590 3596 .ini extensions for profiels under Windows.
3591 3597
3592 3598 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3593 3599 string form. Fix contributed by Alexander Schmolck
3594 3600 <a.schmolck-AT-gmx.net>
3595 3601
3596 3602 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3597 3603 pre-configured Gnuplot instance.
3598 3604
3599 3605 2002-06-21 Fernando Perez <fperez@colorado.edu>
3600 3606
3601 3607 * IPython/numutils.py (exp_safe): new function, works around the
3602 3608 underflow problems in Numeric.
3603 3609 (log2): New fn. Safe log in base 2: returns exact integer answer
3604 3610 for exact integer powers of 2.
3605 3611
3606 3612 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3607 3613 properly.
3608 3614
3609 3615 2002-06-20 Fernando Perez <fperez@colorado.edu>
3610 3616
3611 3617 * IPython/genutils.py (timing): new function like
3612 3618 Mathematica's. Similar to time_test, but returns more info.
3613 3619
3614 3620 2002-06-18 Fernando Perez <fperez@colorado.edu>
3615 3621
3616 3622 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3617 3623 according to Mike Heeter's suggestions.
3618 3624
3619 3625 2002-06-16 Fernando Perez <fperez@colorado.edu>
3620 3626
3621 3627 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3622 3628 system. GnuplotMagic is gone as a user-directory option. New files
3623 3629 make it easier to use all the gnuplot stuff both from external
3624 3630 programs as well as from IPython. Had to rewrite part of
3625 3631 hardcopy() b/c of a strange bug: often the ps files simply don't
3626 3632 get created, and require a repeat of the command (often several
3627 3633 times).
3628 3634
3629 3635 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3630 3636 resolve output channel at call time, so that if sys.stderr has
3631 3637 been redirected by user this gets honored.
3632 3638
3633 3639 2002-06-13 Fernando Perez <fperez@colorado.edu>
3634 3640
3635 3641 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3636 3642 IPShell. Kept a copy with the old names to avoid breaking people's
3637 3643 embedded code.
3638 3644
3639 3645 * IPython/ipython: simplified it to the bare minimum after
3640 3646 Holger's suggestions. Added info about how to use it in
3641 3647 PYTHONSTARTUP.
3642 3648
3643 3649 * IPython/Shell.py (IPythonShell): changed the options passing
3644 3650 from a string with funky %s replacements to a straight list. Maybe
3645 3651 a bit more typing, but it follows sys.argv conventions, so there's
3646 3652 less special-casing to remember.
3647 3653
3648 3654 2002-06-12 Fernando Perez <fperez@colorado.edu>
3649 3655
3650 3656 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3651 3657 command. Thanks to a suggestion by Mike Heeter.
3652 3658 (Magic.magic_pfile): added behavior to look at filenames if given
3653 3659 arg is not a defined object.
3654 3660 (Magic.magic_save): New @save function to save code snippets. Also
3655 3661 a Mike Heeter idea.
3656 3662
3657 3663 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3658 3664 plot() and replot(). Much more convenient now, especially for
3659 3665 interactive use.
3660 3666
3661 3667 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3662 3668 filenames.
3663 3669
3664 3670 2002-06-02 Fernando Perez <fperez@colorado.edu>
3665 3671
3666 3672 * IPython/Struct.py (Struct.__init__): modified to admit
3667 3673 initialization via another struct.
3668 3674
3669 3675 * IPython/genutils.py (SystemExec.__init__): New stateful
3670 3676 interface to xsys and bq. Useful for writing system scripts.
3671 3677
3672 3678 2002-05-30 Fernando Perez <fperez@colorado.edu>
3673 3679
3674 3680 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3675 3681 documents. This will make the user download smaller (it's getting
3676 3682 too big).
3677 3683
3678 3684 2002-05-29 Fernando Perez <fperez@colorado.edu>
3679 3685
3680 3686 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3681 3687 fix problems with shelve and pickle. Seems to work, but I don't
3682 3688 know if corner cases break it. Thanks to Mike Heeter
3683 3689 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3684 3690
3685 3691 2002-05-24 Fernando Perez <fperez@colorado.edu>
3686 3692
3687 3693 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3688 3694 macros having broken.
3689 3695
3690 3696 2002-05-21 Fernando Perez <fperez@colorado.edu>
3691 3697
3692 3698 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3693 3699 introduced logging bug: all history before logging started was
3694 3700 being written one character per line! This came from the redesign
3695 3701 of the input history as a special list which slices to strings,
3696 3702 not to lists.
3697 3703
3698 3704 2002-05-20 Fernando Perez <fperez@colorado.edu>
3699 3705
3700 3706 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3701 3707 be an attribute of all classes in this module. The design of these
3702 3708 classes needs some serious overhauling.
3703 3709
3704 3710 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3705 3711 which was ignoring '_' in option names.
3706 3712
3707 3713 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3708 3714 'Verbose_novars' to 'Context' and made it the new default. It's a
3709 3715 bit more readable and also safer than verbose.
3710 3716
3711 3717 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3712 3718 triple-quoted strings.
3713 3719
3714 3720 * IPython/OInspect.py (__all__): new module exposing the object
3715 3721 introspection facilities. Now the corresponding magics are dummy
3716 3722 wrappers around this. Having this module will make it much easier
3717 3723 to put these functions into our modified pdb.
3718 3724 This new object inspector system uses the new colorizing module,
3719 3725 so source code and other things are nicely syntax highlighted.
3720 3726
3721 3727 2002-05-18 Fernando Perez <fperez@colorado.edu>
3722 3728
3723 3729 * IPython/ColorANSI.py: Split the coloring tools into a separate
3724 3730 module so I can use them in other code easier (they were part of
3725 3731 ultraTB).
3726 3732
3727 3733 2002-05-17 Fernando Perez <fperez@colorado.edu>
3728 3734
3729 3735 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3730 3736 fixed it to set the global 'g' also to the called instance, as
3731 3737 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3732 3738 user's 'g' variables).
3733 3739
3734 3740 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3735 3741 global variables (aliases to _ih,_oh) so that users which expect
3736 3742 In[5] or Out[7] to work aren't unpleasantly surprised.
3737 3743 (InputList.__getslice__): new class to allow executing slices of
3738 3744 input history directly. Very simple class, complements the use of
3739 3745 macros.
3740 3746
3741 3747 2002-05-16 Fernando Perez <fperez@colorado.edu>
3742 3748
3743 3749 * setup.py (docdirbase): make doc directory be just doc/IPython
3744 3750 without version numbers, it will reduce clutter for users.
3745 3751
3746 3752 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3747 3753 execfile call to prevent possible memory leak. See for details:
3748 3754 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3749 3755
3750 3756 2002-05-15 Fernando Perez <fperez@colorado.edu>
3751 3757
3752 3758 * IPython/Magic.py (Magic.magic_psource): made the object
3753 3759 introspection names be more standard: pdoc, pdef, pfile and
3754 3760 psource. They all print/page their output, and it makes
3755 3761 remembering them easier. Kept old names for compatibility as
3756 3762 aliases.
3757 3763
3758 3764 2002-05-14 Fernando Perez <fperez@colorado.edu>
3759 3765
3760 3766 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3761 3767 what the mouse problem was. The trick is to use gnuplot with temp
3762 3768 files and NOT with pipes (for data communication), because having
3763 3769 both pipes and the mouse on is bad news.
3764 3770
3765 3771 2002-05-13 Fernando Perez <fperez@colorado.edu>
3766 3772
3767 3773 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3768 3774 bug. Information would be reported about builtins even when
3769 3775 user-defined functions overrode them.
3770 3776
3771 3777 2002-05-11 Fernando Perez <fperez@colorado.edu>
3772 3778
3773 3779 * IPython/__init__.py (__all__): removed FlexCompleter from
3774 3780 __all__ so that things don't fail in platforms without readline.
3775 3781
3776 3782 2002-05-10 Fernando Perez <fperez@colorado.edu>
3777 3783
3778 3784 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3779 3785 it requires Numeric, effectively making Numeric a dependency for
3780 3786 IPython.
3781 3787
3782 3788 * Released 0.2.13
3783 3789
3784 3790 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3785 3791 profiler interface. Now all the major options from the profiler
3786 3792 module are directly supported in IPython, both for single
3787 3793 expressions (@prun) and for full programs (@run -p).
3788 3794
3789 3795 2002-05-09 Fernando Perez <fperez@colorado.edu>
3790 3796
3791 3797 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3792 3798 magic properly formatted for screen.
3793 3799
3794 3800 * setup.py (make_shortcut): Changed things to put pdf version in
3795 3801 doc/ instead of doc/manual (had to change lyxport a bit).
3796 3802
3797 3803 * IPython/Magic.py (Profile.string_stats): made profile runs go
3798 3804 through pager (they are long and a pager allows searching, saving,
3799 3805 etc.)
3800 3806
3801 3807 2002-05-08 Fernando Perez <fperez@colorado.edu>
3802 3808
3803 3809 * Released 0.2.12
3804 3810
3805 3811 2002-05-06 Fernando Perez <fperez@colorado.edu>
3806 3812
3807 3813 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3808 3814 introduced); 'hist n1 n2' was broken.
3809 3815 (Magic.magic_pdb): added optional on/off arguments to @pdb
3810 3816 (Magic.magic_run): added option -i to @run, which executes code in
3811 3817 the IPython namespace instead of a clean one. Also added @irun as
3812 3818 an alias to @run -i.
3813 3819
3814 3820 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3815 3821 fixed (it didn't really do anything, the namespaces were wrong).
3816 3822
3817 3823 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3818 3824
3819 3825 * IPython/__init__.py (__all__): Fixed package namespace, now
3820 3826 'import IPython' does give access to IPython.<all> as
3821 3827 expected. Also renamed __release__ to Release.
3822 3828
3823 3829 * IPython/Debugger.py (__license__): created new Pdb class which
3824 3830 functions like a drop-in for the normal pdb.Pdb but does NOT
3825 3831 import readline by default. This way it doesn't muck up IPython's
3826 3832 readline handling, and now tab-completion finally works in the
3827 3833 debugger -- sort of. It completes things globally visible, but the
3828 3834 completer doesn't track the stack as pdb walks it. That's a bit
3829 3835 tricky, and I'll have to implement it later.
3830 3836
3831 3837 2002-05-05 Fernando Perez <fperez@colorado.edu>
3832 3838
3833 3839 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3834 3840 magic docstrings when printed via ? (explicit \'s were being
3835 3841 printed).
3836 3842
3837 3843 * IPython/ipmaker.py (make_IPython): fixed namespace
3838 3844 identification bug. Now variables loaded via logs or command-line
3839 3845 files are recognized in the interactive namespace by @who.
3840 3846
3841 3847 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3842 3848 log replay system stemming from the string form of Structs.
3843 3849
3844 3850 * IPython/Magic.py (Macro.__init__): improved macros to properly
3845 3851 handle magic commands in them.
3846 3852 (Magic.magic_logstart): usernames are now expanded so 'logstart
3847 3853 ~/mylog' now works.
3848 3854
3849 3855 * IPython/iplib.py (complete): fixed bug where paths starting with
3850 3856 '/' would be completed as magic names.
3851 3857
3852 3858 2002-05-04 Fernando Perez <fperez@colorado.edu>
3853 3859
3854 3860 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3855 3861 allow running full programs under the profiler's control.
3856 3862
3857 3863 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3858 3864 mode to report exceptions verbosely but without formatting
3859 3865 variables. This addresses the issue of ipython 'freezing' (it's
3860 3866 not frozen, but caught in an expensive formatting loop) when huge
3861 3867 variables are in the context of an exception.
3862 3868 (VerboseTB.text): Added '--->' markers at line where exception was
3863 3869 triggered. Much clearer to read, especially in NoColor modes.
3864 3870
3865 3871 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3866 3872 implemented in reverse when changing to the new parse_options().
3867 3873
3868 3874 2002-05-03 Fernando Perez <fperez@colorado.edu>
3869 3875
3870 3876 * IPython/Magic.py (Magic.parse_options): new function so that
3871 3877 magics can parse options easier.
3872 3878 (Magic.magic_prun): new function similar to profile.run(),
3873 3879 suggested by Chris Hart.
3874 3880 (Magic.magic_cd): fixed behavior so that it only changes if
3875 3881 directory actually is in history.
3876 3882
3877 3883 * IPython/usage.py (__doc__): added information about potential
3878 3884 slowness of Verbose exception mode when there are huge data
3879 3885 structures to be formatted (thanks to Archie Paulson).
3880 3886
3881 3887 * IPython/ipmaker.py (make_IPython): Changed default logging
3882 3888 (when simply called with -log) to use curr_dir/ipython.log in
3883 3889 rotate mode. Fixed crash which was occuring with -log before
3884 3890 (thanks to Jim Boyle).
3885 3891
3886 3892 2002-05-01 Fernando Perez <fperez@colorado.edu>
3887 3893
3888 3894 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3889 3895 was nasty -- though somewhat of a corner case).
3890 3896
3891 3897 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3892 3898 text (was a bug).
3893 3899
3894 3900 2002-04-30 Fernando Perez <fperez@colorado.edu>
3895 3901
3896 3902 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3897 3903 a print after ^D or ^C from the user so that the In[] prompt
3898 3904 doesn't over-run the gnuplot one.
3899 3905
3900 3906 2002-04-29 Fernando Perez <fperez@colorado.edu>
3901 3907
3902 3908 * Released 0.2.10
3903 3909
3904 3910 * IPython/__release__.py (version): get date dynamically.
3905 3911
3906 3912 * Misc. documentation updates thanks to Arnd's comments. Also ran
3907 3913 a full spellcheck on the manual (hadn't been done in a while).
3908 3914
3909 3915 2002-04-27 Fernando Perez <fperez@colorado.edu>
3910 3916
3911 3917 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3912 3918 starting a log in mid-session would reset the input history list.
3913 3919
3914 3920 2002-04-26 Fernando Perez <fperez@colorado.edu>
3915 3921
3916 3922 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3917 3923 all files were being included in an update. Now anything in
3918 3924 UserConfig that matches [A-Za-z]*.py will go (this excludes
3919 3925 __init__.py)
3920 3926
3921 3927 2002-04-25 Fernando Perez <fperez@colorado.edu>
3922 3928
3923 3929 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3924 3930 to __builtins__ so that any form of embedded or imported code can
3925 3931 test for being inside IPython.
3926 3932
3927 3933 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3928 3934 changed to GnuplotMagic because it's now an importable module,
3929 3935 this makes the name follow that of the standard Gnuplot module.
3930 3936 GnuplotMagic can now be loaded at any time in mid-session.
3931 3937
3932 3938 2002-04-24 Fernando Perez <fperez@colorado.edu>
3933 3939
3934 3940 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3935 3941 the globals (IPython has its own namespace) and the
3936 3942 PhysicalQuantity stuff is much better anyway.
3937 3943
3938 3944 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3939 3945 embedding example to standard user directory for
3940 3946 distribution. Also put it in the manual.
3941 3947
3942 3948 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3943 3949 instance as first argument (so it doesn't rely on some obscure
3944 3950 hidden global).
3945 3951
3946 3952 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3947 3953 delimiters. While it prevents ().TAB from working, it allows
3948 3954 completions in open (... expressions. This is by far a more common
3949 3955 case.
3950 3956
3951 3957 2002-04-23 Fernando Perez <fperez@colorado.edu>
3952 3958
3953 3959 * IPython/Extensions/InterpreterPasteInput.py: new
3954 3960 syntax-processing module for pasting lines with >>> or ... at the
3955 3961 start.
3956 3962
3957 3963 * IPython/Extensions/PhysicalQ_Interactive.py
3958 3964 (PhysicalQuantityInteractive.__int__): fixed to work with either
3959 3965 Numeric or math.
3960 3966
3961 3967 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3962 3968 provided profiles. Now we have:
3963 3969 -math -> math module as * and cmath with its own namespace.
3964 3970 -numeric -> Numeric as *, plus gnuplot & grace
3965 3971 -physics -> same as before
3966 3972
3967 3973 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3968 3974 user-defined magics wouldn't be found by @magic if they were
3969 3975 defined as class methods. Also cleaned up the namespace search
3970 3976 logic and the string building (to use %s instead of many repeated
3971 3977 string adds).
3972 3978
3973 3979 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3974 3980 of user-defined magics to operate with class methods (cleaner, in
3975 3981 line with the gnuplot code).
3976 3982
3977 3983 2002-04-22 Fernando Perez <fperez@colorado.edu>
3978 3984
3979 3985 * setup.py: updated dependency list so that manual is updated when
3980 3986 all included files change.
3981 3987
3982 3988 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3983 3989 the delimiter removal option (the fix is ugly right now).
3984 3990
3985 3991 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3986 3992 all of the math profile (quicker loading, no conflict between
3987 3993 g-9.8 and g-gnuplot).
3988 3994
3989 3995 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3990 3996 name of post-mortem files to IPython_crash_report.txt.
3991 3997
3992 3998 * Cleanup/update of the docs. Added all the new readline info and
3993 3999 formatted all lists as 'real lists'.
3994 4000
3995 4001 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3996 4002 tab-completion options, since the full readline parse_and_bind is
3997 4003 now accessible.
3998 4004
3999 4005 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4000 4006 handling of readline options. Now users can specify any string to
4001 4007 be passed to parse_and_bind(), as well as the delimiters to be
4002 4008 removed.
4003 4009 (InteractiveShell.__init__): Added __name__ to the global
4004 4010 namespace so that things like Itpl which rely on its existence
4005 4011 don't crash.
4006 4012 (InteractiveShell._prefilter): Defined the default with a _ so
4007 4013 that prefilter() is easier to override, while the default one
4008 4014 remains available.
4009 4015
4010 4016 2002-04-18 Fernando Perez <fperez@colorado.edu>
4011 4017
4012 4018 * Added information about pdb in the docs.
4013 4019
4014 4020 2002-04-17 Fernando Perez <fperez@colorado.edu>
4015 4021
4016 4022 * IPython/ipmaker.py (make_IPython): added rc_override option to
4017 4023 allow passing config options at creation time which may override
4018 4024 anything set in the config files or command line. This is
4019 4025 particularly useful for configuring embedded instances.
4020 4026
4021 4027 2002-04-15 Fernando Perez <fperez@colorado.edu>
4022 4028
4023 4029 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4024 4030 crash embedded instances because of the input cache falling out of
4025 4031 sync with the output counter.
4026 4032
4027 4033 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4028 4034 mode which calls pdb after an uncaught exception in IPython itself.
4029 4035
4030 4036 2002-04-14 Fernando Perez <fperez@colorado.edu>
4031 4037
4032 4038 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4033 4039 readline, fix it back after each call.
4034 4040
4035 4041 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4036 4042 method to force all access via __call__(), which guarantees that
4037 4043 traceback references are properly deleted.
4038 4044
4039 4045 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4040 4046 improve printing when pprint is in use.
4041 4047
4042 4048 2002-04-13 Fernando Perez <fperez@colorado.edu>
4043 4049
4044 4050 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4045 4051 exceptions aren't caught anymore. If the user triggers one, he
4046 4052 should know why he's doing it and it should go all the way up,
4047 4053 just like any other exception. So now @abort will fully kill the
4048 4054 embedded interpreter and the embedding code (unless that happens
4049 4055 to catch SystemExit).
4050 4056
4051 4057 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4052 4058 and a debugger() method to invoke the interactive pdb debugger
4053 4059 after printing exception information. Also added the corresponding
4054 4060 -pdb option and @pdb magic to control this feature, and updated
4055 4061 the docs. After a suggestion from Christopher Hart
4056 4062 (hart-AT-caltech.edu).
4057 4063
4058 4064 2002-04-12 Fernando Perez <fperez@colorado.edu>
4059 4065
4060 4066 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4061 4067 the exception handlers defined by the user (not the CrashHandler)
4062 4068 so that user exceptions don't trigger an ipython bug report.
4063 4069
4064 4070 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4065 4071 configurable (it should have always been so).
4066 4072
4067 4073 2002-03-26 Fernando Perez <fperez@colorado.edu>
4068 4074
4069 4075 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4070 4076 and there to fix embedding namespace issues. This should all be
4071 4077 done in a more elegant way.
4072 4078
4073 4079 2002-03-25 Fernando Perez <fperez@colorado.edu>
4074 4080
4075 4081 * IPython/genutils.py (get_home_dir): Try to make it work under
4076 4082 win9x also.
4077 4083
4078 4084 2002-03-20 Fernando Perez <fperez@colorado.edu>
4079 4085
4080 4086 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4081 4087 sys.displayhook untouched upon __init__.
4082 4088
4083 4089 2002-03-19 Fernando Perez <fperez@colorado.edu>
4084 4090
4085 4091 * Released 0.2.9 (for embedding bug, basically).
4086 4092
4087 4093 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4088 4094 exceptions so that enclosing shell's state can be restored.
4089 4095
4090 4096 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4091 4097 naming conventions in the .ipython/ dir.
4092 4098
4093 4099 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4094 4100 from delimiters list so filenames with - in them get expanded.
4095 4101
4096 4102 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4097 4103 sys.displayhook not being properly restored after an embedded call.
4098 4104
4099 4105 2002-03-18 Fernando Perez <fperez@colorado.edu>
4100 4106
4101 4107 * Released 0.2.8
4102 4108
4103 4109 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4104 4110 some files weren't being included in a -upgrade.
4105 4111 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4106 4112 on' so that the first tab completes.
4107 4113 (InteractiveShell.handle_magic): fixed bug with spaces around
4108 4114 quotes breaking many magic commands.
4109 4115
4110 4116 * setup.py: added note about ignoring the syntax error messages at
4111 4117 installation.
4112 4118
4113 4119 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4114 4120 streamlining the gnuplot interface, now there's only one magic @gp.
4115 4121
4116 4122 2002-03-17 Fernando Perez <fperez@colorado.edu>
4117 4123
4118 4124 * IPython/UserConfig/magic_gnuplot.py: new name for the
4119 4125 example-magic_pm.py file. Much enhanced system, now with a shell
4120 4126 for communicating directly with gnuplot, one command at a time.
4121 4127
4122 4128 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4123 4129 setting __name__=='__main__'.
4124 4130
4125 4131 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4126 4132 mini-shell for accessing gnuplot from inside ipython. Should
4127 4133 extend it later for grace access too. Inspired by Arnd's
4128 4134 suggestion.
4129 4135
4130 4136 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4131 4137 calling magic functions with () in their arguments. Thanks to Arnd
4132 4138 Baecker for pointing this to me.
4133 4139
4134 4140 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4135 4141 infinitely for integer or complex arrays (only worked with floats).
4136 4142
4137 4143 2002-03-16 Fernando Perez <fperez@colorado.edu>
4138 4144
4139 4145 * setup.py: Merged setup and setup_windows into a single script
4140 4146 which properly handles things for windows users.
4141 4147
4142 4148 2002-03-15 Fernando Perez <fperez@colorado.edu>
4143 4149
4144 4150 * Big change to the manual: now the magics are all automatically
4145 4151 documented. This information is generated from their docstrings
4146 4152 and put in a latex file included by the manual lyx file. This way
4147 4153 we get always up to date information for the magics. The manual
4148 4154 now also has proper version information, also auto-synced.
4149 4155
4150 4156 For this to work, an undocumented --magic_docstrings option was added.
4151 4157
4152 4158 2002-03-13 Fernando Perez <fperez@colorado.edu>
4153 4159
4154 4160 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4155 4161 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4156 4162
4157 4163 2002-03-12 Fernando Perez <fperez@colorado.edu>
4158 4164
4159 4165 * IPython/ultraTB.py (TermColors): changed color escapes again to
4160 4166 fix the (old, reintroduced) line-wrapping bug. Basically, if
4161 4167 \001..\002 aren't given in the color escapes, lines get wrapped
4162 4168 weirdly. But giving those screws up old xterms and emacs terms. So
4163 4169 I added some logic for emacs terms to be ok, but I can't identify old
4164 4170 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4165 4171
4166 4172 2002-03-10 Fernando Perez <fperez@colorado.edu>
4167 4173
4168 4174 * IPython/usage.py (__doc__): Various documentation cleanups and
4169 4175 updates, both in usage docstrings and in the manual.
4170 4176
4171 4177 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4172 4178 handling of caching. Set minimum acceptabe value for having a
4173 4179 cache at 20 values.
4174 4180
4175 4181 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4176 4182 install_first_time function to a method, renamed it and added an
4177 4183 'upgrade' mode. Now people can update their config directory with
4178 4184 a simple command line switch (-upgrade, also new).
4179 4185
4180 4186 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4181 4187 @file (convenient for automagic users under Python >= 2.2).
4182 4188 Removed @files (it seemed more like a plural than an abbrev. of
4183 4189 'file show').
4184 4190
4185 4191 * IPython/iplib.py (install_first_time): Fixed crash if there were
4186 4192 backup files ('~') in .ipython/ install directory.
4187 4193
4188 4194 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4189 4195 system. Things look fine, but these changes are fairly
4190 4196 intrusive. Test them for a few days.
4191 4197
4192 4198 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4193 4199 the prompts system. Now all in/out prompt strings are user
4194 4200 controllable. This is particularly useful for embedding, as one
4195 4201 can tag embedded instances with particular prompts.
4196 4202
4197 4203 Also removed global use of sys.ps1/2, which now allows nested
4198 4204 embeddings without any problems. Added command-line options for
4199 4205 the prompt strings.
4200 4206
4201 4207 2002-03-08 Fernando Perez <fperez@colorado.edu>
4202 4208
4203 4209 * IPython/UserConfig/example-embed-short.py (ipshell): added
4204 4210 example file with the bare minimum code for embedding.
4205 4211
4206 4212 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4207 4213 functionality for the embeddable shell to be activated/deactivated
4208 4214 either globally or at each call.
4209 4215
4210 4216 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4211 4217 rewriting the prompt with '--->' for auto-inputs with proper
4212 4218 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4213 4219 this is handled by the prompts class itself, as it should.
4214 4220
4215 4221 2002-03-05 Fernando Perez <fperez@colorado.edu>
4216 4222
4217 4223 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4218 4224 @logstart to avoid name clashes with the math log function.
4219 4225
4220 4226 * Big updates to X/Emacs section of the manual.
4221 4227
4222 4228 * Removed ipython_emacs. Milan explained to me how to pass
4223 4229 arguments to ipython through Emacs. Some day I'm going to end up
4224 4230 learning some lisp...
4225 4231
4226 4232 2002-03-04 Fernando Perez <fperez@colorado.edu>
4227 4233
4228 4234 * IPython/ipython_emacs: Created script to be used as the
4229 4235 py-python-command Emacs variable so we can pass IPython
4230 4236 parameters. I can't figure out how to tell Emacs directly to pass
4231 4237 parameters to IPython, so a dummy shell script will do it.
4232 4238
4233 4239 Other enhancements made for things to work better under Emacs'
4234 4240 various types of terminals. Many thanks to Milan Zamazal
4235 4241 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4236 4242
4237 4243 2002-03-01 Fernando Perez <fperez@colorado.edu>
4238 4244
4239 4245 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4240 4246 that loading of readline is now optional. This gives better
4241 4247 control to emacs users.
4242 4248
4243 4249 * IPython/ultraTB.py (__date__): Modified color escape sequences
4244 4250 and now things work fine under xterm and in Emacs' term buffers
4245 4251 (though not shell ones). Well, in emacs you get colors, but all
4246 4252 seem to be 'light' colors (no difference between dark and light
4247 4253 ones). But the garbage chars are gone, and also in xterms. It
4248 4254 seems that now I'm using 'cleaner' ansi sequences.
4249 4255
4250 4256 2002-02-21 Fernando Perez <fperez@colorado.edu>
4251 4257
4252 4258 * Released 0.2.7 (mainly to publish the scoping fix).
4253 4259
4254 4260 * IPython/Logger.py (Logger.logstate): added. A corresponding
4255 4261 @logstate magic was created.
4256 4262
4257 4263 * IPython/Magic.py: fixed nested scoping problem under Python
4258 4264 2.1.x (automagic wasn't working).
4259 4265
4260 4266 2002-02-20 Fernando Perez <fperez@colorado.edu>
4261 4267
4262 4268 * Released 0.2.6.
4263 4269
4264 4270 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4265 4271 option so that logs can come out without any headers at all.
4266 4272
4267 4273 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4268 4274 SciPy.
4269 4275
4270 4276 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4271 4277 that embedded IPython calls don't require vars() to be explicitly
4272 4278 passed. Now they are extracted from the caller's frame (code
4273 4279 snatched from Eric Jones' weave). Added better documentation to
4274 4280 the section on embedding and the example file.
4275 4281
4276 4282 * IPython/genutils.py (page): Changed so that under emacs, it just
4277 4283 prints the string. You can then page up and down in the emacs
4278 4284 buffer itself. This is how the builtin help() works.
4279 4285
4280 4286 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4281 4287 macro scoping: macros need to be executed in the user's namespace
4282 4288 to work as if they had been typed by the user.
4283 4289
4284 4290 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4285 4291 execute automatically (no need to type 'exec...'). They then
4286 4292 behave like 'true macros'. The printing system was also modified
4287 4293 for this to work.
4288 4294
4289 4295 2002-02-19 Fernando Perez <fperez@colorado.edu>
4290 4296
4291 4297 * IPython/genutils.py (page_file): new function for paging files
4292 4298 in an OS-independent way. Also necessary for file viewing to work
4293 4299 well inside Emacs buffers.
4294 4300 (page): Added checks for being in an emacs buffer.
4295 4301 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4296 4302 same bug in iplib.
4297 4303
4298 4304 2002-02-18 Fernando Perez <fperez@colorado.edu>
4299 4305
4300 4306 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4301 4307 of readline so that IPython can work inside an Emacs buffer.
4302 4308
4303 4309 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4304 4310 method signatures (they weren't really bugs, but it looks cleaner
4305 4311 and keeps PyChecker happy).
4306 4312
4307 4313 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4308 4314 for implementing various user-defined hooks. Currently only
4309 4315 display is done.
4310 4316
4311 4317 * IPython/Prompts.py (CachedOutput._display): changed display
4312 4318 functions so that they can be dynamically changed by users easily.
4313 4319
4314 4320 * IPython/Extensions/numeric_formats.py (num_display): added an
4315 4321 extension for printing NumPy arrays in flexible manners. It
4316 4322 doesn't do anything yet, but all the structure is in
4317 4323 place. Ultimately the plan is to implement output format control
4318 4324 like in Octave.
4319 4325
4320 4326 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4321 4327 methods are found at run-time by all the automatic machinery.
4322 4328
4323 4329 2002-02-17 Fernando Perez <fperez@colorado.edu>
4324 4330
4325 4331 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4326 4332 whole file a little.
4327 4333
4328 4334 * ToDo: closed this document. Now there's a new_design.lyx
4329 4335 document for all new ideas. Added making a pdf of it for the
4330 4336 end-user distro.
4331 4337
4332 4338 * IPython/Logger.py (Logger.switch_log): Created this to replace
4333 4339 logon() and logoff(). It also fixes a nasty crash reported by
4334 4340 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4335 4341
4336 4342 * IPython/iplib.py (complete): got auto-completion to work with
4337 4343 automagic (I had wanted this for a long time).
4338 4344
4339 4345 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4340 4346 to @file, since file() is now a builtin and clashes with automagic
4341 4347 for @file.
4342 4348
4343 4349 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4344 4350 of this was previously in iplib, which had grown to more than 2000
4345 4351 lines, way too long. No new functionality, but it makes managing
4346 4352 the code a bit easier.
4347 4353
4348 4354 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4349 4355 information to crash reports.
4350 4356
4351 4357 2002-02-12 Fernando Perez <fperez@colorado.edu>
4352 4358
4353 4359 * Released 0.2.5.
4354 4360
4355 4361 2002-02-11 Fernando Perez <fperez@colorado.edu>
4356 4362
4357 4363 * Wrote a relatively complete Windows installer. It puts
4358 4364 everything in place, creates Start Menu entries and fixes the
4359 4365 color issues. Nothing fancy, but it works.
4360 4366
4361 4367 2002-02-10 Fernando Perez <fperez@colorado.edu>
4362 4368
4363 4369 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4364 4370 os.path.expanduser() call so that we can type @run ~/myfile.py and
4365 4371 have thigs work as expected.
4366 4372
4367 4373 * IPython/genutils.py (page): fixed exception handling so things
4368 4374 work both in Unix and Windows correctly. Quitting a pager triggers
4369 4375 an IOError/broken pipe in Unix, and in windows not finding a pager
4370 4376 is also an IOError, so I had to actually look at the return value
4371 4377 of the exception, not just the exception itself. Should be ok now.
4372 4378
4373 4379 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4374 4380 modified to allow case-insensitive color scheme changes.
4375 4381
4376 4382 2002-02-09 Fernando Perez <fperez@colorado.edu>
4377 4383
4378 4384 * IPython/genutils.py (native_line_ends): new function to leave
4379 4385 user config files with os-native line-endings.
4380 4386
4381 4387 * README and manual updates.
4382 4388
4383 4389 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4384 4390 instead of StringType to catch Unicode strings.
4385 4391
4386 4392 * IPython/genutils.py (filefind): fixed bug for paths with
4387 4393 embedded spaces (very common in Windows).
4388 4394
4389 4395 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4390 4396 files under Windows, so that they get automatically associated
4391 4397 with a text editor. Windows makes it a pain to handle
4392 4398 extension-less files.
4393 4399
4394 4400 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4395 4401 warning about readline only occur for Posix. In Windows there's no
4396 4402 way to get readline, so why bother with the warning.
4397 4403
4398 4404 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4399 4405 for __str__ instead of dir(self), since dir() changed in 2.2.
4400 4406
4401 4407 * Ported to Windows! Tested on XP, I suspect it should work fine
4402 4408 on NT/2000, but I don't think it will work on 98 et al. That
4403 4409 series of Windows is such a piece of junk anyway that I won't try
4404 4410 porting it there. The XP port was straightforward, showed a few
4405 4411 bugs here and there (fixed all), in particular some string
4406 4412 handling stuff which required considering Unicode strings (which
4407 4413 Windows uses). This is good, but hasn't been too tested :) No
4408 4414 fancy installer yet, I'll put a note in the manual so people at
4409 4415 least make manually a shortcut.
4410 4416
4411 4417 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4412 4418 into a single one, "colors". This now controls both prompt and
4413 4419 exception color schemes, and can be changed both at startup
4414 4420 (either via command-line switches or via ipythonrc files) and at
4415 4421 runtime, with @colors.
4416 4422 (Magic.magic_run): renamed @prun to @run and removed the old
4417 4423 @run. The two were too similar to warrant keeping both.
4418 4424
4419 4425 2002-02-03 Fernando Perez <fperez@colorado.edu>
4420 4426
4421 4427 * IPython/iplib.py (install_first_time): Added comment on how to
4422 4428 configure the color options for first-time users. Put a <return>
4423 4429 request at the end so that small-terminal users get a chance to
4424 4430 read the startup info.
4425 4431
4426 4432 2002-01-23 Fernando Perez <fperez@colorado.edu>
4427 4433
4428 4434 * IPython/iplib.py (CachedOutput.update): Changed output memory
4429 4435 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4430 4436 input history we still use _i. Did this b/c these variable are
4431 4437 very commonly used in interactive work, so the less we need to
4432 4438 type the better off we are.
4433 4439 (Magic.magic_prun): updated @prun to better handle the namespaces
4434 4440 the file will run in, including a fix for __name__ not being set
4435 4441 before.
4436 4442
4437 4443 2002-01-20 Fernando Perez <fperez@colorado.edu>
4438 4444
4439 4445 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4440 4446 extra garbage for Python 2.2. Need to look more carefully into
4441 4447 this later.
4442 4448
4443 4449 2002-01-19 Fernando Perez <fperez@colorado.edu>
4444 4450
4445 4451 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4446 4452 display SyntaxError exceptions properly formatted when they occur
4447 4453 (they can be triggered by imported code).
4448 4454
4449 4455 2002-01-18 Fernando Perez <fperez@colorado.edu>
4450 4456
4451 4457 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4452 4458 SyntaxError exceptions are reported nicely formatted, instead of
4453 4459 spitting out only offset information as before.
4454 4460 (Magic.magic_prun): Added the @prun function for executing
4455 4461 programs with command line args inside IPython.
4456 4462
4457 4463 2002-01-16 Fernando Perez <fperez@colorado.edu>
4458 4464
4459 4465 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4460 4466 to *not* include the last item given in a range. This brings their
4461 4467 behavior in line with Python's slicing:
4462 4468 a[n1:n2] -> a[n1]...a[n2-1]
4463 4469 It may be a bit less convenient, but I prefer to stick to Python's
4464 4470 conventions *everywhere*, so users never have to wonder.
4465 4471 (Magic.magic_macro): Added @macro function to ease the creation of
4466 4472 macros.
4467 4473
4468 4474 2002-01-05 Fernando Perez <fperez@colorado.edu>
4469 4475
4470 4476 * Released 0.2.4.
4471 4477
4472 4478 * IPython/iplib.py (Magic.magic_pdef):
4473 4479 (InteractiveShell.safe_execfile): report magic lines and error
4474 4480 lines without line numbers so one can easily copy/paste them for
4475 4481 re-execution.
4476 4482
4477 4483 * Updated manual with recent changes.
4478 4484
4479 4485 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4480 4486 docstring printing when class? is called. Very handy for knowing
4481 4487 how to create class instances (as long as __init__ is well
4482 4488 documented, of course :)
4483 4489 (Magic.magic_doc): print both class and constructor docstrings.
4484 4490 (Magic.magic_pdef): give constructor info if passed a class and
4485 4491 __call__ info for callable object instances.
4486 4492
4487 4493 2002-01-04 Fernando Perez <fperez@colorado.edu>
4488 4494
4489 4495 * Made deep_reload() off by default. It doesn't always work
4490 4496 exactly as intended, so it's probably safer to have it off. It's
4491 4497 still available as dreload() anyway, so nothing is lost.
4492 4498
4493 4499 2002-01-02 Fernando Perez <fperez@colorado.edu>
4494 4500
4495 4501 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4496 4502 so I wanted an updated release).
4497 4503
4498 4504 2001-12-27 Fernando Perez <fperez@colorado.edu>
4499 4505
4500 4506 * IPython/iplib.py (InteractiveShell.interact): Added the original
4501 4507 code from 'code.py' for this module in order to change the
4502 4508 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4503 4509 the history cache would break when the user hit Ctrl-C, and
4504 4510 interact() offers no way to add any hooks to it.
4505 4511
4506 4512 2001-12-23 Fernando Perez <fperez@colorado.edu>
4507 4513
4508 4514 * setup.py: added check for 'MANIFEST' before trying to remove
4509 4515 it. Thanks to Sean Reifschneider.
4510 4516
4511 4517 2001-12-22 Fernando Perez <fperez@colorado.edu>
4512 4518
4513 4519 * Released 0.2.2.
4514 4520
4515 4521 * Finished (reasonably) writing the manual. Later will add the
4516 4522 python-standard navigation stylesheets, but for the time being
4517 4523 it's fairly complete. Distribution will include html and pdf
4518 4524 versions.
4519 4525
4520 4526 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4521 4527 (MayaVi author).
4522 4528
4523 4529 2001-12-21 Fernando Perez <fperez@colorado.edu>
4524 4530
4525 4531 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4526 4532 good public release, I think (with the manual and the distutils
4527 4533 installer). The manual can use some work, but that can go
4528 4534 slowly. Otherwise I think it's quite nice for end users. Next
4529 4535 summer, rewrite the guts of it...
4530 4536
4531 4537 * Changed format of ipythonrc files to use whitespace as the
4532 4538 separator instead of an explicit '='. Cleaner.
4533 4539
4534 4540 2001-12-20 Fernando Perez <fperez@colorado.edu>
4535 4541
4536 4542 * Started a manual in LyX. For now it's just a quick merge of the
4537 4543 various internal docstrings and READMEs. Later it may grow into a
4538 4544 nice, full-blown manual.
4539 4545
4540 4546 * Set up a distutils based installer. Installation should now be
4541 4547 trivially simple for end-users.
4542 4548
4543 4549 2001-12-11 Fernando Perez <fperez@colorado.edu>
4544 4550
4545 4551 * Released 0.2.0. First public release, announced it at
4546 4552 comp.lang.python. From now on, just bugfixes...
4547 4553
4548 4554 * Went through all the files, set copyright/license notices and
4549 4555 cleaned up things. Ready for release.
4550 4556
4551 4557 2001-12-10 Fernando Perez <fperez@colorado.edu>
4552 4558
4553 4559 * Changed the first-time installer not to use tarfiles. It's more
4554 4560 robust now and less unix-dependent. Also makes it easier for
4555 4561 people to later upgrade versions.
4556 4562
4557 4563 * Changed @exit to @abort to reflect the fact that it's pretty
4558 4564 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4559 4565 becomes significant only when IPyhton is embedded: in that case,
4560 4566 C-D closes IPython only, but @abort kills the enclosing program
4561 4567 too (unless it had called IPython inside a try catching
4562 4568 SystemExit).
4563 4569
4564 4570 * Created Shell module which exposes the actuall IPython Shell
4565 4571 classes, currently the normal and the embeddable one. This at
4566 4572 least offers a stable interface we won't need to change when
4567 4573 (later) the internals are rewritten. That rewrite will be confined
4568 4574 to iplib and ipmaker, but the Shell interface should remain as is.
4569 4575
4570 4576 * Added embed module which offers an embeddable IPShell object,
4571 4577 useful to fire up IPython *inside* a running program. Great for
4572 4578 debugging or dynamical data analysis.
4573 4579
4574 4580 2001-12-08 Fernando Perez <fperez@colorado.edu>
4575 4581
4576 4582 * Fixed small bug preventing seeing info from methods of defined
4577 4583 objects (incorrect namespace in _ofind()).
4578 4584
4579 4585 * Documentation cleanup. Moved the main usage docstrings to a
4580 4586 separate file, usage.py (cleaner to maintain, and hopefully in the
4581 4587 future some perlpod-like way of producing interactive, man and
4582 4588 html docs out of it will be found).
4583 4589
4584 4590 * Added @profile to see your profile at any time.
4585 4591
4586 4592 * Added @p as an alias for 'print'. It's especially convenient if
4587 4593 using automagic ('p x' prints x).
4588 4594
4589 4595 * Small cleanups and fixes after a pychecker run.
4590 4596
4591 4597 * Changed the @cd command to handle @cd - and @cd -<n> for
4592 4598 visiting any directory in _dh.
4593 4599
4594 4600 * Introduced _dh, a history of visited directories. @dhist prints
4595 4601 it out with numbers.
4596 4602
4597 4603 2001-12-07 Fernando Perez <fperez@colorado.edu>
4598 4604
4599 4605 * Released 0.1.22
4600 4606
4601 4607 * Made initialization a bit more robust against invalid color
4602 4608 options in user input (exit, not traceback-crash).
4603 4609
4604 4610 * Changed the bug crash reporter to write the report only in the
4605 4611 user's .ipython directory. That way IPython won't litter people's
4606 4612 hard disks with crash files all over the place. Also print on
4607 4613 screen the necessary mail command.
4608 4614
4609 4615 * With the new ultraTB, implemented LightBG color scheme for light
4610 4616 background terminals. A lot of people like white backgrounds, so I
4611 4617 guess we should at least give them something readable.
4612 4618
4613 4619 2001-12-06 Fernando Perez <fperez@colorado.edu>
4614 4620
4615 4621 * Modified the structure of ultraTB. Now there's a proper class
4616 4622 for tables of color schemes which allow adding schemes easily and
4617 4623 switching the active scheme without creating a new instance every
4618 4624 time (which was ridiculous). The syntax for creating new schemes
4619 4625 is also cleaner. I think ultraTB is finally done, with a clean
4620 4626 class structure. Names are also much cleaner (now there's proper
4621 4627 color tables, no need for every variable to also have 'color' in
4622 4628 its name).
4623 4629
4624 4630 * Broke down genutils into separate files. Now genutils only
4625 4631 contains utility functions, and classes have been moved to their
4626 4632 own files (they had enough independent functionality to warrant
4627 4633 it): ConfigLoader, OutputTrap, Struct.
4628 4634
4629 4635 2001-12-05 Fernando Perez <fperez@colorado.edu>
4630 4636
4631 4637 * IPython turns 21! Released version 0.1.21, as a candidate for
4632 4638 public consumption. If all goes well, release in a few days.
4633 4639
4634 4640 * Fixed path bug (files in Extensions/ directory wouldn't be found
4635 4641 unless IPython/ was explicitly in sys.path).
4636 4642
4637 4643 * Extended the FlexCompleter class as MagicCompleter to allow
4638 4644 completion of @-starting lines.
4639 4645
4640 4646 * Created __release__.py file as a central repository for release
4641 4647 info that other files can read from.
4642 4648
4643 4649 * Fixed small bug in logging: when logging was turned on in
4644 4650 mid-session, old lines with special meanings (!@?) were being
4645 4651 logged without the prepended comment, which is necessary since
4646 4652 they are not truly valid python syntax. This should make session
4647 4653 restores produce less errors.
4648 4654
4649 4655 * The namespace cleanup forced me to make a FlexCompleter class
4650 4656 which is nothing but a ripoff of rlcompleter, but with selectable
4651 4657 namespace (rlcompleter only works in __main__.__dict__). I'll try
4652 4658 to submit a note to the authors to see if this change can be
4653 4659 incorporated in future rlcompleter releases (Dec.6: done)
4654 4660
4655 4661 * More fixes to namespace handling. It was a mess! Now all
4656 4662 explicit references to __main__.__dict__ are gone (except when
4657 4663 really needed) and everything is handled through the namespace
4658 4664 dicts in the IPython instance. We seem to be getting somewhere
4659 4665 with this, finally...
4660 4666
4661 4667 * Small documentation updates.
4662 4668
4663 4669 * Created the Extensions directory under IPython (with an
4664 4670 __init__.py). Put the PhysicalQ stuff there. This directory should
4665 4671 be used for all special-purpose extensions.
4666 4672
4667 4673 * File renaming:
4668 4674 ipythonlib --> ipmaker
4669 4675 ipplib --> iplib
4670 4676 This makes a bit more sense in terms of what these files actually do.
4671 4677
4672 4678 * Moved all the classes and functions in ipythonlib to ipplib, so
4673 4679 now ipythonlib only has make_IPython(). This will ease up its
4674 4680 splitting in smaller functional chunks later.
4675 4681
4676 4682 * Cleaned up (done, I think) output of @whos. Better column
4677 4683 formatting, and now shows str(var) for as much as it can, which is
4678 4684 typically what one gets with a 'print var'.
4679 4685
4680 4686 2001-12-04 Fernando Perez <fperez@colorado.edu>
4681 4687
4682 4688 * Fixed namespace problems. Now builtin/IPyhton/user names get
4683 4689 properly reported in their namespace. Internal namespace handling
4684 4690 is finally getting decent (not perfect yet, but much better than
4685 4691 the ad-hoc mess we had).
4686 4692
4687 4693 * Removed -exit option. If people just want to run a python
4688 4694 script, that's what the normal interpreter is for. Less
4689 4695 unnecessary options, less chances for bugs.
4690 4696
4691 4697 * Added a crash handler which generates a complete post-mortem if
4692 4698 IPython crashes. This will help a lot in tracking bugs down the
4693 4699 road.
4694 4700
4695 4701 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4696 4702 which were boud to functions being reassigned would bypass the
4697 4703 logger, breaking the sync of _il with the prompt counter. This
4698 4704 would then crash IPython later when a new line was logged.
4699 4705
4700 4706 2001-12-02 Fernando Perez <fperez@colorado.edu>
4701 4707
4702 4708 * Made IPython a package. This means people don't have to clutter
4703 4709 their sys.path with yet another directory. Changed the INSTALL
4704 4710 file accordingly.
4705 4711
4706 4712 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4707 4713 sorts its output (so @who shows it sorted) and @whos formats the
4708 4714 table according to the width of the first column. Nicer, easier to
4709 4715 read. Todo: write a generic table_format() which takes a list of
4710 4716 lists and prints it nicely formatted, with optional row/column
4711 4717 separators and proper padding and justification.
4712 4718
4713 4719 * Released 0.1.20
4714 4720
4715 4721 * Fixed bug in @log which would reverse the inputcache list (a
4716 4722 copy operation was missing).
4717 4723
4718 4724 * Code cleanup. @config was changed to use page(). Better, since
4719 4725 its output is always quite long.
4720 4726
4721 4727 * Itpl is back as a dependency. I was having too many problems
4722 4728 getting the parametric aliases to work reliably, and it's just
4723 4729 easier to code weird string operations with it than playing %()s
4724 4730 games. It's only ~6k, so I don't think it's too big a deal.
4725 4731
4726 4732 * Found (and fixed) a very nasty bug with history. !lines weren't
4727 4733 getting cached, and the out of sync caches would crash
4728 4734 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4729 4735 division of labor a bit better. Bug fixed, cleaner structure.
4730 4736
4731 4737 2001-12-01 Fernando Perez <fperez@colorado.edu>
4732 4738
4733 4739 * Released 0.1.19
4734 4740
4735 4741 * Added option -n to @hist to prevent line number printing. Much
4736 4742 easier to copy/paste code this way.
4737 4743
4738 4744 * Created global _il to hold the input list. Allows easy
4739 4745 re-execution of blocks of code by slicing it (inspired by Janko's
4740 4746 comment on 'macros').
4741 4747
4742 4748 * Small fixes and doc updates.
4743 4749
4744 4750 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4745 4751 much too fragile with automagic. Handles properly multi-line
4746 4752 statements and takes parameters.
4747 4753
4748 4754 2001-11-30 Fernando Perez <fperez@colorado.edu>
4749 4755
4750 4756 * Version 0.1.18 released.
4751 4757
4752 4758 * Fixed nasty namespace bug in initial module imports.
4753 4759
4754 4760 * Added copyright/license notes to all code files (except
4755 4761 DPyGetOpt). For the time being, LGPL. That could change.
4756 4762
4757 4763 * Rewrote a much nicer README, updated INSTALL, cleaned up
4758 4764 ipythonrc-* samples.
4759 4765
4760 4766 * Overall code/documentation cleanup. Basically ready for
4761 4767 release. Only remaining thing: licence decision (LGPL?).
4762 4768
4763 4769 * Converted load_config to a class, ConfigLoader. Now recursion
4764 4770 control is better organized. Doesn't include the same file twice.
4765 4771
4766 4772 2001-11-29 Fernando Perez <fperez@colorado.edu>
4767 4773
4768 4774 * Got input history working. Changed output history variables from
4769 4775 _p to _o so that _i is for input and _o for output. Just cleaner
4770 4776 convention.
4771 4777
4772 4778 * Implemented parametric aliases. This pretty much allows the
4773 4779 alias system to offer full-blown shell convenience, I think.
4774 4780
4775 4781 * Version 0.1.17 released, 0.1.18 opened.
4776 4782
4777 4783 * dot_ipython/ipythonrc (alias): added documentation.
4778 4784 (xcolor): Fixed small bug (xcolors -> xcolor)
4779 4785
4780 4786 * Changed the alias system. Now alias is a magic command to define
4781 4787 aliases just like the shell. Rationale: the builtin magics should
4782 4788 be there for things deeply connected to IPython's
4783 4789 architecture. And this is a much lighter system for what I think
4784 4790 is the really important feature: allowing users to define quickly
4785 4791 magics that will do shell things for them, so they can customize
4786 4792 IPython easily to match their work habits. If someone is really
4787 4793 desperate to have another name for a builtin alias, they can
4788 4794 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4789 4795 works.
4790 4796
4791 4797 2001-11-28 Fernando Perez <fperez@colorado.edu>
4792 4798
4793 4799 * Changed @file so that it opens the source file at the proper
4794 4800 line. Since it uses less, if your EDITOR environment is
4795 4801 configured, typing v will immediately open your editor of choice
4796 4802 right at the line where the object is defined. Not as quick as
4797 4803 having a direct @edit command, but for all intents and purposes it
4798 4804 works. And I don't have to worry about writing @edit to deal with
4799 4805 all the editors, less does that.
4800 4806
4801 4807 * Version 0.1.16 released, 0.1.17 opened.
4802 4808
4803 4809 * Fixed some nasty bugs in the page/page_dumb combo that could
4804 4810 crash IPython.
4805 4811
4806 4812 2001-11-27 Fernando Perez <fperez@colorado.edu>
4807 4813
4808 4814 * Version 0.1.15 released, 0.1.16 opened.
4809 4815
4810 4816 * Finally got ? and ?? to work for undefined things: now it's
4811 4817 possible to type {}.get? and get information about the get method
4812 4818 of dicts, or os.path? even if only os is defined (so technically
4813 4819 os.path isn't). Works at any level. For example, after import os,
4814 4820 os?, os.path?, os.path.abspath? all work. This is great, took some
4815 4821 work in _ofind.
4816 4822
4817 4823 * Fixed more bugs with logging. The sanest way to do it was to add
4818 4824 to @log a 'mode' parameter. Killed two in one shot (this mode
4819 4825 option was a request of Janko's). I think it's finally clean
4820 4826 (famous last words).
4821 4827
4822 4828 * Added a page_dumb() pager which does a decent job of paging on
4823 4829 screen, if better things (like less) aren't available. One less
4824 4830 unix dependency (someday maybe somebody will port this to
4825 4831 windows).
4826 4832
4827 4833 * Fixed problem in magic_log: would lock of logging out if log
4828 4834 creation failed (because it would still think it had succeeded).
4829 4835
4830 4836 * Improved the page() function using curses to auto-detect screen
4831 4837 size. Now it can make a much better decision on whether to print
4832 4838 or page a string. Option screen_length was modified: a value 0
4833 4839 means auto-detect, and that's the default now.
4834 4840
4835 4841 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4836 4842 go out. I'll test it for a few days, then talk to Janko about
4837 4843 licences and announce it.
4838 4844
4839 4845 * Fixed the length of the auto-generated ---> prompt which appears
4840 4846 for auto-parens and auto-quotes. Getting this right isn't trivial,
4841 4847 with all the color escapes, different prompt types and optional
4842 4848 separators. But it seems to be working in all the combinations.
4843 4849
4844 4850 2001-11-26 Fernando Perez <fperez@colorado.edu>
4845 4851
4846 4852 * Wrote a regexp filter to get option types from the option names
4847 4853 string. This eliminates the need to manually keep two duplicate
4848 4854 lists.
4849 4855
4850 4856 * Removed the unneeded check_option_names. Now options are handled
4851 4857 in a much saner manner and it's easy to visually check that things
4852 4858 are ok.
4853 4859
4854 4860 * Updated version numbers on all files I modified to carry a
4855 4861 notice so Janko and Nathan have clear version markers.
4856 4862
4857 4863 * Updated docstring for ultraTB with my changes. I should send
4858 4864 this to Nathan.
4859 4865
4860 4866 * Lots of small fixes. Ran everything through pychecker again.
4861 4867
4862 4868 * Made loading of deep_reload an cmd line option. If it's not too
4863 4869 kosher, now people can just disable it. With -nodeep_reload it's
4864 4870 still available as dreload(), it just won't overwrite reload().
4865 4871
4866 4872 * Moved many options to the no| form (-opt and -noopt
4867 4873 accepted). Cleaner.
4868 4874
4869 4875 * Changed magic_log so that if called with no parameters, it uses
4870 4876 'rotate' mode. That way auto-generated logs aren't automatically
4871 4877 over-written. For normal logs, now a backup is made if it exists
4872 4878 (only 1 level of backups). A new 'backup' mode was added to the
4873 4879 Logger class to support this. This was a request by Janko.
4874 4880
4875 4881 * Added @logoff/@logon to stop/restart an active log.
4876 4882
4877 4883 * Fixed a lot of bugs in log saving/replay. It was pretty
4878 4884 broken. Now special lines (!@,/) appear properly in the command
4879 4885 history after a log replay.
4880 4886
4881 4887 * Tried and failed to implement full session saving via pickle. My
4882 4888 idea was to pickle __main__.__dict__, but modules can't be
4883 4889 pickled. This would be a better alternative to replaying logs, but
4884 4890 seems quite tricky to get to work. Changed -session to be called
4885 4891 -logplay, which more accurately reflects what it does. And if we
4886 4892 ever get real session saving working, -session is now available.
4887 4893
4888 4894 * Implemented color schemes for prompts also. As for tracebacks,
4889 4895 currently only NoColor and Linux are supported. But now the
4890 4896 infrastructure is in place, based on a generic ColorScheme
4891 4897 class. So writing and activating new schemes both for the prompts
4892 4898 and the tracebacks should be straightforward.
4893 4899
4894 4900 * Version 0.1.13 released, 0.1.14 opened.
4895 4901
4896 4902 * Changed handling of options for output cache. Now counter is
4897 4903 hardwired starting at 1 and one specifies the maximum number of
4898 4904 entries *in the outcache* (not the max prompt counter). This is
4899 4905 much better, since many statements won't increase the cache
4900 4906 count. It also eliminated some confusing options, now there's only
4901 4907 one: cache_size.
4902 4908
4903 4909 * Added 'alias' magic function and magic_alias option in the
4904 4910 ipythonrc file. Now the user can easily define whatever names he
4905 4911 wants for the magic functions without having to play weird
4906 4912 namespace games. This gives IPython a real shell-like feel.
4907 4913
4908 4914 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4909 4915 @ or not).
4910 4916
4911 4917 This was one of the last remaining 'visible' bugs (that I know
4912 4918 of). I think if I can clean up the session loading so it works
4913 4919 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4914 4920 about licensing).
4915 4921
4916 4922 2001-11-25 Fernando Perez <fperez@colorado.edu>
4917 4923
4918 4924 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4919 4925 there's a cleaner distinction between what ? and ?? show.
4920 4926
4921 4927 * Added screen_length option. Now the user can define his own
4922 4928 screen size for page() operations.
4923 4929
4924 4930 * Implemented magic shell-like functions with automatic code
4925 4931 generation. Now adding another function is just a matter of adding
4926 4932 an entry to a dict, and the function is dynamically generated at
4927 4933 run-time. Python has some really cool features!
4928 4934
4929 4935 * Renamed many options to cleanup conventions a little. Now all
4930 4936 are lowercase, and only underscores where needed. Also in the code
4931 4937 option name tables are clearer.
4932 4938
4933 4939 * Changed prompts a little. Now input is 'In [n]:' instead of
4934 4940 'In[n]:='. This allows it the numbers to be aligned with the
4935 4941 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4936 4942 Python (it was a Mathematica thing). The '...' continuation prompt
4937 4943 was also changed a little to align better.
4938 4944
4939 4945 * Fixed bug when flushing output cache. Not all _p<n> variables
4940 4946 exist, so their deletion needs to be wrapped in a try:
4941 4947
4942 4948 * Figured out how to properly use inspect.formatargspec() (it
4943 4949 requires the args preceded by *). So I removed all the code from
4944 4950 _get_pdef in Magic, which was just replicating that.
4945 4951
4946 4952 * Added test to prefilter to allow redefining magic function names
4947 4953 as variables. This is ok, since the @ form is always available,
4948 4954 but whe should allow the user to define a variable called 'ls' if
4949 4955 he needs it.
4950 4956
4951 4957 * Moved the ToDo information from README into a separate ToDo.
4952 4958
4953 4959 * General code cleanup and small bugfixes. I think it's close to a
4954 4960 state where it can be released, obviously with a big 'beta'
4955 4961 warning on it.
4956 4962
4957 4963 * Got the magic function split to work. Now all magics are defined
4958 4964 in a separate class. It just organizes things a bit, and now
4959 4965 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4960 4966 was too long).
4961 4967
4962 4968 * Changed @clear to @reset to avoid potential confusions with
4963 4969 the shell command clear. Also renamed @cl to @clear, which does
4964 4970 exactly what people expect it to from their shell experience.
4965 4971
4966 4972 Added a check to the @reset command (since it's so
4967 4973 destructive, it's probably a good idea to ask for confirmation).
4968 4974 But now reset only works for full namespace resetting. Since the
4969 4975 del keyword is already there for deleting a few specific
4970 4976 variables, I don't see the point of having a redundant magic
4971 4977 function for the same task.
4972 4978
4973 4979 2001-11-24 Fernando Perez <fperez@colorado.edu>
4974 4980
4975 4981 * Updated the builtin docs (esp. the ? ones).
4976 4982
4977 4983 * Ran all the code through pychecker. Not terribly impressed with
4978 4984 it: lots of spurious warnings and didn't really find anything of
4979 4985 substance (just a few modules being imported and not used).
4980 4986
4981 4987 * Implemented the new ultraTB functionality into IPython. New
4982 4988 option: xcolors. This chooses color scheme. xmode now only selects
4983 4989 between Plain and Verbose. Better orthogonality.
4984 4990
4985 4991 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4986 4992 mode and color scheme for the exception handlers. Now it's
4987 4993 possible to have the verbose traceback with no coloring.
4988 4994
4989 4995 2001-11-23 Fernando Perez <fperez@colorado.edu>
4990 4996
4991 4997 * Version 0.1.12 released, 0.1.13 opened.
4992 4998
4993 4999 * Removed option to set auto-quote and auto-paren escapes by
4994 5000 user. The chances of breaking valid syntax are just too high. If
4995 5001 someone *really* wants, they can always dig into the code.
4996 5002
4997 5003 * Made prompt separators configurable.
4998 5004
4999 5005 2001-11-22 Fernando Perez <fperez@colorado.edu>
5000 5006
5001 5007 * Small bugfixes in many places.
5002 5008
5003 5009 * Removed the MyCompleter class from ipplib. It seemed redundant
5004 5010 with the C-p,C-n history search functionality. Less code to
5005 5011 maintain.
5006 5012
5007 5013 * Moved all the original ipython.py code into ipythonlib.py. Right
5008 5014 now it's just one big dump into a function called make_IPython, so
5009 5015 no real modularity has been gained. But at least it makes the
5010 5016 wrapper script tiny, and since ipythonlib is a module, it gets
5011 5017 compiled and startup is much faster.
5012 5018
5013 5019 This is a reasobably 'deep' change, so we should test it for a
5014 5020 while without messing too much more with the code.
5015 5021
5016 5022 2001-11-21 Fernando Perez <fperez@colorado.edu>
5017 5023
5018 5024 * Version 0.1.11 released, 0.1.12 opened for further work.
5019 5025
5020 5026 * Removed dependency on Itpl. It was only needed in one place. It
5021 5027 would be nice if this became part of python, though. It makes life
5022 5028 *a lot* easier in some cases.
5023 5029
5024 5030 * Simplified the prefilter code a bit. Now all handlers are
5025 5031 expected to explicitly return a value (at least a blank string).
5026 5032
5027 5033 * Heavy edits in ipplib. Removed the help system altogether. Now
5028 5034 obj?/?? is used for inspecting objects, a magic @doc prints
5029 5035 docstrings, and full-blown Python help is accessed via the 'help'
5030 5036 keyword. This cleans up a lot of code (less to maintain) and does
5031 5037 the job. Since 'help' is now a standard Python component, might as
5032 5038 well use it and remove duplicate functionality.
5033 5039
5034 5040 Also removed the option to use ipplib as a standalone program. By
5035 5041 now it's too dependent on other parts of IPython to function alone.
5036 5042
5037 5043 * Fixed bug in genutils.pager. It would crash if the pager was
5038 5044 exited immediately after opening (broken pipe).
5039 5045
5040 5046 * Trimmed down the VerboseTB reporting a little. The header is
5041 5047 much shorter now and the repeated exception arguments at the end
5042 5048 have been removed. For interactive use the old header seemed a bit
5043 5049 excessive.
5044 5050
5045 5051 * Fixed small bug in output of @whos for variables with multi-word
5046 5052 types (only first word was displayed).
5047 5053
5048 5054 2001-11-17 Fernando Perez <fperez@colorado.edu>
5049 5055
5050 5056 * Version 0.1.10 released, 0.1.11 opened for further work.
5051 5057
5052 5058 * Modified dirs and friends. dirs now *returns* the stack (not
5053 5059 prints), so one can manipulate it as a variable. Convenient to
5054 5060 travel along many directories.
5055 5061
5056 5062 * Fixed bug in magic_pdef: would only work with functions with
5057 5063 arguments with default values.
5058 5064
5059 5065 2001-11-14 Fernando Perez <fperez@colorado.edu>
5060 5066
5061 5067 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5062 5068 example with IPython. Various other minor fixes and cleanups.
5063 5069
5064 5070 * Version 0.1.9 released, 0.1.10 opened for further work.
5065 5071
5066 5072 * Added sys.path to the list of directories searched in the
5067 5073 execfile= option. It used to be the current directory and the
5068 5074 user's IPYTHONDIR only.
5069 5075
5070 5076 2001-11-13 Fernando Perez <fperez@colorado.edu>
5071 5077
5072 5078 * Reinstated the raw_input/prefilter separation that Janko had
5073 5079 initially. This gives a more convenient setup for extending the
5074 5080 pre-processor from the outside: raw_input always gets a string,
5075 5081 and prefilter has to process it. We can then redefine prefilter
5076 5082 from the outside and implement extensions for special
5077 5083 purposes.
5078 5084
5079 5085 Today I got one for inputting PhysicalQuantity objects
5080 5086 (from Scientific) without needing any function calls at
5081 5087 all. Extremely convenient, and it's all done as a user-level
5082 5088 extension (no IPython code was touched). Now instead of:
5083 5089 a = PhysicalQuantity(4.2,'m/s**2')
5084 5090 one can simply say
5085 5091 a = 4.2 m/s**2
5086 5092 or even
5087 5093 a = 4.2 m/s^2
5088 5094
5089 5095 I use this, but it's also a proof of concept: IPython really is
5090 5096 fully user-extensible, even at the level of the parsing of the
5091 5097 command line. It's not trivial, but it's perfectly doable.
5092 5098
5093 5099 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5094 5100 the problem of modules being loaded in the inverse order in which
5095 5101 they were defined in
5096 5102
5097 5103 * Version 0.1.8 released, 0.1.9 opened for further work.
5098 5104
5099 5105 * Added magics pdef, source and file. They respectively show the
5100 5106 definition line ('prototype' in C), source code and full python
5101 5107 file for any callable object. The object inspector oinfo uses
5102 5108 these to show the same information.
5103 5109
5104 5110 * Version 0.1.7 released, 0.1.8 opened for further work.
5105 5111
5106 5112 * Separated all the magic functions into a class called Magic. The
5107 5113 InteractiveShell class was becoming too big for Xemacs to handle
5108 5114 (de-indenting a line would lock it up for 10 seconds while it
5109 5115 backtracked on the whole class!)
5110 5116
5111 5117 FIXME: didn't work. It can be done, but right now namespaces are
5112 5118 all messed up. Do it later (reverted it for now, so at least
5113 5119 everything works as before).
5114 5120
5115 5121 * Got the object introspection system (magic_oinfo) working! I
5116 5122 think this is pretty much ready for release to Janko, so he can
5117 5123 test it for a while and then announce it. Pretty much 100% of what
5118 5124 I wanted for the 'phase 1' release is ready. Happy, tired.
5119 5125
5120 5126 2001-11-12 Fernando Perez <fperez@colorado.edu>
5121 5127
5122 5128 * Version 0.1.6 released, 0.1.7 opened for further work.
5123 5129
5124 5130 * Fixed bug in printing: it used to test for truth before
5125 5131 printing, so 0 wouldn't print. Now checks for None.
5126 5132
5127 5133 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5128 5134 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5129 5135 reaches by hand into the outputcache. Think of a better way to do
5130 5136 this later.
5131 5137
5132 5138 * Various small fixes thanks to Nathan's comments.
5133 5139
5134 5140 * Changed magic_pprint to magic_Pprint. This way it doesn't
5135 5141 collide with pprint() and the name is consistent with the command
5136 5142 line option.
5137 5143
5138 5144 * Changed prompt counter behavior to be fully like
5139 5145 Mathematica's. That is, even input that doesn't return a result
5140 5146 raises the prompt counter. The old behavior was kind of confusing
5141 5147 (getting the same prompt number several times if the operation
5142 5148 didn't return a result).
5143 5149
5144 5150 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5145 5151
5146 5152 * Fixed -Classic mode (wasn't working anymore).
5147 5153
5148 5154 * Added colored prompts using Nathan's new code. Colors are
5149 5155 currently hardwired, they can be user-configurable. For
5150 5156 developers, they can be chosen in file ipythonlib.py, at the
5151 5157 beginning of the CachedOutput class def.
5152 5158
5153 5159 2001-11-11 Fernando Perez <fperez@colorado.edu>
5154 5160
5155 5161 * Version 0.1.5 released, 0.1.6 opened for further work.
5156 5162
5157 5163 * Changed magic_env to *return* the environment as a dict (not to
5158 5164 print it). This way it prints, but it can also be processed.
5159 5165
5160 5166 * Added Verbose exception reporting to interactive
5161 5167 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5162 5168 traceback. Had to make some changes to the ultraTB file. This is
5163 5169 probably the last 'big' thing in my mental todo list. This ties
5164 5170 in with the next entry:
5165 5171
5166 5172 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5167 5173 has to specify is Plain, Color or Verbose for all exception
5168 5174 handling.
5169 5175
5170 5176 * Removed ShellServices option. All this can really be done via
5171 5177 the magic system. It's easier to extend, cleaner and has automatic
5172 5178 namespace protection and documentation.
5173 5179
5174 5180 2001-11-09 Fernando Perez <fperez@colorado.edu>
5175 5181
5176 5182 * Fixed bug in output cache flushing (missing parameter to
5177 5183 __init__). Other small bugs fixed (found using pychecker).
5178 5184
5179 5185 * Version 0.1.4 opened for bugfixing.
5180 5186
5181 5187 2001-11-07 Fernando Perez <fperez@colorado.edu>
5182 5188
5183 5189 * Version 0.1.3 released, mainly because of the raw_input bug.
5184 5190
5185 5191 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5186 5192 and when testing for whether things were callable, a call could
5187 5193 actually be made to certain functions. They would get called again
5188 5194 once 'really' executed, with a resulting double call. A disaster
5189 5195 in many cases (list.reverse() would never work!).
5190 5196
5191 5197 * Removed prefilter() function, moved its code to raw_input (which
5192 5198 after all was just a near-empty caller for prefilter). This saves
5193 5199 a function call on every prompt, and simplifies the class a tiny bit.
5194 5200
5195 5201 * Fix _ip to __ip name in magic example file.
5196 5202
5197 5203 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5198 5204 work with non-gnu versions of tar.
5199 5205
5200 5206 2001-11-06 Fernando Perez <fperez@colorado.edu>
5201 5207
5202 5208 * Version 0.1.2. Just to keep track of the recent changes.
5203 5209
5204 5210 * Fixed nasty bug in output prompt routine. It used to check 'if
5205 5211 arg != None...'. Problem is, this fails if arg implements a
5206 5212 special comparison (__cmp__) which disallows comparing to
5207 5213 None. Found it when trying to use the PhysicalQuantity module from
5208 5214 ScientificPython.
5209 5215
5210 5216 2001-11-05 Fernando Perez <fperez@colorado.edu>
5211 5217
5212 5218 * Also added dirs. Now the pushd/popd/dirs family functions
5213 5219 basically like the shell, with the added convenience of going home
5214 5220 when called with no args.
5215 5221
5216 5222 * pushd/popd slightly modified to mimic shell behavior more
5217 5223 closely.
5218 5224
5219 5225 * Added env,pushd,popd from ShellServices as magic functions. I
5220 5226 think the cleanest will be to port all desired functions from
5221 5227 ShellServices as magics and remove ShellServices altogether. This
5222 5228 will provide a single, clean way of adding functionality
5223 5229 (shell-type or otherwise) to IP.
5224 5230
5225 5231 2001-11-04 Fernando Perez <fperez@colorado.edu>
5226 5232
5227 5233 * Added .ipython/ directory to sys.path. This way users can keep
5228 5234 customizations there and access them via import.
5229 5235
5230 5236 2001-11-03 Fernando Perez <fperez@colorado.edu>
5231 5237
5232 5238 * Opened version 0.1.1 for new changes.
5233 5239
5234 5240 * Changed version number to 0.1.0: first 'public' release, sent to
5235 5241 Nathan and Janko.
5236 5242
5237 5243 * Lots of small fixes and tweaks.
5238 5244
5239 5245 * Minor changes to whos format. Now strings are shown, snipped if
5240 5246 too long.
5241 5247
5242 5248 * Changed ShellServices to work on __main__ so they show up in @who
5243 5249
5244 5250 * Help also works with ? at the end of a line:
5245 5251 ?sin and sin?
5246 5252 both produce the same effect. This is nice, as often I use the
5247 5253 tab-complete to find the name of a method, but I used to then have
5248 5254 to go to the beginning of the line to put a ? if I wanted more
5249 5255 info. Now I can just add the ? and hit return. Convenient.
5250 5256
5251 5257 2001-11-02 Fernando Perez <fperez@colorado.edu>
5252 5258
5253 5259 * Python version check (>=2.1) added.
5254 5260
5255 5261 * Added LazyPython documentation. At this point the docs are quite
5256 5262 a mess. A cleanup is in order.
5257 5263
5258 5264 * Auto-installer created. For some bizarre reason, the zipfiles
5259 5265 module isn't working on my system. So I made a tar version
5260 5266 (hopefully the command line options in various systems won't kill
5261 5267 me).
5262 5268
5263 5269 * Fixes to Struct in genutils. Now all dictionary-like methods are
5264 5270 protected (reasonably).
5265 5271
5266 5272 * Added pager function to genutils and changed ? to print usage
5267 5273 note through it (it was too long).
5268 5274
5269 5275 * Added the LazyPython functionality. Works great! I changed the
5270 5276 auto-quote escape to ';', it's on home row and next to '. But
5271 5277 both auto-quote and auto-paren (still /) escapes are command-line
5272 5278 parameters.
5273 5279
5274 5280
5275 5281 2001-11-01 Fernando Perez <fperez@colorado.edu>
5276 5282
5277 5283 * Version changed to 0.0.7. Fairly large change: configuration now
5278 5284 is all stored in a directory, by default .ipython. There, all
5279 5285 config files have normal looking names (not .names)
5280 5286
5281 5287 * Version 0.0.6 Released first to Lucas and Archie as a test
5282 5288 run. Since it's the first 'semi-public' release, change version to
5283 5289 > 0.0.6 for any changes now.
5284 5290
5285 5291 * Stuff I had put in the ipplib.py changelog:
5286 5292
5287 5293 Changes to InteractiveShell:
5288 5294
5289 5295 - Made the usage message a parameter.
5290 5296
5291 5297 - Require the name of the shell variable to be given. It's a bit
5292 5298 of a hack, but allows the name 'shell' not to be hardwire in the
5293 5299 magic (@) handler, which is problematic b/c it requires
5294 5300 polluting the global namespace with 'shell'. This in turn is
5295 5301 fragile: if a user redefines a variable called shell, things
5296 5302 break.
5297 5303
5298 5304 - magic @: all functions available through @ need to be defined
5299 5305 as magic_<name>, even though they can be called simply as
5300 5306 @<name>. This allows the special command @magic to gather
5301 5307 information automatically about all existing magic functions,
5302 5308 even if they are run-time user extensions, by parsing the shell
5303 5309 instance __dict__ looking for special magic_ names.
5304 5310
5305 5311 - mainloop: added *two* local namespace parameters. This allows
5306 5312 the class to differentiate between parameters which were there
5307 5313 before and after command line initialization was processed. This
5308 5314 way, later @who can show things loaded at startup by the
5309 5315 user. This trick was necessary to make session saving/reloading
5310 5316 really work: ideally after saving/exiting/reloading a session,
5311 5317 *everythin* should look the same, including the output of @who. I
5312 5318 was only able to make this work with this double namespace
5313 5319 trick.
5314 5320
5315 5321 - added a header to the logfile which allows (almost) full
5316 5322 session restoring.
5317 5323
5318 5324 - prepend lines beginning with @ or !, with a and log
5319 5325 them. Why? !lines: may be useful to know what you did @lines:
5320 5326 they may affect session state. So when restoring a session, at
5321 5327 least inform the user of their presence. I couldn't quite get
5322 5328 them to properly re-execute, but at least the user is warned.
5323 5329
5324 5330 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now