##// END OF EJS Templates
- Added patches for better pydb and Emacs support....
fperez -
Show More
@@ -1,497 +1,505 b''
1 1 # -*- coding: utf-8 -*-
2 2 """
3 3 Pdb debugger class.
4 4
5 5 Modified from the standard pdb.Pdb class to avoid including readline, so that
6 6 the command line completion of other programs which include this isn't
7 7 damaged.
8 8
9 9 In the future, this class will be expanded with improvements over the standard
10 10 pdb.
11 11
12 12 The code in this file is mainly lifted out of cmd.py in Python 2.2, with minor
13 13 changes. Licensing should therefore be under the standard Python terms. For
14 14 details on the PSF (Python Software Foundation) standard license, see:
15 15
16 16 http://www.python.org/2.2.3/license.html
17 17
18 $Id: Debugger.py 2014 2007-01-05 10:36:58Z fperez $"""
18 $Id: Debugger.py 2154 2007-03-19 00:10:07Z fperez $"""
19 19
20 20 #*****************************************************************************
21 21 #
22 22 # Since this file is essentially a modified copy of the pdb module which is
23 23 # part of the standard Python distribution, I assume that the proper procedure
24 24 # is to maintain its copyright as belonging to the Python Software Foundation
25 25 # (in addition to my own, for all new code).
26 26 #
27 27 # Copyright (C) 2001 Python Software Foundation, www.python.org
28 28 # Copyright (C) 2005-2006 Fernando Perez. <fperez@colorado.edu>
29 29 #
30 30 # Distributed under the terms of the BSD License. The full license is in
31 31 # the file COPYING, distributed as part of this software.
32 32 #
33 33 #*****************************************************************************
34 34
35 35 from IPython import Release
36 36 __author__ = '%s <%s>' % Release.authors['Fernando']
37 37 __license__ = 'Python'
38 38
39 39 import bdb
40 40 import cmd
41 41 import linecache
42 42 import os
43 43 import sys
44 44
45 45 from IPython import PyColorize, ColorANSI, ipapi
46 46 from IPython.genutils import Term
47 47 from IPython.excolors import ExceptionColors
48 48
49 49 # See if we can use pydb.
50 50 has_pydb = False
51 51 prompt = 'ipdb>'
52 52 try:
53 53 import pydb
54 54 if hasattr(pydb.pydb, "runl"):
55 55 has_pydb = True
56 56 from pydb import Pdb as OldPdb
57 prompt = 'ipydb>'
58 57 except ImportError:
59 58 pass
60 59
61 60 if has_pydb:
62 61 from pydb import Pdb as OldPdb
62 prompt = 'ipydb> '
63 63 else:
64 64 from pdb import Pdb as OldPdb
65 65
66 66 # Allow the set_trace code to operate outside of an ipython instance, even if
67 67 # it does so with some limitations. The rest of this support is implemented in
68 68 # the Tracer constructor.
69 69 def BdbQuit_excepthook(et,ev,tb):
70 70 if et==bdb.BdbQuit:
71 71 print 'Exiting Debugger.'
72 72 else:
73 73 ehook.excepthook_ori(et,ev,tb)
74 74
75 75 def BdbQuit_IPython_excepthook(self,et,ev,tb):
76 76 print 'Exiting Debugger.'
77 77
78 78 class Tracer(object):
79 79 """Class for local debugging, similar to pdb.set_trace.
80 80
81 81 Instances of this class, when called, behave like pdb.set_trace, but
82 82 providing IPython's enhanced capabilities.
83 83
84 84 This is implemented as a class which must be initialized in your own code
85 85 and not as a standalone function because we need to detect at runtime
86 86 whether IPython is already active or not. That detection is done in the
87 87 constructor, ensuring that this code plays nicely with a running IPython,
88 88 while functioning acceptably (though with limitations) if outside of it.
89 89 """
90 90
91 91 def __init__(self,colors=None):
92 92 """Create a local debugger instance.
93 93
94 94 :Parameters:
95 95
96 96 - `colors` (None): a string containing the name of the color scheme to
97 97 use, it must be one of IPython's valid color schemes. If not given, the
98 98 function will default to the current IPython scheme when running inside
99 99 IPython, and to 'NoColor' otherwise.
100 100
101 101 Usage example:
102 102
103 103 from IPython.Debugger import Tracer; debug_here = Tracer()
104 104
105 105 ... later in your code
106 106 debug_here() # -> will open up the debugger at that point.
107 107
108 108 Once the debugger activates, you can use all of its regular commands to
109 109 step through code, set breakpoints, etc. See the pdb documentation
110 110 from the Python standard library for usage details.
111 111 """
112 112
113 113 global __IPYTHON__
114 114 try:
115 115 __IPYTHON__
116 116 except NameError:
117 117 # Outside of ipython, we set our own exception hook manually
118 118 __IPYTHON__ = ipapi.get(True,False)
119 119 BdbQuit_excepthook.excepthook_ori = sys.excepthook
120 120 sys.excepthook = BdbQuit_excepthook
121 121 def_colors = 'NoColor'
122 122 try:
123 123 # Limited tab completion support
124 124 import rlcompleter,readline
125 125 readline.parse_and_bind('tab: complete')
126 126 except ImportError:
127 127 pass
128 128 else:
129 129 # In ipython, we use its custom exception handler mechanism
130 130 ip = ipapi.get()
131 131 def_colors = ip.options.colors
132 132 ip.set_custom_exc((bdb.BdbQuit,),BdbQuit_IPython_excepthook)
133 133
134 134 if colors is None:
135 135 colors = def_colors
136 136 self.debugger = Pdb(colors)
137 137
138 138 def __call__(self):
139 139 """Starts an interactive debugger at the point where called.
140 140
141 141 This is similar to the pdb.set_trace() function from the std lib, but
142 142 using IPython's enhanced debugger."""
143 143
144 144 self.debugger.set_trace(sys._getframe().f_back)
145 145
146 146 def decorate_fn_with_doc(new_fn, old_fn, additional_text=""):
147 147 """Make new_fn have old_fn's doc string. This is particularly useful
148 148 for the do_... commands that hook into the help system.
149 149 Adapted from from a comp.lang.python posting
150 150 by Duncan Booth."""
151 151 def wrapper(*args, **kw):
152 152 return new_fn(*args, **kw)
153 153 if old_fn.__doc__:
154 154 wrapper.__doc__ = old_fn.__doc__ + additional_text
155 155 return wrapper
156 156
157 157 def _file_lines(fname):
158 158 """Return the contents of a named file as a list of lines.
159 159
160 160 This function never raises an IOError exception: if the file can't be
161 161 read, it simply returns an empty list."""
162 162
163 163 try:
164 164 outfile = open(fname)
165 165 except IOError:
166 166 return []
167 167 else:
168 168 out = outfile.readlines()
169 169 outfile.close()
170 170 return out
171 171
172 172 class Pdb(OldPdb):
173 173 """Modified Pdb class, does not load readline."""
174 174
175 175 if sys.version[:3] >= '2.5' or has_pydb:
176 176 def __init__(self,color_scheme='NoColor',completekey=None,
177 177 stdin=None, stdout=None):
178 178
179 179 # Parent constructor:
180 180 if has_pydb and completekey is None:
181 OldPdb.__init__(self,stdin=stdin,stdout=stdout)
181 OldPdb.__init__(self,stdin=stdin,stdout=Term.cout) #stdout)
182 182 else:
183 183 OldPdb.__init__(self,completekey,stdin,stdout)
184
184 185 self.prompt = prompt # The default prompt is '(Pdb)'
185 186
186 187 # IPython changes...
187 188 self.is_pydb = has_pydb
188 189
189 190 if self.is_pydb:
190 191
191 192 # iplib.py's ipalias seems to want pdb's checkline
192 193 # which located in pydb.fn
193 194 import pydb.fns
194 195 self.checkline = lambda filename, lineno: \
195 196 pydb.fns.checkline(self, filename, lineno)
196 197
197 198 self.curframe = None
198 199 self.do_restart = self.new_do_restart
199 200
200 201 self.old_all_completions = __IPYTHON__.Completer.all_completions
201 202 __IPYTHON__.Completer.all_completions=self.all_completions
202 203
203 204 self.do_list = decorate_fn_with_doc(self.list_command_pydb,
204 205 OldPdb.do_list)
205 206 self.do_l = self.do_list
206 207 self.do_frame = decorate_fn_with_doc(self.new_do_frame,
207 208 OldPdb.do_frame)
208 209
209 210 self.aliases = {}
210 211
211 212 # Create color table: we copy the default one from the traceback
212 213 # module and add a few attributes needed for debugging
213 214 self.color_scheme_table = ExceptionColors.copy()
214 215
215 216 # shorthands
216 217 C = ColorANSI.TermColors
217 218 cst = self.color_scheme_table
218 219
219 220 cst['NoColor'].colors.breakpoint_enabled = C.NoColor
220 221 cst['NoColor'].colors.breakpoint_disabled = C.NoColor
221 222
222 223 cst['Linux'].colors.breakpoint_enabled = C.LightRed
223 224 cst['Linux'].colors.breakpoint_disabled = C.Red
224 225
225 226 cst['LightBG'].colors.breakpoint_enabled = C.LightRed
226 227 cst['LightBG'].colors.breakpoint_disabled = C.Red
227 228
228 229 self.set_colors(color_scheme)
229 230
230 231 else:
231 232 # Ugly hack: for Python 2.3-2.4, we can't call the parent constructor,
232 233 # because it binds readline and breaks tab-completion. This means we
233 234 # have to COPY the constructor here.
234 235 def __init__(self,color_scheme='NoColor'):
235 236 bdb.Bdb.__init__(self)
236 237 cmd.Cmd.__init__(self,completekey=None) # don't load readline
237 238 self.prompt = 'ipdb> ' # The default prompt is '(Pdb)'
238 239 self.aliases = {}
239 240
240 241 # These two lines are part of the py2.4 constructor, let's put them
241 242 # unconditionally here as they won't cause any problems in 2.3.
242 243 self.mainpyfile = ''
243 244 self._wait_for_mainpyfile = 0
244 245
245 246 # Read $HOME/.pdbrc and ./.pdbrc
246 247 try:
247 248 self.rcLines = _file_lines(os.path.join(os.environ['HOME'],
248 249 ".pdbrc"))
249 250 except KeyError:
250 251 self.rcLines = []
251 252 self.rcLines.extend(_file_lines(".pdbrc"))
252 253
253 254 # Create color table: we copy the default one from the traceback
254 255 # module and add a few attributes needed for debugging
255 256 ExceptionColors.set_active_scheme(color_scheme)
256 257 self.color_scheme_table = ExceptionColors.copy()
257 258
258 259 # shorthands
259 260 C = ColorANSI.TermColors
260 261 cst = self.color_scheme_table
261 262
262 263 cst['NoColor'].colors.breakpoint_enabled = C.NoColor
263 264 cst['NoColor'].colors.breakpoint_disabled = C.NoColor
264 265
265 266 cst['Linux'].colors.breakpoint_enabled = C.LightRed
266 267 cst['Linux'].colors.breakpoint_disabled = C.Red
267 268
268 269 cst['LightBG'].colors.breakpoint_enabled = C.LightRed
269 270 cst['LightBG'].colors.breakpoint_disabled = C.Red
270 271
271 272 self.set_colors(color_scheme)
272 273
273 274 def set_colors(self, scheme):
274 275 """Shorthand access to the color table scheme selector method."""
275 276 self.color_scheme_table.set_active_scheme(scheme)
276 277
277 278 def interaction(self, frame, traceback):
278 279 __IPYTHON__.set_completer_frame(frame)
279 280 OldPdb.interaction(self, frame, traceback)
280 281
281 282 def new_do_up(self, arg):
282 283 OldPdb.do_up(self, arg)
283 284 __IPYTHON__.set_completer_frame(self.curframe)
284 285 do_u = do_up = decorate_fn_with_doc(new_do_up, OldPdb.do_up)
285 286
286 287 def new_do_down(self, arg):
287 288 OldPdb.do_down(self, arg)
288 289 __IPYTHON__.set_completer_frame(self.curframe)
289 290
290 291 do_d = do_down = decorate_fn_with_doc(new_do_down, OldPdb.do_down)
291 292
292 293 def new_do_frame(self, arg):
293 294 OldPdb.do_frame(self, arg)
294 295 __IPYTHON__.set_completer_frame(self.curframe)
295 296
296 297 def new_do_quit(self, arg):
297 298
298 299 if hasattr(self, 'old_all_completions'):
299 300 __IPYTHON__.Completer.all_completions=self.old_all_completions
300 301
301 302
302 303 return OldPdb.do_quit(self, arg)
303 304
304 305 do_q = do_quit = decorate_fn_with_doc(new_do_quit, OldPdb.do_quit)
305 306
306 307 def new_do_restart(self, arg):
307 308 """Restart command. In the context of ipython this is exactly the same
308 309 thing as 'quit'."""
309 310 self.msg("Restart doesn't make sense here. Using 'quit' instead.")
310 311 return self.do_quit(arg)
311 312
312 313 def postloop(self):
313 314 __IPYTHON__.set_completer_frame(None)
314 315
315 316 def print_stack_trace(self):
316 317 try:
317 318 for frame_lineno in self.stack:
318 319 self.print_stack_entry(frame_lineno, context = 5)
319 320 except KeyboardInterrupt:
320 321 pass
321 322
322 323 def print_stack_entry(self,frame_lineno,prompt_prefix='\n-> ',
323 324 context = 3):
324 frame, lineno = frame_lineno
325 #frame, lineno = frame_lineno
325 326 print >>Term.cout, self.format_stack_entry(frame_lineno, '', context)
326 327
327 328 def format_stack_entry(self, frame_lineno, lprefix=': ', context = 3):
328 329 import linecache, repr
329 330
330 331 ret = []
331 332
332 333 Colors = self.color_scheme_table.active_colors
333 334 ColorsNormal = Colors.Normal
334 335 tpl_link = '%s%%s%s' % (Colors.filenameEm, ColorsNormal)
335 336 tpl_call = '%s%%s%s%%s%s' % (Colors.vName, Colors.valEm, ColorsNormal)
336 337 tpl_line = '%%s%s%%s %s%%s' % (Colors.lineno, ColorsNormal)
337 338 tpl_line_em = '%%s%s%%s %s%%s%s' % (Colors.linenoEm, Colors.line,
338 339 ColorsNormal)
339 340
340 341 frame, lineno = frame_lineno
341 342
342 343 return_value = ''
343 344 if '__return__' in frame.f_locals:
344 345 rv = frame.f_locals['__return__']
345 346 #return_value += '->'
346 347 return_value += repr.repr(rv) + '\n'
347 348 ret.append(return_value)
348 349
349 350 #s = filename + '(' + `lineno` + ')'
350 351 filename = self.canonic(frame.f_code.co_filename)
351 352 link = tpl_link % filename
352 353
353 354 if frame.f_code.co_name:
354 355 func = frame.f_code.co_name
355 356 else:
356 357 func = "<lambda>"
357 358
358 359 call = ''
359 360 if func != '?':
360 361 if '__args__' in frame.f_locals:
361 362 args = repr.repr(frame.f_locals['__args__'])
362 363 else:
363 364 args = '()'
364 365 call = tpl_call % (func, args)
365 366
366 367 # The level info should be generated in the same format pdb uses, to
367 368 # avoid breaking the pdbtrack functionality of python-mode in *emacs.
368 ret.append('> %s(%s)%s\n' % (link,lineno,call))
369 if frame is self.curframe:
370 ret.append('> ')
371 else:
372 ret.append(' ')
373 ret.append('%s(%s)%s\n' % (link,lineno,call))
369 374
370 375 start = lineno - 1 - context//2
371 376 lines = linecache.getlines(filename)
372 377 start = max(start, 0)
373 378 start = min(start, len(lines) - context)
374 379 lines = lines[start : start + context]
375 380
376 381 for i,line in enumerate(lines):
377 382 show_arrow = (start + 1 + i == lineno)
378 ret.append(self.__format_line(tpl_line_em, filename,
383 linetpl = (frame is self.curframe or show_arrow) \
384 and tpl_line_em \
385 or tpl_line
386 ret.append(self.__format_line(linetpl, filename,
379 387 start + 1 + i, line,
380 388 arrow = show_arrow) )
381 389
382 390 return ''.join(ret)
383 391
384 392 def __format_line(self, tpl_line, filename, lineno, line, arrow = False):
385 393 bp_mark = ""
386 394 bp_mark_color = ""
387 395
388 396 bp = None
389 397 if lineno in self.get_file_breaks(filename):
390 398 bps = self.get_breaks(filename, lineno)
391 399 bp = bps[-1]
392 400
393 401 if bp:
394 402 Colors = self.color_scheme_table.active_colors
395 403 bp_mark = str(bp.number)
396 404 bp_mark_color = Colors.breakpoint_enabled
397 405 if not bp.enabled:
398 406 bp_mark_color = Colors.breakpoint_disabled
399 407
400 408 numbers_width = 7
401 409 if arrow:
402 410 # This is the line with the error
403 411 pad = numbers_width - len(str(lineno)) - len(bp_mark)
404 412 if pad >= 3:
405 413 marker = '-'*(pad-3) + '-> '
406 414 elif pad == 2:
407 415 marker = '> '
408 416 elif pad == 1:
409 417 marker = '>'
410 418 else:
411 419 marker = ''
412 420 num = '%s%s' % (marker, str(lineno))
413 421 line = tpl_line % (bp_mark_color + bp_mark, num, line)
414 422 else:
415 423 num = '%*s' % (numbers_width - len(bp_mark), str(lineno))
416 424 line = tpl_line % (bp_mark_color + bp_mark, num, line)
417 425
418 426 return line
419 427
420 428 def list_command_pydb(self, arg):
421 429 """List command to use if we have a newer pydb installed"""
422 430 filename, first, last = OldPdb.parse_list_cmd(self, arg)
423 431 if filename is not None:
424 432 self.print_list_lines(filename, first, last)
425 433
426 434 def print_list_lines(self, filename, first, last):
427 435 """The printing (as opposed to the parsing part of a 'list'
428 436 command."""
429 437 try:
430 438 Colors = self.color_scheme_table.active_colors
431 439 ColorsNormal = Colors.Normal
432 440 tpl_line = '%%s%s%%s %s%%s' % (Colors.lineno, ColorsNormal)
433 441 tpl_line_em = '%%s%s%%s %s%%s%s' % (Colors.linenoEm, Colors.line, ColorsNormal)
434 442 src = []
435 443 for lineno in range(first, last+1):
436 444 line = linecache.getline(filename, lineno)
437 445 if not line:
438 446 break
439 447
440 448 if lineno == self.curframe.f_lineno:
441 449 line = self.__format_line(tpl_line_em, filename, lineno, line, arrow = True)
442 450 else:
443 451 line = self.__format_line(tpl_line, filename, lineno, line, arrow = False)
444 452
445 453 src.append(line)
446 454 self.lineno = lineno
447 455
448 456 print >>Term.cout, ''.join(src)
449 457
450 458 except KeyboardInterrupt:
451 459 pass
452 460
453 461 def do_list(self, arg):
454 462 self.lastcmd = 'list'
455 463 last = None
456 464 if arg:
457 465 try:
458 466 x = eval(arg, {}, {})
459 467 if type(x) == type(()):
460 468 first, last = x
461 469 first = int(first)
462 470 last = int(last)
463 471 if last < first:
464 472 # Assume it's a count
465 473 last = first + last
466 474 else:
467 475 first = max(1, int(x) - 5)
468 476 except:
469 477 print '*** Error in argument:', `arg`
470 478 return
471 479 elif self.lineno is None:
472 480 first = max(1, self.curframe.f_lineno - 5)
473 481 else:
474 482 first = self.lineno + 1
475 483 if last is None:
476 484 last = first + 10
477 485 self.print_list_lines(self.curframe.f_code.co_filename, first, last)
478 486
479 487 do_l = do_list
480 488
481 489 def do_pdef(self, arg):
482 490 """The debugger interface to magic_pdef"""
483 491 namespaces = [('Locals', self.curframe.f_locals),
484 492 ('Globals', self.curframe.f_globals)]
485 493 __IPYTHON__.magic_pdef(arg, namespaces=namespaces)
486 494
487 495 def do_pdoc(self, arg):
488 496 """The debugger interface to magic_pdoc"""
489 497 namespaces = [('Locals', self.curframe.f_locals),
490 498 ('Globals', self.curframe.f_globals)]
491 499 __IPYTHON__.magic_pdoc(arg, namespaces=namespaces)
492 500
493 501 def do_pinfo(self, arg):
494 502 """The debugger equivalant of ?obj"""
495 503 namespaces = [('Locals', self.curframe.f_locals),
496 504 ('Globals', self.curframe.f_globals)]
497 505 __IPYTHON__.magic_pinfo("pinfo %s" % arg, namespaces=namespaces)
@@ -1,31 +1,31 b''
1 1 import inspect
2 2 import IPython.ipapi
3 3 from IPython.genutils import arg_split
4 4 ip = IPython.ipapi.get()
5 5
6 6 from IPython import Debugger
7 7
8 8 def call_pydb(self, args):
9 9 """Invoke pydb with the supplied parameters."""
10 10 try:
11 11 import pydb
12 12 except ImportError:
13 13 raise ImportError("pydb doesn't seem to be installed.")
14 14
15 15 if not hasattr(pydb.pydb, "runv"):
16 16 raise ImportError("You need pydb version 1.19 or later installed.")
17 17
18 18 argl = arg_split(args)
19 19 # print argl # dbg
20 20 if len(inspect.getargspec(pydb.runv)[0]) == 2:
21 pdb = Debugger.Pdb()
21 pdb = Debugger.Pdb(color_scheme=self.rc.colors)
22 22 ip.IP.history_saving_wrapper( lambda : pydb.runv(argl, pdb) )()
23 23 else:
24 24 ip.IP.history_saving_wrapper( lambda : pydb.runv(argl) )()
25 25
26 26
27 27 ip.expose_magic("pydb",call_pydb)
28 28
29 29
30 30
31 31
@@ -1,1752 +1,1756 b''
1 1 # -*- coding: utf-8 -*-
2 2 """
3 3 General purpose utilities.
4 4
5 5 This is a grab-bag of stuff I find useful in most programs I write. Some of
6 6 these things are also convenient when working at the command line.
7 7
8 $Id: genutils.py 2152 2007-03-18 20:13:35Z fperez $"""
8 $Id: genutils.py 2154 2007-03-19 00:10:07Z fperez $"""
9 9
10 10 #*****************************************************************************
11 11 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
12 12 #
13 13 # Distributed under the terms of the BSD License. The full license is in
14 14 # the file COPYING, distributed as part of this software.
15 15 #*****************************************************************************
16 16
17 17 from IPython import Release
18 18 __author__ = '%s <%s>' % Release.authors['Fernando']
19 19 __license__ = Release.license
20 20
21 21 #****************************************************************************
22 22 # required modules from the Python standard library
23 23 import __main__
24 24 import commands
25 25 import os
26 26 import re
27 27 import shlex
28 28 import shutil
29 29 import sys
30 30 import tempfile
31 31 import time
32 32 import types
33 33 import warnings
34 34
35 35 # Other IPython utilities
36 36 from IPython.Itpl import Itpl,itpl,printpl
37 37 from IPython import DPyGetOpt
38 38 from path import path
39 39 if os.name == "nt":
40 40 from IPython.winconsole import get_console_size
41 41
42 42 #****************************************************************************
43 43 # Exceptions
44 44 class Error(Exception):
45 45 """Base class for exceptions in this module."""
46 46 pass
47 47
48 48 #----------------------------------------------------------------------------
49 49 class IOStream:
50 50 def __init__(self,stream,fallback):
51 51 if not hasattr(stream,'write') or not hasattr(stream,'flush'):
52 52 stream = fallback
53 53 self.stream = stream
54 54 self._swrite = stream.write
55 55 self.flush = stream.flush
56 56
57 57 def write(self,data):
58 58 try:
59 59 self._swrite(data)
60 60 except:
61 61 try:
62 62 # print handles some unicode issues which may trip a plain
63 63 # write() call. Attempt to emulate write() by using a
64 64 # trailing comma
65 65 print >> self.stream, data,
66 66 except:
67 67 # if we get here, something is seriously broken.
68 68 print >> sys.stderr, \
69 69 'ERROR - failed to write data to stream:', self.stream
70 70
71 def close(self):
72 pass
73
74
71 75 class IOTerm:
72 76 """ Term holds the file or file-like objects for handling I/O operations.
73 77
74 78 These are normally just sys.stdin, sys.stdout and sys.stderr but for
75 79 Windows they can can replaced to allow editing the strings before they are
76 80 displayed."""
77 81
78 82 # In the future, having IPython channel all its I/O operations through
79 83 # this class will make it easier to embed it into other environments which
80 84 # are not a normal terminal (such as a GUI-based shell)
81 85 def __init__(self,cin=None,cout=None,cerr=None):
82 86 self.cin = IOStream(cin,sys.stdin)
83 87 self.cout = IOStream(cout,sys.stdout)
84 88 self.cerr = IOStream(cerr,sys.stderr)
85 89
86 90 # Global variable to be used for all I/O
87 91 Term = IOTerm()
88 92
89 93 import IPython.rlineimpl as readline
90 94 # Remake Term to use the readline i/o facilities
91 95 if sys.platform == 'win32' and readline.have_readline:
92 96
93 97 Term = IOTerm(cout=readline._outputfile,cerr=readline._outputfile)
94 98
95 99
96 100 #****************************************************************************
97 101 # Generic warning/error printer, used by everything else
98 102 def warn(msg,level=2,exit_val=1):
99 103 """Standard warning printer. Gives formatting consistency.
100 104
101 105 Output is sent to Term.cerr (sys.stderr by default).
102 106
103 107 Options:
104 108
105 109 -level(2): allows finer control:
106 110 0 -> Do nothing, dummy function.
107 111 1 -> Print message.
108 112 2 -> Print 'WARNING:' + message. (Default level).
109 113 3 -> Print 'ERROR:' + message.
110 114 4 -> Print 'FATAL ERROR:' + message and trigger a sys.exit(exit_val).
111 115
112 116 -exit_val (1): exit value returned by sys.exit() for a level 4
113 117 warning. Ignored for all other levels."""
114 118
115 119 if level>0:
116 120 header = ['','','WARNING: ','ERROR: ','FATAL ERROR: ']
117 121 print >> Term.cerr, '%s%s' % (header[level],msg)
118 122 if level == 4:
119 123 print >> Term.cerr,'Exiting.\n'
120 124 sys.exit(exit_val)
121 125
122 126 def info(msg):
123 127 """Equivalent to warn(msg,level=1)."""
124 128
125 129 warn(msg,level=1)
126 130
127 131 def error(msg):
128 132 """Equivalent to warn(msg,level=3)."""
129 133
130 134 warn(msg,level=3)
131 135
132 136 def fatal(msg,exit_val=1):
133 137 """Equivalent to warn(msg,exit_val=exit_val,level=4)."""
134 138
135 139 warn(msg,exit_val=exit_val,level=4)
136 140
137 141 #---------------------------------------------------------------------------
138 142 # Debugging routines
139 143 #
140 144 def debugx(expr,pre_msg=''):
141 145 """Print the value of an expression from the caller's frame.
142 146
143 147 Takes an expression, evaluates it in the caller's frame and prints both
144 148 the given expression and the resulting value (as well as a debug mark
145 149 indicating the name of the calling function. The input must be of a form
146 150 suitable for eval().
147 151
148 152 An optional message can be passed, which will be prepended to the printed
149 153 expr->value pair."""
150 154
151 155 cf = sys._getframe(1)
152 156 print '[DBG:%s] %s%s -> %r' % (cf.f_code.co_name,pre_msg,expr,
153 157 eval(expr,cf.f_globals,cf.f_locals))
154 158
155 159 # deactivate it by uncommenting the following line, which makes it a no-op
156 160 #def debugx(expr,pre_msg=''): pass
157 161
158 162 #----------------------------------------------------------------------------
159 163 StringTypes = types.StringTypes
160 164
161 165 # Basic timing functionality
162 166
163 167 # If possible (Unix), use the resource module instead of time.clock()
164 168 try:
165 169 import resource
166 170 def clocku():
167 171 """clocku() -> floating point number
168 172
169 173 Return the *USER* CPU time in seconds since the start of the process.
170 174 This is done via a call to resource.getrusage, so it avoids the
171 175 wraparound problems in time.clock()."""
172 176
173 177 return resource.getrusage(resource.RUSAGE_SELF)[0]
174 178
175 179 def clocks():
176 180 """clocks() -> floating point number
177 181
178 182 Return the *SYSTEM* CPU time in seconds since the start of the process.
179 183 This is done via a call to resource.getrusage, so it avoids the
180 184 wraparound problems in time.clock()."""
181 185
182 186 return resource.getrusage(resource.RUSAGE_SELF)[1]
183 187
184 188 def clock():
185 189 """clock() -> floating point number
186 190
187 191 Return the *TOTAL USER+SYSTEM* CPU time in seconds since the start of
188 192 the process. This is done via a call to resource.getrusage, so it
189 193 avoids the wraparound problems in time.clock()."""
190 194
191 195 u,s = resource.getrusage(resource.RUSAGE_SELF)[:2]
192 196 return u+s
193 197
194 198 def clock2():
195 199 """clock2() -> (t_user,t_system)
196 200
197 201 Similar to clock(), but return a tuple of user/system times."""
198 202 return resource.getrusage(resource.RUSAGE_SELF)[:2]
199 203
200 204 except ImportError:
201 205 # There is no distinction of user/system time under windows, so we just use
202 206 # time.clock() for everything...
203 207 clocku = clocks = clock = time.clock
204 208 def clock2():
205 209 """Under windows, system CPU time can't be measured.
206 210
207 211 This just returns clock() and zero."""
208 212 return time.clock(),0.0
209 213
210 214 def timings_out(reps,func,*args,**kw):
211 215 """timings_out(reps,func,*args,**kw) -> (t_total,t_per_call,output)
212 216
213 217 Execute a function reps times, return a tuple with the elapsed total
214 218 CPU time in seconds, the time per call and the function's output.
215 219
216 220 Under Unix, the return value is the sum of user+system time consumed by
217 221 the process, computed via the resource module. This prevents problems
218 222 related to the wraparound effect which the time.clock() function has.
219 223
220 224 Under Windows the return value is in wall clock seconds. See the
221 225 documentation for the time module for more details."""
222 226
223 227 reps = int(reps)
224 228 assert reps >=1, 'reps must be >= 1'
225 229 if reps==1:
226 230 start = clock()
227 231 out = func(*args,**kw)
228 232 tot_time = clock()-start
229 233 else:
230 234 rng = xrange(reps-1) # the last time is executed separately to store output
231 235 start = clock()
232 236 for dummy in rng: func(*args,**kw)
233 237 out = func(*args,**kw) # one last time
234 238 tot_time = clock()-start
235 239 av_time = tot_time / reps
236 240 return tot_time,av_time,out
237 241
238 242 def timings(reps,func,*args,**kw):
239 243 """timings(reps,func,*args,**kw) -> (t_total,t_per_call)
240 244
241 245 Execute a function reps times, return a tuple with the elapsed total CPU
242 246 time in seconds and the time per call. These are just the first two values
243 247 in timings_out()."""
244 248
245 249 return timings_out(reps,func,*args,**kw)[0:2]
246 250
247 251 def timing(func,*args,**kw):
248 252 """timing(func,*args,**kw) -> t_total
249 253
250 254 Execute a function once, return the elapsed total CPU time in
251 255 seconds. This is just the first value in timings_out()."""
252 256
253 257 return timings_out(1,func,*args,**kw)[0]
254 258
255 259 #****************************************************************************
256 260 # file and system
257 261
258 262 def arg_split(s,posix=False):
259 263 """Split a command line's arguments in a shell-like manner.
260 264
261 265 This is a modified version of the standard library's shlex.split()
262 266 function, but with a default of posix=False for splitting, so that quotes
263 267 in inputs are respected."""
264 268
265 269 lex = shlex.shlex(s, posix=posix)
266 270 lex.whitespace_split = True
267 271 return list(lex)
268 272
269 273 def system(cmd,verbose=0,debug=0,header=''):
270 274 """Execute a system command, return its exit status.
271 275
272 276 Options:
273 277
274 278 - verbose (0): print the command to be executed.
275 279
276 280 - debug (0): only print, do not actually execute.
277 281
278 282 - header (''): Header to print on screen prior to the executed command (it
279 283 is only prepended to the command, no newlines are added).
280 284
281 285 Note: a stateful version of this function is available through the
282 286 SystemExec class."""
283 287
284 288 stat = 0
285 289 if verbose or debug: print header+cmd
286 290 sys.stdout.flush()
287 291 if not debug: stat = os.system(cmd)
288 292 return stat
289 293
290 294 # This function is used by ipython in a lot of places to make system calls.
291 295 # We need it to be slightly different under win32, due to the vagaries of
292 296 # 'network shares'. A win32 override is below.
293 297
294 298 def shell(cmd,verbose=0,debug=0,header=''):
295 299 """Execute a command in the system shell, always return None.
296 300
297 301 Options:
298 302
299 303 - verbose (0): print the command to be executed.
300 304
301 305 - debug (0): only print, do not actually execute.
302 306
303 307 - header (''): Header to print on screen prior to the executed command (it
304 308 is only prepended to the command, no newlines are added).
305 309
306 310 Note: this is similar to genutils.system(), but it returns None so it can
307 311 be conveniently used in interactive loops without getting the return value
308 312 (typically 0) printed many times."""
309 313
310 314 stat = 0
311 315 if verbose or debug: print header+cmd
312 316 # flush stdout so we don't mangle python's buffering
313 317 sys.stdout.flush()
314 318 if not debug:
315 319 os.system(cmd)
316 320
317 321 # override shell() for win32 to deal with network shares
318 322 if os.name in ('nt','dos'):
319 323
320 324 shell_ori = shell
321 325
322 326 def shell(cmd,verbose=0,debug=0,header=''):
323 327 if os.getcwd().startswith(r"\\"):
324 328 path = os.getcwd()
325 329 # change to c drive (cannot be on UNC-share when issuing os.system,
326 330 # as cmd.exe cannot handle UNC addresses)
327 331 os.chdir("c:")
328 332 # issue pushd to the UNC-share and then run the command
329 333 try:
330 334 shell_ori('"pushd %s&&"'%path+cmd,verbose,debug,header)
331 335 finally:
332 336 os.chdir(path)
333 337 else:
334 338 shell_ori(cmd,verbose,debug,header)
335 339
336 340 shell.__doc__ = shell_ori.__doc__
337 341
338 342 def getoutput(cmd,verbose=0,debug=0,header='',split=0):
339 343 """Dummy substitute for perl's backquotes.
340 344
341 345 Executes a command and returns the output.
342 346
343 347 Accepts the same arguments as system(), plus:
344 348
345 349 - split(0): if true, the output is returned as a list split on newlines.
346 350
347 351 Note: a stateful version of this function is available through the
348 352 SystemExec class.
349 353
350 354 This is pretty much deprecated and rarely used,
351 355 genutils.getoutputerror may be what you need.
352 356
353 357 """
354 358
355 359 if verbose or debug: print header+cmd
356 360 if not debug:
357 361 output = os.popen(cmd).read()
358 362 # stipping last \n is here for backwards compat.
359 363 if output.endswith('\n'):
360 364 output = output[:-1]
361 365 if split:
362 366 return output.split('\n')
363 367 else:
364 368 return output
365 369
366 370 def getoutputerror(cmd,verbose=0,debug=0,header='',split=0):
367 371 """Return (standard output,standard error) of executing cmd in a shell.
368 372
369 373 Accepts the same arguments as system(), plus:
370 374
371 375 - split(0): if true, each of stdout/err is returned as a list split on
372 376 newlines.
373 377
374 378 Note: a stateful version of this function is available through the
375 379 SystemExec class."""
376 380
377 381 if verbose or debug: print header+cmd
378 382 if not cmd:
379 383 if split:
380 384 return [],[]
381 385 else:
382 386 return '',''
383 387 if not debug:
384 388 pin,pout,perr = os.popen3(cmd)
385 389 tout = pout.read().rstrip()
386 390 terr = perr.read().rstrip()
387 391 pin.close()
388 392 pout.close()
389 393 perr.close()
390 394 if split:
391 395 return tout.split('\n'),terr.split('\n')
392 396 else:
393 397 return tout,terr
394 398
395 399 # for compatibility with older naming conventions
396 400 xsys = system
397 401 bq = getoutput
398 402
399 403 class SystemExec:
400 404 """Access the system and getoutput functions through a stateful interface.
401 405
402 406 Note: here we refer to the system and getoutput functions from this
403 407 library, not the ones from the standard python library.
404 408
405 409 This class offers the system and getoutput functions as methods, but the
406 410 verbose, debug and header parameters can be set for the instance (at
407 411 creation time or later) so that they don't need to be specified on each
408 412 call.
409 413
410 414 For efficiency reasons, there's no way to override the parameters on a
411 415 per-call basis other than by setting instance attributes. If you need
412 416 local overrides, it's best to directly call system() or getoutput().
413 417
414 418 The following names are provided as alternate options:
415 419 - xsys: alias to system
416 420 - bq: alias to getoutput
417 421
418 422 An instance can then be created as:
419 423 >>> sysexec = SystemExec(verbose=1,debug=0,header='Calling: ')
420 424
421 425 And used as:
422 426 >>> sysexec.xsys('pwd')
423 427 >>> dirlist = sysexec.bq('ls -l')
424 428 """
425 429
426 430 def __init__(self,verbose=0,debug=0,header='',split=0):
427 431 """Specify the instance's values for verbose, debug and header."""
428 432 setattr_list(self,'verbose debug header split')
429 433
430 434 def system(self,cmd):
431 435 """Stateful interface to system(), with the same keyword parameters."""
432 436
433 437 system(cmd,self.verbose,self.debug,self.header)
434 438
435 439 def shell(self,cmd):
436 440 """Stateful interface to shell(), with the same keyword parameters."""
437 441
438 442 shell(cmd,self.verbose,self.debug,self.header)
439 443
440 444 xsys = system # alias
441 445
442 446 def getoutput(self,cmd):
443 447 """Stateful interface to getoutput()."""
444 448
445 449 return getoutput(cmd,self.verbose,self.debug,self.header,self.split)
446 450
447 451 def getoutputerror(self,cmd):
448 452 """Stateful interface to getoutputerror()."""
449 453
450 454 return getoutputerror(cmd,self.verbose,self.debug,self.header,self.split)
451 455
452 456 bq = getoutput # alias
453 457
454 458 #-----------------------------------------------------------------------------
455 459 def mutex_opts(dict,ex_op):
456 460 """Check for presence of mutually exclusive keys in a dict.
457 461
458 462 Call: mutex_opts(dict,[[op1a,op1b],[op2a,op2b]...]"""
459 463 for op1,op2 in ex_op:
460 464 if op1 in dict and op2 in dict:
461 465 raise ValueError,'\n*** ERROR in Arguments *** '\
462 466 'Options '+op1+' and '+op2+' are mutually exclusive.'
463 467
464 468 #-----------------------------------------------------------------------------
465 469 def get_py_filename(name):
466 470 """Return a valid python filename in the current directory.
467 471
468 472 If the given name is not a file, it adds '.py' and searches again.
469 473 Raises IOError with an informative message if the file isn't found."""
470 474
471 475 name = os.path.expanduser(name)
472 476 if not os.path.isfile(name) and not name.endswith('.py'):
473 477 name += '.py'
474 478 if os.path.isfile(name):
475 479 return name
476 480 else:
477 481 raise IOError,'File `%s` not found.' % name
478 482
479 483 #-----------------------------------------------------------------------------
480 484 def filefind(fname,alt_dirs = None):
481 485 """Return the given filename either in the current directory, if it
482 486 exists, or in a specified list of directories.
483 487
484 488 ~ expansion is done on all file and directory names.
485 489
486 490 Upon an unsuccessful search, raise an IOError exception."""
487 491
488 492 if alt_dirs is None:
489 493 try:
490 494 alt_dirs = get_home_dir()
491 495 except HomeDirError:
492 496 alt_dirs = os.getcwd()
493 497 search = [fname] + list_strings(alt_dirs)
494 498 search = map(os.path.expanduser,search)
495 499 #print 'search list for',fname,'list:',search # dbg
496 500 fname = search[0]
497 501 if os.path.isfile(fname):
498 502 return fname
499 503 for direc in search[1:]:
500 504 testname = os.path.join(direc,fname)
501 505 #print 'testname',testname # dbg
502 506 if os.path.isfile(testname):
503 507 return testname
504 508 raise IOError,'File' + `fname` + \
505 509 ' not found in current or supplied directories:' + `alt_dirs`
506 510
507 511 #----------------------------------------------------------------------------
508 512 def file_read(filename):
509 513 """Read a file and close it. Returns the file source."""
510 514 fobj = open(filename,'r');
511 515 source = fobj.read();
512 516 fobj.close()
513 517 return source
514 518
515 519 def file_readlines(filename):
516 520 """Read a file and close it. Returns the file source using readlines()."""
517 521 fobj = open(filename,'r');
518 522 lines = fobj.readlines();
519 523 fobj.close()
520 524 return lines
521 525
522 526 #----------------------------------------------------------------------------
523 527 def target_outdated(target,deps):
524 528 """Determine whether a target is out of date.
525 529
526 530 target_outdated(target,deps) -> 1/0
527 531
528 532 deps: list of filenames which MUST exist.
529 533 target: single filename which may or may not exist.
530 534
531 535 If target doesn't exist or is older than any file listed in deps, return
532 536 true, otherwise return false.
533 537 """
534 538 try:
535 539 target_time = os.path.getmtime(target)
536 540 except os.error:
537 541 return 1
538 542 for dep in deps:
539 543 dep_time = os.path.getmtime(dep)
540 544 if dep_time > target_time:
541 545 #print "For target",target,"Dep failed:",dep # dbg
542 546 #print "times (dep,tar):",dep_time,target_time # dbg
543 547 return 1
544 548 return 0
545 549
546 550 #-----------------------------------------------------------------------------
547 551 def target_update(target,deps,cmd):
548 552 """Update a target with a given command given a list of dependencies.
549 553
550 554 target_update(target,deps,cmd) -> runs cmd if target is outdated.
551 555
552 556 This is just a wrapper around target_outdated() which calls the given
553 557 command if target is outdated."""
554 558
555 559 if target_outdated(target,deps):
556 560 xsys(cmd)
557 561
558 562 #----------------------------------------------------------------------------
559 563 def unquote_ends(istr):
560 564 """Remove a single pair of quotes from the endpoints of a string."""
561 565
562 566 if not istr:
563 567 return istr
564 568 if (istr[0]=="'" and istr[-1]=="'") or \
565 569 (istr[0]=='"' and istr[-1]=='"'):
566 570 return istr[1:-1]
567 571 else:
568 572 return istr
569 573
570 574 #----------------------------------------------------------------------------
571 575 def process_cmdline(argv,names=[],defaults={},usage=''):
572 576 """ Process command-line options and arguments.
573 577
574 578 Arguments:
575 579
576 580 - argv: list of arguments, typically sys.argv.
577 581
578 582 - names: list of option names. See DPyGetOpt docs for details on options
579 583 syntax.
580 584
581 585 - defaults: dict of default values.
582 586
583 587 - usage: optional usage notice to print if a wrong argument is passed.
584 588
585 589 Return a dict of options and a list of free arguments."""
586 590
587 591 getopt = DPyGetOpt.DPyGetOpt()
588 592 getopt.setIgnoreCase(0)
589 593 getopt.parseConfiguration(names)
590 594
591 595 try:
592 596 getopt.processArguments(argv)
593 597 except:
594 598 print usage
595 599 warn(`sys.exc_value`,level=4)
596 600
597 601 defaults.update(getopt.optionValues)
598 602 args = getopt.freeValues
599 603
600 604 return defaults,args
601 605
602 606 #----------------------------------------------------------------------------
603 607 def optstr2types(ostr):
604 608 """Convert a string of option names to a dict of type mappings.
605 609
606 610 optstr2types(str) -> {None:'string_opts',int:'int_opts',float:'float_opts'}
607 611
608 612 This is used to get the types of all the options in a string formatted
609 613 with the conventions of DPyGetOpt. The 'type' None is used for options
610 614 which are strings (they need no further conversion). This function's main
611 615 use is to get a typemap for use with read_dict().
612 616 """
613 617
614 618 typeconv = {None:'',int:'',float:''}
615 619 typemap = {'s':None,'i':int,'f':float}
616 620 opt_re = re.compile(r'([\w]*)([^:=]*:?=?)([sif]?)')
617 621
618 622 for w in ostr.split():
619 623 oname,alias,otype = opt_re.match(w).groups()
620 624 if otype == '' or alias == '!': # simple switches are integers too
621 625 otype = 'i'
622 626 typeconv[typemap[otype]] += oname + ' '
623 627 return typeconv
624 628
625 629 #----------------------------------------------------------------------------
626 630 def read_dict(filename,type_conv=None,**opt):
627 631
628 632 """Read a dictionary of key=value pairs from an input file, optionally
629 633 performing conversions on the resulting values.
630 634
631 635 read_dict(filename,type_conv,**opt) -> dict
632 636
633 637 Only one value per line is accepted, the format should be
634 638 # optional comments are ignored
635 639 key value\n
636 640
637 641 Args:
638 642
639 643 - type_conv: A dictionary specifying which keys need to be converted to
640 644 which types. By default all keys are read as strings. This dictionary
641 645 should have as its keys valid conversion functions for strings
642 646 (int,long,float,complex, or your own). The value for each key
643 647 (converter) should be a whitespace separated string containing the names
644 648 of all the entries in the file to be converted using that function. For
645 649 keys to be left alone, use None as the conversion function (only needed
646 650 with purge=1, see below).
647 651
648 652 - opt: dictionary with extra options as below (default in parens)
649 653
650 654 purge(0): if set to 1, all keys *not* listed in type_conv are purged out
651 655 of the dictionary to be returned. If purge is going to be used, the
652 656 set of keys to be left as strings also has to be explicitly specified
653 657 using the (non-existent) conversion function None.
654 658
655 659 fs(None): field separator. This is the key/value separator to be used
656 660 when parsing the file. The None default means any whitespace [behavior
657 661 of string.split()].
658 662
659 663 strip(0): if 1, strip string values of leading/trailinig whitespace.
660 664
661 665 warn(1): warning level if requested keys are not found in file.
662 666 - 0: silently ignore.
663 667 - 1: inform but proceed.
664 668 - 2: raise KeyError exception.
665 669
666 670 no_empty(0): if 1, remove keys with whitespace strings as a value.
667 671
668 672 unique([]): list of keys (or space separated string) which can't be
669 673 repeated. If one such key is found in the file, each new instance
670 674 overwrites the previous one. For keys not listed here, the behavior is
671 675 to make a list of all appearances.
672 676
673 677 Example:
674 678 If the input file test.ini has:
675 679 i 3
676 680 x 4.5
677 681 y 5.5
678 682 s hi ho
679 683 Then:
680 684
681 685 >>> type_conv={int:'i',float:'x',None:'s'}
682 686 >>> read_dict('test.ini')
683 687 {'i': '3', 's': 'hi ho', 'x': '4.5', 'y': '5.5'}
684 688 >>> read_dict('test.ini',type_conv)
685 689 {'i': 3, 's': 'hi ho', 'x': 4.5, 'y': '5.5'}
686 690 >>> read_dict('test.ini',type_conv,purge=1)
687 691 {'i': 3, 's': 'hi ho', 'x': 4.5}
688 692 """
689 693
690 694 # starting config
691 695 opt.setdefault('purge',0)
692 696 opt.setdefault('fs',None) # field sep defaults to any whitespace
693 697 opt.setdefault('strip',0)
694 698 opt.setdefault('warn',1)
695 699 opt.setdefault('no_empty',0)
696 700 opt.setdefault('unique','')
697 701 if type(opt['unique']) in StringTypes:
698 702 unique_keys = qw(opt['unique'])
699 703 elif type(opt['unique']) in (types.TupleType,types.ListType):
700 704 unique_keys = opt['unique']
701 705 else:
702 706 raise ValueError, 'Unique keys must be given as a string, List or Tuple'
703 707
704 708 dict = {}
705 709 # first read in table of values as strings
706 710 file = open(filename,'r')
707 711 for line in file.readlines():
708 712 line = line.strip()
709 713 if len(line) and line[0]=='#': continue
710 714 if len(line)>0:
711 715 lsplit = line.split(opt['fs'],1)
712 716 try:
713 717 key,val = lsplit
714 718 except ValueError:
715 719 key,val = lsplit[0],''
716 720 key = key.strip()
717 721 if opt['strip']: val = val.strip()
718 722 if val == "''" or val == '""': val = ''
719 723 if opt['no_empty'] and (val=='' or val.isspace()):
720 724 continue
721 725 # if a key is found more than once in the file, build a list
722 726 # unless it's in the 'unique' list. In that case, last found in file
723 727 # takes precedence. User beware.
724 728 try:
725 729 if dict[key] and key in unique_keys:
726 730 dict[key] = val
727 731 elif type(dict[key]) is types.ListType:
728 732 dict[key].append(val)
729 733 else:
730 734 dict[key] = [dict[key],val]
731 735 except KeyError:
732 736 dict[key] = val
733 737 # purge if requested
734 738 if opt['purge']:
735 739 accepted_keys = qwflat(type_conv.values())
736 740 for key in dict.keys():
737 741 if key in accepted_keys: continue
738 742 del(dict[key])
739 743 # now convert if requested
740 744 if type_conv==None: return dict
741 745 conversions = type_conv.keys()
742 746 try: conversions.remove(None)
743 747 except: pass
744 748 for convert in conversions:
745 749 for val in qw(type_conv[convert]):
746 750 try:
747 751 dict[val] = convert(dict[val])
748 752 except KeyError,e:
749 753 if opt['warn'] == 0:
750 754 pass
751 755 elif opt['warn'] == 1:
752 756 print >>sys.stderr, 'Warning: key',val,\
753 757 'not found in file',filename
754 758 elif opt['warn'] == 2:
755 759 raise KeyError,e
756 760 else:
757 761 raise ValueError,'Warning level must be 0,1 or 2'
758 762
759 763 return dict
760 764
761 765 #----------------------------------------------------------------------------
762 766 def flag_calls(func):
763 767 """Wrap a function to detect and flag when it gets called.
764 768
765 769 This is a decorator which takes a function and wraps it in a function with
766 770 a 'called' attribute. wrapper.called is initialized to False.
767 771
768 772 The wrapper.called attribute is set to False right before each call to the
769 773 wrapped function, so if the call fails it remains False. After the call
770 774 completes, wrapper.called is set to True and the output is returned.
771 775
772 776 Testing for truth in wrapper.called allows you to determine if a call to
773 777 func() was attempted and succeeded."""
774 778
775 779 def wrapper(*args,**kw):
776 780 wrapper.called = False
777 781 out = func(*args,**kw)
778 782 wrapper.called = True
779 783 return out
780 784
781 785 wrapper.called = False
782 786 wrapper.__doc__ = func.__doc__
783 787 return wrapper
784 788
785 789 #----------------------------------------------------------------------------
786 790 class HomeDirError(Error):
787 791 pass
788 792
789 793 def get_home_dir():
790 794 """Return the closest possible equivalent to a 'home' directory.
791 795
792 796 We first try $HOME. Absent that, on NT it's $HOMEDRIVE\$HOMEPATH.
793 797
794 798 Currently only Posix and NT are implemented, a HomeDirError exception is
795 799 raised for all other OSes. """
796 800
797 801 isdir = os.path.isdir
798 802 env = os.environ
799 803 try:
800 804 homedir = env['HOME']
801 805 if not isdir(homedir):
802 806 # in case a user stuck some string which does NOT resolve to a
803 807 # valid path, it's as good as if we hadn't foud it
804 808 raise KeyError
805 809 return homedir
806 810 except KeyError:
807 811 if os.name == 'posix':
808 812 raise HomeDirError,'undefined $HOME, IPython can not proceed.'
809 813 elif os.name == 'nt':
810 814 # For some strange reason, win9x returns 'nt' for os.name.
811 815 try:
812 816 homedir = os.path.join(env['HOMEDRIVE'],env['HOMEPATH'])
813 817 if not isdir(homedir):
814 818 homedir = os.path.join(env['USERPROFILE'])
815 819 if not isdir(homedir):
816 820 raise HomeDirError
817 821 return homedir
818 822 except:
819 823 try:
820 824 # Use the registry to get the 'My Documents' folder.
821 825 import _winreg as wreg
822 826 key = wreg.OpenKey(wreg.HKEY_CURRENT_USER,
823 827 "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders")
824 828 homedir = wreg.QueryValueEx(key,'Personal')[0]
825 829 key.Close()
826 830 if not isdir(homedir):
827 831 e = ('Invalid "Personal" folder registry key '
828 832 'typically "My Documents".\n'
829 833 'Value: %s\n'
830 834 'This is not a valid directory on your system.' %
831 835 homedir)
832 836 raise HomeDirError(e)
833 837 return homedir
834 838 except HomeDirError:
835 839 raise
836 840 except:
837 841 return 'C:\\'
838 842 elif os.name == 'dos':
839 843 # Desperate, may do absurd things in classic MacOS. May work under DOS.
840 844 return 'C:\\'
841 845 else:
842 846 raise HomeDirError,'support for your operating system not implemented.'
843 847
844 848 #****************************************************************************
845 849 # strings and text
846 850
847 851 class LSString(str):
848 852 """String derivative with a special access attributes.
849 853
850 854 These are normal strings, but with the special attributes:
851 855
852 856 .l (or .list) : value as list (split on newlines).
853 857 .n (or .nlstr): original value (the string itself).
854 858 .s (or .spstr): value as whitespace-separated string.
855 859
856 860 Any values which require transformations are computed only once and
857 861 cached.
858 862
859 863 Such strings are very useful to efficiently interact with the shell, which
860 864 typically only understands whitespace-separated options for commands."""
861 865
862 866 def get_list(self):
863 867 try:
864 868 return self.__list
865 869 except AttributeError:
866 870 self.__list = self.split('\n')
867 871 return self.__list
868 872
869 873 l = list = property(get_list)
870 874
871 875 def get_spstr(self):
872 876 try:
873 877 return self.__spstr
874 878 except AttributeError:
875 879 self.__spstr = self.replace('\n',' ')
876 880 return self.__spstr
877 881
878 882 s = spstr = property(get_spstr)
879 883
880 884 def get_nlstr(self):
881 885 return self
882 886
883 887 n = nlstr = property(get_nlstr)
884 888
885 889 def get_paths(self):
886 890 try:
887 891 return self.__paths
888 892 except AttributeError:
889 893 self.__paths = [path(p) for p in self.split('\n') if os.path.exists(p)]
890 894 return self.__paths
891 895
892 896 p = paths = property(get_paths)
893 897
894 898
895 899 #----------------------------------------------------------------------------
896 900 class SList(list):
897 901 """List derivative with a special access attributes.
898 902
899 903 These are normal lists, but with the special attributes:
900 904
901 905 .l (or .list) : value as list (the list itself).
902 906 .n (or .nlstr): value as a string, joined on newlines.
903 907 .s (or .spstr): value as a string, joined on spaces.
904 908
905 909 Any values which require transformations are computed only once and
906 910 cached."""
907 911
908 912 def get_list(self):
909 913 return self
910 914
911 915 l = list = property(get_list)
912 916
913 917 def get_spstr(self):
914 918 try:
915 919 return self.__spstr
916 920 except AttributeError:
917 921 self.__spstr = ' '.join(self)
918 922 return self.__spstr
919 923
920 924 s = spstr = property(get_spstr)
921 925
922 926 def get_nlstr(self):
923 927 try:
924 928 return self.__nlstr
925 929 except AttributeError:
926 930 self.__nlstr = '\n'.join(self)
927 931 return self.__nlstr
928 932
929 933 n = nlstr = property(get_nlstr)
930 934
931 935 def get_paths(self):
932 936 try:
933 937 return self.__paths
934 938 except AttributeError:
935 939 self.__paths = [path(p) for p in self if os.path.exists(p)]
936 940 return self.__paths
937 941
938 942 p = paths = property(get_paths)
939 943
940 944 #----------------------------------------------------------------------------
941 945 def esc_quotes(strng):
942 946 """Return the input string with single and double quotes escaped out"""
943 947
944 948 return strng.replace('"','\\"').replace("'","\\'")
945 949
946 950 #----------------------------------------------------------------------------
947 951 def make_quoted_expr(s):
948 952 """Return string s in appropriate quotes, using raw string if possible.
949 953
950 954 Effectively this turns string: cd \ao\ao\
951 955 to: r"cd \ao\ao\_"[:-1]
952 956
953 957 Note the use of raw string and padding at the end to allow trailing backslash.
954 958
955 959 """
956 960
957 961 tail = ''
958 962 tailpadding = ''
959 963 raw = ''
960 964 if "\\" in s:
961 965 raw = 'r'
962 966 if s.endswith('\\'):
963 967 tail = '[:-1]'
964 968 tailpadding = '_'
965 969 if '"' not in s:
966 970 quote = '"'
967 971 elif "'" not in s:
968 972 quote = "'"
969 973 elif '"""' not in s and not s.endswith('"'):
970 974 quote = '"""'
971 975 elif "'''" not in s and not s.endswith("'"):
972 976 quote = "'''"
973 977 else:
974 978 # give up, backslash-escaped string will do
975 979 return '"%s"' % esc_quotes(s)
976 980 res = itpl("$raw$quote$s$tailpadding$quote$tail")
977 981 return res
978 982
979 983
980 984 #----------------------------------------------------------------------------
981 985 def raw_input_multi(header='', ps1='==> ', ps2='..> ',terminate_str = '.'):
982 986 """Take multiple lines of input.
983 987
984 988 A list with each line of input as a separate element is returned when a
985 989 termination string is entered (defaults to a single '.'). Input can also
986 990 terminate via EOF (^D in Unix, ^Z-RET in Windows).
987 991
988 992 Lines of input which end in \\ are joined into single entries (and a
989 993 secondary continuation prompt is issued as long as the user terminates
990 994 lines with \\). This allows entering very long strings which are still
991 995 meant to be treated as single entities.
992 996 """
993 997
994 998 try:
995 999 if header:
996 1000 header += '\n'
997 1001 lines = [raw_input(header + ps1)]
998 1002 except EOFError:
999 1003 return []
1000 1004 terminate = [terminate_str]
1001 1005 try:
1002 1006 while lines[-1:] != terminate:
1003 1007 new_line = raw_input(ps1)
1004 1008 while new_line.endswith('\\'):
1005 1009 new_line = new_line[:-1] + raw_input(ps2)
1006 1010 lines.append(new_line)
1007 1011
1008 1012 return lines[:-1] # don't return the termination command
1009 1013 except EOFError:
1010 1014 print
1011 1015 return lines
1012 1016
1013 1017 #----------------------------------------------------------------------------
1014 1018 def raw_input_ext(prompt='', ps2='... '):
1015 1019 """Similar to raw_input(), but accepts extended lines if input ends with \\."""
1016 1020
1017 1021 line = raw_input(prompt)
1018 1022 while line.endswith('\\'):
1019 1023 line = line[:-1] + raw_input(ps2)
1020 1024 return line
1021 1025
1022 1026 #----------------------------------------------------------------------------
1023 1027 def ask_yes_no(prompt,default=None):
1024 1028 """Asks a question and returns an integer 1/0 (y/n) answer.
1025 1029
1026 1030 If default is given (one of 'y','n'), it is used if the user input is
1027 1031 empty. Otherwise the question is repeated until an answer is given.
1028 1032
1029 1033 An EOF is treated as the default answer. If there is no default, an
1030 1034 exception is raised to prevent infinite loops.
1031 1035
1032 1036 Valid answers are: y/yes/n/no (match is not case sensitive)."""
1033 1037
1034 1038 answers = {'y':True,'n':False,'yes':True,'no':False}
1035 1039 ans = None
1036 1040 while ans not in answers.keys():
1037 1041 try:
1038 1042 ans = raw_input(prompt+' ').lower()
1039 1043 if not ans: # response was an empty string
1040 1044 ans = default
1041 1045 except KeyboardInterrupt:
1042 1046 pass
1043 1047 except EOFError:
1044 1048 if default in answers.keys():
1045 1049 ans = default
1046 1050 print
1047 1051 else:
1048 1052 raise
1049 1053
1050 1054 return answers[ans]
1051 1055
1052 1056 #----------------------------------------------------------------------------
1053 1057 def marquee(txt='',width=78,mark='*'):
1054 1058 """Return the input string centered in a 'marquee'."""
1055 1059 if not txt:
1056 1060 return (mark*width)[:width]
1057 1061 nmark = (width-len(txt)-2)/len(mark)/2
1058 1062 if nmark < 0: nmark =0
1059 1063 marks = mark*nmark
1060 1064 return '%s %s %s' % (marks,txt,marks)
1061 1065
1062 1066 #----------------------------------------------------------------------------
1063 1067 class EvalDict:
1064 1068 """
1065 1069 Emulate a dict which evaluates its contents in the caller's frame.
1066 1070
1067 1071 Usage:
1068 1072 >>>number = 19
1069 1073 >>>text = "python"
1070 1074 >>>print "%(text.capitalize())s %(number/9.0).1f rules!" % EvalDict()
1071 1075 """
1072 1076
1073 1077 # This version is due to sismex01@hebmex.com on c.l.py, and is basically a
1074 1078 # modified (shorter) version of:
1075 1079 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66018 by
1076 1080 # Skip Montanaro (skip@pobox.com).
1077 1081
1078 1082 def __getitem__(self, name):
1079 1083 frame = sys._getframe(1)
1080 1084 return eval(name, frame.f_globals, frame.f_locals)
1081 1085
1082 1086 EvalString = EvalDict # for backwards compatibility
1083 1087 #----------------------------------------------------------------------------
1084 1088 def qw(words,flat=0,sep=None,maxsplit=-1):
1085 1089 """Similar to Perl's qw() operator, but with some more options.
1086 1090
1087 1091 qw(words,flat=0,sep=' ',maxsplit=-1) -> words.split(sep,maxsplit)
1088 1092
1089 1093 words can also be a list itself, and with flat=1, the output will be
1090 1094 recursively flattened. Examples:
1091 1095
1092 1096 >>> qw('1 2')
1093 1097 ['1', '2']
1094 1098 >>> qw(['a b','1 2',['m n','p q']])
1095 1099 [['a', 'b'], ['1', '2'], [['m', 'n'], ['p', 'q']]]
1096 1100 >>> qw(['a b','1 2',['m n','p q']],flat=1)
1097 1101 ['a', 'b', '1', '2', 'm', 'n', 'p', 'q'] """
1098 1102
1099 1103 if type(words) in StringTypes:
1100 1104 return [word.strip() for word in words.split(sep,maxsplit)
1101 1105 if word and not word.isspace() ]
1102 1106 if flat:
1103 1107 return flatten(map(qw,words,[1]*len(words)))
1104 1108 return map(qw,words)
1105 1109
1106 1110 #----------------------------------------------------------------------------
1107 1111 def qwflat(words,sep=None,maxsplit=-1):
1108 1112 """Calls qw(words) in flat mode. It's just a convenient shorthand."""
1109 1113 return qw(words,1,sep,maxsplit)
1110 1114
1111 1115 #----------------------------------------------------------------------------
1112 1116 def qw_lol(indata):
1113 1117 """qw_lol('a b') -> [['a','b']],
1114 1118 otherwise it's just a call to qw().
1115 1119
1116 1120 We need this to make sure the modules_some keys *always* end up as a
1117 1121 list of lists."""
1118 1122
1119 1123 if type(indata) in StringTypes:
1120 1124 return [qw(indata)]
1121 1125 else:
1122 1126 return qw(indata)
1123 1127
1124 1128 #-----------------------------------------------------------------------------
1125 1129 def list_strings(arg):
1126 1130 """Always return a list of strings, given a string or list of strings
1127 1131 as input."""
1128 1132
1129 1133 if type(arg) in StringTypes: return [arg]
1130 1134 else: return arg
1131 1135
1132 1136 #----------------------------------------------------------------------------
1133 1137 def grep(pat,list,case=1):
1134 1138 """Simple minded grep-like function.
1135 1139 grep(pat,list) returns occurrences of pat in list, None on failure.
1136 1140
1137 1141 It only does simple string matching, with no support for regexps. Use the
1138 1142 option case=0 for case-insensitive matching."""
1139 1143
1140 1144 # This is pretty crude. At least it should implement copying only references
1141 1145 # to the original data in case it's big. Now it copies the data for output.
1142 1146 out=[]
1143 1147 if case:
1144 1148 for term in list:
1145 1149 if term.find(pat)>-1: out.append(term)
1146 1150 else:
1147 1151 lpat=pat.lower()
1148 1152 for term in list:
1149 1153 if term.lower().find(lpat)>-1: out.append(term)
1150 1154
1151 1155 if len(out): return out
1152 1156 else: return None
1153 1157
1154 1158 #----------------------------------------------------------------------------
1155 1159 def dgrep(pat,*opts):
1156 1160 """Return grep() on dir()+dir(__builtins__).
1157 1161
1158 1162 A very common use of grep() when working interactively."""
1159 1163
1160 1164 return grep(pat,dir(__main__)+dir(__main__.__builtins__),*opts)
1161 1165
1162 1166 #----------------------------------------------------------------------------
1163 1167 def idgrep(pat):
1164 1168 """Case-insensitive dgrep()"""
1165 1169
1166 1170 return dgrep(pat,0)
1167 1171
1168 1172 #----------------------------------------------------------------------------
1169 1173 def igrep(pat,list):
1170 1174 """Synonym for case-insensitive grep."""
1171 1175
1172 1176 return grep(pat,list,case=0)
1173 1177
1174 1178 #----------------------------------------------------------------------------
1175 1179 def indent(str,nspaces=4,ntabs=0):
1176 1180 """Indent a string a given number of spaces or tabstops.
1177 1181
1178 1182 indent(str,nspaces=4,ntabs=0) -> indent str by ntabs+nspaces.
1179 1183 """
1180 1184 if str is None:
1181 1185 return
1182 1186 ind = '\t'*ntabs+' '*nspaces
1183 1187 outstr = '%s%s' % (ind,str.replace(os.linesep,os.linesep+ind))
1184 1188 if outstr.endswith(os.linesep+ind):
1185 1189 return outstr[:-len(ind)]
1186 1190 else:
1187 1191 return outstr
1188 1192
1189 1193 #-----------------------------------------------------------------------------
1190 1194 def native_line_ends(filename,backup=1):
1191 1195 """Convert (in-place) a file to line-ends native to the current OS.
1192 1196
1193 1197 If the optional backup argument is given as false, no backup of the
1194 1198 original file is left. """
1195 1199
1196 1200 backup_suffixes = {'posix':'~','dos':'.bak','nt':'.bak','mac':'.bak'}
1197 1201
1198 1202 bak_filename = filename + backup_suffixes[os.name]
1199 1203
1200 1204 original = open(filename).read()
1201 1205 shutil.copy2(filename,bak_filename)
1202 1206 try:
1203 1207 new = open(filename,'wb')
1204 1208 new.write(os.linesep.join(original.splitlines()))
1205 1209 new.write(os.linesep) # ALWAYS put an eol at the end of the file
1206 1210 new.close()
1207 1211 except:
1208 1212 os.rename(bak_filename,filename)
1209 1213 if not backup:
1210 1214 try:
1211 1215 os.remove(bak_filename)
1212 1216 except:
1213 1217 pass
1214 1218
1215 1219 #----------------------------------------------------------------------------
1216 1220 def get_pager_cmd(pager_cmd = None):
1217 1221 """Return a pager command.
1218 1222
1219 1223 Makes some attempts at finding an OS-correct one."""
1220 1224
1221 1225 if os.name == 'posix':
1222 1226 default_pager_cmd = 'less -r' # -r for color control sequences
1223 1227 elif os.name in ['nt','dos']:
1224 1228 default_pager_cmd = 'type'
1225 1229
1226 1230 if pager_cmd is None:
1227 1231 try:
1228 1232 pager_cmd = os.environ['PAGER']
1229 1233 except:
1230 1234 pager_cmd = default_pager_cmd
1231 1235 return pager_cmd
1232 1236
1233 1237 #-----------------------------------------------------------------------------
1234 1238 def get_pager_start(pager,start):
1235 1239 """Return the string for paging files with an offset.
1236 1240
1237 1241 This is the '+N' argument which less and more (under Unix) accept.
1238 1242 """
1239 1243
1240 1244 if pager in ['less','more']:
1241 1245 if start:
1242 1246 start_string = '+' + str(start)
1243 1247 else:
1244 1248 start_string = ''
1245 1249 else:
1246 1250 start_string = ''
1247 1251 return start_string
1248 1252
1249 1253 #----------------------------------------------------------------------------
1250 1254 # (X)emacs on W32 doesn't like to be bypassed with msvcrt.getch()
1251 1255 if os.name == 'nt' and os.environ.get('TERM','dumb') != 'emacs':
1252 1256 import msvcrt
1253 1257 def page_more():
1254 1258 """ Smart pausing between pages
1255 1259
1256 1260 @return: True if need print more lines, False if quit
1257 1261 """
1258 1262 Term.cout.write('---Return to continue, q to quit--- ')
1259 1263 ans = msvcrt.getch()
1260 1264 if ans in ("q", "Q"):
1261 1265 result = False
1262 1266 else:
1263 1267 result = True
1264 1268 Term.cout.write("\b"*37 + " "*37 + "\b"*37)
1265 1269 return result
1266 1270 else:
1267 1271 def page_more():
1268 1272 ans = raw_input('---Return to continue, q to quit--- ')
1269 1273 if ans.lower().startswith('q'):
1270 1274 return False
1271 1275 else:
1272 1276 return True
1273 1277
1274 1278 esc_re = re.compile(r"(\x1b[^m]+m)")
1275 1279
1276 1280 def page_dumb(strng,start=0,screen_lines=25):
1277 1281 """Very dumb 'pager' in Python, for when nothing else works.
1278 1282
1279 1283 Only moves forward, same interface as page(), except for pager_cmd and
1280 1284 mode."""
1281 1285
1282 1286 out_ln = strng.splitlines()[start:]
1283 1287 screens = chop(out_ln,screen_lines-1)
1284 1288 if len(screens) == 1:
1285 1289 print >>Term.cout, os.linesep.join(screens[0])
1286 1290 else:
1287 1291 last_escape = ""
1288 1292 for scr in screens[0:-1]:
1289 1293 hunk = os.linesep.join(scr)
1290 1294 print >>Term.cout, last_escape + hunk
1291 1295 if not page_more():
1292 1296 return
1293 1297 esc_list = esc_re.findall(hunk)
1294 1298 if len(esc_list) > 0:
1295 1299 last_escape = esc_list[-1]
1296 1300 print >>Term.cout, last_escape + os.linesep.join(screens[-1])
1297 1301
1298 1302 #----------------------------------------------------------------------------
1299 1303 def page(strng,start=0,screen_lines=0,pager_cmd = None):
1300 1304 """Print a string, piping through a pager after a certain length.
1301 1305
1302 1306 The screen_lines parameter specifies the number of *usable* lines of your
1303 1307 terminal screen (total lines minus lines you need to reserve to show other
1304 1308 information).
1305 1309
1306 1310 If you set screen_lines to a number <=0, page() will try to auto-determine
1307 1311 your screen size and will only use up to (screen_size+screen_lines) for
1308 1312 printing, paging after that. That is, if you want auto-detection but need
1309 1313 to reserve the bottom 3 lines of the screen, use screen_lines = -3, and for
1310 1314 auto-detection without any lines reserved simply use screen_lines = 0.
1311 1315
1312 1316 If a string won't fit in the allowed lines, it is sent through the
1313 1317 specified pager command. If none given, look for PAGER in the environment,
1314 1318 and ultimately default to less.
1315 1319
1316 1320 If no system pager works, the string is sent through a 'dumb pager'
1317 1321 written in python, very simplistic.
1318 1322 """
1319 1323
1320 1324 # Ugly kludge, but calling curses.initscr() flat out crashes in emacs
1321 1325 TERM = os.environ.get('TERM','dumb')
1322 1326 if TERM in ['dumb','emacs'] and os.name != 'nt':
1323 1327 print strng
1324 1328 return
1325 1329 # chop off the topmost part of the string we don't want to see
1326 1330 str_lines = strng.split(os.linesep)[start:]
1327 1331 str_toprint = os.linesep.join(str_lines)
1328 1332 num_newlines = len(str_lines)
1329 1333 len_str = len(str_toprint)
1330 1334
1331 1335 # Dumb heuristics to guesstimate number of on-screen lines the string
1332 1336 # takes. Very basic, but good enough for docstrings in reasonable
1333 1337 # terminals. If someone later feels like refining it, it's not hard.
1334 1338 numlines = max(num_newlines,int(len_str/80)+1)
1335 1339
1336 1340 if os.name == "nt":
1337 1341 screen_lines_def = get_console_size(defaulty=25)[1]
1338 1342 else:
1339 1343 screen_lines_def = 25 # default value if we can't auto-determine
1340 1344
1341 1345 # auto-determine screen size
1342 1346 if screen_lines <= 0:
1343 1347 if TERM=='xterm':
1344 1348 try:
1345 1349 import curses
1346 1350 if hasattr(curses,'initscr'):
1347 1351 use_curses = 1
1348 1352 else:
1349 1353 use_curses = 0
1350 1354 except ImportError:
1351 1355 use_curses = 0
1352 1356 else:
1353 1357 # curses causes problems on many terminals other than xterm.
1354 1358 use_curses = 0
1355 1359 if use_curses:
1356 1360 scr = curses.initscr()
1357 1361 screen_lines_real,screen_cols = scr.getmaxyx()
1358 1362 curses.endwin()
1359 1363 screen_lines += screen_lines_real
1360 1364 #print '***Screen size:',screen_lines_real,'lines x',\
1361 1365 #screen_cols,'columns.' # dbg
1362 1366 else:
1363 1367 screen_lines += screen_lines_def
1364 1368
1365 1369 #print 'numlines',numlines,'screenlines',screen_lines # dbg
1366 1370 if numlines <= screen_lines :
1367 1371 #print '*** normal print' # dbg
1368 1372 print >>Term.cout, str_toprint
1369 1373 else:
1370 1374 # Try to open pager and default to internal one if that fails.
1371 1375 # All failure modes are tagged as 'retval=1', to match the return
1372 1376 # value of a failed system command. If any intermediate attempt
1373 1377 # sets retval to 1, at the end we resort to our own page_dumb() pager.
1374 1378 pager_cmd = get_pager_cmd(pager_cmd)
1375 1379 pager_cmd += ' ' + get_pager_start(pager_cmd,start)
1376 1380 if os.name == 'nt':
1377 1381 if pager_cmd.startswith('type'):
1378 1382 # The default WinXP 'type' command is failing on complex strings.
1379 1383 retval = 1
1380 1384 else:
1381 1385 tmpname = tempfile.mktemp('.txt')
1382 1386 tmpfile = file(tmpname,'wt')
1383 1387 tmpfile.write(strng)
1384 1388 tmpfile.close()
1385 1389 cmd = "%s < %s" % (pager_cmd,tmpname)
1386 1390 if os.system(cmd):
1387 1391 retval = 1
1388 1392 else:
1389 1393 retval = None
1390 1394 os.remove(tmpname)
1391 1395 else:
1392 1396 try:
1393 1397 retval = None
1394 1398 # if I use popen4, things hang. No idea why.
1395 1399 #pager,shell_out = os.popen4(pager_cmd)
1396 1400 pager = os.popen(pager_cmd,'w')
1397 1401 pager.write(strng)
1398 1402 pager.close()
1399 1403 retval = pager.close() # success returns None
1400 1404 except IOError,msg: # broken pipe when user quits
1401 1405 if msg.args == (32,'Broken pipe'):
1402 1406 retval = None
1403 1407 else:
1404 1408 retval = 1
1405 1409 except OSError:
1406 1410 # Other strange problems, sometimes seen in Win2k/cygwin
1407 1411 retval = 1
1408 1412 if retval is not None:
1409 1413 page_dumb(strng,screen_lines=screen_lines)
1410 1414
1411 1415 #----------------------------------------------------------------------------
1412 1416 def page_file(fname,start = 0, pager_cmd = None):
1413 1417 """Page a file, using an optional pager command and starting line.
1414 1418 """
1415 1419
1416 1420 pager_cmd = get_pager_cmd(pager_cmd)
1417 1421 pager_cmd += ' ' + get_pager_start(pager_cmd,start)
1418 1422
1419 1423 try:
1420 1424 if os.environ['TERM'] in ['emacs','dumb']:
1421 1425 raise EnvironmentError
1422 1426 xsys(pager_cmd + ' ' + fname)
1423 1427 except:
1424 1428 try:
1425 1429 if start > 0:
1426 1430 start -= 1
1427 1431 page(open(fname).read(),start)
1428 1432 except:
1429 1433 print 'Unable to show file',`fname`
1430 1434
1431 1435 #----------------------------------------------------------------------------
1432 1436 def snip_print(str,width = 75,print_full = 0,header = ''):
1433 1437 """Print a string snipping the midsection to fit in width.
1434 1438
1435 1439 print_full: mode control:
1436 1440 - 0: only snip long strings
1437 1441 - 1: send to page() directly.
1438 1442 - 2: snip long strings and ask for full length viewing with page()
1439 1443 Return 1 if snipping was necessary, 0 otherwise."""
1440 1444
1441 1445 if print_full == 1:
1442 1446 page(header+str)
1443 1447 return 0
1444 1448
1445 1449 print header,
1446 1450 if len(str) < width:
1447 1451 print str
1448 1452 snip = 0
1449 1453 else:
1450 1454 whalf = int((width -5)/2)
1451 1455 print str[:whalf] + ' <...> ' + str[-whalf:]
1452 1456 snip = 1
1453 1457 if snip and print_full == 2:
1454 1458 if raw_input(header+' Snipped. View (y/n)? [N]').lower() == 'y':
1455 1459 page(str)
1456 1460 return snip
1457 1461
1458 1462 #****************************************************************************
1459 1463 # lists, dicts and structures
1460 1464
1461 1465 def belong(candidates,checklist):
1462 1466 """Check whether a list of items appear in a given list of options.
1463 1467
1464 1468 Returns a list of 1 and 0, one for each candidate given."""
1465 1469
1466 1470 return [x in checklist for x in candidates]
1467 1471
1468 1472 #----------------------------------------------------------------------------
1469 1473 def uniq_stable(elems):
1470 1474 """uniq_stable(elems) -> list
1471 1475
1472 1476 Return from an iterable, a list of all the unique elements in the input,
1473 1477 but maintaining the order in which they first appear.
1474 1478
1475 1479 A naive solution to this problem which just makes a dictionary with the
1476 1480 elements as keys fails to respect the stability condition, since
1477 1481 dictionaries are unsorted by nature.
1478 1482
1479 1483 Note: All elements in the input must be valid dictionary keys for this
1480 1484 routine to work, as it internally uses a dictionary for efficiency
1481 1485 reasons."""
1482 1486
1483 1487 unique = []
1484 1488 unique_dict = {}
1485 1489 for nn in elems:
1486 1490 if nn not in unique_dict:
1487 1491 unique.append(nn)
1488 1492 unique_dict[nn] = None
1489 1493 return unique
1490 1494
1491 1495 #----------------------------------------------------------------------------
1492 1496 class NLprinter:
1493 1497 """Print an arbitrarily nested list, indicating index numbers.
1494 1498
1495 1499 An instance of this class called nlprint is available and callable as a
1496 1500 function.
1497 1501
1498 1502 nlprint(list,indent=' ',sep=': ') -> prints indenting each level by 'indent'
1499 1503 and using 'sep' to separate the index from the value. """
1500 1504
1501 1505 def __init__(self):
1502 1506 self.depth = 0
1503 1507
1504 1508 def __call__(self,lst,pos='',**kw):
1505 1509 """Prints the nested list numbering levels."""
1506 1510 kw.setdefault('indent',' ')
1507 1511 kw.setdefault('sep',': ')
1508 1512 kw.setdefault('start',0)
1509 1513 kw.setdefault('stop',len(lst))
1510 1514 # we need to remove start and stop from kw so they don't propagate
1511 1515 # into a recursive call for a nested list.
1512 1516 start = kw['start']; del kw['start']
1513 1517 stop = kw['stop']; del kw['stop']
1514 1518 if self.depth == 0 and 'header' in kw.keys():
1515 1519 print kw['header']
1516 1520
1517 1521 for idx in range(start,stop):
1518 1522 elem = lst[idx]
1519 1523 if type(elem)==type([]):
1520 1524 self.depth += 1
1521 1525 self.__call__(elem,itpl('$pos$idx,'),**kw)
1522 1526 self.depth -= 1
1523 1527 else:
1524 1528 printpl(kw['indent']*self.depth+'$pos$idx$kw["sep"]$elem')
1525 1529
1526 1530 nlprint = NLprinter()
1527 1531 #----------------------------------------------------------------------------
1528 1532 def all_belong(candidates,checklist):
1529 1533 """Check whether a list of items ALL appear in a given list of options.
1530 1534
1531 1535 Returns a single 1 or 0 value."""
1532 1536
1533 1537 return 1-(0 in [x in checklist for x in candidates])
1534 1538
1535 1539 #----------------------------------------------------------------------------
1536 1540 def sort_compare(lst1,lst2,inplace = 1):
1537 1541 """Sort and compare two lists.
1538 1542
1539 1543 By default it does it in place, thus modifying the lists. Use inplace = 0
1540 1544 to avoid that (at the cost of temporary copy creation)."""
1541 1545 if not inplace:
1542 1546 lst1 = lst1[:]
1543 1547 lst2 = lst2[:]
1544 1548 lst1.sort(); lst2.sort()
1545 1549 return lst1 == lst2
1546 1550
1547 1551 #----------------------------------------------------------------------------
1548 1552 def mkdict(**kwargs):
1549 1553 """Return a dict from a keyword list.
1550 1554
1551 1555 It's just syntactic sugar for making ditcionary creation more convenient:
1552 1556 # the standard way
1553 1557 >>>data = { 'red' : 1, 'green' : 2, 'blue' : 3 }
1554 1558 # a cleaner way
1555 1559 >>>data = dict(red=1, green=2, blue=3)
1556 1560
1557 1561 If you need more than this, look at the Struct() class."""
1558 1562
1559 1563 return kwargs
1560 1564
1561 1565 #----------------------------------------------------------------------------
1562 1566 def list2dict(lst):
1563 1567 """Takes a list of (key,value) pairs and turns it into a dict."""
1564 1568
1565 1569 dic = {}
1566 1570 for k,v in lst: dic[k] = v
1567 1571 return dic
1568 1572
1569 1573 #----------------------------------------------------------------------------
1570 1574 def list2dict2(lst,default=''):
1571 1575 """Takes a list and turns it into a dict.
1572 1576 Much slower than list2dict, but more versatile. This version can take
1573 1577 lists with sublists of arbitrary length (including sclars)."""
1574 1578
1575 1579 dic = {}
1576 1580 for elem in lst:
1577 1581 if type(elem) in (types.ListType,types.TupleType):
1578 1582 size = len(elem)
1579 1583 if size == 0:
1580 1584 pass
1581 1585 elif size == 1:
1582 1586 dic[elem] = default
1583 1587 else:
1584 1588 k,v = elem[0], elem[1:]
1585 1589 if len(v) == 1: v = v[0]
1586 1590 dic[k] = v
1587 1591 else:
1588 1592 dic[elem] = default
1589 1593 return dic
1590 1594
1591 1595 #----------------------------------------------------------------------------
1592 1596 def flatten(seq):
1593 1597 """Flatten a list of lists (NOT recursive, only works for 2d lists)."""
1594 1598
1595 1599 return [x for subseq in seq for x in subseq]
1596 1600
1597 1601 #----------------------------------------------------------------------------
1598 1602 def get_slice(seq,start=0,stop=None,step=1):
1599 1603 """Get a slice of a sequence with variable step. Specify start,stop,step."""
1600 1604 if stop == None:
1601 1605 stop = len(seq)
1602 1606 item = lambda i: seq[i]
1603 1607 return map(item,xrange(start,stop,step))
1604 1608
1605 1609 #----------------------------------------------------------------------------
1606 1610 def chop(seq,size):
1607 1611 """Chop a sequence into chunks of the given size."""
1608 1612 chunk = lambda i: seq[i:i+size]
1609 1613 return map(chunk,xrange(0,len(seq),size))
1610 1614
1611 1615 #----------------------------------------------------------------------------
1612 1616 # with is a keyword as of python 2.5, so this function is renamed to withobj
1613 1617 # from its old 'with' name.
1614 1618 def with_obj(object, **args):
1615 1619 """Set multiple attributes for an object, similar to Pascal's with.
1616 1620
1617 1621 Example:
1618 1622 with_obj(jim,
1619 1623 born = 1960,
1620 1624 haircolour = 'Brown',
1621 1625 eyecolour = 'Green')
1622 1626
1623 1627 Credit: Greg Ewing, in
1624 1628 http://mail.python.org/pipermail/python-list/2001-May/040703.html.
1625 1629
1626 1630 NOTE: up until IPython 0.7.2, this was called simply 'with', but 'with'
1627 1631 has become a keyword for Python 2.5, so we had to rename it."""
1628 1632
1629 1633 object.__dict__.update(args)
1630 1634
1631 1635 #----------------------------------------------------------------------------
1632 1636 def setattr_list(obj,alist,nspace = None):
1633 1637 """Set a list of attributes for an object taken from a namespace.
1634 1638
1635 1639 setattr_list(obj,alist,nspace) -> sets in obj all the attributes listed in
1636 1640 alist with their values taken from nspace, which must be a dict (something
1637 1641 like locals() will often do) If nspace isn't given, locals() of the
1638 1642 *caller* is used, so in most cases you can omit it.
1639 1643
1640 1644 Note that alist can be given as a string, which will be automatically
1641 1645 split into a list on whitespace. If given as a list, it must be a list of
1642 1646 *strings* (the variable names themselves), not of variables."""
1643 1647
1644 1648 # this grabs the local variables from the *previous* call frame -- that is
1645 1649 # the locals from the function that called setattr_list().
1646 1650 # - snipped from weave.inline()
1647 1651 if nspace is None:
1648 1652 call_frame = sys._getframe().f_back
1649 1653 nspace = call_frame.f_locals
1650 1654
1651 1655 if type(alist) in StringTypes:
1652 1656 alist = alist.split()
1653 1657 for attr in alist:
1654 1658 val = eval(attr,nspace)
1655 1659 setattr(obj,attr,val)
1656 1660
1657 1661 #----------------------------------------------------------------------------
1658 1662 def getattr_list(obj,alist,*args):
1659 1663 """getattr_list(obj,alist[, default]) -> attribute list.
1660 1664
1661 1665 Get a list of named attributes for an object. When a default argument is
1662 1666 given, it is returned when the attribute doesn't exist; without it, an
1663 1667 exception is raised in that case.
1664 1668
1665 1669 Note that alist can be given as a string, which will be automatically
1666 1670 split into a list on whitespace. If given as a list, it must be a list of
1667 1671 *strings* (the variable names themselves), not of variables."""
1668 1672
1669 1673 if type(alist) in StringTypes:
1670 1674 alist = alist.split()
1671 1675 if args:
1672 1676 if len(args)==1:
1673 1677 default = args[0]
1674 1678 return map(lambda attr: getattr(obj,attr,default),alist)
1675 1679 else:
1676 1680 raise ValueError,'getattr_list() takes only one optional argument'
1677 1681 else:
1678 1682 return map(lambda attr: getattr(obj,attr),alist)
1679 1683
1680 1684 #----------------------------------------------------------------------------
1681 1685 def map_method(method,object_list,*argseq,**kw):
1682 1686 """map_method(method,object_list,*args,**kw) -> list
1683 1687
1684 1688 Return a list of the results of applying the methods to the items of the
1685 1689 argument sequence(s). If more than one sequence is given, the method is
1686 1690 called with an argument list consisting of the corresponding item of each
1687 1691 sequence. All sequences must be of the same length.
1688 1692
1689 1693 Keyword arguments are passed verbatim to all objects called.
1690 1694
1691 1695 This is Python code, so it's not nearly as fast as the builtin map()."""
1692 1696
1693 1697 out_list = []
1694 1698 idx = 0
1695 1699 for object in object_list:
1696 1700 try:
1697 1701 handler = getattr(object, method)
1698 1702 except AttributeError:
1699 1703 out_list.append(None)
1700 1704 else:
1701 1705 if argseq:
1702 1706 args = map(lambda lst:lst[idx],argseq)
1703 1707 #print 'ob',object,'hand',handler,'ar',args # dbg
1704 1708 out_list.append(handler(args,**kw))
1705 1709 else:
1706 1710 out_list.append(handler(**kw))
1707 1711 idx += 1
1708 1712 return out_list
1709 1713
1710 1714 #----------------------------------------------------------------------------
1711 1715 def import_fail_info(mod_name,fns=None):
1712 1716 """Inform load failure for a module."""
1713 1717
1714 1718 if fns == None:
1715 1719 warn("Loading of %s failed.\n" % (mod_name,))
1716 1720 else:
1717 1721 warn("Loading of %s from %s failed.\n" % (fns,mod_name))
1718 1722
1719 1723 #----------------------------------------------------------------------------
1720 1724 # Proposed popitem() extension, written as a method
1721 1725
1722 1726
1723 1727 class NotGiven: pass
1724 1728
1725 1729 def popkey(dct,key,default=NotGiven):
1726 1730 """Return dct[key] and delete dct[key].
1727 1731
1728 1732 If default is given, return it if dct[key] doesn't exist, otherwise raise
1729 1733 KeyError. """
1730 1734
1731 1735 try:
1732 1736 val = dct[key]
1733 1737 except KeyError:
1734 1738 if default is NotGiven:
1735 1739 raise
1736 1740 else:
1737 1741 return default
1738 1742 else:
1739 1743 del dct[key]
1740 1744 return val
1741 1745
1742 1746 def wrap_deprecated(func, suggest = '<nothing>'):
1743 1747 def newFunc(*args, **kwargs):
1744 1748 warnings.warn("Call to deprecated function %s, use %s instead" %
1745 1749 ( func.__name__, suggest),
1746 1750 category=DeprecationWarning,
1747 1751 stacklevel = 2)
1748 1752 return func(*args, **kwargs)
1749 1753 return newFunc
1750 1754
1751 1755 #*************************** end of file <genutils.py> **********************
1752 1756
@@ -1,6336 +1,6343 b''
1 1 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
2 2
3 * IPython/genutils.py (IOStream.close): small patch by
4 R. Bernstein for improved pydb support.
5
6 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
7 DaveS <davls@telus.net> to improve support of debugging under
8 NTEmacs, including improved pydb behavior.
9
3 10 * IPython/Magic.py (magic_prun): Fix saving of profile info for
4 11 Python 2.5, where the stats object API changed a little. Thanks
5 12 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
6 13
7 14 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
8 15 Pernetty's patch to improve support for (X)Emacs under Win32.
9 16
10 17 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
11 18
12 19 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
13 20 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
14 21 a report by Nik Tautenhahn.
15 22
16 23 2007-03-16 Walter Doerwald <walter@livinglogic.de>
17 24
18 25 * setup.py: Add the igrid help files to the list of data files
19 26 to be installed alongside igrid.
20 27 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
21 28 Show the input object of the igrid browser as the window tile.
22 29 Show the object the cursor is on in the statusbar.
23 30
24 31 2007-03-15 Ville Vainio <vivainio@gmail.com>
25 32
26 33 * Extensions/ipy_stock_completers.py: Fixed exception
27 34 on mismatching quotes in %run completer. Patch by
28 35 JοΏ½rgen Stenarson. Closes #127.
29 36
30 37 2007-03-14 Ville Vainio <vivainio@gmail.com>
31 38
32 39 * Extensions/ext_rehashdir.py: Do not do auto_alias
33 40 in %rehashdir, it clobbers %store'd aliases.
34 41
35 42 * UserConfig/ipy_profile_sh.py: envpersist.py extension
36 43 (beefed up %env) imported for sh profile.
37 44
38 45 2007-03-10 Walter Doerwald <walter@livinglogic.de>
39 46
40 47 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
41 48 as the default browser.
42 49 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
43 50 As igrid displays all attributes it ever encounters, fetch() (which has
44 51 been renamed to _fetch()) doesn't have to recalculate the display attributes
45 52 every time a new item is fetched. This should speed up scrolling.
46 53
47 54 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
48 55
49 56 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
50 57 Schmolck's recently reported tab-completion bug (my previous one
51 58 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
52 59
53 60 2007-03-09 Walter Doerwald <walter@livinglogic.de>
54 61
55 62 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
56 63 Close help window if exiting igrid.
57 64
58 65 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
59 66
60 67 * IPython/Extensions/ipy_defaults.py: Check if readline is available
61 68 before calling functions from readline.
62 69
63 70 2007-03-02 Walter Doerwald <walter@livinglogic.de>
64 71
65 72 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
66 73 igrid is a wxPython-based display object for ipipe. If your system has
67 74 wx installed igrid will be the default display. Without wx ipipe falls
68 75 back to ibrowse (which needs curses). If no curses is installed ipipe
69 76 falls back to idump.
70 77
71 78 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
72 79
73 80 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
74 81 my changes from yesterday, they introduced bugs. Will reactivate
75 82 once I get a correct solution, which will be much easier thanks to
76 83 Dan Milstein's new prefilter test suite.
77 84
78 85 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
79 86
80 87 * IPython/iplib.py (split_user_input): fix input splitting so we
81 88 don't attempt attribute accesses on things that can't possibly be
82 89 valid Python attributes. After a bug report by Alex Schmolck.
83 90 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
84 91 %magic with explicit % prefix.
85 92
86 93 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
87 94
88 95 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
89 96 avoid a DeprecationWarning from GTK.
90 97
91 98 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
92 99
93 100 * IPython/genutils.py (clock): I modified clock() to return total
94 101 time, user+system. This is a more commonly needed metric. I also
95 102 introduced the new clocku/clocks to get only user/system time if
96 103 one wants those instead.
97 104
98 105 ***WARNING: API CHANGE*** clock() used to return only user time,
99 106 so if you want exactly the same results as before, use clocku
100 107 instead.
101 108
102 109 2007-02-22 Ville Vainio <vivainio@gmail.com>
103 110
104 111 * IPython/Extensions/ipy_p4.py: Extension for improved
105 112 p4 (perforce version control system) experience.
106 113 Adds %p4 magic with p4 command completion and
107 114 automatic -G argument (marshall output as python dict)
108 115
109 116 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
110 117
111 118 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
112 119 stop marks.
113 120 (ClearingMixin): a simple mixin to easily make a Demo class clear
114 121 the screen in between blocks and have empty marquees. The
115 122 ClearDemo and ClearIPDemo classes that use it are included.
116 123
117 124 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
118 125
119 126 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
120 127 protect against exceptions at Python shutdown time. Patch
121 128 sumbmitted to upstream.
122 129
123 130 2007-02-14 Walter Doerwald <walter@livinglogic.de>
124 131
125 132 * IPython/Extensions/ibrowse.py: If entering the first object level
126 133 (i.e. the object for which the browser has been started) fails,
127 134 now the error is raised directly (aborting the browser) instead of
128 135 running into an empty levels list later.
129 136
130 137 2007-02-03 Walter Doerwald <walter@livinglogic.de>
131 138
132 139 * IPython/Extensions/ipipe.py: Add an xrepr implementation
133 140 for the noitem object.
134 141
135 142 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
136 143
137 144 * IPython/completer.py (Completer.attr_matches): Fix small
138 145 tab-completion bug with Enthought Traits objects with units.
139 146 Thanks to a bug report by Tom Denniston
140 147 <tom.denniston-AT-alum.dartmouth.org>.
141 148
142 149 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
143 150
144 151 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
145 152 bug where only .ipy or .py would be completed. Once the first
146 153 argument to %run has been given, all completions are valid because
147 154 they are the arguments to the script, which may well be non-python
148 155 filenames.
149 156
150 157 * IPython/irunner.py (InteractiveRunner.run_source): major updates
151 158 to irunner to allow it to correctly support real doctesting of
152 159 out-of-process ipython code.
153 160
154 161 * IPython/Magic.py (magic_cd): Make the setting of the terminal
155 162 title an option (-noterm_title) because it completely breaks
156 163 doctesting.
157 164
158 165 * IPython/demo.py: fix IPythonDemo class that was not actually working.
159 166
160 167 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
161 168
162 169 * IPython/irunner.py (main): fix small bug where extensions were
163 170 not being correctly recognized.
164 171
165 172 2007-01-23 Walter Doerwald <walter@livinglogic.de>
166 173
167 174 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
168 175 a string containing a single line yields the string itself as the
169 176 only item.
170 177
171 178 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
172 179 object if it's the same as the one on the last level (This avoids
173 180 infinite recursion for one line strings).
174 181
175 182 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
176 183
177 184 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
178 185 all output streams before printing tracebacks. This ensures that
179 186 user output doesn't end up interleaved with traceback output.
180 187
181 188 2007-01-10 Ville Vainio <vivainio@gmail.com>
182 189
183 190 * Extensions/envpersist.py: Turbocharged %env that remembers
184 191 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
185 192 "%env VISUAL=jed".
186 193
187 194 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
188 195
189 196 * IPython/iplib.py (showtraceback): ensure that we correctly call
190 197 custom handlers in all cases (some with pdb were slipping through,
191 198 but I'm not exactly sure why).
192 199
193 200 * IPython/Debugger.py (Tracer.__init__): added new class to
194 201 support set_trace-like usage of IPython's enhanced debugger.
195 202
196 203 2006-12-24 Ville Vainio <vivainio@gmail.com>
197 204
198 205 * ipmaker.py: more informative message when ipy_user_conf
199 206 import fails (suggest running %upgrade).
200 207
201 208 * tools/run_ipy_in_profiler.py: Utility to see where
202 209 the time during IPython startup is spent.
203 210
204 211 2006-12-20 Ville Vainio <vivainio@gmail.com>
205 212
206 213 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
207 214
208 215 * ipapi.py: Add new ipapi method, expand_alias.
209 216
210 217 * Release.py: Bump up version to 0.7.4.svn
211 218
212 219 2006-12-17 Ville Vainio <vivainio@gmail.com>
213 220
214 221 * Extensions/jobctrl.py: Fixed &cmd arg arg...
215 222 to work properly on posix too
216 223
217 224 * Release.py: Update revnum (version is still just 0.7.3).
218 225
219 226 2006-12-15 Ville Vainio <vivainio@gmail.com>
220 227
221 228 * scripts/ipython_win_post_install: create ipython.py in
222 229 prefix + "/scripts".
223 230
224 231 * Release.py: Update version to 0.7.3.
225 232
226 233 2006-12-14 Ville Vainio <vivainio@gmail.com>
227 234
228 235 * scripts/ipython_win_post_install: Overwrite old shortcuts
229 236 if they already exist
230 237
231 238 * Release.py: release 0.7.3rc2
232 239
233 240 2006-12-13 Ville Vainio <vivainio@gmail.com>
234 241
235 242 * Branch and update Release.py for 0.7.3rc1
236 243
237 244 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
238 245
239 246 * IPython/Shell.py (IPShellWX): update for current WX naming
240 247 conventions, to avoid a deprecation warning with current WX
241 248 versions. Thanks to a report by Danny Shevitz.
242 249
243 250 2006-12-12 Ville Vainio <vivainio@gmail.com>
244 251
245 252 * ipmaker.py: apply david cournapeau's patch to make
246 253 import_some work properly even when ipythonrc does
247 254 import_some on empty list (it was an old bug!).
248 255
249 256 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
250 257 Add deprecation note to ipythonrc and a url to wiki
251 258 in ipy_user_conf.py
252 259
253 260
254 261 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
255 262 as if it was typed on IPython command prompt, i.e.
256 263 as IPython script.
257 264
258 265 * example-magic.py, magic_grepl.py: remove outdated examples
259 266
260 267 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
261 268
262 269 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
263 270 is called before any exception has occurred.
264 271
265 272 2006-12-08 Ville Vainio <vivainio@gmail.com>
266 273
267 274 * Extensions/ipy_stock_completers.py: fix cd completer
268 275 to translate /'s to \'s again.
269 276
270 277 * completer.py: prevent traceback on file completions w/
271 278 backslash.
272 279
273 280 * Release.py: Update release number to 0.7.3b3 for release
274 281
275 282 2006-12-07 Ville Vainio <vivainio@gmail.com>
276 283
277 284 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
278 285 while executing external code. Provides more shell-like behaviour
279 286 and overall better response to ctrl + C / ctrl + break.
280 287
281 288 * tools/make_tarball.py: new script to create tarball straight from svn
282 289 (setup.py sdist doesn't work on win32).
283 290
284 291 * Extensions/ipy_stock_completers.py: fix cd completer to give up
285 292 on dirnames with spaces and use the default completer instead.
286 293
287 294 * Revision.py: Change version to 0.7.3b2 for release.
288 295
289 296 2006-12-05 Ville Vainio <vivainio@gmail.com>
290 297
291 298 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
292 299 pydb patch 4 (rm debug printing, py 2.5 checking)
293 300
294 301 2006-11-30 Walter Doerwald <walter@livinglogic.de>
295 302 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
296 303 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
297 304 "refreshfind" (mapped to "R") does the same but tries to go back to the same
298 305 object the cursor was on before the refresh. The command "markrange" is
299 306 mapped to "%" now.
300 307 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
301 308
302 309 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
303 310
304 311 * IPython/Magic.py (magic_debug): new %debug magic to activate the
305 312 interactive debugger on the last traceback, without having to call
306 313 %pdb and rerun your code. Made minor changes in various modules,
307 314 should automatically recognize pydb if available.
308 315
309 316 2006-11-28 Ville Vainio <vivainio@gmail.com>
310 317
311 318 * completer.py: If the text start with !, show file completions
312 319 properly. This helps when trying to complete command name
313 320 for shell escapes.
314 321
315 322 2006-11-27 Ville Vainio <vivainio@gmail.com>
316 323
317 324 * ipy_stock_completers.py: bzr completer submitted by Stefan van
318 325 der Walt. Clean up svn and hg completers by using a common
319 326 vcs_completer.
320 327
321 328 2006-11-26 Ville Vainio <vivainio@gmail.com>
322 329
323 330 * Remove ipconfig and %config; you should use _ip.options structure
324 331 directly instead!
325 332
326 333 * genutils.py: add wrap_deprecated function for deprecating callables
327 334
328 335 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
329 336 _ip.system instead. ipalias is redundant.
330 337
331 338 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
332 339 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
333 340 explicit.
334 341
335 342 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
336 343 completer. Try it by entering 'hg ' and pressing tab.
337 344
338 345 * macro.py: Give Macro a useful __repr__ method
339 346
340 347 * Magic.py: %whos abbreviates the typename of Macro for brevity.
341 348
342 349 2006-11-24 Walter Doerwald <walter@livinglogic.de>
343 350 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
344 351 we don't get a duplicate ipipe module, where registration of the xrepr
345 352 implementation for Text is useless.
346 353
347 354 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
348 355
349 356 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
350 357
351 358 2006-11-24 Ville Vainio <vivainio@gmail.com>
352 359
353 360 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
354 361 try to use "cProfile" instead of the slower pure python
355 362 "profile"
356 363
357 364 2006-11-23 Ville Vainio <vivainio@gmail.com>
358 365
359 366 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
360 367 Qt+IPython+Designer link in documentation.
361 368
362 369 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
363 370 correct Pdb object to %pydb.
364 371
365 372
366 373 2006-11-22 Walter Doerwald <walter@livinglogic.de>
367 374 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
368 375 generic xrepr(), otherwise the list implementation would kick in.
369 376
370 377 2006-11-21 Ville Vainio <vivainio@gmail.com>
371 378
372 379 * upgrade_dir.py: Now actually overwrites a nonmodified user file
373 380 with one from UserConfig.
374 381
375 382 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
376 383 it was missing which broke the sh profile.
377 384
378 385 * completer.py: file completer now uses explicit '/' instead
379 386 of os.path.join, expansion of 'foo' was broken on win32
380 387 if there was one directory with name 'foobar'.
381 388
382 389 * A bunch of patches from Kirill Smelkov:
383 390
384 391 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
385 392
386 393 * [patch 7/9] Implement %page -r (page in raw mode) -
387 394
388 395 * [patch 5/9] ScientificPython webpage has moved
389 396
390 397 * [patch 4/9] The manual mentions %ds, should be %dhist
391 398
392 399 * [patch 3/9] Kill old bits from %prun doc.
393 400
394 401 * [patch 1/9] Fix typos here and there.
395 402
396 403 2006-11-08 Ville Vainio <vivainio@gmail.com>
397 404
398 405 * completer.py (attr_matches): catch all exceptions raised
399 406 by eval of expr with dots.
400 407
401 408 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
402 409
403 410 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
404 411 input if it starts with whitespace. This allows you to paste
405 412 indented input from any editor without manually having to type in
406 413 the 'if 1:', which is convenient when working interactively.
407 414 Slightly modifed version of a patch by Bo Peng
408 415 <bpeng-AT-rice.edu>.
409 416
410 417 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
411 418
412 419 * IPython/irunner.py (main): modified irunner so it automatically
413 420 recognizes the right runner to use based on the extension (.py for
414 421 python, .ipy for ipython and .sage for sage).
415 422
416 423 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
417 424 visible in ipapi as ip.config(), to programatically control the
418 425 internal rc object. There's an accompanying %config magic for
419 426 interactive use, which has been enhanced to match the
420 427 funtionality in ipconfig.
421 428
422 429 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
423 430 so it's not just a toggle, it now takes an argument. Add support
424 431 for a customizable header when making system calls, as the new
425 432 system_header variable in the ipythonrc file.
426 433
427 434 2006-11-03 Walter Doerwald <walter@livinglogic.de>
428 435
429 436 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
430 437 generic functions (using Philip J. Eby's simplegeneric package).
431 438 This makes it possible to customize the display of third-party classes
432 439 without having to monkeypatch them. xiter() no longer supports a mode
433 440 argument and the XMode class has been removed. The same functionality can
434 441 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
435 442 One consequence of the switch to generic functions is that xrepr() and
436 443 xattrs() implementation must define the default value for the mode
437 444 argument themselves and xattrs() implementations must return real
438 445 descriptors.
439 446
440 447 * IPython/external: This new subpackage will contain all third-party
441 448 packages that are bundled with IPython. (The first one is simplegeneric).
442 449
443 450 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
444 451 directory which as been dropped in r1703.
445 452
446 453 * IPython/Extensions/ipipe.py (iless): Fixed.
447 454
448 455 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
449 456
450 457 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
451 458
452 459 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
453 460 handling in variable expansion so that shells and magics recognize
454 461 function local scopes correctly. Bug reported by Brian.
455 462
456 463 * scripts/ipython: remove the very first entry in sys.path which
457 464 Python auto-inserts for scripts, so that sys.path under IPython is
458 465 as similar as possible to that under plain Python.
459 466
460 467 * IPython/completer.py (IPCompleter.file_matches): Fix
461 468 tab-completion so that quotes are not closed unless the completion
462 469 is unambiguous. After a request by Stefan. Minor cleanups in
463 470 ipy_stock_completers.
464 471
465 472 2006-11-02 Ville Vainio <vivainio@gmail.com>
466 473
467 474 * ipy_stock_completers.py: Add %run and %cd completers.
468 475
469 476 * completer.py: Try running custom completer for both
470 477 "foo" and "%foo" if the command is just "foo". Ignore case
471 478 when filtering possible completions.
472 479
473 480 * UserConfig/ipy_user_conf.py: install stock completers as default
474 481
475 482 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
476 483 simplified readline history save / restore through a wrapper
477 484 function
478 485
479 486
480 487 2006-10-31 Ville Vainio <vivainio@gmail.com>
481 488
482 489 * strdispatch.py, completer.py, ipy_stock_completers.py:
483 490 Allow str_key ("command") in completer hooks. Implement
484 491 trivial completer for 'import' (stdlib modules only). Rename
485 492 ipy_linux_package_managers.py to ipy_stock_completers.py.
486 493 SVN completer.
487 494
488 495 * Extensions/ledit.py: %magic line editor for easily and
489 496 incrementally manipulating lists of strings. The magic command
490 497 name is %led.
491 498
492 499 2006-10-30 Ville Vainio <vivainio@gmail.com>
493 500
494 501 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
495 502 Bernsteins's patches for pydb integration.
496 503 http://bashdb.sourceforge.net/pydb/
497 504
498 505 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
499 506 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
500 507 custom completer hook to allow the users to implement their own
501 508 completers. See ipy_linux_package_managers.py for example. The
502 509 hook name is 'complete_command'.
503 510
504 511 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
505 512
506 513 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
507 514 Numeric leftovers.
508 515
509 516 * ipython.el (py-execute-region): apply Stefan's patch to fix
510 517 garbled results if the python shell hasn't been previously started.
511 518
512 519 * IPython/genutils.py (arg_split): moved to genutils, since it's a
513 520 pretty generic function and useful for other things.
514 521
515 522 * IPython/OInspect.py (getsource): Add customizable source
516 523 extractor. After a request/patch form W. Stein (SAGE).
517 524
518 525 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
519 526 window size to a more reasonable value from what pexpect does,
520 527 since their choice causes wrapping bugs with long input lines.
521 528
522 529 2006-10-28 Ville Vainio <vivainio@gmail.com>
523 530
524 531 * Magic.py (%run): Save and restore the readline history from
525 532 file around %run commands to prevent side effects from
526 533 %runned programs that might use readline (e.g. pydb).
527 534
528 535 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
529 536 invoking the pydb enhanced debugger.
530 537
531 538 2006-10-23 Walter Doerwald <walter@livinglogic.de>
532 539
533 540 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
534 541 call the base class method and propagate the return value to
535 542 ifile. This is now done by path itself.
536 543
537 544 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
538 545
539 546 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
540 547 api: set_crash_handler(), to expose the ability to change the
541 548 internal crash handler.
542 549
543 550 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
544 551 the various parameters of the crash handler so that apps using
545 552 IPython as their engine can customize crash handling. Ipmlemented
546 553 at the request of SAGE.
547 554
548 555 2006-10-14 Ville Vainio <vivainio@gmail.com>
549 556
550 557 * Magic.py, ipython.el: applied first "safe" part of Rocky
551 558 Bernstein's patch set for pydb integration.
552 559
553 560 * Magic.py (%unalias, %alias): %store'd aliases can now be
554 561 removed with '%unalias'. %alias w/o args now shows most
555 562 interesting (stored / manually defined) aliases last
556 563 where they catch the eye w/o scrolling.
557 564
558 565 * Magic.py (%rehashx), ext_rehashdir.py: files with
559 566 'py' extension are always considered executable, even
560 567 when not in PATHEXT environment variable.
561 568
562 569 2006-10-12 Ville Vainio <vivainio@gmail.com>
563 570
564 571 * jobctrl.py: Add new "jobctrl" extension for spawning background
565 572 processes with "&find /". 'import jobctrl' to try it out. Requires
566 573 'subprocess' module, standard in python 2.4+.
567 574
568 575 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
569 576 so if foo -> bar and bar -> baz, then foo -> baz.
570 577
571 578 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
572 579
573 580 * IPython/Magic.py (Magic.parse_options): add a new posix option
574 581 to allow parsing of input args in magics that doesn't strip quotes
575 582 (if posix=False). This also closes %timeit bug reported by
576 583 Stefan.
577 584
578 585 2006-10-03 Ville Vainio <vivainio@gmail.com>
579 586
580 587 * iplib.py (raw_input, interact): Return ValueError catching for
581 588 raw_input. Fixes infinite loop for sys.stdin.close() or
582 589 sys.stdout.close().
583 590
584 591 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
585 592
586 593 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
587 594 to help in handling doctests. irunner is now pretty useful for
588 595 running standalone scripts and simulate a full interactive session
589 596 in a format that can be then pasted as a doctest.
590 597
591 598 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
592 599 on top of the default (useless) ones. This also fixes the nasty
593 600 way in which 2.5's Quitter() exits (reverted [1785]).
594 601
595 602 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
596 603 2.5.
597 604
598 605 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
599 606 color scheme is updated as well when color scheme is changed
600 607 interactively.
601 608
602 609 2006-09-27 Ville Vainio <vivainio@gmail.com>
603 610
604 611 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
605 612 infinite loop and just exit. It's a hack, but will do for a while.
606 613
607 614 2006-08-25 Walter Doerwald <walter@livinglogic.de>
608 615
609 616 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
610 617 the constructor, this makes it possible to get a list of only directories
611 618 or only files.
612 619
613 620 2006-08-12 Ville Vainio <vivainio@gmail.com>
614 621
615 622 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
616 623 they broke unittest
617 624
618 625 2006-08-11 Ville Vainio <vivainio@gmail.com>
619 626
620 627 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
621 628 by resolving issue properly, i.e. by inheriting FakeModule
622 629 from types.ModuleType. Pickling ipython interactive data
623 630 should still work as usual (testing appreciated).
624 631
625 632 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
626 633
627 634 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
628 635 running under python 2.3 with code from 2.4 to fix a bug with
629 636 help(). Reported by the Debian maintainers, Norbert Tretkowski
630 637 <norbert-AT-tretkowski.de> and Alexandre Fayolle
631 638 <afayolle-AT-debian.org>.
632 639
633 640 2006-08-04 Walter Doerwald <walter@livinglogic.de>
634 641
635 642 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
636 643 (which was displaying "quit" twice).
637 644
638 645 2006-07-28 Walter Doerwald <walter@livinglogic.de>
639 646
640 647 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
641 648 the mode argument).
642 649
643 650 2006-07-27 Walter Doerwald <walter@livinglogic.de>
644 651
645 652 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
646 653 not running under IPython.
647 654
648 655 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
649 656 and make it iterable (iterating over the attribute itself). Add two new
650 657 magic strings for __xattrs__(): If the string starts with "-", the attribute
651 658 will not be displayed in ibrowse's detail view (but it can still be
652 659 iterated over). This makes it possible to add attributes that are large
653 660 lists or generator methods to the detail view. Replace magic attribute names
654 661 and _attrname() and _getattr() with "descriptors": For each type of magic
655 662 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
656 663 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
657 664 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
658 665 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
659 666 are still supported.
660 667
661 668 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
662 669 fails in ibrowse.fetch(), the exception object is added as the last item
663 670 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
664 671 a generator throws an exception midway through execution.
665 672
666 673 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
667 674 encoding into methods.
668 675
669 676 2006-07-26 Ville Vainio <vivainio@gmail.com>
670 677
671 678 * iplib.py: history now stores multiline input as single
672 679 history entries. Patch by Jorgen Cederlof.
673 680
674 681 2006-07-18 Walter Doerwald <walter@livinglogic.de>
675 682
676 683 * IPython/Extensions/ibrowse.py: Make cursor visible over
677 684 non existing attributes.
678 685
679 686 2006-07-14 Walter Doerwald <walter@livinglogic.de>
680 687
681 688 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
682 689 error output of the running command doesn't mess up the screen.
683 690
684 691 2006-07-13 Walter Doerwald <walter@livinglogic.de>
685 692
686 693 * IPython/Extensions/ipipe.py (isort): Make isort usable without
687 694 argument. This sorts the items themselves.
688 695
689 696 2006-07-12 Walter Doerwald <walter@livinglogic.de>
690 697
691 698 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
692 699 Compile expression strings into code objects. This should speed
693 700 up ifilter and friends somewhat.
694 701
695 702 2006-07-08 Ville Vainio <vivainio@gmail.com>
696 703
697 704 * Magic.py: %cpaste now strips > from the beginning of lines
698 705 to ease pasting quoted code from emails. Contributed by
699 706 Stefan van der Walt.
700 707
701 708 2006-06-29 Ville Vainio <vivainio@gmail.com>
702 709
703 710 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
704 711 mode, patch contributed by Darren Dale. NEEDS TESTING!
705 712
706 713 2006-06-28 Walter Doerwald <walter@livinglogic.de>
707 714
708 715 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
709 716 a blue background. Fix fetching new display rows when the browser
710 717 scrolls more than a screenful (e.g. by using the goto command).
711 718
712 719 2006-06-27 Ville Vainio <vivainio@gmail.com>
713 720
714 721 * Magic.py (_inspect, _ofind) Apply David Huard's
715 722 patch for displaying the correct docstring for 'property'
716 723 attributes.
717 724
718 725 2006-06-23 Walter Doerwald <walter@livinglogic.de>
719 726
720 727 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
721 728 commands into the methods implementing them.
722 729
723 730 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
724 731
725 732 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
726 733 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
727 734 autoindent support was authored by Jin Liu.
728 735
729 736 2006-06-22 Walter Doerwald <walter@livinglogic.de>
730 737
731 738 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
732 739 for keymaps with a custom class that simplifies handling.
733 740
734 741 2006-06-19 Walter Doerwald <walter@livinglogic.de>
735 742
736 743 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
737 744 resizing. This requires Python 2.5 to work.
738 745
739 746 2006-06-16 Walter Doerwald <walter@livinglogic.de>
740 747
741 748 * IPython/Extensions/ibrowse.py: Add two new commands to
742 749 ibrowse: "hideattr" (mapped to "h") hides the attribute under
743 750 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
744 751 attributes again. Remapped the help command to "?". Display
745 752 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
746 753 as keys for the "home" and "end" commands. Add three new commands
747 754 to the input mode for "find" and friends: "delend" (CTRL-K)
748 755 deletes to the end of line. "incsearchup" searches upwards in the
749 756 command history for an input that starts with the text before the cursor.
750 757 "incsearchdown" does the same downwards. Removed a bogus mapping of
751 758 the x key to "delete".
752 759
753 760 2006-06-15 Ville Vainio <vivainio@gmail.com>
754 761
755 762 * iplib.py, hooks.py: Added new generate_prompt hook that can be
756 763 used to create prompts dynamically, instead of the "old" way of
757 764 assigning "magic" strings to prompt_in1 and prompt_in2. The old
758 765 way still works (it's invoked by the default hook), of course.
759 766
760 767 * Prompts.py: added generate_output_prompt hook for altering output
761 768 prompt
762 769
763 770 * Release.py: Changed version string to 0.7.3.svn.
764 771
765 772 2006-06-15 Walter Doerwald <walter@livinglogic.de>
766 773
767 774 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
768 775 the call to fetch() always tries to fetch enough data for at least one
769 776 full screen. This makes it possible to simply call moveto(0,0,True) in
770 777 the constructor. Fix typos and removed the obsolete goto attribute.
771 778
772 779 2006-06-12 Ville Vainio <vivainio@gmail.com>
773 780
774 781 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
775 782 allowing $variable interpolation within multiline statements,
776 783 though so far only with "sh" profile for a testing period.
777 784 The patch also enables splitting long commands with \ but it
778 785 doesn't work properly yet.
779 786
780 787 2006-06-12 Walter Doerwald <walter@livinglogic.de>
781 788
782 789 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
783 790 input history and the position of the cursor in the input history for
784 791 the find, findbackwards and goto command.
785 792
786 793 2006-06-10 Walter Doerwald <walter@livinglogic.de>
787 794
788 795 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
789 796 implements the basic functionality of browser commands that require
790 797 input. Reimplement the goto, find and findbackwards commands as
791 798 subclasses of _CommandInput. Add an input history and keymaps to those
792 799 commands. Add "\r" as a keyboard shortcut for the enterdefault and
793 800 execute commands.
794 801
795 802 2006-06-07 Ville Vainio <vivainio@gmail.com>
796 803
797 804 * iplib.py: ipython mybatch.ipy exits ipython immediately after
798 805 running the batch files instead of leaving the session open.
799 806
800 807 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
801 808
802 809 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
803 810 the original fix was incomplete. Patch submitted by W. Maier.
804 811
805 812 2006-06-07 Ville Vainio <vivainio@gmail.com>
806 813
807 814 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
808 815 Confirmation prompts can be supressed by 'quiet' option.
809 816 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
810 817
811 818 2006-06-06 *** Released version 0.7.2
812 819
813 820 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
814 821
815 822 * IPython/Release.py (version): Made 0.7.2 final for release.
816 823 Repo tagged and release cut.
817 824
818 825 2006-06-05 Ville Vainio <vivainio@gmail.com>
819 826
820 827 * Magic.py (magic_rehashx): Honor no_alias list earlier in
821 828 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
822 829
823 830 * upgrade_dir.py: try import 'path' module a bit harder
824 831 (for %upgrade)
825 832
826 833 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
827 834
828 835 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
829 836 instead of looping 20 times.
830 837
831 838 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
832 839 correctly at initialization time. Bug reported by Krishna Mohan
833 840 Gundu <gkmohan-AT-gmail.com> on the user list.
834 841
835 842 * IPython/Release.py (version): Mark 0.7.2 version to start
836 843 testing for release on 06/06.
837 844
838 845 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
839 846
840 847 * scripts/irunner: thin script interface so users don't have to
841 848 find the module and call it as an executable, since modules rarely
842 849 live in people's PATH.
843 850
844 851 * IPython/irunner.py (InteractiveRunner.__init__): added
845 852 delaybeforesend attribute to control delays with newer versions of
846 853 pexpect. Thanks to detailed help from pexpect's author, Noah
847 854 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
848 855 correctly (it works in NoColor mode).
849 856
850 857 * IPython/iplib.py (handle_normal): fix nasty crash reported on
851 858 SAGE list, from improper log() calls.
852 859
853 860 2006-05-31 Ville Vainio <vivainio@gmail.com>
854 861
855 862 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
856 863 with args in parens to work correctly with dirs that have spaces.
857 864
858 865 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
859 866
860 867 * IPython/Logger.py (Logger.logstart): add option to log raw input
861 868 instead of the processed one. A -r flag was added to the
862 869 %logstart magic used for controlling logging.
863 870
864 871 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
865 872
866 873 * IPython/iplib.py (InteractiveShell.__init__): add check for the
867 874 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
868 875 recognize the option. After a bug report by Will Maier. This
869 876 closes #64 (will do it after confirmation from W. Maier).
870 877
871 878 * IPython/irunner.py: New module to run scripts as if manually
872 879 typed into an interactive environment, based on pexpect. After a
873 880 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
874 881 ipython-user list. Simple unittests in the tests/ directory.
875 882
876 883 * tools/release: add Will Maier, OpenBSD port maintainer, to
877 884 recepients list. We are now officially part of the OpenBSD ports:
878 885 http://www.openbsd.org/ports.html ! Many thanks to Will for the
879 886 work.
880 887
881 888 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
882 889
883 890 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
884 891 so that it doesn't break tkinter apps.
885 892
886 893 * IPython/iplib.py (_prefilter): fix bug where aliases would
887 894 shadow variables when autocall was fully off. Reported by SAGE
888 895 author William Stein.
889 896
890 897 * IPython/OInspect.py (Inspector.__init__): add a flag to control
891 898 at what detail level strings are computed when foo? is requested.
892 899 This allows users to ask for example that the string form of an
893 900 object is only computed when foo?? is called, or even never, by
894 901 setting the object_info_string_level >= 2 in the configuration
895 902 file. This new option has been added and documented. After a
896 903 request by SAGE to be able to control the printing of very large
897 904 objects more easily.
898 905
899 906 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
900 907
901 908 * IPython/ipmaker.py (make_IPython): remove the ipython call path
902 909 from sys.argv, to be 100% consistent with how Python itself works
903 910 (as seen for example with python -i file.py). After a bug report
904 911 by Jeffrey Collins.
905 912
906 913 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
907 914 nasty bug which was preventing custom namespaces with -pylab,
908 915 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
909 916 compatibility (long gone from mpl).
910 917
911 918 * IPython/ipapi.py (make_session): name change: create->make. We
912 919 use make in other places (ipmaker,...), it's shorter and easier to
913 920 type and say, etc. I'm trying to clean things before 0.7.2 so
914 921 that I can keep things stable wrt to ipapi in the chainsaw branch.
915 922
916 923 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
917 924 python-mode recognizes our debugger mode. Add support for
918 925 autoindent inside (X)emacs. After a patch sent in by Jin Liu
919 926 <m.liu.jin-AT-gmail.com> originally written by
920 927 doxgen-AT-newsmth.net (with minor modifications for xemacs
921 928 compatibility)
922 929
923 930 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
924 931 tracebacks when walking the stack so that the stack tracking system
925 932 in emacs' python-mode can identify the frames correctly.
926 933
927 934 * IPython/ipmaker.py (make_IPython): make the internal (and
928 935 default config) autoedit_syntax value false by default. Too many
929 936 users have complained to me (both on and off-list) about problems
930 937 with this option being on by default, so I'm making it default to
931 938 off. It can still be enabled by anyone via the usual mechanisms.
932 939
933 940 * IPython/completer.py (Completer.attr_matches): add support for
934 941 PyCrust-style _getAttributeNames magic method. Patch contributed
935 942 by <mscott-AT-goldenspud.com>. Closes #50.
936 943
937 944 * IPython/iplib.py (InteractiveShell.__init__): remove the
938 945 deletion of exit/quit from __builtin__, which can break
939 946 third-party tools like the Zope debugging console. The
940 947 %exit/%quit magics remain. In general, it's probably a good idea
941 948 not to delete anything from __builtin__, since we never know what
942 949 that will break. In any case, python now (for 2.5) will support
943 950 'real' exit/quit, so this issue is moot. Closes #55.
944 951
945 952 * IPython/genutils.py (with_obj): rename the 'with' function to
946 953 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
947 954 becomes a language keyword. Closes #53.
948 955
949 956 * IPython/FakeModule.py (FakeModule.__init__): add a proper
950 957 __file__ attribute to this so it fools more things into thinking
951 958 it is a real module. Closes #59.
952 959
953 960 * IPython/Magic.py (magic_edit): add -n option to open the editor
954 961 at a specific line number. After a patch by Stefan van der Walt.
955 962
956 963 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
957 964
958 965 * IPython/iplib.py (edit_syntax_error): fix crash when for some
959 966 reason the file could not be opened. After automatic crash
960 967 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
961 968 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
962 969 (_should_recompile): Don't fire editor if using %bg, since there
963 970 is no file in the first place. From the same report as above.
964 971 (raw_input): protect against faulty third-party prefilters. After
965 972 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
966 973 while running under SAGE.
967 974
968 975 2006-05-23 Ville Vainio <vivainio@gmail.com>
969 976
970 977 * ipapi.py: Stripped down ip.to_user_ns() to work only as
971 978 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
972 979 now returns None (again), unless dummy is specifically allowed by
973 980 ipapi.get(allow_dummy=True).
974 981
975 982 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
976 983
977 984 * IPython: remove all 2.2-compatibility objects and hacks from
978 985 everywhere, since we only support 2.3 at this point. Docs
979 986 updated.
980 987
981 988 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
982 989 Anything requiring extra validation can be turned into a Python
983 990 property in the future. I used a property for the db one b/c
984 991 there was a nasty circularity problem with the initialization
985 992 order, which right now I don't have time to clean up.
986 993
987 994 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
988 995 another locking bug reported by Jorgen. I'm not 100% sure though,
989 996 so more testing is needed...
990 997
991 998 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
992 999
993 1000 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
994 1001 local variables from any routine in user code (typically executed
995 1002 with %run) directly into the interactive namespace. Very useful
996 1003 when doing complex debugging.
997 1004 (IPythonNotRunning): Changed the default None object to a dummy
998 1005 whose attributes can be queried as well as called without
999 1006 exploding, to ease writing code which works transparently both in
1000 1007 and out of ipython and uses some of this API.
1001 1008
1002 1009 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1003 1010
1004 1011 * IPython/hooks.py (result_display): Fix the fact that our display
1005 1012 hook was using str() instead of repr(), as the default python
1006 1013 console does. This had gone unnoticed b/c it only happened if
1007 1014 %Pprint was off, but the inconsistency was there.
1008 1015
1009 1016 2006-05-15 Ville Vainio <vivainio@gmail.com>
1010 1017
1011 1018 * Oinspect.py: Only show docstring for nonexisting/binary files
1012 1019 when doing object??, closing ticket #62
1013 1020
1014 1021 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1015 1022
1016 1023 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1017 1024 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1018 1025 was being released in a routine which hadn't checked if it had
1019 1026 been the one to acquire it.
1020 1027
1021 1028 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1022 1029
1023 1030 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1024 1031
1025 1032 2006-04-11 Ville Vainio <vivainio@gmail.com>
1026 1033
1027 1034 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1028 1035 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1029 1036 prefilters, allowing stuff like magics and aliases in the file.
1030 1037
1031 1038 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1032 1039 added. Supported now are "%clear in" and "%clear out" (clear input and
1033 1040 output history, respectively). Also fixed CachedOutput.flush to
1034 1041 properly flush the output cache.
1035 1042
1036 1043 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1037 1044 half-success (and fail explicitly).
1038 1045
1039 1046 2006-03-28 Ville Vainio <vivainio@gmail.com>
1040 1047
1041 1048 * iplib.py: Fix quoting of aliases so that only argless ones
1042 1049 are quoted
1043 1050
1044 1051 2006-03-28 Ville Vainio <vivainio@gmail.com>
1045 1052
1046 1053 * iplib.py: Quote aliases with spaces in the name.
1047 1054 "c:\program files\blah\bin" is now legal alias target.
1048 1055
1049 1056 * ext_rehashdir.py: Space no longer allowed as arg
1050 1057 separator, since space is legal in path names.
1051 1058
1052 1059 2006-03-16 Ville Vainio <vivainio@gmail.com>
1053 1060
1054 1061 * upgrade_dir.py: Take path.py from Extensions, correcting
1055 1062 %upgrade magic
1056 1063
1057 1064 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1058 1065
1059 1066 * hooks.py: Only enclose editor binary in quotes if legal and
1060 1067 necessary (space in the name, and is an existing file). Fixes a bug
1061 1068 reported by Zachary Pincus.
1062 1069
1063 1070 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1064 1071
1065 1072 * Manual: thanks to a tip on proper color handling for Emacs, by
1066 1073 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1067 1074
1068 1075 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1069 1076 by applying the provided patch. Thanks to Liu Jin
1070 1077 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1071 1078 XEmacs/Linux, I'm trusting the submitter that it actually helps
1072 1079 under win32/GNU Emacs. Will revisit if any problems are reported.
1073 1080
1074 1081 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1075 1082
1076 1083 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1077 1084 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1078 1085
1079 1086 2006-03-12 Ville Vainio <vivainio@gmail.com>
1080 1087
1081 1088 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1082 1089 Torsten Marek.
1083 1090
1084 1091 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1085 1092
1086 1093 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1087 1094 line ranges works again.
1088 1095
1089 1096 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1090 1097
1091 1098 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1092 1099 and friends, after a discussion with Zach Pincus on ipython-user.
1093 1100 I'm not 100% sure, but after thinking about it quite a bit, it may
1094 1101 be OK. Testing with the multithreaded shells didn't reveal any
1095 1102 problems, but let's keep an eye out.
1096 1103
1097 1104 In the process, I fixed a few things which were calling
1098 1105 self.InteractiveTB() directly (like safe_execfile), which is a
1099 1106 mistake: ALL exception reporting should be done by calling
1100 1107 self.showtraceback(), which handles state and tab-completion and
1101 1108 more.
1102 1109
1103 1110 2006-03-01 Ville Vainio <vivainio@gmail.com>
1104 1111
1105 1112 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1106 1113 To use, do "from ipipe import *".
1107 1114
1108 1115 2006-02-24 Ville Vainio <vivainio@gmail.com>
1109 1116
1110 1117 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1111 1118 "cleanly" and safely than the older upgrade mechanism.
1112 1119
1113 1120 2006-02-21 Ville Vainio <vivainio@gmail.com>
1114 1121
1115 1122 * Magic.py: %save works again.
1116 1123
1117 1124 2006-02-15 Ville Vainio <vivainio@gmail.com>
1118 1125
1119 1126 * Magic.py: %Pprint works again
1120 1127
1121 1128 * Extensions/ipy_sane_defaults.py: Provide everything provided
1122 1129 in default ipythonrc, to make it possible to have a completely empty
1123 1130 ipythonrc (and thus completely rc-file free configuration)
1124 1131
1125 1132 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1126 1133
1127 1134 * IPython/hooks.py (editor): quote the call to the editor command,
1128 1135 to allow commands with spaces in them. Problem noted by watching
1129 1136 Ian Oswald's video about textpad under win32 at
1130 1137 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1131 1138
1132 1139 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1133 1140 describing magics (we haven't used @ for a loong time).
1134 1141
1135 1142 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1136 1143 contributed by marienz to close
1137 1144 http://www.scipy.net/roundup/ipython/issue53.
1138 1145
1139 1146 2006-02-10 Ville Vainio <vivainio@gmail.com>
1140 1147
1141 1148 * genutils.py: getoutput now works in win32 too
1142 1149
1143 1150 * completer.py: alias and magic completion only invoked
1144 1151 at the first "item" in the line, to avoid "cd %store"
1145 1152 nonsense.
1146 1153
1147 1154 2006-02-09 Ville Vainio <vivainio@gmail.com>
1148 1155
1149 1156 * test/*: Added a unit testing framework (finally).
1150 1157 '%run runtests.py' to run test_*.
1151 1158
1152 1159 * ipapi.py: Exposed runlines and set_custom_exc
1153 1160
1154 1161 2006-02-07 Ville Vainio <vivainio@gmail.com>
1155 1162
1156 1163 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1157 1164 instead use "f(1 2)" as before.
1158 1165
1159 1166 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1160 1167
1161 1168 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1162 1169 facilities, for demos processed by the IPython input filter
1163 1170 (IPythonDemo), and for running a script one-line-at-a-time as a
1164 1171 demo, both for pure Python (LineDemo) and for IPython-processed
1165 1172 input (IPythonLineDemo). After a request by Dave Kohel, from the
1166 1173 SAGE team.
1167 1174 (Demo.edit): added an edit() method to the demo objects, to edit
1168 1175 the in-memory copy of the last executed block.
1169 1176
1170 1177 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1171 1178 processing to %edit, %macro and %save. These commands can now be
1172 1179 invoked on the unprocessed input as it was typed by the user
1173 1180 (without any prefilters applied). After requests by the SAGE team
1174 1181 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1175 1182
1176 1183 2006-02-01 Ville Vainio <vivainio@gmail.com>
1177 1184
1178 1185 * setup.py, eggsetup.py: easy_install ipython==dev works
1179 1186 correctly now (on Linux)
1180 1187
1181 1188 * ipy_user_conf,ipmaker: user config changes, removed spurious
1182 1189 warnings
1183 1190
1184 1191 * iplib: if rc.banner is string, use it as is.
1185 1192
1186 1193 * Magic: %pycat accepts a string argument and pages it's contents.
1187 1194
1188 1195
1189 1196 2006-01-30 Ville Vainio <vivainio@gmail.com>
1190 1197
1191 1198 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1192 1199 Now %store and bookmarks work through PickleShare, meaning that
1193 1200 concurrent access is possible and all ipython sessions see the
1194 1201 same database situation all the time, instead of snapshot of
1195 1202 the situation when the session was started. Hence, %bookmark
1196 1203 results are immediately accessible from othes sessions. The database
1197 1204 is also available for use by user extensions. See:
1198 1205 http://www.python.org/pypi/pickleshare
1199 1206
1200 1207 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1201 1208
1202 1209 * aliases can now be %store'd
1203 1210
1204 1211 * path.py moved to Extensions so that pickleshare does not need
1205 1212 IPython-specific import. Extensions added to pythonpath right
1206 1213 at __init__.
1207 1214
1208 1215 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1209 1216 called with _ip.system and the pre-transformed command string.
1210 1217
1211 1218 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1212 1219
1213 1220 * IPython/iplib.py (interact): Fix that we were not catching
1214 1221 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1215 1222 logic here had to change, but it's fixed now.
1216 1223
1217 1224 2006-01-29 Ville Vainio <vivainio@gmail.com>
1218 1225
1219 1226 * iplib.py: Try to import pyreadline on Windows.
1220 1227
1221 1228 2006-01-27 Ville Vainio <vivainio@gmail.com>
1222 1229
1223 1230 * iplib.py: Expose ipapi as _ip in builtin namespace.
1224 1231 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1225 1232 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1226 1233 syntax now produce _ip.* variant of the commands.
1227 1234
1228 1235 * "_ip.options().autoedit_syntax = 2" automatically throws
1229 1236 user to editor for syntax error correction without prompting.
1230 1237
1231 1238 2006-01-27 Ville Vainio <vivainio@gmail.com>
1232 1239
1233 1240 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1234 1241 'ipython' at argv[0]) executed through command line.
1235 1242 NOTE: this DEPRECATES calling ipython with multiple scripts
1236 1243 ("ipython a.py b.py c.py")
1237 1244
1238 1245 * iplib.py, hooks.py: Added configurable input prefilter,
1239 1246 named 'input_prefilter'. See ext_rescapture.py for example
1240 1247 usage.
1241 1248
1242 1249 * ext_rescapture.py, Magic.py: Better system command output capture
1243 1250 through 'var = !ls' (deprecates user-visible %sc). Same notation
1244 1251 applies for magics, 'var = %alias' assigns alias list to var.
1245 1252
1246 1253 * ipapi.py: added meta() for accessing extension-usable data store.
1247 1254
1248 1255 * iplib.py: added InteractiveShell.getapi(). New magics should be
1249 1256 written doing self.getapi() instead of using the shell directly.
1250 1257
1251 1258 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1252 1259 %store foo >> ~/myfoo.txt to store variables to files (in clean
1253 1260 textual form, not a restorable pickle).
1254 1261
1255 1262 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1256 1263
1257 1264 * usage.py, Magic.py: added %quickref
1258 1265
1259 1266 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1260 1267
1261 1268 * GetoptErrors when invoking magics etc. with wrong args
1262 1269 are now more helpful:
1263 1270 GetoptError: option -l not recognized (allowed: "qb" )
1264 1271
1265 1272 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1266 1273
1267 1274 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1268 1275 computationally intensive blocks don't appear to stall the demo.
1269 1276
1270 1277 2006-01-24 Ville Vainio <vivainio@gmail.com>
1271 1278
1272 1279 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1273 1280 value to manipulate resulting history entry.
1274 1281
1275 1282 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1276 1283 to instance methods of IPApi class, to make extending an embedded
1277 1284 IPython feasible. See ext_rehashdir.py for example usage.
1278 1285
1279 1286 * Merged 1071-1076 from branches/0.7.1
1280 1287
1281 1288
1282 1289 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1283 1290
1284 1291 * tools/release (daystamp): Fix build tools to use the new
1285 1292 eggsetup.py script to build lightweight eggs.
1286 1293
1287 1294 * Applied changesets 1062 and 1064 before 0.7.1 release.
1288 1295
1289 1296 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1290 1297 see the raw input history (without conversions like %ls ->
1291 1298 ipmagic("ls")). After a request from W. Stein, SAGE
1292 1299 (http://modular.ucsd.edu/sage) developer. This information is
1293 1300 stored in the input_hist_raw attribute of the IPython instance, so
1294 1301 developers can access it if needed (it's an InputList instance).
1295 1302
1296 1303 * Versionstring = 0.7.2.svn
1297 1304
1298 1305 * eggsetup.py: A separate script for constructing eggs, creates
1299 1306 proper launch scripts even on Windows (an .exe file in
1300 1307 \python24\scripts).
1301 1308
1302 1309 * ipapi.py: launch_new_instance, launch entry point needed for the
1303 1310 egg.
1304 1311
1305 1312 2006-01-23 Ville Vainio <vivainio@gmail.com>
1306 1313
1307 1314 * Added %cpaste magic for pasting python code
1308 1315
1309 1316 2006-01-22 Ville Vainio <vivainio@gmail.com>
1310 1317
1311 1318 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1312 1319
1313 1320 * Versionstring = 0.7.2.svn
1314 1321
1315 1322 * eggsetup.py: A separate script for constructing eggs, creates
1316 1323 proper launch scripts even on Windows (an .exe file in
1317 1324 \python24\scripts).
1318 1325
1319 1326 * ipapi.py: launch_new_instance, launch entry point needed for the
1320 1327 egg.
1321 1328
1322 1329 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1323 1330
1324 1331 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1325 1332 %pfile foo would print the file for foo even if it was a binary.
1326 1333 Now, extensions '.so' and '.dll' are skipped.
1327 1334
1328 1335 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1329 1336 bug, where macros would fail in all threaded modes. I'm not 100%
1330 1337 sure, so I'm going to put out an rc instead of making a release
1331 1338 today, and wait for feedback for at least a few days.
1332 1339
1333 1340 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1334 1341 it...) the handling of pasting external code with autoindent on.
1335 1342 To get out of a multiline input, the rule will appear for most
1336 1343 users unchanged: two blank lines or change the indent level
1337 1344 proposed by IPython. But there is a twist now: you can
1338 1345 add/subtract only *one or two spaces*. If you add/subtract three
1339 1346 or more (unless you completely delete the line), IPython will
1340 1347 accept that line, and you'll need to enter a second one of pure
1341 1348 whitespace. I know it sounds complicated, but I can't find a
1342 1349 different solution that covers all the cases, with the right
1343 1350 heuristics. Hopefully in actual use, nobody will really notice
1344 1351 all these strange rules and things will 'just work'.
1345 1352
1346 1353 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1347 1354
1348 1355 * IPython/iplib.py (interact): catch exceptions which can be
1349 1356 triggered asynchronously by signal handlers. Thanks to an
1350 1357 automatic crash report, submitted by Colin Kingsley
1351 1358 <tercel-AT-gentoo.org>.
1352 1359
1353 1360 2006-01-20 Ville Vainio <vivainio@gmail.com>
1354 1361
1355 1362 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1356 1363 (%rehashdir, very useful, try it out) of how to extend ipython
1357 1364 with new magics. Also added Extensions dir to pythonpath to make
1358 1365 importing extensions easy.
1359 1366
1360 1367 * %store now complains when trying to store interactively declared
1361 1368 classes / instances of those classes.
1362 1369
1363 1370 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1364 1371 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1365 1372 if they exist, and ipy_user_conf.py with some defaults is created for
1366 1373 the user.
1367 1374
1368 1375 * Startup rehashing done by the config file, not InterpreterExec.
1369 1376 This means system commands are available even without selecting the
1370 1377 pysh profile. It's the sensible default after all.
1371 1378
1372 1379 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1373 1380
1374 1381 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1375 1382 multiline code with autoindent on working. But I am really not
1376 1383 sure, so this needs more testing. Will commit a debug-enabled
1377 1384 version for now, while I test it some more, so that Ville and
1378 1385 others may also catch any problems. Also made
1379 1386 self.indent_current_str() a method, to ensure that there's no
1380 1387 chance of the indent space count and the corresponding string
1381 1388 falling out of sync. All code needing the string should just call
1382 1389 the method.
1383 1390
1384 1391 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1385 1392
1386 1393 * IPython/Magic.py (magic_edit): fix check for when users don't
1387 1394 save their output files, the try/except was in the wrong section.
1388 1395
1389 1396 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1390 1397
1391 1398 * IPython/Magic.py (magic_run): fix __file__ global missing from
1392 1399 script's namespace when executed via %run. After a report by
1393 1400 Vivian.
1394 1401
1395 1402 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1396 1403 when using python 2.4. The parent constructor changed in 2.4, and
1397 1404 we need to track it directly (we can't call it, as it messes up
1398 1405 readline and tab-completion inside our pdb would stop working).
1399 1406 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1400 1407
1401 1408 2006-01-16 Ville Vainio <vivainio@gmail.com>
1402 1409
1403 1410 * Ipython/magic.py: Reverted back to old %edit functionality
1404 1411 that returns file contents on exit.
1405 1412
1406 1413 * IPython/path.py: Added Jason Orendorff's "path" module to
1407 1414 IPython tree, http://www.jorendorff.com/articles/python/path/.
1408 1415 You can get path objects conveniently through %sc, and !!, e.g.:
1409 1416 sc files=ls
1410 1417 for p in files.paths: # or files.p
1411 1418 print p,p.mtime
1412 1419
1413 1420 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1414 1421 now work again without considering the exclusion regexp -
1415 1422 hence, things like ',foo my/path' turn to 'foo("my/path")'
1416 1423 instead of syntax error.
1417 1424
1418 1425
1419 1426 2006-01-14 Ville Vainio <vivainio@gmail.com>
1420 1427
1421 1428 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1422 1429 ipapi decorators for python 2.4 users, options() provides access to rc
1423 1430 data.
1424 1431
1425 1432 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1426 1433 as path separators (even on Linux ;-). Space character after
1427 1434 backslash (as yielded by tab completer) is still space;
1428 1435 "%cd long\ name" works as expected.
1429 1436
1430 1437 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1431 1438 as "chain of command", with priority. API stays the same,
1432 1439 TryNext exception raised by a hook function signals that
1433 1440 current hook failed and next hook should try handling it, as
1434 1441 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1435 1442 requested configurable display hook, which is now implemented.
1436 1443
1437 1444 2006-01-13 Ville Vainio <vivainio@gmail.com>
1438 1445
1439 1446 * IPython/platutils*.py: platform specific utility functions,
1440 1447 so far only set_term_title is implemented (change terminal
1441 1448 label in windowing systems). %cd now changes the title to
1442 1449 current dir.
1443 1450
1444 1451 * IPython/Release.py: Added myself to "authors" list,
1445 1452 had to create new files.
1446 1453
1447 1454 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1448 1455 shell escape; not a known bug but had potential to be one in the
1449 1456 future.
1450 1457
1451 1458 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1452 1459 extension API for IPython! See the module for usage example. Fix
1453 1460 OInspect for docstring-less magic functions.
1454 1461
1455 1462
1456 1463 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1457 1464
1458 1465 * IPython/iplib.py (raw_input): temporarily deactivate all
1459 1466 attempts at allowing pasting of code with autoindent on. It
1460 1467 introduced bugs (reported by Prabhu) and I can't seem to find a
1461 1468 robust combination which works in all cases. Will have to revisit
1462 1469 later.
1463 1470
1464 1471 * IPython/genutils.py: remove isspace() function. We've dropped
1465 1472 2.2 compatibility, so it's OK to use the string method.
1466 1473
1467 1474 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1468 1475
1469 1476 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1470 1477 matching what NOT to autocall on, to include all python binary
1471 1478 operators (including things like 'and', 'or', 'is' and 'in').
1472 1479 Prompted by a bug report on 'foo & bar', but I realized we had
1473 1480 many more potential bug cases with other operators. The regexp is
1474 1481 self.re_exclude_auto, it's fairly commented.
1475 1482
1476 1483 2006-01-12 Ville Vainio <vivainio@gmail.com>
1477 1484
1478 1485 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1479 1486 Prettified and hardened string/backslash quoting with ipsystem(),
1480 1487 ipalias() and ipmagic(). Now even \ characters are passed to
1481 1488 %magics, !shell escapes and aliases exactly as they are in the
1482 1489 ipython command line. Should improve backslash experience,
1483 1490 particularly in Windows (path delimiter for some commands that
1484 1491 won't understand '/'), but Unix benefits as well (regexps). %cd
1485 1492 magic still doesn't support backslash path delimiters, though. Also
1486 1493 deleted all pretense of supporting multiline command strings in
1487 1494 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1488 1495
1489 1496 * doc/build_doc_instructions.txt added. Documentation on how to
1490 1497 use doc/update_manual.py, added yesterday. Both files contributed
1491 1498 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1492 1499 doc/*.sh for deprecation at a later date.
1493 1500
1494 1501 * /ipython.py Added ipython.py to root directory for
1495 1502 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1496 1503 ipython.py) and development convenience (no need to keep doing
1497 1504 "setup.py install" between changes).
1498 1505
1499 1506 * Made ! and !! shell escapes work (again) in multiline expressions:
1500 1507 if 1:
1501 1508 !ls
1502 1509 !!ls
1503 1510
1504 1511 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1505 1512
1506 1513 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1507 1514 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1508 1515 module in case-insensitive installation. Was causing crashes
1509 1516 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1510 1517
1511 1518 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1512 1519 <marienz-AT-gentoo.org>, closes
1513 1520 http://www.scipy.net/roundup/ipython/issue51.
1514 1521
1515 1522 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1516 1523
1517 1524 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1518 1525 problem of excessive CPU usage under *nix and keyboard lag under
1519 1526 win32.
1520 1527
1521 1528 2006-01-10 *** Released version 0.7.0
1522 1529
1523 1530 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1524 1531
1525 1532 * IPython/Release.py (revision): tag version number to 0.7.0,
1526 1533 ready for release.
1527 1534
1528 1535 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1529 1536 it informs the user of the name of the temp. file used. This can
1530 1537 help if you decide later to reuse that same file, so you know
1531 1538 where to copy the info from.
1532 1539
1533 1540 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1534 1541
1535 1542 * setup_bdist_egg.py: little script to build an egg. Added
1536 1543 support in the release tools as well.
1537 1544
1538 1545 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1539 1546
1540 1547 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1541 1548 version selection (new -wxversion command line and ipythonrc
1542 1549 parameter). Patch contributed by Arnd Baecker
1543 1550 <arnd.baecker-AT-web.de>.
1544 1551
1545 1552 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1546 1553 embedded instances, for variables defined at the interactive
1547 1554 prompt of the embedded ipython. Reported by Arnd.
1548 1555
1549 1556 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1550 1557 it can be used as a (stateful) toggle, or with a direct parameter.
1551 1558
1552 1559 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1553 1560 could be triggered in certain cases and cause the traceback
1554 1561 printer not to work.
1555 1562
1556 1563 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1557 1564
1558 1565 * IPython/iplib.py (_should_recompile): Small fix, closes
1559 1566 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1560 1567
1561 1568 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1562 1569
1563 1570 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1564 1571 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1565 1572 Moad for help with tracking it down.
1566 1573
1567 1574 * IPython/iplib.py (handle_auto): fix autocall handling for
1568 1575 objects which support BOTH __getitem__ and __call__ (so that f [x]
1569 1576 is left alone, instead of becoming f([x]) automatically).
1570 1577
1571 1578 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1572 1579 Ville's patch.
1573 1580
1574 1581 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1575 1582
1576 1583 * IPython/iplib.py (handle_auto): changed autocall semantics to
1577 1584 include 'smart' mode, where the autocall transformation is NOT
1578 1585 applied if there are no arguments on the line. This allows you to
1579 1586 just type 'foo' if foo is a callable to see its internal form,
1580 1587 instead of having it called with no arguments (typically a
1581 1588 mistake). The old 'full' autocall still exists: for that, you
1582 1589 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1583 1590
1584 1591 * IPython/completer.py (Completer.attr_matches): add
1585 1592 tab-completion support for Enthoughts' traits. After a report by
1586 1593 Arnd and a patch by Prabhu.
1587 1594
1588 1595 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1589 1596
1590 1597 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1591 1598 Schmolck's patch to fix inspect.getinnerframes().
1592 1599
1593 1600 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1594 1601 for embedded instances, regarding handling of namespaces and items
1595 1602 added to the __builtin__ one. Multiple embedded instances and
1596 1603 recursive embeddings should work better now (though I'm not sure
1597 1604 I've got all the corner cases fixed, that code is a bit of a brain
1598 1605 twister).
1599 1606
1600 1607 * IPython/Magic.py (magic_edit): added support to edit in-memory
1601 1608 macros (automatically creates the necessary temp files). %edit
1602 1609 also doesn't return the file contents anymore, it's just noise.
1603 1610
1604 1611 * IPython/completer.py (Completer.attr_matches): revert change to
1605 1612 complete only on attributes listed in __all__. I realized it
1606 1613 cripples the tab-completion system as a tool for exploring the
1607 1614 internals of unknown libraries (it renders any non-__all__
1608 1615 attribute off-limits). I got bit by this when trying to see
1609 1616 something inside the dis module.
1610 1617
1611 1618 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1612 1619
1613 1620 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1614 1621 namespace for users and extension writers to hold data in. This
1615 1622 follows the discussion in
1616 1623 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1617 1624
1618 1625 * IPython/completer.py (IPCompleter.complete): small patch to help
1619 1626 tab-completion under Emacs, after a suggestion by John Barnard
1620 1627 <barnarj-AT-ccf.org>.
1621 1628
1622 1629 * IPython/Magic.py (Magic.extract_input_slices): added support for
1623 1630 the slice notation in magics to use N-M to represent numbers N...M
1624 1631 (closed endpoints). This is used by %macro and %save.
1625 1632
1626 1633 * IPython/completer.py (Completer.attr_matches): for modules which
1627 1634 define __all__, complete only on those. After a patch by Jeffrey
1628 1635 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1629 1636 speed up this routine.
1630 1637
1631 1638 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1632 1639 don't know if this is the end of it, but the behavior now is
1633 1640 certainly much more correct. Note that coupled with macros,
1634 1641 slightly surprising (at first) behavior may occur: a macro will in
1635 1642 general expand to multiple lines of input, so upon exiting, the
1636 1643 in/out counters will both be bumped by the corresponding amount
1637 1644 (as if the macro's contents had been typed interactively). Typing
1638 1645 %hist will reveal the intermediate (silently processed) lines.
1639 1646
1640 1647 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1641 1648 pickle to fail (%run was overwriting __main__ and not restoring
1642 1649 it, but pickle relies on __main__ to operate).
1643 1650
1644 1651 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1645 1652 using properties, but forgot to make the main InteractiveShell
1646 1653 class a new-style class. Properties fail silently, and
1647 1654 mysteriously, with old-style class (getters work, but
1648 1655 setters don't do anything).
1649 1656
1650 1657 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1651 1658
1652 1659 * IPython/Magic.py (magic_history): fix history reporting bug (I
1653 1660 know some nasties are still there, I just can't seem to find a
1654 1661 reproducible test case to track them down; the input history is
1655 1662 falling out of sync...)
1656 1663
1657 1664 * IPython/iplib.py (handle_shell_escape): fix bug where both
1658 1665 aliases and system accesses where broken for indented code (such
1659 1666 as loops).
1660 1667
1661 1668 * IPython/genutils.py (shell): fix small but critical bug for
1662 1669 win32 system access.
1663 1670
1664 1671 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1665 1672
1666 1673 * IPython/iplib.py (showtraceback): remove use of the
1667 1674 sys.last_{type/value/traceback} structures, which are non
1668 1675 thread-safe.
1669 1676 (_prefilter): change control flow to ensure that we NEVER
1670 1677 introspect objects when autocall is off. This will guarantee that
1671 1678 having an input line of the form 'x.y', where access to attribute
1672 1679 'y' has side effects, doesn't trigger the side effect TWICE. It
1673 1680 is important to note that, with autocall on, these side effects
1674 1681 can still happen.
1675 1682 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1676 1683 trio. IPython offers these three kinds of special calls which are
1677 1684 not python code, and it's a good thing to have their call method
1678 1685 be accessible as pure python functions (not just special syntax at
1679 1686 the command line). It gives us a better internal implementation
1680 1687 structure, as well as exposing these for user scripting more
1681 1688 cleanly.
1682 1689
1683 1690 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1684 1691 file. Now that they'll be more likely to be used with the
1685 1692 persistance system (%store), I want to make sure their module path
1686 1693 doesn't change in the future, so that we don't break things for
1687 1694 users' persisted data.
1688 1695
1689 1696 * IPython/iplib.py (autoindent_update): move indentation
1690 1697 management into the _text_ processing loop, not the keyboard
1691 1698 interactive one. This is necessary to correctly process non-typed
1692 1699 multiline input (such as macros).
1693 1700
1694 1701 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1695 1702 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1696 1703 which was producing problems in the resulting manual.
1697 1704 (magic_whos): improve reporting of instances (show their class,
1698 1705 instead of simply printing 'instance' which isn't terribly
1699 1706 informative).
1700 1707
1701 1708 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1702 1709 (minor mods) to support network shares under win32.
1703 1710
1704 1711 * IPython/winconsole.py (get_console_size): add new winconsole
1705 1712 module and fixes to page_dumb() to improve its behavior under
1706 1713 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1707 1714
1708 1715 * IPython/Magic.py (Macro): simplified Macro class to just
1709 1716 subclass list. We've had only 2.2 compatibility for a very long
1710 1717 time, yet I was still avoiding subclassing the builtin types. No
1711 1718 more (I'm also starting to use properties, though I won't shift to
1712 1719 2.3-specific features quite yet).
1713 1720 (magic_store): added Ville's patch for lightweight variable
1714 1721 persistence, after a request on the user list by Matt Wilkie
1715 1722 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1716 1723 details.
1717 1724
1718 1725 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1719 1726 changed the default logfile name from 'ipython.log' to
1720 1727 'ipython_log.py'. These logs are real python files, and now that
1721 1728 we have much better multiline support, people are more likely to
1722 1729 want to use them as such. Might as well name them correctly.
1723 1730
1724 1731 * IPython/Magic.py: substantial cleanup. While we can't stop
1725 1732 using magics as mixins, due to the existing customizations 'out
1726 1733 there' which rely on the mixin naming conventions, at least I
1727 1734 cleaned out all cross-class name usage. So once we are OK with
1728 1735 breaking compatibility, the two systems can be separated.
1729 1736
1730 1737 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1731 1738 anymore, and the class is a fair bit less hideous as well. New
1732 1739 features were also introduced: timestamping of input, and logging
1733 1740 of output results. These are user-visible with the -t and -o
1734 1741 options to %logstart. Closes
1735 1742 http://www.scipy.net/roundup/ipython/issue11 and a request by
1736 1743 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1737 1744
1738 1745 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1739 1746
1740 1747 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1741 1748 better handle backslashes in paths. See the thread 'More Windows
1742 1749 questions part 2 - \/ characters revisited' on the iypthon user
1743 1750 list:
1744 1751 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1745 1752
1746 1753 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1747 1754
1748 1755 (InteractiveShell.__init__): change threaded shells to not use the
1749 1756 ipython crash handler. This was causing more problems than not,
1750 1757 as exceptions in the main thread (GUI code, typically) would
1751 1758 always show up as a 'crash', when they really weren't.
1752 1759
1753 1760 The colors and exception mode commands (%colors/%xmode) have been
1754 1761 synchronized to also take this into account, so users can get
1755 1762 verbose exceptions for their threaded code as well. I also added
1756 1763 support for activating pdb inside this exception handler as well,
1757 1764 so now GUI authors can use IPython's enhanced pdb at runtime.
1758 1765
1759 1766 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1760 1767 true by default, and add it to the shipped ipythonrc file. Since
1761 1768 this asks the user before proceeding, I think it's OK to make it
1762 1769 true by default.
1763 1770
1764 1771 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1765 1772 of the previous special-casing of input in the eval loop. I think
1766 1773 this is cleaner, as they really are commands and shouldn't have
1767 1774 a special role in the middle of the core code.
1768 1775
1769 1776 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1770 1777
1771 1778 * IPython/iplib.py (edit_syntax_error): added support for
1772 1779 automatically reopening the editor if the file had a syntax error
1773 1780 in it. Thanks to scottt who provided the patch at:
1774 1781 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1775 1782 version committed).
1776 1783
1777 1784 * IPython/iplib.py (handle_normal): add suport for multi-line
1778 1785 input with emtpy lines. This fixes
1779 1786 http://www.scipy.net/roundup/ipython/issue43 and a similar
1780 1787 discussion on the user list.
1781 1788
1782 1789 WARNING: a behavior change is necessarily introduced to support
1783 1790 blank lines: now a single blank line with whitespace does NOT
1784 1791 break the input loop, which means that when autoindent is on, by
1785 1792 default hitting return on the next (indented) line does NOT exit.
1786 1793
1787 1794 Instead, to exit a multiline input you can either have:
1788 1795
1789 1796 - TWO whitespace lines (just hit return again), or
1790 1797 - a single whitespace line of a different length than provided
1791 1798 by the autoindent (add or remove a space).
1792 1799
1793 1800 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1794 1801 module to better organize all readline-related functionality.
1795 1802 I've deleted FlexCompleter and put all completion clases here.
1796 1803
1797 1804 * IPython/iplib.py (raw_input): improve indentation management.
1798 1805 It is now possible to paste indented code with autoindent on, and
1799 1806 the code is interpreted correctly (though it still looks bad on
1800 1807 screen, due to the line-oriented nature of ipython).
1801 1808 (MagicCompleter.complete): change behavior so that a TAB key on an
1802 1809 otherwise empty line actually inserts a tab, instead of completing
1803 1810 on the entire global namespace. This makes it easier to use the
1804 1811 TAB key for indentation. After a request by Hans Meine
1805 1812 <hans_meine-AT-gmx.net>
1806 1813 (_prefilter): add support so that typing plain 'exit' or 'quit'
1807 1814 does a sensible thing. Originally I tried to deviate as little as
1808 1815 possible from the default python behavior, but even that one may
1809 1816 change in this direction (thread on python-dev to that effect).
1810 1817 Regardless, ipython should do the right thing even if CPython's
1811 1818 '>>>' prompt doesn't.
1812 1819 (InteractiveShell): removed subclassing code.InteractiveConsole
1813 1820 class. By now we'd overridden just about all of its methods: I've
1814 1821 copied the remaining two over, and now ipython is a standalone
1815 1822 class. This will provide a clearer picture for the chainsaw
1816 1823 branch refactoring.
1817 1824
1818 1825 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1819 1826
1820 1827 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1821 1828 failures for objects which break when dir() is called on them.
1822 1829
1823 1830 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1824 1831 distinct local and global namespaces in the completer API. This
1825 1832 change allows us to properly handle completion with distinct
1826 1833 scopes, including in embedded instances (this had never really
1827 1834 worked correctly).
1828 1835
1829 1836 Note: this introduces a change in the constructor for
1830 1837 MagicCompleter, as a new global_namespace parameter is now the
1831 1838 second argument (the others were bumped one position).
1832 1839
1833 1840 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1834 1841
1835 1842 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1836 1843 embedded instances (which can be done now thanks to Vivian's
1837 1844 frame-handling fixes for pdb).
1838 1845 (InteractiveShell.__init__): Fix namespace handling problem in
1839 1846 embedded instances. We were overwriting __main__ unconditionally,
1840 1847 and this should only be done for 'full' (non-embedded) IPython;
1841 1848 embedded instances must respect the caller's __main__. Thanks to
1842 1849 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1843 1850
1844 1851 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1845 1852
1846 1853 * setup.py: added download_url to setup(). This registers the
1847 1854 download address at PyPI, which is not only useful to humans
1848 1855 browsing the site, but is also picked up by setuptools (the Eggs
1849 1856 machinery). Thanks to Ville and R. Kern for the info/discussion
1850 1857 on this.
1851 1858
1852 1859 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1853 1860
1854 1861 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1855 1862 This brings a lot of nice functionality to the pdb mode, which now
1856 1863 has tab-completion, syntax highlighting, and better stack handling
1857 1864 than before. Many thanks to Vivian De Smedt
1858 1865 <vivian-AT-vdesmedt.com> for the original patches.
1859 1866
1860 1867 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1861 1868
1862 1869 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1863 1870 sequence to consistently accept the banner argument. The
1864 1871 inconsistency was tripping SAGE, thanks to Gary Zablackis
1865 1872 <gzabl-AT-yahoo.com> for the report.
1866 1873
1867 1874 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1868 1875
1869 1876 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1870 1877 Fix bug where a naked 'alias' call in the ipythonrc file would
1871 1878 cause a crash. Bug reported by Jorgen Stenarson.
1872 1879
1873 1880 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1874 1881
1875 1882 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1876 1883 startup time.
1877 1884
1878 1885 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1879 1886 instances had introduced a bug with globals in normal code. Now
1880 1887 it's working in all cases.
1881 1888
1882 1889 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1883 1890 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1884 1891 has been introduced to set the default case sensitivity of the
1885 1892 searches. Users can still select either mode at runtime on a
1886 1893 per-search basis.
1887 1894
1888 1895 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1889 1896
1890 1897 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1891 1898 attributes in wildcard searches for subclasses. Modified version
1892 1899 of a patch by Jorgen.
1893 1900
1894 1901 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1895 1902
1896 1903 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1897 1904 embedded instances. I added a user_global_ns attribute to the
1898 1905 InteractiveShell class to handle this.
1899 1906
1900 1907 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1901 1908
1902 1909 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1903 1910 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1904 1911 (reported under win32, but may happen also in other platforms).
1905 1912 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1906 1913
1907 1914 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1908 1915
1909 1916 * IPython/Magic.py (magic_psearch): new support for wildcard
1910 1917 patterns. Now, typing ?a*b will list all names which begin with a
1911 1918 and end in b, for example. The %psearch magic has full
1912 1919 docstrings. Many thanks to JΓΆrgen Stenarson
1913 1920 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1914 1921 implementing this functionality.
1915 1922
1916 1923 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1917 1924
1918 1925 * Manual: fixed long-standing annoyance of double-dashes (as in
1919 1926 --prefix=~, for example) being stripped in the HTML version. This
1920 1927 is a latex2html bug, but a workaround was provided. Many thanks
1921 1928 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1922 1929 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1923 1930 rolling. This seemingly small issue had tripped a number of users
1924 1931 when first installing, so I'm glad to see it gone.
1925 1932
1926 1933 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1927 1934
1928 1935 * IPython/Extensions/numeric_formats.py: fix missing import,
1929 1936 reported by Stephen Walton.
1930 1937
1931 1938 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1932 1939
1933 1940 * IPython/demo.py: finish demo module, fully documented now.
1934 1941
1935 1942 * IPython/genutils.py (file_read): simple little utility to read a
1936 1943 file and ensure it's closed afterwards.
1937 1944
1938 1945 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1939 1946
1940 1947 * IPython/demo.py (Demo.__init__): added support for individually
1941 1948 tagging blocks for automatic execution.
1942 1949
1943 1950 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1944 1951 syntax-highlighted python sources, requested by John.
1945 1952
1946 1953 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1947 1954
1948 1955 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1949 1956 finishing.
1950 1957
1951 1958 * IPython/genutils.py (shlex_split): moved from Magic to here,
1952 1959 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1953 1960
1954 1961 * IPython/demo.py (Demo.__init__): added support for silent
1955 1962 blocks, improved marks as regexps, docstrings written.
1956 1963 (Demo.__init__): better docstring, added support for sys.argv.
1957 1964
1958 1965 * IPython/genutils.py (marquee): little utility used by the demo
1959 1966 code, handy in general.
1960 1967
1961 1968 * IPython/demo.py (Demo.__init__): new class for interactive
1962 1969 demos. Not documented yet, I just wrote it in a hurry for
1963 1970 scipy'05. Will docstring later.
1964 1971
1965 1972 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1966 1973
1967 1974 * IPython/Shell.py (sigint_handler): Drastic simplification which
1968 1975 also seems to make Ctrl-C work correctly across threads! This is
1969 1976 so simple, that I can't beleive I'd missed it before. Needs more
1970 1977 testing, though.
1971 1978 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1972 1979 like this before...
1973 1980
1974 1981 * IPython/genutils.py (get_home_dir): add protection against
1975 1982 non-dirs in win32 registry.
1976 1983
1977 1984 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1978 1985 bug where dict was mutated while iterating (pysh crash).
1979 1986
1980 1987 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1981 1988
1982 1989 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1983 1990 spurious newlines added by this routine. After a report by
1984 1991 F. Mantegazza.
1985 1992
1986 1993 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1987 1994
1988 1995 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1989 1996 calls. These were a leftover from the GTK 1.x days, and can cause
1990 1997 problems in certain cases (after a report by John Hunter).
1991 1998
1992 1999 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1993 2000 os.getcwd() fails at init time. Thanks to patch from David Remahl
1994 2001 <chmod007-AT-mac.com>.
1995 2002 (InteractiveShell.__init__): prevent certain special magics from
1996 2003 being shadowed by aliases. Closes
1997 2004 http://www.scipy.net/roundup/ipython/issue41.
1998 2005
1999 2006 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2000 2007
2001 2008 * IPython/iplib.py (InteractiveShell.complete): Added new
2002 2009 top-level completion method to expose the completion mechanism
2003 2010 beyond readline-based environments.
2004 2011
2005 2012 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2006 2013
2007 2014 * tools/ipsvnc (svnversion): fix svnversion capture.
2008 2015
2009 2016 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2010 2017 attribute to self, which was missing. Before, it was set by a
2011 2018 routine which in certain cases wasn't being called, so the
2012 2019 instance could end up missing the attribute. This caused a crash.
2013 2020 Closes http://www.scipy.net/roundup/ipython/issue40.
2014 2021
2015 2022 2005-08-16 Fernando Perez <fperez@colorado.edu>
2016 2023
2017 2024 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2018 2025 contains non-string attribute. Closes
2019 2026 http://www.scipy.net/roundup/ipython/issue38.
2020 2027
2021 2028 2005-08-14 Fernando Perez <fperez@colorado.edu>
2022 2029
2023 2030 * tools/ipsvnc: Minor improvements, to add changeset info.
2024 2031
2025 2032 2005-08-12 Fernando Perez <fperez@colorado.edu>
2026 2033
2027 2034 * IPython/iplib.py (runsource): remove self.code_to_run_src
2028 2035 attribute. I realized this is nothing more than
2029 2036 '\n'.join(self.buffer), and having the same data in two different
2030 2037 places is just asking for synchronization bugs. This may impact
2031 2038 people who have custom exception handlers, so I need to warn
2032 2039 ipython-dev about it (F. Mantegazza may use them).
2033 2040
2034 2041 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2035 2042
2036 2043 * IPython/genutils.py: fix 2.2 compatibility (generators)
2037 2044
2038 2045 2005-07-18 Fernando Perez <fperez@colorado.edu>
2039 2046
2040 2047 * IPython/genutils.py (get_home_dir): fix to help users with
2041 2048 invalid $HOME under win32.
2042 2049
2043 2050 2005-07-17 Fernando Perez <fperez@colorado.edu>
2044 2051
2045 2052 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2046 2053 some old hacks and clean up a bit other routines; code should be
2047 2054 simpler and a bit faster.
2048 2055
2049 2056 * IPython/iplib.py (interact): removed some last-resort attempts
2050 2057 to survive broken stdout/stderr. That code was only making it
2051 2058 harder to abstract out the i/o (necessary for gui integration),
2052 2059 and the crashes it could prevent were extremely rare in practice
2053 2060 (besides being fully user-induced in a pretty violent manner).
2054 2061
2055 2062 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2056 2063 Nothing major yet, but the code is simpler to read; this should
2057 2064 make it easier to do more serious modifications in the future.
2058 2065
2059 2066 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2060 2067 which broke in .15 (thanks to a report by Ville).
2061 2068
2062 2069 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2063 2070 be quite correct, I know next to nothing about unicode). This
2064 2071 will allow unicode strings to be used in prompts, amongst other
2065 2072 cases. It also will prevent ipython from crashing when unicode
2066 2073 shows up unexpectedly in many places. If ascii encoding fails, we
2067 2074 assume utf_8. Currently the encoding is not a user-visible
2068 2075 setting, though it could be made so if there is demand for it.
2069 2076
2070 2077 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2071 2078
2072 2079 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2073 2080
2074 2081 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2075 2082
2076 2083 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2077 2084 code can work transparently for 2.2/2.3.
2078 2085
2079 2086 2005-07-16 Fernando Perez <fperez@colorado.edu>
2080 2087
2081 2088 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2082 2089 out of the color scheme table used for coloring exception
2083 2090 tracebacks. This allows user code to add new schemes at runtime.
2084 2091 This is a minimally modified version of the patch at
2085 2092 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2086 2093 for the contribution.
2087 2094
2088 2095 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2089 2096 slightly modified version of the patch in
2090 2097 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2091 2098 to remove the previous try/except solution (which was costlier).
2092 2099 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2093 2100
2094 2101 2005-06-08 Fernando Perez <fperez@colorado.edu>
2095 2102
2096 2103 * IPython/iplib.py (write/write_err): Add methods to abstract all
2097 2104 I/O a bit more.
2098 2105
2099 2106 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2100 2107 warning, reported by Aric Hagberg, fix by JD Hunter.
2101 2108
2102 2109 2005-06-02 *** Released version 0.6.15
2103 2110
2104 2111 2005-06-01 Fernando Perez <fperez@colorado.edu>
2105 2112
2106 2113 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2107 2114 tab-completion of filenames within open-quoted strings. Note that
2108 2115 this requires that in ~/.ipython/ipythonrc, users change the
2109 2116 readline delimiters configuration to read:
2110 2117
2111 2118 readline_remove_delims -/~
2112 2119
2113 2120
2114 2121 2005-05-31 *** Released version 0.6.14
2115 2122
2116 2123 2005-05-29 Fernando Perez <fperez@colorado.edu>
2117 2124
2118 2125 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2119 2126 with files not on the filesystem. Reported by Eliyahu Sandler
2120 2127 <eli@gondolin.net>
2121 2128
2122 2129 2005-05-22 Fernando Perez <fperez@colorado.edu>
2123 2130
2124 2131 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2125 2132 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2126 2133
2127 2134 2005-05-19 Fernando Perez <fperez@colorado.edu>
2128 2135
2129 2136 * IPython/iplib.py (safe_execfile): close a file which could be
2130 2137 left open (causing problems in win32, which locks open files).
2131 2138 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2132 2139
2133 2140 2005-05-18 Fernando Perez <fperez@colorado.edu>
2134 2141
2135 2142 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2136 2143 keyword arguments correctly to safe_execfile().
2137 2144
2138 2145 2005-05-13 Fernando Perez <fperez@colorado.edu>
2139 2146
2140 2147 * ipython.1: Added info about Qt to manpage, and threads warning
2141 2148 to usage page (invoked with --help).
2142 2149
2143 2150 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2144 2151 new matcher (it goes at the end of the priority list) to do
2145 2152 tab-completion on named function arguments. Submitted by George
2146 2153 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2147 2154 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2148 2155 for more details.
2149 2156
2150 2157 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2151 2158 SystemExit exceptions in the script being run. Thanks to a report
2152 2159 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2153 2160 producing very annoying behavior when running unit tests.
2154 2161
2155 2162 2005-05-12 Fernando Perez <fperez@colorado.edu>
2156 2163
2157 2164 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2158 2165 which I'd broken (again) due to a changed regexp. In the process,
2159 2166 added ';' as an escape to auto-quote the whole line without
2160 2167 splitting its arguments. Thanks to a report by Jerry McRae
2161 2168 <qrs0xyc02-AT-sneakemail.com>.
2162 2169
2163 2170 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2164 2171 possible crashes caused by a TokenError. Reported by Ed Schofield
2165 2172 <schofield-AT-ftw.at>.
2166 2173
2167 2174 2005-05-06 Fernando Perez <fperez@colorado.edu>
2168 2175
2169 2176 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2170 2177
2171 2178 2005-04-29 Fernando Perez <fperez@colorado.edu>
2172 2179
2173 2180 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2174 2181 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2175 2182 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2176 2183 which provides support for Qt interactive usage (similar to the
2177 2184 existing one for WX and GTK). This had been often requested.
2178 2185
2179 2186 2005-04-14 *** Released version 0.6.13
2180 2187
2181 2188 2005-04-08 Fernando Perez <fperez@colorado.edu>
2182 2189
2183 2190 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2184 2191 from _ofind, which gets called on almost every input line. Now,
2185 2192 we only try to get docstrings if they are actually going to be
2186 2193 used (the overhead of fetching unnecessary docstrings can be
2187 2194 noticeable for certain objects, such as Pyro proxies).
2188 2195
2189 2196 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2190 2197 for completers. For some reason I had been passing them the state
2191 2198 variable, which completers never actually need, and was in
2192 2199 conflict with the rlcompleter API. Custom completers ONLY need to
2193 2200 take the text parameter.
2194 2201
2195 2202 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2196 2203 work correctly in pysh. I've also moved all the logic which used
2197 2204 to be in pysh.py here, which will prevent problems with future
2198 2205 upgrades. However, this time I must warn users to update their
2199 2206 pysh profile to include the line
2200 2207
2201 2208 import_all IPython.Extensions.InterpreterExec
2202 2209
2203 2210 because otherwise things won't work for them. They MUST also
2204 2211 delete pysh.py and the line
2205 2212
2206 2213 execfile pysh.py
2207 2214
2208 2215 from their ipythonrc-pysh.
2209 2216
2210 2217 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2211 2218 robust in the face of objects whose dir() returns non-strings
2212 2219 (which it shouldn't, but some broken libs like ITK do). Thanks to
2213 2220 a patch by John Hunter (implemented differently, though). Also
2214 2221 minor improvements by using .extend instead of + on lists.
2215 2222
2216 2223 * pysh.py:
2217 2224
2218 2225 2005-04-06 Fernando Perez <fperez@colorado.edu>
2219 2226
2220 2227 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2221 2228 by default, so that all users benefit from it. Those who don't
2222 2229 want it can still turn it off.
2223 2230
2224 2231 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2225 2232 config file, I'd forgotten about this, so users were getting it
2226 2233 off by default.
2227 2234
2228 2235 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2229 2236 consistency. Now magics can be called in multiline statements,
2230 2237 and python variables can be expanded in magic calls via $var.
2231 2238 This makes the magic system behave just like aliases or !system
2232 2239 calls.
2233 2240
2234 2241 2005-03-28 Fernando Perez <fperez@colorado.edu>
2235 2242
2236 2243 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2237 2244 expensive string additions for building command. Add support for
2238 2245 trailing ';' when autocall is used.
2239 2246
2240 2247 2005-03-26 Fernando Perez <fperez@colorado.edu>
2241 2248
2242 2249 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2243 2250 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2244 2251 ipython.el robust against prompts with any number of spaces
2245 2252 (including 0) after the ':' character.
2246 2253
2247 2254 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2248 2255 continuation prompt, which misled users to think the line was
2249 2256 already indented. Closes debian Bug#300847, reported to me by
2250 2257 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2251 2258
2252 2259 2005-03-23 Fernando Perez <fperez@colorado.edu>
2253 2260
2254 2261 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2255 2262 properly aligned if they have embedded newlines.
2256 2263
2257 2264 * IPython/iplib.py (runlines): Add a public method to expose
2258 2265 IPython's code execution machinery, so that users can run strings
2259 2266 as if they had been typed at the prompt interactively.
2260 2267 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2261 2268 methods which can call the system shell, but with python variable
2262 2269 expansion. The three such methods are: __IPYTHON__.system,
2263 2270 .getoutput and .getoutputerror. These need to be documented in a
2264 2271 'public API' section (to be written) of the manual.
2265 2272
2266 2273 2005-03-20 Fernando Perez <fperez@colorado.edu>
2267 2274
2268 2275 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2269 2276 for custom exception handling. This is quite powerful, and it
2270 2277 allows for user-installable exception handlers which can trap
2271 2278 custom exceptions at runtime and treat them separately from
2272 2279 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2273 2280 Mantegazza <mantegazza-AT-ill.fr>.
2274 2281 (InteractiveShell.set_custom_completer): public API function to
2275 2282 add new completers at runtime.
2276 2283
2277 2284 2005-03-19 Fernando Perez <fperez@colorado.edu>
2278 2285
2279 2286 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2280 2287 allow objects which provide their docstrings via non-standard
2281 2288 mechanisms (like Pyro proxies) to still be inspected by ipython's
2282 2289 ? system.
2283 2290
2284 2291 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2285 2292 automatic capture system. I tried quite hard to make it work
2286 2293 reliably, and simply failed. I tried many combinations with the
2287 2294 subprocess module, but eventually nothing worked in all needed
2288 2295 cases (not blocking stdin for the child, duplicating stdout
2289 2296 without blocking, etc). The new %sc/%sx still do capture to these
2290 2297 magical list/string objects which make shell use much more
2291 2298 conveninent, so not all is lost.
2292 2299
2293 2300 XXX - FIX MANUAL for the change above!
2294 2301
2295 2302 (runsource): I copied code.py's runsource() into ipython to modify
2296 2303 it a bit. Now the code object and source to be executed are
2297 2304 stored in ipython. This makes this info accessible to third-party
2298 2305 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2299 2306 Mantegazza <mantegazza-AT-ill.fr>.
2300 2307
2301 2308 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2302 2309 history-search via readline (like C-p/C-n). I'd wanted this for a
2303 2310 long time, but only recently found out how to do it. For users
2304 2311 who already have their ipythonrc files made and want this, just
2305 2312 add:
2306 2313
2307 2314 readline_parse_and_bind "\e[A": history-search-backward
2308 2315 readline_parse_and_bind "\e[B": history-search-forward
2309 2316
2310 2317 2005-03-18 Fernando Perez <fperez@colorado.edu>
2311 2318
2312 2319 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2313 2320 LSString and SList classes which allow transparent conversions
2314 2321 between list mode and whitespace-separated string.
2315 2322 (magic_r): Fix recursion problem in %r.
2316 2323
2317 2324 * IPython/genutils.py (LSString): New class to be used for
2318 2325 automatic storage of the results of all alias/system calls in _o
2319 2326 and _e (stdout/err). These provide a .l/.list attribute which
2320 2327 does automatic splitting on newlines. This means that for most
2321 2328 uses, you'll never need to do capturing of output with %sc/%sx
2322 2329 anymore, since ipython keeps this always done for you. Note that
2323 2330 only the LAST results are stored, the _o/e variables are
2324 2331 overwritten on each call. If you need to save their contents
2325 2332 further, simply bind them to any other name.
2326 2333
2327 2334 2005-03-17 Fernando Perez <fperez@colorado.edu>
2328 2335
2329 2336 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2330 2337 prompt namespace handling.
2331 2338
2332 2339 2005-03-16 Fernando Perez <fperez@colorado.edu>
2333 2340
2334 2341 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2335 2342 classic prompts to be '>>> ' (final space was missing, and it
2336 2343 trips the emacs python mode).
2337 2344 (BasePrompt.__str__): Added safe support for dynamic prompt
2338 2345 strings. Now you can set your prompt string to be '$x', and the
2339 2346 value of x will be printed from your interactive namespace. The
2340 2347 interpolation syntax includes the full Itpl support, so
2341 2348 ${foo()+x+bar()} is a valid prompt string now, and the function
2342 2349 calls will be made at runtime.
2343 2350
2344 2351 2005-03-15 Fernando Perez <fperez@colorado.edu>
2345 2352
2346 2353 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2347 2354 avoid name clashes in pylab. %hist still works, it just forwards
2348 2355 the call to %history.
2349 2356
2350 2357 2005-03-02 *** Released version 0.6.12
2351 2358
2352 2359 2005-03-02 Fernando Perez <fperez@colorado.edu>
2353 2360
2354 2361 * IPython/iplib.py (handle_magic): log magic calls properly as
2355 2362 ipmagic() function calls.
2356 2363
2357 2364 * IPython/Magic.py (magic_time): Improved %time to support
2358 2365 statements and provide wall-clock as well as CPU time.
2359 2366
2360 2367 2005-02-27 Fernando Perez <fperez@colorado.edu>
2361 2368
2362 2369 * IPython/hooks.py: New hooks module, to expose user-modifiable
2363 2370 IPython functionality in a clean manner. For now only the editor
2364 2371 hook is actually written, and other thigns which I intend to turn
2365 2372 into proper hooks aren't yet there. The display and prefilter
2366 2373 stuff, for example, should be hooks. But at least now the
2367 2374 framework is in place, and the rest can be moved here with more
2368 2375 time later. IPython had had a .hooks variable for a long time for
2369 2376 this purpose, but I'd never actually used it for anything.
2370 2377
2371 2378 2005-02-26 Fernando Perez <fperez@colorado.edu>
2372 2379
2373 2380 * IPython/ipmaker.py (make_IPython): make the default ipython
2374 2381 directory be called _ipython under win32, to follow more the
2375 2382 naming peculiarities of that platform (where buggy software like
2376 2383 Visual Sourcesafe breaks with .named directories). Reported by
2377 2384 Ville Vainio.
2378 2385
2379 2386 2005-02-23 Fernando Perez <fperez@colorado.edu>
2380 2387
2381 2388 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2382 2389 auto_aliases for win32 which were causing problems. Users can
2383 2390 define the ones they personally like.
2384 2391
2385 2392 2005-02-21 Fernando Perez <fperez@colorado.edu>
2386 2393
2387 2394 * IPython/Magic.py (magic_time): new magic to time execution of
2388 2395 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2389 2396
2390 2397 2005-02-19 Fernando Perez <fperez@colorado.edu>
2391 2398
2392 2399 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2393 2400 into keys (for prompts, for example).
2394 2401
2395 2402 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2396 2403 prompts in case users want them. This introduces a small behavior
2397 2404 change: ipython does not automatically add a space to all prompts
2398 2405 anymore. To get the old prompts with a space, users should add it
2399 2406 manually to their ipythonrc file, so for example prompt_in1 should
2400 2407 now read 'In [\#]: ' instead of 'In [\#]:'.
2401 2408 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2402 2409 file) to control left-padding of secondary prompts.
2403 2410
2404 2411 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2405 2412 the profiler can't be imported. Fix for Debian, which removed
2406 2413 profile.py because of License issues. I applied a slightly
2407 2414 modified version of the original Debian patch at
2408 2415 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2409 2416
2410 2417 2005-02-17 Fernando Perez <fperez@colorado.edu>
2411 2418
2412 2419 * IPython/genutils.py (native_line_ends): Fix bug which would
2413 2420 cause improper line-ends under win32 b/c I was not opening files
2414 2421 in binary mode. Bug report and fix thanks to Ville.
2415 2422
2416 2423 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2417 2424 trying to catch spurious foo[1] autocalls. My fix actually broke
2418 2425 ',/' autoquote/call with explicit escape (bad regexp).
2419 2426
2420 2427 2005-02-15 *** Released version 0.6.11
2421 2428
2422 2429 2005-02-14 Fernando Perez <fperez@colorado.edu>
2423 2430
2424 2431 * IPython/background_jobs.py: New background job management
2425 2432 subsystem. This is implemented via a new set of classes, and
2426 2433 IPython now provides a builtin 'jobs' object for background job
2427 2434 execution. A convenience %bg magic serves as a lightweight
2428 2435 frontend for starting the more common type of calls. This was
2429 2436 inspired by discussions with B. Granger and the BackgroundCommand
2430 2437 class described in the book Python Scripting for Computational
2431 2438 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2432 2439 (although ultimately no code from this text was used, as IPython's
2433 2440 system is a separate implementation).
2434 2441
2435 2442 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2436 2443 to control the completion of single/double underscore names
2437 2444 separately. As documented in the example ipytonrc file, the
2438 2445 readline_omit__names variable can now be set to 2, to omit even
2439 2446 single underscore names. Thanks to a patch by Brian Wong
2440 2447 <BrianWong-AT-AirgoNetworks.Com>.
2441 2448 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2442 2449 be autocalled as foo([1]) if foo were callable. A problem for
2443 2450 things which are both callable and implement __getitem__.
2444 2451 (init_readline): Fix autoindentation for win32. Thanks to a patch
2445 2452 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2446 2453
2447 2454 2005-02-12 Fernando Perez <fperez@colorado.edu>
2448 2455
2449 2456 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2450 2457 which I had written long ago to sort out user error messages which
2451 2458 may occur during startup. This seemed like a good idea initially,
2452 2459 but it has proven a disaster in retrospect. I don't want to
2453 2460 change much code for now, so my fix is to set the internal 'debug'
2454 2461 flag to true everywhere, whose only job was precisely to control
2455 2462 this subsystem. This closes issue 28 (as well as avoiding all
2456 2463 sorts of strange hangups which occur from time to time).
2457 2464
2458 2465 2005-02-07 Fernando Perez <fperez@colorado.edu>
2459 2466
2460 2467 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2461 2468 previous call produced a syntax error.
2462 2469
2463 2470 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2464 2471 classes without constructor.
2465 2472
2466 2473 2005-02-06 Fernando Perez <fperez@colorado.edu>
2467 2474
2468 2475 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2469 2476 completions with the results of each matcher, so we return results
2470 2477 to the user from all namespaces. This breaks with ipython
2471 2478 tradition, but I think it's a nicer behavior. Now you get all
2472 2479 possible completions listed, from all possible namespaces (python,
2473 2480 filesystem, magics...) After a request by John Hunter
2474 2481 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2475 2482
2476 2483 2005-02-05 Fernando Perez <fperez@colorado.edu>
2477 2484
2478 2485 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2479 2486 the call had quote characters in it (the quotes were stripped).
2480 2487
2481 2488 2005-01-31 Fernando Perez <fperez@colorado.edu>
2482 2489
2483 2490 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2484 2491 Itpl.itpl() to make the code more robust against psyco
2485 2492 optimizations.
2486 2493
2487 2494 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2488 2495 of causing an exception. Quicker, cleaner.
2489 2496
2490 2497 2005-01-28 Fernando Perez <fperez@colorado.edu>
2491 2498
2492 2499 * scripts/ipython_win_post_install.py (install): hardcode
2493 2500 sys.prefix+'python.exe' as the executable path. It turns out that
2494 2501 during the post-installation run, sys.executable resolves to the
2495 2502 name of the binary installer! I should report this as a distutils
2496 2503 bug, I think. I updated the .10 release with this tiny fix, to
2497 2504 avoid annoying the lists further.
2498 2505
2499 2506 2005-01-27 *** Released version 0.6.10
2500 2507
2501 2508 2005-01-27 Fernando Perez <fperez@colorado.edu>
2502 2509
2503 2510 * IPython/numutils.py (norm): Added 'inf' as optional name for
2504 2511 L-infinity norm, included references to mathworld.com for vector
2505 2512 norm definitions.
2506 2513 (amin/amax): added amin/amax for array min/max. Similar to what
2507 2514 pylab ships with after the recent reorganization of names.
2508 2515 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2509 2516
2510 2517 * ipython.el: committed Alex's recent fixes and improvements.
2511 2518 Tested with python-mode from CVS, and it looks excellent. Since
2512 2519 python-mode hasn't released anything in a while, I'm temporarily
2513 2520 putting a copy of today's CVS (v 4.70) of python-mode in:
2514 2521 http://ipython.scipy.org/tmp/python-mode.el
2515 2522
2516 2523 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2517 2524 sys.executable for the executable name, instead of assuming it's
2518 2525 called 'python.exe' (the post-installer would have produced broken
2519 2526 setups on systems with a differently named python binary).
2520 2527
2521 2528 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2522 2529 references to os.linesep, to make the code more
2523 2530 platform-independent. This is also part of the win32 coloring
2524 2531 fixes.
2525 2532
2526 2533 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2527 2534 lines, which actually cause coloring bugs because the length of
2528 2535 the line is very difficult to correctly compute with embedded
2529 2536 escapes. This was the source of all the coloring problems under
2530 2537 Win32. I think that _finally_, Win32 users have a properly
2531 2538 working ipython in all respects. This would never have happened
2532 2539 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2533 2540
2534 2541 2005-01-26 *** Released version 0.6.9
2535 2542
2536 2543 2005-01-25 Fernando Perez <fperez@colorado.edu>
2537 2544
2538 2545 * setup.py: finally, we have a true Windows installer, thanks to
2539 2546 the excellent work of Viktor Ransmayr
2540 2547 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2541 2548 Windows users. The setup routine is quite a bit cleaner thanks to
2542 2549 this, and the post-install script uses the proper functions to
2543 2550 allow a clean de-installation using the standard Windows Control
2544 2551 Panel.
2545 2552
2546 2553 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2547 2554 environment variable under all OSes (including win32) if
2548 2555 available. This will give consistency to win32 users who have set
2549 2556 this variable for any reason. If os.environ['HOME'] fails, the
2550 2557 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2551 2558
2552 2559 2005-01-24 Fernando Perez <fperez@colorado.edu>
2553 2560
2554 2561 * IPython/numutils.py (empty_like): add empty_like(), similar to
2555 2562 zeros_like() but taking advantage of the new empty() Numeric routine.
2556 2563
2557 2564 2005-01-23 *** Released version 0.6.8
2558 2565
2559 2566 2005-01-22 Fernando Perez <fperez@colorado.edu>
2560 2567
2561 2568 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2562 2569 automatic show() calls. After discussing things with JDH, it
2563 2570 turns out there are too many corner cases where this can go wrong.
2564 2571 It's best not to try to be 'too smart', and simply have ipython
2565 2572 reproduce as much as possible the default behavior of a normal
2566 2573 python shell.
2567 2574
2568 2575 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2569 2576 line-splitting regexp and _prefilter() to avoid calling getattr()
2570 2577 on assignments. This closes
2571 2578 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2572 2579 readline uses getattr(), so a simple <TAB> keypress is still
2573 2580 enough to trigger getattr() calls on an object.
2574 2581
2575 2582 2005-01-21 Fernando Perez <fperez@colorado.edu>
2576 2583
2577 2584 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2578 2585 docstring under pylab so it doesn't mask the original.
2579 2586
2580 2587 2005-01-21 *** Released version 0.6.7
2581 2588
2582 2589 2005-01-21 Fernando Perez <fperez@colorado.edu>
2583 2590
2584 2591 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2585 2592 signal handling for win32 users in multithreaded mode.
2586 2593
2587 2594 2005-01-17 Fernando Perez <fperez@colorado.edu>
2588 2595
2589 2596 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2590 2597 instances with no __init__. After a crash report by Norbert Nemec
2591 2598 <Norbert-AT-nemec-online.de>.
2592 2599
2593 2600 2005-01-14 Fernando Perez <fperez@colorado.edu>
2594 2601
2595 2602 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2596 2603 names for verbose exceptions, when multiple dotted names and the
2597 2604 'parent' object were present on the same line.
2598 2605
2599 2606 2005-01-11 Fernando Perez <fperez@colorado.edu>
2600 2607
2601 2608 * IPython/genutils.py (flag_calls): new utility to trap and flag
2602 2609 calls in functions. I need it to clean up matplotlib support.
2603 2610 Also removed some deprecated code in genutils.
2604 2611
2605 2612 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2606 2613 that matplotlib scripts called with %run, which don't call show()
2607 2614 themselves, still have their plotting windows open.
2608 2615
2609 2616 2005-01-05 Fernando Perez <fperez@colorado.edu>
2610 2617
2611 2618 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2612 2619 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2613 2620
2614 2621 2004-12-19 Fernando Perez <fperez@colorado.edu>
2615 2622
2616 2623 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2617 2624 parent_runcode, which was an eyesore. The same result can be
2618 2625 obtained with Python's regular superclass mechanisms.
2619 2626
2620 2627 2004-12-17 Fernando Perez <fperez@colorado.edu>
2621 2628
2622 2629 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2623 2630 reported by Prabhu.
2624 2631 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2625 2632 sys.stderr) instead of explicitly calling sys.stderr. This helps
2626 2633 maintain our I/O abstractions clean, for future GUI embeddings.
2627 2634
2628 2635 * IPython/genutils.py (info): added new utility for sys.stderr
2629 2636 unified info message handling (thin wrapper around warn()).
2630 2637
2631 2638 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2632 2639 composite (dotted) names on verbose exceptions.
2633 2640 (VerboseTB.nullrepr): harden against another kind of errors which
2634 2641 Python's inspect module can trigger, and which were crashing
2635 2642 IPython. Thanks to a report by Marco Lombardi
2636 2643 <mlombard-AT-ma010192.hq.eso.org>.
2637 2644
2638 2645 2004-12-13 *** Released version 0.6.6
2639 2646
2640 2647 2004-12-12 Fernando Perez <fperez@colorado.edu>
2641 2648
2642 2649 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2643 2650 generated by pygtk upon initialization if it was built without
2644 2651 threads (for matplotlib users). After a crash reported by
2645 2652 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2646 2653
2647 2654 * IPython/ipmaker.py (make_IPython): fix small bug in the
2648 2655 import_some parameter for multiple imports.
2649 2656
2650 2657 * IPython/iplib.py (ipmagic): simplified the interface of
2651 2658 ipmagic() to take a single string argument, just as it would be
2652 2659 typed at the IPython cmd line.
2653 2660 (ipalias): Added new ipalias() with an interface identical to
2654 2661 ipmagic(). This completes exposing a pure python interface to the
2655 2662 alias and magic system, which can be used in loops or more complex
2656 2663 code where IPython's automatic line mangling is not active.
2657 2664
2658 2665 * IPython/genutils.py (timing): changed interface of timing to
2659 2666 simply run code once, which is the most common case. timings()
2660 2667 remains unchanged, for the cases where you want multiple runs.
2661 2668
2662 2669 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2663 2670 bug where Python2.2 crashes with exec'ing code which does not end
2664 2671 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2665 2672 before.
2666 2673
2667 2674 2004-12-10 Fernando Perez <fperez@colorado.edu>
2668 2675
2669 2676 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2670 2677 -t to -T, to accomodate the new -t flag in %run (the %run and
2671 2678 %prun options are kind of intermixed, and it's not easy to change
2672 2679 this with the limitations of python's getopt).
2673 2680
2674 2681 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2675 2682 the execution of scripts. It's not as fine-tuned as timeit.py,
2676 2683 but it works from inside ipython (and under 2.2, which lacks
2677 2684 timeit.py). Optionally a number of runs > 1 can be given for
2678 2685 timing very short-running code.
2679 2686
2680 2687 * IPython/genutils.py (uniq_stable): new routine which returns a
2681 2688 list of unique elements in any iterable, but in stable order of
2682 2689 appearance. I needed this for the ultraTB fixes, and it's a handy
2683 2690 utility.
2684 2691
2685 2692 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2686 2693 dotted names in Verbose exceptions. This had been broken since
2687 2694 the very start, now x.y will properly be printed in a Verbose
2688 2695 traceback, instead of x being shown and y appearing always as an
2689 2696 'undefined global'. Getting this to work was a bit tricky,
2690 2697 because by default python tokenizers are stateless. Saved by
2691 2698 python's ability to easily add a bit of state to an arbitrary
2692 2699 function (without needing to build a full-blown callable object).
2693 2700
2694 2701 Also big cleanup of this code, which had horrendous runtime
2695 2702 lookups of zillions of attributes for colorization. Moved all
2696 2703 this code into a few templates, which make it cleaner and quicker.
2697 2704
2698 2705 Printout quality was also improved for Verbose exceptions: one
2699 2706 variable per line, and memory addresses are printed (this can be
2700 2707 quite handy in nasty debugging situations, which is what Verbose
2701 2708 is for).
2702 2709
2703 2710 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2704 2711 the command line as scripts to be loaded by embedded instances.
2705 2712 Doing so has the potential for an infinite recursion if there are
2706 2713 exceptions thrown in the process. This fixes a strange crash
2707 2714 reported by Philippe MULLER <muller-AT-irit.fr>.
2708 2715
2709 2716 2004-12-09 Fernando Perez <fperez@colorado.edu>
2710 2717
2711 2718 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2712 2719 to reflect new names in matplotlib, which now expose the
2713 2720 matlab-compatible interface via a pylab module instead of the
2714 2721 'matlab' name. The new code is backwards compatible, so users of
2715 2722 all matplotlib versions are OK. Patch by J. Hunter.
2716 2723
2717 2724 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2718 2725 of __init__ docstrings for instances (class docstrings are already
2719 2726 automatically printed). Instances with customized docstrings
2720 2727 (indep. of the class) are also recognized and all 3 separate
2721 2728 docstrings are printed (instance, class, constructor). After some
2722 2729 comments/suggestions by J. Hunter.
2723 2730
2724 2731 2004-12-05 Fernando Perez <fperez@colorado.edu>
2725 2732
2726 2733 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2727 2734 warnings when tab-completion fails and triggers an exception.
2728 2735
2729 2736 2004-12-03 Fernando Perez <fperez@colorado.edu>
2730 2737
2731 2738 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2732 2739 be triggered when using 'run -p'. An incorrect option flag was
2733 2740 being set ('d' instead of 'D').
2734 2741 (manpage): fix missing escaped \- sign.
2735 2742
2736 2743 2004-11-30 *** Released version 0.6.5
2737 2744
2738 2745 2004-11-30 Fernando Perez <fperez@colorado.edu>
2739 2746
2740 2747 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2741 2748 setting with -d option.
2742 2749
2743 2750 * setup.py (docfiles): Fix problem where the doc glob I was using
2744 2751 was COMPLETELY BROKEN. It was giving the right files by pure
2745 2752 accident, but failed once I tried to include ipython.el. Note:
2746 2753 glob() does NOT allow you to do exclusion on multiple endings!
2747 2754
2748 2755 2004-11-29 Fernando Perez <fperez@colorado.edu>
2749 2756
2750 2757 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2751 2758 the manpage as the source. Better formatting & consistency.
2752 2759
2753 2760 * IPython/Magic.py (magic_run): Added new -d option, to run
2754 2761 scripts under the control of the python pdb debugger. Note that
2755 2762 this required changing the %prun option -d to -D, to avoid a clash
2756 2763 (since %run must pass options to %prun, and getopt is too dumb to
2757 2764 handle options with string values with embedded spaces). Thanks
2758 2765 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2759 2766 (magic_who_ls): added type matching to %who and %whos, so that one
2760 2767 can filter their output to only include variables of certain
2761 2768 types. Another suggestion by Matthew.
2762 2769 (magic_whos): Added memory summaries in kb and Mb for arrays.
2763 2770 (magic_who): Improve formatting (break lines every 9 vars).
2764 2771
2765 2772 2004-11-28 Fernando Perez <fperez@colorado.edu>
2766 2773
2767 2774 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2768 2775 cache when empty lines were present.
2769 2776
2770 2777 2004-11-24 Fernando Perez <fperez@colorado.edu>
2771 2778
2772 2779 * IPython/usage.py (__doc__): document the re-activated threading
2773 2780 options for WX and GTK.
2774 2781
2775 2782 2004-11-23 Fernando Perez <fperez@colorado.edu>
2776 2783
2777 2784 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2778 2785 the -wthread and -gthread options, along with a new -tk one to try
2779 2786 and coordinate Tk threading with wx/gtk. The tk support is very
2780 2787 platform dependent, since it seems to require Tcl and Tk to be
2781 2788 built with threads (Fedora1/2 appears NOT to have it, but in
2782 2789 Prabhu's Debian boxes it works OK). But even with some Tk
2783 2790 limitations, this is a great improvement.
2784 2791
2785 2792 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2786 2793 info in user prompts. Patch by Prabhu.
2787 2794
2788 2795 2004-11-18 Fernando Perez <fperez@colorado.edu>
2789 2796
2790 2797 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2791 2798 EOFErrors and bail, to avoid infinite loops if a non-terminating
2792 2799 file is fed into ipython. Patch submitted in issue 19 by user,
2793 2800 many thanks.
2794 2801
2795 2802 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2796 2803 autoquote/parens in continuation prompts, which can cause lots of
2797 2804 problems. Closes roundup issue 20.
2798 2805
2799 2806 2004-11-17 Fernando Perez <fperez@colorado.edu>
2800 2807
2801 2808 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2802 2809 reported as debian bug #280505. I'm not sure my local changelog
2803 2810 entry has the proper debian format (Jack?).
2804 2811
2805 2812 2004-11-08 *** Released version 0.6.4
2806 2813
2807 2814 2004-11-08 Fernando Perez <fperez@colorado.edu>
2808 2815
2809 2816 * IPython/iplib.py (init_readline): Fix exit message for Windows
2810 2817 when readline is active. Thanks to a report by Eric Jones
2811 2818 <eric-AT-enthought.com>.
2812 2819
2813 2820 2004-11-07 Fernando Perez <fperez@colorado.edu>
2814 2821
2815 2822 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2816 2823 sometimes seen by win2k/cygwin users.
2817 2824
2818 2825 2004-11-06 Fernando Perez <fperez@colorado.edu>
2819 2826
2820 2827 * IPython/iplib.py (interact): Change the handling of %Exit from
2821 2828 trying to propagate a SystemExit to an internal ipython flag.
2822 2829 This is less elegant than using Python's exception mechanism, but
2823 2830 I can't get that to work reliably with threads, so under -pylab
2824 2831 %Exit was hanging IPython. Cross-thread exception handling is
2825 2832 really a bitch. Thaks to a bug report by Stephen Walton
2826 2833 <stephen.walton-AT-csun.edu>.
2827 2834
2828 2835 2004-11-04 Fernando Perez <fperez@colorado.edu>
2829 2836
2830 2837 * IPython/iplib.py (raw_input_original): store a pointer to the
2831 2838 true raw_input to harden against code which can modify it
2832 2839 (wx.py.PyShell does this and would otherwise crash ipython).
2833 2840 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2834 2841
2835 2842 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2836 2843 Ctrl-C problem, which does not mess up the input line.
2837 2844
2838 2845 2004-11-03 Fernando Perez <fperez@colorado.edu>
2839 2846
2840 2847 * IPython/Release.py: Changed licensing to BSD, in all files.
2841 2848 (name): lowercase name for tarball/RPM release.
2842 2849
2843 2850 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2844 2851 use throughout ipython.
2845 2852
2846 2853 * IPython/Magic.py (Magic._ofind): Switch to using the new
2847 2854 OInspect.getdoc() function.
2848 2855
2849 2856 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2850 2857 of the line currently being canceled via Ctrl-C. It's extremely
2851 2858 ugly, but I don't know how to do it better (the problem is one of
2852 2859 handling cross-thread exceptions).
2853 2860
2854 2861 2004-10-28 Fernando Perez <fperez@colorado.edu>
2855 2862
2856 2863 * IPython/Shell.py (signal_handler): add signal handlers to trap
2857 2864 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2858 2865 report by Francesc Alted.
2859 2866
2860 2867 2004-10-21 Fernando Perez <fperez@colorado.edu>
2861 2868
2862 2869 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2863 2870 to % for pysh syntax extensions.
2864 2871
2865 2872 2004-10-09 Fernando Perez <fperez@colorado.edu>
2866 2873
2867 2874 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2868 2875 arrays to print a more useful summary, without calling str(arr).
2869 2876 This avoids the problem of extremely lengthy computations which
2870 2877 occur if arr is large, and appear to the user as a system lockup
2871 2878 with 100% cpu activity. After a suggestion by Kristian Sandberg
2872 2879 <Kristian.Sandberg@colorado.edu>.
2873 2880 (Magic.__init__): fix bug in global magic escapes not being
2874 2881 correctly set.
2875 2882
2876 2883 2004-10-08 Fernando Perez <fperez@colorado.edu>
2877 2884
2878 2885 * IPython/Magic.py (__license__): change to absolute imports of
2879 2886 ipython's own internal packages, to start adapting to the absolute
2880 2887 import requirement of PEP-328.
2881 2888
2882 2889 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2883 2890 files, and standardize author/license marks through the Release
2884 2891 module instead of having per/file stuff (except for files with
2885 2892 particular licenses, like the MIT/PSF-licensed codes).
2886 2893
2887 2894 * IPython/Debugger.py: remove dead code for python 2.1
2888 2895
2889 2896 2004-10-04 Fernando Perez <fperez@colorado.edu>
2890 2897
2891 2898 * IPython/iplib.py (ipmagic): New function for accessing magics
2892 2899 via a normal python function call.
2893 2900
2894 2901 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2895 2902 from '@' to '%', to accomodate the new @decorator syntax of python
2896 2903 2.4.
2897 2904
2898 2905 2004-09-29 Fernando Perez <fperez@colorado.edu>
2899 2906
2900 2907 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2901 2908 matplotlib.use to prevent running scripts which try to switch
2902 2909 interactive backends from within ipython. This will just crash
2903 2910 the python interpreter, so we can't allow it (but a detailed error
2904 2911 is given to the user).
2905 2912
2906 2913 2004-09-28 Fernando Perez <fperez@colorado.edu>
2907 2914
2908 2915 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2909 2916 matplotlib-related fixes so that using @run with non-matplotlib
2910 2917 scripts doesn't pop up spurious plot windows. This requires
2911 2918 matplotlib >= 0.63, where I had to make some changes as well.
2912 2919
2913 2920 * IPython/ipmaker.py (make_IPython): update version requirement to
2914 2921 python 2.2.
2915 2922
2916 2923 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2917 2924 banner arg for embedded customization.
2918 2925
2919 2926 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2920 2927 explicit uses of __IP as the IPython's instance name. Now things
2921 2928 are properly handled via the shell.name value. The actual code
2922 2929 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2923 2930 is much better than before. I'll clean things completely when the
2924 2931 magic stuff gets a real overhaul.
2925 2932
2926 2933 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2927 2934 minor changes to debian dir.
2928 2935
2929 2936 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2930 2937 pointer to the shell itself in the interactive namespace even when
2931 2938 a user-supplied dict is provided. This is needed for embedding
2932 2939 purposes (found by tests with Michel Sanner).
2933 2940
2934 2941 2004-09-27 Fernando Perez <fperez@colorado.edu>
2935 2942
2936 2943 * IPython/UserConfig/ipythonrc: remove []{} from
2937 2944 readline_remove_delims, so that things like [modname.<TAB> do
2938 2945 proper completion. This disables [].TAB, but that's a less common
2939 2946 case than module names in list comprehensions, for example.
2940 2947 Thanks to a report by Andrea Riciputi.
2941 2948
2942 2949 2004-09-09 Fernando Perez <fperez@colorado.edu>
2943 2950
2944 2951 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2945 2952 blocking problems in win32 and osx. Fix by John.
2946 2953
2947 2954 2004-09-08 Fernando Perez <fperez@colorado.edu>
2948 2955
2949 2956 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2950 2957 for Win32 and OSX. Fix by John Hunter.
2951 2958
2952 2959 2004-08-30 *** Released version 0.6.3
2953 2960
2954 2961 2004-08-30 Fernando Perez <fperez@colorado.edu>
2955 2962
2956 2963 * setup.py (isfile): Add manpages to list of dependent files to be
2957 2964 updated.
2958 2965
2959 2966 2004-08-27 Fernando Perez <fperez@colorado.edu>
2960 2967
2961 2968 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2962 2969 for now. They don't really work with standalone WX/GTK code
2963 2970 (though matplotlib IS working fine with both of those backends).
2964 2971 This will neeed much more testing. I disabled most things with
2965 2972 comments, so turning it back on later should be pretty easy.
2966 2973
2967 2974 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2968 2975 autocalling of expressions like r'foo', by modifying the line
2969 2976 split regexp. Closes
2970 2977 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2971 2978 Riley <ipythonbugs-AT-sabi.net>.
2972 2979 (InteractiveShell.mainloop): honor --nobanner with banner
2973 2980 extensions.
2974 2981
2975 2982 * IPython/Shell.py: Significant refactoring of all classes, so
2976 2983 that we can really support ALL matplotlib backends and threading
2977 2984 models (John spotted a bug with Tk which required this). Now we
2978 2985 should support single-threaded, WX-threads and GTK-threads, both
2979 2986 for generic code and for matplotlib.
2980 2987
2981 2988 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2982 2989 -pylab, to simplify things for users. Will also remove the pylab
2983 2990 profile, since now all of matplotlib configuration is directly
2984 2991 handled here. This also reduces startup time.
2985 2992
2986 2993 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2987 2994 shell wasn't being correctly called. Also in IPShellWX.
2988 2995
2989 2996 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2990 2997 fine-tune banner.
2991 2998
2992 2999 * IPython/numutils.py (spike): Deprecate these spike functions,
2993 3000 delete (long deprecated) gnuplot_exec handler.
2994 3001
2995 3002 2004-08-26 Fernando Perez <fperez@colorado.edu>
2996 3003
2997 3004 * ipython.1: Update for threading options, plus some others which
2998 3005 were missing.
2999 3006
3000 3007 * IPython/ipmaker.py (__call__): Added -wthread option for
3001 3008 wxpython thread handling. Make sure threading options are only
3002 3009 valid at the command line.
3003 3010
3004 3011 * scripts/ipython: moved shell selection into a factory function
3005 3012 in Shell.py, to keep the starter script to a minimum.
3006 3013
3007 3014 2004-08-25 Fernando Perez <fperez@colorado.edu>
3008 3015
3009 3016 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3010 3017 John. Along with some recent changes he made to matplotlib, the
3011 3018 next versions of both systems should work very well together.
3012 3019
3013 3020 2004-08-24 Fernando Perez <fperez@colorado.edu>
3014 3021
3015 3022 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3016 3023 tried to switch the profiling to using hotshot, but I'm getting
3017 3024 strange errors from prof.runctx() there. I may be misreading the
3018 3025 docs, but it looks weird. For now the profiling code will
3019 3026 continue to use the standard profiler.
3020 3027
3021 3028 2004-08-23 Fernando Perez <fperez@colorado.edu>
3022 3029
3023 3030 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3024 3031 threaded shell, by John Hunter. It's not quite ready yet, but
3025 3032 close.
3026 3033
3027 3034 2004-08-22 Fernando Perez <fperez@colorado.edu>
3028 3035
3029 3036 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3030 3037 in Magic and ultraTB.
3031 3038
3032 3039 * ipython.1: document threading options in manpage.
3033 3040
3034 3041 * scripts/ipython: Changed name of -thread option to -gthread,
3035 3042 since this is GTK specific. I want to leave the door open for a
3036 3043 -wthread option for WX, which will most likely be necessary. This
3037 3044 change affects usage and ipmaker as well.
3038 3045
3039 3046 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3040 3047 handle the matplotlib shell issues. Code by John Hunter
3041 3048 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3042 3049 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3043 3050 broken (and disabled for end users) for now, but it puts the
3044 3051 infrastructure in place.
3045 3052
3046 3053 2004-08-21 Fernando Perez <fperez@colorado.edu>
3047 3054
3048 3055 * ipythonrc-pylab: Add matplotlib support.
3049 3056
3050 3057 * matplotlib_config.py: new files for matplotlib support, part of
3051 3058 the pylab profile.
3052 3059
3053 3060 * IPython/usage.py (__doc__): documented the threading options.
3054 3061
3055 3062 2004-08-20 Fernando Perez <fperez@colorado.edu>
3056 3063
3057 3064 * ipython: Modified the main calling routine to handle the -thread
3058 3065 and -mpthread options. This needs to be done as a top-level hack,
3059 3066 because it determines which class to instantiate for IPython
3060 3067 itself.
3061 3068
3062 3069 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3063 3070 classes to support multithreaded GTK operation without blocking,
3064 3071 and matplotlib with all backends. This is a lot of still very
3065 3072 experimental code, and threads are tricky. So it may still have a
3066 3073 few rough edges... This code owes a lot to
3067 3074 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3068 3075 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3069 3076 to John Hunter for all the matplotlib work.
3070 3077
3071 3078 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3072 3079 options for gtk thread and matplotlib support.
3073 3080
3074 3081 2004-08-16 Fernando Perez <fperez@colorado.edu>
3075 3082
3076 3083 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3077 3084 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3078 3085 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3079 3086
3080 3087 2004-08-11 Fernando Perez <fperez@colorado.edu>
3081 3088
3082 3089 * setup.py (isfile): Fix build so documentation gets updated for
3083 3090 rpms (it was only done for .tgz builds).
3084 3091
3085 3092 2004-08-10 Fernando Perez <fperez@colorado.edu>
3086 3093
3087 3094 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3088 3095
3089 3096 * iplib.py : Silence syntax error exceptions in tab-completion.
3090 3097
3091 3098 2004-08-05 Fernando Perez <fperez@colorado.edu>
3092 3099
3093 3100 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3094 3101 'color off' mark for continuation prompts. This was causing long
3095 3102 continuation lines to mis-wrap.
3096 3103
3097 3104 2004-08-01 Fernando Perez <fperez@colorado.edu>
3098 3105
3099 3106 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3100 3107 for building ipython to be a parameter. All this is necessary
3101 3108 right now to have a multithreaded version, but this insane
3102 3109 non-design will be cleaned up soon. For now, it's a hack that
3103 3110 works.
3104 3111
3105 3112 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3106 3113 args in various places. No bugs so far, but it's a dangerous
3107 3114 practice.
3108 3115
3109 3116 2004-07-31 Fernando Perez <fperez@colorado.edu>
3110 3117
3111 3118 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3112 3119 fix completion of files with dots in their names under most
3113 3120 profiles (pysh was OK because the completion order is different).
3114 3121
3115 3122 2004-07-27 Fernando Perez <fperez@colorado.edu>
3116 3123
3117 3124 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3118 3125 keywords manually, b/c the one in keyword.py was removed in python
3119 3126 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3120 3127 This is NOT a bug under python 2.3 and earlier.
3121 3128
3122 3129 2004-07-26 Fernando Perez <fperez@colorado.edu>
3123 3130
3124 3131 * IPython/ultraTB.py (VerboseTB.text): Add another
3125 3132 linecache.checkcache() call to try to prevent inspect.py from
3126 3133 crashing under python 2.3. I think this fixes
3127 3134 http://www.scipy.net/roundup/ipython/issue17.
3128 3135
3129 3136 2004-07-26 *** Released version 0.6.2
3130 3137
3131 3138 2004-07-26 Fernando Perez <fperez@colorado.edu>
3132 3139
3133 3140 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3134 3141 fail for any number.
3135 3142 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3136 3143 empty bookmarks.
3137 3144
3138 3145 2004-07-26 *** Released version 0.6.1
3139 3146
3140 3147 2004-07-26 Fernando Perez <fperez@colorado.edu>
3141 3148
3142 3149 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3143 3150
3144 3151 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3145 3152 escaping '()[]{}' in filenames.
3146 3153
3147 3154 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3148 3155 Python 2.2 users who lack a proper shlex.split.
3149 3156
3150 3157 2004-07-19 Fernando Perez <fperez@colorado.edu>
3151 3158
3152 3159 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3153 3160 for reading readline's init file. I follow the normal chain:
3154 3161 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3155 3162 report by Mike Heeter. This closes
3156 3163 http://www.scipy.net/roundup/ipython/issue16.
3157 3164
3158 3165 2004-07-18 Fernando Perez <fperez@colorado.edu>
3159 3166
3160 3167 * IPython/iplib.py (__init__): Add better handling of '\' under
3161 3168 Win32 for filenames. After a patch by Ville.
3162 3169
3163 3170 2004-07-17 Fernando Perez <fperez@colorado.edu>
3164 3171
3165 3172 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3166 3173 autocalling would be triggered for 'foo is bar' if foo is
3167 3174 callable. I also cleaned up the autocall detection code to use a
3168 3175 regexp, which is faster. Bug reported by Alexander Schmolck.
3169 3176
3170 3177 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3171 3178 '?' in them would confuse the help system. Reported by Alex
3172 3179 Schmolck.
3173 3180
3174 3181 2004-07-16 Fernando Perez <fperez@colorado.edu>
3175 3182
3176 3183 * IPython/GnuplotInteractive.py (__all__): added plot2.
3177 3184
3178 3185 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3179 3186 plotting dictionaries, lists or tuples of 1d arrays.
3180 3187
3181 3188 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3182 3189 optimizations.
3183 3190
3184 3191 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3185 3192 the information which was there from Janko's original IPP code:
3186 3193
3187 3194 03.05.99 20:53 porto.ifm.uni-kiel.de
3188 3195 --Started changelog.
3189 3196 --make clear do what it say it does
3190 3197 --added pretty output of lines from inputcache
3191 3198 --Made Logger a mixin class, simplifies handling of switches
3192 3199 --Added own completer class. .string<TAB> expands to last history
3193 3200 line which starts with string. The new expansion is also present
3194 3201 with Ctrl-r from the readline library. But this shows, who this
3195 3202 can be done for other cases.
3196 3203 --Added convention that all shell functions should accept a
3197 3204 parameter_string This opens the door for different behaviour for
3198 3205 each function. @cd is a good example of this.
3199 3206
3200 3207 04.05.99 12:12 porto.ifm.uni-kiel.de
3201 3208 --added logfile rotation
3202 3209 --added new mainloop method which freezes first the namespace
3203 3210
3204 3211 07.05.99 21:24 porto.ifm.uni-kiel.de
3205 3212 --added the docreader classes. Now there is a help system.
3206 3213 -This is only a first try. Currently it's not easy to put new
3207 3214 stuff in the indices. But this is the way to go. Info would be
3208 3215 better, but HTML is every where and not everybody has an info
3209 3216 system installed and it's not so easy to change html-docs to info.
3210 3217 --added global logfile option
3211 3218 --there is now a hook for object inspection method pinfo needs to
3212 3219 be provided for this. Can be reached by two '??'.
3213 3220
3214 3221 08.05.99 20:51 porto.ifm.uni-kiel.de
3215 3222 --added a README
3216 3223 --bug in rc file. Something has changed so functions in the rc
3217 3224 file need to reference the shell and not self. Not clear if it's a
3218 3225 bug or feature.
3219 3226 --changed rc file for new behavior
3220 3227
3221 3228 2004-07-15 Fernando Perez <fperez@colorado.edu>
3222 3229
3223 3230 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3224 3231 cache was falling out of sync in bizarre manners when multi-line
3225 3232 input was present. Minor optimizations and cleanup.
3226 3233
3227 3234 (Logger): Remove old Changelog info for cleanup. This is the
3228 3235 information which was there from Janko's original code:
3229 3236
3230 3237 Changes to Logger: - made the default log filename a parameter
3231 3238
3232 3239 - put a check for lines beginning with !@? in log(). Needed
3233 3240 (even if the handlers properly log their lines) for mid-session
3234 3241 logging activation to work properly. Without this, lines logged
3235 3242 in mid session, which get read from the cache, would end up
3236 3243 'bare' (with !@? in the open) in the log. Now they are caught
3237 3244 and prepended with a #.
3238 3245
3239 3246 * IPython/iplib.py (InteractiveShell.init_readline): added check
3240 3247 in case MagicCompleter fails to be defined, so we don't crash.
3241 3248
3242 3249 2004-07-13 Fernando Perez <fperez@colorado.edu>
3243 3250
3244 3251 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3245 3252 of EPS if the requested filename ends in '.eps'.
3246 3253
3247 3254 2004-07-04 Fernando Perez <fperez@colorado.edu>
3248 3255
3249 3256 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3250 3257 escaping of quotes when calling the shell.
3251 3258
3252 3259 2004-07-02 Fernando Perez <fperez@colorado.edu>
3253 3260
3254 3261 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3255 3262 gettext not working because we were clobbering '_'. Fixes
3256 3263 http://www.scipy.net/roundup/ipython/issue6.
3257 3264
3258 3265 2004-07-01 Fernando Perez <fperez@colorado.edu>
3259 3266
3260 3267 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3261 3268 into @cd. Patch by Ville.
3262 3269
3263 3270 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3264 3271 new function to store things after ipmaker runs. Patch by Ville.
3265 3272 Eventually this will go away once ipmaker is removed and the class
3266 3273 gets cleaned up, but for now it's ok. Key functionality here is
3267 3274 the addition of the persistent storage mechanism, a dict for
3268 3275 keeping data across sessions (for now just bookmarks, but more can
3269 3276 be implemented later).
3270 3277
3271 3278 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3272 3279 persistent across sections. Patch by Ville, I modified it
3273 3280 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3274 3281 added a '-l' option to list all bookmarks.
3275 3282
3276 3283 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3277 3284 center for cleanup. Registered with atexit.register(). I moved
3278 3285 here the old exit_cleanup(). After a patch by Ville.
3279 3286
3280 3287 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3281 3288 characters in the hacked shlex_split for python 2.2.
3282 3289
3283 3290 * IPython/iplib.py (file_matches): more fixes to filenames with
3284 3291 whitespace in them. It's not perfect, but limitations in python's
3285 3292 readline make it impossible to go further.
3286 3293
3287 3294 2004-06-29 Fernando Perez <fperez@colorado.edu>
3288 3295
3289 3296 * IPython/iplib.py (file_matches): escape whitespace correctly in
3290 3297 filename completions. Bug reported by Ville.
3291 3298
3292 3299 2004-06-28 Fernando Perez <fperez@colorado.edu>
3293 3300
3294 3301 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3295 3302 the history file will be called 'history-PROFNAME' (or just
3296 3303 'history' if no profile is loaded). I was getting annoyed at
3297 3304 getting my Numerical work history clobbered by pysh sessions.
3298 3305
3299 3306 * IPython/iplib.py (InteractiveShell.__init__): Internal
3300 3307 getoutputerror() function so that we can honor the system_verbose
3301 3308 flag for _all_ system calls. I also added escaping of #
3302 3309 characters here to avoid confusing Itpl.
3303 3310
3304 3311 * IPython/Magic.py (shlex_split): removed call to shell in
3305 3312 parse_options and replaced it with shlex.split(). The annoying
3306 3313 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3307 3314 to backport it from 2.3, with several frail hacks (the shlex
3308 3315 module is rather limited in 2.2). Thanks to a suggestion by Ville
3309 3316 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3310 3317 problem.
3311 3318
3312 3319 (Magic.magic_system_verbose): new toggle to print the actual
3313 3320 system calls made by ipython. Mainly for debugging purposes.
3314 3321
3315 3322 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3316 3323 doesn't support persistence. Reported (and fix suggested) by
3317 3324 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3318 3325
3319 3326 2004-06-26 Fernando Perez <fperez@colorado.edu>
3320 3327
3321 3328 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3322 3329 continue prompts.
3323 3330
3324 3331 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3325 3332 function (basically a big docstring) and a few more things here to
3326 3333 speedup startup. pysh.py is now very lightweight. We want because
3327 3334 it gets execfile'd, while InterpreterExec gets imported, so
3328 3335 byte-compilation saves time.
3329 3336
3330 3337 2004-06-25 Fernando Perez <fperez@colorado.edu>
3331 3338
3332 3339 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3333 3340 -NUM', which was recently broken.
3334 3341
3335 3342 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3336 3343 in multi-line input (but not !!, which doesn't make sense there).
3337 3344
3338 3345 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3339 3346 It's just too useful, and people can turn it off in the less
3340 3347 common cases where it's a problem.
3341 3348
3342 3349 2004-06-24 Fernando Perez <fperez@colorado.edu>
3343 3350
3344 3351 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3345 3352 special syntaxes (like alias calling) is now allied in multi-line
3346 3353 input. This is still _very_ experimental, but it's necessary for
3347 3354 efficient shell usage combining python looping syntax with system
3348 3355 calls. For now it's restricted to aliases, I don't think it
3349 3356 really even makes sense to have this for magics.
3350 3357
3351 3358 2004-06-23 Fernando Perez <fperez@colorado.edu>
3352 3359
3353 3360 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3354 3361 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3355 3362
3356 3363 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3357 3364 extensions under Windows (after code sent by Gary Bishop). The
3358 3365 extensions considered 'executable' are stored in IPython's rc
3359 3366 structure as win_exec_ext.
3360 3367
3361 3368 * IPython/genutils.py (shell): new function, like system() but
3362 3369 without return value. Very useful for interactive shell work.
3363 3370
3364 3371 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3365 3372 delete aliases.
3366 3373
3367 3374 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3368 3375 sure that the alias table doesn't contain python keywords.
3369 3376
3370 3377 2004-06-21 Fernando Perez <fperez@colorado.edu>
3371 3378
3372 3379 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3373 3380 non-existent items are found in $PATH. Reported by Thorsten.
3374 3381
3375 3382 2004-06-20 Fernando Perez <fperez@colorado.edu>
3376 3383
3377 3384 * IPython/iplib.py (complete): modified the completer so that the
3378 3385 order of priorities can be easily changed at runtime.
3379 3386
3380 3387 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3381 3388 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3382 3389
3383 3390 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3384 3391 expand Python variables prepended with $ in all system calls. The
3385 3392 same was done to InteractiveShell.handle_shell_escape. Now all
3386 3393 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3387 3394 expansion of python variables and expressions according to the
3388 3395 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3389 3396
3390 3397 Though PEP-215 has been rejected, a similar (but simpler) one
3391 3398 seems like it will go into Python 2.4, PEP-292 -
3392 3399 http://www.python.org/peps/pep-0292.html.
3393 3400
3394 3401 I'll keep the full syntax of PEP-215, since IPython has since the
3395 3402 start used Ka-Ping Yee's reference implementation discussed there
3396 3403 (Itpl), and I actually like the powerful semantics it offers.
3397 3404
3398 3405 In order to access normal shell variables, the $ has to be escaped
3399 3406 via an extra $. For example:
3400 3407
3401 3408 In [7]: PATH='a python variable'
3402 3409
3403 3410 In [8]: !echo $PATH
3404 3411 a python variable
3405 3412
3406 3413 In [9]: !echo $$PATH
3407 3414 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3408 3415
3409 3416 (Magic.parse_options): escape $ so the shell doesn't evaluate
3410 3417 things prematurely.
3411 3418
3412 3419 * IPython/iplib.py (InteractiveShell.call_alias): added the
3413 3420 ability for aliases to expand python variables via $.
3414 3421
3415 3422 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3416 3423 system, now there's a @rehash/@rehashx pair of magics. These work
3417 3424 like the csh rehash command, and can be invoked at any time. They
3418 3425 build a table of aliases to everything in the user's $PATH
3419 3426 (@rehash uses everything, @rehashx is slower but only adds
3420 3427 executable files). With this, the pysh.py-based shell profile can
3421 3428 now simply call rehash upon startup, and full access to all
3422 3429 programs in the user's path is obtained.
3423 3430
3424 3431 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3425 3432 functionality is now fully in place. I removed the old dynamic
3426 3433 code generation based approach, in favor of a much lighter one
3427 3434 based on a simple dict. The advantage is that this allows me to
3428 3435 now have thousands of aliases with negligible cost (unthinkable
3429 3436 with the old system).
3430 3437
3431 3438 2004-06-19 Fernando Perez <fperez@colorado.edu>
3432 3439
3433 3440 * IPython/iplib.py (__init__): extended MagicCompleter class to
3434 3441 also complete (last in priority) on user aliases.
3435 3442
3436 3443 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3437 3444 call to eval.
3438 3445 (ItplNS.__init__): Added a new class which functions like Itpl,
3439 3446 but allows configuring the namespace for the evaluation to occur
3440 3447 in.
3441 3448
3442 3449 2004-06-18 Fernando Perez <fperez@colorado.edu>
3443 3450
3444 3451 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3445 3452 better message when 'exit' or 'quit' are typed (a common newbie
3446 3453 confusion).
3447 3454
3448 3455 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3449 3456 check for Windows users.
3450 3457
3451 3458 * IPython/iplib.py (InteractiveShell.user_setup): removed
3452 3459 disabling of colors for Windows. I'll test at runtime and issue a
3453 3460 warning if Gary's readline isn't found, as to nudge users to
3454 3461 download it.
3455 3462
3456 3463 2004-06-16 Fernando Perez <fperez@colorado.edu>
3457 3464
3458 3465 * IPython/genutils.py (Stream.__init__): changed to print errors
3459 3466 to sys.stderr. I had a circular dependency here. Now it's
3460 3467 possible to run ipython as IDLE's shell (consider this pre-alpha,
3461 3468 since true stdout things end up in the starting terminal instead
3462 3469 of IDLE's out).
3463 3470
3464 3471 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3465 3472 users who haven't # updated their prompt_in2 definitions. Remove
3466 3473 eventually.
3467 3474 (multiple_replace): added credit to original ASPN recipe.
3468 3475
3469 3476 2004-06-15 Fernando Perez <fperez@colorado.edu>
3470 3477
3471 3478 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3472 3479 list of auto-defined aliases.
3473 3480
3474 3481 2004-06-13 Fernando Perez <fperez@colorado.edu>
3475 3482
3476 3483 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3477 3484 install was really requested (so setup.py can be used for other
3478 3485 things under Windows).
3479 3486
3480 3487 2004-06-10 Fernando Perez <fperez@colorado.edu>
3481 3488
3482 3489 * IPython/Logger.py (Logger.create_log): Manually remove any old
3483 3490 backup, since os.remove may fail under Windows. Fixes bug
3484 3491 reported by Thorsten.
3485 3492
3486 3493 2004-06-09 Fernando Perez <fperez@colorado.edu>
3487 3494
3488 3495 * examples/example-embed.py: fixed all references to %n (replaced
3489 3496 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3490 3497 for all examples and the manual as well.
3491 3498
3492 3499 2004-06-08 Fernando Perez <fperez@colorado.edu>
3493 3500
3494 3501 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3495 3502 alignment and color management. All 3 prompt subsystems now
3496 3503 inherit from BasePrompt.
3497 3504
3498 3505 * tools/release: updates for windows installer build and tag rpms
3499 3506 with python version (since paths are fixed).
3500 3507
3501 3508 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3502 3509 which will become eventually obsolete. Also fixed the default
3503 3510 prompt_in2 to use \D, so at least new users start with the correct
3504 3511 defaults.
3505 3512 WARNING: Users with existing ipythonrc files will need to apply
3506 3513 this fix manually!
3507 3514
3508 3515 * setup.py: make windows installer (.exe). This is finally the
3509 3516 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3510 3517 which I hadn't included because it required Python 2.3 (or recent
3511 3518 distutils).
3512 3519
3513 3520 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3514 3521 usage of new '\D' escape.
3515 3522
3516 3523 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3517 3524 lacks os.getuid())
3518 3525 (CachedOutput.set_colors): Added the ability to turn coloring
3519 3526 on/off with @colors even for manually defined prompt colors. It
3520 3527 uses a nasty global, but it works safely and via the generic color
3521 3528 handling mechanism.
3522 3529 (Prompt2.__init__): Introduced new escape '\D' for continuation
3523 3530 prompts. It represents the counter ('\#') as dots.
3524 3531 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3525 3532 need to update their ipythonrc files and replace '%n' with '\D' in
3526 3533 their prompt_in2 settings everywhere. Sorry, but there's
3527 3534 otherwise no clean way to get all prompts to properly align. The
3528 3535 ipythonrc shipped with IPython has been updated.
3529 3536
3530 3537 2004-06-07 Fernando Perez <fperez@colorado.edu>
3531 3538
3532 3539 * setup.py (isfile): Pass local_icons option to latex2html, so the
3533 3540 resulting HTML file is self-contained. Thanks to
3534 3541 dryice-AT-liu.com.cn for the tip.
3535 3542
3536 3543 * pysh.py: I created a new profile 'shell', which implements a
3537 3544 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3538 3545 system shell, nor will it become one anytime soon. It's mainly
3539 3546 meant to illustrate the use of the new flexible bash-like prompts.
3540 3547 I guess it could be used by hardy souls for true shell management,
3541 3548 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3542 3549 profile. This uses the InterpreterExec extension provided by
3543 3550 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3544 3551
3545 3552 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3546 3553 auto-align itself with the length of the previous input prompt
3547 3554 (taking into account the invisible color escapes).
3548 3555 (CachedOutput.__init__): Large restructuring of this class. Now
3549 3556 all three prompts (primary1, primary2, output) are proper objects,
3550 3557 managed by the 'parent' CachedOutput class. The code is still a
3551 3558 bit hackish (all prompts share state via a pointer to the cache),
3552 3559 but it's overall far cleaner than before.
3553 3560
3554 3561 * IPython/genutils.py (getoutputerror): modified to add verbose,
3555 3562 debug and header options. This makes the interface of all getout*
3556 3563 functions uniform.
3557 3564 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3558 3565
3559 3566 * IPython/Magic.py (Magic.default_option): added a function to
3560 3567 allow registering default options for any magic command. This
3561 3568 makes it easy to have profiles which customize the magics globally
3562 3569 for a certain use. The values set through this function are
3563 3570 picked up by the parse_options() method, which all magics should
3564 3571 use to parse their options.
3565 3572
3566 3573 * IPython/genutils.py (warn): modified the warnings framework to
3567 3574 use the Term I/O class. I'm trying to slowly unify all of
3568 3575 IPython's I/O operations to pass through Term.
3569 3576
3570 3577 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3571 3578 the secondary prompt to correctly match the length of the primary
3572 3579 one for any prompt. Now multi-line code will properly line up
3573 3580 even for path dependent prompts, such as the new ones available
3574 3581 via the prompt_specials.
3575 3582
3576 3583 2004-06-06 Fernando Perez <fperez@colorado.edu>
3577 3584
3578 3585 * IPython/Prompts.py (prompt_specials): Added the ability to have
3579 3586 bash-like special sequences in the prompts, which get
3580 3587 automatically expanded. Things like hostname, current working
3581 3588 directory and username are implemented already, but it's easy to
3582 3589 add more in the future. Thanks to a patch by W.J. van der Laan
3583 3590 <gnufnork-AT-hetdigitalegat.nl>
3584 3591 (prompt_specials): Added color support for prompt strings, so
3585 3592 users can define arbitrary color setups for their prompts.
3586 3593
3587 3594 2004-06-05 Fernando Perez <fperez@colorado.edu>
3588 3595
3589 3596 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3590 3597 code to load Gary Bishop's readline and configure it
3591 3598 automatically. Thanks to Gary for help on this.
3592 3599
3593 3600 2004-06-01 Fernando Perez <fperez@colorado.edu>
3594 3601
3595 3602 * IPython/Logger.py (Logger.create_log): fix bug for logging
3596 3603 with no filename (previous fix was incomplete).
3597 3604
3598 3605 2004-05-25 Fernando Perez <fperez@colorado.edu>
3599 3606
3600 3607 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3601 3608 parens would get passed to the shell.
3602 3609
3603 3610 2004-05-20 Fernando Perez <fperez@colorado.edu>
3604 3611
3605 3612 * IPython/Magic.py (Magic.magic_prun): changed default profile
3606 3613 sort order to 'time' (the more common profiling need).
3607 3614
3608 3615 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3609 3616 so that source code shown is guaranteed in sync with the file on
3610 3617 disk (also changed in psource). Similar fix to the one for
3611 3618 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3612 3619 <yann.ledu-AT-noos.fr>.
3613 3620
3614 3621 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3615 3622 with a single option would not be correctly parsed. Closes
3616 3623 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3617 3624 introduced in 0.6.0 (on 2004-05-06).
3618 3625
3619 3626 2004-05-13 *** Released version 0.6.0
3620 3627
3621 3628 2004-05-13 Fernando Perez <fperez@colorado.edu>
3622 3629
3623 3630 * debian/: Added debian/ directory to CVS, so that debian support
3624 3631 is publicly accessible. The debian package is maintained by Jack
3625 3632 Moffit <jack-AT-xiph.org>.
3626 3633
3627 3634 * Documentation: included the notes about an ipython-based system
3628 3635 shell (the hypothetical 'pysh') into the new_design.pdf document,
3629 3636 so that these ideas get distributed to users along with the
3630 3637 official documentation.
3631 3638
3632 3639 2004-05-10 Fernando Perez <fperez@colorado.edu>
3633 3640
3634 3641 * IPython/Logger.py (Logger.create_log): fix recently introduced
3635 3642 bug (misindented line) where logstart would fail when not given an
3636 3643 explicit filename.
3637 3644
3638 3645 2004-05-09 Fernando Perez <fperez@colorado.edu>
3639 3646
3640 3647 * IPython/Magic.py (Magic.parse_options): skip system call when
3641 3648 there are no options to look for. Faster, cleaner for the common
3642 3649 case.
3643 3650
3644 3651 * Documentation: many updates to the manual: describing Windows
3645 3652 support better, Gnuplot updates, credits, misc small stuff. Also
3646 3653 updated the new_design doc a bit.
3647 3654
3648 3655 2004-05-06 *** Released version 0.6.0.rc1
3649 3656
3650 3657 2004-05-06 Fernando Perez <fperez@colorado.edu>
3651 3658
3652 3659 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3653 3660 operations to use the vastly more efficient list/''.join() method.
3654 3661 (FormattedTB.text): Fix
3655 3662 http://www.scipy.net/roundup/ipython/issue12 - exception source
3656 3663 extract not updated after reload. Thanks to Mike Salib
3657 3664 <msalib-AT-mit.edu> for pinning the source of the problem.
3658 3665 Fortunately, the solution works inside ipython and doesn't require
3659 3666 any changes to python proper.
3660 3667
3661 3668 * IPython/Magic.py (Magic.parse_options): Improved to process the
3662 3669 argument list as a true shell would (by actually using the
3663 3670 underlying system shell). This way, all @magics automatically get
3664 3671 shell expansion for variables. Thanks to a comment by Alex
3665 3672 Schmolck.
3666 3673
3667 3674 2004-04-04 Fernando Perez <fperez@colorado.edu>
3668 3675
3669 3676 * IPython/iplib.py (InteractiveShell.interact): Added a special
3670 3677 trap for a debugger quit exception, which is basically impossible
3671 3678 to handle by normal mechanisms, given what pdb does to the stack.
3672 3679 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3673 3680
3674 3681 2004-04-03 Fernando Perez <fperez@colorado.edu>
3675 3682
3676 3683 * IPython/genutils.py (Term): Standardized the names of the Term
3677 3684 class streams to cin/cout/cerr, following C++ naming conventions
3678 3685 (I can't use in/out/err because 'in' is not a valid attribute
3679 3686 name).
3680 3687
3681 3688 * IPython/iplib.py (InteractiveShell.interact): don't increment
3682 3689 the prompt if there's no user input. By Daniel 'Dang' Griffith
3683 3690 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3684 3691 Francois Pinard.
3685 3692
3686 3693 2004-04-02 Fernando Perez <fperez@colorado.edu>
3687 3694
3688 3695 * IPython/genutils.py (Stream.__init__): Modified to survive at
3689 3696 least importing in contexts where stdin/out/err aren't true file
3690 3697 objects, such as PyCrust (they lack fileno() and mode). However,
3691 3698 the recovery facilities which rely on these things existing will
3692 3699 not work.
3693 3700
3694 3701 2004-04-01 Fernando Perez <fperez@colorado.edu>
3695 3702
3696 3703 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3697 3704 use the new getoutputerror() function, so it properly
3698 3705 distinguishes stdout/err.
3699 3706
3700 3707 * IPython/genutils.py (getoutputerror): added a function to
3701 3708 capture separately the standard output and error of a command.
3702 3709 After a comment from dang on the mailing lists. This code is
3703 3710 basically a modified version of commands.getstatusoutput(), from
3704 3711 the standard library.
3705 3712
3706 3713 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3707 3714 '!!' as a special syntax (shorthand) to access @sx.
3708 3715
3709 3716 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3710 3717 command and return its output as a list split on '\n'.
3711 3718
3712 3719 2004-03-31 Fernando Perez <fperez@colorado.edu>
3713 3720
3714 3721 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3715 3722 method to dictionaries used as FakeModule instances if they lack
3716 3723 it. At least pydoc in python2.3 breaks for runtime-defined
3717 3724 functions without this hack. At some point I need to _really_
3718 3725 understand what FakeModule is doing, because it's a gross hack.
3719 3726 But it solves Arnd's problem for now...
3720 3727
3721 3728 2004-02-27 Fernando Perez <fperez@colorado.edu>
3722 3729
3723 3730 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3724 3731 mode would behave erratically. Also increased the number of
3725 3732 possible logs in rotate mod to 999. Thanks to Rod Holland
3726 3733 <rhh@StructureLABS.com> for the report and fixes.
3727 3734
3728 3735 2004-02-26 Fernando Perez <fperez@colorado.edu>
3729 3736
3730 3737 * IPython/genutils.py (page): Check that the curses module really
3731 3738 has the initscr attribute before trying to use it. For some
3732 3739 reason, the Solaris curses module is missing this. I think this
3733 3740 should be considered a Solaris python bug, but I'm not sure.
3734 3741
3735 3742 2004-01-17 Fernando Perez <fperez@colorado.edu>
3736 3743
3737 3744 * IPython/genutils.py (Stream.__init__): Changes to try to make
3738 3745 ipython robust against stdin/out/err being closed by the user.
3739 3746 This is 'user error' (and blocks a normal python session, at least
3740 3747 the stdout case). However, Ipython should be able to survive such
3741 3748 instances of abuse as gracefully as possible. To simplify the
3742 3749 coding and maintain compatibility with Gary Bishop's Term
3743 3750 contributions, I've made use of classmethods for this. I think
3744 3751 this introduces a dependency on python 2.2.
3745 3752
3746 3753 2004-01-13 Fernando Perez <fperez@colorado.edu>
3747 3754
3748 3755 * IPython/numutils.py (exp_safe): simplified the code a bit and
3749 3756 removed the need for importing the kinds module altogether.
3750 3757
3751 3758 2004-01-06 Fernando Perez <fperez@colorado.edu>
3752 3759
3753 3760 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3754 3761 a magic function instead, after some community feedback. No
3755 3762 special syntax will exist for it, but its name is deliberately
3756 3763 very short.
3757 3764
3758 3765 2003-12-20 Fernando Perez <fperez@colorado.edu>
3759 3766
3760 3767 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3761 3768 new functionality, to automagically assign the result of a shell
3762 3769 command to a variable. I'll solicit some community feedback on
3763 3770 this before making it permanent.
3764 3771
3765 3772 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3766 3773 requested about callables for which inspect couldn't obtain a
3767 3774 proper argspec. Thanks to a crash report sent by Etienne
3768 3775 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3769 3776
3770 3777 2003-12-09 Fernando Perez <fperez@colorado.edu>
3771 3778
3772 3779 * IPython/genutils.py (page): patch for the pager to work across
3773 3780 various versions of Windows. By Gary Bishop.
3774 3781
3775 3782 2003-12-04 Fernando Perez <fperez@colorado.edu>
3776 3783
3777 3784 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3778 3785 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3779 3786 While I tested this and it looks ok, there may still be corner
3780 3787 cases I've missed.
3781 3788
3782 3789 2003-12-01 Fernando Perez <fperez@colorado.edu>
3783 3790
3784 3791 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3785 3792 where a line like 'p,q=1,2' would fail because the automagic
3786 3793 system would be triggered for @p.
3787 3794
3788 3795 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3789 3796 cleanups, code unmodified.
3790 3797
3791 3798 * IPython/genutils.py (Term): added a class for IPython to handle
3792 3799 output. In most cases it will just be a proxy for stdout/err, but
3793 3800 having this allows modifications to be made for some platforms,
3794 3801 such as handling color escapes under Windows. All of this code
3795 3802 was contributed by Gary Bishop, with minor modifications by me.
3796 3803 The actual changes affect many files.
3797 3804
3798 3805 2003-11-30 Fernando Perez <fperez@colorado.edu>
3799 3806
3800 3807 * IPython/iplib.py (file_matches): new completion code, courtesy
3801 3808 of Jeff Collins. This enables filename completion again under
3802 3809 python 2.3, which disabled it at the C level.
3803 3810
3804 3811 2003-11-11 Fernando Perez <fperez@colorado.edu>
3805 3812
3806 3813 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3807 3814 for Numeric.array(map(...)), but often convenient.
3808 3815
3809 3816 2003-11-05 Fernando Perez <fperez@colorado.edu>
3810 3817
3811 3818 * IPython/numutils.py (frange): Changed a call from int() to
3812 3819 int(round()) to prevent a problem reported with arange() in the
3813 3820 numpy list.
3814 3821
3815 3822 2003-10-06 Fernando Perez <fperez@colorado.edu>
3816 3823
3817 3824 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3818 3825 prevent crashes if sys lacks an argv attribute (it happens with
3819 3826 embedded interpreters which build a bare-bones sys module).
3820 3827 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3821 3828
3822 3829 2003-09-24 Fernando Perez <fperez@colorado.edu>
3823 3830
3824 3831 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3825 3832 to protect against poorly written user objects where __getattr__
3826 3833 raises exceptions other than AttributeError. Thanks to a bug
3827 3834 report by Oliver Sander <osander-AT-gmx.de>.
3828 3835
3829 3836 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3830 3837 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3831 3838
3832 3839 2003-09-09 Fernando Perez <fperez@colorado.edu>
3833 3840
3834 3841 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3835 3842 unpacking a list whith a callable as first element would
3836 3843 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3837 3844 Collins.
3838 3845
3839 3846 2003-08-25 *** Released version 0.5.0
3840 3847
3841 3848 2003-08-22 Fernando Perez <fperez@colorado.edu>
3842 3849
3843 3850 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3844 3851 improperly defined user exceptions. Thanks to feedback from Mark
3845 3852 Russell <mrussell-AT-verio.net>.
3846 3853
3847 3854 2003-08-20 Fernando Perez <fperez@colorado.edu>
3848 3855
3849 3856 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3850 3857 printing so that it would print multi-line string forms starting
3851 3858 with a new line. This way the formatting is better respected for
3852 3859 objects which work hard to make nice string forms.
3853 3860
3854 3861 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3855 3862 autocall would overtake data access for objects with both
3856 3863 __getitem__ and __call__.
3857 3864
3858 3865 2003-08-19 *** Released version 0.5.0-rc1
3859 3866
3860 3867 2003-08-19 Fernando Perez <fperez@colorado.edu>
3861 3868
3862 3869 * IPython/deep_reload.py (load_tail): single tiny change here
3863 3870 seems to fix the long-standing bug of dreload() failing to work
3864 3871 for dotted names. But this module is pretty tricky, so I may have
3865 3872 missed some subtlety. Needs more testing!.
3866 3873
3867 3874 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3868 3875 exceptions which have badly implemented __str__ methods.
3869 3876 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3870 3877 which I've been getting reports about from Python 2.3 users. I
3871 3878 wish I had a simple test case to reproduce the problem, so I could
3872 3879 either write a cleaner workaround or file a bug report if
3873 3880 necessary.
3874 3881
3875 3882 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3876 3883 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3877 3884 a bug report by Tjabo Kloppenburg.
3878 3885
3879 3886 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3880 3887 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3881 3888 seems rather unstable. Thanks to a bug report by Tjabo
3882 3889 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3883 3890
3884 3891 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3885 3892 this out soon because of the critical fixes in the inner loop for
3886 3893 generators.
3887 3894
3888 3895 * IPython/Magic.py (Magic.getargspec): removed. This (and
3889 3896 _get_def) have been obsoleted by OInspect for a long time, I
3890 3897 hadn't noticed that they were dead code.
3891 3898 (Magic._ofind): restored _ofind functionality for a few literals
3892 3899 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3893 3900 for things like "hello".capitalize?, since that would require a
3894 3901 potentially dangerous eval() again.
3895 3902
3896 3903 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3897 3904 logic a bit more to clean up the escapes handling and minimize the
3898 3905 use of _ofind to only necessary cases. The interactive 'feel' of
3899 3906 IPython should have improved quite a bit with the changes in
3900 3907 _prefilter and _ofind (besides being far safer than before).
3901 3908
3902 3909 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3903 3910 obscure, never reported). Edit would fail to find the object to
3904 3911 edit under some circumstances.
3905 3912 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3906 3913 which were causing double-calling of generators. Those eval calls
3907 3914 were _very_ dangerous, since code with side effects could be
3908 3915 triggered. As they say, 'eval is evil'... These were the
3909 3916 nastiest evals in IPython. Besides, _ofind is now far simpler,
3910 3917 and it should also be quite a bit faster. Its use of inspect is
3911 3918 also safer, so perhaps some of the inspect-related crashes I've
3912 3919 seen lately with Python 2.3 might be taken care of. That will
3913 3920 need more testing.
3914 3921
3915 3922 2003-08-17 Fernando Perez <fperez@colorado.edu>
3916 3923
3917 3924 * IPython/iplib.py (InteractiveShell._prefilter): significant
3918 3925 simplifications to the logic for handling user escapes. Faster
3919 3926 and simpler code.
3920 3927
3921 3928 2003-08-14 Fernando Perez <fperez@colorado.edu>
3922 3929
3923 3930 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3924 3931 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3925 3932 but it should be quite a bit faster. And the recursive version
3926 3933 generated O(log N) intermediate storage for all rank>1 arrays,
3927 3934 even if they were contiguous.
3928 3935 (l1norm): Added this function.
3929 3936 (norm): Added this function for arbitrary norms (including
3930 3937 l-infinity). l1 and l2 are still special cases for convenience
3931 3938 and speed.
3932 3939
3933 3940 2003-08-03 Fernando Perez <fperez@colorado.edu>
3934 3941
3935 3942 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3936 3943 exceptions, which now raise PendingDeprecationWarnings in Python
3937 3944 2.3. There were some in Magic and some in Gnuplot2.
3938 3945
3939 3946 2003-06-30 Fernando Perez <fperez@colorado.edu>
3940 3947
3941 3948 * IPython/genutils.py (page): modified to call curses only for
3942 3949 terminals where TERM=='xterm'. After problems under many other
3943 3950 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3944 3951
3945 3952 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3946 3953 would be triggered when readline was absent. This was just an old
3947 3954 debugging statement I'd forgotten to take out.
3948 3955
3949 3956 2003-06-20 Fernando Perez <fperez@colorado.edu>
3950 3957
3951 3958 * IPython/genutils.py (clock): modified to return only user time
3952 3959 (not counting system time), after a discussion on scipy. While
3953 3960 system time may be a useful quantity occasionally, it may much
3954 3961 more easily be skewed by occasional swapping or other similar
3955 3962 activity.
3956 3963
3957 3964 2003-06-05 Fernando Perez <fperez@colorado.edu>
3958 3965
3959 3966 * IPython/numutils.py (identity): new function, for building
3960 3967 arbitrary rank Kronecker deltas (mostly backwards compatible with
3961 3968 Numeric.identity)
3962 3969
3963 3970 2003-06-03 Fernando Perez <fperez@colorado.edu>
3964 3971
3965 3972 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3966 3973 arguments passed to magics with spaces, to allow trailing '\' to
3967 3974 work normally (mainly for Windows users).
3968 3975
3969 3976 2003-05-29 Fernando Perez <fperez@colorado.edu>
3970 3977
3971 3978 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3972 3979 instead of pydoc.help. This fixes a bizarre behavior where
3973 3980 printing '%s' % locals() would trigger the help system. Now
3974 3981 ipython behaves like normal python does.
3975 3982
3976 3983 Note that if one does 'from pydoc import help', the bizarre
3977 3984 behavior returns, but this will also happen in normal python, so
3978 3985 it's not an ipython bug anymore (it has to do with how pydoc.help
3979 3986 is implemented).
3980 3987
3981 3988 2003-05-22 Fernando Perez <fperez@colorado.edu>
3982 3989
3983 3990 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3984 3991 return [] instead of None when nothing matches, also match to end
3985 3992 of line. Patch by Gary Bishop.
3986 3993
3987 3994 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3988 3995 protection as before, for files passed on the command line. This
3989 3996 prevents the CrashHandler from kicking in if user files call into
3990 3997 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3991 3998 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3992 3999
3993 4000 2003-05-20 *** Released version 0.4.0
3994 4001
3995 4002 2003-05-20 Fernando Perez <fperez@colorado.edu>
3996 4003
3997 4004 * setup.py: added support for manpages. It's a bit hackish b/c of
3998 4005 a bug in the way the bdist_rpm distutils target handles gzipped
3999 4006 manpages, but it works. After a patch by Jack.
4000 4007
4001 4008 2003-05-19 Fernando Perez <fperez@colorado.edu>
4002 4009
4003 4010 * IPython/numutils.py: added a mockup of the kinds module, since
4004 4011 it was recently removed from Numeric. This way, numutils will
4005 4012 work for all users even if they are missing kinds.
4006 4013
4007 4014 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4008 4015 failure, which can occur with SWIG-wrapped extensions. After a
4009 4016 crash report from Prabhu.
4010 4017
4011 4018 2003-05-16 Fernando Perez <fperez@colorado.edu>
4012 4019
4013 4020 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4014 4021 protect ipython from user code which may call directly
4015 4022 sys.excepthook (this looks like an ipython crash to the user, even
4016 4023 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4017 4024 This is especially important to help users of WxWindows, but may
4018 4025 also be useful in other cases.
4019 4026
4020 4027 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4021 4028 an optional tb_offset to be specified, and to preserve exception
4022 4029 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4023 4030
4024 4031 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4025 4032
4026 4033 2003-05-15 Fernando Perez <fperez@colorado.edu>
4027 4034
4028 4035 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4029 4036 installing for a new user under Windows.
4030 4037
4031 4038 2003-05-12 Fernando Perez <fperez@colorado.edu>
4032 4039
4033 4040 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4034 4041 handler for Emacs comint-based lines. Currently it doesn't do
4035 4042 much (but importantly, it doesn't update the history cache). In
4036 4043 the future it may be expanded if Alex needs more functionality
4037 4044 there.
4038 4045
4039 4046 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4040 4047 info to crash reports.
4041 4048
4042 4049 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4043 4050 just like Python's -c. Also fixed crash with invalid -color
4044 4051 option value at startup. Thanks to Will French
4045 4052 <wfrench-AT-bestweb.net> for the bug report.
4046 4053
4047 4054 2003-05-09 Fernando Perez <fperez@colorado.edu>
4048 4055
4049 4056 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4050 4057 to EvalDict (it's a mapping, after all) and simplified its code
4051 4058 quite a bit, after a nice discussion on c.l.py where Gustavo
4052 4059 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4053 4060
4054 4061 2003-04-30 Fernando Perez <fperez@colorado.edu>
4055 4062
4056 4063 * IPython/genutils.py (timings_out): modified it to reduce its
4057 4064 overhead in the common reps==1 case.
4058 4065
4059 4066 2003-04-29 Fernando Perez <fperez@colorado.edu>
4060 4067
4061 4068 * IPython/genutils.py (timings_out): Modified to use the resource
4062 4069 module, which avoids the wraparound problems of time.clock().
4063 4070
4064 4071 2003-04-17 *** Released version 0.2.15pre4
4065 4072
4066 4073 2003-04-17 Fernando Perez <fperez@colorado.edu>
4067 4074
4068 4075 * setup.py (scriptfiles): Split windows-specific stuff over to a
4069 4076 separate file, in an attempt to have a Windows GUI installer.
4070 4077 That didn't work, but part of the groundwork is done.
4071 4078
4072 4079 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4073 4080 indent/unindent with 4 spaces. Particularly useful in combination
4074 4081 with the new auto-indent option.
4075 4082
4076 4083 2003-04-16 Fernando Perez <fperez@colorado.edu>
4077 4084
4078 4085 * IPython/Magic.py: various replacements of self.rc for
4079 4086 self.shell.rc. A lot more remains to be done to fully disentangle
4080 4087 this class from the main Shell class.
4081 4088
4082 4089 * IPython/GnuplotRuntime.py: added checks for mouse support so
4083 4090 that we don't try to enable it if the current gnuplot doesn't
4084 4091 really support it. Also added checks so that we don't try to
4085 4092 enable persist under Windows (where Gnuplot doesn't recognize the
4086 4093 option).
4087 4094
4088 4095 * IPython/iplib.py (InteractiveShell.interact): Added optional
4089 4096 auto-indenting code, after a patch by King C. Shu
4090 4097 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4091 4098 get along well with pasting indented code. If I ever figure out
4092 4099 how to make that part go well, it will become on by default.
4093 4100
4094 4101 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4095 4102 crash ipython if there was an unmatched '%' in the user's prompt
4096 4103 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4097 4104
4098 4105 * IPython/iplib.py (InteractiveShell.interact): removed the
4099 4106 ability to ask the user whether he wants to crash or not at the
4100 4107 'last line' exception handler. Calling functions at that point
4101 4108 changes the stack, and the error reports would have incorrect
4102 4109 tracebacks.
4103 4110
4104 4111 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4105 4112 pass through a peger a pretty-printed form of any object. After a
4106 4113 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4107 4114
4108 4115 2003-04-14 Fernando Perez <fperez@colorado.edu>
4109 4116
4110 4117 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4111 4118 all files in ~ would be modified at first install (instead of
4112 4119 ~/.ipython). This could be potentially disastrous, as the
4113 4120 modification (make line-endings native) could damage binary files.
4114 4121
4115 4122 2003-04-10 Fernando Perez <fperez@colorado.edu>
4116 4123
4117 4124 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4118 4125 handle only lines which are invalid python. This now means that
4119 4126 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4120 4127 for the bug report.
4121 4128
4122 4129 2003-04-01 Fernando Perez <fperez@colorado.edu>
4123 4130
4124 4131 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4125 4132 where failing to set sys.last_traceback would crash pdb.pm().
4126 4133 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4127 4134 report.
4128 4135
4129 4136 2003-03-25 Fernando Perez <fperez@colorado.edu>
4130 4137
4131 4138 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4132 4139 before printing it (it had a lot of spurious blank lines at the
4133 4140 end).
4134 4141
4135 4142 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4136 4143 output would be sent 21 times! Obviously people don't use this
4137 4144 too often, or I would have heard about it.
4138 4145
4139 4146 2003-03-24 Fernando Perez <fperez@colorado.edu>
4140 4147
4141 4148 * setup.py (scriptfiles): renamed the data_files parameter from
4142 4149 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4143 4150 for the patch.
4144 4151
4145 4152 2003-03-20 Fernando Perez <fperez@colorado.edu>
4146 4153
4147 4154 * IPython/genutils.py (error): added error() and fatal()
4148 4155 functions.
4149 4156
4150 4157 2003-03-18 *** Released version 0.2.15pre3
4151 4158
4152 4159 2003-03-18 Fernando Perez <fperez@colorado.edu>
4153 4160
4154 4161 * setupext/install_data_ext.py
4155 4162 (install_data_ext.initialize_options): Class contributed by Jack
4156 4163 Moffit for fixing the old distutils hack. He is sending this to
4157 4164 the distutils folks so in the future we may not need it as a
4158 4165 private fix.
4159 4166
4160 4167 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4161 4168 changes for Debian packaging. See his patch for full details.
4162 4169 The old distutils hack of making the ipythonrc* files carry a
4163 4170 bogus .py extension is gone, at last. Examples were moved to a
4164 4171 separate subdir under doc/, and the separate executable scripts
4165 4172 now live in their own directory. Overall a great cleanup. The
4166 4173 manual was updated to use the new files, and setup.py has been
4167 4174 fixed for this setup.
4168 4175
4169 4176 * IPython/PyColorize.py (Parser.usage): made non-executable and
4170 4177 created a pycolor wrapper around it to be included as a script.
4171 4178
4172 4179 2003-03-12 *** Released version 0.2.15pre2
4173 4180
4174 4181 2003-03-12 Fernando Perez <fperez@colorado.edu>
4175 4182
4176 4183 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4177 4184 long-standing problem with garbage characters in some terminals.
4178 4185 The issue was really that the \001 and \002 escapes must _only_ be
4179 4186 passed to input prompts (which call readline), but _never_ to
4180 4187 normal text to be printed on screen. I changed ColorANSI to have
4181 4188 two classes: TermColors and InputTermColors, each with the
4182 4189 appropriate escapes for input prompts or normal text. The code in
4183 4190 Prompts.py got slightly more complicated, but this very old and
4184 4191 annoying bug is finally fixed.
4185 4192
4186 4193 All the credit for nailing down the real origin of this problem
4187 4194 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4188 4195 *Many* thanks to him for spending quite a bit of effort on this.
4189 4196
4190 4197 2003-03-05 *** Released version 0.2.15pre1
4191 4198
4192 4199 2003-03-03 Fernando Perez <fperez@colorado.edu>
4193 4200
4194 4201 * IPython/FakeModule.py: Moved the former _FakeModule to a
4195 4202 separate file, because it's also needed by Magic (to fix a similar
4196 4203 pickle-related issue in @run).
4197 4204
4198 4205 2003-03-02 Fernando Perez <fperez@colorado.edu>
4199 4206
4200 4207 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4201 4208 the autocall option at runtime.
4202 4209 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4203 4210 across Magic.py to start separating Magic from InteractiveShell.
4204 4211 (Magic._ofind): Fixed to return proper namespace for dotted
4205 4212 names. Before, a dotted name would always return 'not currently
4206 4213 defined', because it would find the 'parent'. s.x would be found,
4207 4214 but since 'x' isn't defined by itself, it would get confused.
4208 4215 (Magic.magic_run): Fixed pickling problems reported by Ralf
4209 4216 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4210 4217 that I'd used when Mike Heeter reported similar issues at the
4211 4218 top-level, but now for @run. It boils down to injecting the
4212 4219 namespace where code is being executed with something that looks
4213 4220 enough like a module to fool pickle.dump(). Since a pickle stores
4214 4221 a named reference to the importing module, we need this for
4215 4222 pickles to save something sensible.
4216 4223
4217 4224 * IPython/ipmaker.py (make_IPython): added an autocall option.
4218 4225
4219 4226 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4220 4227 the auto-eval code. Now autocalling is an option, and the code is
4221 4228 also vastly safer. There is no more eval() involved at all.
4222 4229
4223 4230 2003-03-01 Fernando Perez <fperez@colorado.edu>
4224 4231
4225 4232 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4226 4233 dict with named keys instead of a tuple.
4227 4234
4228 4235 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4229 4236
4230 4237 * setup.py (make_shortcut): Fixed message about directories
4231 4238 created during Windows installation (the directories were ok, just
4232 4239 the printed message was misleading). Thanks to Chris Liechti
4233 4240 <cliechti-AT-gmx.net> for the heads up.
4234 4241
4235 4242 2003-02-21 Fernando Perez <fperez@colorado.edu>
4236 4243
4237 4244 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4238 4245 of ValueError exception when checking for auto-execution. This
4239 4246 one is raised by things like Numeric arrays arr.flat when the
4240 4247 array is non-contiguous.
4241 4248
4242 4249 2003-01-31 Fernando Perez <fperez@colorado.edu>
4243 4250
4244 4251 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4245 4252 not return any value at all (even though the command would get
4246 4253 executed).
4247 4254 (xsys): Flush stdout right after printing the command to ensure
4248 4255 proper ordering of commands and command output in the total
4249 4256 output.
4250 4257 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4251 4258 system/getoutput as defaults. The old ones are kept for
4252 4259 compatibility reasons, so no code which uses this library needs
4253 4260 changing.
4254 4261
4255 4262 2003-01-27 *** Released version 0.2.14
4256 4263
4257 4264 2003-01-25 Fernando Perez <fperez@colorado.edu>
4258 4265
4259 4266 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4260 4267 functions defined in previous edit sessions could not be re-edited
4261 4268 (because the temp files were immediately removed). Now temp files
4262 4269 are removed only at IPython's exit.
4263 4270 (Magic.magic_run): Improved @run to perform shell-like expansions
4264 4271 on its arguments (~users and $VARS). With this, @run becomes more
4265 4272 like a normal command-line.
4266 4273
4267 4274 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4268 4275 bugs related to embedding and cleaned up that code. A fairly
4269 4276 important one was the impossibility to access the global namespace
4270 4277 through the embedded IPython (only local variables were visible).
4271 4278
4272 4279 2003-01-14 Fernando Perez <fperez@colorado.edu>
4273 4280
4274 4281 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4275 4282 auto-calling to be a bit more conservative. Now it doesn't get
4276 4283 triggered if any of '!=()<>' are in the rest of the input line, to
4277 4284 allow comparing callables. Thanks to Alex for the heads up.
4278 4285
4279 4286 2003-01-07 Fernando Perez <fperez@colorado.edu>
4280 4287
4281 4288 * IPython/genutils.py (page): fixed estimation of the number of
4282 4289 lines in a string to be paged to simply count newlines. This
4283 4290 prevents over-guessing due to embedded escape sequences. A better
4284 4291 long-term solution would involve stripping out the control chars
4285 4292 for the count, but it's potentially so expensive I just don't
4286 4293 think it's worth doing.
4287 4294
4288 4295 2002-12-19 *** Released version 0.2.14pre50
4289 4296
4290 4297 2002-12-19 Fernando Perez <fperez@colorado.edu>
4291 4298
4292 4299 * tools/release (version): Changed release scripts to inform
4293 4300 Andrea and build a NEWS file with a list of recent changes.
4294 4301
4295 4302 * IPython/ColorANSI.py (__all__): changed terminal detection
4296 4303 code. Seems to work better for xterms without breaking
4297 4304 konsole. Will need more testing to determine if WinXP and Mac OSX
4298 4305 also work ok.
4299 4306
4300 4307 2002-12-18 *** Released version 0.2.14pre49
4301 4308
4302 4309 2002-12-18 Fernando Perez <fperez@colorado.edu>
4303 4310
4304 4311 * Docs: added new info about Mac OSX, from Andrea.
4305 4312
4306 4313 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4307 4314 allow direct plotting of python strings whose format is the same
4308 4315 of gnuplot data files.
4309 4316
4310 4317 2002-12-16 Fernando Perez <fperez@colorado.edu>
4311 4318
4312 4319 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4313 4320 value of exit question to be acknowledged.
4314 4321
4315 4322 2002-12-03 Fernando Perez <fperez@colorado.edu>
4316 4323
4317 4324 * IPython/ipmaker.py: removed generators, which had been added
4318 4325 by mistake in an earlier debugging run. This was causing trouble
4319 4326 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4320 4327 for pointing this out.
4321 4328
4322 4329 2002-11-17 Fernando Perez <fperez@colorado.edu>
4323 4330
4324 4331 * Manual: updated the Gnuplot section.
4325 4332
4326 4333 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4327 4334 a much better split of what goes in Runtime and what goes in
4328 4335 Interactive.
4329 4336
4330 4337 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4331 4338 being imported from iplib.
4332 4339
4333 4340 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4334 4341 for command-passing. Now the global Gnuplot instance is called
4335 4342 'gp' instead of 'g', which was really a far too fragile and
4336 4343 common name.
4337 4344
4338 4345 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4339 4346 bounding boxes generated by Gnuplot for square plots.
4340 4347
4341 4348 * IPython/genutils.py (popkey): new function added. I should
4342 4349 suggest this on c.l.py as a dict method, it seems useful.
4343 4350
4344 4351 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4345 4352 to transparently handle PostScript generation. MUCH better than
4346 4353 the previous plot_eps/replot_eps (which I removed now). The code
4347 4354 is also fairly clean and well documented now (including
4348 4355 docstrings).
4349 4356
4350 4357 2002-11-13 Fernando Perez <fperez@colorado.edu>
4351 4358
4352 4359 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4353 4360 (inconsistent with options).
4354 4361
4355 4362 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4356 4363 manually disabled, I don't know why. Fixed it.
4357 4364 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4358 4365 eps output.
4359 4366
4360 4367 2002-11-12 Fernando Perez <fperez@colorado.edu>
4361 4368
4362 4369 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4363 4370 don't propagate up to caller. Fixes crash reported by François
4364 4371 Pinard.
4365 4372
4366 4373 2002-11-09 Fernando Perez <fperez@colorado.edu>
4367 4374
4368 4375 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4369 4376 history file for new users.
4370 4377 (make_IPython): fixed bug where initial install would leave the
4371 4378 user running in the .ipython dir.
4372 4379 (make_IPython): fixed bug where config dir .ipython would be
4373 4380 created regardless of the given -ipythondir option. Thanks to Cory
4374 4381 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4375 4382
4376 4383 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4377 4384 type confirmations. Will need to use it in all of IPython's code
4378 4385 consistently.
4379 4386
4380 4387 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4381 4388 context to print 31 lines instead of the default 5. This will make
4382 4389 the crash reports extremely detailed in case the problem is in
4383 4390 libraries I don't have access to.
4384 4391
4385 4392 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4386 4393 line of defense' code to still crash, but giving users fair
4387 4394 warning. I don't want internal errors to go unreported: if there's
4388 4395 an internal problem, IPython should crash and generate a full
4389 4396 report.
4390 4397
4391 4398 2002-11-08 Fernando Perez <fperez@colorado.edu>
4392 4399
4393 4400 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4394 4401 otherwise uncaught exceptions which can appear if people set
4395 4402 sys.stdout to something badly broken. Thanks to a crash report
4396 4403 from henni-AT-mail.brainbot.com.
4397 4404
4398 4405 2002-11-04 Fernando Perez <fperez@colorado.edu>
4399 4406
4400 4407 * IPython/iplib.py (InteractiveShell.interact): added
4401 4408 __IPYTHON__active to the builtins. It's a flag which goes on when
4402 4409 the interaction starts and goes off again when it stops. This
4403 4410 allows embedding code to detect being inside IPython. Before this
4404 4411 was done via __IPYTHON__, but that only shows that an IPython
4405 4412 instance has been created.
4406 4413
4407 4414 * IPython/Magic.py (Magic.magic_env): I realized that in a
4408 4415 UserDict, instance.data holds the data as a normal dict. So I
4409 4416 modified @env to return os.environ.data instead of rebuilding a
4410 4417 dict by hand.
4411 4418
4412 4419 2002-11-02 Fernando Perez <fperez@colorado.edu>
4413 4420
4414 4421 * IPython/genutils.py (warn): changed so that level 1 prints no
4415 4422 header. Level 2 is now the default (with 'WARNING' header, as
4416 4423 before). I think I tracked all places where changes were needed in
4417 4424 IPython, but outside code using the old level numbering may have
4418 4425 broken.
4419 4426
4420 4427 * IPython/iplib.py (InteractiveShell.runcode): added this to
4421 4428 handle the tracebacks in SystemExit traps correctly. The previous
4422 4429 code (through interact) was printing more of the stack than
4423 4430 necessary, showing IPython internal code to the user.
4424 4431
4425 4432 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4426 4433 default. Now that the default at the confirmation prompt is yes,
4427 4434 it's not so intrusive. François' argument that ipython sessions
4428 4435 tend to be complex enough not to lose them from an accidental C-d,
4429 4436 is a valid one.
4430 4437
4431 4438 * IPython/iplib.py (InteractiveShell.interact): added a
4432 4439 showtraceback() call to the SystemExit trap, and modified the exit
4433 4440 confirmation to have yes as the default.
4434 4441
4435 4442 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4436 4443 this file. It's been gone from the code for a long time, this was
4437 4444 simply leftover junk.
4438 4445
4439 4446 2002-11-01 Fernando Perez <fperez@colorado.edu>
4440 4447
4441 4448 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4442 4449 added. If set, IPython now traps EOF and asks for
4443 4450 confirmation. After a request by François Pinard.
4444 4451
4445 4452 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4446 4453 of @abort, and with a new (better) mechanism for handling the
4447 4454 exceptions.
4448 4455
4449 4456 2002-10-27 Fernando Perez <fperez@colorado.edu>
4450 4457
4451 4458 * IPython/usage.py (__doc__): updated the --help information and
4452 4459 the ipythonrc file to indicate that -log generates
4453 4460 ./ipython.log. Also fixed the corresponding info in @logstart.
4454 4461 This and several other fixes in the manuals thanks to reports by
4455 4462 François Pinard <pinard-AT-iro.umontreal.ca>.
4456 4463
4457 4464 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4458 4465 refer to @logstart (instead of @log, which doesn't exist).
4459 4466
4460 4467 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4461 4468 AttributeError crash. Thanks to Christopher Armstrong
4462 4469 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4463 4470 introduced recently (in 0.2.14pre37) with the fix to the eval
4464 4471 problem mentioned below.
4465 4472
4466 4473 2002-10-17 Fernando Perez <fperez@colorado.edu>
4467 4474
4468 4475 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4469 4476 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4470 4477
4471 4478 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4472 4479 this function to fix a problem reported by Alex Schmolck. He saw
4473 4480 it with list comprehensions and generators, which were getting
4474 4481 called twice. The real problem was an 'eval' call in testing for
4475 4482 automagic which was evaluating the input line silently.
4476 4483
4477 4484 This is a potentially very nasty bug, if the input has side
4478 4485 effects which must not be repeated. The code is much cleaner now,
4479 4486 without any blanket 'except' left and with a regexp test for
4480 4487 actual function names.
4481 4488
4482 4489 But an eval remains, which I'm not fully comfortable with. I just
4483 4490 don't know how to find out if an expression could be a callable in
4484 4491 the user's namespace without doing an eval on the string. However
4485 4492 that string is now much more strictly checked so that no code
4486 4493 slips by, so the eval should only happen for things that can
4487 4494 really be only function/method names.
4488 4495
4489 4496 2002-10-15 Fernando Perez <fperez@colorado.edu>
4490 4497
4491 4498 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4492 4499 OSX information to main manual, removed README_Mac_OSX file from
4493 4500 distribution. Also updated credits for recent additions.
4494 4501
4495 4502 2002-10-10 Fernando Perez <fperez@colorado.edu>
4496 4503
4497 4504 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4498 4505 terminal-related issues. Many thanks to Andrea Riciputi
4499 4506 <andrea.riciputi-AT-libero.it> for writing it.
4500 4507
4501 4508 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4502 4509 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4503 4510
4504 4511 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4505 4512 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4506 4513 <syver-en-AT-online.no> who both submitted patches for this problem.
4507 4514
4508 4515 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4509 4516 global embedding to make sure that things don't overwrite user
4510 4517 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4511 4518
4512 4519 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4513 4520 compatibility. Thanks to Hayden Callow
4514 4521 <h.callow-AT-elec.canterbury.ac.nz>
4515 4522
4516 4523 2002-10-04 Fernando Perez <fperez@colorado.edu>
4517 4524
4518 4525 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4519 4526 Gnuplot.File objects.
4520 4527
4521 4528 2002-07-23 Fernando Perez <fperez@colorado.edu>
4522 4529
4523 4530 * IPython/genutils.py (timing): Added timings() and timing() for
4524 4531 quick access to the most commonly needed data, the execution
4525 4532 times. Old timing() renamed to timings_out().
4526 4533
4527 4534 2002-07-18 Fernando Perez <fperez@colorado.edu>
4528 4535
4529 4536 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4530 4537 bug with nested instances disrupting the parent's tab completion.
4531 4538
4532 4539 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4533 4540 all_completions code to begin the emacs integration.
4534 4541
4535 4542 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4536 4543 argument to allow titling individual arrays when plotting.
4537 4544
4538 4545 2002-07-15 Fernando Perez <fperez@colorado.edu>
4539 4546
4540 4547 * setup.py (make_shortcut): changed to retrieve the value of
4541 4548 'Program Files' directory from the registry (this value changes in
4542 4549 non-english versions of Windows). Thanks to Thomas Fanslau
4543 4550 <tfanslau-AT-gmx.de> for the report.
4544 4551
4545 4552 2002-07-10 Fernando Perez <fperez@colorado.edu>
4546 4553
4547 4554 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4548 4555 a bug in pdb, which crashes if a line with only whitespace is
4549 4556 entered. Bug report submitted to sourceforge.
4550 4557
4551 4558 2002-07-09 Fernando Perez <fperez@colorado.edu>
4552 4559
4553 4560 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4554 4561 reporting exceptions (it's a bug in inspect.py, I just set a
4555 4562 workaround).
4556 4563
4557 4564 2002-07-08 Fernando Perez <fperez@colorado.edu>
4558 4565
4559 4566 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4560 4567 __IPYTHON__ in __builtins__ to show up in user_ns.
4561 4568
4562 4569 2002-07-03 Fernando Perez <fperez@colorado.edu>
4563 4570
4564 4571 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4565 4572 name from @gp_set_instance to @gp_set_default.
4566 4573
4567 4574 * IPython/ipmaker.py (make_IPython): default editor value set to
4568 4575 '0' (a string), to match the rc file. Otherwise will crash when
4569 4576 .strip() is called on it.
4570 4577
4571 4578
4572 4579 2002-06-28 Fernando Perez <fperez@colorado.edu>
4573 4580
4574 4581 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4575 4582 of files in current directory when a file is executed via
4576 4583 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4577 4584
4578 4585 * setup.py (manfiles): fix for rpm builds, submitted by RA
4579 4586 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4580 4587
4581 4588 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4582 4589 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4583 4590 string!). A. Schmolck caught this one.
4584 4591
4585 4592 2002-06-27 Fernando Perez <fperez@colorado.edu>
4586 4593
4587 4594 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4588 4595 defined files at the cmd line. __name__ wasn't being set to
4589 4596 __main__.
4590 4597
4591 4598 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4592 4599 regular lists and tuples besides Numeric arrays.
4593 4600
4594 4601 * IPython/Prompts.py (CachedOutput.__call__): Added output
4595 4602 supression for input ending with ';'. Similar to Mathematica and
4596 4603 Matlab. The _* vars and Out[] list are still updated, just like
4597 4604 Mathematica behaves.
4598 4605
4599 4606 2002-06-25 Fernando Perez <fperez@colorado.edu>
4600 4607
4601 4608 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4602 4609 .ini extensions for profiels under Windows.
4603 4610
4604 4611 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4605 4612 string form. Fix contributed by Alexander Schmolck
4606 4613 <a.schmolck-AT-gmx.net>
4607 4614
4608 4615 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4609 4616 pre-configured Gnuplot instance.
4610 4617
4611 4618 2002-06-21 Fernando Perez <fperez@colorado.edu>
4612 4619
4613 4620 * IPython/numutils.py (exp_safe): new function, works around the
4614 4621 underflow problems in Numeric.
4615 4622 (log2): New fn. Safe log in base 2: returns exact integer answer
4616 4623 for exact integer powers of 2.
4617 4624
4618 4625 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4619 4626 properly.
4620 4627
4621 4628 2002-06-20 Fernando Perez <fperez@colorado.edu>
4622 4629
4623 4630 * IPython/genutils.py (timing): new function like
4624 4631 Mathematica's. Similar to time_test, but returns more info.
4625 4632
4626 4633 2002-06-18 Fernando Perez <fperez@colorado.edu>
4627 4634
4628 4635 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4629 4636 according to Mike Heeter's suggestions.
4630 4637
4631 4638 2002-06-16 Fernando Perez <fperez@colorado.edu>
4632 4639
4633 4640 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4634 4641 system. GnuplotMagic is gone as a user-directory option. New files
4635 4642 make it easier to use all the gnuplot stuff both from external
4636 4643 programs as well as from IPython. Had to rewrite part of
4637 4644 hardcopy() b/c of a strange bug: often the ps files simply don't
4638 4645 get created, and require a repeat of the command (often several
4639 4646 times).
4640 4647
4641 4648 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4642 4649 resolve output channel at call time, so that if sys.stderr has
4643 4650 been redirected by user this gets honored.
4644 4651
4645 4652 2002-06-13 Fernando Perez <fperez@colorado.edu>
4646 4653
4647 4654 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4648 4655 IPShell. Kept a copy with the old names to avoid breaking people's
4649 4656 embedded code.
4650 4657
4651 4658 * IPython/ipython: simplified it to the bare minimum after
4652 4659 Holger's suggestions. Added info about how to use it in
4653 4660 PYTHONSTARTUP.
4654 4661
4655 4662 * IPython/Shell.py (IPythonShell): changed the options passing
4656 4663 from a string with funky %s replacements to a straight list. Maybe
4657 4664 a bit more typing, but it follows sys.argv conventions, so there's
4658 4665 less special-casing to remember.
4659 4666
4660 4667 2002-06-12 Fernando Perez <fperez@colorado.edu>
4661 4668
4662 4669 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4663 4670 command. Thanks to a suggestion by Mike Heeter.
4664 4671 (Magic.magic_pfile): added behavior to look at filenames if given
4665 4672 arg is not a defined object.
4666 4673 (Magic.magic_save): New @save function to save code snippets. Also
4667 4674 a Mike Heeter idea.
4668 4675
4669 4676 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4670 4677 plot() and replot(). Much more convenient now, especially for
4671 4678 interactive use.
4672 4679
4673 4680 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4674 4681 filenames.
4675 4682
4676 4683 2002-06-02 Fernando Perez <fperez@colorado.edu>
4677 4684
4678 4685 * IPython/Struct.py (Struct.__init__): modified to admit
4679 4686 initialization via another struct.
4680 4687
4681 4688 * IPython/genutils.py (SystemExec.__init__): New stateful
4682 4689 interface to xsys and bq. Useful for writing system scripts.
4683 4690
4684 4691 2002-05-30 Fernando Perez <fperez@colorado.edu>
4685 4692
4686 4693 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4687 4694 documents. This will make the user download smaller (it's getting
4688 4695 too big).
4689 4696
4690 4697 2002-05-29 Fernando Perez <fperez@colorado.edu>
4691 4698
4692 4699 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4693 4700 fix problems with shelve and pickle. Seems to work, but I don't
4694 4701 know if corner cases break it. Thanks to Mike Heeter
4695 4702 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4696 4703
4697 4704 2002-05-24 Fernando Perez <fperez@colorado.edu>
4698 4705
4699 4706 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4700 4707 macros having broken.
4701 4708
4702 4709 2002-05-21 Fernando Perez <fperez@colorado.edu>
4703 4710
4704 4711 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4705 4712 introduced logging bug: all history before logging started was
4706 4713 being written one character per line! This came from the redesign
4707 4714 of the input history as a special list which slices to strings,
4708 4715 not to lists.
4709 4716
4710 4717 2002-05-20 Fernando Perez <fperez@colorado.edu>
4711 4718
4712 4719 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4713 4720 be an attribute of all classes in this module. The design of these
4714 4721 classes needs some serious overhauling.
4715 4722
4716 4723 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4717 4724 which was ignoring '_' in option names.
4718 4725
4719 4726 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4720 4727 'Verbose_novars' to 'Context' and made it the new default. It's a
4721 4728 bit more readable and also safer than verbose.
4722 4729
4723 4730 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4724 4731 triple-quoted strings.
4725 4732
4726 4733 * IPython/OInspect.py (__all__): new module exposing the object
4727 4734 introspection facilities. Now the corresponding magics are dummy
4728 4735 wrappers around this. Having this module will make it much easier
4729 4736 to put these functions into our modified pdb.
4730 4737 This new object inspector system uses the new colorizing module,
4731 4738 so source code and other things are nicely syntax highlighted.
4732 4739
4733 4740 2002-05-18 Fernando Perez <fperez@colorado.edu>
4734 4741
4735 4742 * IPython/ColorANSI.py: Split the coloring tools into a separate
4736 4743 module so I can use them in other code easier (they were part of
4737 4744 ultraTB).
4738 4745
4739 4746 2002-05-17 Fernando Perez <fperez@colorado.edu>
4740 4747
4741 4748 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4742 4749 fixed it to set the global 'g' also to the called instance, as
4743 4750 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4744 4751 user's 'g' variables).
4745 4752
4746 4753 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4747 4754 global variables (aliases to _ih,_oh) so that users which expect
4748 4755 In[5] or Out[7] to work aren't unpleasantly surprised.
4749 4756 (InputList.__getslice__): new class to allow executing slices of
4750 4757 input history directly. Very simple class, complements the use of
4751 4758 macros.
4752 4759
4753 4760 2002-05-16 Fernando Perez <fperez@colorado.edu>
4754 4761
4755 4762 * setup.py (docdirbase): make doc directory be just doc/IPython
4756 4763 without version numbers, it will reduce clutter for users.
4757 4764
4758 4765 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4759 4766 execfile call to prevent possible memory leak. See for details:
4760 4767 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4761 4768
4762 4769 2002-05-15 Fernando Perez <fperez@colorado.edu>
4763 4770
4764 4771 * IPython/Magic.py (Magic.magic_psource): made the object
4765 4772 introspection names be more standard: pdoc, pdef, pfile and
4766 4773 psource. They all print/page their output, and it makes
4767 4774 remembering them easier. Kept old names for compatibility as
4768 4775 aliases.
4769 4776
4770 4777 2002-05-14 Fernando Perez <fperez@colorado.edu>
4771 4778
4772 4779 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4773 4780 what the mouse problem was. The trick is to use gnuplot with temp
4774 4781 files and NOT with pipes (for data communication), because having
4775 4782 both pipes and the mouse on is bad news.
4776 4783
4777 4784 2002-05-13 Fernando Perez <fperez@colorado.edu>
4778 4785
4779 4786 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4780 4787 bug. Information would be reported about builtins even when
4781 4788 user-defined functions overrode them.
4782 4789
4783 4790 2002-05-11 Fernando Perez <fperez@colorado.edu>
4784 4791
4785 4792 * IPython/__init__.py (__all__): removed FlexCompleter from
4786 4793 __all__ so that things don't fail in platforms without readline.
4787 4794
4788 4795 2002-05-10 Fernando Perez <fperez@colorado.edu>
4789 4796
4790 4797 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4791 4798 it requires Numeric, effectively making Numeric a dependency for
4792 4799 IPython.
4793 4800
4794 4801 * Released 0.2.13
4795 4802
4796 4803 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4797 4804 profiler interface. Now all the major options from the profiler
4798 4805 module are directly supported in IPython, both for single
4799 4806 expressions (@prun) and for full programs (@run -p).
4800 4807
4801 4808 2002-05-09 Fernando Perez <fperez@colorado.edu>
4802 4809
4803 4810 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4804 4811 magic properly formatted for screen.
4805 4812
4806 4813 * setup.py (make_shortcut): Changed things to put pdf version in
4807 4814 doc/ instead of doc/manual (had to change lyxport a bit).
4808 4815
4809 4816 * IPython/Magic.py (Profile.string_stats): made profile runs go
4810 4817 through pager (they are long and a pager allows searching, saving,
4811 4818 etc.)
4812 4819
4813 4820 2002-05-08 Fernando Perez <fperez@colorado.edu>
4814 4821
4815 4822 * Released 0.2.12
4816 4823
4817 4824 2002-05-06 Fernando Perez <fperez@colorado.edu>
4818 4825
4819 4826 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4820 4827 introduced); 'hist n1 n2' was broken.
4821 4828 (Magic.magic_pdb): added optional on/off arguments to @pdb
4822 4829 (Magic.magic_run): added option -i to @run, which executes code in
4823 4830 the IPython namespace instead of a clean one. Also added @irun as
4824 4831 an alias to @run -i.
4825 4832
4826 4833 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4827 4834 fixed (it didn't really do anything, the namespaces were wrong).
4828 4835
4829 4836 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4830 4837
4831 4838 * IPython/__init__.py (__all__): Fixed package namespace, now
4832 4839 'import IPython' does give access to IPython.<all> as
4833 4840 expected. Also renamed __release__ to Release.
4834 4841
4835 4842 * IPython/Debugger.py (__license__): created new Pdb class which
4836 4843 functions like a drop-in for the normal pdb.Pdb but does NOT
4837 4844 import readline by default. This way it doesn't muck up IPython's
4838 4845 readline handling, and now tab-completion finally works in the
4839 4846 debugger -- sort of. It completes things globally visible, but the
4840 4847 completer doesn't track the stack as pdb walks it. That's a bit
4841 4848 tricky, and I'll have to implement it later.
4842 4849
4843 4850 2002-05-05 Fernando Perez <fperez@colorado.edu>
4844 4851
4845 4852 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4846 4853 magic docstrings when printed via ? (explicit \'s were being
4847 4854 printed).
4848 4855
4849 4856 * IPython/ipmaker.py (make_IPython): fixed namespace
4850 4857 identification bug. Now variables loaded via logs or command-line
4851 4858 files are recognized in the interactive namespace by @who.
4852 4859
4853 4860 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4854 4861 log replay system stemming from the string form of Structs.
4855 4862
4856 4863 * IPython/Magic.py (Macro.__init__): improved macros to properly
4857 4864 handle magic commands in them.
4858 4865 (Magic.magic_logstart): usernames are now expanded so 'logstart
4859 4866 ~/mylog' now works.
4860 4867
4861 4868 * IPython/iplib.py (complete): fixed bug where paths starting with
4862 4869 '/' would be completed as magic names.
4863 4870
4864 4871 2002-05-04 Fernando Perez <fperez@colorado.edu>
4865 4872
4866 4873 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4867 4874 allow running full programs under the profiler's control.
4868 4875
4869 4876 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4870 4877 mode to report exceptions verbosely but without formatting
4871 4878 variables. This addresses the issue of ipython 'freezing' (it's
4872 4879 not frozen, but caught in an expensive formatting loop) when huge
4873 4880 variables are in the context of an exception.
4874 4881 (VerboseTB.text): Added '--->' markers at line where exception was
4875 4882 triggered. Much clearer to read, especially in NoColor modes.
4876 4883
4877 4884 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4878 4885 implemented in reverse when changing to the new parse_options().
4879 4886
4880 4887 2002-05-03 Fernando Perez <fperez@colorado.edu>
4881 4888
4882 4889 * IPython/Magic.py (Magic.parse_options): new function so that
4883 4890 magics can parse options easier.
4884 4891 (Magic.magic_prun): new function similar to profile.run(),
4885 4892 suggested by Chris Hart.
4886 4893 (Magic.magic_cd): fixed behavior so that it only changes if
4887 4894 directory actually is in history.
4888 4895
4889 4896 * IPython/usage.py (__doc__): added information about potential
4890 4897 slowness of Verbose exception mode when there are huge data
4891 4898 structures to be formatted (thanks to Archie Paulson).
4892 4899
4893 4900 * IPython/ipmaker.py (make_IPython): Changed default logging
4894 4901 (when simply called with -log) to use curr_dir/ipython.log in
4895 4902 rotate mode. Fixed crash which was occuring with -log before
4896 4903 (thanks to Jim Boyle).
4897 4904
4898 4905 2002-05-01 Fernando Perez <fperez@colorado.edu>
4899 4906
4900 4907 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4901 4908 was nasty -- though somewhat of a corner case).
4902 4909
4903 4910 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4904 4911 text (was a bug).
4905 4912
4906 4913 2002-04-30 Fernando Perez <fperez@colorado.edu>
4907 4914
4908 4915 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4909 4916 a print after ^D or ^C from the user so that the In[] prompt
4910 4917 doesn't over-run the gnuplot one.
4911 4918
4912 4919 2002-04-29 Fernando Perez <fperez@colorado.edu>
4913 4920
4914 4921 * Released 0.2.10
4915 4922
4916 4923 * IPython/__release__.py (version): get date dynamically.
4917 4924
4918 4925 * Misc. documentation updates thanks to Arnd's comments. Also ran
4919 4926 a full spellcheck on the manual (hadn't been done in a while).
4920 4927
4921 4928 2002-04-27 Fernando Perez <fperez@colorado.edu>
4922 4929
4923 4930 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4924 4931 starting a log in mid-session would reset the input history list.
4925 4932
4926 4933 2002-04-26 Fernando Perez <fperez@colorado.edu>
4927 4934
4928 4935 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4929 4936 all files were being included in an update. Now anything in
4930 4937 UserConfig that matches [A-Za-z]*.py will go (this excludes
4931 4938 __init__.py)
4932 4939
4933 4940 2002-04-25 Fernando Perez <fperez@colorado.edu>
4934 4941
4935 4942 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4936 4943 to __builtins__ so that any form of embedded or imported code can
4937 4944 test for being inside IPython.
4938 4945
4939 4946 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4940 4947 changed to GnuplotMagic because it's now an importable module,
4941 4948 this makes the name follow that of the standard Gnuplot module.
4942 4949 GnuplotMagic can now be loaded at any time in mid-session.
4943 4950
4944 4951 2002-04-24 Fernando Perez <fperez@colorado.edu>
4945 4952
4946 4953 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4947 4954 the globals (IPython has its own namespace) and the
4948 4955 PhysicalQuantity stuff is much better anyway.
4949 4956
4950 4957 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4951 4958 embedding example to standard user directory for
4952 4959 distribution. Also put it in the manual.
4953 4960
4954 4961 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4955 4962 instance as first argument (so it doesn't rely on some obscure
4956 4963 hidden global).
4957 4964
4958 4965 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4959 4966 delimiters. While it prevents ().TAB from working, it allows
4960 4967 completions in open (... expressions. This is by far a more common
4961 4968 case.
4962 4969
4963 4970 2002-04-23 Fernando Perez <fperez@colorado.edu>
4964 4971
4965 4972 * IPython/Extensions/InterpreterPasteInput.py: new
4966 4973 syntax-processing module for pasting lines with >>> or ... at the
4967 4974 start.
4968 4975
4969 4976 * IPython/Extensions/PhysicalQ_Interactive.py
4970 4977 (PhysicalQuantityInteractive.__int__): fixed to work with either
4971 4978 Numeric or math.
4972 4979
4973 4980 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4974 4981 provided profiles. Now we have:
4975 4982 -math -> math module as * and cmath with its own namespace.
4976 4983 -numeric -> Numeric as *, plus gnuplot & grace
4977 4984 -physics -> same as before
4978 4985
4979 4986 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4980 4987 user-defined magics wouldn't be found by @magic if they were
4981 4988 defined as class methods. Also cleaned up the namespace search
4982 4989 logic and the string building (to use %s instead of many repeated
4983 4990 string adds).
4984 4991
4985 4992 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4986 4993 of user-defined magics to operate with class methods (cleaner, in
4987 4994 line with the gnuplot code).
4988 4995
4989 4996 2002-04-22 Fernando Perez <fperez@colorado.edu>
4990 4997
4991 4998 * setup.py: updated dependency list so that manual is updated when
4992 4999 all included files change.
4993 5000
4994 5001 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4995 5002 the delimiter removal option (the fix is ugly right now).
4996 5003
4997 5004 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4998 5005 all of the math profile (quicker loading, no conflict between
4999 5006 g-9.8 and g-gnuplot).
5000 5007
5001 5008 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5002 5009 name of post-mortem files to IPython_crash_report.txt.
5003 5010
5004 5011 * Cleanup/update of the docs. Added all the new readline info and
5005 5012 formatted all lists as 'real lists'.
5006 5013
5007 5014 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5008 5015 tab-completion options, since the full readline parse_and_bind is
5009 5016 now accessible.
5010 5017
5011 5018 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5012 5019 handling of readline options. Now users can specify any string to
5013 5020 be passed to parse_and_bind(), as well as the delimiters to be
5014 5021 removed.
5015 5022 (InteractiveShell.__init__): Added __name__ to the global
5016 5023 namespace so that things like Itpl which rely on its existence
5017 5024 don't crash.
5018 5025 (InteractiveShell._prefilter): Defined the default with a _ so
5019 5026 that prefilter() is easier to override, while the default one
5020 5027 remains available.
5021 5028
5022 5029 2002-04-18 Fernando Perez <fperez@colorado.edu>
5023 5030
5024 5031 * Added information about pdb in the docs.
5025 5032
5026 5033 2002-04-17 Fernando Perez <fperez@colorado.edu>
5027 5034
5028 5035 * IPython/ipmaker.py (make_IPython): added rc_override option to
5029 5036 allow passing config options at creation time which may override
5030 5037 anything set in the config files or command line. This is
5031 5038 particularly useful for configuring embedded instances.
5032 5039
5033 5040 2002-04-15 Fernando Perez <fperez@colorado.edu>
5034 5041
5035 5042 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5036 5043 crash embedded instances because of the input cache falling out of
5037 5044 sync with the output counter.
5038 5045
5039 5046 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5040 5047 mode which calls pdb after an uncaught exception in IPython itself.
5041 5048
5042 5049 2002-04-14 Fernando Perez <fperez@colorado.edu>
5043 5050
5044 5051 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5045 5052 readline, fix it back after each call.
5046 5053
5047 5054 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5048 5055 method to force all access via __call__(), which guarantees that
5049 5056 traceback references are properly deleted.
5050 5057
5051 5058 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5052 5059 improve printing when pprint is in use.
5053 5060
5054 5061 2002-04-13 Fernando Perez <fperez@colorado.edu>
5055 5062
5056 5063 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5057 5064 exceptions aren't caught anymore. If the user triggers one, he
5058 5065 should know why he's doing it and it should go all the way up,
5059 5066 just like any other exception. So now @abort will fully kill the
5060 5067 embedded interpreter and the embedding code (unless that happens
5061 5068 to catch SystemExit).
5062 5069
5063 5070 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5064 5071 and a debugger() method to invoke the interactive pdb debugger
5065 5072 after printing exception information. Also added the corresponding
5066 5073 -pdb option and @pdb magic to control this feature, and updated
5067 5074 the docs. After a suggestion from Christopher Hart
5068 5075 (hart-AT-caltech.edu).
5069 5076
5070 5077 2002-04-12 Fernando Perez <fperez@colorado.edu>
5071 5078
5072 5079 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5073 5080 the exception handlers defined by the user (not the CrashHandler)
5074 5081 so that user exceptions don't trigger an ipython bug report.
5075 5082
5076 5083 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5077 5084 configurable (it should have always been so).
5078 5085
5079 5086 2002-03-26 Fernando Perez <fperez@colorado.edu>
5080 5087
5081 5088 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5082 5089 and there to fix embedding namespace issues. This should all be
5083 5090 done in a more elegant way.
5084 5091
5085 5092 2002-03-25 Fernando Perez <fperez@colorado.edu>
5086 5093
5087 5094 * IPython/genutils.py (get_home_dir): Try to make it work under
5088 5095 win9x also.
5089 5096
5090 5097 2002-03-20 Fernando Perez <fperez@colorado.edu>
5091 5098
5092 5099 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5093 5100 sys.displayhook untouched upon __init__.
5094 5101
5095 5102 2002-03-19 Fernando Perez <fperez@colorado.edu>
5096 5103
5097 5104 * Released 0.2.9 (for embedding bug, basically).
5098 5105
5099 5106 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5100 5107 exceptions so that enclosing shell's state can be restored.
5101 5108
5102 5109 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5103 5110 naming conventions in the .ipython/ dir.
5104 5111
5105 5112 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5106 5113 from delimiters list so filenames with - in them get expanded.
5107 5114
5108 5115 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5109 5116 sys.displayhook not being properly restored after an embedded call.
5110 5117
5111 5118 2002-03-18 Fernando Perez <fperez@colorado.edu>
5112 5119
5113 5120 * Released 0.2.8
5114 5121
5115 5122 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5116 5123 some files weren't being included in a -upgrade.
5117 5124 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5118 5125 on' so that the first tab completes.
5119 5126 (InteractiveShell.handle_magic): fixed bug with spaces around
5120 5127 quotes breaking many magic commands.
5121 5128
5122 5129 * setup.py: added note about ignoring the syntax error messages at
5123 5130 installation.
5124 5131
5125 5132 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5126 5133 streamlining the gnuplot interface, now there's only one magic @gp.
5127 5134
5128 5135 2002-03-17 Fernando Perez <fperez@colorado.edu>
5129 5136
5130 5137 * IPython/UserConfig/magic_gnuplot.py: new name for the
5131 5138 example-magic_pm.py file. Much enhanced system, now with a shell
5132 5139 for communicating directly with gnuplot, one command at a time.
5133 5140
5134 5141 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5135 5142 setting __name__=='__main__'.
5136 5143
5137 5144 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5138 5145 mini-shell for accessing gnuplot from inside ipython. Should
5139 5146 extend it later for grace access too. Inspired by Arnd's
5140 5147 suggestion.
5141 5148
5142 5149 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5143 5150 calling magic functions with () in their arguments. Thanks to Arnd
5144 5151 Baecker for pointing this to me.
5145 5152
5146 5153 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5147 5154 infinitely for integer or complex arrays (only worked with floats).
5148 5155
5149 5156 2002-03-16 Fernando Perez <fperez@colorado.edu>
5150 5157
5151 5158 * setup.py: Merged setup and setup_windows into a single script
5152 5159 which properly handles things for windows users.
5153 5160
5154 5161 2002-03-15 Fernando Perez <fperez@colorado.edu>
5155 5162
5156 5163 * Big change to the manual: now the magics are all automatically
5157 5164 documented. This information is generated from their docstrings
5158 5165 and put in a latex file included by the manual lyx file. This way
5159 5166 we get always up to date information for the magics. The manual
5160 5167 now also has proper version information, also auto-synced.
5161 5168
5162 5169 For this to work, an undocumented --magic_docstrings option was added.
5163 5170
5164 5171 2002-03-13 Fernando Perez <fperez@colorado.edu>
5165 5172
5166 5173 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5167 5174 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5168 5175
5169 5176 2002-03-12 Fernando Perez <fperez@colorado.edu>
5170 5177
5171 5178 * IPython/ultraTB.py (TermColors): changed color escapes again to
5172 5179 fix the (old, reintroduced) line-wrapping bug. Basically, if
5173 5180 \001..\002 aren't given in the color escapes, lines get wrapped
5174 5181 weirdly. But giving those screws up old xterms and emacs terms. So
5175 5182 I added some logic for emacs terms to be ok, but I can't identify old
5176 5183 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5177 5184
5178 5185 2002-03-10 Fernando Perez <fperez@colorado.edu>
5179 5186
5180 5187 * IPython/usage.py (__doc__): Various documentation cleanups and
5181 5188 updates, both in usage docstrings and in the manual.
5182 5189
5183 5190 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5184 5191 handling of caching. Set minimum acceptabe value for having a
5185 5192 cache at 20 values.
5186 5193
5187 5194 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5188 5195 install_first_time function to a method, renamed it and added an
5189 5196 'upgrade' mode. Now people can update their config directory with
5190 5197 a simple command line switch (-upgrade, also new).
5191 5198
5192 5199 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5193 5200 @file (convenient for automagic users under Python >= 2.2).
5194 5201 Removed @files (it seemed more like a plural than an abbrev. of
5195 5202 'file show').
5196 5203
5197 5204 * IPython/iplib.py (install_first_time): Fixed crash if there were
5198 5205 backup files ('~') in .ipython/ install directory.
5199 5206
5200 5207 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5201 5208 system. Things look fine, but these changes are fairly
5202 5209 intrusive. Test them for a few days.
5203 5210
5204 5211 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5205 5212 the prompts system. Now all in/out prompt strings are user
5206 5213 controllable. This is particularly useful for embedding, as one
5207 5214 can tag embedded instances with particular prompts.
5208 5215
5209 5216 Also removed global use of sys.ps1/2, which now allows nested
5210 5217 embeddings without any problems. Added command-line options for
5211 5218 the prompt strings.
5212 5219
5213 5220 2002-03-08 Fernando Perez <fperez@colorado.edu>
5214 5221
5215 5222 * IPython/UserConfig/example-embed-short.py (ipshell): added
5216 5223 example file with the bare minimum code for embedding.
5217 5224
5218 5225 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5219 5226 functionality for the embeddable shell to be activated/deactivated
5220 5227 either globally or at each call.
5221 5228
5222 5229 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5223 5230 rewriting the prompt with '--->' for auto-inputs with proper
5224 5231 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5225 5232 this is handled by the prompts class itself, as it should.
5226 5233
5227 5234 2002-03-05 Fernando Perez <fperez@colorado.edu>
5228 5235
5229 5236 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5230 5237 @logstart to avoid name clashes with the math log function.
5231 5238
5232 5239 * Big updates to X/Emacs section of the manual.
5233 5240
5234 5241 * Removed ipython_emacs. Milan explained to me how to pass
5235 5242 arguments to ipython through Emacs. Some day I'm going to end up
5236 5243 learning some lisp...
5237 5244
5238 5245 2002-03-04 Fernando Perez <fperez@colorado.edu>
5239 5246
5240 5247 * IPython/ipython_emacs: Created script to be used as the
5241 5248 py-python-command Emacs variable so we can pass IPython
5242 5249 parameters. I can't figure out how to tell Emacs directly to pass
5243 5250 parameters to IPython, so a dummy shell script will do it.
5244 5251
5245 5252 Other enhancements made for things to work better under Emacs'
5246 5253 various types of terminals. Many thanks to Milan Zamazal
5247 5254 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5248 5255
5249 5256 2002-03-01 Fernando Perez <fperez@colorado.edu>
5250 5257
5251 5258 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5252 5259 that loading of readline is now optional. This gives better
5253 5260 control to emacs users.
5254 5261
5255 5262 * IPython/ultraTB.py (__date__): Modified color escape sequences
5256 5263 and now things work fine under xterm and in Emacs' term buffers
5257 5264 (though not shell ones). Well, in emacs you get colors, but all
5258 5265 seem to be 'light' colors (no difference between dark and light
5259 5266 ones). But the garbage chars are gone, and also in xterms. It
5260 5267 seems that now I'm using 'cleaner' ansi sequences.
5261 5268
5262 5269 2002-02-21 Fernando Perez <fperez@colorado.edu>
5263 5270
5264 5271 * Released 0.2.7 (mainly to publish the scoping fix).
5265 5272
5266 5273 * IPython/Logger.py (Logger.logstate): added. A corresponding
5267 5274 @logstate magic was created.
5268 5275
5269 5276 * IPython/Magic.py: fixed nested scoping problem under Python
5270 5277 2.1.x (automagic wasn't working).
5271 5278
5272 5279 2002-02-20 Fernando Perez <fperez@colorado.edu>
5273 5280
5274 5281 * Released 0.2.6.
5275 5282
5276 5283 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5277 5284 option so that logs can come out without any headers at all.
5278 5285
5279 5286 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5280 5287 SciPy.
5281 5288
5282 5289 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5283 5290 that embedded IPython calls don't require vars() to be explicitly
5284 5291 passed. Now they are extracted from the caller's frame (code
5285 5292 snatched from Eric Jones' weave). Added better documentation to
5286 5293 the section on embedding and the example file.
5287 5294
5288 5295 * IPython/genutils.py (page): Changed so that under emacs, it just
5289 5296 prints the string. You can then page up and down in the emacs
5290 5297 buffer itself. This is how the builtin help() works.
5291 5298
5292 5299 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5293 5300 macro scoping: macros need to be executed in the user's namespace
5294 5301 to work as if they had been typed by the user.
5295 5302
5296 5303 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5297 5304 execute automatically (no need to type 'exec...'). They then
5298 5305 behave like 'true macros'. The printing system was also modified
5299 5306 for this to work.
5300 5307
5301 5308 2002-02-19 Fernando Perez <fperez@colorado.edu>
5302 5309
5303 5310 * IPython/genutils.py (page_file): new function for paging files
5304 5311 in an OS-independent way. Also necessary for file viewing to work
5305 5312 well inside Emacs buffers.
5306 5313 (page): Added checks for being in an emacs buffer.
5307 5314 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5308 5315 same bug in iplib.
5309 5316
5310 5317 2002-02-18 Fernando Perez <fperez@colorado.edu>
5311 5318
5312 5319 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5313 5320 of readline so that IPython can work inside an Emacs buffer.
5314 5321
5315 5322 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5316 5323 method signatures (they weren't really bugs, but it looks cleaner
5317 5324 and keeps PyChecker happy).
5318 5325
5319 5326 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5320 5327 for implementing various user-defined hooks. Currently only
5321 5328 display is done.
5322 5329
5323 5330 * IPython/Prompts.py (CachedOutput._display): changed display
5324 5331 functions so that they can be dynamically changed by users easily.
5325 5332
5326 5333 * IPython/Extensions/numeric_formats.py (num_display): added an
5327 5334 extension for printing NumPy arrays in flexible manners. It
5328 5335 doesn't do anything yet, but all the structure is in
5329 5336 place. Ultimately the plan is to implement output format control
5330 5337 like in Octave.
5331 5338
5332 5339 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5333 5340 methods are found at run-time by all the automatic machinery.
5334 5341
5335 5342 2002-02-17 Fernando Perez <fperez@colorado.edu>
5336 5343
5337 5344 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5338 5345 whole file a little.
5339 5346
5340 5347 * ToDo: closed this document. Now there's a new_design.lyx
5341 5348 document for all new ideas. Added making a pdf of it for the
5342 5349 end-user distro.
5343 5350
5344 5351 * IPython/Logger.py (Logger.switch_log): Created this to replace
5345 5352 logon() and logoff(). It also fixes a nasty crash reported by
5346 5353 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5347 5354
5348 5355 * IPython/iplib.py (complete): got auto-completion to work with
5349 5356 automagic (I had wanted this for a long time).
5350 5357
5351 5358 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5352 5359 to @file, since file() is now a builtin and clashes with automagic
5353 5360 for @file.
5354 5361
5355 5362 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5356 5363 of this was previously in iplib, which had grown to more than 2000
5357 5364 lines, way too long. No new functionality, but it makes managing
5358 5365 the code a bit easier.
5359 5366
5360 5367 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5361 5368 information to crash reports.
5362 5369
5363 5370 2002-02-12 Fernando Perez <fperez@colorado.edu>
5364 5371
5365 5372 * Released 0.2.5.
5366 5373
5367 5374 2002-02-11 Fernando Perez <fperez@colorado.edu>
5368 5375
5369 5376 * Wrote a relatively complete Windows installer. It puts
5370 5377 everything in place, creates Start Menu entries and fixes the
5371 5378 color issues. Nothing fancy, but it works.
5372 5379
5373 5380 2002-02-10 Fernando Perez <fperez@colorado.edu>
5374 5381
5375 5382 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5376 5383 os.path.expanduser() call so that we can type @run ~/myfile.py and
5377 5384 have thigs work as expected.
5378 5385
5379 5386 * IPython/genutils.py (page): fixed exception handling so things
5380 5387 work both in Unix and Windows correctly. Quitting a pager triggers
5381 5388 an IOError/broken pipe in Unix, and in windows not finding a pager
5382 5389 is also an IOError, so I had to actually look at the return value
5383 5390 of the exception, not just the exception itself. Should be ok now.
5384 5391
5385 5392 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5386 5393 modified to allow case-insensitive color scheme changes.
5387 5394
5388 5395 2002-02-09 Fernando Perez <fperez@colorado.edu>
5389 5396
5390 5397 * IPython/genutils.py (native_line_ends): new function to leave
5391 5398 user config files with os-native line-endings.
5392 5399
5393 5400 * README and manual updates.
5394 5401
5395 5402 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5396 5403 instead of StringType to catch Unicode strings.
5397 5404
5398 5405 * IPython/genutils.py (filefind): fixed bug for paths with
5399 5406 embedded spaces (very common in Windows).
5400 5407
5401 5408 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5402 5409 files under Windows, so that they get automatically associated
5403 5410 with a text editor. Windows makes it a pain to handle
5404 5411 extension-less files.
5405 5412
5406 5413 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5407 5414 warning about readline only occur for Posix. In Windows there's no
5408 5415 way to get readline, so why bother with the warning.
5409 5416
5410 5417 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5411 5418 for __str__ instead of dir(self), since dir() changed in 2.2.
5412 5419
5413 5420 * Ported to Windows! Tested on XP, I suspect it should work fine
5414 5421 on NT/2000, but I don't think it will work on 98 et al. That
5415 5422 series of Windows is such a piece of junk anyway that I won't try
5416 5423 porting it there. The XP port was straightforward, showed a few
5417 5424 bugs here and there (fixed all), in particular some string
5418 5425 handling stuff which required considering Unicode strings (which
5419 5426 Windows uses). This is good, but hasn't been too tested :) No
5420 5427 fancy installer yet, I'll put a note in the manual so people at
5421 5428 least make manually a shortcut.
5422 5429
5423 5430 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5424 5431 into a single one, "colors". This now controls both prompt and
5425 5432 exception color schemes, and can be changed both at startup
5426 5433 (either via command-line switches or via ipythonrc files) and at
5427 5434 runtime, with @colors.
5428 5435 (Magic.magic_run): renamed @prun to @run and removed the old
5429 5436 @run. The two were too similar to warrant keeping both.
5430 5437
5431 5438 2002-02-03 Fernando Perez <fperez@colorado.edu>
5432 5439
5433 5440 * IPython/iplib.py (install_first_time): Added comment on how to
5434 5441 configure the color options for first-time users. Put a <return>
5435 5442 request at the end so that small-terminal users get a chance to
5436 5443 read the startup info.
5437 5444
5438 5445 2002-01-23 Fernando Perez <fperez@colorado.edu>
5439 5446
5440 5447 * IPython/iplib.py (CachedOutput.update): Changed output memory
5441 5448 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5442 5449 input history we still use _i. Did this b/c these variable are
5443 5450 very commonly used in interactive work, so the less we need to
5444 5451 type the better off we are.
5445 5452 (Magic.magic_prun): updated @prun to better handle the namespaces
5446 5453 the file will run in, including a fix for __name__ not being set
5447 5454 before.
5448 5455
5449 5456 2002-01-20 Fernando Perez <fperez@colorado.edu>
5450 5457
5451 5458 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5452 5459 extra garbage for Python 2.2. Need to look more carefully into
5453 5460 this later.
5454 5461
5455 5462 2002-01-19 Fernando Perez <fperez@colorado.edu>
5456 5463
5457 5464 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5458 5465 display SyntaxError exceptions properly formatted when they occur
5459 5466 (they can be triggered by imported code).
5460 5467
5461 5468 2002-01-18 Fernando Perez <fperez@colorado.edu>
5462 5469
5463 5470 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5464 5471 SyntaxError exceptions are reported nicely formatted, instead of
5465 5472 spitting out only offset information as before.
5466 5473 (Magic.magic_prun): Added the @prun function for executing
5467 5474 programs with command line args inside IPython.
5468 5475
5469 5476 2002-01-16 Fernando Perez <fperez@colorado.edu>
5470 5477
5471 5478 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5472 5479 to *not* include the last item given in a range. This brings their
5473 5480 behavior in line with Python's slicing:
5474 5481 a[n1:n2] -> a[n1]...a[n2-1]
5475 5482 It may be a bit less convenient, but I prefer to stick to Python's
5476 5483 conventions *everywhere*, so users never have to wonder.
5477 5484 (Magic.magic_macro): Added @macro function to ease the creation of
5478 5485 macros.
5479 5486
5480 5487 2002-01-05 Fernando Perez <fperez@colorado.edu>
5481 5488
5482 5489 * Released 0.2.4.
5483 5490
5484 5491 * IPython/iplib.py (Magic.magic_pdef):
5485 5492 (InteractiveShell.safe_execfile): report magic lines and error
5486 5493 lines without line numbers so one can easily copy/paste them for
5487 5494 re-execution.
5488 5495
5489 5496 * Updated manual with recent changes.
5490 5497
5491 5498 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5492 5499 docstring printing when class? is called. Very handy for knowing
5493 5500 how to create class instances (as long as __init__ is well
5494 5501 documented, of course :)
5495 5502 (Magic.magic_doc): print both class and constructor docstrings.
5496 5503 (Magic.magic_pdef): give constructor info if passed a class and
5497 5504 __call__ info for callable object instances.
5498 5505
5499 5506 2002-01-04 Fernando Perez <fperez@colorado.edu>
5500 5507
5501 5508 * Made deep_reload() off by default. It doesn't always work
5502 5509 exactly as intended, so it's probably safer to have it off. It's
5503 5510 still available as dreload() anyway, so nothing is lost.
5504 5511
5505 5512 2002-01-02 Fernando Perez <fperez@colorado.edu>
5506 5513
5507 5514 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5508 5515 so I wanted an updated release).
5509 5516
5510 5517 2001-12-27 Fernando Perez <fperez@colorado.edu>
5511 5518
5512 5519 * IPython/iplib.py (InteractiveShell.interact): Added the original
5513 5520 code from 'code.py' for this module in order to change the
5514 5521 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5515 5522 the history cache would break when the user hit Ctrl-C, and
5516 5523 interact() offers no way to add any hooks to it.
5517 5524
5518 5525 2001-12-23 Fernando Perez <fperez@colorado.edu>
5519 5526
5520 5527 * setup.py: added check for 'MANIFEST' before trying to remove
5521 5528 it. Thanks to Sean Reifschneider.
5522 5529
5523 5530 2001-12-22 Fernando Perez <fperez@colorado.edu>
5524 5531
5525 5532 * Released 0.2.2.
5526 5533
5527 5534 * Finished (reasonably) writing the manual. Later will add the
5528 5535 python-standard navigation stylesheets, but for the time being
5529 5536 it's fairly complete. Distribution will include html and pdf
5530 5537 versions.
5531 5538
5532 5539 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5533 5540 (MayaVi author).
5534 5541
5535 5542 2001-12-21 Fernando Perez <fperez@colorado.edu>
5536 5543
5537 5544 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5538 5545 good public release, I think (with the manual and the distutils
5539 5546 installer). The manual can use some work, but that can go
5540 5547 slowly. Otherwise I think it's quite nice for end users. Next
5541 5548 summer, rewrite the guts of it...
5542 5549
5543 5550 * Changed format of ipythonrc files to use whitespace as the
5544 5551 separator instead of an explicit '='. Cleaner.
5545 5552
5546 5553 2001-12-20 Fernando Perez <fperez@colorado.edu>
5547 5554
5548 5555 * Started a manual in LyX. For now it's just a quick merge of the
5549 5556 various internal docstrings and READMEs. Later it may grow into a
5550 5557 nice, full-blown manual.
5551 5558
5552 5559 * Set up a distutils based installer. Installation should now be
5553 5560 trivially simple for end-users.
5554 5561
5555 5562 2001-12-11 Fernando Perez <fperez@colorado.edu>
5556 5563
5557 5564 * Released 0.2.0. First public release, announced it at
5558 5565 comp.lang.python. From now on, just bugfixes...
5559 5566
5560 5567 * Went through all the files, set copyright/license notices and
5561 5568 cleaned up things. Ready for release.
5562 5569
5563 5570 2001-12-10 Fernando Perez <fperez@colorado.edu>
5564 5571
5565 5572 * Changed the first-time installer not to use tarfiles. It's more
5566 5573 robust now and less unix-dependent. Also makes it easier for
5567 5574 people to later upgrade versions.
5568 5575
5569 5576 * Changed @exit to @abort to reflect the fact that it's pretty
5570 5577 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5571 5578 becomes significant only when IPyhton is embedded: in that case,
5572 5579 C-D closes IPython only, but @abort kills the enclosing program
5573 5580 too (unless it had called IPython inside a try catching
5574 5581 SystemExit).
5575 5582
5576 5583 * Created Shell module which exposes the actuall IPython Shell
5577 5584 classes, currently the normal and the embeddable one. This at
5578 5585 least offers a stable interface we won't need to change when
5579 5586 (later) the internals are rewritten. That rewrite will be confined
5580 5587 to iplib and ipmaker, but the Shell interface should remain as is.
5581 5588
5582 5589 * Added embed module which offers an embeddable IPShell object,
5583 5590 useful to fire up IPython *inside* a running program. Great for
5584 5591 debugging or dynamical data analysis.
5585 5592
5586 5593 2001-12-08 Fernando Perez <fperez@colorado.edu>
5587 5594
5588 5595 * Fixed small bug preventing seeing info from methods of defined
5589 5596 objects (incorrect namespace in _ofind()).
5590 5597
5591 5598 * Documentation cleanup. Moved the main usage docstrings to a
5592 5599 separate file, usage.py (cleaner to maintain, and hopefully in the
5593 5600 future some perlpod-like way of producing interactive, man and
5594 5601 html docs out of it will be found).
5595 5602
5596 5603 * Added @profile to see your profile at any time.
5597 5604
5598 5605 * Added @p as an alias for 'print'. It's especially convenient if
5599 5606 using automagic ('p x' prints x).
5600 5607
5601 5608 * Small cleanups and fixes after a pychecker run.
5602 5609
5603 5610 * Changed the @cd command to handle @cd - and @cd -<n> for
5604 5611 visiting any directory in _dh.
5605 5612
5606 5613 * Introduced _dh, a history of visited directories. @dhist prints
5607 5614 it out with numbers.
5608 5615
5609 5616 2001-12-07 Fernando Perez <fperez@colorado.edu>
5610 5617
5611 5618 * Released 0.1.22
5612 5619
5613 5620 * Made initialization a bit more robust against invalid color
5614 5621 options in user input (exit, not traceback-crash).
5615 5622
5616 5623 * Changed the bug crash reporter to write the report only in the
5617 5624 user's .ipython directory. That way IPython won't litter people's
5618 5625 hard disks with crash files all over the place. Also print on
5619 5626 screen the necessary mail command.
5620 5627
5621 5628 * With the new ultraTB, implemented LightBG color scheme for light
5622 5629 background terminals. A lot of people like white backgrounds, so I
5623 5630 guess we should at least give them something readable.
5624 5631
5625 5632 2001-12-06 Fernando Perez <fperez@colorado.edu>
5626 5633
5627 5634 * Modified the structure of ultraTB. Now there's a proper class
5628 5635 for tables of color schemes which allow adding schemes easily and
5629 5636 switching the active scheme without creating a new instance every
5630 5637 time (which was ridiculous). The syntax for creating new schemes
5631 5638 is also cleaner. I think ultraTB is finally done, with a clean
5632 5639 class structure. Names are also much cleaner (now there's proper
5633 5640 color tables, no need for every variable to also have 'color' in
5634 5641 its name).
5635 5642
5636 5643 * Broke down genutils into separate files. Now genutils only
5637 5644 contains utility functions, and classes have been moved to their
5638 5645 own files (they had enough independent functionality to warrant
5639 5646 it): ConfigLoader, OutputTrap, Struct.
5640 5647
5641 5648 2001-12-05 Fernando Perez <fperez@colorado.edu>
5642 5649
5643 5650 * IPython turns 21! Released version 0.1.21, as a candidate for
5644 5651 public consumption. If all goes well, release in a few days.
5645 5652
5646 5653 * Fixed path bug (files in Extensions/ directory wouldn't be found
5647 5654 unless IPython/ was explicitly in sys.path).
5648 5655
5649 5656 * Extended the FlexCompleter class as MagicCompleter to allow
5650 5657 completion of @-starting lines.
5651 5658
5652 5659 * Created __release__.py file as a central repository for release
5653 5660 info that other files can read from.
5654 5661
5655 5662 * Fixed small bug in logging: when logging was turned on in
5656 5663 mid-session, old lines with special meanings (!@?) were being
5657 5664 logged without the prepended comment, which is necessary since
5658 5665 they are not truly valid python syntax. This should make session
5659 5666 restores produce less errors.
5660 5667
5661 5668 * The namespace cleanup forced me to make a FlexCompleter class
5662 5669 which is nothing but a ripoff of rlcompleter, but with selectable
5663 5670 namespace (rlcompleter only works in __main__.__dict__). I'll try
5664 5671 to submit a note to the authors to see if this change can be
5665 5672 incorporated in future rlcompleter releases (Dec.6: done)
5666 5673
5667 5674 * More fixes to namespace handling. It was a mess! Now all
5668 5675 explicit references to __main__.__dict__ are gone (except when
5669 5676 really needed) and everything is handled through the namespace
5670 5677 dicts in the IPython instance. We seem to be getting somewhere
5671 5678 with this, finally...
5672 5679
5673 5680 * Small documentation updates.
5674 5681
5675 5682 * Created the Extensions directory under IPython (with an
5676 5683 __init__.py). Put the PhysicalQ stuff there. This directory should
5677 5684 be used for all special-purpose extensions.
5678 5685
5679 5686 * File renaming:
5680 5687 ipythonlib --> ipmaker
5681 5688 ipplib --> iplib
5682 5689 This makes a bit more sense in terms of what these files actually do.
5683 5690
5684 5691 * Moved all the classes and functions in ipythonlib to ipplib, so
5685 5692 now ipythonlib only has make_IPython(). This will ease up its
5686 5693 splitting in smaller functional chunks later.
5687 5694
5688 5695 * Cleaned up (done, I think) output of @whos. Better column
5689 5696 formatting, and now shows str(var) for as much as it can, which is
5690 5697 typically what one gets with a 'print var'.
5691 5698
5692 5699 2001-12-04 Fernando Perez <fperez@colorado.edu>
5693 5700
5694 5701 * Fixed namespace problems. Now builtin/IPyhton/user names get
5695 5702 properly reported in their namespace. Internal namespace handling
5696 5703 is finally getting decent (not perfect yet, but much better than
5697 5704 the ad-hoc mess we had).
5698 5705
5699 5706 * Removed -exit option. If people just want to run a python
5700 5707 script, that's what the normal interpreter is for. Less
5701 5708 unnecessary options, less chances for bugs.
5702 5709
5703 5710 * Added a crash handler which generates a complete post-mortem if
5704 5711 IPython crashes. This will help a lot in tracking bugs down the
5705 5712 road.
5706 5713
5707 5714 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5708 5715 which were boud to functions being reassigned would bypass the
5709 5716 logger, breaking the sync of _il with the prompt counter. This
5710 5717 would then crash IPython later when a new line was logged.
5711 5718
5712 5719 2001-12-02 Fernando Perez <fperez@colorado.edu>
5713 5720
5714 5721 * Made IPython a package. This means people don't have to clutter
5715 5722 their sys.path with yet another directory. Changed the INSTALL
5716 5723 file accordingly.
5717 5724
5718 5725 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5719 5726 sorts its output (so @who shows it sorted) and @whos formats the
5720 5727 table according to the width of the first column. Nicer, easier to
5721 5728 read. Todo: write a generic table_format() which takes a list of
5722 5729 lists and prints it nicely formatted, with optional row/column
5723 5730 separators and proper padding and justification.
5724 5731
5725 5732 * Released 0.1.20
5726 5733
5727 5734 * Fixed bug in @log which would reverse the inputcache list (a
5728 5735 copy operation was missing).
5729 5736
5730 5737 * Code cleanup. @config was changed to use page(). Better, since
5731 5738 its output is always quite long.
5732 5739
5733 5740 * Itpl is back as a dependency. I was having too many problems
5734 5741 getting the parametric aliases to work reliably, and it's just
5735 5742 easier to code weird string operations with it than playing %()s
5736 5743 games. It's only ~6k, so I don't think it's too big a deal.
5737 5744
5738 5745 * Found (and fixed) a very nasty bug with history. !lines weren't
5739 5746 getting cached, and the out of sync caches would crash
5740 5747 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5741 5748 division of labor a bit better. Bug fixed, cleaner structure.
5742 5749
5743 5750 2001-12-01 Fernando Perez <fperez@colorado.edu>
5744 5751
5745 5752 * Released 0.1.19
5746 5753
5747 5754 * Added option -n to @hist to prevent line number printing. Much
5748 5755 easier to copy/paste code this way.
5749 5756
5750 5757 * Created global _il to hold the input list. Allows easy
5751 5758 re-execution of blocks of code by slicing it (inspired by Janko's
5752 5759 comment on 'macros').
5753 5760
5754 5761 * Small fixes and doc updates.
5755 5762
5756 5763 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5757 5764 much too fragile with automagic. Handles properly multi-line
5758 5765 statements and takes parameters.
5759 5766
5760 5767 2001-11-30 Fernando Perez <fperez@colorado.edu>
5761 5768
5762 5769 * Version 0.1.18 released.
5763 5770
5764 5771 * Fixed nasty namespace bug in initial module imports.
5765 5772
5766 5773 * Added copyright/license notes to all code files (except
5767 5774 DPyGetOpt). For the time being, LGPL. That could change.
5768 5775
5769 5776 * Rewrote a much nicer README, updated INSTALL, cleaned up
5770 5777 ipythonrc-* samples.
5771 5778
5772 5779 * Overall code/documentation cleanup. Basically ready for
5773 5780 release. Only remaining thing: licence decision (LGPL?).
5774 5781
5775 5782 * Converted load_config to a class, ConfigLoader. Now recursion
5776 5783 control is better organized. Doesn't include the same file twice.
5777 5784
5778 5785 2001-11-29 Fernando Perez <fperez@colorado.edu>
5779 5786
5780 5787 * Got input history working. Changed output history variables from
5781 5788 _p to _o so that _i is for input and _o for output. Just cleaner
5782 5789 convention.
5783 5790
5784 5791 * Implemented parametric aliases. This pretty much allows the
5785 5792 alias system to offer full-blown shell convenience, I think.
5786 5793
5787 5794 * Version 0.1.17 released, 0.1.18 opened.
5788 5795
5789 5796 * dot_ipython/ipythonrc (alias): added documentation.
5790 5797 (xcolor): Fixed small bug (xcolors -> xcolor)
5791 5798
5792 5799 * Changed the alias system. Now alias is a magic command to define
5793 5800 aliases just like the shell. Rationale: the builtin magics should
5794 5801 be there for things deeply connected to IPython's
5795 5802 architecture. And this is a much lighter system for what I think
5796 5803 is the really important feature: allowing users to define quickly
5797 5804 magics that will do shell things for them, so they can customize
5798 5805 IPython easily to match their work habits. If someone is really
5799 5806 desperate to have another name for a builtin alias, they can
5800 5807 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5801 5808 works.
5802 5809
5803 5810 2001-11-28 Fernando Perez <fperez@colorado.edu>
5804 5811
5805 5812 * Changed @file so that it opens the source file at the proper
5806 5813 line. Since it uses less, if your EDITOR environment is
5807 5814 configured, typing v will immediately open your editor of choice
5808 5815 right at the line where the object is defined. Not as quick as
5809 5816 having a direct @edit command, but for all intents and purposes it
5810 5817 works. And I don't have to worry about writing @edit to deal with
5811 5818 all the editors, less does that.
5812 5819
5813 5820 * Version 0.1.16 released, 0.1.17 opened.
5814 5821
5815 5822 * Fixed some nasty bugs in the page/page_dumb combo that could
5816 5823 crash IPython.
5817 5824
5818 5825 2001-11-27 Fernando Perez <fperez@colorado.edu>
5819 5826
5820 5827 * Version 0.1.15 released, 0.1.16 opened.
5821 5828
5822 5829 * Finally got ? and ?? to work for undefined things: now it's
5823 5830 possible to type {}.get? and get information about the get method
5824 5831 of dicts, or os.path? even if only os is defined (so technically
5825 5832 os.path isn't). Works at any level. For example, after import os,
5826 5833 os?, os.path?, os.path.abspath? all work. This is great, took some
5827 5834 work in _ofind.
5828 5835
5829 5836 * Fixed more bugs with logging. The sanest way to do it was to add
5830 5837 to @log a 'mode' parameter. Killed two in one shot (this mode
5831 5838 option was a request of Janko's). I think it's finally clean
5832 5839 (famous last words).
5833 5840
5834 5841 * Added a page_dumb() pager which does a decent job of paging on
5835 5842 screen, if better things (like less) aren't available. One less
5836 5843 unix dependency (someday maybe somebody will port this to
5837 5844 windows).
5838 5845
5839 5846 * Fixed problem in magic_log: would lock of logging out if log
5840 5847 creation failed (because it would still think it had succeeded).
5841 5848
5842 5849 * Improved the page() function using curses to auto-detect screen
5843 5850 size. Now it can make a much better decision on whether to print
5844 5851 or page a string. Option screen_length was modified: a value 0
5845 5852 means auto-detect, and that's the default now.
5846 5853
5847 5854 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5848 5855 go out. I'll test it for a few days, then talk to Janko about
5849 5856 licences and announce it.
5850 5857
5851 5858 * Fixed the length of the auto-generated ---> prompt which appears
5852 5859 for auto-parens and auto-quotes. Getting this right isn't trivial,
5853 5860 with all the color escapes, different prompt types and optional
5854 5861 separators. But it seems to be working in all the combinations.
5855 5862
5856 5863 2001-11-26 Fernando Perez <fperez@colorado.edu>
5857 5864
5858 5865 * Wrote a regexp filter to get option types from the option names
5859 5866 string. This eliminates the need to manually keep two duplicate
5860 5867 lists.
5861 5868
5862 5869 * Removed the unneeded check_option_names. Now options are handled
5863 5870 in a much saner manner and it's easy to visually check that things
5864 5871 are ok.
5865 5872
5866 5873 * Updated version numbers on all files I modified to carry a
5867 5874 notice so Janko and Nathan have clear version markers.
5868 5875
5869 5876 * Updated docstring for ultraTB with my changes. I should send
5870 5877 this to Nathan.
5871 5878
5872 5879 * Lots of small fixes. Ran everything through pychecker again.
5873 5880
5874 5881 * Made loading of deep_reload an cmd line option. If it's not too
5875 5882 kosher, now people can just disable it. With -nodeep_reload it's
5876 5883 still available as dreload(), it just won't overwrite reload().
5877 5884
5878 5885 * Moved many options to the no| form (-opt and -noopt
5879 5886 accepted). Cleaner.
5880 5887
5881 5888 * Changed magic_log so that if called with no parameters, it uses
5882 5889 'rotate' mode. That way auto-generated logs aren't automatically
5883 5890 over-written. For normal logs, now a backup is made if it exists
5884 5891 (only 1 level of backups). A new 'backup' mode was added to the
5885 5892 Logger class to support this. This was a request by Janko.
5886 5893
5887 5894 * Added @logoff/@logon to stop/restart an active log.
5888 5895
5889 5896 * Fixed a lot of bugs in log saving/replay. It was pretty
5890 5897 broken. Now special lines (!@,/) appear properly in the command
5891 5898 history after a log replay.
5892 5899
5893 5900 * Tried and failed to implement full session saving via pickle. My
5894 5901 idea was to pickle __main__.__dict__, but modules can't be
5895 5902 pickled. This would be a better alternative to replaying logs, but
5896 5903 seems quite tricky to get to work. Changed -session to be called
5897 5904 -logplay, which more accurately reflects what it does. And if we
5898 5905 ever get real session saving working, -session is now available.
5899 5906
5900 5907 * Implemented color schemes for prompts also. As for tracebacks,
5901 5908 currently only NoColor and Linux are supported. But now the
5902 5909 infrastructure is in place, based on a generic ColorScheme
5903 5910 class. So writing and activating new schemes both for the prompts
5904 5911 and the tracebacks should be straightforward.
5905 5912
5906 5913 * Version 0.1.13 released, 0.1.14 opened.
5907 5914
5908 5915 * Changed handling of options for output cache. Now counter is
5909 5916 hardwired starting at 1 and one specifies the maximum number of
5910 5917 entries *in the outcache* (not the max prompt counter). This is
5911 5918 much better, since many statements won't increase the cache
5912 5919 count. It also eliminated some confusing options, now there's only
5913 5920 one: cache_size.
5914 5921
5915 5922 * Added 'alias' magic function and magic_alias option in the
5916 5923 ipythonrc file. Now the user can easily define whatever names he
5917 5924 wants for the magic functions without having to play weird
5918 5925 namespace games. This gives IPython a real shell-like feel.
5919 5926
5920 5927 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5921 5928 @ or not).
5922 5929
5923 5930 This was one of the last remaining 'visible' bugs (that I know
5924 5931 of). I think if I can clean up the session loading so it works
5925 5932 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5926 5933 about licensing).
5927 5934
5928 5935 2001-11-25 Fernando Perez <fperez@colorado.edu>
5929 5936
5930 5937 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5931 5938 there's a cleaner distinction between what ? and ?? show.
5932 5939
5933 5940 * Added screen_length option. Now the user can define his own
5934 5941 screen size for page() operations.
5935 5942
5936 5943 * Implemented magic shell-like functions with automatic code
5937 5944 generation. Now adding another function is just a matter of adding
5938 5945 an entry to a dict, and the function is dynamically generated at
5939 5946 run-time. Python has some really cool features!
5940 5947
5941 5948 * Renamed many options to cleanup conventions a little. Now all
5942 5949 are lowercase, and only underscores where needed. Also in the code
5943 5950 option name tables are clearer.
5944 5951
5945 5952 * Changed prompts a little. Now input is 'In [n]:' instead of
5946 5953 'In[n]:='. This allows it the numbers to be aligned with the
5947 5954 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5948 5955 Python (it was a Mathematica thing). The '...' continuation prompt
5949 5956 was also changed a little to align better.
5950 5957
5951 5958 * Fixed bug when flushing output cache. Not all _p<n> variables
5952 5959 exist, so their deletion needs to be wrapped in a try:
5953 5960
5954 5961 * Figured out how to properly use inspect.formatargspec() (it
5955 5962 requires the args preceded by *). So I removed all the code from
5956 5963 _get_pdef in Magic, which was just replicating that.
5957 5964
5958 5965 * Added test to prefilter to allow redefining magic function names
5959 5966 as variables. This is ok, since the @ form is always available,
5960 5967 but whe should allow the user to define a variable called 'ls' if
5961 5968 he needs it.
5962 5969
5963 5970 * Moved the ToDo information from README into a separate ToDo.
5964 5971
5965 5972 * General code cleanup and small bugfixes. I think it's close to a
5966 5973 state where it can be released, obviously with a big 'beta'
5967 5974 warning on it.
5968 5975
5969 5976 * Got the magic function split to work. Now all magics are defined
5970 5977 in a separate class. It just organizes things a bit, and now
5971 5978 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5972 5979 was too long).
5973 5980
5974 5981 * Changed @clear to @reset to avoid potential confusions with
5975 5982 the shell command clear. Also renamed @cl to @clear, which does
5976 5983 exactly what people expect it to from their shell experience.
5977 5984
5978 5985 Added a check to the @reset command (since it's so
5979 5986 destructive, it's probably a good idea to ask for confirmation).
5980 5987 But now reset only works for full namespace resetting. Since the
5981 5988 del keyword is already there for deleting a few specific
5982 5989 variables, I don't see the point of having a redundant magic
5983 5990 function for the same task.
5984 5991
5985 5992 2001-11-24 Fernando Perez <fperez@colorado.edu>
5986 5993
5987 5994 * Updated the builtin docs (esp. the ? ones).
5988 5995
5989 5996 * Ran all the code through pychecker. Not terribly impressed with
5990 5997 it: lots of spurious warnings and didn't really find anything of
5991 5998 substance (just a few modules being imported and not used).
5992 5999
5993 6000 * Implemented the new ultraTB functionality into IPython. New
5994 6001 option: xcolors. This chooses color scheme. xmode now only selects
5995 6002 between Plain and Verbose. Better orthogonality.
5996 6003
5997 6004 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5998 6005 mode and color scheme for the exception handlers. Now it's
5999 6006 possible to have the verbose traceback with no coloring.
6000 6007
6001 6008 2001-11-23 Fernando Perez <fperez@colorado.edu>
6002 6009
6003 6010 * Version 0.1.12 released, 0.1.13 opened.
6004 6011
6005 6012 * Removed option to set auto-quote and auto-paren escapes by
6006 6013 user. The chances of breaking valid syntax are just too high. If
6007 6014 someone *really* wants, they can always dig into the code.
6008 6015
6009 6016 * Made prompt separators configurable.
6010 6017
6011 6018 2001-11-22 Fernando Perez <fperez@colorado.edu>
6012 6019
6013 6020 * Small bugfixes in many places.
6014 6021
6015 6022 * Removed the MyCompleter class from ipplib. It seemed redundant
6016 6023 with the C-p,C-n history search functionality. Less code to
6017 6024 maintain.
6018 6025
6019 6026 * Moved all the original ipython.py code into ipythonlib.py. Right
6020 6027 now it's just one big dump into a function called make_IPython, so
6021 6028 no real modularity has been gained. But at least it makes the
6022 6029 wrapper script tiny, and since ipythonlib is a module, it gets
6023 6030 compiled and startup is much faster.
6024 6031
6025 6032 This is a reasobably 'deep' change, so we should test it for a
6026 6033 while without messing too much more with the code.
6027 6034
6028 6035 2001-11-21 Fernando Perez <fperez@colorado.edu>
6029 6036
6030 6037 * Version 0.1.11 released, 0.1.12 opened for further work.
6031 6038
6032 6039 * Removed dependency on Itpl. It was only needed in one place. It
6033 6040 would be nice if this became part of python, though. It makes life
6034 6041 *a lot* easier in some cases.
6035 6042
6036 6043 * Simplified the prefilter code a bit. Now all handlers are
6037 6044 expected to explicitly return a value (at least a blank string).
6038 6045
6039 6046 * Heavy edits in ipplib. Removed the help system altogether. Now
6040 6047 obj?/?? is used for inspecting objects, a magic @doc prints
6041 6048 docstrings, and full-blown Python help is accessed via the 'help'
6042 6049 keyword. This cleans up a lot of code (less to maintain) and does
6043 6050 the job. Since 'help' is now a standard Python component, might as
6044 6051 well use it and remove duplicate functionality.
6045 6052
6046 6053 Also removed the option to use ipplib as a standalone program. By
6047 6054 now it's too dependent on other parts of IPython to function alone.
6048 6055
6049 6056 * Fixed bug in genutils.pager. It would crash if the pager was
6050 6057 exited immediately after opening (broken pipe).
6051 6058
6052 6059 * Trimmed down the VerboseTB reporting a little. The header is
6053 6060 much shorter now and the repeated exception arguments at the end
6054 6061 have been removed. For interactive use the old header seemed a bit
6055 6062 excessive.
6056 6063
6057 6064 * Fixed small bug in output of @whos for variables with multi-word
6058 6065 types (only first word was displayed).
6059 6066
6060 6067 2001-11-17 Fernando Perez <fperez@colorado.edu>
6061 6068
6062 6069 * Version 0.1.10 released, 0.1.11 opened for further work.
6063 6070
6064 6071 * Modified dirs and friends. dirs now *returns* the stack (not
6065 6072 prints), so one can manipulate it as a variable. Convenient to
6066 6073 travel along many directories.
6067 6074
6068 6075 * Fixed bug in magic_pdef: would only work with functions with
6069 6076 arguments with default values.
6070 6077
6071 6078 2001-11-14 Fernando Perez <fperez@colorado.edu>
6072 6079
6073 6080 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6074 6081 example with IPython. Various other minor fixes and cleanups.
6075 6082
6076 6083 * Version 0.1.9 released, 0.1.10 opened for further work.
6077 6084
6078 6085 * Added sys.path to the list of directories searched in the
6079 6086 execfile= option. It used to be the current directory and the
6080 6087 user's IPYTHONDIR only.
6081 6088
6082 6089 2001-11-13 Fernando Perez <fperez@colorado.edu>
6083 6090
6084 6091 * Reinstated the raw_input/prefilter separation that Janko had
6085 6092 initially. This gives a more convenient setup for extending the
6086 6093 pre-processor from the outside: raw_input always gets a string,
6087 6094 and prefilter has to process it. We can then redefine prefilter
6088 6095 from the outside and implement extensions for special
6089 6096 purposes.
6090 6097
6091 6098 Today I got one for inputting PhysicalQuantity objects
6092 6099 (from Scientific) without needing any function calls at
6093 6100 all. Extremely convenient, and it's all done as a user-level
6094 6101 extension (no IPython code was touched). Now instead of:
6095 6102 a = PhysicalQuantity(4.2,'m/s**2')
6096 6103 one can simply say
6097 6104 a = 4.2 m/s**2
6098 6105 or even
6099 6106 a = 4.2 m/s^2
6100 6107
6101 6108 I use this, but it's also a proof of concept: IPython really is
6102 6109 fully user-extensible, even at the level of the parsing of the
6103 6110 command line. It's not trivial, but it's perfectly doable.
6104 6111
6105 6112 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6106 6113 the problem of modules being loaded in the inverse order in which
6107 6114 they were defined in
6108 6115
6109 6116 * Version 0.1.8 released, 0.1.9 opened for further work.
6110 6117
6111 6118 * Added magics pdef, source and file. They respectively show the
6112 6119 definition line ('prototype' in C), source code and full python
6113 6120 file for any callable object. The object inspector oinfo uses
6114 6121 these to show the same information.
6115 6122
6116 6123 * Version 0.1.7 released, 0.1.8 opened for further work.
6117 6124
6118 6125 * Separated all the magic functions into a class called Magic. The
6119 6126 InteractiveShell class was becoming too big for Xemacs to handle
6120 6127 (de-indenting a line would lock it up for 10 seconds while it
6121 6128 backtracked on the whole class!)
6122 6129
6123 6130 FIXME: didn't work. It can be done, but right now namespaces are
6124 6131 all messed up. Do it later (reverted it for now, so at least
6125 6132 everything works as before).
6126 6133
6127 6134 * Got the object introspection system (magic_oinfo) working! I
6128 6135 think this is pretty much ready for release to Janko, so he can
6129 6136 test it for a while and then announce it. Pretty much 100% of what
6130 6137 I wanted for the 'phase 1' release is ready. Happy, tired.
6131 6138
6132 6139 2001-11-12 Fernando Perez <fperez@colorado.edu>
6133 6140
6134 6141 * Version 0.1.6 released, 0.1.7 opened for further work.
6135 6142
6136 6143 * Fixed bug in printing: it used to test for truth before
6137 6144 printing, so 0 wouldn't print. Now checks for None.
6138 6145
6139 6146 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6140 6147 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6141 6148 reaches by hand into the outputcache. Think of a better way to do
6142 6149 this later.
6143 6150
6144 6151 * Various small fixes thanks to Nathan's comments.
6145 6152
6146 6153 * Changed magic_pprint to magic_Pprint. This way it doesn't
6147 6154 collide with pprint() and the name is consistent with the command
6148 6155 line option.
6149 6156
6150 6157 * Changed prompt counter behavior to be fully like
6151 6158 Mathematica's. That is, even input that doesn't return a result
6152 6159 raises the prompt counter. The old behavior was kind of confusing
6153 6160 (getting the same prompt number several times if the operation
6154 6161 didn't return a result).
6155 6162
6156 6163 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6157 6164
6158 6165 * Fixed -Classic mode (wasn't working anymore).
6159 6166
6160 6167 * Added colored prompts using Nathan's new code. Colors are
6161 6168 currently hardwired, they can be user-configurable. For
6162 6169 developers, they can be chosen in file ipythonlib.py, at the
6163 6170 beginning of the CachedOutput class def.
6164 6171
6165 6172 2001-11-11 Fernando Perez <fperez@colorado.edu>
6166 6173
6167 6174 * Version 0.1.5 released, 0.1.6 opened for further work.
6168 6175
6169 6176 * Changed magic_env to *return* the environment as a dict (not to
6170 6177 print it). This way it prints, but it can also be processed.
6171 6178
6172 6179 * Added Verbose exception reporting to interactive
6173 6180 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6174 6181 traceback. Had to make some changes to the ultraTB file. This is
6175 6182 probably the last 'big' thing in my mental todo list. This ties
6176 6183 in with the next entry:
6177 6184
6178 6185 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6179 6186 has to specify is Plain, Color or Verbose for all exception
6180 6187 handling.
6181 6188
6182 6189 * Removed ShellServices option. All this can really be done via
6183 6190 the magic system. It's easier to extend, cleaner and has automatic
6184 6191 namespace protection and documentation.
6185 6192
6186 6193 2001-11-09 Fernando Perez <fperez@colorado.edu>
6187 6194
6188 6195 * Fixed bug in output cache flushing (missing parameter to
6189 6196 __init__). Other small bugs fixed (found using pychecker).
6190 6197
6191 6198 * Version 0.1.4 opened for bugfixing.
6192 6199
6193 6200 2001-11-07 Fernando Perez <fperez@colorado.edu>
6194 6201
6195 6202 * Version 0.1.3 released, mainly because of the raw_input bug.
6196 6203
6197 6204 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6198 6205 and when testing for whether things were callable, a call could
6199 6206 actually be made to certain functions. They would get called again
6200 6207 once 'really' executed, with a resulting double call. A disaster
6201 6208 in many cases (list.reverse() would never work!).
6202 6209
6203 6210 * Removed prefilter() function, moved its code to raw_input (which
6204 6211 after all was just a near-empty caller for prefilter). This saves
6205 6212 a function call on every prompt, and simplifies the class a tiny bit.
6206 6213
6207 6214 * Fix _ip to __ip name in magic example file.
6208 6215
6209 6216 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6210 6217 work with non-gnu versions of tar.
6211 6218
6212 6219 2001-11-06 Fernando Perez <fperez@colorado.edu>
6213 6220
6214 6221 * Version 0.1.2. Just to keep track of the recent changes.
6215 6222
6216 6223 * Fixed nasty bug in output prompt routine. It used to check 'if
6217 6224 arg != None...'. Problem is, this fails if arg implements a
6218 6225 special comparison (__cmp__) which disallows comparing to
6219 6226 None. Found it when trying to use the PhysicalQuantity module from
6220 6227 ScientificPython.
6221 6228
6222 6229 2001-11-05 Fernando Perez <fperez@colorado.edu>
6223 6230
6224 6231 * Also added dirs. Now the pushd/popd/dirs family functions
6225 6232 basically like the shell, with the added convenience of going home
6226 6233 when called with no args.
6227 6234
6228 6235 * pushd/popd slightly modified to mimic shell behavior more
6229 6236 closely.
6230 6237
6231 6238 * Added env,pushd,popd from ShellServices as magic functions. I
6232 6239 think the cleanest will be to port all desired functions from
6233 6240 ShellServices as magics and remove ShellServices altogether. This
6234 6241 will provide a single, clean way of adding functionality
6235 6242 (shell-type or otherwise) to IP.
6236 6243
6237 6244 2001-11-04 Fernando Perez <fperez@colorado.edu>
6238 6245
6239 6246 * Added .ipython/ directory to sys.path. This way users can keep
6240 6247 customizations there and access them via import.
6241 6248
6242 6249 2001-11-03 Fernando Perez <fperez@colorado.edu>
6243 6250
6244 6251 * Opened version 0.1.1 for new changes.
6245 6252
6246 6253 * Changed version number to 0.1.0: first 'public' release, sent to
6247 6254 Nathan and Janko.
6248 6255
6249 6256 * Lots of small fixes and tweaks.
6250 6257
6251 6258 * Minor changes to whos format. Now strings are shown, snipped if
6252 6259 too long.
6253 6260
6254 6261 * Changed ShellServices to work on __main__ so they show up in @who
6255 6262
6256 6263 * Help also works with ? at the end of a line:
6257 6264 ?sin and sin?
6258 6265 both produce the same effect. This is nice, as often I use the
6259 6266 tab-complete to find the name of a method, but I used to then have
6260 6267 to go to the beginning of the line to put a ? if I wanted more
6261 6268 info. Now I can just add the ? and hit return. Convenient.
6262 6269
6263 6270 2001-11-02 Fernando Perez <fperez@colorado.edu>
6264 6271
6265 6272 * Python version check (>=2.1) added.
6266 6273
6267 6274 * Added LazyPython documentation. At this point the docs are quite
6268 6275 a mess. A cleanup is in order.
6269 6276
6270 6277 * Auto-installer created. For some bizarre reason, the zipfiles
6271 6278 module isn't working on my system. So I made a tar version
6272 6279 (hopefully the command line options in various systems won't kill
6273 6280 me).
6274 6281
6275 6282 * Fixes to Struct in genutils. Now all dictionary-like methods are
6276 6283 protected (reasonably).
6277 6284
6278 6285 * Added pager function to genutils and changed ? to print usage
6279 6286 note through it (it was too long).
6280 6287
6281 6288 * Added the LazyPython functionality. Works great! I changed the
6282 6289 auto-quote escape to ';', it's on home row and next to '. But
6283 6290 both auto-quote and auto-paren (still /) escapes are command-line
6284 6291 parameters.
6285 6292
6286 6293
6287 6294 2001-11-01 Fernando Perez <fperez@colorado.edu>
6288 6295
6289 6296 * Version changed to 0.0.7. Fairly large change: configuration now
6290 6297 is all stored in a directory, by default .ipython. There, all
6291 6298 config files have normal looking names (not .names)
6292 6299
6293 6300 * Version 0.0.6 Released first to Lucas and Archie as a test
6294 6301 run. Since it's the first 'semi-public' release, change version to
6295 6302 > 0.0.6 for any changes now.
6296 6303
6297 6304 * Stuff I had put in the ipplib.py changelog:
6298 6305
6299 6306 Changes to InteractiveShell:
6300 6307
6301 6308 - Made the usage message a parameter.
6302 6309
6303 6310 - Require the name of the shell variable to be given. It's a bit
6304 6311 of a hack, but allows the name 'shell' not to be hardwired in the
6305 6312 magic (@) handler, which is problematic b/c it requires
6306 6313 polluting the global namespace with 'shell'. This in turn is
6307 6314 fragile: if a user redefines a variable called shell, things
6308 6315 break.
6309 6316
6310 6317 - magic @: all functions available through @ need to be defined
6311 6318 as magic_<name>, even though they can be called simply as
6312 6319 @<name>. This allows the special command @magic to gather
6313 6320 information automatically about all existing magic functions,
6314 6321 even if they are run-time user extensions, by parsing the shell
6315 6322 instance __dict__ looking for special magic_ names.
6316 6323
6317 6324 - mainloop: added *two* local namespace parameters. This allows
6318 6325 the class to differentiate between parameters which were there
6319 6326 before and after command line initialization was processed. This
6320 6327 way, later @who can show things loaded at startup by the
6321 6328 user. This trick was necessary to make session saving/reloading
6322 6329 really work: ideally after saving/exiting/reloading a session,
6323 6330 *everything* should look the same, including the output of @who. I
6324 6331 was only able to make this work with this double namespace
6325 6332 trick.
6326 6333
6327 6334 - added a header to the logfile which allows (almost) full
6328 6335 session restoring.
6329 6336
6330 6337 - prepend lines beginning with @ or !, with a and log
6331 6338 them. Why? !lines: may be useful to know what you did @lines:
6332 6339 they may affect session state. So when restoring a session, at
6333 6340 least inform the user of their presence. I couldn't quite get
6334 6341 them to properly re-execute, but at least the user is warned.
6335 6342
6336 6343 * Started ChangeLog.
@@ -1,479 +1,480 b''
1 1 ;;; ipython.el --- Adds support for IPython to python-mode.el
2 2
3 3 ;; Copyright (C) 2002, 2003, 2004, 2005 Alexander Schmolck
4 4 ;; Author: Alexander Schmolck
5 5 ;; Keywords: ipython python languages oop
6 6 ;; URL: http://ipython.scipy.org
7 7 ;; Compatibility: Emacs21, XEmacs21
8 8 ;; FIXME: #$@! INPUT RING
9 (defconst ipython-version "$Revision: 1851 $"
9 (defconst ipython-version "$Revision: 2154 $"
10 10 "VC version number.")
11 11
12 12 ;;; Commentary
13 13 ;; This library makes all the functionality python-mode has when running with
14 14 ;; the normal python-interpreter available for ipython, too. It also enables a
15 15 ;; persistent py-shell command history across sessions (if you exit python
16 16 ;; with C-d in py-shell) and defines the command `ipython-to-doctest', which
17 17 ;; can be used to convert bits of a ipython session into something that can be
18 18 ;; used for doctests. To install, put this file somewhere in your emacs
19 19 ;; `load-path' [1] and add the following line to your ~/.emacs file (the first
20 20 ;; line only needed if the default (``"ipython"``) is wrong)::
21 21 ;;
22 22 ;; (setq ipython-command "/SOME-PATH/ipython")
23 23 ;; (require 'ipython)
24 24 ;;
25 25 ;; Ipython will be set as the default python shell, but only if the ipython
26 26 ;; executable is in the path. For ipython sessions autocompletion with <tab>
27 27 ;; is also enabled (experimental feature!). Please also note that all the
28 28 ;; terminal functions in py-shell are handled by emacs's comint, **not** by
29 29 ;; (i)python, so importing readline etc. will have 0 effect.
30 30 ;;
31 31 ;; To start an interactive ipython session run `py-shell' with ``M-x py-shell``
32 32 ;; (or the default keybinding ``C-c C-!``).
33 33 ;;
34 34 ;; NOTE: This mode is currently somewhat alpha and although I hope that it
35 35 ;; will work fine for most cases, doing certain things (like the
36 36 ;; autocompletion and a decent scheme to switch between python interpreters)
37 37 ;; properly will also require changes to ipython that will likely have to wait
38 38 ;; for a larger rewrite scheduled some time in the future.
39 39 ;;
40 40 ;; Also note that you currently NEED THE CVS VERSION OF PYTHON.EL.
41 41 ;;
42 42 ;; Further note that I don't know whether this runs under windows or not and
43 43 ;; that if it doesn't I can't really help much, not being afflicted myself.
44 44 ;;
45 45 ;;
46 46 ;; Hints for effective usage
47 47 ;; -------------------------
48 48 ;;
49 49 ;; - IMO the best feature by far of the ipython/emacs combo is how much easier it
50 50 ;; makes it to find and fix bugs thanks to the ``%pdb on``/ pdbtrack combo. Try
51 51 ;; it: first in the ipython to shell do ``%pdb on`` then do something that will
52 52 ;; raise an exception (FIXME nice example) -- and be amazed how easy it is to
53 53 ;; inspect the live objects in each stack frames and to jump to the
54 54 ;; corresponding sourcecode locations as you walk up and down the stack trace
55 55 ;; (even without ``%pdb on`` you can always use ``C-c -`` (`py-up-exception')
56 56 ;; to jump to the corresponding source code locations).
57 57 ;;
58 58 ;; - emacs gives you much more powerful commandline editing and output searching
59 59 ;; capabilities than ipython-standalone -- isearch is your friend if you
60 60 ;; quickly want to print 'DEBUG ...' to stdout out etc.
61 61 ;;
62 62 ;; - This is not really specific to ipython, but for more convenient history
63 63 ;; access you might want to add something like the following to *the beggining*
64 64 ;; of your ``.emacs`` (if you want behavior that's more similar to stand-alone
65 65 ;; ipython, you can change ``meta p`` etc. for ``control p``)::
66 66 ;;
67 67 ;; (require 'comint)
68 68 ;; (define-key comint-mode-map [(meta p)]
69 69 ;; 'comint-previous-matching-input-from-input)
70 70 ;; (define-key comint-mode-map [(meta n)]
71 71 ;; 'comint-next-matching-input-from-input)
72 72 ;; (define-key comint-mode-map [(control meta n)]
73 73 ;; 'comint-next-input)
74 74 ;; (define-key comint-mode-map [(control meta p)]
75 75 ;; 'comint-previous-input)
76 76 ;;
77 77 ;; - Be aware that if you customize py-python-command previously, this value
78 78 ;; will override what ipython.el does (because loading the customization
79 79 ;; variables comes later).
80 80 ;;
81 81 ;; Please send comments and feedback to the ipython-list
82 82 ;; (<ipython-user@scipy.net>) where I (a.s.) or someone else will try to
83 83 ;; answer them (it helps if you specify your emacs version, OS etc;
84 84 ;; familiarity with <http://www.catb.org/~esr/faqs/smart-questions.html> might
85 85 ;; speed up things further).
86 86 ;;
87 87 ;; Footnotes:
88 88 ;;
89 89 ;; [1] If you don't know what `load-path' is, C-h v load-path will tell
90 90 ;; you; if required you can also add a new directory. So assuming that
91 91 ;; ipython.el resides in ~/el/, put this in your emacs:
92 92 ;;
93 93 ;;
94 94 ;; (add-to-list 'load-path "~/el")
95 95 ;; (setq ipython-command "/some-path/ipython")
96 96 ;; (require 'ipython)
97 97 ;;
98 98 ;;
99 99 ;;
100 100 ;;
101 101 ;; TODO:
102 102 ;; - do autocompletion properly
103 103 ;; - implement a proper switching between python interpreters
104 104 ;;
105 105 ;; BUGS:
106 106 ;; - neither::
107 107 ;;
108 108 ;; (py-shell "-c print 'FOOBAR'")
109 109 ;;
110 110 ;; nor::
111 111 ;;
112 112 ;; (let ((py-python-command-args (append py-python-command-args
113 113 ;; '("-c" "print 'FOOBAR'"))))
114 114 ;; (py-shell))
115 115 ;;
116 116 ;; seem to print anything as they should
117 117 ;;
118 118 ;; - look into init priority issues with `py-python-command' (if it's set
119 119 ;; via custom)
120 120
121 121
122 122 ;;; Code
123 123 (require 'cl)
124 124 (require 'shell)
125 125 (require 'executable)
126 126 (require 'ansi-color)
127 127
128 128 (defcustom ipython-command "ipython"
129 129 "*Shell command used to start ipython."
130 130 :type 'string
131 131 :group 'python)
132 132
133 133 ;; Users can set this to nil
134 134 (defvar py-shell-initial-switch-buffers t
135 135 "If nil, don't switch to the *Python* buffer on the first call to
136 136 `py-shell'.")
137 137
138 138 (defvar ipython-backup-of-py-python-command nil
139 139 "HACK")
140 140
141 141
142 142 (defvar ipython-de-input-prompt-regexp "\\(?:
143 143 In \\[[0-9]+\\]: *.*
144 144 ----+> \\(.*
145 145 \\)[\n]?\\)\\|\\(?:
146 146 In \\[[0-9]+\\]: *\\(.*
147 147 \\)\\)\\|^[ ]\\{3\\}[.]\\{3,\\}: *\\(.*
148 148 \\)"
149 149 "A regular expression to match the IPython input prompt and the python
150 150 command after it. The first match group is for a command that is rewritten,
151 151 the second for a 'normal' command, and the third for a multiline command.")
152 152 (defvar ipython-de-output-prompt-regexp "^Out\\[[0-9]+\\]: "
153 153 "A regular expression to match the output prompt of IPython.")
154 154
155 155
156 156 (if (not (executable-find ipython-command))
157 157 (message (format "Can't find executable %s - ipython.el *NOT* activated!!!"
158 158 ipython-command))
159 159 ;; XXX load python-mode, so that we can screw around with its variables
160 160 ;; this has the disadvantage that python-mode is loaded even if no
161 161 ;; python-file is ever edited etc. but it means that `py-shell' works
162 162 ;; without loading a python-file first. Obviously screwing around with
163 163 ;; python-mode's variables like this is a mess, but well.
164 164 (require 'python-mode)
165 165 ;; turn on ansi colors for ipython and activate completion
166 166 (defun ipython-shell-hook ()
167 167 ;; the following is to synchronize dir-changes
168 168 (make-local-variable 'shell-dirstack)
169 169 (setq shell-dirstack nil)
170 170 (make-local-variable 'shell-last-dir)
171 171 (setq shell-last-dir nil)
172 172 (make-local-variable 'shell-dirtrackp)
173 173 (setq shell-dirtrackp t)
174 174 (add-hook 'comint-input-filter-functions 'shell-directory-tracker nil t)
175 175
176 176 (ansi-color-for-comint-mode-on)
177 177 (define-key py-shell-map [tab] 'ipython-complete)
178 178 ;;XXX this is really just a cheap hack, it only completes symbols in the
179 179 ;;interactive session -- useful nonetheless.
180 180 (define-key py-mode-map [(meta tab)] 'ipython-complete)
181 181
182 182 )
183 183 (add-hook 'py-shell-hook 'ipython-shell-hook)
184 184 ;; Regular expression that describes tracebacks for IPython in context and
185 185 ;; verbose mode.
186 186
187 187 ;;Adapt python-mode settings for ipython.
188 188 ;; (this works for %xmode 'verbose' or 'context')
189 189
190 190 ;; XXX putative regexps for syntax errors; unfortunately the
191 191 ;; current python-mode traceback-line-re scheme is too primitive,
192 192 ;; so it's either matching syntax errors, *or* everything else
193 193 ;; (XXX: should ask Fernando for a change)
194 194 ;;"^ File \"\\(.*?\\)\", line \\([0-9]+\\).*\n.*\n.*\nSyntaxError:"
195 195 ;;^ File \"\\(.*?\\)\", line \\([0-9]+\\)"
196 196
197 197 (setq py-traceback-line-re
198 "\\(^[^\t ].+?\\.py\\).*\n +[0-9]+[^\00]*?\n-+> \\([0-9]+\\) +")
198 "\\(^[^\t >].+?\\.py\\).*\n +[0-9]+[^\00]*?\n-+> \\([0-9]+\\)+")
199
199 200
200 201 ;; Recognize the ipython pdb, whose prompt is 'ipdb>' or 'ipydb>'
201 202 ;;instead of '(Pdb)'
202 203 (setq py-pdbtrack-input-prompt "\n[(<]*[Ii]?[Pp]y?db[>)]+ ")
203 (setq py-pydbtrack-input-prompt "\n[(]*ipydb[>)]+ ")
204 (setq pydb-pydbtrack-input-prompt "\n[(]*ipydb[>)]+ ")
204 205
205 206 (setq py-shell-input-prompt-1-regexp "^In \\[[0-9]+\\]: *"
206 207 py-shell-input-prompt-2-regexp "^ [.][.][.]+: *" )
207 208 ;; select a suitable color-scheme
208 209 (unless (member "-colors" py-python-command-args)
209 210 (setq py-python-command-args
210 211 (nconc py-python-command-args
211 212 (list "-colors"
212 213 (cond
213 214 ((eq frame-background-mode 'dark)
214 215 "DarkBG")
215 216 ((eq frame-background-mode 'light)
216 217 "LightBG")
217 218 (t ; default (backg-mode isn't always set by XEmacs)
218 219 "LightBG"))))))
219 220 (unless (equal ipython-backup-of-py-python-command py-python-command)
220 221 (setq ipython-backup-of-py-python-command py-python-command))
221 222 (setq py-python-command ipython-command))
222 223
223 224
224 225 ;; MODIFY py-shell so that it loads the editing history
225 226 (defadvice py-shell (around py-shell-with-history)
226 227 "Add persistent command-history support (in
227 228 $PYTHONHISTORY (or \"~/.ipython/history\", if we use IPython)). Also, if
228 229 `py-shell-initial-switch-buffers' is nil, it only switches to *Python* if that
229 230 buffer already exists."
230 231 (if (comint-check-proc "*Python*")
231 232 ad-do-it
232 233 (setq comint-input-ring-file-name
233 234 (if (string-equal py-python-command ipython-command)
234 235 (concat (or (getenv "IPYTHONDIR") "~/.ipython") "/history")
235 236 (or (getenv "PYTHONHISTORY") "~/.python-history.py")))
236 237 (comint-read-input-ring t)
237 238 (let ((buf (current-buffer)))
238 239 ad-do-it
239 240 (unless py-shell-initial-switch-buffers
240 241 (switch-to-buffer-other-window buf)))))
241 242 (ad-activate 'py-shell)
242 243 ;; (defadvice py-execute-region (before py-execute-buffer-ensure-process)
243 244 ;; "HACK: test that ipython is already running before executing something.
244 245 ;; Doing this properly seems not worth the bother (unless people actually
245 246 ;; request it)."
246 247 ;; (unless (comint-check-proc "*Python*")
247 248 ;; (error "Sorry you have to first do M-x py-shell to send something to ipython.")))
248 249 ;; (ad-activate 'py-execute-region)
249 250
250 251 (defadvice py-execute-region (around py-execute-buffer-ensure-process)
251 252 "HACK: if `py-shell' is not active or ASYNC is explicitly desired, fall back
252 253 to python instead of ipython."
253 254 (let ((py-which-shell (if (and (comint-check-proc "*Python*") (not async))
254 255 py-python-command
255 256 ipython-backup-of-py-python-command)))
256 257 ad-do-it))
257 258 (ad-activate 'py-execute-region)
258 259
259 260 (defun ipython-to-doctest (start end)
260 261 "Transform a cut-and-pasted bit from an IPython session into something that
261 262 looks like it came from a normal interactive python session, so that it can
262 263 be used in doctests. Example:
263 264
264 265
265 266 In [1]: import sys
266 267
267 268 In [2]: sys.stdout.write 'Hi!\n'
268 269 ------> sys.stdout.write ('Hi!\n')
269 270 Hi!
270 271
271 272 In [3]: 3 + 4
272 273 Out[3]: 7
273 274
274 275 gets converted to:
275 276
276 277 >>> import sys
277 278 >>> sys.stdout.write ('Hi!\n')
278 279 Hi!
279 280 >>> 3 + 4
280 281 7
281 282
282 283 "
283 284 (interactive "*r\n")
284 285 ;(message (format "###DEBUG s:%de:%d" start end))
285 286 (save-excursion
286 287 (save-match-data
287 288 ;; replace ``In [3]: bla`` with ``>>> bla`` and
288 289 ;; ``... : bla`` with ``... bla``
289 290 (goto-char start)
290 291 (while (re-search-forward ipython-de-input-prompt-regexp end t)
291 292 ;(message "finding 1")
292 293 (cond ((match-string 3) ;continued
293 294 (replace-match "... \\3" t nil))
294 295 (t
295 296 (replace-match ">>> \\1\\2" t nil))))
296 297 ;; replace ``
297 298 (goto-char start)
298 299 (while (re-search-forward ipython-de-output-prompt-regexp end t)
299 300 (replace-match "" t nil)))))
300 301
301 302 (defvar ipython-completion-command-string
302 303 "print ';'.join(__IP.Completer.all_completions('%s')) #PYTHON-MODE SILENT\n"
303 304 "The string send to ipython to query for all possible completions")
304 305
305 306
306 307 ;; xemacs doesn't have `comint-preoutput-filter-functions' so we'll try the
307 308 ;; following wonderful hack to work around this case
308 309 (if (featurep 'xemacs)
309 310 ;;xemacs
310 311 (defun ipython-complete ()
311 312 "Try to complete the python symbol before point. Only knows about the stuff
312 313 in the current *Python* session."
313 314 (interactive)
314 315 (let* ((ugly-return nil)
315 316 (sep ";")
316 317 (python-process (or (get-buffer-process (current-buffer))
317 318 ;XXX hack for .py buffers
318 319 (get-process py-which-bufname)))
319 320 ;; XXX currently we go backwards to find the beginning of an
320 321 ;; expression part; a more powerful approach in the future might be
321 322 ;; to let ipython have the complete line, so that context can be used
322 323 ;; to do things like filename completion etc.
323 324 (beg (save-excursion (skip-chars-backward "a-z0-9A-Z_." (point-at-bol))
324 325 (point)))
325 326 (end (point))
326 327 (pattern (buffer-substring-no-properties beg end))
327 328 (completions nil)
328 329 (completion-table nil)
329 330 completion
330 331 (comint-output-filter-functions
331 332 (append comint-output-filter-functions
332 333 '(ansi-color-filter-apply
333 334 (lambda (string)
334 335 ;(message (format "DEBUG filtering: %s" string))
335 336 (setq ugly-return (concat ugly-return string))
336 337 (delete-region comint-last-output-start
337 338 (process-mark (get-buffer-process (current-buffer)))))))))
338 339 ;(message (format "#DEBUG pattern: '%s'" pattern))
339 340 (process-send-string python-process
340 341 (format ipython-completion-command-string pattern))
341 342 (accept-process-output python-process)
342 343 ;(message (format "DEBUG return: %s" ugly-return))
343 344 (setq completions
344 345 (split-string (substring ugly-return 0 (position ?\n ugly-return)) sep))
345 346 (setq completion-table (loop for str in completions
346 347 collect (list str nil)))
347 348 (setq completion (try-completion pattern completion-table))
348 349 (cond ((eq completion t))
349 350 ((null completion)
350 351 (message "Can't find completion for \"%s\"" pattern)
351 352 (ding))
352 353 ((not (string= pattern completion))
353 354 (delete-region beg end)
354 355 (insert completion))
355 356 (t
356 357 (message "Making completion list...")
357 358 (with-output-to-temp-buffer "*Python Completions*"
358 359 (display-completion-list (all-completions pattern completion-table)))
359 360 (message "Making completion list...%s" "done")))))
360 361 ;; emacs
361 362 (defun ipython-complete ()
362 363 "Try to complete the python symbol before point. Only knows about the stuff
363 364 in the current *Python* session."
364 365 (interactive)
365 366 (let* ((ugly-return nil)
366 367 (sep ";")
367 368 (python-process (or (get-buffer-process (current-buffer))
368 369 ;XXX hack for .py buffers
369 370 (get-process py-which-bufname)))
370 371 ;; XXX currently we go backwards to find the beginning of an
371 372 ;; expression part; a more powerful approach in the future might be
372 373 ;; to let ipython have the complete line, so that context can be used
373 374 ;; to do things like filename completion etc.
374 375 (beg (save-excursion (skip-chars-backward "a-z0-9A-Z_." (point-at-bol))
375 376 (point)))
376 377 (end (point))
377 378 (pattern (buffer-substring-no-properties beg end))
378 379 (completions nil)
379 380 (completion-table nil)
380 381 completion
381 382 (comint-preoutput-filter-functions
382 383 (append comint-preoutput-filter-functions
383 384 '(ansi-color-filter-apply
384 385 (lambda (string)
385 386 (setq ugly-return (concat ugly-return string))
386 387 "")))))
387 388 (process-send-string python-process
388 389 (format ipython-completion-command-string pattern))
389 390 (accept-process-output python-process)
390 391 (setq completions
391 392 (split-string (substring ugly-return 0 (position ?\n ugly-return)) sep))
392 393 ;(message (format "DEBUG completions: %S" completions))
393 394 (setq completion-table (loop for str in completions
394 395 collect (list str nil)))
395 396 (setq completion (try-completion pattern completion-table))
396 397 (cond ((eq completion t))
397 398 ((null completion)
398 399 (message "Can't find completion for \"%s\"" pattern)
399 400 (ding))
400 401 ((not (string= pattern completion))
401 402 (delete-region beg end)
402 403 (insert completion))
403 404 (t
404 405 (message "Making completion list...")
405 406 (with-output-to-temp-buffer "*IPython Completions*"
406 407 (display-completion-list (all-completions pattern completion-table)))
407 408 (message "Making completion list...%s" "done")))))
408 409 )
409 410
410 411 ;;; autoindent support: patch sent in by Jin Liu <m.liu.jin@gmail.com>,
411 412 ;;; originally written by doxgen@newsmth.net
412 413 ;;; Minor modifications by fperez for xemacs compatibility.
413 414
414 415 (defvar ipython-autoindent t
415 416 "If non-nil, enable autoindent for IPython shell through python-mode.")
416 417
417 418 (defvar ipython-indenting-buffer-name "*IPython Indentation Calculation*"
418 419 "Temporary buffer for indenting multiline statement.")
419 420
420 421 (defun ipython-get-indenting-buffer ()
421 422 "Return a temporary buffer set in python-mode. Create one if necessary."
422 423 (let ((buf (get-buffer-create ipython-indenting-buffer-name)))
423 424 (set-buffer buf)
424 425 (unless (eq major-mode 'python-mode)
425 426 (python-mode))
426 427 buf))
427 428
428 429 (defvar ipython-indentation-string nil
429 430 "Indentation for the next line in a multiline statement.")
430 431
431 432 (defun ipython-send-and-indent ()
432 433 "Send the current line to IPython, and calculate the indentation for
433 434 the next line."
434 435 (interactive)
435 436 (if ipython-autoindent
436 437 (let ((line (buffer-substring (point-at-bol) (point)))
437 438 (after-prompt1)
438 439 (after-prompt2))
439 440 (save-excursion
440 441 (comint-bol t)
441 442 (if (looking-at py-shell-input-prompt-1-regexp)
442 443 (setq after-prompt1 t)
443 444 (setq after-prompt2 (looking-at py-shell-input-prompt-2-regexp)))
444 445 (with-current-buffer (ipython-get-indenting-buffer)
445 446 (when after-prompt1
446 447 (erase-buffer))
447 448 (when (or after-prompt1 after-prompt2)
448 449 (delete-region (point-at-bol) (point))
449 450 (insert line)
450 451 (newline-and-indent))))))
451 452 ;; send input line to ipython interpreter
452 453 (comint-send-input))
453 454
454 455 (defun ipython-indentation-hook (string)
455 456 "Insert indentation string if py-shell-input-prompt-2-regexp
456 457 matches last process output."
457 458 (let* ((start-marker (or comint-last-output-start
458 459 (point-min-marker)))
459 460 (end-marker (process-mark (get-buffer-process (current-buffer))))
460 461 (text (ansi-color-filter-apply (buffer-substring start-marker end-marker))))
461 462 ;; XXX if `text' matches both pattern, it MUST be the last prompt-2
462 463 (when (and (string-match py-shell-input-prompt-2-regexp text)
463 464 (not (string-match "\n$" text)))
464 465 (with-current-buffer (ipython-get-indenting-buffer)
465 466 (setq ipython-indentation-string
466 467 (buffer-substring (point-at-bol) (point))))
467 468 (goto-char end-marker)
468 469 (insert ipython-indentation-string)
469 470 (setq ipython-indentation-string nil))))
470 471
471 472 (add-hook 'py-shell-hook
472 473 (lambda ()
473 474 (add-hook 'comint-output-filter-functions
474 475 'ipython-indentation-hook)))
475 476
476 477 (define-key py-shell-map (kbd "RET") 'ipython-send-and-indent)
477 478 ;;; / end autoindent support
478 479
479 480 (provide 'ipython)
@@ -1,10460 +1,10466 b''
1 1 #LyX 1.4.3 created this file. For more info see http://www.lyx.org/
2 2 \lyxformat 245
3 3 \begin_document
4 4 \begin_header
5 5 \textclass article
6 6 \begin_preamble
7 7 %\usepackage{ae,aecompl}
8 8 \usepackage{color}
9 9
10 10 % A few colors to replace the defaults for certain link types
11 11 \definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
12 12 \definecolor{darkorange}{rgb}{.71,0.21,0.01}
13 13 \definecolor{darkred}{rgb}{.52,0.08,0.01}
14 14 \definecolor{darkgreen}{rgb}{.12,.54,.11}
15 15
16 16 % Use and configure listings package for nicely formatted code
17 17 \usepackage{listings}
18 18 \lstset{
19 19 language=Python,
20 20 basicstyle=\small\ttfamily,
21 21 commentstyle=\ttfamily\color{blue},
22 22 stringstyle=\ttfamily\color{darkorange},
23 23 showstringspaces=false,
24 24 breaklines=true,
25 25 postbreak = \space\dots
26 26 }
27 27
28 28 \usepackage[%pdftex, % needed for pdflatex
29 29 breaklinks=true, % so long urls are correctly broken across lines
30 30 colorlinks=true,
31 31 urlcolor=blue,
32 32 linkcolor=darkred,
33 33 citecolor=darkgreen,
34 34 ]{hyperref}
35 35
36 36 \usepackage{html}
37 37
38 38 % This helps prevent overly long lines that stretch beyond the margins
39 39 \sloppy
40 40
41 41 % Define a \codelist command which either uses listings for latex, or
42 42 % plain verbatim for html (since latex2html doesn't understand the
43 43 % listings package).
44 44 \usepackage{verbatim}
45 45 \newcommand{\codelist}[1] {
46 46 \latex{\lstinputlisting{#1}}
47 47 \html{\verbatiminput{#1}}
48 48 }
49 49 \end_preamble
50 50 \language english
51 51 \inputencoding latin1
52 52 \fontscheme palatino
53 53 \graphics default
54 54 \paperfontsize 11
55 55 \spacing single
56 56 \papersize default
57 57 \use_geometry true
58 58 \use_amsmath 1
59 59 \cite_engine basic
60 60 \use_bibtopic false
61 61 \paperorientation portrait
62 62 \leftmargin 1in
63 63 \topmargin 1in
64 64 \rightmargin 1in
65 65 \bottommargin 1in
66 66 \secnumdepth 3
67 67 \tocdepth 3
68 68 \paragraph_separation skip
69 69 \defskip medskip
70 70 \quotes_language english
71 71 \papercolumns 1
72 72 \papersides 2
73 73 \paperpagestyle fancy
74 74 \tracking_changes false
75 75 \output_changes true
76 76 \end_header
77 77
78 78 \begin_body
79 79
80 80 \begin_layout Title
81 81 IPython
82 82 \newline
83 83
84 84 \size larger
85 85 An enhanced Interactive Python
86 86 \size large
87 87
88 88 \newline
89 89 User Manual, v.
90 90 __version__
91 91 \end_layout
92 92
93 93 \begin_layout Author
94 94 Fernando PοΏ½rez
95 95 \begin_inset Foot
96 96 status collapsed
97 97
98 98 \begin_layout Standard
99 99
100 100 \size scriptsize
101 101 Department of Applied Mathematics, University of Colorado at Boulder.
102 102
103 103 \family typewriter
104 104 <Fernando.Perez@colorado.edu>
105 105 \end_layout
106 106
107 107 \end_inset
108 108
109 109
110 110 \end_layout
111 111
112 112 \begin_layout Standard
113 113 \begin_inset ERT
114 114 status collapsed
115 115
116 116 \begin_layout Standard
117 117
118 118
119 119 \backslash
120 120 latex{
121 121 \end_layout
122 122
123 123 \end_inset
124 124
125 125
126 126 \begin_inset LatexCommand \tableofcontents{}
127 127
128 128 \end_inset
129 129
130 130
131 131 \begin_inset ERT
132 132 status collapsed
133 133
134 134 \begin_layout Standard
135 135
136 136 }
137 137 \end_layout
138 138
139 139 \end_inset
140 140
141 141
142 142 \end_layout
143 143
144 144 \begin_layout Standard
145 145 \begin_inset ERT
146 146 status open
147 147
148 148 \begin_layout Standard
149 149
150 150
151 151 \backslash
152 152 html{
153 153 \backslash
154 154 bodytext{bgcolor=#ffffff}}
155 155 \end_layout
156 156
157 157 \end_inset
158 158
159 159
160 160 \end_layout
161 161
162 162 \begin_layout Standard
163 163
164 164 \newpage
165 165
166 166 \end_layout
167 167
168 168 \begin_layout Section
169 169 Overview
170 170 \end_layout
171 171
172 172 \begin_layout Standard
173 173 One of Python's most useful features is its interactive interpreter.
174 174 This system allows very fast testing of ideas without the overhead of creating
175 175 test files as is typical in most programming languages.
176 176 However, the interpreter supplied with the standard Python distribution
177 177 is somewhat limited for extended interactive use.
178 178 \end_layout
179 179
180 180 \begin_layout Standard
181 181 IPython is a free software project (released under the BSD license) which
182 182 tries to:
183 183 \end_layout
184 184
185 185 \begin_layout Enumerate
186 186 Provide an interactive shell superior to Python's default.
187 187 IPython has many features for object introspection, system shell access,
188 188 and its own special command system for adding functionality when working
189 189 interactively.
190 190 It tries to be a very efficient environment both for Python code development
191 191 and for exploration of problems using Python objects (in situations like
192 192 data analysis).
193 193 \end_layout
194 194
195 195 \begin_layout Enumerate
196 196 Serve as an embeddable, ready to use interpreter for your own programs.
197 197 IPython can be started with a single call from inside another program,
198 198 providing access to the current namespace.
199 199 This can be very useful both for debugging purposes and for situations
200 200 where a blend of batch-processing and interactive exploration are needed.
201 201 \end_layout
202 202
203 203 \begin_layout Enumerate
204 204 Offer a flexible framework which can be used as the base environment for
205 205 other systems with Python as the underlying language.
206 206 Specifically scientific environments like Mathematica, IDL and Matlab inspired
207 207 its design, but similar ideas can be useful in many fields.
208 208 \end_layout
209 209
210 210 \begin_layout Enumerate
211 211 Allow interactive testing of threaded graphical toolkits.
212 212 IPython has support for interactive, non-blocking control of GTK, Qt and
213 213 WX applications via special threading flags.
214 214 The normal Python shell can only do this for Tkinter applications.
215 215 \end_layout
216 216
217 217 \begin_layout Subsection
218 218 Main features
219 219 \end_layout
220 220
221 221 \begin_layout Itemize
222 222 Dynamic object introspection.
223 223 One can access docstrings, function definition prototypes, source code,
224 224 source files and other details of any object accessible to the interpreter
225 225 with a single keystroke (`
226 226 \family typewriter
227 227 ?
228 228 \family default
229 229 ', and using `
230 230 \family typewriter
231 231 ??
232 232 \family default
233 233 ' provides additional detail).
234 234 \end_layout
235 235
236 236 \begin_layout Itemize
237 237 Searching through modules and namespaces with `
238 238 \family typewriter
239 239 *
240 240 \family default
241 241 ' wildcards, both when using the `
242 242 \family typewriter
243 243 ?
244 244 \family default
245 245 ' system and via the
246 246 \family typewriter
247 247 %psearch
248 248 \family default
249 249 command.
250 250 \end_layout
251 251
252 252 \begin_layout Itemize
253 253 Completion in the local namespace, by typing TAB at the prompt.
254 254 This works for keywords, methods, variables and files in the current directory.
255 255 This is supported via the readline library, and full access to configuring
256 256 readline's behavior is provided.
257 257 \end_layout
258 258
259 259 \begin_layout Itemize
260 260 Numbered input/output prompts with command history (persistent across sessions
261 261 and tied to each profile), full searching in this history and caching of
262 262 all input and output.
263 263 \end_layout
264 264
265 265 \begin_layout Itemize
266 266 User-extensible `magic' commands.
267 267 A set of commands prefixed with
268 268 \family typewriter
269 269 %
270 270 \family default
271 271 is available for controlling IPython itself and provides directory control,
272 272 namespace information and many aliases to common system shell commands.
273 273 \end_layout
274 274
275 275 \begin_layout Itemize
276 276 Alias facility for defining your own system aliases.
277 277 \end_layout
278 278
279 279 \begin_layout Itemize
280 280 Complete system shell access.
281 281 Lines starting with ! are passed directly to the system shell, and using
282 282 !! captures shell output into python variables for further use.
283 283 \end_layout
284 284
285 285 \begin_layout Itemize
286 286 Background execution of Python commands in a separate thread.
287 287 IPython has an internal job manager called
288 288 \family typewriter
289 289 jobs
290 290 \family default
291 291 , and a conveninence backgrounding magic function called
292 292 \family typewriter
293 293 %bg
294 294 \family default
295 295 .
296 296 \end_layout
297 297
298 298 \begin_layout Itemize
299 299 The ability to expand python variables when calling the system shell.
300 300 In a shell command, any python variable prefixed with
301 301 \family typewriter
302 302 $
303 303 \family default
304 304 is expanded.
305 305 A double
306 306 \family typewriter
307 307 $$
308 308 \family default
309 309 allows passing a literal
310 310 \family typewriter
311 311 $
312 312 \family default
313 313 to the shell (for access to shell and environment variables like
314 314 \family typewriter
315 315 $PATH
316 316 \family default
317 317 ).
318 318 \end_layout
319 319
320 320 \begin_layout Itemize
321 321 Filesystem navigation, via a magic
322 322 \family typewriter
323 323 %cd
324 324 \family default
325 325 command, along with a persistent bookmark system (using
326 326 \family typewriter
327 327 %bookmark
328 328 \family default
329 329 ) for fast access to frequently visited directories.
330 330 \end_layout
331 331
332 332 \begin_layout Itemize
333 333 A lightweight persistence framework via the
334 334 \family typewriter
335 335 %store
336 336 \family default
337 337 command, which allows you to save arbitrary Python variables.
338 338 These get restored automatically when your session restarts.
339 339 \end_layout
340 340
341 341 \begin_layout Itemize
342 342 Automatic indentation (optional) of code as you type (through the readline
343 343 library).
344 344 \end_layout
345 345
346 346 \begin_layout Itemize
347 347 Macro system for quickly re-executing multiple lines of previous input with
348 348 a single name.
349 349 Macros can be stored persistently via
350 350 \family typewriter
351 351 %store
352 352 \family default
353 353 and edited via
354 354 \family typewriter
355 355 %edit
356 356 \family default
357 357 .
358 358
359 359 \end_layout
360 360
361 361 \begin_layout Itemize
362 362 Session logging (you can then later use these logs as code in your programs).
363 363 Logs can optionally timestamp all input, and also store session output
364 364 (marked as comments, so the log remains valid Python source code).
365 365 \end_layout
366 366
367 367 \begin_layout Itemize
368 368 Session restoring: logs can be replayed to restore a previous session to
369 369 the state where you left it.
370 370 \end_layout
371 371
372 372 \begin_layout Itemize
373 373 Verbose and colored exception traceback printouts.
374 374 Easier to parse visually, and in verbose mode they produce a lot of useful
375 375 debugging information (basically a terminal version of the cgitb module).
376 376 \end_layout
377 377
378 378 \begin_layout Itemize
379 379 Auto-parentheses: callable objects can be executed without parentheses:
380 380
381 381 \family typewriter
382 382 `sin 3'
383 383 \family default
384 384 is automatically converted to
385 385 \family typewriter
386 386 `sin(3)
387 387 \family default
388 388 '.
389 389 \end_layout
390 390
391 391 \begin_layout Itemize
392 392 Auto-quoting: using `
393 393 \family typewriter
394 394 ,
395 395 \family default
396 396 ' or `
397 397 \family typewriter
398 398 ;
399 399 \family default
400 400 ' as the first character forces auto-quoting of the rest of the line:
401 401 \family typewriter
402 402 `,my_function a\InsetSpace ~
403 403 b'
404 404 \family default
405 405 becomes automatically
406 406 \family typewriter
407 407 `my_function("a","b")'
408 408 \family default
409 409 , while
410 410 \family typewriter
411 411 `;my_function a\InsetSpace ~
412 412 b'
413 413 \family default
414 414 becomes
415 415 \family typewriter
416 416 `my_function("a b")'
417 417 \family default
418 418 .
419 419 \end_layout
420 420
421 421 \begin_layout Itemize
422 422 Extensible input syntax.
423 423 You can define filters that pre-process user input to simplify input in
424 424 special situations.
425 425 This allows for example pasting multi-line code fragments which start with
426 426
427 427 \family typewriter
428 428 `>>>'
429 429 \family default
430 430 or
431 431 \family typewriter
432 432 `...'
433 433 \family default
434 434 such as those from other python sessions or the standard Python documentation.
435 435 \end_layout
436 436
437 437 \begin_layout Itemize
438 438 Flexible configuration system.
439 439 It uses a configuration file which allows permanent setting of all command-line
440 440 options, module loading, code and file execution.
441 441 The system allows recursive file inclusion, so you can have a base file
442 442 with defaults and layers which load other customizations for particular
443 443 projects.
444 444 \end_layout
445 445
446 446 \begin_layout Itemize
447 447 Embeddable.
448 448 You can call IPython as a python shell inside your own python programs.
449 449 This can be used both for debugging code or for providing interactive abilities
450 450 to your programs with knowledge about the local namespaces (very useful
451 451 in debugging and data analysis situations).
452 452 \end_layout
453 453
454 454 \begin_layout Itemize
455 455 Easy debugger access.
456 456 You can set IPython to call up an enhanced version of the Python debugger
457 457 (
458 458 \family typewriter
459 459 pdb
460 460 \family default
461 461 ) every time there is an uncaught exception.
462 462 This drops you inside the code which triggered the exception with all the
463 463 data live and it is possible to navigate the stack to rapidly isolate the
464 464 source of a bug.
465 465 The
466 466 \family typewriter
467 467 %run
468 468 \family default
469 469 magic command --with the
470 470 \family typewriter
471 471 -d
472 472 \family default
473 473 option-- can run any script under
474 474 \family typewriter
475 475 pdb
476 476 \family default
477 477 's control, automatically setting initial breakpoints for you.
478 478 This version of
479 479 \family typewriter
480 480 pdb
481 481 \family default
482 482 has IPython-specific improvements, including tab-completion and traceback
483 483 coloring support.
484 484 \end_layout
485 485
486 486 \begin_layout Itemize
487 487 Profiler support.
488 488 You can run single statements (similar to
489 489 \family typewriter
490 490 profile.run()
491 491 \family default
492 492 ) or complete programs under the profiler's control.
493 493 While this is possible with standard
494 494 \family typewriter
495 495 cProfile
496 496 \family default
497 497 or
498 498 \family typewriter
499 499 profile
500 500 \family default
501 501 modules, IPython wraps this functionality with magic commands (see
502 502 \family typewriter
503 503 `%prun'
504 504 \family default
505 505 and
506 506 \family typewriter
507 507 `%run -p
508 508 \family default
509 509 ') convenient for rapid interactive work.
510 510 \end_layout
511 511
512 512 \begin_layout Subsection
513 513 Portability and Python requirements
514 514 \end_layout
515 515
516 516 \begin_layout Standard
517 517
518 518 \series bold
519 519 Python requirements:
520 520 \series default
521 521 IPython requires with Python version 2.3 or newer.
522 522 If you are still using Python 2.2 and can not upgrade, the last version
523 523 of IPython which worked with Python 2.2 was 0.6.15, so you will have to use
524 524 that.
525 525 \end_layout
526 526
527 527 \begin_layout Standard
528 528 IPython is developed under
529 529 \series bold
530 530 Linux
531 531 \series default
532 532 , but it should work in any reasonable Unix-type system (tested OK under
533 533 Solaris and the *BSD family, for which a port exists thanks to Dryice Liu).
534 534 \end_layout
535 535
536 536 \begin_layout Standard
537 537
538 538 \series bold
539 539 Mac OS X
540 540 \series default
541 541 : it works, apparently without any problems (thanks to Jim Boyle at Lawrence
542 542 Livermore for the information).
543 543 Thanks to Andrea Riciputi, Fink support is available.
544 544 \end_layout
545 545
546 546 \begin_layout Standard
547 547
548 548 \series bold
549 549 CygWin
550 550 \series default
551 551 : it works mostly OK, though some users have reported problems with prompt
552 552 coloring.
553 553 No satisfactory solution to this has been found so far, you may want to
554 554 disable colors permanently in the
555 555 \family typewriter
556 556 ipythonrc
557 557 \family default
558 558 configuration file if you experience problems.
559 559 If you have proper color support under cygwin, please post to the IPython
560 560 mailing list so this issue can be resolved for all users.
561 561 \end_layout
562 562
563 563 \begin_layout Standard
564 564
565 565 \series bold
566 566 Windows
567 567 \series default
568 568 : it works well under Windows XP/2k, and I suspect NT should behave similarly.
569 569 Section\InsetSpace ~
570 570
571 571 \begin_inset LatexCommand \ref{sub:Under-Windows}
572 572
573 573 \end_inset
574 574
575 575 describes installation details for Windows, including some additional tools
576 576 needed on this platform.
577 577 \end_layout
578 578
579 579 \begin_layout Standard
580 580 Windows 9x support is present, and has been reported to work fine (at least
581 581 on WinME).
582 582 \end_layout
583 583
584 584 \begin_layout Standard
585 585 Note, that I have very little access to and experience with Windows development.
586 586 However, an excellent group of Win32 users (led by Ville Vainio), consistently
587 587 contribute bugfixes and platform-specific enhancements, so they more than
588 588 make up for my deficiencies on that front.
589 589 In fact, Win32 users report using IPython as a system shell (see Sec.\InsetSpace ~
590 590
591 591 \begin_inset LatexCommand \ref{sec:IPython-as-shell}
592 592
593 593 \end_inset
594 594
595 595 for details), as it offers a level of control and features which the default
596 596
597 597 \family typewriter
598 598 cmd.exe
599 599 \family default
600 600 doesn't provide.
601 601 \end_layout
602 602
603 603 \begin_layout Subsection
604 604 Location
605 605 \end_layout
606 606
607 607 \begin_layout Standard
608 608 IPython is generously hosted at
609 609 \begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
610 610
611 611 \end_inset
612 612
613 613 by the Enthought, Inc and the SciPy project.
614 614 This site offers downloads, subversion access, mailing lists and a bug
615 615 tracking system.
616 616 I am very grateful to Enthought (
617 617 \begin_inset LatexCommand \htmlurl{http://www.enthought.com}
618 618
619 619 \end_inset
620 620
621 621 ) and all of the SciPy team for their contribution.
622 622 \end_layout
623 623
624 624 \begin_layout Section
625 625 \begin_inset LatexCommand \label{sec:install}
626 626
627 627 \end_inset
628 628
629 629 Installation
630 630 \end_layout
631 631
632 632 \begin_layout Subsection
633 633 Instant instructions
634 634 \end_layout
635 635
636 636 \begin_layout Standard
637 637 If you are of the impatient kind, under Linux/Unix simply untar/unzip the
638 638 download, then install with
639 639 \family typewriter
640 640 `python setup.py install'
641 641 \family default
642 642 .
643 643 Under Windows, double-click on the provided
644 644 \family typewriter
645 645 .exe
646 646 \family default
647 647 binary installer.
648 648 \end_layout
649 649
650 650 \begin_layout Standard
651 651 Then, take a look at Sections
652 652 \begin_inset LatexCommand \ref{sec:good_config}
653 653
654 654 \end_inset
655 655
656 656 for configuring things optimally and
657 657 \begin_inset LatexCommand \ref{sec:quick_tips}
658 658
659 659 \end_inset
660 660
661 661 for quick tips on efficient use of IPython.
662 662 You can later refer to the rest of the manual for all the gory details.
663 663 \end_layout
664 664
665 665 \begin_layout Standard
666 666 See the notes in sec.
667 667
668 668 \begin_inset LatexCommand \ref{sec:upgrade}
669 669
670 670 \end_inset
671 671
672 672 for upgrading IPython versions.
673 673 \end_layout
674 674
675 675 \begin_layout Subsection
676 676 Detailed Unix instructions (Linux, Mac OS X, etc.)
677 677 \end_layout
678 678
679 679 \begin_layout Standard
680 680 For RPM based systems, simply install the supplied package in the usual
681 681 manner.
682 682 If you download the tar archive, the process is:
683 683 \end_layout
684 684
685 685 \begin_layout Enumerate
686 686 Unzip/untar the
687 687 \family typewriter
688 688 ipython-XXX.tar.gz
689 689 \family default
690 690 file wherever you want (
691 691 \family typewriter
692 692 XXX
693 693 \family default
694 694 is the version number).
695 695 It will make a directory called
696 696 \family typewriter
697 697 ipython-XXX.
698 698
699 699 \family default
700 700 Change into that directory where you will find the files
701 701 \family typewriter
702 702 README
703 703 \family default
704 704 and
705 705 \family typewriter
706 706 setup.py
707 707 \family default
708 708 .
709 709
710 710 \family typewriter
711 711 O
712 712 \family default
713 713 nce you've completed the installation, you can safely remove this directory.
714 714
715 715 \end_layout
716 716
717 717 \begin_layout Enumerate
718 718 If you are installing over a previous installation of version 0.2.0 or earlier,
719 719 first remove your
720 720 \family typewriter
721 721 $HOME/.ipython
722 722 \family default
723 723 directory, since the configuration file format has changed somewhat (the
724 724 '=' were removed from all option specifications).
725 725 Or you can call ipython with the
726 726 \family typewriter
727 727 -upgrade
728 728 \family default
729 729 option and it will do this automatically for you.
730 730 \end_layout
731 731
732 732 \begin_layout Enumerate
733 733 IPython uses distutils, so you can install it by simply typing at the system
734 734 prompt (don't type the
735 735 \family typewriter
736 736 $
737 737 \family default
738 738 )
739 739 \newline
740 740
741 741 \family typewriter
742 742 $ python setup.py install
743 743 \family default
744 744
745 745 \newline
746 746 Note that this assumes you have root access to your machine.
747 747 If you don't have root access or don't want IPython to go in the default
748 748 python directories, you'll need to use the
749 749 \begin_inset ERT
750 750 status collapsed
751 751
752 752 \begin_layout Standard
753 753
754 754
755 755 \backslash
756 756 verb|--home|
757 757 \end_layout
758 758
759 759 \end_inset
760 760
761 761 option (or
762 762 \begin_inset ERT
763 763 status collapsed
764 764
765 765 \begin_layout Standard
766 766
767 767
768 768 \backslash
769 769 verb|--prefix|
770 770 \end_layout
771 771
772 772 \end_inset
773 773
774 774 ).
775 775 For example:
776 776 \newline
777 777
778 778 \begin_inset ERT
779 779 status collapsed
780 780
781 781 \begin_layout Standard
782 782
783 783
784 784 \backslash
785 785 verb|$ python setup.py install --home $HOME/local|
786 786 \end_layout
787 787
788 788 \end_inset
789 789
790 790
791 791 \newline
792 792 will install IPython into
793 793 \family typewriter
794 794 $HOME/local
795 795 \family default
796 796 and its subdirectories (creating them if necessary).
797 797 \newline
798 798 You can type
799 799 \newline
800 800
801 801 \begin_inset ERT
802 802 status collapsed
803 803
804 804 \begin_layout Standard
805 805
806 806
807 807 \backslash
808 808 verb|$ python setup.py --help|
809 809 \end_layout
810 810
811 811 \end_inset
812 812
813 813
814 814 \newline
815 815 for more details.
816 816 \newline
817 817 Note that if you change the default location for
818 818 \begin_inset ERT
819 819 status collapsed
820 820
821 821 \begin_layout Standard
822 822
823 823
824 824 \backslash
825 825 verb|--home|
826 826 \end_layout
827 827
828 828 \end_inset
829 829
830 830 at installation, IPython may end up installed at a location which is not
831 831 part of your
832 832 \family typewriter
833 833 $PYTHONPATH
834 834 \family default
835 835 environment variable.
836 836 In this case, you'll need to configure this variable to include the actual
837 837 directory where the
838 838 \family typewriter
839 839 IPython/
840 840 \family default
841 841 directory ended (typically the value you give to
842 842 \begin_inset ERT
843 843 status collapsed
844 844
845 845 \begin_layout Standard
846 846
847 847
848 848 \backslash
849 849 verb|--home|
850 850 \end_layout
851 851
852 852 \end_inset
853 853
854 854 plus
855 855 \family typewriter
856 856 /lib/python
857 857 \family default
858 858 ).
859 859 \end_layout
860 860
861 861 \begin_layout Subsubsection
862 862 Mac OSX information
863 863 \end_layout
864 864
865 865 \begin_layout Standard
866 866 Under OSX, there is a choice you need to make.
867 867 Apple ships its own build of Python, which lives in the core OSX filesystem
868 868 hierarchy.
869 869 You can also manually install a separate Python, either purely by hand
870 870 (typically in
871 871 \family typewriter
872 872 /usr/local
873 873 \family default
874 874 ) or by using Fink, which puts everything under
875 875 \family typewriter
876 876 /sw
877 877 \family default
878 878 .
879 879 Which route to follow is a matter of personal preference, as I've seen
880 880 users who favor each of the approaches.
881 881 Here I will simply list the known installation issues under OSX, along
882 882 with their solutions.
883 883 \end_layout
884 884
885 885 \begin_layout Standard
886 886 This page:
887 887 \begin_inset LatexCommand \htmlurl{http://geosci.uchicago.edu/~tobis/pylab.html}
888 888
889 889 \end_inset
890 890
891 891 contains information on this topic, with additional details on how to make
892 892 IPython and matplotlib play nicely under OSX.
893 893 \end_layout
894 894
895 895 \begin_layout Subsubsection*
896 896 GUI problems
897 897 \end_layout
898 898
899 899 \begin_layout Standard
900 900 The following instructions apply to an install of IPython under OSX from
901 901 unpacking the
902 902 \family typewriter
903 903 .tar.gz
904 904 \family default
905 905 distribution and installing it for the default Python interpreter shipped
906 906 by Apple.
907 907 If you are using a fink install, fink will take care of these details for
908 908 you, by installing IPython against fink's Python.
909 909 \end_layout
910 910
911 911 \begin_layout Standard
912 912 IPython offers various forms of support for interacting with graphical applicati
913 913 ons from the command line, from simple Tk apps (which are in principle always
914 914 supported by Python) to interactive control of WX, Qt and GTK apps.
915 915 Under OSX, however, this requires that ipython is installed by calling
916 916 the special
917 917 \family typewriter
918 918 pythonw
919 919 \family default
920 920 script at installation time, which takes care of coordinating things with
921 921 Apple's graphical environment.
922 922 \end_layout
923 923
924 924 \begin_layout Standard
925 925 So when installing under OSX, it is best to use the following command:
926 926 \family typewriter
927 927
928 928 \newline
929 929
930 930 \family default
931 931
932 932 \begin_inset ERT
933 933 status collapsed
934 934
935 935 \begin_layout Standard
936 936
937 937
938 938 \backslash
939 939 verb| $ sudo pythonw setup.py install --install-scripts=/usr/local/bin|
940 940 \end_layout
941 941
942 942 \end_inset
943 943
944 944
945 945 \newline
946 946 or
947 947 \newline
948 948
949 949 \begin_inset ERT
950 950 status collapsed
951 951
952 952 \begin_layout Standard
953 953
954 954
955 955 \backslash
956 956 verb| $ sudo pythonw setup.py install --install-scripts=/usr/bin|
957 957 \end_layout
958 958
959 959 \end_inset
960 960
961 961
962 962 \newline
963 963 depending on where you like to keep hand-installed executables.
964 964 \end_layout
965 965
966 966 \begin_layout Standard
967 967 The resulting script will have an appropriate shebang line (the first line
968 968 in the script whic begins with
969 969 \family typewriter
970 970 #!...
971 971 \family default
972 972 ) such that the ipython interpreter can interact with the OS X GUI.
973 973 If the installed version does not work and has a shebang line that points
974 974 to, for example, just
975 975 \family typewriter
976 976 /usr/bin/python
977 977 \family default
978 978 , then you might have a stale, cached version in your
979 979 \family typewriter
980 980 build/scripts-<python-version>
981 981 \family default
982 982 directory.
983 983 Delete that directory and rerun the
984 984 \family typewriter
985 985 setup.py
986 986 \family default
987 987 .
988 988
989 989 \end_layout
990 990
991 991 \begin_layout Standard
992 992 It is also a good idea to use the special flag
993 993 \begin_inset ERT
994 994 status collapsed
995 995
996 996 \begin_layout Standard
997 997
998 998
999 999 \backslash
1000 1000 verb|--install-scripts|
1001 1001 \end_layout
1002 1002
1003 1003 \end_inset
1004 1004
1005 1005 as indicated above, to ensure that the ipython scripts end up in a location
1006 1006 which is part of your
1007 1007 \family typewriter
1008 1008 $PATH
1009 1009 \family default
1010 1010 .
1011 1011 Otherwise Apple's Python will put the scripts in an internal directory
1012 1012 not available by default at the command line (if you use
1013 1013 \family typewriter
1014 1014 /usr/local/bin
1015 1015 \family default
1016 1016 , you need to make sure this is in your
1017 1017 \family typewriter
1018 1018 $PATH
1019 1019 \family default
1020 1020 , which may not be true by default).
1021 1021 \end_layout
1022 1022
1023 1023 \begin_layout Subsubsection*
1024 1024 Readline problems
1025 1025 \end_layout
1026 1026
1027 1027 \begin_layout Standard
1028 1028 By default, the Python version shipped by Apple does
1029 1029 \emph on
1030 1030 not
1031 1031 \emph default
1032 1032 include the readline library, so central to IPython's behavior.
1033 1033 If you install IPython against Apple's Python, you will not have arrow
1034 1034 keys, tab completion, etc.
1035 1035 For Mac OSX 10.3 (Panther), you can find a prebuilt readline library here:
1036 1036 \newline
1037 1037
1038 1038 \begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/readline-5.0-py2.3-macosx10.3.zip}
1039 1039
1040 1040 \end_inset
1041 1041
1042 1042
1043 1043 \end_layout
1044 1044
1045 1045 \begin_layout Standard
1046 1046 If you are using OSX 10.4 (Tiger), after installing this package you need
1047 1047 to either:
1048 1048 \end_layout
1049 1049
1050 1050 \begin_layout Enumerate
1051 1051 move
1052 1052 \family typewriter
1053 1053 readline.so
1054 1054 \family default
1055 1055 from
1056 1056 \family typewriter
1057 1057 /Library/Python/2.3
1058 1058 \family default
1059 1059 to
1060 1060 \family typewriter
1061 1061 /Library/Python/2.3/site-packages
1062 1062 \family default
1063 1063 , or
1064 1064 \end_layout
1065 1065
1066 1066 \begin_layout Enumerate
1067 1067 install
1068 1068 \begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/TigerPython23Compat.pkg.zip}
1069 1069
1070 1070 \end_inset
1071 1071
1072 1072
1073 1073 \end_layout
1074 1074
1075 1075 \begin_layout Standard
1076 1076 Users installing against Fink's Python or a properly hand-built one should
1077 1077 not have this problem.
1078 1078 \end_layout
1079 1079
1080 1080 \begin_layout Subsubsection*
1081 1081 DarwinPorts
1082 1082 \end_layout
1083 1083
1084 1084 \begin_layout Standard
1085 1085 I report here a message from an OSX user, who suggests an alternative means
1086 1086 of using IPython under this operating system with good results.
1087 1087 Please let me know of any updates that may be useful for this section.
1088 1088 His message is reproduced verbatim below:
1089 1089 \end_layout
1090 1090
1091 1091 \begin_layout Quote
1092 1092 From: Markus Banfi
1093 1093 \family typewriter
1094 1094 <markus.banfi-AT-mospheira.net>
1095 1095 \end_layout
1096 1096
1097 1097 \begin_layout Quote
1098 1098 As a MacOS X (10.4.2) user I prefer to install software using DawinPorts instead
1099 1099 of Fink.
1100 1100 I had no problems installing ipython with DarwinPorts.
1101 1101 It's just:
1102 1102 \end_layout
1103 1103
1104 1104 \begin_layout Quote
1105 1105
1106 1106 \family typewriter
1107 1107 sudo port install py-ipython
1108 1108 \end_layout
1109 1109
1110 1110 \begin_layout Quote
1111 1111 It automatically resolved all dependencies (python24, readline, py-readline).
1112 1112 So far I did not encounter any problems with the DarwinPorts port of ipython.
1113 1113
1114 1114 \end_layout
1115 1115
1116 1116 \begin_layout Subsection
1117 1117 \begin_inset LatexCommand \label{sub:Under-Windows}
1118 1118
1119 1119 \end_inset
1120 1120
1121 1121 Windows instructions
1122 1122 \end_layout
1123 1123
1124 1124 \begin_layout Standard
1125 1125 Some of IPython's very useful features are:
1126 1126 \end_layout
1127 1127
1128 1128 \begin_layout Itemize
1129 1129 Integrated readline support (Tab-based file, object and attribute completion,
1130 1130 input history across sessions, editable command line, etc.)
1131 1131 \end_layout
1132 1132
1133 1133 \begin_layout Itemize
1134 1134 Coloring of prompts, code and tracebacks.
1135 1135 \end_layout
1136 1136
1137 1137 \begin_layout Standard
1138 1138 These, by default, are only available under Unix-like operating systems.
1139 1139 However, thanks to Gary Bishop's work, Windows XP/2k users can also benefit
1140 1140 from them.
1141 1141 His readline library originally implemented both GNU readline functionality
1142 1142 and color support, so that IPython under Windows XP/2k can be as friendly
1143 1143 and powerful as under Unix-like environments.
1144 1144
1145 1145 \end_layout
1146 1146
1147 1147 \begin_layout Standard
1148 1148 This library, now named
1149 1149 \family typewriter
1150 1150 PyReadline
1151 1151 \family default
1152 1152 , has been absorbed by the IPython team (JοΏ½rgen Stenarson, in particular),
1153 1153 and it continues to be developed with new features, as well as being distribute
1154 1154 d directly from the IPython site.
1155 1155 \end_layout
1156 1156
1157 1157 \begin_layout Standard
1158 1158 The
1159 1159 \family typewriter
1160 1160 PyReadline
1161 1161 \family default
1162 1162 extension requires
1163 1163 \family typewriter
1164 1164 CTypes
1165 1165 \family default
1166 1166 and the windows IPython installer needs
1167 1167 \family typewriter
1168 1168 PyWin32
1169 1169 \family default
1170 1170 , so in all you need:
1171 1171 \end_layout
1172 1172
1173 1173 \begin_layout Enumerate
1174 1174
1175 1175 \family typewriter
1176 1176 PyWin32
1177 1177 \family default
1178 1178 from
1179 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/mhammond}
1179 \begin_inset LatexCommand \htmlurl{http://sourceforge.net/projects/pywin32}
1180 1180
1181 1181 \end_inset
1182 1182
1183 1183 .
1184 1184 \end_layout
1185 1185
1186 1186 \begin_layout Enumerate
1187 1187
1188 1188 \family typewriter
1189 CTypes
1189 PyReadline
1190 1190 \family default
1191 from
1192 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/theller/ctypes}
1191 for Windows from
1192 \begin_inset LatexCommand \htmlurl{http://ipython.scipy.org/moin/PyReadline/Intro}
1193 1193
1194 1194 \end_inset
1195 1195
1196 (you
1197 \emph on
1198 must
1199 \emph default
1200 use version 0.9.1 or newer).
1196 .
1197 That page contains further details on using and configuring the system
1198 to your liking.
1201 1199 \end_layout
1202 1200
1203 1201 \begin_layout Enumerate
1204
1202 Finally,
1203 \emph on
1204 only
1205 \emph default
1206 if you are using Python 2.3 or 2.4, you need
1205 1207 \family typewriter
1206 PyReadline
1208 CTypes
1207 1209 \family default
1208 for Windows from
1209 \begin_inset LatexCommand \htmlurl{http://projects.scipy.org/ipython/ipython/wiki/PyReadline/Intro}
1210 from
1211 \begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/theller/ctypes}
1210 1212
1211 1213 \end_inset
1212 1214
1213 .
1214 That page contains further details on using and configuring the system
1215 to your liking.
1215 (you
1216 \emph on
1217 must
1218 \emph default
1219 use version 0.9.1 or newer).
1220 This package is included in Python 2.5, so you don't need to manually get
1221 it if your Python version is 2.5 or newer.
1216 1222 \end_layout
1217 1223
1218 1224 \begin_layout Standard
1219 1225
1220 1226 \series bold
1221 1227 Warning about a broken readline-like library:
1222 1228 \series default
1223 1229 several users have reported problems stemming from using the pseudo-readline
1224 1230 library at
1225 1231 \begin_inset LatexCommand \htmlurl{http://newcenturycomputers.net/projects/readline.html}
1226 1232
1227 1233 \end_inset
1228 1234
1229 1235 .
1230 1236 This is a broken library which, while called readline, only implements
1231 1237 an incomplete subset of the readline API.
1232 1238 Since it is still called readline, it fools IPython's detection mechanisms
1233 1239 and causes unpredictable crashes later.
1234 1240 If you wish to use IPython under Windows, you must NOT use this library,
1235 1241 which for all purposes is (at least as of version 1.6) terminally broken.
1236 1242 \end_layout
1237 1243
1238 1244 \begin_layout Subsubsection
1239 1245 Installation procedure
1240 1246 \end_layout
1241 1247
1242 1248 \begin_layout Standard
1243 1249 Once you have the above installed, from the IPython download directory grab
1244 1250 the
1245 1251 \family typewriter
1246 1252 ipython-XXX.win32.exe
1247 1253 \family default
1248 1254 file, where
1249 1255 \family typewriter
1250 1256 XXX
1251 1257 \family default
1252 1258 represents the version number.
1253 1259 This is a regular windows executable installer, which you can simply double-cli
1254 1260 ck to install.
1255 1261 It will add an entry for IPython to your Start Menu, as well as registering
1256 1262 IPython in the Windows list of applications, so you can later uninstall
1257 1263 it from the Control Panel.
1258 1264
1259 1265 \end_layout
1260 1266
1261 1267 \begin_layout Standard
1262 1268 IPython tries to install the configuration information in a directory named
1263 1269
1264 1270 \family typewriter
1265 1271 .ipython
1266 1272 \family default
1267 1273 (
1268 1274 \family typewriter
1269 1275 _ipython
1270 1276 \family default
1271 1277 under Windows) located in your `home' directory.
1272 1278 IPython sets this directory by looking for a
1273 1279 \family typewriter
1274 1280 HOME
1275 1281 \family default
1276 1282 environment variable; if such a variable does not exist, it uses
1277 1283 \family typewriter
1278 1284 HOMEDRIVE
1279 1285 \backslash
1280 1286 HOMEPATH
1281 1287 \family default
1282 1288 (these are always defined by Windows).
1283 1289 This typically gives something like
1284 1290 \family typewriter
1285 1291 C:
1286 1292 \backslash
1287 1293 Documents and Settings
1288 1294 \backslash
1289 1295 YourUserName
1290 1296 \family default
1291 1297 , but your local details may vary.
1292 1298 In this directory you will find all the files that configure IPython's
1293 1299 defaults, and you can put there your profiles and extensions.
1294 1300 This directory is automatically added by IPython to
1295 1301 \family typewriter
1296 1302 sys.path
1297 1303 \family default
1298 1304 , so anything you place there can be found by
1299 1305 \family typewriter
1300 1306 import
1301 1307 \family default
1302 1308 statements.
1303 1309 \end_layout
1304 1310
1305 1311 \begin_layout Paragraph
1306 1312 Upgrading
1307 1313 \end_layout
1308 1314
1309 1315 \begin_layout Standard
1310 1316 For an IPython upgrade, you should first uninstall the previous version.
1311 1317 This will ensure that all files and directories (such as the documentation)
1312 1318 which carry embedded version strings in their names are properly removed.
1313 1319 \end_layout
1314 1320
1315 1321 \begin_layout Paragraph
1316 1322 Manual installation under Win32
1317 1323 \end_layout
1318 1324
1319 1325 \begin_layout Standard
1320 1326 In case the automatic installer does not work for some reason, you can download
1321 1327 the
1322 1328 \family typewriter
1323 1329 ipython-XXX.tar.gz
1324 1330 \family default
1325 1331 file, which contains the full IPython source distribution (the popular
1326 1332 WinZip can read
1327 1333 \family typewriter
1328 1334 .tar.gz
1329 1335 \family default
1330 1336 files).
1331 1337 After uncompressing the archive, you can install it at a command terminal
1332 1338 just like any other Python module, by using
1333 1339 \family typewriter
1334 1340 `python setup.py install'
1335 1341 \family default
1336 1342 .
1337 1343
1338 1344 \end_layout
1339 1345
1340 1346 \begin_layout Standard
1341 1347 After the installation, run the supplied
1342 1348 \family typewriter
1343 1349 win32_manual_post_install.py
1344 1350 \family default
1345 1351 script, which creates the necessary Start Menu shortcuts for you.
1346 1352 \end_layout
1347 1353
1348 1354 \begin_layout Subsection
1349 1355 \begin_inset LatexCommand \label{sec:upgrade}
1350 1356
1351 1357 \end_inset
1352 1358
1353 1359 Upgrading from a previous version
1354 1360 \end_layout
1355 1361
1356 1362 \begin_layout Standard
1357 1363 If you are upgrading from a previous version of IPython, after doing the
1358 1364 routine installation described above, you should call IPython with the
1359 1365
1360 1366 \family typewriter
1361 1367 -upgrade
1362 1368 \family default
1363 1369 option the first time you run your new copy.
1364 1370 This will automatically update your configuration directory while preserving
1365 1371 copies of your old files.
1366 1372 You can then later merge back any personal customizations you may have
1367 1373 made into the new files.
1368 1374 It is a good idea to do this as there may be new options available in the
1369 1375 new configuration files which you will not have.
1370 1376 \end_layout
1371 1377
1372 1378 \begin_layout Standard
1373 1379 Under Windows, if you don't know how to call python scripts with arguments
1374 1380 from a command line, simply delete the old config directory and IPython
1375 1381 will make a new one.
1376 1382 Win2k and WinXP users will find it in
1377 1383 \family typewriter
1378 1384 C:
1379 1385 \backslash
1380 1386 Documents and Settings
1381 1387 \backslash
1382 1388 YourUserName
1383 1389 \backslash
1384 1390 _ipython
1385 1391 \family default
1386 1392 , and Win 9x users under
1387 1393 \family typewriter
1388 1394 C:
1389 1395 \backslash
1390 1396 Program Files
1391 1397 \backslash
1392 1398 IPython
1393 1399 \backslash
1394 1400 _ipython.
1395 1401 \end_layout
1396 1402
1397 1403 \begin_layout Section
1398 1404 \begin_inset LatexCommand \label{sec:good_config}
1399 1405
1400 1406 \end_inset
1401 1407
1402 1408
1403 1409 \begin_inset OptArg
1404 1410 status collapsed
1405 1411
1406 1412 \begin_layout Standard
1407 1413 Initial configuration
1408 1414 \begin_inset ERT
1409 1415 status collapsed
1410 1416
1411 1417 \begin_layout Standard
1412 1418
1413 1419
1414 1420 \backslash
1415 1421 ldots
1416 1422 \end_layout
1417 1423
1418 1424 \end_inset
1419 1425
1420 1426
1421 1427 \end_layout
1422 1428
1423 1429 \end_inset
1424 1430
1425 1431 Initial configuration of your environment
1426 1432 \end_layout
1427 1433
1428 1434 \begin_layout Standard
1429 1435 This section will help you set various things in your environment for your
1430 1436 IPython sessions to be as efficient as possible.
1431 1437 All of IPython's configuration information, along with several example
1432 1438 files, is stored in a directory named by default
1433 1439 \family typewriter
1434 1440 $HOME/.ipython
1435 1441 \family default
1436 1442 .
1437 1443 You can change this by defining the environment variable
1438 1444 \family typewriter
1439 1445 IPYTHONDIR
1440 1446 \family default
1441 1447 , or at runtime with the command line option
1442 1448 \family typewriter
1443 1449 -ipythondir
1444 1450 \family default
1445 1451 .
1446 1452 \end_layout
1447 1453
1448 1454 \begin_layout Standard
1449 1455 If all goes well, the first time you run IPython it should automatically
1450 1456 create a user copy of the config directory for you, based on its builtin
1451 1457 defaults.
1452 1458 You can look at the files it creates to learn more about configuring the
1453 1459 system.
1454 1460 The main file you will modify to configure IPython's behavior is called
1455 1461
1456 1462 \family typewriter
1457 1463 ipythonrc
1458 1464 \family default
1459 1465 (with a
1460 1466 \family typewriter
1461 1467 .ini
1462 1468 \family default
1463 1469 extension under Windows), included for reference in Sec.
1464 1470
1465 1471 \begin_inset LatexCommand \ref{sec:ipytonrc-sample}
1466 1472
1467 1473 \end_inset
1468 1474
1469 1475 .
1470 1476 This file is very commented and has many variables you can change to suit
1471 1477 your taste, you can find more details in Sec.
1472 1478
1473 1479 \begin_inset LatexCommand \ref{sec:customization}
1474 1480
1475 1481 \end_inset
1476 1482
1477 1483 .
1478 1484 Here we discuss the basic things you will want to make sure things are
1479 1485 working properly from the beginning.
1480 1486 \end_layout
1481 1487
1482 1488 \begin_layout Subsection
1483 1489 \begin_inset LatexCommand \label{sec:help-access}
1484 1490
1485 1491 \end_inset
1486 1492
1487 1493 Access to the Python help system
1488 1494 \end_layout
1489 1495
1490 1496 \begin_layout Standard
1491 1497 This is true for Python in general (not just for IPython): you should have
1492 1498 an environment variable called
1493 1499 \family typewriter
1494 1500 PYTHONDOCS
1495 1501 \family default
1496 1502 pointing to the directory where your HTML Python documentation lives.
1497 1503 In my system it's
1498 1504 \family typewriter
1499 1505 /usr/share/doc/python-docs-2.3.4/html
1500 1506 \family default
1501 1507 , check your local details or ask your systems administrator.
1502 1508
1503 1509 \end_layout
1504 1510
1505 1511 \begin_layout Standard
1506 1512 This is the directory which holds the HTML version of the Python manuals.
1507 1513 Unfortunately it seems that different Linux distributions package these
1508 1514 files differently, so you may have to look around a bit.
1509 1515 Below I show the contents of this directory on my system for reference:
1510 1516 \end_layout
1511 1517
1512 1518 \begin_layout Standard
1513 1519
1514 1520 \family typewriter
1515 1521 [html]> ls
1516 1522 \newline
1517 1523 about.dat acks.html dist/ ext/ index.html lib/ modindex.html stdabout.dat
1518 1524 tut/ about.html api/ doc/ icons/ inst/ mac/ ref/ style.css
1519 1525 \end_layout
1520 1526
1521 1527 \begin_layout Standard
1522 1528 You should really make sure this variable is correctly set so that Python's
1523 1529 pydoc-based help system works.
1524 1530 It is a powerful and convenient system with full access to the Python manuals
1525 1531 and all modules accessible to you.
1526 1532 \end_layout
1527 1533
1528 1534 \begin_layout Standard
1529 1535 Under Windows it seems that pydoc finds the documentation automatically,
1530 1536 so no extra setup appears necessary.
1531 1537 \end_layout
1532 1538
1533 1539 \begin_layout Subsection
1534 1540 Editor
1535 1541 \end_layout
1536 1542
1537 1543 \begin_layout Standard
1538 1544 The
1539 1545 \family typewriter
1540 1546 %edit
1541 1547 \family default
1542 1548 command (and its alias
1543 1549 \family typewriter
1544 1550 %ed
1545 1551 \family default
1546 1552 ) will invoke the editor set in your environment as
1547 1553 \family typewriter
1548 1554 EDITOR
1549 1555 \family default
1550 1556 .
1551 1557 If this variable is not set, it will default to
1552 1558 \family typewriter
1553 1559 vi
1554 1560 \family default
1555 1561 under Linux/Unix and to
1556 1562 \family typewriter
1557 1563 notepad
1558 1564 \family default
1559 1565 under Windows.
1560 1566 You may want to set this variable properly and to a lightweight editor
1561 1567 which doesn't take too long to start (that is, something other than a new
1562 1568 instance of
1563 1569 \family typewriter
1564 1570 Emacs
1565 1571 \family default
1566 1572 ).
1567 1573 This way you can edit multi-line code quickly and with the power of a real
1568 1574 editor right inside IPython.
1569 1575
1570 1576 \end_layout
1571 1577
1572 1578 \begin_layout Standard
1573 1579 If you are a dedicated
1574 1580 \family typewriter
1575 1581 Emacs
1576 1582 \family default
1577 1583 user, you should set up the
1578 1584 \family typewriter
1579 1585 Emacs
1580 1586 \family default
1581 1587 server so that new requests are handled by the original process.
1582 1588 This means that almost no time is spent in handling the request (assuming
1583 1589 an
1584 1590 \family typewriter
1585 1591 Emacs
1586 1592 \family default
1587 1593 process is already running).
1588 1594 For this to work, you need to set your
1589 1595 \family typewriter
1590 1596 EDITOR
1591 1597 \family default
1592 1598 environment variable to
1593 1599 \family typewriter
1594 1600 'emacsclient'
1595 1601 \family default
1596 1602 .
1597 1603
1598 1604 \family typewriter
1599 1605
1600 1606 \family default
1601 1607 The code below, supplied by Francois Pinard, can then be used in your
1602 1608 \family typewriter
1603 1609 .emacs
1604 1610 \family default
1605 1611 file to enable the server:
1606 1612 \end_layout
1607 1613
1608 1614 \begin_layout Standard
1609 1615
1610 1616 \family typewriter
1611 1617 (defvar server-buffer-clients)
1612 1618 \newline
1613 1619 (when (and (fboundp 'server-start) (string-equal
1614 1620 (getenv "TERM") 'xterm))
1615 1621 \newline
1616 1622
1617 1623 \begin_inset ERT
1618 1624 status collapsed
1619 1625
1620 1626 \begin_layout Standard
1621 1627
1622 1628
1623 1629 \backslash
1624 1630 hspace*{0mm}
1625 1631 \end_layout
1626 1632
1627 1633 \end_inset
1628 1634
1629 1635 \InsetSpace ~
1630 1636 \InsetSpace ~
1631 1637 (server-start)
1632 1638 \newline
1633 1639
1634 1640 \begin_inset ERT
1635 1641 status collapsed
1636 1642
1637 1643 \begin_layout Standard
1638 1644
1639 1645
1640 1646 \backslash
1641 1647 hspace*{0mm}
1642 1648 \end_layout
1643 1649
1644 1650 \end_inset
1645 1651
1646 1652 \InsetSpace ~
1647 1653 \InsetSpace ~
1648 1654 (defun fp-kill-server-with-buffer-routine ()
1649 1655 \newline
1650 1656
1651 1657 \begin_inset ERT
1652 1658 status collapsed
1653 1659
1654 1660 \begin_layout Standard
1655 1661
1656 1662
1657 1663 \backslash
1658 1664 hspace*{0mm}
1659 1665 \end_layout
1660 1666
1661 1667 \end_inset
1662 1668
1663 1669 \InsetSpace ~
1664 1670 \InsetSpace ~
1665 1671 \InsetSpace ~
1666 1672 \InsetSpace ~
1667 1673 (and server-buffer-clients (server-done)))
1668 1674 \newline
1669 1675
1670 1676 \begin_inset ERT
1671 1677 status collapsed
1672 1678
1673 1679 \begin_layout Standard
1674 1680
1675 1681
1676 1682 \backslash
1677 1683 hspace*{0mm}
1678 1684 \end_layout
1679 1685
1680 1686 \end_inset
1681 1687
1682 1688 \InsetSpace ~
1683 1689 \InsetSpace ~
1684 1690 (add-hook 'kill-buffer-hook 'fp-kill-server-with-buffer-routine))
1685 1691 \end_layout
1686 1692
1687 1693 \begin_layout Standard
1688 1694 You can also set the value of this editor via the commmand-line option '-
1689 1695 \family typewriter
1690 1696 editor'
1691 1697 \family default
1692 1698 or in your
1693 1699 \family typewriter
1694 1700 ipythonrc
1695 1701 \family default
1696 1702 file.
1697 1703 This is useful if you wish to use specifically for IPython an editor different
1698 1704 from your typical default (and for Windows users who tend to use fewer
1699 1705 environment variables).
1700 1706 \end_layout
1701 1707
1702 1708 \begin_layout Subsection
1703 1709 Color
1704 1710 \end_layout
1705 1711
1706 1712 \begin_layout Standard
1707 1713 The default IPython configuration has most bells and whistles turned on
1708 1714 (they're pretty safe).
1709 1715 But there's one that
1710 1716 \emph on
1711 1717 may
1712 1718 \emph default
1713 1719 cause problems on some systems: the use of color on screen for displaying
1714 1720 information.
1715 1721 This is very useful, since IPython can show prompts and exception tracebacks
1716 1722 with various colors, display syntax-highlighted source code, and in general
1717 1723 make it easier to visually parse information.
1718 1724 \end_layout
1719 1725
1720 1726 \begin_layout Standard
1721 1727 The following terminals seem to handle the color sequences fine:
1722 1728 \end_layout
1723 1729
1724 1730 \begin_layout Itemize
1725 1731 Linux main text console, KDE Konsole, Gnome Terminal, E-term, rxvt, xterm.
1726 1732 \end_layout
1727 1733
1728 1734 \begin_layout Itemize
1729 1735 CDE terminal (tested under Solaris).
1730 1736 This one boldfaces light colors.
1731 1737 \end_layout
1732 1738
1733 1739 \begin_layout Itemize
1734 1740 (X)Emacs buffers.
1735 1741 See sec.
1736 1742 \begin_inset LatexCommand \ref{sec:emacs}
1737 1743
1738 1744 \end_inset
1739 1745
1740 1746 for more details on using IPython with (X)Emacs.
1741 1747 \end_layout
1742 1748
1743 1749 \begin_layout Itemize
1744 1750 A Windows (XP/2k) command prompt
1745 1751 \emph on
1746 1752 with Gary Bishop's support extensions
1747 1753 \emph default
1748 1754 .
1749 1755 Gary's extensions are discussed in Sec.\InsetSpace ~
1750 1756
1751 1757 \begin_inset LatexCommand \ref{sub:Under-Windows}
1752 1758
1753 1759 \end_inset
1754 1760
1755 1761 .
1756 1762 \end_layout
1757 1763
1758 1764 \begin_layout Itemize
1759 1765 A Windows (XP/2k) CygWin shell.
1760 1766 Although some users have reported problems; it is not clear whether there
1761 1767 is an issue for everyone or only under specific configurations.
1762 1768 If you have full color support under cygwin, please post to the IPython
1763 1769 mailing list so this issue can be resolved for all users.
1764 1770 \end_layout
1765 1771
1766 1772 \begin_layout Standard
1767 1773 These have shown problems:
1768 1774 \end_layout
1769 1775
1770 1776 \begin_layout Itemize
1771 1777 Windows command prompt in WinXP/2k logged into a Linux machine via telnet
1772 1778 or ssh.
1773 1779 \end_layout
1774 1780
1775 1781 \begin_layout Itemize
1776 1782 Windows native command prompt in WinXP/2k,
1777 1783 \emph on
1778 1784 without
1779 1785 \emph default
1780 1786 Gary Bishop's extensions.
1781 1787 Once Gary's readline library is installed, the normal WinXP/2k command
1782 1788 prompt works perfectly.
1783 1789 \end_layout
1784 1790
1785 1791 \begin_layout Standard
1786 1792 Currently the following color schemes are available:
1787 1793 \end_layout
1788 1794
1789 1795 \begin_layout Itemize
1790 1796
1791 1797 \family typewriter
1792 1798 NoColor
1793 1799 \family default
1794 1800 : uses no color escapes at all (all escapes are empty
1795 1801 \begin_inset Quotes eld
1796 1802 \end_inset
1797 1803
1798 1804
1799 1805 \begin_inset Quotes eld
1800 1806 \end_inset
1801 1807
1802 1808 strings).
1803 1809 This 'scheme' is thus fully safe to use in any terminal.
1804 1810 \end_layout
1805 1811
1806 1812 \begin_layout Itemize
1807 1813
1808 1814 \family typewriter
1809 1815 Linux
1810 1816 \family default
1811 1817 : works well in Linux console type environments: dark background with light
1812 1818 fonts.
1813 1819 It uses bright colors for information, so it is difficult to read if you
1814 1820 have a light colored background.
1815 1821 \end_layout
1816 1822
1817 1823 \begin_layout Itemize
1818 1824
1819 1825 \family typewriter
1820 1826 LightBG
1821 1827 \family default
1822 1828 : the basic colors are similar to those in the
1823 1829 \family typewriter
1824 1830 Linux
1825 1831 \family default
1826 1832 scheme but darker.
1827 1833 It is easy to read in terminals with light backgrounds.
1828 1834 \end_layout
1829 1835
1830 1836 \begin_layout Standard
1831 1837 IPython uses colors for two main groups of things: prompts and tracebacks
1832 1838 which are directly printed to the terminal, and the object introspection
1833 1839 system which passes large sets of data through a pager.
1834 1840 \end_layout
1835 1841
1836 1842 \begin_layout Subsubsection
1837 1843 Input/Output prompts and exception tracebacks
1838 1844 \end_layout
1839 1845
1840 1846 \begin_layout Standard
1841 1847 You can test whether the colored prompts and tracebacks work on your system
1842 1848 interactively by typing
1843 1849 \family typewriter
1844 1850 '%colors Linux'
1845 1851 \family default
1846 1852 at the prompt (use '
1847 1853 \family typewriter
1848 1854 %colors LightBG'
1849 1855 \family default
1850 1856 if your terminal has a light background).
1851 1857 If the input prompt shows garbage like:
1852 1858 \newline
1853 1859
1854 1860 \family typewriter
1855 1861 [0;32mIn [[1;32m1[0;32m]: [0;00m
1856 1862 \family default
1857 1863
1858 1864 \newline
1859 1865 instead of (in color) something like:
1860 1866 \newline
1861 1867
1862 1868 \family typewriter
1863 1869 In [1]:
1864 1870 \family default
1865 1871
1866 1872 \newline
1867 1873 this means that your terminal doesn't properly handle color escape sequences.
1868 1874 You can go to a 'no color' mode by typing '
1869 1875 \family typewriter
1870 1876 %colors NoColor
1871 1877 \family default
1872 1878 '.
1873 1879
1874 1880 \end_layout
1875 1881
1876 1882 \begin_layout Standard
1877 1883 You can try using a different terminal emulator program (Emacs users, see
1878 1884 below).
1879 1885 To permanently set your color preferences, edit the file
1880 1886 \family typewriter
1881 1887 $HOME/.ipython/ipythonrc
1882 1888 \family default
1883 1889 and set the
1884 1890 \family typewriter
1885 1891 colors
1886 1892 \family default
1887 1893 option to the desired value.
1888 1894 \end_layout
1889 1895
1890 1896 \begin_layout Subsubsection
1891 1897 Object details (types, docstrings, source code, etc.)
1892 1898 \end_layout
1893 1899
1894 1900 \begin_layout Standard
1895 1901 IPython has a set of special functions for studying the objects you are
1896 1902 working with, discussed in detail in Sec.
1897 1903
1898 1904 \begin_inset LatexCommand \ref{sec:dyn-object-info}
1899 1905
1900 1906 \end_inset
1901 1907
1902 1908 .
1903 1909 But this system relies on passing information which is longer than your
1904 1910 screen through a data pager, such as the common Unix
1905 1911 \family typewriter
1906 1912 less
1907 1913 \family default
1908 1914 and
1909 1915 \family typewriter
1910 1916 more
1911 1917 \family default
1912 1918 programs.
1913 1919 In order to be able to see this information in color, your pager needs
1914 1920 to be properly configured.
1915 1921 I strongly recommend using
1916 1922 \family typewriter
1917 1923 less
1918 1924 \family default
1919 1925 instead of
1920 1926 \family typewriter
1921 1927 more
1922 1928 \family default
1923 1929 , as it seems that
1924 1930 \family typewriter
1925 1931 more
1926 1932 \family default
1927 1933 simply can not understand colored text correctly.
1928 1934 \end_layout
1929 1935
1930 1936 \begin_layout Standard
1931 1937 In order to configure
1932 1938 \family typewriter
1933 1939 less
1934 1940 \family default
1935 1941 as your default pager, do the following:
1936 1942 \end_layout
1937 1943
1938 1944 \begin_layout Enumerate
1939 1945 Set the environment
1940 1946 \family typewriter
1941 1947 PAGER
1942 1948 \family default
1943 1949 variable to
1944 1950 \family typewriter
1945 1951 less
1946 1952 \family default
1947 1953 .
1948 1954 \end_layout
1949 1955
1950 1956 \begin_layout Enumerate
1951 1957 Set the environment
1952 1958 \family typewriter
1953 1959 LESS
1954 1960 \family default
1955 1961 variable to
1956 1962 \family typewriter
1957 1963 -r
1958 1964 \family default
1959 1965 (plus any other options you always want to pass to
1960 1966 \family typewriter
1961 1967 less
1962 1968 \family default
1963 1969 by default).
1964 1970 This tells
1965 1971 \family typewriter
1966 1972 less
1967 1973 \family default
1968 1974 to properly interpret control sequences, which is how color information
1969 1975 is given to your terminal.
1970 1976 \end_layout
1971 1977
1972 1978 \begin_layout Standard
1973 1979 For the
1974 1980 \family typewriter
1975 1981 csh
1976 1982 \family default
1977 1983 or
1978 1984 \family typewriter
1979 1985 tcsh
1980 1986 \family default
1981 1987 shells, add to your
1982 1988 \family typewriter
1983 1989 ~/.cshrc
1984 1990 \family default
1985 1991 file the lines:
1986 1992 \end_layout
1987 1993
1988 1994 \begin_layout Standard
1989 1995
1990 1996 \family typewriter
1991 1997 setenv PAGER less
1992 1998 \newline
1993 1999 setenv LESS -r
1994 2000 \end_layout
1995 2001
1996 2002 \begin_layout Standard
1997 2003 There is similar syntax for other Unix shells, look at your system documentation
1998 2004 for details.
1999 2005 \end_layout
2000 2006
2001 2007 \begin_layout Standard
2002 2008 If you are on a system which lacks proper data pagers (such as Windows),
2003 2009 IPython will use a very limited builtin pager.
2004 2010 \end_layout
2005 2011
2006 2012 \begin_layout Subsection
2007 2013 \begin_inset LatexCommand \label{sec:emacs}
2008 2014
2009 2015 \end_inset
2010 2016
2011 2017 (X)Emacs configuration
2012 2018 \end_layout
2013 2019
2014 2020 \begin_layout Standard
2015 2021 Thanks to the work of Alexander Schmolck and Prabhu Ramachandran, currently
2016 2022 (X)Emacs and IPython get along very well.
2017 2023
2018 2024 \end_layout
2019 2025
2020 2026 \begin_layout Standard
2021 2027
2022 2028 \series bold
2023 2029 Important note:
2024 2030 \series default
2025 2031 You will need to use a recent enough version of
2026 2032 \family typewriter
2027 2033 python-mode.el
2028 2034 \family default
2029 2035 , along with the file
2030 2036 \family typewriter
2031 2037 ipython.el
2032 2038 \family default
2033 2039 .
2034 2040 You can check that the version you have of
2035 2041 \family typewriter
2036 2042 python-mode.el
2037 2043 \family default
2038 2044 is new enough by either looking at the revision number in the file itself,
2039 2045 or asking for it in (X)Emacs via
2040 2046 \family typewriter
2041 2047 M-x py-version
2042 2048 \family default
2043 2049 .
2044 2050 Versions 4.68 and newer contain the necessary fixes for proper IPython support.
2045 2051 \end_layout
2046 2052
2047 2053 \begin_layout Standard
2048 2054 The file
2049 2055 \family typewriter
2050 2056 ipython.el
2051 2057 \family default
2052 2058 is included with the IPython distribution, in the documentation directory
2053 2059 (where this manual resides in PDF and HTML formats).
2054 2060 \end_layout
2055 2061
2056 2062 \begin_layout Standard
2057 2063 Once you put these files in your Emacs path, all you need in your
2058 2064 \family typewriter
2059 2065 .emacs
2060 2066 \family default
2061 2067 file is:
2062 2068 \end_layout
2063 2069
2064 2070 \begin_layout LyX-Code
2065 2071 (require 'ipython)
2066 2072 \end_layout
2067 2073
2068 2074 \begin_layout Standard
2069 2075 This should give you full support for executing code snippets via IPython,
2070 2076 opening IPython as your Python shell via
2071 2077 \family typewriter
2072 2078 C-c\InsetSpace ~
2073 2079 !
2074 2080 \family default
2075 2081 , etc.
2076 2082
2077 2083 \end_layout
2078 2084
2079 2085 \begin_layout Standard
2080 2086 If you happen to get garbage instead of colored prompts as described in
2081 2087 the previous section, you may need to set also in your
2082 2088 \family typewriter
2083 2089 .emacs
2084 2090 \family default
2085 2091 file:
2086 2092 \end_layout
2087 2093
2088 2094 \begin_layout LyX-Code
2089 2095 (setq ansi-color-for-comint-mode t)
2090 2096 \end_layout
2091 2097
2092 2098 \begin_layout Subsubsection*
2093 2099 Notes
2094 2100 \end_layout
2095 2101
2096 2102 \begin_layout Itemize
2097 2103 There is one caveat you should be aware of: you must start the IPython shell
2098 2104
2099 2105 \emph on
2100 2106 before
2101 2107 \emph default
2102 2108 attempting to execute any code regions via
2103 2109 \family typewriter
2104 2110 C-c\InsetSpace ~
2105 2111 |
2106 2112 \family default
2107 2113 .
2108 2114 Simply type
2109 2115 \family typewriter
2110 2116 C-c\InsetSpace ~
2111 2117 !
2112 2118 \family default
2113 2119 to start IPython before passing any code regions to the interpreter, and
2114 2120 you shouldn't experience any problems.
2115 2121 \newline
2116 2122 This is due to a bug in Python itself,
2117 2123 which has been fixed for Python 2.3, but exists as of Python 2.2.2 (reported
2118 2124 as SF bug [ 737947 ]).
2119 2125 \end_layout
2120 2126
2121 2127 \begin_layout Itemize
2122 2128 The (X)Emacs support is maintained by Alexander Schmolck, so all comments/reques
2123 2129 ts should be directed to him through the IPython mailing lists.
2124 2130
2125 2131 \end_layout
2126 2132
2127 2133 \begin_layout Itemize
2128 2134 This code is still somewhat experimental so it's a bit rough around the
2129 2135 edges (although in practice, it works quite well).
2130 2136 \end_layout
2131 2137
2132 2138 \begin_layout Itemize
2133 2139 Be aware that if you customize
2134 2140 \family typewriter
2135 2141 py-python-command
2136 2142 \family default
2137 2143 previously, this value will override what
2138 2144 \family typewriter
2139 2145 ipython.el
2140 2146 \family default
2141 2147 does (because loading the customization variables comes later).
2142 2148 \end_layout
2143 2149
2144 2150 \begin_layout Section
2145 2151 \begin_inset LatexCommand \label{sec:quick_tips}
2146 2152
2147 2153 \end_inset
2148 2154
2149 2155 Quick tips
2150 2156 \end_layout
2151 2157
2152 2158 \begin_layout Standard
2153 2159 IPython can be used as an improved replacement for the Python prompt, and
2154 2160 for that you don't really need to read any more of this manual.
2155 2161 But in this section we'll try to summarize a few tips on how to make the
2156 2162 most effective use of it for everyday Python development, highlighting
2157 2163 things you might miss in the rest of the manual (which is getting long).
2158 2164 We'll give references to parts in the manual which provide more detail
2159 2165 when appropriate.
2160 2166 \end_layout
2161 2167
2162 2168 \begin_layout Standard
2163 2169 The following article by Jeremy Jones provides an introductory tutorial
2164 2170 about IPython:
2165 2171 \newline
2166 2172
2167 2173 \begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2005/01/27/ipython.html}
2168 2174
2169 2175 \end_inset
2170 2176
2171 2177
2172 2178 \end_layout
2173 2179
2174 2180 \begin_layout Itemize
2175 2181 The TAB key.
2176 2182 TAB-completion, especially for attributes, is a convenient way to explore
2177 2183 the structure of any object you're dealing with.
2178 2184 Simply type
2179 2185 \family typewriter
2180 2186 object_name.<TAB>
2181 2187 \family default
2182 2188 and a list of the object's attributes will be printed (see sec.
2183 2189
2184 2190 \begin_inset LatexCommand \ref{sec:readline}
2185 2191
2186 2192 \end_inset
2187 2193
2188 2194 for more).
2189 2195 Tab completion also works on file and directory names, which combined with
2190 2196 IPython's alias system allows you to do from within IPython many of the
2191 2197 things you normally would need the system shell for.
2192 2198
2193 2199 \end_layout
2194 2200
2195 2201 \begin_layout Itemize
2196 2202 Explore your objects.
2197 2203 Typing
2198 2204 \family typewriter
2199 2205 object_name?
2200 2206 \family default
2201 2207 will print all sorts of details about any object, including docstrings,
2202 2208 function definition lines (for call arguments) and constructor details
2203 2209 for classes.
2204 2210 The magic commands
2205 2211 \family typewriter
2206 2212 %pdoc
2207 2213 \family default
2208 2214 ,
2209 2215 \family typewriter
2210 2216 %pdef
2211 2217 \family default
2212 2218 ,
2213 2219 \family typewriter
2214 2220 %psource
2215 2221 \family default
2216 2222 and
2217 2223 \family typewriter
2218 2224 %pfile
2219 2225 \family default
2220 2226 will respectively print the docstring, function definition line, full source
2221 2227 code and the complete file for any object (when they can be found).
2222 2228 If automagic is on (it is by default), you don't need to type the '
2223 2229 \family typewriter
2224 2230 %
2225 2231 \family default
2226 2232 ' explicitly.
2227 2233 See sec.
2228 2234
2229 2235 \begin_inset LatexCommand \ref{sec:dyn-object-info}
2230 2236
2231 2237 \end_inset
2232 2238
2233 2239 for more.
2234 2240 \end_layout
2235 2241
2236 2242 \begin_layout Itemize
2237 2243 The
2238 2244 \family typewriter
2239 2245 %run
2240 2246 \family default
2241 2247 magic command allows you to run any python script and load all of its data
2242 2248 directly into the interactive namespace.
2243 2249 Since the file is re-read from disk each time, changes you make to it are
2244 2250 reflected immediately (in contrast to the behavior of
2245 2251 \family typewriter
2246 2252 import
2247 2253 \family default
2248 2254 ).
2249 2255 I rarely use
2250 2256 \family typewriter
2251 2257 import
2252 2258 \family default
2253 2259 for code I am testing, relying on
2254 2260 \family typewriter
2255 2261 %run
2256 2262 \family default
2257 2263 instead.
2258 2264 See sec.
2259 2265
2260 2266 \begin_inset LatexCommand \ref{sec:magic}
2261 2267
2262 2268 \end_inset
2263 2269
2264 2270 for more on this and other magic commands, or type the name of any magic
2265 2271 command and ? to get details on it.
2266 2272 See also sec.
2267 2273
2268 2274 \begin_inset LatexCommand \ref{sec:dreload}
2269 2275
2270 2276 \end_inset
2271 2277
2272 2278 for a recursive reload command.
2273 2279 \newline
2274 2280
2275 2281 \family typewriter
2276 2282 %run
2277 2283 \family default
2278 2284 also has special flags for timing the execution of your scripts (
2279 2285 \family typewriter
2280 2286 -t
2281 2287 \family default
2282 2288 ) and for executing them under the control of either Python's
2283 2289 \family typewriter
2284 2290 pdb
2285 2291 \family default
2286 2292 debugger (
2287 2293 \family typewriter
2288 2294 -d
2289 2295 \family default
2290 2296 ) or profiler (
2291 2297 \family typewriter
2292 2298 -p
2293 2299 \family default
2294 2300 ).
2295 2301 With all of these,
2296 2302 \family typewriter
2297 2303 %run
2298 2304 \family default
2299 2305 can be used as the main tool for efficient interactive development of code
2300 2306 which you write in your editor of choice.
2301 2307 \end_layout
2302 2308
2303 2309 \begin_layout Itemize
2304 2310 Use the Python debugger,
2305 2311 \family typewriter
2306 2312 pdb
2307 2313 \family default
2308 2314
2309 2315 \begin_inset Foot
2310 2316 status collapsed
2311 2317
2312 2318 \begin_layout Standard
2313 2319 Thanks to Christian Hart and Matthew Arnison for the suggestions leading
2314 2320 to IPython's improved debugger and profiler support.
2315 2321 \end_layout
2316 2322
2317 2323 \end_inset
2318 2324
2319 2325 .
2320 2326 The
2321 2327 \family typewriter
2322 2328 %pdb
2323 2329 \family default
2324 2330 command allows you to toggle on and off the automatic invocation of an
2325 2331 IPython-enhanced
2326 2332 \family typewriter
2327 2333 pdb
2328 2334 \family default
2329 2335 debugger (with coloring, tab completion and more) at any uncaught exception.
2330 2336 The advantage of this is that
2331 2337 \family typewriter
2332 2338 pdb
2333 2339 \family default
2334 2340 starts
2335 2341 \emph on
2336 2342 inside
2337 2343 \emph default
2338 2344 the function where the exception occurred, with all data still available.
2339 2345 You can print variables, see code, execute statements and even walk up
2340 2346 and down the call stack to track down the true source of the problem (which
2341 2347 often is many layers in the stack above where the exception gets triggered).
2342 2348 \newline
2343 2349 Runn
2344 2350 ing programs with
2345 2351 \family typewriter
2346 2352 %run
2347 2353 \family default
2348 2354 and pdb active can be an efficient to develop and debug code, in many cases
2349 2355 eliminating the need for
2350 2356 \family typewriter
2351 2357 print
2352 2358 \family default
2353 2359 statements or external debugging tools.
2354 2360 I often simply put a
2355 2361 \family typewriter
2356 2362 1/0
2357 2363 \family default
2358 2364 in a place where I want to take a look so that pdb gets called, quickly
2359 2365 view whatever variables I need to or test various pieces of code and then
2360 2366 remove the
2361 2367 \family typewriter
2362 2368 1/0
2363 2369 \family default
2364 2370 .
2365 2371 \newline
2366 2372 Note also that `
2367 2373 \family typewriter
2368 2374 %run -d
2369 2375 \family default
2370 2376 ' activates
2371 2377 \family typewriter
2372 2378 pdb
2373 2379 \family default
2374 2380 and automatically sets initial breakpoints for you to step through your
2375 2381 code, watch variables, etc.
2376 2382 See Sec.\InsetSpace ~
2377 2383
2378 2384 \begin_inset LatexCommand \ref{sec:cache_output}
2379 2385
2380 2386 \end_inset
2381 2387
2382 2388 for details.
2383 2389 \end_layout
2384 2390
2385 2391 \begin_layout Itemize
2386 2392 Use the output cache.
2387 2393 All output results are automatically stored in a global dictionary named
2388 2394
2389 2395 \family typewriter
2390 2396 Out
2391 2397 \family default
2392 2398 and variables named
2393 2399 \family typewriter
2394 2400 _1
2395 2401 \family default
2396 2402 ,
2397 2403 \family typewriter
2398 2404 _2
2399 2405 \family default
2400 2406 , etc.
2401 2407 alias them.
2402 2408 For example, the result of input line 4 is available either as
2403 2409 \family typewriter
2404 2410 Out[4]
2405 2411 \family default
2406 2412 or as
2407 2413 \family typewriter
2408 2414 _4
2409 2415 \family default
2410 2416 .
2411 2417 Additionally, three variables named
2412 2418 \family typewriter
2413 2419 _
2414 2420 \family default
2415 2421 ,
2416 2422 \family typewriter
2417 2423 __
2418 2424 \family default
2419 2425 and
2420 2426 \family typewriter
2421 2427 ___
2422 2428 \family default
2423 2429 are always kept updated with the for the last three results.
2424 2430 This allows you to recall any previous result and further use it for new
2425 2431 calculations.
2426 2432 See Sec.\InsetSpace ~
2427 2433
2428 2434 \begin_inset LatexCommand \ref{sec:cache_output}
2429 2435
2430 2436 \end_inset
2431 2437
2432 2438 for more.
2433 2439 \end_layout
2434 2440
2435 2441 \begin_layout Itemize
2436 2442 Put a '
2437 2443 \family typewriter
2438 2444 ;
2439 2445 \family default
2440 2446 ' at the end of a line to supress the printing of output.
2441 2447 This is useful when doing calculations which generate long output you are
2442 2448 not interested in seeing.
2443 2449 The
2444 2450 \family typewriter
2445 2451 _*
2446 2452 \family default
2447 2453 variables and the
2448 2454 \family typewriter
2449 2455 Out[]
2450 2456 \family default
2451 2457 list do get updated with the contents of the output, even if it is not
2452 2458 printed.
2453 2459 You can thus still access the generated results this way for further processing.
2454 2460 \end_layout
2455 2461
2456 2462 \begin_layout Itemize
2457 2463 A similar system exists for caching input.
2458 2464 All input is stored in a global list called
2459 2465 \family typewriter
2460 2466 In
2461 2467 \family default
2462 2468 , so you can re-execute lines 22 through 28 plus line 34 by typing
2463 2469 \family typewriter
2464 2470 'exec In[22:29]+In[34]'
2465 2471 \family default
2466 2472 (using Python slicing notation).
2467 2473 If you need to execute the same set of lines often, you can assign them
2468 2474 to a macro with the
2469 2475 \family typewriter
2470 2476 %macro
2471 2477 \family default
2472 2478
2473 2479 \family typewriter
2474 2480 function.
2475 2481
2476 2482 \family default
2477 2483 See sec.
2478 2484
2479 2485 \begin_inset LatexCommand \ref{sec:cache_input}
2480 2486
2481 2487 \end_inset
2482 2488
2483 2489 for more.
2484 2490 \end_layout
2485 2491
2486 2492 \begin_layout Itemize
2487 2493 Use your input history.
2488 2494 The
2489 2495 \family typewriter
2490 2496 %hist
2491 2497 \family default
2492 2498 command can show you all previous input, without line numbers if desired
2493 2499 (option
2494 2500 \family typewriter
2495 2501 -n
2496 2502 \family default
2497 2503 ) so you can directly copy and paste code either back in IPython or in a
2498 2504 text editor.
2499 2505 You can also save all your history by turning on logging via
2500 2506 \family typewriter
2501 2507 %logstart
2502 2508 \family default
2503 2509 ; these logs can later be either reloaded as IPython sessions or used as
2504 2510 code for your programs.
2505 2511 \end_layout
2506 2512
2507 2513 \begin_layout Itemize
2508 2514 Define your own system aliases.
2509 2515 Even though IPython gives you access to your system shell via the
2510 2516 \family typewriter
2511 2517 !
2512 2518 \family default
2513 2519 prefix, it is convenient to have aliases to the system commands you use
2514 2520 most often.
2515 2521 This allows you to work seamlessly from inside IPython with the same commands
2516 2522 you are used to in your system shell.
2517 2523 \newline
2518 2524 IPython comes with some pre-defined
2519 2525 aliases and a complete system for changing directories, both via a stack
2520 2526 (see
2521 2527 \family typewriter
2522 2528 %pushd
2523 2529 \family default
2524 2530 ,
2525 2531 \family typewriter
2526 2532 %popd
2527 2533 \family default
2528 2534 and
2529 2535 \family typewriter
2530 2536 %dhist
2531 2537 \family default
2532 2538 ) and via direct
2533 2539 \family typewriter
2534 2540 %cd
2535 2541 \family default
2536 2542 .
2537 2543 The latter keeps a history of visited directories and allows you to go
2538 2544 to any previously visited one.
2539 2545 \end_layout
2540 2546
2541 2547 \begin_layout Itemize
2542 2548 Use Python to manipulate the results of system commands.
2543 2549 The `
2544 2550 \family typewriter
2545 2551 !!
2546 2552 \family default
2547 2553 ' special syntax, and the
2548 2554 \family typewriter
2549 2555 %sc
2550 2556 \family default
2551 2557 and
2552 2558 \family typewriter
2553 2559 %sx
2554 2560 \family default
2555 2561 magic commands allow you to capture system output into Python variables.
2556 2562 \end_layout
2557 2563
2558 2564 \begin_layout Itemize
2559 2565 Expand python variables when calling the shell (either via
2560 2566 \family typewriter
2561 2567 `!'
2562 2568 \family default
2563 2569 and
2564 2570 \family typewriter
2565 2571 `!!'
2566 2572 \family default
2567 2573 or via aliases) by prepending a
2568 2574 \family typewriter
2569 2575 $
2570 2576 \family default
2571 2577 in front of them.
2572 2578 You can also expand complete python expressions.
2573 2579 See sec.\InsetSpace ~
2574 2580
2575 2581 \begin_inset LatexCommand \ref{sub:System-shell-access}
2576 2582
2577 2583 \end_inset
2578 2584
2579 2585 for more.
2580 2586 \end_layout
2581 2587
2582 2588 \begin_layout Itemize
2583 2589 Use profiles to maintain different configurations (modules to load, function
2584 2590 definitions, option settings) for particular tasks.
2585 2591 You can then have customized versions of IPython for specific purposes.
2586 2592 See sec.\InsetSpace ~
2587 2593
2588 2594 \begin_inset LatexCommand \ref{sec:profiles}
2589 2595
2590 2596 \end_inset
2591 2597
2592 2598 for more.
2593 2599 \end_layout
2594 2600
2595 2601 \begin_layout Itemize
2596 2602 Embed IPython in your programs.
2597 2603 A few lines of code are enough to load a complete IPython inside your own
2598 2604 programs, giving you the ability to work with your data interactively after
2599 2605 automatic processing has been completed.
2600 2606 See sec.\InsetSpace ~
2601 2607
2602 2608 \begin_inset LatexCommand \ref{sec:embed}
2603 2609
2604 2610 \end_inset
2605 2611
2606 2612 for more.
2607 2613 \end_layout
2608 2614
2609 2615 \begin_layout Itemize
2610 2616 Use the Python profiler.
2611 2617 When dealing with performance issues, the
2612 2618 \family typewriter
2613 2619 %run
2614 2620 \family default
2615 2621 command with a
2616 2622 \family typewriter
2617 2623 -p
2618 2624 \family default
2619 2625 option allows you to run complete programs under the control of the Python
2620 2626 profiler.
2621 2627 The
2622 2628 \family typewriter
2623 2629 %prun
2624 2630 \family default
2625 2631 command does a similar job for single Python expressions (like function
2626 2632 calls).
2627 2633 \end_layout
2628 2634
2629 2635 \begin_layout Itemize
2630 2636 Use the IPython.demo.Demo class to load any Python script as an interactive
2631 2637 demo.
2632 2638 With a minimal amount of simple markup, you can control the execution of
2633 2639 the script, stopping as needed.
2634 2640 See sec.\InsetSpace ~
2635 2641
2636 2642 \begin_inset LatexCommand \ref{sec:interactive-demos}
2637 2643
2638 2644 \end_inset
2639 2645
2640 2646 for more.
2641 2647 \end_layout
2642 2648
2643 2649 \begin_layout Subsection
2644 2650 Source code handling tips
2645 2651 \end_layout
2646 2652
2647 2653 \begin_layout Standard
2648 2654 IPython is a line-oriented program, without full control of the terminal.
2649 2655 Therefore, it doesn't support true multiline editing.
2650 2656 However, it has a number of useful tools to help you in dealing effectively
2651 2657 with more complex editing.
2652 2658 \end_layout
2653 2659
2654 2660 \begin_layout Standard
2655 2661 The
2656 2662 \family typewriter
2657 2663 %edit
2658 2664 \family default
2659 2665 command gives a reasonable approximation of multiline editing, by invoking
2660 2666 your favorite editor on the spot.
2661 2667 IPython will execute the code you type in there as if it were typed interactive
2662 2668 ly.
2663 2669 Type
2664 2670 \family typewriter
2665 2671 %edit?
2666 2672 \family default
2667 2673 for the full details on the edit command.
2668 2674 \end_layout
2669 2675
2670 2676 \begin_layout Standard
2671 2677 If you have typed various commands during a session, which you'd like to
2672 2678 reuse, IPython provides you with a number of tools.
2673 2679 Start by using
2674 2680 \family typewriter
2675 2681 %hist
2676 2682 \family default
2677 2683 to see your input history, so you can see the line numbers of all input.
2678 2684 Let us say that you'd like to reuse lines 10 through 20, plus lines 24
2679 2685 and 28.
2680 2686 All the commands below can operate on these with the syntax
2681 2687 \end_layout
2682 2688
2683 2689 \begin_layout LyX-Code
2684 2690 %command 10-20 24 28
2685 2691 \end_layout
2686 2692
2687 2693 \begin_layout Standard
2688 2694 where the command given can be:
2689 2695 \end_layout
2690 2696
2691 2697 \begin_layout Itemize
2692 2698
2693 2699 \family typewriter
2694 2700 %macro <macroname>
2695 2701 \family default
2696 2702 : this stores the lines into a variable which, when called at the prompt,
2697 2703 re-executes the input.
2698 2704 Macros can be edited later using
2699 2705 \family typewriter
2700 2706 `%edit macroname
2701 2707 \family default
2702 2708 ', and they can be stored persistently across sessions with `
2703 2709 \family typewriter
2704 2710 %store macroname
2705 2711 \family default
2706 2712 ' (the storage system is per-profile).
2707 2713 The combination of quick macros, persistent storage and editing, allows
2708 2714 you to easily refine quick-and-dirty interactive input into permanent utilities
2709 2715 , always available both in IPython and as files for general reuse.
2710 2716 \end_layout
2711 2717
2712 2718 \begin_layout Itemize
2713 2719
2714 2720 \family typewriter
2715 2721 %edit
2716 2722 \family default
2717 2723 : this will open a text editor with those lines pre-loaded for further modificat
2718 2724 ion.
2719 2725 It will then execute the resulting file's contents as if you had typed
2720 2726 it at the prompt.
2721 2727 \end_layout
2722 2728
2723 2729 \begin_layout Itemize
2724 2730
2725 2731 \family typewriter
2726 2732 %save <filename>
2727 2733 \family default
2728 2734 : this saves the lines directly to a named file on disk.
2729 2735 \end_layout
2730 2736
2731 2737 \begin_layout Standard
2732 2738 While
2733 2739 \family typewriter
2734 2740 %macro
2735 2741 \family default
2736 2742 saves input lines into memory for interactive re-execution, sometimes you'd
2737 2743 like to save your input directly to a file.
2738 2744 The
2739 2745 \family typewriter
2740 2746 %save
2741 2747 \family default
2742 2748 magic does this: its input sytnax is the same as
2743 2749 \family typewriter
2744 2750 %macro
2745 2751 \family default
2746 2752 , but it saves your input directly to a Python file.
2747 2753 Note that the
2748 2754 \family typewriter
2749 2755 %logstart
2750 2756 \family default
2751 2757 command also saves input, but it logs
2752 2758 \emph on
2753 2759 all
2754 2760 \emph default
2755 2761 input to disk (though you can temporarily suspend it and reactivate it
2756 2762 with
2757 2763 \family typewriter
2758 2764 %logoff/%logon
2759 2765 \family default
2760 2766 );
2761 2767 \family typewriter
2762 2768 %save
2763 2769 \family default
2764 2770 allows you to select which lines of input you need to save.
2765 2771 \end_layout
2766 2772
2767 2773 \begin_layout Subsubsection*
2768 2774 Lightweight 'version control'
2769 2775 \end_layout
2770 2776
2771 2777 \begin_layout Standard
2772 2778 When you call
2773 2779 \family typewriter
2774 2780 %edit
2775 2781 \family default
2776 2782 with no arguments, IPython opens an empty editor with a temporary file,
2777 2783 and it returns the contents of your editing session as a string variable.
2778 2784 Thanks to IPython's output caching mechanism, this is automatically stored:
2779 2785 \end_layout
2780 2786
2781 2787 \begin_layout LyX-Code
2782 2788 In [1]: %edit
2783 2789 \end_layout
2784 2790
2785 2791 \begin_layout LyX-Code
2786 2792 IPython will make a temporary file named: /tmp/ipython_edit_yR-HCN.py
2787 2793 \end_layout
2788 2794
2789 2795 \begin_layout LyX-Code
2790 2796 Editing...
2791 2797 done.
2792 2798 Executing edited code...
2793 2799 \end_layout
2794 2800
2795 2801 \begin_layout LyX-Code
2796 2802 hello - this is a temporary file
2797 2803 \end_layout
2798 2804
2799 2805 \begin_layout LyX-Code
2800 2806 Out[1]: "print 'hello - this is a temporary file'
2801 2807 \backslash
2802 2808 n"
2803 2809 \end_layout
2804 2810
2805 2811 \begin_layout Standard
2806 2812 Now, if you call
2807 2813 \family typewriter
2808 2814 `%edit -p'
2809 2815 \family default
2810 2816 , IPython tries to open an editor with the same data as the last time you
2811 2817 used
2812 2818 \family typewriter
2813 2819 %edit
2814 2820 \family default
2815 2821 .
2816 2822 So if you haven't used
2817 2823 \family typewriter
2818 2824 %edit
2819 2825 \family default
2820 2826 in the meantime, this same contents will reopen; however, it will be done
2821 2827 in a
2822 2828 \emph on
2823 2829 new file
2824 2830 \emph default
2825 2831 .
2826 2832 This means that if you make changes and you later want to find an old version,
2827 2833 you can always retrieve it by using its output number, via
2828 2834 \family typewriter
2829 2835 `%edit _NN'
2830 2836 \family default
2831 2837 , where
2832 2838 \family typewriter
2833 2839 NN
2834 2840 \family default
2835 2841 is the number of the output prompt.
2836 2842 \end_layout
2837 2843
2838 2844 \begin_layout Standard
2839 2845 Continuing with the example above, this should illustrate this idea:
2840 2846 \end_layout
2841 2847
2842 2848 \begin_layout LyX-Code
2843 2849 In [2]: edit -p
2844 2850 \end_layout
2845 2851
2846 2852 \begin_layout LyX-Code
2847 2853 IPython will make a temporary file named: /tmp/ipython_edit_nA09Qk.py
2848 2854 \end_layout
2849 2855
2850 2856 \begin_layout LyX-Code
2851 2857 Editing...
2852 2858 done.
2853 2859 Executing edited code...
2854 2860 \end_layout
2855 2861
2856 2862 \begin_layout LyX-Code
2857 2863 hello - now I made some changes
2858 2864 \end_layout
2859 2865
2860 2866 \begin_layout LyX-Code
2861 2867 Out[2]: "print 'hello - now I made some changes'
2862 2868 \backslash
2863 2869 n"
2864 2870 \end_layout
2865 2871
2866 2872 \begin_layout LyX-Code
2867 2873 In [3]: edit _1
2868 2874 \end_layout
2869 2875
2870 2876 \begin_layout LyX-Code
2871 2877 IPython will make a temporary file named: /tmp/ipython_edit_gy6-zD.py
2872 2878 \end_layout
2873 2879
2874 2880 \begin_layout LyX-Code
2875 2881 Editing...
2876 2882 done.
2877 2883 Executing edited code...
2878 2884 \end_layout
2879 2885
2880 2886 \begin_layout LyX-Code
2881 2887 hello - this is a temporary file
2882 2888 \end_layout
2883 2889
2884 2890 \begin_layout LyX-Code
2885 2891 IPython version control at work :)
2886 2892 \end_layout
2887 2893
2888 2894 \begin_layout LyX-Code
2889 2895 Out[3]: "print 'hello - this is a temporary file'
2890 2896 \backslash
2891 2897 nprint 'IPython version control at work :)'
2892 2898 \backslash
2893 2899 n"
2894 2900 \end_layout
2895 2901
2896 2902 \begin_layout Standard
2897 2903 This section was written after a contribution by Alexander Belchenko on
2898 2904 the IPython user list.
2899 2905 \end_layout
2900 2906
2901 2907 \begin_layout LyX-Code
2902 2908
2903 2909 \end_layout
2904 2910
2905 2911 \begin_layout Subsection
2906 2912 Effective logging
2907 2913 \end_layout
2908 2914
2909 2915 \begin_layout Standard
2910 2916 A very useful suggestion sent in by Robert Kern follows:
2911 2917 \end_layout
2912 2918
2913 2919 \begin_layout Standard
2914 2920 I recently happened on a nifty way to keep tidy per-project log files.
2915 2921 I made a profile for my project (which is called "parkfield").
2916 2922 \end_layout
2917 2923
2918 2924 \begin_layout LyX-Code
2919 2925 include ipythonrc
2920 2926 \end_layout
2921 2927
2922 2928 \begin_layout LyX-Code
2923 2929 # cancel earlier logfile invocation:
2924 2930 \end_layout
2925 2931
2926 2932 \begin_layout LyX-Code
2927 2933 logfile ''
2928 2934 \end_layout
2929 2935
2930 2936 \begin_layout LyX-Code
2931 2937 execute import time
2932 2938 \end_layout
2933 2939
2934 2940 \begin_layout LyX-Code
2935 2941 execute __cmd = '/Users/kern/research/logfiles/parkfield-%s.log rotate'
2936 2942 \end_layout
2937 2943
2938 2944 \begin_layout LyX-Code
2939 2945 execute __IP.magic_logstart(__cmd % time.strftime('%Y-%m-%d'))
2940 2946 \end_layout
2941 2947
2942 2948 \begin_layout Standard
2943 2949 I also added a shell alias for convenience:
2944 2950 \end_layout
2945 2951
2946 2952 \begin_layout LyX-Code
2947 2953 alias parkfield="ipython -pylab -profile parkfield"
2948 2954 \end_layout
2949 2955
2950 2956 \begin_layout Standard
2951 2957 Now I have a nice little directory with everything I ever type in, organized
2952 2958 by project and date.
2953 2959 \end_layout
2954 2960
2955 2961 \begin_layout Standard
2956 2962
2957 2963 \series bold
2958 2964 Contribute your own:
2959 2965 \series default
2960 2966 If you have your own favorite tip on using IPython efficiently for a certain
2961 2967 task (especially things which can't be done in the normal Python interpreter),
2962 2968 don't hesitate to send it!
2963 2969 \end_layout
2964 2970
2965 2971 \begin_layout Section
2966 2972 Command-line use
2967 2973 \end_layout
2968 2974
2969 2975 \begin_layout Standard
2970 2976 You start IPython with the command:
2971 2977 \end_layout
2972 2978
2973 2979 \begin_layout Standard
2974 2980
2975 2981 \family typewriter
2976 2982 $ ipython [options] files
2977 2983 \end_layout
2978 2984
2979 2985 \begin_layout Standard
2980 2986 If invoked with no options, it executes all the files listed in sequence
2981 2987 and drops you into the interpreter while still acknowledging any options
2982 2988 you may have set in your ipythonrc file.
2983 2989 This behavior is different from standard Python, which when called as
2984 2990 \family typewriter
2985 2991 python -i
2986 2992 \family default
2987 2993 will only execute one file and ignore your configuration setup.
2988 2994 \end_layout
2989 2995
2990 2996 \begin_layout Standard
2991 2997 Please note that some of the configuration options are not available at
2992 2998 the command line, simply because they are not practical here.
2993 2999 Look into your ipythonrc configuration file for details on those.
2994 3000 This file typically installed in the
2995 3001 \family typewriter
2996 3002 $HOME/.ipython
2997 3003 \family default
2998 3004 directory.
2999 3005 For Windows users,
3000 3006 \family typewriter
3001 3007 $HOME
3002 3008 \family default
3003 3009 resolves to
3004 3010 \family typewriter
3005 3011 C:
3006 3012 \backslash
3007 3013
3008 3014 \backslash
3009 3015 Documents and Settings
3010 3016 \backslash
3011 3017
3012 3018 \backslash
3013 3019 YourUserName
3014 3020 \family default
3015 3021 in most instances.
3016 3022 In the rest of this text, we will refer to this directory as
3017 3023 \family typewriter
3018 3024 IPYTHONDIR
3019 3025 \family default
3020 3026 .
3021 3027 \end_layout
3022 3028
3023 3029 \begin_layout Subsection
3024 3030 \begin_inset LatexCommand \label{sec:threading-opts}
3025 3031
3026 3032 \end_inset
3027 3033
3028 3034 Special Threading Options
3029 3035 \end_layout
3030 3036
3031 3037 \begin_layout Standard
3032 3038 The following special options are ONLY valid at the beginning of the command
3033 3039 line, and not later.
3034 3040 This is because they control the initial- ization of ipython itself, before
3035 3041 the normal option-handling mechanism is active.
3036 3042 \end_layout
3037 3043
3038 3044 \begin_layout List
3039 3045 \labelwidthstring 00.00.0000
3040 3046
3041 3047 \family typewriter
3042 3048 \series bold
3043 3049 -gthread,\InsetSpace ~
3044 3050 -qthread,\InsetSpace ~
3045 3051 -q4thread,\InsetSpace ~
3046 3052 -wthread,\InsetSpace ~
3047 3053 -pylab:
3048 3054 \family default
3049 3055 \series default
3050 3056 Only
3051 3057 \emph on
3052 3058 one
3053 3059 \emph default
3054 3060 of these can be given, and it can only be given as the first option passed
3055 3061 to IPython (it will have no effect in any other position).
3056 3062 They provide threading support for the GTK, Qt (versions 3 and 4) and WXPython
3057 3063 toolkits, and for the matplotlib library.
3058 3064 \end_layout
3059 3065
3060 3066 \begin_layout List
3061 3067 \labelwidthstring 00.00.0000
3062 3068 \InsetSpace ~
3063 3069 With any of the first four options, IPython starts running a separate thread
3064 3070 for the graphical toolkit's operation, so that you can open and control
3065 3071 graphical elements from within an IPython command line, without blocking.
3066 3072 All four provide essentially the same functionality, respectively for GTK,
3067 3073 Qt3, Qt4 and WXWidgets (via their Python interfaces).
3068 3074 \end_layout
3069 3075
3070 3076 \begin_layout List
3071 3077 \labelwidthstring 00.00.0000
3072 3078 \InsetSpace ~
3073 3079 Note that with
3074 3080 \family typewriter
3075 3081 -wthread
3076 3082 \family default
3077 3083 , you can additionally use the -wxversion option to request a specific version
3078 3084 of wx to be used.
3079 3085 This requires that you have the
3080 3086 \family typewriter
3081 3087 wxversion
3082 3088 \family default
3083 3089 Python module installed, which is part of recent wxPython distributions.
3084 3090 \end_layout
3085 3091
3086 3092 \begin_layout List
3087 3093 \labelwidthstring 00.00.0000
3088 3094 \InsetSpace ~
3089 3095 If
3090 3096 \family typewriter
3091 3097 -pylab
3092 3098 \family default
3093 3099 is given, IPython loads special support for the mat plotlib library (
3094 3100 \begin_inset LatexCommand \htmlurl{http://matplotlib.sourceforge.net}
3095 3101
3096 3102 \end_inset
3097 3103
3098 3104 ), allowing interactive usage of any of its backends as defined in the user's
3099 3105
3100 3106 \family typewriter
3101 3107 ~/.matplotlib/matplotlibrc
3102 3108 \family default
3103 3109 file.
3104 3110 It automatically activates GTK, Qt or WX threading for IPyhton if the choice
3105 3111 of matplotlib backend requires it.
3106 3112 It also modifies the
3107 3113 \family typewriter
3108 3114 %run
3109 3115 \family default
3110 3116 command to correctly execute (without blocking) any matplotlib-based script
3111 3117 which calls
3112 3118 \family typewriter
3113 3119 show()
3114 3120 \family default
3115 3121 at the end.
3116 3122
3117 3123 \end_layout
3118 3124
3119 3125 \begin_layout List
3120 3126 \labelwidthstring 00.00.0000
3121 3127
3122 3128 \family typewriter
3123 3129 \series bold
3124 3130 -tk
3125 3131 \family default
3126 3132 \series default
3127 3133 The
3128 3134 \family typewriter
3129 3135 -g/q/q4/wthread
3130 3136 \family default
3131 3137 options, and
3132 3138 \family typewriter
3133 3139 -pylab
3134 3140 \family default
3135 3141 (if matplotlib is configured to use GTK, Qt3, Qt4 or WX), will normally
3136 3142 block Tk graphical interfaces.
3137 3143 This means that when either GTK, Qt or WX threading is active, any attempt
3138 3144 to open a Tk GUI will result in a dead window, and possibly cause the Python
3139 3145 interpreter to crash.
3140 3146 An extra option,
3141 3147 \family typewriter
3142 3148 -tk
3143 3149 \family default
3144 3150 , is available to address this issue.
3145 3151 It can
3146 3152 \emph on
3147 3153 only
3148 3154 \emph default
3149 3155 be given as a
3150 3156 \emph on
3151 3157 second
3152 3158 \emph default
3153 3159 option after any of the above (
3154 3160 \family typewriter
3155 3161 -gthread
3156 3162 \family default
3157 3163 ,
3158 3164 \family typewriter
3159 3165 -wthread
3160 3166 \family default
3161 3167 or
3162 3168 \family typewriter
3163 3169 -pylab
3164 3170 \family default
3165 3171 ).
3166 3172 \end_layout
3167 3173
3168 3174 \begin_layout List
3169 3175 \labelwidthstring 00.00.0000
3170 3176 \InsetSpace ~
3171 3177 If
3172 3178 \family typewriter
3173 3179 -tk
3174 3180 \family default
3175 3181 is given, IPython will try to coordinate Tk threading with GTK, Qt or WX.
3176 3182 This is however potentially unreliable, and you will have to test on your
3177 3183 platform and Python configuration to determine whether it works for you.
3178 3184 Debian users have reported success, apparently due to the fact that Debian
3179 3185 builds all of Tcl, Tk, Tkinter and Python with pthreads support.
3180 3186 Under other Linux environments (such as Fedora Core 2/3), this option has
3181 3187 caused random crashes and lockups of the Python interpreter.
3182 3188 Under other operating systems (Mac OSX and Windows), you'll need to try
3183 3189 it to find out, since currently no user reports are available.
3184 3190 \end_layout
3185 3191
3186 3192 \begin_layout List
3187 3193 \labelwidthstring 00.00.0000
3188 3194 \InsetSpace ~
3189 3195 There is unfortunately no way for IPython to determine at run time whether
3190 3196
3191 3197 \family typewriter
3192 3198 -tk
3193 3199 \family default
3194 3200 will work reliably or not, so you will need to do some experiments before
3195 3201 relying on it for regular work.
3196 3202
3197 3203 \end_layout
3198 3204
3199 3205 \begin_layout Subsection
3200 3206 \begin_inset LatexCommand \label{sec:cmd-line-opts}
3201 3207
3202 3208 \end_inset
3203 3209
3204 3210 Regular Options
3205 3211 \end_layout
3206 3212
3207 3213 \begin_layout Standard
3208 3214 After the above threading options have been given, regular options can follow
3209 3215 in any order.
3210 3216 All options can be abbreviated to their shortest non-ambiguous form and
3211 3217 are case-sensitive.
3212 3218 One or two dashes can be used.
3213 3219 Some options have an alternate short form, indicated after a
3214 3220 \family typewriter
3215 3221 |
3216 3222 \family default
3217 3223 .
3218 3224 \end_layout
3219 3225
3220 3226 \begin_layout Standard
3221 3227 Most options can also be set from your ipythonrc configuration file.
3222 3228 See the provided example for more details on what the options do.
3223 3229 Options given at the command line override the values set in the ipythonrc
3224 3230 file.
3225 3231 \end_layout
3226 3232
3227 3233 \begin_layout Standard
3228 3234 All options with a
3229 3235 \family typewriter
3230 3236 [no]
3231 3237 \family default
3232 3238 prepended can be specified in negated form (
3233 3239 \family typewriter
3234 3240 -nooption
3235 3241 \family default
3236 3242 instead of
3237 3243 \family typewriter
3238 3244 -option
3239 3245 \family default
3240 3246 ) to turn the feature off.
3241 3247 \end_layout
3242 3248
3243 3249 \begin_layout List
3244 3250 \labelwidthstring 00.00.0000
3245 3251
3246 3252 \family typewriter
3247 3253 \series bold
3248 3254 -help
3249 3255 \family default
3250 3256 \series default
3251 3257 : print a help message and exit.
3252 3258 \end_layout
3253 3259
3254 3260 \begin_layout List
3255 3261 \labelwidthstring 00.00.0000
3256 3262
3257 3263 \family typewriter
3258 3264 \series bold
3259 3265 -pylab:
3260 3266 \family default
3261 3267 \series default
3262 3268 this can
3263 3269 \emph on
3264 3270 only
3265 3271 \emph default
3266 3272 be given as the
3267 3273 \emph on
3268 3274 first
3269 3275 \emph default
3270 3276 option passed to IPython (it will have no effect in any other position).
3271 3277 It adds special support for the matplotlib library (
3272 3278 \begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
3273 3279
3274 3280 \end_inset
3275 3281
3276 3282 ), allowing interactive usage of any of its backends as defined in the user's
3277 3283
3278 3284 \family typewriter
3279 3285 .matplotlibrc
3280 3286 \family default
3281 3287 file.
3282 3288 It automatically activates GTK or WX threading for IPyhton if the choice
3283 3289 of matplotlib backend requires it.
3284 3290 It also modifies the
3285 3291 \family typewriter
3286 3292 %run
3287 3293 \family default
3288 3294 command to correctly execute (without blocking) any matplotlib-based script
3289 3295 which calls
3290 3296 \family typewriter
3291 3297 show()
3292 3298 \family default
3293 3299 at the end.
3294 3300 See Sec.\InsetSpace ~
3295 3301
3296 3302 \begin_inset LatexCommand \ref{sec:matplotlib-support}
3297 3303
3298 3304 \end_inset
3299 3305
3300 3306 for more details.
3301 3307 \end_layout
3302 3308
3303 3309 \begin_layout List
3304 3310 \labelwidthstring 00.00.0000
3305 3311
3306 3312 \family typewriter
3307 3313 \series bold
3308 3314 -autocall <val>:
3309 3315 \family default
3310 3316 \series default
3311 3317 Make IPython automatically call any callable object even if you didn't
3312 3318 type explicit parentheses.
3313 3319 For example, `str 43' becomes `str(43)' automatically.
3314 3320 The value can be `0' to disable the feature, `1' for
3315 3321 \emph on
3316 3322 smart
3317 3323 \emph default
3318 3324 autocall, where it is not applied if there are no more arguments on the
3319 3325 line, and `2' for
3320 3326 \emph on
3321 3327 full
3322 3328 \emph default
3323 3329 autocall, where all callable objects are automatically called (even if
3324 3330 no arguments are present).
3325 3331 The default is `1'.
3326 3332 \end_layout
3327 3333
3328 3334 \begin_layout List
3329 3335 \labelwidthstring 00.00.0000
3330 3336
3331 3337 \family typewriter
3332 3338 \series bold
3333 3339 -[no]autoindent:
3334 3340 \family default
3335 3341 \series default
3336 3342 Turn automatic indentation on/off.
3337 3343 \end_layout
3338 3344
3339 3345 \begin_layout List
3340 3346 \labelwidthstring 00.00.0000
3341 3347
3342 3348 \family typewriter
3343 3349 \series bold
3344 3350 -[no]automagic
3345 3351 \series default
3346 3352 :
3347 3353 \family default
3348 3354 make magic commands automatic (without needing their first character to
3349 3355 be
3350 3356 \family typewriter
3351 3357 %
3352 3358 \family default
3353 3359 ).
3354 3360 Type
3355 3361 \family typewriter
3356 3362 %magic
3357 3363 \family default
3358 3364 at the IPython prompt for more information.
3359 3365 \end_layout
3360 3366
3361 3367 \begin_layout List
3362 3368 \labelwidthstring 00.00.0000
3363 3369
3364 3370 \family typewriter
3365 3371 \series bold
3366 3372 -[no]autoedit_syntax:
3367 3373 \family default
3368 3374 \series default
3369 3375 When a syntax error occurs after editing a file, automatically open the
3370 3376 file to the trouble causing line for convenient fixing.
3371 3377
3372 3378 \end_layout
3373 3379
3374 3380 \begin_layout List
3375 3381 \labelwidthstring 00.00.0000
3376 3382
3377 3383 \family typewriter
3378 3384 \series bold
3379 3385 -[no]banner
3380 3386 \series default
3381 3387 :
3382 3388 \family default
3383 3389 Print the initial information banner (default on).
3384 3390 \end_layout
3385 3391
3386 3392 \begin_layout List
3387 3393 \labelwidthstring 00.00.0000
3388 3394
3389 3395 \family typewriter
3390 3396 \series bold
3391 3397 -c\InsetSpace ~
3392 3398 <command>:
3393 3399 \family default
3394 3400 \series default
3395 3401 execute the given command string, and set sys.argv to
3396 3402 \family typewriter
3397 3403 ['c']
3398 3404 \family default
3399 3405 .
3400 3406 This is similar to the
3401 3407 \family typewriter
3402 3408 -c
3403 3409 \family default
3404 3410 option in the normal Python interpreter.
3405 3411
3406 3412 \end_layout
3407 3413
3408 3414 \begin_layout List
3409 3415 \labelwidthstring 00.00.0000
3410 3416
3411 3417 \family typewriter
3412 3418 \series bold
3413 3419 -cache_size|cs\InsetSpace ~
3414 3420 <n>
3415 3421 \series default
3416 3422 :
3417 3423 \family default
3418 3424 size of the output cache (maximum number of entries to hold in memory).
3419 3425 The default is 1000, you can change it permanently in your config file.
3420 3426 Setting it to 0 completely disables the caching system, and the minimum
3421 3427 value accepted is 20 (if you provide a value less than 20, it is reset
3422 3428 to 0 and a warning is issued) This limit is defined because otherwise you'll
3423 3429 spend more time re-flushing a too small cache than working.
3424 3430 \end_layout
3425 3431
3426 3432 \begin_layout List
3427 3433 \labelwidthstring 00.00.0000
3428 3434
3429 3435 \family typewriter
3430 3436 \series bold
3431 3437 -classic|cl
3432 3438 \series default
3433 3439 :
3434 3440 \family default
3435 3441 Gives IPython a similar feel to the classic Python prompt.
3436 3442 \end_layout
3437 3443
3438 3444 \begin_layout List
3439 3445 \labelwidthstring 00.00.0000
3440 3446
3441 3447 \family typewriter
3442 3448 \series bold
3443 3449 -colors\InsetSpace ~
3444 3450 <scheme>:
3445 3451 \family default
3446 3452 \series default
3447 3453 Color scheme for prompts and exception reporting.
3448 3454 Currently implemented: NoColor, Linux and LightBG.
3449 3455 \end_layout
3450 3456
3451 3457 \begin_layout List
3452 3458 \labelwidthstring 00.00.0000
3453 3459
3454 3460 \family typewriter
3455 3461 \series bold
3456 3462 -[no]color_info:
3457 3463 \family default
3458 3464 \series default
3459 3465 IPython can display information about objects via a set of functions, and
3460 3466 optionally can use colors for this, syntax highlighting source code and
3461 3467 various other elements.
3462 3468 However, because this information is passed through a pager (like 'less')
3463 3469 and many pagers get confused with color codes, this option is off by default.
3464 3470 You can test it and turn it on permanently in your ipythonrc file if it
3465 3471 works for you.
3466 3472 As a reference, the 'less' pager supplied with Mandrake 8.2 works ok, but
3467 3473 that in RedHat 7.2 doesn't.
3468 3474 \end_layout
3469 3475
3470 3476 \begin_layout List
3471 3477 \labelwidthstring 00.00.0000
3472 3478 \InsetSpace ~
3473 3479 Test it and turn it on permanently if it works with your system.
3474 3480 The magic function
3475 3481 \family typewriter
3476 3482 %color_info
3477 3483 \family default
3478 3484 allows you to toggle this interactively for testing.
3479 3485 \end_layout
3480 3486
3481 3487 \begin_layout List
3482 3488 \labelwidthstring 00.00.0000
3483 3489
3484 3490 \family typewriter
3485 3491 \series bold
3486 3492 -[no]debug
3487 3493 \family default
3488 3494 \series default
3489 3495 : Show information about the loading process.
3490 3496 Very useful to pin down problems with your configuration files or to get
3491 3497 details about session restores.
3492 3498 \end_layout
3493 3499
3494 3500 \begin_layout List
3495 3501 \labelwidthstring 00.00.0000
3496 3502
3497 3503 \family typewriter
3498 3504 \series bold
3499 3505 -[no]deep_reload
3500 3506 \series default
3501 3507 :
3502 3508 \family default
3503 3509 IPython can use the
3504 3510 \family typewriter
3505 3511 deep_reload
3506 3512 \family default
3507 3513 module which reloads changes in modules recursively (it replaces the
3508 3514 \family typewriter
3509 3515 reload()
3510 3516 \family default
3511 3517 function, so you don't need to change anything to use it).
3512 3518
3513 3519 \family typewriter
3514 3520 deep_reload()
3515 3521 \family default
3516 3522 forces a full reload of modules whose code may have changed, which the
3517 3523 default
3518 3524 \family typewriter
3519 3525 reload()
3520 3526 \family default
3521 3527 function does not.
3522 3528 \end_layout
3523 3529
3524 3530 \begin_layout List
3525 3531 \labelwidthstring 00.00.0000
3526 3532 \InsetSpace ~
3527 3533 When deep_reload is off, IPython will use the normal
3528 3534 \family typewriter
3529 3535 reload()
3530 3536 \family default
3531 3537 , but deep_reload will still be available as
3532 3538 \family typewriter
3533 3539 dreload()
3534 3540 \family default
3535 3541 .
3536 3542 This feature is off by default [which means that you have both normal
3537 3543 \family typewriter
3538 3544 reload()
3539 3545 \family default
3540 3546 and
3541 3547 \family typewriter
3542 3548 dreload()
3543 3549 \family default
3544 3550 ].
3545 3551 \end_layout
3546 3552
3547 3553 \begin_layout List
3548 3554 \labelwidthstring 00.00.0000
3549 3555
3550 3556 \family typewriter
3551 3557 \series bold
3552 3558 -editor\InsetSpace ~
3553 3559 <name>
3554 3560 \family default
3555 3561 \series default
3556 3562 : Which editor to use with the
3557 3563 \family typewriter
3558 3564 %edit
3559 3565 \family default
3560 3566 command.
3561 3567 By default, IPython will honor your
3562 3568 \family typewriter
3563 3569 EDITOR
3564 3570 \family default
3565 3571 environment variable (if not set, vi is the Unix default and notepad the
3566 3572 Windows one).
3567 3573 Since this editor is invoked on the fly by IPython and is meant for editing
3568 3574 small code snippets, you may want to use a small, lightweight editor here
3569 3575 (in case your default
3570 3576 \family typewriter
3571 3577 EDITOR
3572 3578 \family default
3573 3579 is something like Emacs).
3574 3580 \end_layout
3575 3581
3576 3582 \begin_layout List
3577 3583 \labelwidthstring 00.00.0000
3578 3584
3579 3585 \family typewriter
3580 3586 \series bold
3581 3587 -ipythondir\InsetSpace ~
3582 3588 <name>
3583 3589 \series default
3584 3590 :
3585 3591 \family default
3586 3592 name of your IPython configuration directory
3587 3593 \family typewriter
3588 3594 IPYTHONDIR
3589 3595 \family default
3590 3596 .
3591 3597 This can also be specified through the environment variable
3592 3598 \family typewriter
3593 3599 IPYTHONDIR
3594 3600 \family default
3595 3601 .
3596 3602 \end_layout
3597 3603
3598 3604 \begin_layout List
3599 3605 \labelwidthstring 00.00.0000
3600 3606
3601 3607 \family typewriter
3602 3608 \series bold
3603 3609 -log|l
3604 3610 \family default
3605 3611 \series default
3606 3612 : generate a log file of all input.
3607 3613 The file is named
3608 3614 \family typewriter
3609 3615 ipython_log.py
3610 3616 \family default
3611 3617 in your current directory (which prevents logs from multiple IPython sessions
3612 3618 from trampling each other).
3613 3619 You can use this to later restore a session by loading your logfile as
3614 3620 a file to be executed with option
3615 3621 \family typewriter
3616 3622 -logplay
3617 3623 \family default
3618 3624 (see below).
3619 3625 \end_layout
3620 3626
3621 3627 \begin_layout List
3622 3628 \labelwidthstring 00.00.0000
3623 3629
3624 3630 \family typewriter
3625 3631 \series bold
3626 3632 -logfile|lf\InsetSpace ~
3627 3633 <name>
3628 3634 \series default
3629 3635 :
3630 3636 \family default
3631 3637 specify the name of your logfile.
3632 3638 \end_layout
3633 3639
3634 3640 \begin_layout List
3635 3641 \labelwidthstring 00.00.0000
3636 3642
3637 3643 \family typewriter
3638 3644 \series bold
3639 3645 -logplay|lp\InsetSpace ~
3640 3646 <name>
3641 3647 \series default
3642 3648 :
3643 3649 \family default
3644 3650 you can replay a previous log.
3645 3651 For restoring a session as close as possible to the state you left it in,
3646 3652 use this option (don't just run the logfile).
3647 3653 With
3648 3654 \family typewriter
3649 3655 -logplay
3650 3656 \family default
3651 3657 , IPython will try to reconstruct the previous working environment in full,
3652 3658 not just execute the commands in the logfile.
3653 3659 \end_layout
3654 3660
3655 3661 \begin_layout List
3656 3662 \labelwidthstring 00.00.0000
3657 3663 \InsetSpace ~
3658 3664 When a session is restored, logging is automatically turned on again with
3659 3665 the name of the logfile it was invoked with (it is read from the log header).
3660 3666 So once you've turned logging on for a session, you can quit IPython and
3661 3667 reload it as many times as you want and it will continue to log its history
3662 3668 and restore from the beginning every time.
3663 3669 \end_layout
3664 3670
3665 3671 \begin_layout List
3666 3672 \labelwidthstring 00.00.0000
3667 3673 \InsetSpace ~
3668 3674 Caveats: there are limitations in this option.
3669 3675 The history variables
3670 3676 \family typewriter
3671 3677 _i*
3672 3678 \family default
3673 3679 ,
3674 3680 \family typewriter
3675 3681 _*
3676 3682 \family default
3677 3683 and
3678 3684 \family typewriter
3679 3685 _dh
3680 3686 \family default
3681 3687 don't get restored properly.
3682 3688 In the future we will try to implement full session saving by writing and
3683 3689 retrieving a 'snapshot' of the memory state of IPython.
3684 3690 But our first attempts failed because of inherent limitations of Python's
3685 3691 Pickle module, so this may have to wait.
3686 3692 \end_layout
3687 3693
3688 3694 \begin_layout List
3689 3695 \labelwidthstring 00.00.0000
3690 3696
3691 3697 \family typewriter
3692 3698 \series bold
3693 3699 -[no]messages
3694 3700 \series default
3695 3701 :
3696 3702 \family default
3697 3703 Print messages which IPython collects about its startup process (default
3698 3704 on).
3699 3705 \end_layout
3700 3706
3701 3707 \begin_layout List
3702 3708 \labelwidthstring 00.00.0000
3703 3709
3704 3710 \family typewriter
3705 3711 \series bold
3706 3712 -[no]pdb
3707 3713 \family default
3708 3714 \series default
3709 3715 : Automatically call the pdb debugger after every uncaught exception.
3710 3716 If you are used to debugging using pdb, this puts you automatically inside
3711 3717 of it after any call (either in IPython or in code called by it) which
3712 3718 triggers an exception which goes uncaught.
3713 3719 \end_layout
3714 3720
3715 3721 \begin_layout List
3716 3722 \labelwidthstring 00.00.0000
3717 3723
3718 3724 \family typewriter
3719 3725 \series bold
3720 3726 -[no]pprint
3721 3727 \series default
3722 3728 :
3723 3729 \family default
3724 3730 ipython can optionally use the pprint (pretty printer) module for displaying
3725 3731 results.
3726 3732 pprint tends to give a nicer display of nested data structures.
3727 3733 If you like it, you can turn it on permanently in your config file (default
3728 3734 off).
3729 3735 \end_layout
3730 3736
3731 3737 \begin_layout List
3732 3738 \labelwidthstring 00.00.0000
3733 3739
3734 3740 \family typewriter
3735 3741 \series bold
3736 3742 -profile|p <name>
3737 3743 \series default
3738 3744 :
3739 3745 \family default
3740 3746 assume that your config file is
3741 3747 \family typewriter
3742 3748 ipythonrc-<name>
3743 3749 \family default
3744 3750 (looks in current dir first, then in
3745 3751 \family typewriter
3746 3752 IPYTHONDIR
3747 3753 \family default
3748 3754 ).
3749 3755 This is a quick way to keep and load multiple config files for different
3750 3756 tasks, especially if you use the include option of config files.
3751 3757 You can keep a basic
3752 3758 \family typewriter
3753 3759 IPYTHONDIR/ipythonrc
3754 3760 \family default
3755 3761 file and then have other 'profiles' which include this one and load extra
3756 3762 things for particular tasks.
3757 3763 For example:
3758 3764 \end_layout
3759 3765
3760 3766 \begin_layout List
3761 3767 \labelwidthstring 00.00.0000
3762 3768
3763 3769 \family typewriter
3764 3770 \InsetSpace ~
3765 3771
3766 3772 \family default
3767 3773 1.
3768 3774
3769 3775 \family typewriter
3770 3776 $HOME/.ipython/ipythonrc
3771 3777 \family default
3772 3778 : load basic things you always want.
3773 3779 \end_layout
3774 3780
3775 3781 \begin_layout List
3776 3782 \labelwidthstring 00.00.0000
3777 3783
3778 3784 \family typewriter
3779 3785 \InsetSpace ~
3780 3786
3781 3787 \family default
3782 3788 2.
3783 3789
3784 3790 \family typewriter
3785 3791 $HOME/.ipython/ipythonrc-math
3786 3792 \family default
3787 3793 : load (1) and basic math-related modules.
3788 3794
3789 3795 \end_layout
3790 3796
3791 3797 \begin_layout List
3792 3798 \labelwidthstring 00.00.0000
3793 3799
3794 3800 \family typewriter
3795 3801 \InsetSpace ~
3796 3802
3797 3803 \family default
3798 3804 3.
3799 3805
3800 3806 \family typewriter
3801 3807 $HOME/.ipython/ipythonrc-numeric
3802 3808 \family default
3803 3809 : load (1) and Numeric and plotting modules.
3804 3810 \end_layout
3805 3811
3806 3812 \begin_layout List
3807 3813 \labelwidthstring 00.00.0000
3808 3814 \InsetSpace ~
3809 3815 Since it is possible to create an endless loop by having circular file
3810 3816 inclusions, IPython will stop if it reaches 15 recursive inclusions.
3811 3817 \end_layout
3812 3818
3813 3819 \begin_layout List
3814 3820 \labelwidthstring 00.00.0000
3815 3821
3816 3822 \family typewriter
3817 3823 \series bold
3818 3824 -prompt_in1|pi1\InsetSpace ~
3819 3825 <string>:
3820 3826 \family default
3821 3827 \series default
3822 3828 Specify the string used for input prompts.
3823 3829 Note that if you are using numbered prompts, the number is represented
3824 3830 with a '
3825 3831 \backslash
3826 3832 #' in the string.
3827 3833 Don't forget to quote strings with spaces embedded in them.
3828 3834 Default: '
3829 3835 \family typewriter
3830 3836 In\InsetSpace ~
3831 3837 [
3832 3838 \backslash
3833 3839 #]:
3834 3840 \family default
3835 3841 '.
3836 3842 Sec.\InsetSpace ~
3837 3843
3838 3844 \begin_inset LatexCommand \ref{sec:prompts}
3839 3845
3840 3846 \end_inset
3841 3847
3842 3848 discusses in detail all the available escapes to customize your prompts.
3843 3849 \end_layout
3844 3850
3845 3851 \begin_layout List
3846 3852 \labelwidthstring 00.00.0000
3847 3853
3848 3854 \family typewriter
3849 3855 \series bold
3850 3856 -prompt_in2|pi2\InsetSpace ~
3851 3857 <string>:
3852 3858 \family default
3853 3859 \series default
3854 3860 Similar to the previous option, but used for the continuation prompts.
3855 3861 The special sequence '
3856 3862 \family typewriter
3857 3863
3858 3864 \backslash
3859 3865 D
3860 3866 \family default
3861 3867 ' is similar to '
3862 3868 \family typewriter
3863 3869
3864 3870 \backslash
3865 3871 #
3866 3872 \family default
3867 3873 ', but with all digits replaced dots (so you can have your continuation
3868 3874 prompt aligned with your input prompt).
3869 3875 Default: '
3870 3876 \family typewriter
3871 3877 \InsetSpace ~
3872 3878 \InsetSpace ~
3873 3879 \InsetSpace ~
3874 3880 .
3875 3881 \backslash
3876 3882 D.:
3877 3883 \family default
3878 3884 ' (note three spaces at the start for alignment with '
3879 3885 \family typewriter
3880 3886 In\InsetSpace ~
3881 3887 [
3882 3888 \backslash
3883 3889 #]
3884 3890 \family default
3885 3891 ').
3886 3892 \end_layout
3887 3893
3888 3894 \begin_layout List
3889 3895 \labelwidthstring 00.00.0000
3890 3896
3891 3897 \family typewriter
3892 3898 \series bold
3893 3899 -prompt_out|po\InsetSpace ~
3894 3900 <string>:
3895 3901 \family default
3896 3902 \series default
3897 3903 String used for output prompts, also uses numbers like
3898 3904 \family typewriter
3899 3905 prompt_in1
3900 3906 \family default
3901 3907 .
3902 3908 Default: '
3903 3909 \family typewriter
3904 3910 Out[
3905 3911 \backslash
3906 3912 #]:
3907 3913 \family default
3908 3914 '
3909 3915 \end_layout
3910 3916
3911 3917 \begin_layout List
3912 3918 \labelwidthstring 00.00.0000
3913 3919
3914 3920 \family typewriter
3915 3921 \series bold
3916 3922 -quick
3917 3923 \family default
3918 3924 \series default
3919 3925 : start in bare bones mode (no config file loaded).
3920 3926 \end_layout
3921 3927
3922 3928 \begin_layout List
3923 3929 \labelwidthstring 00.00.0000
3924 3930
3925 3931 \family typewriter
3926 3932 \series bold
3927 3933 -rcfile\InsetSpace ~
3928 3934 <name>
3929 3935 \series default
3930 3936 :
3931 3937 \family default
3932 3938 name of your IPython resource configuration file.
3933 3939 Normally IPython loads ipythonrc (from current directory) or
3934 3940 \family typewriter
3935 3941 IPYTHONDIR/ipythonrc
3936 3942 \family default
3937 3943 .
3938 3944 \end_layout
3939 3945
3940 3946 \begin_layout List
3941 3947 \labelwidthstring 00.00.0000
3942 3948 \InsetSpace ~
3943 3949 If the loading of your config file fails, IPython starts with a bare bones
3944 3950 configuration (no modules loaded at all).
3945 3951 \end_layout
3946 3952
3947 3953 \begin_layout List
3948 3954 \labelwidthstring 00.00.0000
3949 3955
3950 3956 \family typewriter
3951 3957 \series bold
3952 3958 -[no]readline
3953 3959 \family default
3954 3960 \series default
3955 3961 : use the readline library, which is needed to support name completion and
3956 3962 command history, among other things.
3957 3963 It is enabled by default, but may cause problems for users of X/Emacs in
3958 3964 Python comint or shell buffers.
3959 3965 \end_layout
3960 3966
3961 3967 \begin_layout List
3962 3968 \labelwidthstring 00.00.0000
3963 3969 \InsetSpace ~
3964 3970 Note that X/Emacs 'eterm' buffers (opened with
3965 3971 \family typewriter
3966 3972 M-x\InsetSpace ~
3967 3973 term
3968 3974 \family default
3969 3975 ) support IPython's readline and syntax coloring fine, only 'emacs' (
3970 3976 \family typewriter
3971 3977 M-x\InsetSpace ~
3972 3978 shell
3973 3979 \family default
3974 3980 and
3975 3981 \family typewriter
3976 3982 C-c\InsetSpace ~
3977 3983 !
3978 3984 \family default
3979 3985 ) buffers do not.
3980 3986 \end_layout
3981 3987
3982 3988 \begin_layout List
3983 3989 \labelwidthstring 00.00.0000
3984 3990
3985 3991 \family typewriter
3986 3992 \series bold
3987 3993 -screen_length|sl\InsetSpace ~
3988 3994 <n>
3989 3995 \series default
3990 3996 :
3991 3997 \family default
3992 3998 number of lines of your screen.
3993 3999 This is used to control printing of very long strings.
3994 4000 Strings longer than this number of lines will be sent through a pager instead
3995 4001 of directly printed.
3996 4002 \end_layout
3997 4003
3998 4004 \begin_layout List
3999 4005 \labelwidthstring 00.00.0000
4000 4006 \InsetSpace ~
4001 4007 The default value for this is 0, which means IPython will auto-detect your
4002 4008 screen size every time it needs to print certain potentially long strings
4003 4009 (this doesn't change the behavior of the 'print' keyword, it's only triggered
4004 4010 internally).
4005 4011 If for some reason this isn't working well (it needs curses support), specify
4006 4012 it yourself.
4007 4013 Otherwise don't change the default.
4008 4014 \end_layout
4009 4015
4010 4016 \begin_layout List
4011 4017 \labelwidthstring 00.00.0000
4012 4018
4013 4019 \family typewriter
4014 4020 \series bold
4015 4021 -separate_in|si\InsetSpace ~
4016 4022 <string>
4017 4023 \series default
4018 4024 :
4019 4025 \family default
4020 4026 separator before input prompts.
4021 4027 Default: '
4022 4028 \family typewriter
4023 4029
4024 4030 \backslash
4025 4031 n
4026 4032 \family default
4027 4033 '
4028 4034 \end_layout
4029 4035
4030 4036 \begin_layout List
4031 4037 \labelwidthstring 00.00.0000
4032 4038
4033 4039 \family typewriter
4034 4040 \series bold
4035 4041 -separate_out|so\InsetSpace ~
4036 4042 <string>
4037 4043 \family default
4038 4044 \series default
4039 4045 : separator before output prompts.
4040 4046 Default: nothing.
4041 4047 \end_layout
4042 4048
4043 4049 \begin_layout List
4044 4050 \labelwidthstring 00.00.0000
4045 4051
4046 4052 \family typewriter
4047 4053 \series bold
4048 4054 -separate_out2|so2\InsetSpace ~
4049 4055 <string>
4050 4056 \series default
4051 4057 :
4052 4058 \family default
4053 4059 separator after output prompts.
4054 4060 Default: nothing.
4055 4061 \end_layout
4056 4062
4057 4063 \begin_layout List
4058 4064 \labelwidthstring 00.00.0000
4059 4065 \InsetSpace ~
4060 4066 For these three options, use the value 0 to specify no separator.
4061 4067 \end_layout
4062 4068
4063 4069 \begin_layout List
4064 4070 \labelwidthstring 00.00.0000
4065 4071
4066 4072 \family typewriter
4067 4073 \series bold
4068 4074 -nosep
4069 4075 \series default
4070 4076 :
4071 4077 \family default
4072 4078 shorthand for
4073 4079 \family typewriter
4074 4080 '-SeparateIn 0 -SeparateOut 0 -SeparateOut2 0'
4075 4081 \family default
4076 4082 .
4077 4083 Simply removes all input/output separators.
4078 4084 \end_layout
4079 4085
4080 4086 \begin_layout List
4081 4087 \labelwidthstring 00.00.0000
4082 4088
4083 4089 \family typewriter
4084 4090 \series bold
4085 4091 -upgrade
4086 4092 \family default
4087 4093 \series default
4088 4094 : allows you to upgrade your
4089 4095 \family typewriter
4090 4096 IPYTHONDIR
4091 4097 \family default
4092 4098 configuration when you install a new version of IPython.
4093 4099 Since new versions may include new command line options or example files,
4094 4100 this copies updated ipythonrc-type files.
4095 4101 However, it backs up (with a
4096 4102 \family typewriter
4097 4103 .old
4098 4104 \family default
4099 4105 extension) all files which it overwrites so that you can merge back any
4100 4106 customizations you might have in your personal files.
4101 4107 \end_layout
4102 4108
4103 4109 \begin_layout List
4104 4110 \labelwidthstring 00.00.0000
4105 4111
4106 4112 \family typewriter
4107 4113 \series bold
4108 4114 -Version
4109 4115 \series default
4110 4116 :
4111 4117 \family default
4112 4118 print version information and exit.
4113 4119 \end_layout
4114 4120
4115 4121 \begin_layout List
4116 4122 \labelwidthstring 00.00.0000
4117 4123
4118 4124 \family typewriter
4119 4125 \series bold
4120 4126 -wxversion\InsetSpace ~
4121 4127 <string>:
4122 4128 \family default
4123 4129 \series default
4124 4130 Select a specific version of wxPython (used in conjunction with
4125 4131 \family typewriter
4126 4132 -wthread
4127 4133 \family default
4128 4134 ).
4129 4135 Requires the wxversion module, part of recent wxPython distributions
4130 4136 \end_layout
4131 4137
4132 4138 \begin_layout List
4133 4139 \labelwidthstring 00.00.0000
4134 4140
4135 4141 \family typewriter
4136 4142 \series bold
4137 4143 -xmode\InsetSpace ~
4138 4144 <modename>
4139 4145 \series default
4140 4146 :
4141 4147 \family default
4142 4148 Mode for exception reporting.
4143 4149 \end_layout
4144 4150
4145 4151 \begin_layout List
4146 4152 \labelwidthstring 00.00.0000
4147 4153 \InsetSpace ~
4148 4154 Valid modes: Plain, Context and Verbose.
4149 4155 \end_layout
4150 4156
4151 4157 \begin_layout List
4152 4158 \labelwidthstring 00.00.0000
4153 4159 \InsetSpace ~
4154 4160 Plain: similar to python's normal traceback printing.
4155 4161 \end_layout
4156 4162
4157 4163 \begin_layout List
4158 4164 \labelwidthstring 00.00.0000
4159 4165 \InsetSpace ~
4160 4166 Context: prints 5 lines of context source code around each line in the
4161 4167 traceback.
4162 4168 \end_layout
4163 4169
4164 4170 \begin_layout List
4165 4171 \labelwidthstring 00.00.0000
4166 4172 \InsetSpace ~
4167 4173 Verbose: similar to Context, but additionally prints the variables currently
4168 4174 visible where the exception happened (shortening their strings if too long).
4169 4175 This can potentially be very slow, if you happen to have a huge data structure
4170 4176 whose string representation is complex to compute.
4171 4177 Your computer may appear to freeze for a while with cpu usage at 100%.
4172 4178 If this occurs, you can cancel the traceback with Ctrl-C (maybe hitting
4173 4179 it more than once).
4174 4180 \end_layout
4175 4181
4176 4182 \begin_layout Section
4177 4183 Interactive use
4178 4184 \end_layout
4179 4185
4180 4186 \begin_layout Standard
4181 4187
4182 4188 \series bold
4183 4189 Warning
4184 4190 \series default
4185 4191 : IPython relies on the existence of a global variable called
4186 4192 \family typewriter
4187 4193 __IP
4188 4194 \family default
4189 4195 which controls the shell itself.
4190 4196 If you redefine
4191 4197 \family typewriter
4192 4198 __IP
4193 4199 \family default
4194 4200 to anything, bizarre behavior will quickly occur.
4195 4201 \end_layout
4196 4202
4197 4203 \begin_layout Standard
4198 4204 Other than the above warning, IPython is meant to work as a drop-in replacement
4199 4205 for the standard interactive interpreter.
4200 4206 As such, any code which is valid python should execute normally under IPython
4201 4207 (cases where this is not true should be reported as bugs).
4202 4208 It does, however, offer many features which are not available at a standard
4203 4209 python prompt.
4204 4210 What follows is a list of these.
4205 4211 \end_layout
4206 4212
4207 4213 \begin_layout Subsection
4208 4214 Caution for Windows users
4209 4215 \end_layout
4210 4216
4211 4217 \begin_layout Standard
4212 4218 Windows, unfortunately, uses the `
4213 4219 \family typewriter
4214 4220
4215 4221 \backslash
4216 4222
4217 4223 \family default
4218 4224 ' character as a path separator.
4219 4225 This is a terrible choice, because `
4220 4226 \family typewriter
4221 4227
4222 4228 \backslash
4223 4229
4224 4230 \family default
4225 4231 ' also represents the escape character in most modern programming languages,
4226 4232 including Python.
4227 4233 For this reason, issuing many of the commands discussed below (especially
4228 4234 magics which affect the filesystem) with `
4229 4235 \family typewriter
4230 4236
4231 4237 \backslash
4232 4238
4233 4239 \family default
4234 4240 ' in them will cause strange errors.
4235 4241 \end_layout
4236 4242
4237 4243 \begin_layout Standard
4238 4244 A partial solution is to use instead the `
4239 4245 \family typewriter
4240 4246 /
4241 4247 \family default
4242 4248 ' character as a path separator, which Windows recognizes in
4243 4249 \emph on
4244 4250 most
4245 4251 \emph default
4246 4252 situations.
4247 4253 However, in Windows commands `
4248 4254 \family typewriter
4249 4255 /
4250 4256 \family default
4251 4257 ' flags options, so you can not use it for the root directory.
4252 4258 This means that paths beginning at the root must be typed in a contrived
4253 4259 manner like:
4254 4260 \newline
4255 4261
4256 4262 \family typewriter
4257 4263 %copy
4258 4264 \backslash
4259 4265 opt/foo/bar.txt
4260 4266 \backslash
4261 4267 tmp
4262 4268 \end_layout
4263 4269
4264 4270 \begin_layout Standard
4265 4271 There is no sensible thing IPython can do to truly work around this flaw
4266 4272 in Windows
4267 4273 \begin_inset Foot
4268 4274 status collapsed
4269 4275
4270 4276 \begin_layout Standard
4271 4277 If anyone comes up with a
4272 4278 \emph on
4273 4279 clean
4274 4280 \emph default
4275 4281 solution which works consistently and does not negatively impact other
4276 4282 platforms at all, I'll gladly accept a patch.
4277 4283 \end_layout
4278 4284
4279 4285 \end_inset
4280 4286
4281 4287 .
4282 4288 \end_layout
4283 4289
4284 4290 \begin_layout Subsection
4285 4291 \begin_inset LatexCommand \label{sec:magic}
4286 4292
4287 4293 \end_inset
4288 4294
4289 4295 Magic command system
4290 4296 \end_layout
4291 4297
4292 4298 \begin_layout Standard
4293 4299 IPython will treat any line whose first character is a
4294 4300 \family typewriter
4295 4301 %
4296 4302 \family default
4297 4303 as a special call to a 'magic' function.
4298 4304 These allow you to control the behavior of IPython itself, plus a lot of
4299 4305 system-type features.
4300 4306 They are all prefixed with a
4301 4307 \family typewriter
4302 4308 %
4303 4309 \family default
4304 4310 character, but parameters are given without parentheses or quotes.
4305 4311 \end_layout
4306 4312
4307 4313 \begin_layout Standard
4308 4314 Example: typing
4309 4315 \family typewriter
4310 4316 '%cd mydir'
4311 4317 \family default
4312 4318 (without the quotes) changes you working directory to
4313 4319 \family typewriter
4314 4320 'mydir'
4315 4321 \family default
4316 4322 , if it exists.
4317 4323 \end_layout
4318 4324
4319 4325 \begin_layout Standard
4320 4326 If you have 'automagic' enabled (in your
4321 4327 \family typewriter
4322 4328 ipythonrc
4323 4329 \family default
4324 4330 file, via the command line option
4325 4331 \family typewriter
4326 4332 -automagic
4327 4333 \family default
4328 4334 or with the
4329 4335 \family typewriter
4330 4336 %automagic
4331 4337 \family default
4332 4338 function), you don't need to type in the
4333 4339 \family typewriter
4334 4340 %
4335 4341 \family default
4336 4342 explicitly.
4337 4343 IPython will scan its internal list of magic functions and call one if
4338 4344 it exists.
4339 4345 With automagic on you can then just type '
4340 4346 \family typewriter
4341 4347 cd mydir
4342 4348 \family default
4343 4349 ' to go to directory '
4344 4350 \family typewriter
4345 4351 mydir
4346 4352 \family default
4347 4353 '.
4348 4354 The automagic system has the lowest possible precedence in name searches,
4349 4355 so defining an identifier with the same name as an existing magic function
4350 4356 will shadow it for automagic use.
4351 4357 You can still access the shadowed magic function by explicitly using the
4352 4358
4353 4359 \family typewriter
4354 4360 %
4355 4361 \family default
4356 4362 character at the beginning of the line.
4357 4363 \end_layout
4358 4364
4359 4365 \begin_layout Standard
4360 4366 An example (with automagic on) should clarify all this:
4361 4367 \end_layout
4362 4368
4363 4369 \begin_layout LyX-Code
4364 4370 In [1]: cd ipython # %cd is called by automagic
4365 4371 \end_layout
4366 4372
4367 4373 \begin_layout LyX-Code
4368 4374 /home/fperez/ipython
4369 4375 \end_layout
4370 4376
4371 4377 \begin_layout LyX-Code
4372 4378 In [2]: cd=1 # now cd is just a variable
4373 4379 \end_layout
4374 4380
4375 4381 \begin_layout LyX-Code
4376 4382 In [3]: cd ..
4377 4383 # and doesn't work as a function anymore
4378 4384 \end_layout
4379 4385
4380 4386 \begin_layout LyX-Code
4381 4387 ------------------------------------------------------------
4382 4388 \end_layout
4383 4389
4384 4390 \begin_layout LyX-Code
4385 4391 File "<console>", line 1
4386 4392 \end_layout
4387 4393
4388 4394 \begin_layout LyX-Code
4389 4395 cd ..
4390 4396 \end_layout
4391 4397
4392 4398 \begin_layout LyX-Code
4393 4399 ^
4394 4400 \end_layout
4395 4401
4396 4402 \begin_layout LyX-Code
4397 4403 SyntaxError: invalid syntax
4398 4404 \end_layout
4399 4405
4400 4406 \begin_layout LyX-Code
4401 4407
4402 4408 \end_layout
4403 4409
4404 4410 \begin_layout LyX-Code
4405 4411 In [4]: %cd ..
4406 4412 # but %cd always works
4407 4413 \end_layout
4408 4414
4409 4415 \begin_layout LyX-Code
4410 4416 /home/fperez
4411 4417 \end_layout
4412 4418
4413 4419 \begin_layout LyX-Code
4414 4420 In [5]: del cd # if you remove the cd variable
4415 4421 \end_layout
4416 4422
4417 4423 \begin_layout LyX-Code
4418 4424 In [6]: cd ipython # automagic can work again
4419 4425 \end_layout
4420 4426
4421 4427 \begin_layout LyX-Code
4422 4428 /home/fperez/ipython
4423 4429 \end_layout
4424 4430
4425 4431 \begin_layout Standard
4426 4432 You can define your own magic functions to extend the system.
4427 4433 The following is a snippet of code which shows how to do it.
4428 4434 It is provided as file
4429 4435 \family typewriter
4430 4436 example-magic.py
4431 4437 \family default
4432 4438 in the examples directory:
4433 4439 \end_layout
4434 4440
4435 4441 \begin_layout Standard
4436 4442 \begin_inset ERT
4437 4443 status open
4438 4444
4439 4445 \begin_layout Standard
4440 4446
4441 4447
4442 4448 \backslash
4443 4449 codelist{examples/example-magic.py}
4444 4450 \end_layout
4445 4451
4446 4452 \end_inset
4447 4453
4448 4454
4449 4455 \end_layout
4450 4456
4451 4457 \begin_layout Standard
4452 4458 You can also define your own aliased names for magic functions.
4453 4459 In your
4454 4460 \family typewriter
4455 4461 ipythonrc
4456 4462 \family default
4457 4463 file, placing a line like:
4458 4464 \end_layout
4459 4465
4460 4466 \begin_layout Standard
4461 4467
4462 4468 \family typewriter
4463 4469 execute __IP.magic_cl = __IP.magic_clear
4464 4470 \end_layout
4465 4471
4466 4472 \begin_layout Standard
4467 4473 will define
4468 4474 \family typewriter
4469 4475 %cl
4470 4476 \family default
4471 4477 as a new name for
4472 4478 \family typewriter
4473 4479 %clear
4474 4480 \family default
4475 4481 .
4476 4482 \end_layout
4477 4483
4478 4484 \begin_layout Standard
4479 4485 Type
4480 4486 \family typewriter
4481 4487 %magic
4482 4488 \family default
4483 4489 for more information, including a list of all available magic functions
4484 4490 at any time and their docstrings.
4485 4491 You can also type
4486 4492 \family typewriter
4487 4493 %magic_function_name?
4488 4494 \family default
4489 4495 (see sec.
4490 4496
4491 4497 \begin_inset LatexCommand \ref{sec:dyn-object-info}
4492 4498
4493 4499 \end_inset
4494 4500
4495 4501 for information on the
4496 4502 \family typewriter
4497 4503 '?'
4498 4504 \family default
4499 4505 system) to get information about any particular magic function you are
4500 4506 interested in.
4501 4507 \end_layout
4502 4508
4503 4509 \begin_layout Subsubsection
4504 4510 Magic commands
4505 4511 \end_layout
4506 4512
4507 4513 \begin_layout Standard
4508 4514 The rest of this section is automatically generated for each release from
4509 4515 the docstrings in the IPython code.
4510 4516 Therefore the formatting is somewhat minimal, but this method has the advantage
4511 4517 of having information always in sync with the code.
4512 4518 \end_layout
4513 4519
4514 4520 \begin_layout Standard
4515 4521 A list of all the magic commands available in IPython's
4516 4522 \emph on
4517 4523 default
4518 4524 \emph default
4519 4525 installation follows.
4520 4526 This is similar to what you'll see by simply typing
4521 4527 \family typewriter
4522 4528 %magic
4523 4529 \family default
4524 4530 at the prompt, but that will also give you information about magic commands
4525 4531 you may have added as part of your personal customizations.
4526 4532 \end_layout
4527 4533
4528 4534 \begin_layout Standard
4529 4535 \begin_inset Include \input{magic.tex}
4530 4536 preview false
4531 4537
4532 4538 \end_inset
4533 4539
4534 4540
4535 4541 \end_layout
4536 4542
4537 4543 \begin_layout Subsection
4538 4544 Access to the standard Python help
4539 4545 \end_layout
4540 4546
4541 4547 \begin_layout Standard
4542 4548 As of Python 2.1, a help system is available with access to object docstrings
4543 4549 and the Python manuals.
4544 4550 Simply type
4545 4551 \family typewriter
4546 4552 'help'
4547 4553 \family default
4548 4554 (no quotes) to access it.
4549 4555 You can also type
4550 4556 \family typewriter
4551 4557 help(object)
4552 4558 \family default
4553 4559 to obtain information about a given object, and
4554 4560 \family typewriter
4555 4561 help('keyword')
4556 4562 \family default
4557 4563 for information on a keyword.
4558 4564 As noted in sec.
4559 4565
4560 4566 \begin_inset LatexCommand \ref{sec:help-access}
4561 4567
4562 4568 \end_inset
4563 4569
4564 4570 , you need to properly configure your environment variable
4565 4571 \family typewriter
4566 4572 PYTHONDOCS
4567 4573 \family default
4568 4574 for this feature to work correctly.
4569 4575 \end_layout
4570 4576
4571 4577 \begin_layout Subsection
4572 4578 \begin_inset LatexCommand \label{sec:dyn-object-info}
4573 4579
4574 4580 \end_inset
4575 4581
4576 4582 Dynamic object information
4577 4583 \end_layout
4578 4584
4579 4585 \begin_layout Standard
4580 4586 Typing
4581 4587 \family typewriter
4582 4588 ?word
4583 4589 \family default
4584 4590 or
4585 4591 \family typewriter
4586 4592 word?
4587 4593 \family default
4588 4594 prints detailed information about an object.
4589 4595 If certain strings in the object are too long (docstrings, code, etc.) they
4590 4596 get snipped in the center for brevity.
4591 4597 This system gives access variable types and values, full source code for
4592 4598 any object (if available), function prototypes and other useful information.
4593 4599 \end_layout
4594 4600
4595 4601 \begin_layout Standard
4596 4602 Typing
4597 4603 \family typewriter
4598 4604 ??word
4599 4605 \family default
4600 4606 or
4601 4607 \family typewriter
4602 4608 word??
4603 4609 \family default
4604 4610 gives access to the full information without snipping long strings.
4605 4611 Long strings are sent to the screen through the
4606 4612 \family typewriter
4607 4613 less
4608 4614 \family default
4609 4615 pager if longer than the screen and printed otherwise.
4610 4616 On systems lacking the
4611 4617 \family typewriter
4612 4618 less
4613 4619 \family default
4614 4620 command, IPython uses a very basic internal pager.
4615 4621 \end_layout
4616 4622
4617 4623 \begin_layout Standard
4618 4624 The following magic functions are particularly useful for gathering information
4619 4625 about your working environment.
4620 4626 You can get more details by typing
4621 4627 \family typewriter
4622 4628 %magic
4623 4629 \family default
4624 4630 or querying them individually (use
4625 4631 \family typewriter
4626 4632 %function_name?
4627 4633 \family default
4628 4634 with or without the
4629 4635 \family typewriter
4630 4636 %
4631 4637 \family default
4632 4638 ), this is just a summary:
4633 4639 \end_layout
4634 4640
4635 4641 \begin_layout List
4636 4642 \labelwidthstring 00.00.0000
4637 4643
4638 4644 \family typewriter
4639 4645 \series bold
4640 4646 %pdoc\InsetSpace ~
4641 4647 <object>
4642 4648 \family default
4643 4649 \series default
4644 4650 : Print (or run through a pager if too long) the docstring for an object.
4645 4651 If the given object is a class, it will print both the class and the constructo
4646 4652 r docstrings.
4647 4653 \end_layout
4648 4654
4649 4655 \begin_layout List
4650 4656 \labelwidthstring 00.00.0000
4651 4657
4652 4658 \family typewriter
4653 4659 \series bold
4654 4660 %pdef\InsetSpace ~
4655 4661 <object>
4656 4662 \family default
4657 4663 \series default
4658 4664 : Print the definition header for any callable object.
4659 4665 If the object is a class, print the constructor information.
4660 4666 \end_layout
4661 4667
4662 4668 \begin_layout List
4663 4669 \labelwidthstring 00.00.0000
4664 4670
4665 4671 \family typewriter
4666 4672 \series bold
4667 4673 %psource\InsetSpace ~
4668 4674 <object>
4669 4675 \family default
4670 4676 \series default
4671 4677 : Print (or run through a pager if too long) the source code for an object.
4672 4678 \end_layout
4673 4679
4674 4680 \begin_layout List
4675 4681 \labelwidthstring 00.00.0000
4676 4682
4677 4683 \family typewriter
4678 4684 \series bold
4679 4685 %pfile\InsetSpace ~
4680 4686 <object>
4681 4687 \family default
4682 4688 \series default
4683 4689 : Show the entire source file where an object was defined via a pager, opening
4684 4690 it at the line where the object definition begins.
4685 4691 \end_layout
4686 4692
4687 4693 \begin_layout List
4688 4694 \labelwidthstring 00.00.0000
4689 4695
4690 4696 \family typewriter
4691 4697 \series bold
4692 4698 %who/%whos
4693 4699 \family default
4694 4700 \series default
4695 4701 : These functions give information about identifiers you have defined interactiv
4696 4702 ely (not things you loaded or defined in your configuration files).
4697 4703
4698 4704 \family typewriter
4699 4705 %who
4700 4706 \family default
4701 4707 just prints a list of identifiers and
4702 4708 \family typewriter
4703 4709 %whos
4704 4710 \family default
4705 4711 prints a table with some basic details about each identifier.
4706 4712 \end_layout
4707 4713
4708 4714 \begin_layout Standard
4709 4715 Note that the dynamic object information functions (
4710 4716 \family typewriter
4711 4717 ?/??, %pdoc, %pfile, %pdef, %psource
4712 4718 \family default
4713 4719 ) give you access to documentation even on things which are not really defined
4714 4720 as separate identifiers.
4715 4721 Try for example typing
4716 4722 \family typewriter
4717 4723 {}.get?
4718 4724 \family default
4719 4725 or after doing
4720 4726 \family typewriter
4721 4727 import os
4722 4728 \family default
4723 4729 , type
4724 4730 \family typewriter
4725 4731 os.path.abspath??
4726 4732 \family default
4727 4733 .
4728 4734 \end_layout
4729 4735
4730 4736 \begin_layout Subsection
4731 4737 \begin_inset LatexCommand \label{sec:readline}
4732 4738
4733 4739 \end_inset
4734 4740
4735 4741 Readline-based features
4736 4742 \end_layout
4737 4743
4738 4744 \begin_layout Standard
4739 4745 These features require the GNU readline library, so they won't work if your
4740 4746 Python installation lacks readline support.
4741 4747 We will first describe the default behavior IPython uses, and then how
4742 4748 to change it to suit your preferences.
4743 4749 \end_layout
4744 4750
4745 4751 \begin_layout Subsubsection
4746 4752 Command line completion
4747 4753 \end_layout
4748 4754
4749 4755 \begin_layout Standard
4750 4756 At any time, hitting TAB will complete any available python commands or
4751 4757 variable names, and show you a list of the possible completions if there's
4752 4758 no unambiguous one.
4753 4759 It will also complete filenames in the current directory if no python names
4754 4760 match what you've typed so far.
4755 4761 \end_layout
4756 4762
4757 4763 \begin_layout Subsubsection
4758 4764 Search command history
4759 4765 \end_layout
4760 4766
4761 4767 \begin_layout Standard
4762 4768 IPython provides two ways for searching through previous input and thus
4763 4769 reduce the need for repetitive typing:
4764 4770 \end_layout
4765 4771
4766 4772 \begin_layout Enumerate
4767 4773 Start typing, and then use
4768 4774 \family typewriter
4769 4775 Ctrl-p
4770 4776 \family default
4771 4777 (previous,up) and
4772 4778 \family typewriter
4773 4779 Ctrl-n
4774 4780 \family default
4775 4781 (next,down) to search through only the history items that match what you've
4776 4782 typed so far.
4777 4783 If you use
4778 4784 \family typewriter
4779 4785 Ctrl-p/Ctrl-n
4780 4786 \family default
4781 4787 at a blank prompt, they just behave like normal arrow keys.
4782 4788 \end_layout
4783 4789
4784 4790 \begin_layout Enumerate
4785 4791 Hit
4786 4792 \family typewriter
4787 4793 Ctrl-r
4788 4794 \family default
4789 4795 : opens a search prompt.
4790 4796 Begin typing and the system searches your history for lines that contain
4791 4797 what you've typed so far, completing as much as it can.
4792 4798 \end_layout
4793 4799
4794 4800 \begin_layout Subsubsection
4795 4801 Persistent command history across sessions
4796 4802 \end_layout
4797 4803
4798 4804 \begin_layout Standard
4799 4805 IPython will save your input history when it leaves and reload it next time
4800 4806 you restart it.
4801 4807 By default, the history file is named
4802 4808 \family typewriter
4803 4809 $IPYTHONDIR/history
4804 4810 \family default
4805 4811 , but if you've loaded a named profile, '
4806 4812 \family typewriter
4807 4813 -PROFILE_NAME
4808 4814 \family default
4809 4815 ' is appended to the name.
4810 4816 This allows you to keep separate histories related to various tasks: commands
4811 4817 related to numerical work will not be clobbered by a system shell history,
4812 4818 for example.
4813 4819 \end_layout
4814 4820
4815 4821 \begin_layout Subsubsection
4816 4822 Autoindent
4817 4823 \end_layout
4818 4824
4819 4825 \begin_layout Standard
4820 4826 IPython can recognize lines ending in ':' and indent the next line, while
4821 4827 also un-indenting automatically after 'raise' or 'return'.
4822 4828
4823 4829 \end_layout
4824 4830
4825 4831 \begin_layout Standard
4826 4832 This feature uses the readline library, so it will honor your
4827 4833 \family typewriter
4828 4834 ~/.inputrc
4829 4835 \family default
4830 4836 configuration (or whatever file your
4831 4837 \family typewriter
4832 4838 INPUTRC
4833 4839 \family default
4834 4840 variable points to).
4835 4841 Adding the following lines to your
4836 4842 \family typewriter
4837 4843 .inputrc
4838 4844 \family default
4839 4845 file can make indenting/unindenting more convenient (
4840 4846 \family typewriter
4841 4847 M-i
4842 4848 \family default
4843 4849 indents,
4844 4850 \family typewriter
4845 4851 M-u
4846 4852 \family default
4847 4853 unindents):
4848 4854 \end_layout
4849 4855
4850 4856 \begin_layout Standard
4851 4857
4852 4858 \family typewriter
4853 4859 $if Python
4854 4860 \newline
4855 4861 "
4856 4862 \backslash
4857 4863 M-i": "\InsetSpace ~
4858 4864 \InsetSpace ~
4859 4865 \InsetSpace ~
4860 4866 \InsetSpace ~
4861 4867 "
4862 4868 \newline
4863 4869 "
4864 4870 \backslash
4865 4871 M-u": "
4866 4872 \backslash
4867 4873 d
4868 4874 \backslash
4869 4875 d
4870 4876 \backslash
4871 4877 d
4872 4878 \backslash
4873 4879 d"
4874 4880 \newline
4875 4881 $endif
4876 4882 \end_layout
4877 4883
4878 4884 \begin_layout Standard
4879 4885 Note that there are 4 spaces between the quote marks after
4880 4886 \family typewriter
4881 4887 "M-i"
4882 4888 \family default
4883 4889 above.
4884 4890 \end_layout
4885 4891
4886 4892 \begin_layout Standard
4887 4893
4888 4894 \series bold
4889 4895 Warning:
4890 4896 \series default
4891 4897 this feature is ON by default, but it can cause problems with the pasting
4892 4898 of multi-line indented code (the pasted code gets re-indented on each line).
4893 4899 A magic function
4894 4900 \family typewriter
4895 4901 %autoindent
4896 4902 \family default
4897 4903 allows you to toggle it on/off at runtime.
4898 4904 You can also disable it permanently on in your
4899 4905 \family typewriter
4900 4906 ipythonrc
4901 4907 \family default
4902 4908 file (set
4903 4909 \family typewriter
4904 4910 autoindent 0
4905 4911 \family default
4906 4912 ).
4907 4913 \end_layout
4908 4914
4909 4915 \begin_layout Subsubsection
4910 4916 Customizing readline behavior
4911 4917 \end_layout
4912 4918
4913 4919 \begin_layout Standard
4914 4920 All these features are based on the GNU readline library, which has an extremely
4915 4921 customizable interface.
4916 4922 Normally, readline is configured via a file which defines the behavior
4917 4923 of the library; the details of the syntax for this can be found in the
4918 4924 readline documentation available with your system or on the Internet.
4919 4925 IPython doesn't read this file (if it exists) directly, but it does support
4920 4926 passing to readline valid options via a simple interface.
4921 4927 In brief, you can customize readline by setting the following options in
4922 4928 your
4923 4929 \family typewriter
4924 4930 ipythonrc
4925 4931 \family default
4926 4932 configuration file (note that these options can
4927 4933 \emph on
4928 4934 not
4929 4935 \emph default
4930 4936 be specified at the command line):
4931 4937 \end_layout
4932 4938
4933 4939 \begin_layout List
4934 4940 \labelwidthstring 00.00.0000
4935 4941
4936 4942 \family typewriter
4937 4943 \series bold
4938 4944 readline_parse_and_bind:
4939 4945 \family default
4940 4946 \series default
4941 4947 this option can appear as many times as you want, each time defining a
4942 4948 string to be executed via a
4943 4949 \family typewriter
4944 4950 readline.parse_and_bind()
4945 4951 \family default
4946 4952 command.
4947 4953 The syntax for valid commands of this kind can be found by reading the
4948 4954 documentation for the GNU readline library, as these commands are of the
4949 4955 kind which readline accepts in its configuration file.
4950 4956 \end_layout
4951 4957
4952 4958 \begin_layout List
4953 4959 \labelwidthstring 00.00.0000
4954 4960
4955 4961 \family typewriter
4956 4962 \series bold
4957 4963 readline_remove_delims:
4958 4964 \family default
4959 4965 \series default
4960 4966 a string of characters to be removed from the default word-delimiters list
4961 4967 used by readline, so that completions may be performed on strings which
4962 4968 contain them.
4963 4969 Do not change the default value unless you know what you're doing.
4964 4970 \end_layout
4965 4971
4966 4972 \begin_layout List
4967 4973 \labelwidthstring 00.00.0000
4968 4974
4969 4975 \family typewriter
4970 4976 \series bold
4971 4977 readline_omit__names
4972 4978 \family default
4973 4979 \series default
4974 4980 : when tab-completion is enabled, hitting
4975 4981 \family typewriter
4976 4982 <tab>
4977 4983 \family default
4978 4984 after a '
4979 4985 \family typewriter
4980 4986 .
4981 4987 \family default
4982 4988 ' in a name will complete all attributes of an object, including all the
4983 4989 special methods whose names include double underscores (like
4984 4990 \family typewriter
4985 4991 __getitem__
4986 4992 \family default
4987 4993 or
4988 4994 \family typewriter
4989 4995 __class__
4990 4996 \family default
4991 4997 ).
4992 4998 If you'd rather not see these names by default, you can set this option
4993 4999 to 1.
4994 5000 Note that even when this option is set, you can still see those names by
4995 5001 explicitly typing a
4996 5002 \family typewriter
4997 5003 _
4998 5004 \family default
4999 5005 after the period and hitting
5000 5006 \family typewriter
5001 5007 <tab>
5002 5008 \family default
5003 5009 : '
5004 5010 \family typewriter
5005 5011 name._<tab>
5006 5012 \family default
5007 5013 ' will always complete attribute names starting with '
5008 5014 \family typewriter
5009 5015 _
5010 5016 \family default
5011 5017 '.
5012 5018 \end_layout
5013 5019
5014 5020 \begin_layout List
5015 5021 \labelwidthstring 00.00.0000
5016 5022 \InsetSpace ~
5017 5023 This option is off by default so that new users see all attributes of any
5018 5024 objects they are dealing with.
5019 5025 \end_layout
5020 5026
5021 5027 \begin_layout Standard
5022 5028 You will find the default values along with a corresponding detailed explanation
5023 5029 in your
5024 5030 \family typewriter
5025 5031 ipythonrc
5026 5032 \family default
5027 5033 file.
5028 5034 \end_layout
5029 5035
5030 5036 \begin_layout Subsection
5031 5037 Session logging and restoring
5032 5038 \end_layout
5033 5039
5034 5040 \begin_layout Standard
5035 5041 You can log all input from a session either by starting IPython with the
5036 5042 command line switches
5037 5043 \family typewriter
5038 5044 -log
5039 5045 \family default
5040 5046 or
5041 5047 \family typewriter
5042 5048 -logfile
5043 5049 \family default
5044 5050 (see sec.
5045 5051
5046 5052 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
5047 5053
5048 5054 \end_inset
5049 5055
5050 5056 )or by activating the logging at any moment with the magic function
5051 5057 \family typewriter
5052 5058 %logstart
5053 5059 \family default
5054 5060 .
5055 5061
5056 5062 \end_layout
5057 5063
5058 5064 \begin_layout Standard
5059 5065 Log files can later be reloaded with the
5060 5066 \family typewriter
5061 5067 -logplay
5062 5068 \family default
5063 5069 option and IPython will attempt to 'replay' the log by executing all the
5064 5070 lines in it, thus restoring the state of a previous session.
5065 5071 This feature is not quite perfect, but can still be useful in many cases.
5066 5072 \end_layout
5067 5073
5068 5074 \begin_layout Standard
5069 5075 The log files can also be used as a way to have a permanent record of any
5070 5076 code you wrote while experimenting.
5071 5077 Log files are regular text files which you can later open in your favorite
5072 5078 text editor to extract code or to 'clean them up' before using them to
5073 5079 replay a session.
5074 5080 \end_layout
5075 5081
5076 5082 \begin_layout Standard
5077 5083 The
5078 5084 \family typewriter
5079 5085 %logstart
5080 5086 \family default
5081 5087 function for activating logging in mid-session is used as follows:
5082 5088 \end_layout
5083 5089
5084 5090 \begin_layout Standard
5085 5091
5086 5092 \family typewriter
5087 5093 %logstart [log_name [log_mode]]
5088 5094 \end_layout
5089 5095
5090 5096 \begin_layout Standard
5091 5097 If no name is given, it defaults to a file named
5092 5098 \family typewriter
5093 5099 'log'
5094 5100 \family default
5095 5101 in your IPYTHONDIR directory, in
5096 5102 \family typewriter
5097 5103 'rotate'
5098 5104 \family default
5099 5105 mode (see below).
5100 5106 \end_layout
5101 5107
5102 5108 \begin_layout Standard
5103 5109 '
5104 5110 \family typewriter
5105 5111 %logstart name
5106 5112 \family default
5107 5113 ' saves to file
5108 5114 \family typewriter
5109 5115 'name'
5110 5116 \family default
5111 5117 in
5112 5118 \family typewriter
5113 5119 'backup'
5114 5120 \family default
5115 5121 mode.
5116 5122 It saves your history up to that point and then continues logging.
5117 5123 \end_layout
5118 5124
5119 5125 \begin_layout Standard
5120 5126
5121 5127 \family typewriter
5122 5128 %logstart
5123 5129 \family default
5124 5130 takes a second optional parameter: logging mode.
5125 5131 This can be one of (note that the modes are given unquoted):
5126 5132 \end_layout
5127 5133
5128 5134 \begin_layout List
5129 5135 \labelwidthstring 00.00.0000
5130 5136
5131 5137 \family typewriter
5132 5138 over
5133 5139 \family default
5134 5140 : overwrite existing
5135 5141 \family typewriter
5136 5142 log_name
5137 5143 \family default
5138 5144 .
5139 5145 \end_layout
5140 5146
5141 5147 \begin_layout List
5142 5148 \labelwidthstring 00.00.0000
5143 5149
5144 5150 \family typewriter
5145 5151 backup
5146 5152 \family default
5147 5153 : rename (if exists) to
5148 5154 \family typewriter
5149 5155 log_name~
5150 5156 \family default
5151 5157 and start
5152 5158 \family typewriter
5153 5159 log_name
5154 5160 \family default
5155 5161 .
5156 5162 \end_layout
5157 5163
5158 5164 \begin_layout List
5159 5165 \labelwidthstring 00.00.0000
5160 5166
5161 5167 \family typewriter
5162 5168 append
5163 5169 \family default
5164 5170 : well, that says it.
5165 5171 \end_layout
5166 5172
5167 5173 \begin_layout List
5168 5174 \labelwidthstring 00.00.0000
5169 5175
5170 5176 \family typewriter
5171 5177 rotate
5172 5178 \family default
5173 5179 : create rotating logs
5174 5180 \family typewriter
5175 5181 log_name
5176 5182 \family default
5177 5183 .
5178 5184 \family typewriter
5179 5185 1~
5180 5186 \family default
5181 5187 ,
5182 5188 \family typewriter
5183 5189 log_name.2~
5184 5190 \family default
5185 5191 , etc.
5186 5192 \end_layout
5187 5193
5188 5194 \begin_layout Standard
5189 5195 The
5190 5196 \family typewriter
5191 5197 %logoff
5192 5198 \family default
5193 5199 and
5194 5200 \family typewriter
5195 5201 %logon
5196 5202 \family default
5197 5203 functions allow you to temporarily stop and resume logging to a file which
5198 5204 had previously been started with
5199 5205 \family typewriter
5200 5206 %logstart
5201 5207 \family default
5202 5208 .
5203 5209 They will fail (with an explanation) if you try to use them before logging
5204 5210 has been started.
5205 5211 \end_layout
5206 5212
5207 5213 \begin_layout Subsection
5208 5214 \begin_inset LatexCommand \label{sub:System-shell-access}
5209 5215
5210 5216 \end_inset
5211 5217
5212 5218 System shell access
5213 5219 \end_layout
5214 5220
5215 5221 \begin_layout Standard
5216 5222 Any input line beginning with a
5217 5223 \family typewriter
5218 5224 !
5219 5225 \family default
5220 5226 character is passed verbatim (minus the
5221 5227 \family typewriter
5222 5228 !
5223 5229 \family default
5224 5230 , of course) to the underlying operating system.
5225 5231 For example, typing
5226 5232 \family typewriter
5227 5233 !ls
5228 5234 \family default
5229 5235 will run
5230 5236 \family typewriter
5231 5237 'ls'
5232 5238 \family default
5233 5239 in the current directory.
5234 5240 \end_layout
5235 5241
5236 5242 \begin_layout Subsubsection
5237 5243 Manual capture of command output
5238 5244 \end_layout
5239 5245
5240 5246 \begin_layout Standard
5241 5247 If the input line begins with
5242 5248 \emph on
5243 5249 two
5244 5250 \emph default
5245 5251 exclamation marks,
5246 5252 \family typewriter
5247 5253 !!
5248 5254 \family default
5249 5255 , the command is executed but its output is captured and returned as a python
5250 5256 list, split on newlines.
5251 5257 Any output sent by the subprocess to standard error is printed separately,
5252 5258 so that the resulting list only captures standard output.
5253 5259 The
5254 5260 \family typewriter
5255 5261 !!
5256 5262 \family default
5257 5263 syntax is a shorthand for the
5258 5264 \family typewriter
5259 5265 %sx
5260 5266 \family default
5261 5267 magic command.
5262 5268 \end_layout
5263 5269
5264 5270 \begin_layout Standard
5265 5271 Finally, the
5266 5272 \family typewriter
5267 5273 %sc
5268 5274 \family default
5269 5275 magic (short for `shell capture') is similar to
5270 5276 \family typewriter
5271 5277 %sx
5272 5278 \family default
5273 5279 , but allowing more fine-grained control of the capture details, and storing
5274 5280 the result directly into a named variable.
5275 5281 \end_layout
5276 5282
5277 5283 \begin_layout Standard
5278 5284 See Sec.\InsetSpace ~
5279 5285
5280 5286 \begin_inset LatexCommand \ref{sec:magic}
5281 5287
5282 5288 \end_inset
5283 5289
5284 5290 for details on the magics
5285 5291 \family typewriter
5286 5292 %sc
5287 5293 \family default
5288 5294 and
5289 5295 \family typewriter
5290 5296 %sx
5291 5297 \family default
5292 5298 , or use IPython's own help (
5293 5299 \family typewriter
5294 5300 sc?
5295 5301 \family default
5296 5302 and
5297 5303 \family typewriter
5298 5304 sx?
5299 5305 \family default
5300 5306 ) for further details.
5301 5307 \end_layout
5302 5308
5303 5309 \begin_layout Standard
5304 5310 IPython also allows you to expand the value of python variables when making
5305 5311 system calls.
5306 5312 Any python variable or expression which you prepend with
5307 5313 \family typewriter
5308 5314 $
5309 5315 \family default
5310 5316 will get expanded before the system call is made.
5311 5317
5312 5318 \end_layout
5313 5319
5314 5320 \begin_layout Standard
5315 5321
5316 5322 \family typewriter
5317 5323 In [1]: pyvar='Hello world'
5318 5324 \newline
5319 5325 In [2]: !echo "A python variable: $pyvar"
5320 5326 \newline
5321 5327 A python
5322 5328 variable: Hello world
5323 5329 \end_layout
5324 5330
5325 5331 \begin_layout Standard
5326 5332 If you want the shell to actually see a literal
5327 5333 \family typewriter
5328 5334 $
5329 5335 \family default
5330 5336 , you need to type it twice:
5331 5337 \end_layout
5332 5338
5333 5339 \begin_layout Standard
5334 5340
5335 5341 \family typewriter
5336 5342 In [3]: !echo "A system variable: $$HOME"
5337 5343 \newline
5338 5344 A system variable: /home/fperez
5339 5345 \end_layout
5340 5346
5341 5347 \begin_layout Standard
5342 5348 You can pass arbitrary expressions, though you'll need to delimit them with
5343 5349
5344 5350 \family typewriter
5345 5351 {}
5346 5352 \family default
5347 5353 if there is ambiguity as to the extent of the expression:
5348 5354 \end_layout
5349 5355
5350 5356 \begin_layout Standard
5351 5357
5352 5358 \family typewriter
5353 5359 In [5]: x=10
5354 5360 \newline
5355 5361 In [6]: y=20
5356 5362 \newline
5357 5363 In [13]: !echo $x+y
5358 5364 \newline
5359 5365 10+y
5360 5366 \newline
5361 5367 In [7]: !echo ${x+y}
5362 5368 \newline
5363 5369 30
5364 5370
5365 5371 \end_layout
5366 5372
5367 5373 \begin_layout Standard
5368 5374 Even object attributes can be expanded:
5369 5375 \end_layout
5370 5376
5371 5377 \begin_layout Standard
5372 5378
5373 5379 \family typewriter
5374 5380 In [12]: !echo $sys.argv
5375 5381 \newline
5376 5382 [/home/fperez/usr/bin/ipython]
5377 5383 \end_layout
5378 5384
5379 5385 \begin_layout Subsection
5380 5386 System command aliases
5381 5387 \end_layout
5382 5388
5383 5389 \begin_layout Standard
5384 5390 The
5385 5391 \family typewriter
5386 5392 %alias
5387 5393 \family default
5388 5394 magic function and the
5389 5395 \family typewriter
5390 5396 alias
5391 5397 \family default
5392 5398 option in the
5393 5399 \family typewriter
5394 5400 ipythonrc
5395 5401 \family default
5396 5402 configuration file allow you to define magic functions which are in fact
5397 5403 system shell commands.
5398 5404 These aliases can have parameters.
5399 5405
5400 5406 \end_layout
5401 5407
5402 5408 \begin_layout Standard
5403 5409 '
5404 5410 \family typewriter
5405 5411 %alias alias_name cmd
5406 5412 \family default
5407 5413 ' defines '
5408 5414 \family typewriter
5409 5415 alias_name
5410 5416 \family default
5411 5417 ' as an alias for '
5412 5418 \family typewriter
5413 5419 cmd
5414 5420 \family default
5415 5421 '
5416 5422 \end_layout
5417 5423
5418 5424 \begin_layout Standard
5419 5425 Then, typing '
5420 5426 \family typewriter
5421 5427 %alias_name params
5422 5428 \family default
5423 5429 ' will execute the system command '
5424 5430 \family typewriter
5425 5431 cmd params
5426 5432 \family default
5427 5433 ' (from your underlying operating system).
5428 5434
5429 5435 \end_layout
5430 5436
5431 5437 \begin_layout Standard
5432 5438 You can also define aliases with parameters using
5433 5439 \family typewriter
5434 5440 %s
5435 5441 \family default
5436 5442 specifiers (one per parameter).
5437 5443 The following example defines the
5438 5444 \family typewriter
5439 5445 %parts
5440 5446 \family default
5441 5447 function as an alias to the command '
5442 5448 \family typewriter
5443 5449 echo first %s second %s
5444 5450 \family default
5445 5451 ' where each
5446 5452 \family typewriter
5447 5453 %s
5448 5454 \family default
5449 5455 will be replaced by a positional parameter to the call to
5450 5456 \family typewriter
5451 5457 %parts:
5452 5458 \end_layout
5453 5459
5454 5460 \begin_layout Standard
5455 5461
5456 5462 \family typewriter
5457 5463 In [1]: alias parts echo first %s second %s
5458 5464 \newline
5459 5465 In [2]: %parts A B
5460 5466 \newline
5461 5467 first A second
5462 5468 B
5463 5469 \newline
5464 5470 In [3]: %parts A
5465 5471 \newline
5466 5472 Incorrect number of arguments: 2 expected.
5467 5473
5468 5474 \newline
5469 5475 parts is an alias to: 'echo first %s second %s'
5470 5476 \end_layout
5471 5477
5472 5478 \begin_layout Standard
5473 5479 If called with no parameters,
5474 5480 \family typewriter
5475 5481 %alias
5476 5482 \family default
5477 5483 prints the table of currently defined aliases.
5478 5484 \end_layout
5479 5485
5480 5486 \begin_layout Standard
5481 5487 The
5482 5488 \family typewriter
5483 5489 %rehash/rehashx
5484 5490 \family default
5485 5491 magics allow you to load your entire
5486 5492 \family typewriter
5487 5493 $PATH
5488 5494 \family default
5489 5495 as ipython aliases.
5490 5496 See their respective docstrings (or sec.\InsetSpace ~
5491 5497
5492 5498 \begin_inset LatexCommand \ref{sec:magic}
5493 5499
5494 5500 \end_inset
5495 5501
5496 5502 for further details).
5497 5503 \end_layout
5498 5504
5499 5505 \begin_layout Subsection
5500 5506 \begin_inset LatexCommand \label{sec:dreload}
5501 5507
5502 5508 \end_inset
5503 5509
5504 5510 Recursive reload
5505 5511 \end_layout
5506 5512
5507 5513 \begin_layout Standard
5508 5514 The
5509 5515 \family typewriter
5510 5516 dreload
5511 5517 \family default
5512 5518 function does a recursive reload of a module: changes made to the module
5513 5519 since you imported will actually be available without having to exit.
5514 5520 \end_layout
5515 5521
5516 5522 \begin_layout Subsection
5517 5523 Verbose and colored exception traceback printouts
5518 5524 \end_layout
5519 5525
5520 5526 \begin_layout Standard
5521 5527 IPython provides the option to see very detailed exception tracebacks, which
5522 5528 can be especially useful when debugging large programs.
5523 5529 You can run any Python file with the
5524 5530 \family typewriter
5525 5531 %run
5526 5532 \family default
5527 5533 function to benefit from these detailed tracebacks.
5528 5534 Furthermore, both normal and verbose tracebacks can be colored (if your
5529 5535 terminal supports it) which makes them much easier to parse visually.
5530 5536 \end_layout
5531 5537
5532 5538 \begin_layout Standard
5533 5539 See the magic
5534 5540 \family typewriter
5535 5541 xmode
5536 5542 \family default
5537 5543 and
5538 5544 \family typewriter
5539 5545 colors
5540 5546 \family default
5541 5547 functions for details (just type
5542 5548 \family typewriter
5543 5549 %magic
5544 5550 \family default
5545 5551 ).
5546 5552 \end_layout
5547 5553
5548 5554 \begin_layout Standard
5549 5555 These features are basically a terminal version of Ka-Ping Yee's
5550 5556 \family typewriter
5551 5557 cgitb
5552 5558 \family default
5553 5559 module, now part of the standard Python library.
5554 5560 \end_layout
5555 5561
5556 5562 \begin_layout Subsection
5557 5563 \begin_inset LatexCommand \label{sec:cache_input}
5558 5564
5559 5565 \end_inset
5560 5566
5561 5567 Input caching system
5562 5568 \end_layout
5563 5569
5564 5570 \begin_layout Standard
5565 5571 IPython offers numbered prompts (In/Out) with input and output caching.
5566 5572 All input is saved and can be retrieved as variables (besides the usual
5567 5573 arrow key recall).
5568 5574 \end_layout
5569 5575
5570 5576 \begin_layout Standard
5571 5577 The following GLOBAL variables always exist (so don't overwrite them!):
5572 5578
5573 5579 \family typewriter
5574 5580 _i
5575 5581 \family default
5576 5582 : stores previous input.
5577 5583
5578 5584 \family typewriter
5579 5585 _ii
5580 5586 \family default
5581 5587 : next previous.
5582 5588
5583 5589 \family typewriter
5584 5590 _iii
5585 5591 \family default
5586 5592 : next-next previous.
5587 5593
5588 5594 \family typewriter
5589 5595 _ih
5590 5596 \family default
5591 5597 : a list of all input
5592 5598 \family typewriter
5593 5599 _ih[n]
5594 5600 \family default
5595 5601 is the input from line
5596 5602 \family typewriter
5597 5603 n
5598 5604 \family default
5599 5605 and this list is aliased to the global variable
5600 5606 \family typewriter
5601 5607 In
5602 5608 \family default
5603 5609 .
5604 5610 If you overwrite
5605 5611 \family typewriter
5606 5612 In
5607 5613 \family default
5608 5614 with a variable of your own, you can remake the assignment to the internal
5609 5615 list with a simple
5610 5616 \family typewriter
5611 5617 'In=_ih'
5612 5618 \family default
5613 5619 .
5614 5620 \end_layout
5615 5621
5616 5622 \begin_layout Standard
5617 5623 Additionally, global variables named
5618 5624 \family typewriter
5619 5625 _i<n>
5620 5626 \family default
5621 5627 are dynamically created (
5622 5628 \family typewriter
5623 5629 <n>
5624 5630 \family default
5625 5631 being the prompt counter), such that
5626 5632 \newline
5627 5633
5628 5634 \family typewriter
5629 5635 _i<n> == _ih[<n>] == In[<n>].
5630 5636 \end_layout
5631 5637
5632 5638 \begin_layout Standard
5633 5639 For example, what you typed at prompt 14 is available as
5634 5640 \family typewriter
5635 5641 _i14,
5636 5642 \family default
5637 5643
5638 5644 \family typewriter
5639 5645 _ih[14]
5640 5646 \family default
5641 5647 and
5642 5648 \family typewriter
5643 5649 In[14]
5644 5650 \family default
5645 5651 .
5646 5652 \end_layout
5647 5653
5648 5654 \begin_layout Standard
5649 5655 This allows you to easily cut and paste multi line interactive prompts by
5650 5656 printing them out: they print like a clean string, without prompt characters.
5651 5657 You can also manipulate them like regular variables (they are strings),
5652 5658 modify or exec them (typing
5653 5659 \family typewriter
5654 5660 'exec _i9'
5655 5661 \family default
5656 5662 will re-execute the contents of input prompt 9, '
5657 5663 \family typewriter
5658 5664 exec In[9:14]+In[18]
5659 5665 \family default
5660 5666 ' will re-execute lines 9 through 13 and line 18).
5661 5667 \end_layout
5662 5668
5663 5669 \begin_layout Standard
5664 5670 You can also re-execute multiple lines of input easily by using the magic
5665 5671
5666 5672 \family typewriter
5667 5673 %macro
5668 5674 \family default
5669 5675 function (which automates the process and allows re-execution without having
5670 5676 to type '
5671 5677 \family typewriter
5672 5678 exec
5673 5679 \family default
5674 5680 ' every time).
5675 5681 The macro system also allows you to re-execute previous lines which include
5676 5682 magic function calls (which require special processing).
5677 5683 Type
5678 5684 \family typewriter
5679 5685 %macro?
5680 5686 \family default
5681 5687 or see sec.
5682 5688
5683 5689 \begin_inset LatexCommand \ref{sec:magic}
5684 5690
5685 5691 \end_inset
5686 5692
5687 5693 for more details on the macro system.
5688 5694 \end_layout
5689 5695
5690 5696 \begin_layout Standard
5691 5697 A history function
5692 5698 \family typewriter
5693 5699 %hist
5694 5700 \family default
5695 5701 allows you to see any part of your input history by printing a range of
5696 5702 the
5697 5703 \family typewriter
5698 5704 _i
5699 5705 \family default
5700 5706 variables.
5701 5707 \end_layout
5702 5708
5703 5709 \begin_layout Subsection
5704 5710 \begin_inset LatexCommand \label{sec:cache_output}
5705 5711
5706 5712 \end_inset
5707 5713
5708 5714 Output caching system
5709 5715 \end_layout
5710 5716
5711 5717 \begin_layout Standard
5712 5718 For output that is returned from actions, a system similar to the input
5713 5719 cache exists but using
5714 5720 \family typewriter
5715 5721 _
5716 5722 \family default
5717 5723 instead of
5718 5724 \family typewriter
5719 5725 _i
5720 5726 \family default
5721 5727 .
5722 5728 Only actions that produce a result (NOT assignments, for example) are cached.
5723 5729 If you are familiar with Mathematica, IPython's
5724 5730 \family typewriter
5725 5731 _
5726 5732 \family default
5727 5733 variables behave exactly like Mathematica's
5728 5734 \family typewriter
5729 5735 %
5730 5736 \family default
5731 5737 variables.
5732 5738 \end_layout
5733 5739
5734 5740 \begin_layout Standard
5735 5741 The following GLOBAL variables always exist (so don't overwrite them!):
5736 5742
5737 5743 \end_layout
5738 5744
5739 5745 \begin_layout List
5740 5746 \labelwidthstring 00.00.0000
5741 5747
5742 5748 \family typewriter
5743 5749 \series bold
5744 5750 _
5745 5751 \family default
5746 5752 \series default
5747 5753 (a
5748 5754 \emph on
5749 5755 single
5750 5756 \emph default
5751 5757 underscore) : stores previous output, like Python's default interpreter.
5752 5758 \end_layout
5753 5759
5754 5760 \begin_layout List
5755 5761 \labelwidthstring 00.00.0000
5756 5762
5757 5763 \family typewriter
5758 5764 \series bold
5759 5765 __
5760 5766 \family default
5761 5767 \series default
5762 5768 (two underscores): next previous.
5763 5769 \end_layout
5764 5770
5765 5771 \begin_layout List
5766 5772 \labelwidthstring 00.00.0000
5767 5773
5768 5774 \family typewriter
5769 5775 \series bold
5770 5776 ___
5771 5777 \family default
5772 5778 \series default
5773 5779 (three underscores): next-next previous.
5774 5780 \end_layout
5775 5781
5776 5782 \begin_layout Standard
5777 5783 Additionally, global variables named
5778 5784 \family typewriter
5779 5785 _<n>
5780 5786 \family default
5781 5787 are dynamically created (
5782 5788 \family typewriter
5783 5789 <n>
5784 5790 \family default
5785 5791 being the prompt counter), such that the result of output
5786 5792 \family typewriter
5787 5793 <n>
5788 5794 \family default
5789 5795 is always available as
5790 5796 \family typewriter
5791 5797 _<n>
5792 5798 \family default
5793 5799 (don't use the angle brackets, just the number, e.g.
5794 5800
5795 5801 \family typewriter
5796 5802 _21
5797 5803 \family default
5798 5804 ).
5799 5805 \end_layout
5800 5806
5801 5807 \begin_layout Standard
5802 5808 These global variables are all stored in a global dictionary (not a list,
5803 5809 since it only has entries for lines which returned a result) available
5804 5810 under the names
5805 5811 \family typewriter
5806 5812 _oh
5807 5813 \family default
5808 5814 and
5809 5815 \family typewriter
5810 5816 Out
5811 5817 \family default
5812 5818 (similar to
5813 5819 \family typewriter
5814 5820 _ih
5815 5821 \family default
5816 5822 and
5817 5823 \family typewriter
5818 5824 In
5819 5825 \family default
5820 5826 ).
5821 5827 So the output from line 12 can be obtained as
5822 5828 \family typewriter
5823 5829 _12
5824 5830 \family default
5825 5831 ,
5826 5832 \family typewriter
5827 5833 Out[12]
5828 5834 \family default
5829 5835 or
5830 5836 \family typewriter
5831 5837 _oh[12]
5832 5838 \family default
5833 5839 .
5834 5840 If you accidentally overwrite the
5835 5841 \family typewriter
5836 5842 Out
5837 5843 \family default
5838 5844 variable you can recover it by typing
5839 5845 \family typewriter
5840 5846 'Out=_oh
5841 5847 \family default
5842 5848 ' at the prompt.
5843 5849 \end_layout
5844 5850
5845 5851 \begin_layout Standard
5846 5852 This system obviously can potentially put heavy memory demands on your system,
5847 5853 since it prevents Python's garbage collector from removing any previously
5848 5854 computed results.
5849 5855 You can control how many results are kept in memory with the option (at
5850 5856 the command line or in your
5851 5857 \family typewriter
5852 5858 ipythonrc
5853 5859 \family default
5854 5860 file)
5855 5861 \family typewriter
5856 5862 cache_size
5857 5863 \family default
5858 5864 .
5859 5865 If you set it to 0, the whole system is completely disabled and the prompts
5860 5866 revert to the classic
5861 5867 \family typewriter
5862 5868 '>>>'
5863 5869 \family default
5864 5870 of normal Python.
5865 5871 \end_layout
5866 5872
5867 5873 \begin_layout Subsection
5868 5874 Directory history
5869 5875 \end_layout
5870 5876
5871 5877 \begin_layout Standard
5872 5878 Your history of visited directories is kept in the global list
5873 5879 \family typewriter
5874 5880 _dh
5875 5881 \family default
5876 5882 , and the magic
5877 5883 \family typewriter
5878 5884 %cd
5879 5885 \family default
5880 5886 command can be used to go to any entry in that list.
5881 5887 The
5882 5888 \family typewriter
5883 5889 %dhist
5884 5890 \family default
5885 5891 command allows you to view this history.
5886 5892 \end_layout
5887 5893
5888 5894 \begin_layout Subsection
5889 5895 Automatic parentheses and quotes
5890 5896 \end_layout
5891 5897
5892 5898 \begin_layout Standard
5893 5899 These features were adapted from Nathan Gray's LazyPython.
5894 5900 They are meant to allow less typing for common situations.
5895 5901 \end_layout
5896 5902
5897 5903 \begin_layout Subsubsection
5898 5904 Automatic parentheses
5899 5905 \end_layout
5900 5906
5901 5907 \begin_layout Standard
5902 5908 Callable objects (i.e.
5903 5909 functions, methods, etc) can be invoked like this (notice the commas between
5904 5910 the arguments):
5905 5911 \end_layout
5906 5912
5907 5913 \begin_layout Standard
5908 5914
5909 5915 \family typewriter
5910 5916 >>> callable_ob arg1, arg2, arg3
5911 5917 \end_layout
5912 5918
5913 5919 \begin_layout Standard
5914 5920 and the input will be translated to this:
5915 5921 \end_layout
5916 5922
5917 5923 \begin_layout Standard
5918 5924
5919 5925 \family typewriter
5920 5926 --> callable_ob(arg1, arg2, arg3)
5921 5927 \end_layout
5922 5928
5923 5929 \begin_layout Standard
5924 5930 You can force automatic parentheses by using '/' as the first character
5925 5931 of a line.
5926 5932 For example:
5927 5933 \end_layout
5928 5934
5929 5935 \begin_layout Standard
5930 5936
5931 5937 \family typewriter
5932 5938 >>> /globals # becomes 'globals()'
5933 5939 \end_layout
5934 5940
5935 5941 \begin_layout Standard
5936 5942 Note that the '/' MUST be the first character on the line! This won't work:
5937 5943
5938 5944 \end_layout
5939 5945
5940 5946 \begin_layout Standard
5941 5947
5942 5948 \family typewriter
5943 5949 >>> print /globals # syntax error
5944 5950 \end_layout
5945 5951
5946 5952 \begin_layout Standard
5947 5953 In most cases the automatic algorithm should work, so you should rarely
5948 5954 need to explicitly invoke /.
5949 5955 One notable exception is if you are trying to call a function with a list
5950 5956 of tuples as arguments (the parenthesis will confuse IPython):
5951 5957 \end_layout
5952 5958
5953 5959 \begin_layout Standard
5954 5960
5955 5961 \family typewriter
5956 5962 In [1]: zip (1,2,3),(4,5,6) # won't work
5957 5963 \end_layout
5958 5964
5959 5965 \begin_layout Standard
5960 5966 but this will work:
5961 5967 \end_layout
5962 5968
5963 5969 \begin_layout Standard
5964 5970
5965 5971 \family typewriter
5966 5972 In [2]: /zip (1,2,3),(4,5,6)
5967 5973 \newline
5968 5974 ------> zip ((1,2,3),(4,5,6))
5969 5975 \newline
5970 5976 Out[2]= [(1, 4),
5971 5977 (2, 5), (3, 6)]
5972 5978 \end_layout
5973 5979
5974 5980 \begin_layout Standard
5975 5981 IPython tells you that it has altered your command line by displaying the
5976 5982 new command line preceded by
5977 5983 \family typewriter
5978 5984 -->
5979 5985 \family default
5980 5986 .
5981 5987 e.g.:
5982 5988 \end_layout
5983 5989
5984 5990 \begin_layout Standard
5985 5991
5986 5992 \family typewriter
5987 5993 In [18]: callable list
5988 5994 \newline
5989 5995 -------> callable (list)
5990 5996 \end_layout
5991 5997
5992 5998 \begin_layout Subsubsection
5993 5999 Automatic quoting
5994 6000 \end_layout
5995 6001
5996 6002 \begin_layout Standard
5997 6003 You can force automatic quoting of a function's arguments by using
5998 6004 \family typewriter
5999 6005 `,'
6000 6006 \family default
6001 6007 or
6002 6008 \family typewriter
6003 6009 `;'
6004 6010 \family default
6005 6011 as the first character of a line.
6006 6012 For example:
6007 6013 \end_layout
6008 6014
6009 6015 \begin_layout Standard
6010 6016
6011 6017 \family typewriter
6012 6018 >>> ,my_function /home/me # becomes my_function("/home/me")
6013 6019 \end_layout
6014 6020
6015 6021 \begin_layout Standard
6016 6022 If you use
6017 6023 \family typewriter
6018 6024 `;'
6019 6025 \family default
6020 6026 instead, the whole argument is quoted as a single string (while
6021 6027 \family typewriter
6022 6028 `,'
6023 6029 \family default
6024 6030 splits on whitespace):
6025 6031 \end_layout
6026 6032
6027 6033 \begin_layout Standard
6028 6034
6029 6035 \family typewriter
6030 6036 >>> ,my_function a b c # becomes my_function("a","b","c")
6031 6037 \end_layout
6032 6038
6033 6039 \begin_layout Standard
6034 6040
6035 6041 \family typewriter
6036 6042 >>> ;my_function a b c # becomes my_function("a b c")
6037 6043 \end_layout
6038 6044
6039 6045 \begin_layout Standard
6040 6046 Note that the `
6041 6047 \family typewriter
6042 6048 ,
6043 6049 \family default
6044 6050 ' or `
6045 6051 \family typewriter
6046 6052 ;
6047 6053 \family default
6048 6054 ' MUST be the first character on the line! This won't work:
6049 6055 \end_layout
6050 6056
6051 6057 \begin_layout Standard
6052 6058
6053 6059 \family typewriter
6054 6060 >>> x = ,my_function /home/me # syntax error
6055 6061 \end_layout
6056 6062
6057 6063 \begin_layout Section
6058 6064 \begin_inset LatexCommand \label{sec:customization}
6059 6065
6060 6066 \end_inset
6061 6067
6062 6068 Customization
6063 6069 \end_layout
6064 6070
6065 6071 \begin_layout Standard
6066 6072 As we've already mentioned, IPython reads a configuration file which can
6067 6073 be specified at the command line (
6068 6074 \family typewriter
6069 6075 -rcfile
6070 6076 \family default
6071 6077 ) or which by default is assumed to be called
6072 6078 \family typewriter
6073 6079 ipythonrc
6074 6080 \family default
6075 6081 .
6076 6082 Such a file is looked for in the current directory where IPython is started
6077 6083 and then in your
6078 6084 \family typewriter
6079 6085 IPYTHONDIR
6080 6086 \family default
6081 6087 , which allows you to have local configuration files for specific projects.
6082 6088 In this section we will call these types of configuration files simply
6083 6089 rcfiles (short for resource configuration file).
6084 6090 \end_layout
6085 6091
6086 6092 \begin_layout Standard
6087 6093 The syntax of an rcfile is one of key-value pairs separated by whitespace,
6088 6094 one per line.
6089 6095 Lines beginning with a
6090 6096 \family typewriter
6091 6097 #
6092 6098 \family default
6093 6099 are ignored as comments, but comments can
6094 6100 \series bold
6095 6101 not
6096 6102 \series default
6097 6103 be put on lines with data (the parser is fairly primitive).
6098 6104 Note that these are not python files, and this is deliberate, because it
6099 6105 allows us to do some things which would be quite tricky to implement if
6100 6106 they were normal python files.
6101 6107 \end_layout
6102 6108
6103 6109 \begin_layout Standard
6104 6110 First, an rcfile can contain permanent default values for almost all command
6105 6111 line options (except things like
6106 6112 \family typewriter
6107 6113 -help
6108 6114 \family default
6109 6115 or
6110 6116 \family typewriter
6111 6117 -Version
6112 6118 \family default
6113 6119 ).
6114 6120 Sec\InsetSpace ~
6115 6121
6116 6122 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
6117 6123
6118 6124 \end_inset
6119 6125
6120 6126 contains a description of all command-line options.
6121 6127 However, values you explicitly specify at the command line override the
6122 6128 values defined in the rcfile.
6123 6129 \end_layout
6124 6130
6125 6131 \begin_layout Standard
6126 6132 Besides command line option values, the rcfile can specify values for certain
6127 6133 extra special options which are not available at the command line.
6128 6134 These options are briefly described below.
6129 6135
6130 6136 \end_layout
6131 6137
6132 6138 \begin_layout Standard
6133 6139 Each of these options may appear as many times as you need it in the file.
6134 6140 \end_layout
6135 6141
6136 6142 \begin_layout List
6137 6143 \labelwidthstring 00.00.0000
6138 6144
6139 6145 \family typewriter
6140 6146 \series bold
6141 6147 include\InsetSpace ~
6142 6148 <file1>\InsetSpace ~
6143 6149 <file2>\InsetSpace ~
6144 6150 ...
6145 6151 \family default
6146 6152 \series default
6147 6153 : you can name
6148 6154 \emph on
6149 6155 other
6150 6156 \emph default
6151 6157 rcfiles you want to recursively load up to 15 levels (don't use the
6152 6158 \family typewriter
6153 6159 <>
6154 6160 \family default
6155 6161 brackets in your names!).
6156 6162 This feature allows you to define a 'base' rcfile with general options
6157 6163 and special-purpose files which can be loaded only when needed with particular
6158 6164 configuration options.
6159 6165 To make this more convenient, IPython accepts the
6160 6166 \family typewriter
6161 6167 -profile <name>
6162 6168 \family default
6163 6169 option (abbreviates to
6164 6170 \family typewriter
6165 6171 -p <name
6166 6172 \family default
6167 6173 >)
6168 6174 \family typewriter
6169 6175 which
6170 6176 \family default
6171 6177 tells it to look for an rcfile named
6172 6178 \family typewriter
6173 6179 ipythonrc-<name>
6174 6180 \family default
6175 6181 .
6176 6182
6177 6183 \end_layout
6178 6184
6179 6185 \begin_layout List
6180 6186 \labelwidthstring 00.00.0000
6181 6187
6182 6188 \family typewriter
6183 6189 \series bold
6184 6190 import_mod\InsetSpace ~
6185 6191 <mod1>\InsetSpace ~
6186 6192 <mod2>\InsetSpace ~
6187 6193 ...
6188 6194 \family default
6189 6195 \series default
6190 6196 : import modules with '
6191 6197 \family typewriter
6192 6198 import
6193 6199 \family default
6194 6200
6195 6201 \family typewriter
6196 6202 <mod1>,<mod2>,...
6197 6203 \family default
6198 6204 '
6199 6205 \end_layout
6200 6206
6201 6207 \begin_layout List
6202 6208 \labelwidthstring 00.00.0000
6203 6209
6204 6210 \family typewriter
6205 6211 \series bold
6206 6212 import_some\InsetSpace ~
6207 6213 <mod>\InsetSpace ~
6208 6214 <f1>\InsetSpace ~
6209 6215 <f2>\InsetSpace ~
6210 6216 ...
6211 6217 \family default
6212 6218 \series default
6213 6219 : import functions with '
6214 6220 \family typewriter
6215 6221 from <mod> import
6216 6222 \family default
6217 6223
6218 6224 \family typewriter
6219 6225 <f1>,<f2>,...
6220 6226 \family default
6221 6227 '
6222 6228 \end_layout
6223 6229
6224 6230 \begin_layout List
6225 6231 \labelwidthstring 00.00.0000
6226 6232
6227 6233 \family typewriter
6228 6234 \series bold
6229 6235 import_all\InsetSpace ~
6230 6236 <mod1>\InsetSpace ~
6231 6237 <mod2>\InsetSpace ~
6232 6238 ...
6233 6239 \family default
6234 6240 \series default
6235 6241 : for each module listed import functions with '
6236 6242 \family typewriter
6237 6243 from <mod> import *
6238 6244 \family default
6239 6245 '
6240 6246 \end_layout
6241 6247
6242 6248 \begin_layout List
6243 6249 \labelwidthstring 00.00.0000
6244 6250
6245 6251 \family typewriter
6246 6252 \series bold
6247 6253 execute\InsetSpace ~
6248 6254 <python\InsetSpace ~
6249 6255 code>
6250 6256 \family default
6251 6257 \series default
6252 6258 : give any single-line python code to be executed.
6253 6259 \end_layout
6254 6260
6255 6261 \begin_layout List
6256 6262 \labelwidthstring 00.00.0000
6257 6263
6258 6264 \family typewriter
6259 6265 \series bold
6260 6266 execfile\InsetSpace ~
6261 6267 <filename>
6262 6268 \family default
6263 6269 \series default
6264 6270 : execute the python file given with an '
6265 6271 \family typewriter
6266 6272 execfile(filename)
6267 6273 \family default
6268 6274 ' command.
6269 6275 Username expansion is performed on the given names.
6270 6276 So if you need any amount of extra fancy customization that won't fit in
6271 6277 any of the above 'canned' options, you can just put it in a separate python
6272 6278 file and execute it.
6273 6279 \end_layout
6274 6280
6275 6281 \begin_layout List
6276 6282 \labelwidthstring 00.00.0000
6277 6283
6278 6284 \family typewriter
6279 6285 \series bold
6280 6286 alias\InsetSpace ~
6281 6287 <alias_def>
6282 6288 \family default
6283 6289 \series default
6284 6290 : this is equivalent to calling '
6285 6291 \family typewriter
6286 6292 %alias\InsetSpace ~
6287 6293 <alias_def>
6288 6294 \family default
6289 6295 ' at the IPython command line.
6290 6296 This way, from within IPython you can do common system tasks without having
6291 6297 to exit it or use the
6292 6298 \family typewriter
6293 6299 !
6294 6300 \family default
6295 6301 escape.
6296 6302 IPython isn't meant to be a shell replacement, but it is often very useful
6297 6303 to be able to do things with files while testing code.
6298 6304 This gives you the flexibility to have within IPython any aliases you may
6299 6305 be used to under your normal system shell.
6300 6306 \end_layout
6301 6307
6302 6308 \begin_layout Subsection
6303 6309 \begin_inset LatexCommand \label{sec:ipytonrc-sample}
6304 6310
6305 6311 \end_inset
6306 6312
6307 6313 Sample
6308 6314 \family typewriter
6309 6315 ipythonrc
6310 6316 \family default
6311 6317 file
6312 6318 \end_layout
6313 6319
6314 6320 \begin_layout Standard
6315 6321 The default rcfile, called
6316 6322 \family typewriter
6317 6323 ipythonrc
6318 6324 \family default
6319 6325 and supplied in your
6320 6326 \family typewriter
6321 6327 IPYTHONDIR
6322 6328 \family default
6323 6329 directory contains lots of comments on all of these options.
6324 6330 We reproduce it here for reference:
6325 6331 \end_layout
6326 6332
6327 6333 \begin_layout Standard
6328 6334 \begin_inset ERT
6329 6335 status open
6330 6336
6331 6337 \begin_layout Standard
6332 6338
6333 6339
6334 6340 \backslash
6335 6341 codelist{../IPython/UserConfig/ipythonrc}
6336 6342 \end_layout
6337 6343
6338 6344 \end_inset
6339 6345
6340 6346
6341 6347 \end_layout
6342 6348
6343 6349 \begin_layout Subsection
6344 6350 \begin_inset LatexCommand \label{sec:prompts}
6345 6351
6346 6352 \end_inset
6347 6353
6348 6354 Fine-tuning your prompt
6349 6355 \end_layout
6350 6356
6351 6357 \begin_layout Standard
6352 6358 IPython's prompts can be customized using a syntax similar to that of the
6353 6359
6354 6360 \family typewriter
6355 6361 bash
6356 6362 \family default
6357 6363 shell.
6358 6364 Many of
6359 6365 \family typewriter
6360 6366 bash
6361 6367 \family default
6362 6368 's escapes are supported, as well as a few additional ones.
6363 6369 We list them below:
6364 6370 \end_layout
6365 6371
6366 6372 \begin_layout Description
6367 6373
6368 6374 \backslash
6369 6375 # the prompt/history count number
6370 6376 \end_layout
6371 6377
6372 6378 \begin_layout Description
6373 6379
6374 6380 \backslash
6375 6381 D the prompt/history count, with the actual digits replaced by dots.
6376 6382 Used mainly in continuation prompts (prompt_in2)
6377 6383 \end_layout
6378 6384
6379 6385 \begin_layout Description
6380 6386
6381 6387 \backslash
6382 6388 w the current working directory
6383 6389 \end_layout
6384 6390
6385 6391 \begin_layout Description
6386 6392
6387 6393 \backslash
6388 6394 W the basename of current working directory
6389 6395 \end_layout
6390 6396
6391 6397 \begin_layout Description
6392 6398
6393 6399 \backslash
6394 6400 X
6395 6401 \emph on
6396 6402 n
6397 6403 \emph default
6398 6404 where
6399 6405 \begin_inset Formula $n=0\ldots5.$
6400 6406 \end_inset
6401 6407
6402 6408 The current working directory, with
6403 6409 \family typewriter
6404 6410 $HOME
6405 6411 \family default
6406 6412 replaced by
6407 6413 \family typewriter
6408 6414 ~
6409 6415 \family default
6410 6416 , and filtered out to contain only
6411 6417 \begin_inset Formula $n$
6412 6418 \end_inset
6413 6419
6414 6420 path elements
6415 6421 \end_layout
6416 6422
6417 6423 \begin_layout Description
6418 6424
6419 6425 \backslash
6420 6426 Y
6421 6427 \emph on
6422 6428 n
6423 6429 \emph default
6424 6430 Similar to
6425 6431 \backslash
6426 6432 X
6427 6433 \emph on
6428 6434 n
6429 6435 \emph default
6430 6436 , but with the
6431 6437 \begin_inset Formula $n+1$
6432 6438 \end_inset
6433 6439
6434 6440 element included if it is
6435 6441 \family typewriter
6436 6442 ~
6437 6443 \family default
6438 6444 (this is similar to the behavior of the %c
6439 6445 \emph on
6440 6446 n
6441 6447 \emph default
6442 6448 escapes in
6443 6449 \family typewriter
6444 6450 tcsh
6445 6451 \family default
6446 6452 )
6447 6453 \end_layout
6448 6454
6449 6455 \begin_layout Description
6450 6456
6451 6457 \backslash
6452 6458 u the username of the current user
6453 6459 \end_layout
6454 6460
6455 6461 \begin_layout Description
6456 6462
6457 6463 \backslash
6458 6464 $ if the effective UID is 0, a #, otherwise a $
6459 6465 \end_layout
6460 6466
6461 6467 \begin_layout Description
6462 6468
6463 6469 \backslash
6464 6470 h the hostname up to the first `.'
6465 6471 \end_layout
6466 6472
6467 6473 \begin_layout Description
6468 6474
6469 6475 \backslash
6470 6476 H the hostname
6471 6477 \end_layout
6472 6478
6473 6479 \begin_layout Description
6474 6480
6475 6481 \backslash
6476 6482 n a newline
6477 6483 \end_layout
6478 6484
6479 6485 \begin_layout Description
6480 6486
6481 6487 \backslash
6482 6488 r a carriage return
6483 6489 \end_layout
6484 6490
6485 6491 \begin_layout Description
6486 6492
6487 6493 \backslash
6488 6494 v IPython version string
6489 6495 \end_layout
6490 6496
6491 6497 \begin_layout Standard
6492 6498 In addition to these, ANSI color escapes can be insterted into the prompts,
6493 6499 as
6494 6500 \family typewriter
6495 6501
6496 6502 \backslash
6497 6503 C_
6498 6504 \emph on
6499 6505 ColorName
6500 6506 \family default
6501 6507 \emph default
6502 6508 .
6503 6509 The list of valid color names is: Black, Blue, Brown, Cyan, DarkGray, Green,
6504 6510 LightBlue, LightCyan, LightGray, LightGreen, LightPurple, LightRed, NoColor,
6505 6511 Normal, Purple, Red, White, Yellow.
6506 6512 \end_layout
6507 6513
6508 6514 \begin_layout Standard
6509 6515 Finally, IPython supports the evaluation of arbitrary expressions in your
6510 6516 prompt string.
6511 6517 The prompt strings are evaluated through the syntax of PEP 215, but basically
6512 6518 you can use
6513 6519 \family typewriter
6514 6520 $x.y
6515 6521 \family default
6516 6522 to expand the value of
6517 6523 \family typewriter
6518 6524 x.y
6519 6525 \family default
6520 6526 , and for more complicated expressions you can use braces:
6521 6527 \family typewriter
6522 6528 ${foo()+x}
6523 6529 \family default
6524 6530 will call function
6525 6531 \family typewriter
6526 6532 foo
6527 6533 \family default
6528 6534 and add to it the value of
6529 6535 \family typewriter
6530 6536 x
6531 6537 \family default
6532 6538 , before putting the result into your prompt.
6533 6539 For example, using
6534 6540 \newline
6535 6541
6536 6542 \family typewriter
6537 6543 prompt_in1 '${commands.getoutput("uptime")}
6538 6544 \backslash
6539 6545 nIn [
6540 6546 \backslash
6541 6547 #]: '
6542 6548 \newline
6543 6549
6544 6550 \family default
6545 6551 will print the result of the uptime command on each prompt (assuming the
6546 6552
6547 6553 \family typewriter
6548 6554 commands
6549 6555 \family default
6550 6556 module has been imported in your
6551 6557 \family typewriter
6552 6558 ipythonrc
6553 6559 \family default
6554 6560 file).
6555 6561 \end_layout
6556 6562
6557 6563 \begin_layout Subsubsection
6558 6564 Prompt examples
6559 6565 \end_layout
6560 6566
6561 6567 \begin_layout Standard
6562 6568 The following options in an ipythonrc file will give you IPython's default
6563 6569 prompts:
6564 6570 \end_layout
6565 6571
6566 6572 \begin_layout Standard
6567 6573
6568 6574 \family typewriter
6569 6575 prompt_in1 'In [
6570 6576 \backslash
6571 6577 #]:'
6572 6578 \newline
6573 6579 prompt_in2 '\InsetSpace ~
6574 6580 \InsetSpace ~
6575 6581 \InsetSpace ~
6576 6582 .
6577 6583 \backslash
6578 6584 D.:'
6579 6585 \newline
6580 6586 prompt_out 'Out[
6581 6587 \backslash
6582 6588 #]:'
6583 6589 \end_layout
6584 6590
6585 6591 \begin_layout Standard
6586 6592 which look like this:
6587 6593 \end_layout
6588 6594
6589 6595 \begin_layout Standard
6590 6596
6591 6597 \family typewriter
6592 6598 In [1]: 1+2
6593 6599 \newline
6594 6600 Out[1]: 3
6595 6601 \end_layout
6596 6602
6597 6603 \begin_layout Standard
6598 6604
6599 6605 \family typewriter
6600 6606 In [2]: for i in (1,2,3):
6601 6607 \newline
6602 6608
6603 6609 \begin_inset ERT
6604 6610 status collapsed
6605 6611
6606 6612 \begin_layout Standard
6607 6613
6608 6614
6609 6615 \backslash
6610 6616 hspace*{0mm}
6611 6617 \end_layout
6612 6618
6613 6619 \end_inset
6614 6620
6615 6621 \InsetSpace ~
6616 6622 \InsetSpace ~
6617 6623 \InsetSpace ~
6618 6624 ...: \InsetSpace ~
6619 6625 \InsetSpace ~
6620 6626 \InsetSpace ~
6621 6627 \InsetSpace ~
6622 6628 print i,
6623 6629 \newline
6624 6630
6625 6631 \begin_inset ERT
6626 6632 status collapsed
6627 6633
6628 6634 \begin_layout Standard
6629 6635
6630 6636
6631 6637 \backslash
6632 6638 hspace*{0mm}
6633 6639 \end_layout
6634 6640
6635 6641 \end_inset
6636 6642
6637 6643 \InsetSpace ~
6638 6644 \InsetSpace ~
6639 6645 \InsetSpace ~
6640 6646 ...:
6641 6647 \newline
6642 6648 1 2 3
6643 6649 \end_layout
6644 6650
6645 6651 \begin_layout Standard
6646 6652 These will give you a very colorful prompt with path information:
6647 6653 \end_layout
6648 6654
6649 6655 \begin_layout Standard
6650 6656
6651 6657 \family typewriter
6652 6658 #prompt_in1 '
6653 6659 \backslash
6654 6660 C_Red
6655 6661 \backslash
6656 6662 u
6657 6663 \backslash
6658 6664 C_Blue[
6659 6665 \backslash
6660 6666 C_Cyan
6661 6667 \backslash
6662 6668 Y1
6663 6669 \backslash
6664 6670 C_Blue]
6665 6671 \backslash
6666 6672 C_LightGreen
6667 6673 \backslash
6668 6674 #>'
6669 6675 \newline
6670 6676 prompt_in2 ' ..
6671 6677 \backslash
6672 6678 D>'
6673 6679 \newline
6674 6680 prompt_out '<
6675 6681 \backslash
6676 6682 #>'
6677 6683 \end_layout
6678 6684
6679 6685 \begin_layout Standard
6680 6686 which look like this:
6681 6687 \end_layout
6682 6688
6683 6689 \begin_layout Standard
6684 6690
6685 6691 \family typewriter
6686 6692 \color red
6687 6693 fperez
6688 6694 \color blue
6689 6695 [
6690 6696 \color cyan
6691 6697 ~/ipython
6692 6698 \color blue
6693 6699 ]
6694 6700 \color green
6695 6701 1>
6696 6702 \color default
6697 6703 1+2
6698 6704 \newline
6699 6705
6700 6706 \begin_inset ERT
6701 6707 status collapsed
6702 6708
6703 6709 \begin_layout Standard
6704 6710
6705 6711
6706 6712 \backslash
6707 6713 hspace*{0mm}
6708 6714 \end_layout
6709 6715
6710 6716 \end_inset
6711 6717
6712 6718 \InsetSpace ~
6713 6719 \InsetSpace ~
6714 6720 \InsetSpace ~
6715 6721 \InsetSpace ~
6716 6722 \InsetSpace ~
6717 6723 \InsetSpace ~
6718 6724 \InsetSpace ~
6719 6725 \InsetSpace ~
6720 6726 \InsetSpace ~
6721 6727 \InsetSpace ~
6722 6728 \InsetSpace ~
6723 6729 \InsetSpace ~
6724 6730 \InsetSpace ~
6725 6731 \InsetSpace ~
6726 6732 \InsetSpace ~
6727 6733 \InsetSpace ~
6728 6734
6729 6735 \color red
6730 6736 <1>
6731 6737 \color default
6732 6738 3
6733 6739 \newline
6734 6740
6735 6741 \color red
6736 6742 fperez
6737 6743 \color blue
6738 6744 [
6739 6745 \color cyan
6740 6746 ~/ipython
6741 6747 \color blue
6742 6748 ]
6743 6749 \color green
6744 6750 2>
6745 6751 \color default
6746 6752 for i in (1,2,3):
6747 6753 \newline
6748 6754
6749 6755 \begin_inset ERT
6750 6756 status collapsed
6751 6757
6752 6758 \begin_layout Standard
6753 6759
6754 6760
6755 6761 \backslash
6756 6762 hspace*{0mm}
6757 6763 \end_layout
6758 6764
6759 6765 \end_inset
6760 6766
6761 6767 \InsetSpace ~
6762 6768 \InsetSpace ~
6763 6769 \InsetSpace ~
6764 6770 \InsetSpace ~
6765 6771 \InsetSpace ~
6766 6772 \InsetSpace ~
6767 6773 \InsetSpace ~
6768 6774 \InsetSpace ~
6769 6775 \InsetSpace ~
6770 6776 \InsetSpace ~
6771 6777 \InsetSpace ~
6772 6778 \InsetSpace ~
6773 6779 \InsetSpace ~
6774 6780 \InsetSpace ~
6775 6781 \InsetSpace ~
6776 6782
6777 6783 \color green
6778 6784 ...>
6779 6785 \color default
6780 6786 \InsetSpace ~
6781 6787 \InsetSpace ~
6782 6788 \InsetSpace ~
6783 6789 \InsetSpace ~
6784 6790 print i,
6785 6791 \newline
6786 6792
6787 6793 \begin_inset ERT
6788 6794 status collapsed
6789 6795
6790 6796 \begin_layout Standard
6791 6797
6792 6798
6793 6799 \backslash
6794 6800 hspace*{0mm}
6795 6801 \end_layout
6796 6802
6797 6803 \end_inset
6798 6804
6799 6805 \InsetSpace ~
6800 6806 \InsetSpace ~
6801 6807 \InsetSpace ~
6802 6808 \InsetSpace ~
6803 6809 \InsetSpace ~
6804 6810 \InsetSpace ~
6805 6811 \InsetSpace ~
6806 6812 \InsetSpace ~
6807 6813 \InsetSpace ~
6808 6814 \InsetSpace ~
6809 6815 \InsetSpace ~
6810 6816 \InsetSpace ~
6811 6817 \InsetSpace ~
6812 6818 \InsetSpace ~
6813 6819 \InsetSpace ~
6814 6820
6815 6821 \color green
6816 6822 ...>
6817 6823 \color default
6818 6824
6819 6825 \newline
6820 6826 1 2 3
6821 6827 \end_layout
6822 6828
6823 6829 \begin_layout Standard
6824 6830 The following shows the usage of dynamic expression evaluation:
6825 6831 \end_layout
6826 6832
6827 6833 \begin_layout Subsection
6828 6834 \begin_inset LatexCommand \label{sec:profiles}
6829 6835
6830 6836 \end_inset
6831 6837
6832 6838 IPython profiles
6833 6839 \end_layout
6834 6840
6835 6841 \begin_layout Standard
6836 6842 As we already mentioned, IPython supports the
6837 6843 \family typewriter
6838 6844 -profile
6839 6845 \family default
6840 6846 command-line option (see sec.
6841 6847
6842 6848 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
6843 6849
6844 6850 \end_inset
6845 6851
6846 6852 ).
6847 6853 A profile is nothing more than a particular configuration file like your
6848 6854 basic
6849 6855 \family typewriter
6850 6856 ipythonrc
6851 6857 \family default
6852 6858 one, but with particular customizations for a specific purpose.
6853 6859 When you start IPython with '
6854 6860 \family typewriter
6855 6861 ipython -profile <name>
6856 6862 \family default
6857 6863 ', it assumes that in your
6858 6864 \family typewriter
6859 6865 IPYTHONDIR
6860 6866 \family default
6861 6867 there is a file called
6862 6868 \family typewriter
6863 6869 ipythonrc-<name>
6864 6870 \family default
6865 6871 , and loads it instead of the normal
6866 6872 \family typewriter
6867 6873 ipythonrc
6868 6874 \family default
6869 6875 .
6870 6876 \end_layout
6871 6877
6872 6878 \begin_layout Standard
6873 6879 This system allows you to maintain multiple configurations which load modules,
6874 6880 set options, define functions, etc.
6875 6881 suitable for different tasks and activate them in a very simple manner.
6876 6882 In order to avoid having to repeat all of your basic options (common things
6877 6883 that don't change such as your color preferences, for example), any profile
6878 6884 can include another configuration file.
6879 6885 The most common way to use profiles is then to have each one include your
6880 6886 basic
6881 6887 \family typewriter
6882 6888 ipythonrc
6883 6889 \family default
6884 6890 file as a starting point, and then add further customizations.
6885 6891 \end_layout
6886 6892
6887 6893 \begin_layout Standard
6888 6894 In sections
6889 6895 \begin_inset LatexCommand \ref{sec:syntax-extensions}
6890 6896
6891 6897 \end_inset
6892 6898
6893 6899 and
6894 6900 \begin_inset LatexCommand \ref{sec:Gnuplot}
6895 6901
6896 6902 \end_inset
6897 6903
6898 6904 we discuss some particular profiles which come as part of the standard
6899 6905 IPython distribution.
6900 6906 You may also look in your
6901 6907 \family typewriter
6902 6908 IPYTHONDIR
6903 6909 \family default
6904 6910 directory, any file whose name begins with
6905 6911 \family typewriter
6906 6912 ipythonrc-
6907 6913 \family default
6908 6914 is a profile.
6909 6915 You can use those as examples for further customizations to suit your own
6910 6916 needs.
6911 6917 \end_layout
6912 6918
6913 6919 \begin_layout Section
6914 6920 \begin_inset OptArg
6915 6921 status open
6916 6922
6917 6923 \begin_layout Standard
6918 6924 IPython as default...
6919 6925 \end_layout
6920 6926
6921 6927 \end_inset
6922 6928
6923 6929 IPython as your default Python environment
6924 6930 \end_layout
6925 6931
6926 6932 \begin_layout Standard
6927 6933 Python honors the environment variable
6928 6934 \family typewriter
6929 6935 PYTHONSTARTUP
6930 6936 \family default
6931 6937 and will execute at startup the file referenced by this variable.
6932 6938 If you put at the end of this file the following two lines of code:
6933 6939 \end_layout
6934 6940
6935 6941 \begin_layout Standard
6936 6942
6937 6943 \family typewriter
6938 6944 import IPython
6939 6945 \newline
6940 6946 IPython.Shell.IPShell().mainloop(sys_exit=1)
6941 6947 \end_layout
6942 6948
6943 6949 \begin_layout Standard
6944 6950 then IPython will be your working environment anytime you start Python.
6945 6951 The
6946 6952 \family typewriter
6947 6953 sys_exit=1
6948 6954 \family default
6949 6955 is needed to have IPython issue a call to
6950 6956 \family typewriter
6951 6957 sys.exit()
6952 6958 \family default
6953 6959 when it finishes, otherwise you'll be back at the normal Python '
6954 6960 \family typewriter
6955 6961 >>>
6956 6962 \family default
6957 6963 ' prompt
6958 6964 \begin_inset Foot
6959 6965 status collapsed
6960 6966
6961 6967 \begin_layout Standard
6962 6968 Based on an idea by Holger Krekel.
6963 6969 \end_layout
6964 6970
6965 6971 \end_inset
6966 6972
6967 6973 .
6968 6974 \end_layout
6969 6975
6970 6976 \begin_layout Standard
6971 6977 This is probably useful to developers who manage multiple Python versions
6972 6978 and don't want to have correspondingly multiple IPython versions.
6973 6979 Note that in this mode, there is no way to pass IPython any command-line
6974 6980 options, as those are trapped first by Python itself.
6975 6981 \end_layout
6976 6982
6977 6983 \begin_layout Section
6978 6984 \begin_inset LatexCommand \label{sec:embed}
6979 6985
6980 6986 \end_inset
6981 6987
6982 6988 Embedding IPython
6983 6989 \end_layout
6984 6990
6985 6991 \begin_layout Standard
6986 6992 It is possible to start an IPython instance
6987 6993 \emph on
6988 6994 inside
6989 6995 \emph default
6990 6996 your own Python programs.
6991 6997 This allows you to evaluate dynamically the state of your code, operate
6992 6998 with your variables, analyze them, etc.
6993 6999 Note however that any changes you make to values while in the shell do
6994 7000
6995 7001 \emph on
6996 7002 not
6997 7003 \emph default
6998 7004 propagate back to the running code, so it is safe to modify your values
6999 7005 because you won't break your code in bizarre ways by doing so.
7000 7006 \end_layout
7001 7007
7002 7008 \begin_layout Standard
7003 7009 This feature allows you to easily have a fully functional python environment
7004 7010 for doing object introspection anywhere in your code with a simple function
7005 7011 call.
7006 7012 In some cases a simple print statement is enough, but if you need to do
7007 7013 more detailed analysis of a code fragment this feature can be very valuable.
7008 7014 \end_layout
7009 7015
7010 7016 \begin_layout Standard
7011 7017 It can also be useful in scientific computing situations where it is common
7012 7018 to need to do some automatic, computationally intensive part and then stop
7013 7019 to look at data, plots, etc
7014 7020 \begin_inset Foot
7015 7021 status collapsed
7016 7022
7017 7023 \begin_layout Standard
7018 7024 This functionality was inspired by IDL's combination of the
7019 7025 \family typewriter
7020 7026 stop
7021 7027 \family default
7022 7028 keyword and the
7023 7029 \family typewriter
7024 7030 .continue
7025 7031 \family default
7026 7032 executive command, which I have found very useful in the past, and by a
7027 7033 posting on comp.lang.python by cmkl <cmkleffner-AT-gmx.de> on Dec.
7028 7034 06/01 concerning similar uses of pyrepl.
7029 7035 \end_layout
7030 7036
7031 7037 \end_inset
7032 7038
7033 7039 .
7034 7040 Opening an IPython instance will give you full access to your data and
7035 7041 functions, and you can resume program execution once you are done with
7036 7042 the interactive part (perhaps to stop again later, as many times as needed).
7037 7043 \end_layout
7038 7044
7039 7045 \begin_layout Standard
7040 7046 The following code snippet is the bare minimum you need to include in your
7041 7047 Python programs for this to work (detailed examples follow later):
7042 7048 \end_layout
7043 7049
7044 7050 \begin_layout LyX-Code
7045 7051 from IPython.Shell import IPShellEmbed
7046 7052 \end_layout
7047 7053
7048 7054 \begin_layout LyX-Code
7049 7055 ipshell = IPShellEmbed()
7050 7056 \end_layout
7051 7057
7052 7058 \begin_layout LyX-Code
7053 7059 ipshell() # this call anywhere in your program will start IPython
7054 7060 \end_layout
7055 7061
7056 7062 \begin_layout Standard
7057 7063 You can run embedded instances even in code which is itself being run at
7058 7064 the IPython interactive prompt with '
7059 7065 \family typewriter
7060 7066 %run\InsetSpace ~
7061 7067 <filename>
7062 7068 \family default
7063 7069 '.
7064 7070 Since it's easy to get lost as to where you are (in your top-level IPython
7065 7071 or in your embedded one), it's a good idea in such cases to set the in/out
7066 7072 prompts to something different for the embedded instances.
7067 7073 The code examples below illustrate this.
7068 7074 \end_layout
7069 7075
7070 7076 \begin_layout Standard
7071 7077 You can also have multiple IPython instances in your program and open them
7072 7078 separately, for example with different options for data presentation.
7073 7079 If you close and open the same instance multiple times, its prompt counters
7074 7080 simply continue from each execution to the next.
7075 7081 \end_layout
7076 7082
7077 7083 \begin_layout Standard
7078 7084 Please look at the docstrings in the
7079 7085 \family typewriter
7080 7086 Shell.py
7081 7087 \family default
7082 7088 module for more details on the use of this system.
7083 7089 \end_layout
7084 7090
7085 7091 \begin_layout Standard
7086 7092 The following sample file illustrating how to use the embedding functionality
7087 7093 is provided in the examples directory as
7088 7094 \family typewriter
7089 7095 example-embed.py
7090 7096 \family default
7091 7097 .
7092 7098 It should be fairly self-explanatory:
7093 7099 \end_layout
7094 7100
7095 7101 \begin_layout Standard
7096 7102 \begin_inset ERT
7097 7103 status open
7098 7104
7099 7105 \begin_layout Standard
7100 7106
7101 7107
7102 7108 \backslash
7103 7109 codelist{examples/example-embed.py}
7104 7110 \end_layout
7105 7111
7106 7112 \end_inset
7107 7113
7108 7114
7109 7115 \end_layout
7110 7116
7111 7117 \begin_layout Standard
7112 7118 Once you understand how the system functions, you can use the following
7113 7119 code fragments in your programs which are ready for cut and paste:
7114 7120 \end_layout
7115 7121
7116 7122 \begin_layout Standard
7117 7123 \begin_inset ERT
7118 7124 status open
7119 7125
7120 7126 \begin_layout Standard
7121 7127
7122 7128
7123 7129 \backslash
7124 7130 codelist{examples/example-embed-short.py}
7125 7131 \end_layout
7126 7132
7127 7133 \end_inset
7128 7134
7129 7135
7130 7136 \end_layout
7131 7137
7132 7138 \begin_layout Section
7133 7139 \begin_inset LatexCommand \label{sec:using-pdb}
7134 7140
7135 7141 \end_inset
7136 7142
7137 7143 Using the Python debugger (
7138 7144 \family typewriter
7139 7145 pdb
7140 7146 \family default
7141 7147 )
7142 7148 \end_layout
7143 7149
7144 7150 \begin_layout Subsection
7145 7151 Running entire programs via
7146 7152 \family typewriter
7147 7153 pdb
7148 7154 \end_layout
7149 7155
7150 7156 \begin_layout Standard
7151 7157
7152 7158 \family typewriter
7153 7159 pdb
7154 7160 \family default
7155 7161 , the Python debugger, is a powerful interactive debugger which allows you
7156 7162 to step through code, set breakpoints, watch variables, etc.
7157 7163 IPython makes it very easy to start any script under the control of
7158 7164 \family typewriter
7159 7165 pdb
7160 7166 \family default
7161 7167 , regardless of whether you have wrapped it into a
7162 7168 \family typewriter
7163 7169 `main()'
7164 7170 \family default
7165 7171 function or not.
7166 7172 For this, simply type
7167 7173 \family typewriter
7168 7174 `%run -d myscript'
7169 7175 \family default
7170 7176 at an IPython prompt.
7171 7177 See the
7172 7178 \family typewriter
7173 7179 %run
7174 7180 \family default
7175 7181 command's documentation (via
7176 7182 \family typewriter
7177 7183 `%run?'
7178 7184 \family default
7179 7185 or in Sec.\InsetSpace ~
7180 7186
7181 7187 \begin_inset LatexCommand \ref{sec:magic}
7182 7188
7183 7189 \end_inset
7184 7190
7185 7191 ) for more details, including how to control where
7186 7192 \family typewriter
7187 7193 pdb
7188 7194 \family default
7189 7195 will stop execution first.
7190 7196 \end_layout
7191 7197
7192 7198 \begin_layout Standard
7193 7199 For more information on the use of the
7194 7200 \family typewriter
7195 7201 pdb
7196 7202 \family default
7197 7203 debugger, read the included
7198 7204 \family typewriter
7199 7205 pdb.doc
7200 7206 \family default
7201 7207 file (part of the standard Python distribution).
7202 7208 On a stock Linux system it is located at
7203 7209 \family typewriter
7204 7210 /usr/lib/python2.3/pdb.doc
7205 7211 \family default
7206 7212 , but the easiest way to read it is by using the
7207 7213 \family typewriter
7208 7214 help()
7209 7215 \family default
7210 7216 function of the
7211 7217 \family typewriter
7212 7218 pdb
7213 7219 \family default
7214 7220 module as follows (in an IPython prompt):
7215 7221 \end_layout
7216 7222
7217 7223 \begin_layout Standard
7218 7224
7219 7225 \family typewriter
7220 7226 In [1]: import pdb
7221 7227 \newline
7222 7228 In [2]: pdb.help()
7223 7229 \end_layout
7224 7230
7225 7231 \begin_layout Standard
7226 7232 This will load the
7227 7233 \family typewriter
7228 7234 pdb.doc
7229 7235 \family default
7230 7236 document in a file viewer for you automatically.
7231 7237 \end_layout
7232 7238
7233 7239 \begin_layout Subsection
7234 7240 Automatic invocation of
7235 7241 \family typewriter
7236 7242 pdb
7237 7243 \family default
7238 7244 on exceptions
7239 7245 \end_layout
7240 7246
7241 7247 \begin_layout Standard
7242 7248 IPython, if started with the
7243 7249 \family typewriter
7244 7250 -pdb
7245 7251 \family default
7246 7252 option (or if the option is set in your rc file) can call the Python
7247 7253 \family typewriter
7248 7254 pdb
7249 7255 \family default
7250 7256 debugger every time your code triggers an uncaught exception
7251 7257 \begin_inset Foot
7252 7258 status collapsed
7253 7259
7254 7260 \begin_layout Standard
7255 7261 Many thanks to Christopher Hart for the request which prompted adding this
7256 7262 feature to IPython.
7257 7263 \end_layout
7258 7264
7259 7265 \end_inset
7260 7266
7261 7267 .
7262 7268 This feature can also be toggled at any time with the
7263 7269 \family typewriter
7264 7270 %pdb
7265 7271 \family default
7266 7272 magic command.
7267 7273 This can be extremely useful in order to find the origin of subtle bugs,
7268 7274 because
7269 7275 \family typewriter
7270 7276 pdb
7271 7277 \family default
7272 7278 opens up at the point in your code which triggered the exception, and while
7273 7279 your program is at this point `dead', all the data is still available and
7274 7280 you can walk up and down the stack frame and understand the origin of the
7275 7281 problem.
7276 7282 \end_layout
7277 7283
7278 7284 \begin_layout Standard
7279 7285 Furthermore, you can use these debugging facilities both with the embedded
7280 7286 IPython mode and without IPython at all.
7281 7287 For an embedded shell (see sec.
7282 7288
7283 7289 \begin_inset LatexCommand \ref{sec:embed}
7284 7290
7285 7291 \end_inset
7286 7292
7287 7293 ), simply call the constructor with
7288 7294 \family typewriter
7289 7295 `-pdb'
7290 7296 \family default
7291 7297 in the argument string and automatically
7292 7298 \family typewriter
7293 7299 pdb
7294 7300 \family default
7295 7301 will be called if an uncaught exception is triggered by your code.
7296 7302
7297 7303 \end_layout
7298 7304
7299 7305 \begin_layout Standard
7300 7306 For stand-alone use of the feature in your programs which do not use IPython
7301 7307 at all, put the following lines toward the top of your `main' routine:
7302 7308 \end_layout
7303 7309
7304 7310 \begin_layout Standard
7305 7311 \align left
7306 7312
7307 7313 \family typewriter
7308 7314 import sys,IPython.ultraTB
7309 7315 \newline
7310 7316 sys.excepthook = IPython.ultraTB.FormattedTB(mode=`Verbos
7311 7317 e', color_scheme=`Linux', call_pdb=1)
7312 7318 \end_layout
7313 7319
7314 7320 \begin_layout Standard
7315 7321 The
7316 7322 \family typewriter
7317 7323 mode
7318 7324 \family default
7319 7325 keyword can be either
7320 7326 \family typewriter
7321 7327 `Verbose'
7322 7328 \family default
7323 7329 or
7324 7330 \family typewriter
7325 7331 `Plain'
7326 7332 \family default
7327 7333 , giving either very detailed or normal tracebacks respectively.
7328 7334 The
7329 7335 \family typewriter
7330 7336 color_scheme
7331 7337 \family default
7332 7338 keyword can be one of
7333 7339 \family typewriter
7334 7340 `NoColor'
7335 7341 \family default
7336 7342 ,
7337 7343 \family typewriter
7338 7344 `Linux'
7339 7345 \family default
7340 7346 (default) or
7341 7347 \family typewriter
7342 7348 `LightBG'
7343 7349 \family default
7344 7350 .
7345 7351 These are the same options which can be set in IPython with
7346 7352 \family typewriter
7347 7353 -colors
7348 7354 \family default
7349 7355 and
7350 7356 \family typewriter
7351 7357 -xmode
7352 7358 \family default
7353 7359 .
7354 7360 \end_layout
7355 7361
7356 7362 \begin_layout Standard
7357 7363 This will give any of your programs detailed, colored tracebacks with automatic
7358 7364 invocation of
7359 7365 \family typewriter
7360 7366 pdb
7361 7367 \family default
7362 7368 .
7363 7369 \end_layout
7364 7370
7365 7371 \begin_layout Section
7366 7372 \begin_inset LatexCommand \label{sec:syntax-extensions}
7367 7373
7368 7374 \end_inset
7369 7375
7370 7376 Extensions for syntax processing
7371 7377 \end_layout
7372 7378
7373 7379 \begin_layout Standard
7374 7380 This isn't for the faint of heart, because the potential for breaking things
7375 7381 is quite high.
7376 7382 But it can be a very powerful and useful feature.
7377 7383 In a nutshell, you can redefine the way IPython processes the user input
7378 7384 line to accept new, special extensions to the syntax without needing to
7379 7385 change any of IPython's own code.
7380 7386 \end_layout
7381 7387
7382 7388 \begin_layout Standard
7383 7389 In the
7384 7390 \family typewriter
7385 7391 IPython/Extensions
7386 7392 \family default
7387 7393 directory you will find some examples supplied, which we will briefly describe
7388 7394 now.
7389 7395 These can be used `as is' (and both provide very useful functionality),
7390 7396 or you can use them as a starting point for writing your own extensions.
7391 7397 \end_layout
7392 7398
7393 7399 \begin_layout Subsection
7394 7400 Pasting of code starting with
7395 7401 \family typewriter
7396 7402 `>>>
7397 7403 \family default
7398 7404 ' or
7399 7405 \family typewriter
7400 7406 `...
7401 7407
7402 7408 \family default
7403 7409 '
7404 7410 \end_layout
7405 7411
7406 7412 \begin_layout Standard
7407 7413 In the python tutorial it is common to find code examples which have been
7408 7414 taken from real python sessions.
7409 7415 The problem with those is that all the lines begin with either
7410 7416 \family typewriter
7411 7417 `>>>
7412 7418 \family default
7413 7419 ' or
7414 7420 \family typewriter
7415 7421 `...
7416 7422
7417 7423 \family default
7418 7424 ', which makes it impossible to paste them all at once.
7419 7425 One must instead do a line by line manual copying, carefully removing the
7420 7426 leading extraneous characters.
7421 7427 \end_layout
7422 7428
7423 7429 \begin_layout Standard
7424 7430 This extension identifies those starting characters and removes them from
7425 7431 the input automatically, so that one can paste multi-line examples directly
7426 7432 into IPython, saving a lot of time.
7427 7433 Please look at the file
7428 7434 \family typewriter
7429 7435 InterpreterPasteInput.py
7430 7436 \family default
7431 7437 in the
7432 7438 \family typewriter
7433 7439 IPython/Extensions
7434 7440 \family default
7435 7441 directory for details on how this is done.
7436 7442 \end_layout
7437 7443
7438 7444 \begin_layout Standard
7439 7445 IPython comes with a special profile enabling this feature, called
7440 7446 \family typewriter
7441 7447 tutorial
7442 7448 \family default
7443 7449 \emph on
7444 7450 .
7445 7451
7446 7452 \emph default
7447 7453 Simply start IPython via
7448 7454 \family typewriter
7449 7455 `ipython\InsetSpace ~
7450 7456 -p\InsetSpace ~
7451 7457 tutorial'
7452 7458 \family default
7453 7459 and the feature will be available.
7454 7460 In a normal IPython session you can activate the feature by importing the
7455 7461 corresponding module with:
7456 7462 \newline
7457 7463
7458 7464 \family typewriter
7459 7465 In [1]: import IPython.Extensions.InterpreterPasteInput
7460 7466 \end_layout
7461 7467
7462 7468 \begin_layout Standard
7463 7469 The following is a 'screenshot' of how things work when this extension is
7464 7470 on, copying an example from the standard tutorial:
7465 7471 \end_layout
7466 7472
7467 7473 \begin_layout Standard
7468 7474
7469 7475 \family typewriter
7470 7476 IPython profile: tutorial
7471 7477 \newline
7472 7478 \InsetSpace ~
7473 7479
7474 7480 \newline
7475 7481 *** Pasting of code with ">>>" or "..." has been enabled.
7476 7482 \newline
7477 7483 \InsetSpace ~
7478 7484
7479 7485 \newline
7480 7486 In
7481 7487 [1]: >>> def fib2(n): # return Fibonacci series up to n
7482 7488 \newline
7483 7489
7484 7490 \begin_inset ERT
7485 7491 status collapsed
7486 7492
7487 7493 \begin_layout Standard
7488 7494
7489 7495
7490 7496 \backslash
7491 7497 hspace*{0mm}
7492 7498 \end_layout
7493 7499
7494 7500 \end_inset
7495 7501
7496 7502 \InsetSpace ~
7497 7503 \InsetSpace ~
7498 7504 ...: ...\InsetSpace ~
7499 7505 \InsetSpace ~
7500 7506 \InsetSpace ~
7501 7507 \InsetSpace ~
7502 7508 """Return a list containing the Fibonacci series up to n."""
7503 7509 \newline
7504 7510
7505 7511 \begin_inset ERT
7506 7512 status collapsed
7507 7513
7508 7514 \begin_layout Standard
7509 7515
7510 7516
7511 7517 \backslash
7512 7518 hspace*{0mm}
7513 7519 \end_layout
7514 7520
7515 7521 \end_inset
7516 7522
7517 7523 \InsetSpace ~
7518 7524 \InsetSpace ~
7519 7525 ...: ...\InsetSpace ~
7520 7526 \InsetSpace ~
7521 7527 \InsetSpace ~
7522 7528 \InsetSpace ~
7523 7529 result = []
7524 7530 \newline
7525 7531
7526 7532 \begin_inset ERT
7527 7533 status collapsed
7528 7534
7529 7535 \begin_layout Standard
7530 7536
7531 7537
7532 7538 \backslash
7533 7539 hspace*{0mm}
7534 7540 \end_layout
7535 7541
7536 7542 \end_inset
7537 7543
7538 7544 \InsetSpace ~
7539 7545 \InsetSpace ~
7540 7546 ...: ...\InsetSpace ~
7541 7547 \InsetSpace ~
7542 7548 \InsetSpace ~
7543 7549 \InsetSpace ~
7544 7550 a, b = 0, 1
7545 7551 \newline
7546 7552
7547 7553 \begin_inset ERT
7548 7554 status collapsed
7549 7555
7550 7556 \begin_layout Standard
7551 7557
7552 7558
7553 7559 \backslash
7554 7560 hspace*{0mm}
7555 7561 \end_layout
7556 7562
7557 7563 \end_inset
7558 7564
7559 7565 \InsetSpace ~
7560 7566 \InsetSpace ~
7561 7567 ...: ...\InsetSpace ~
7562 7568 \InsetSpace ~
7563 7569 \InsetSpace ~
7564 7570 \InsetSpace ~
7565 7571 while b < n:
7566 7572 \newline
7567 7573
7568 7574 \begin_inset ERT
7569 7575 status collapsed
7570 7576
7571 7577 \begin_layout Standard
7572 7578
7573 7579
7574 7580 \backslash
7575 7581 hspace*{0mm}
7576 7582 \end_layout
7577 7583
7578 7584 \end_inset
7579 7585
7580 7586 \InsetSpace ~
7581 7587 \InsetSpace ~
7582 7588 ...: ...\InsetSpace ~
7583 7589 \InsetSpace ~
7584 7590 \InsetSpace ~
7585 7591 \InsetSpace ~
7586 7592 \InsetSpace ~
7587 7593 \InsetSpace ~
7588 7594 \InsetSpace ~
7589 7595 \InsetSpace ~
7590 7596 result.append(b)\InsetSpace ~
7591 7597 \InsetSpace ~
7592 7598 \InsetSpace ~
7593 7599 # see below
7594 7600 \newline
7595 7601
7596 7602 \begin_inset ERT
7597 7603 status collapsed
7598 7604
7599 7605 \begin_layout Standard
7600 7606
7601 7607
7602 7608 \backslash
7603 7609 hspace*{0mm}
7604 7610 \end_layout
7605 7611
7606 7612 \end_inset
7607 7613
7608 7614 \InsetSpace ~
7609 7615 \InsetSpace ~
7610 7616 ...: ...\InsetSpace ~
7611 7617 \InsetSpace ~
7612 7618 \InsetSpace ~
7613 7619 \InsetSpace ~
7614 7620 \InsetSpace ~
7615 7621 \InsetSpace ~
7616 7622 \InsetSpace ~
7617 7623 \InsetSpace ~
7618 7624 a, b = b, a+b
7619 7625 \newline
7620 7626
7621 7627 \begin_inset ERT
7622 7628 status collapsed
7623 7629
7624 7630 \begin_layout Standard
7625 7631
7626 7632
7627 7633 \backslash
7628 7634 hspace*{0mm}
7629 7635 \end_layout
7630 7636
7631 7637 \end_inset
7632 7638
7633 7639 \InsetSpace ~
7634 7640 \InsetSpace ~
7635 7641 ...: ...\InsetSpace ~
7636 7642 \InsetSpace ~
7637 7643 \InsetSpace ~
7638 7644 \InsetSpace ~
7639 7645 return result
7640 7646 \newline
7641 7647
7642 7648 \begin_inset ERT
7643 7649 status collapsed
7644 7650
7645 7651 \begin_layout Standard
7646 7652
7647 7653
7648 7654 \backslash
7649 7655 hspace*{0mm}
7650 7656 \end_layout
7651 7657
7652 7658 \end_inset
7653 7659
7654 7660 \InsetSpace ~
7655 7661 \InsetSpace ~
7656 7662 ...:
7657 7663 \newline
7658 7664 \InsetSpace ~
7659 7665
7660 7666 \newline
7661 7667 In [2]: fib2(10)
7662 7668 \newline
7663 7669 Out[2]: [1, 1, 2, 3, 5, 8]
7664 7670 \end_layout
7665 7671
7666 7672 \begin_layout Standard
7667 7673 Note that as currently written, this extension does
7668 7674 \emph on
7669 7675 not
7670 7676 \emph default
7671 7677 recognize IPython's prompts for pasting.
7672 7678 Those are more complicated, since the user can change them very easily,
7673 7679 they involve numbers and can vary in length.
7674 7680 One could however extract all the relevant information from the IPython
7675 7681 instance and build an appropriate regular expression.
7676 7682 This is left as an exercise for the reader.
7677 7683 \end_layout
7678 7684
7679 7685 \begin_layout Subsection
7680 7686 Input of physical quantities with units
7681 7687 \end_layout
7682 7688
7683 7689 \begin_layout Standard
7684 7690 The module
7685 7691 \family typewriter
7686 7692 PhysicalQInput
7687 7693 \family default
7688 7694 allows a simplified form of input for physical quantities with units.
7689 7695 This file is meant to be used in conjunction with the
7690 7696 \family typewriter
7691 7697 PhysicalQInteractive
7692 7698 \family default
7693 7699 module (in the same directory) and
7694 7700 \family typewriter
7695 7701 Physics.PhysicalQuantities
7696 7702 \family default
7697 7703 from Konrad Hinsen's ScientificPython (
7698 7704 \begin_inset LatexCommand \htmlurl{http://dirac.cnrs-orleans.fr/ScientificPython/}
7699 7705
7700 7706 \end_inset
7701 7707
7702 7708 ).
7703 7709 \end_layout
7704 7710
7705 7711 \begin_layout Standard
7706 7712 The
7707 7713 \family typewriter
7708 7714 Physics.PhysicalQuantities
7709 7715 \family default
7710 7716 module defines
7711 7717 \family typewriter
7712 7718 PhysicalQuantity
7713 7719 \family default
7714 7720 objects, but these must be declared as instances of a class.
7715 7721 For example, to define
7716 7722 \family typewriter
7717 7723 v
7718 7724 \family default
7719 7725 as a velocity of 3\InsetSpace ~
7720 7726 m/s, normally you would write:
7721 7727 \family typewriter
7722 7728
7723 7729 \newline
7724 7730 In [1]: v = PhysicalQuantity(3,'m/s')
7725 7731 \end_layout
7726 7732
7727 7733 \begin_layout Standard
7728 7734 Using the
7729 7735 \family typewriter
7730 7736 PhysicalQ_Input
7731 7737 \family default
7732 7738 extension this can be input instead as:
7733 7739 \family typewriter
7734 7740
7735 7741 \newline
7736 7742 In [1]: v = 3 m/s
7737 7743 \family default
7738 7744
7739 7745 \newline
7740 7746 which is much more convenient for interactive use (even though it is blatantly
7741 7747 invalid Python syntax).
7742 7748 \end_layout
7743 7749
7744 7750 \begin_layout Standard
7745 7751 The
7746 7752 \family typewriter
7747 7753 physics
7748 7754 \family default
7749 7755 profile supplied with IPython (enabled via
7750 7756 \family typewriter
7751 7757 'ipython -p physics'
7752 7758 \family default
7753 7759 ) uses these extensions, which you can also activate with:
7754 7760 \end_layout
7755 7761
7756 7762 \begin_layout Standard
7757 7763
7758 7764 \family typewriter
7759 7765 from math import * # math MUST be imported BEFORE PhysicalQInteractive
7760 7766 \newline
7761 7767 from
7762 7768 IPython.Extensions.PhysicalQInteractive import *
7763 7769 \newline
7764 7770 import IPython.Extensions.PhysicalQ
7765 7771 Input
7766 7772 \end_layout
7767 7773
7768 7774 \begin_layout Section
7769 7775 \begin_inset LatexCommand \label{sec:IPython-as-shell}
7770 7776
7771 7777 \end_inset
7772 7778
7773 7779 IPython as a system shell
7774 7780 \end_layout
7775 7781
7776 7782 \begin_layout Standard
7777 7783 IPython ships with a special profile called
7778 7784 \family typewriter
7779 7785 pysh
7780 7786 \family default
7781 7787 , which you can activate at the command line as
7782 7788 \family typewriter
7783 7789 `ipython -p pysh'
7784 7790 \family default
7785 7791 .
7786 7792 This loads
7787 7793 \family typewriter
7788 7794 InterpreterExec
7789 7795 \family default
7790 7796 , along with some additional facilities and a prompt customized for filesystem
7791 7797 navigation.
7792 7798 \end_layout
7793 7799
7794 7800 \begin_layout Standard
7795 7801 Note that this does
7796 7802 \emph on
7797 7803 not
7798 7804 \emph default
7799 7805 make IPython a full-fledged system shell.
7800 7806 In particular, it has no job control, so if you type Ctrl-Z (under Unix),
7801 7807 you'll suspend pysh itself, not the process you just started.
7802 7808
7803 7809 \end_layout
7804 7810
7805 7811 \begin_layout Standard
7806 7812 What the shell profile allows you to do is to use the convenient and powerful
7807 7813 syntax of Python to do quick scripting at the command line.
7808 7814 Below we describe some of its features.
7809 7815 \end_layout
7810 7816
7811 7817 \begin_layout Subsection
7812 7818 Aliases
7813 7819 \end_layout
7814 7820
7815 7821 \begin_layout Standard
7816 7822 All of your
7817 7823 \family typewriter
7818 7824 $PATH
7819 7825 \family default
7820 7826 has been loaded as IPython aliases, so you should be able to type any normal
7821 7827 system command and have it executed.
7822 7828 See
7823 7829 \family typewriter
7824 7830 %alias?
7825 7831 \family default
7826 7832 and
7827 7833 \family typewriter
7828 7834 %unalias?
7829 7835 \family default
7830 7836 for details on the alias facilities.
7831 7837 See also
7832 7838 \family typewriter
7833 7839 %rehash?
7834 7840 \family default
7835 7841 and
7836 7842 \family typewriter
7837 7843 %rehashx?
7838 7844 \family default
7839 7845 for details on the mechanism used to load
7840 7846 \family typewriter
7841 7847 $PATH
7842 7848 \family default
7843 7849 .
7844 7850 \end_layout
7845 7851
7846 7852 \begin_layout Subsection
7847 7853 Special syntax
7848 7854 \end_layout
7849 7855
7850 7856 \begin_layout Standard
7851 7857 Any lines which begin with
7852 7858 \family typewriter
7853 7859 `~'
7854 7860 \family default
7855 7861 ,
7856 7862 \family typewriter
7857 7863 `/'
7858 7864 \family default
7859 7865 and
7860 7866 \family typewriter
7861 7867 `.'
7862 7868 \family default
7863 7869 will be executed as shell commands instead of as Python code.
7864 7870 The special escapes below are also recognized.
7865 7871
7866 7872 \family typewriter
7867 7873 !cmd
7868 7874 \family default
7869 7875 is valid in single or multi-line input, all others are only valid in single-lin
7870 7876 e input:
7871 7877 \end_layout
7872 7878
7873 7879 \begin_layout Description
7874 7880
7875 7881 \family typewriter
7876 7882 !cmd
7877 7883 \family default
7878 7884 pass `cmd' directly to the shell
7879 7885 \end_layout
7880 7886
7881 7887 \begin_layout Description
7882 7888
7883 7889 \family typewriter
7884 7890 !!cmd
7885 7891 \family default
7886 7892 execute `cmd' and return output as a list (split on `
7887 7893 \backslash
7888 7894 n')
7889 7895 \end_layout
7890 7896
7891 7897 \begin_layout Description
7892 7898
7893 7899 \family typewriter
7894 7900 $var=cmd
7895 7901 \family default
7896 7902 capture output of cmd into var, as a string
7897 7903 \end_layout
7898 7904
7899 7905 \begin_layout Description
7900 7906
7901 7907 \family typewriter
7902 7908 $$var=cmd
7903 7909 \family default
7904 7910 capture output of cmd into var, as a list (split on `
7905 7911 \backslash
7906 7912 n')
7907 7913 \end_layout
7908 7914
7909 7915 \begin_layout Standard
7910 7916 The
7911 7917 \family typewriter
7912 7918 $
7913 7919 \family default
7914 7920 /
7915 7921 \family typewriter
7916 7922 $$
7917 7923 \family default
7918 7924 syntaxes make Python variables from system output, which you can later
7919 7925 use for further scripting.
7920 7926 The converse is also possible: when executing an alias or calling to the
7921 7927 system via
7922 7928 \family typewriter
7923 7929 !
7924 7930 \family default
7925 7931 /
7926 7932 \family typewriter
7927 7933 !!
7928 7934 \family default
7929 7935 , you can expand any python variable or expression by prepending it with
7930 7936
7931 7937 \family typewriter
7932 7938 $
7933 7939 \family default
7934 7940 .
7935 7941 Full details of the allowed syntax can be found in Python's PEP 215.
7936 7942 \end_layout
7937 7943
7938 7944 \begin_layout Standard
7939 7945 A few brief examples will illustrate these (note that the indentation below
7940 7946 may be incorrectly displayed):
7941 7947 \end_layout
7942 7948
7943 7949 \begin_layout Standard
7944 7950
7945 7951 \family typewriter
7946 7952 fperez[~/test]|3> !ls *s.py
7947 7953 \newline
7948 7954 scopes.py strings.py
7949 7955 \end_layout
7950 7956
7951 7957 \begin_layout Standard
7952 7958 ls is an internal alias, so there's no need to use
7953 7959 \family typewriter
7954 7960 !
7955 7961 \family default
7956 7962 :
7957 7963 \end_layout
7958 7964
7959 7965 \begin_layout Standard
7960 7966
7961 7967 \family typewriter
7962 7968 fperez[~/test]|4> ls *s.py
7963 7969 \newline
7964 7970 scopes.py* strings.py
7965 7971 \end_layout
7966 7972
7967 7973 \begin_layout Standard
7968 7974 !!ls will return the output into a Python variable:
7969 7975 \end_layout
7970 7976
7971 7977 \begin_layout Standard
7972 7978
7973 7979 \family typewriter
7974 7980 fperez[~/test]|5> !!ls *s.py
7975 7981 \newline
7976 7982
7977 7983 \begin_inset ERT
7978 7984 status collapsed
7979 7985
7980 7986 \begin_layout Standard
7981 7987
7982 7988
7983 7989 \backslash
7984 7990 hspace*{0mm}
7985 7991 \end_layout
7986 7992
7987 7993 \end_inset
7988 7994
7989 7995 \InsetSpace ~
7990 7996 \InsetSpace ~
7991 7997 \InsetSpace ~
7992 7998 \InsetSpace ~
7993 7999 \InsetSpace ~
7994 8000 \InsetSpace ~
7995 8001 \InsetSpace ~
7996 8002 \InsetSpace ~
7997 8003 \InsetSpace ~
7998 8004 \InsetSpace ~
7999 8005 \InsetSpace ~
8000 8006 \InsetSpace ~
8001 8007 \InsetSpace ~
8002 8008 \InsetSpace ~
8003 8009 <5> ['scopes.py', 'strings.py']
8004 8010 \newline
8005 8011 fperez[~/test]|6> print _5
8006 8012 \newline
8007 8013 ['scopes.py', 'strings.py
8008 8014 ']
8009 8015 \end_layout
8010 8016
8011 8017 \begin_layout Standard
8012 8018
8013 8019 \family typewriter
8014 8020 $
8015 8021 \family default
8016 8022 and
8017 8023 \family typewriter
8018 8024 $$
8019 8025 \family default
8020 8026 allow direct capture to named variables:
8021 8027 \end_layout
8022 8028
8023 8029 \begin_layout Standard
8024 8030
8025 8031 \family typewriter
8026 8032 fperez[~/test]|7> $astr = ls *s.py
8027 8033 \newline
8028 8034 fperez[~/test]|8> astr
8029 8035 \newline
8030 8036
8031 8037 \begin_inset ERT
8032 8038 status collapsed
8033 8039
8034 8040 \begin_layout Standard
8035 8041
8036 8042
8037 8043 \backslash
8038 8044 hspace*{0mm}
8039 8045 \end_layout
8040 8046
8041 8047 \end_inset
8042 8048
8043 8049 \InsetSpace ~
8044 8050 \InsetSpace ~
8045 8051 \InsetSpace ~
8046 8052 \InsetSpace ~
8047 8053 \InsetSpace ~
8048 8054 \InsetSpace ~
8049 8055 \InsetSpace ~
8050 8056 \InsetSpace ~
8051 8057 \InsetSpace ~
8052 8058 \InsetSpace ~
8053 8059 \InsetSpace ~
8054 8060 \InsetSpace ~
8055 8061 \InsetSpace ~
8056 8062 \InsetSpace ~
8057 8063 <8> 'scopes.py
8058 8064 \backslash
8059 8065 nstrings.py'
8060 8066 \end_layout
8061 8067
8062 8068 \begin_layout Standard
8063 8069
8064 8070 \family typewriter
8065 8071 fperez[~/test]|9> $$alist = ls *s.py
8066 8072 \newline
8067 8073 fperez[~/test]|10> alist
8068 8074 \newline
8069 8075
8070 8076 \begin_inset ERT
8071 8077 status collapsed
8072 8078
8073 8079 \begin_layout Standard
8074 8080
8075 8081
8076 8082 \backslash
8077 8083 hspace*{0mm}
8078 8084 \end_layout
8079 8085
8080 8086 \end_inset
8081 8087
8082 8088 \InsetSpace ~
8083 8089 \InsetSpace ~
8084 8090 \InsetSpace ~
8085 8091 \InsetSpace ~
8086 8092 \InsetSpace ~
8087 8093 \InsetSpace ~
8088 8094 \InsetSpace ~
8089 8095 \InsetSpace ~
8090 8096 \InsetSpace ~
8091 8097 \InsetSpace ~
8092 8098 \InsetSpace ~
8093 8099 \InsetSpace ~
8094 8100 \InsetSpace ~
8095 8101 \InsetSpace ~
8096 8102 <10> ['scopes.py', 'strings.py']
8097 8103 \end_layout
8098 8104
8099 8105 \begin_layout Standard
8100 8106 alist is now a normal python list you can loop over.
8101 8107 Using
8102 8108 \family typewriter
8103 8109 $
8104 8110 \family default
8105 8111 will expand back the python values when alias calls are made:
8106 8112 \end_layout
8107 8113
8108 8114 \begin_layout Standard
8109 8115
8110 8116 \family typewriter
8111 8117 fperez[~/test]|11> for f in alist:
8112 8118 \newline
8113 8119
8114 8120 \begin_inset ERT
8115 8121 status collapsed
8116 8122
8117 8123 \begin_layout Standard
8118 8124
8119 8125
8120 8126 \backslash
8121 8127 hspace*{0mm}
8122 8128 \end_layout
8123 8129
8124 8130 \end_inset
8125 8131
8126 8132 \InsetSpace ~
8127 8133 \InsetSpace ~
8128 8134 \InsetSpace ~
8129 8135 \InsetSpace ~
8130 8136 \InsetSpace ~
8131 8137 \InsetSpace ~
8132 8138 \InsetSpace ~
8133 8139 \InsetSpace ~
8134 8140 \InsetSpace ~
8135 8141 \InsetSpace ~
8136 8142 \InsetSpace ~
8137 8143 \InsetSpace ~
8138 8144 \InsetSpace ~
8139 8145 \InsetSpace ~
8140 8146 |..> \InsetSpace ~
8141 8147 \InsetSpace ~
8142 8148 \InsetSpace ~
8143 8149 \InsetSpace ~
8144 8150 print 'file',f,
8145 8151 \newline
8146 8152
8147 8153 \begin_inset ERT
8148 8154 status collapsed
8149 8155
8150 8156 \begin_layout Standard
8151 8157
8152 8158
8153 8159 \backslash
8154 8160 hspace*{0mm}
8155 8161 \end_layout
8156 8162
8157 8163 \end_inset
8158 8164
8159 8165 \InsetSpace ~
8160 8166 \InsetSpace ~
8161 8167 \InsetSpace ~
8162 8168 \InsetSpace ~
8163 8169 \InsetSpace ~
8164 8170 \InsetSpace ~
8165 8171 \InsetSpace ~
8166 8172 \InsetSpace ~
8167 8173 \InsetSpace ~
8168 8174 \InsetSpace ~
8169 8175 \InsetSpace ~
8170 8176 \InsetSpace ~
8171 8177 \InsetSpace ~
8172 8178 \InsetSpace ~
8173 8179 |..> \InsetSpace ~
8174 8180 \InsetSpace ~
8175 8181 \InsetSpace ~
8176 8182 \InsetSpace ~
8177 8183 wc -l $f
8178 8184 \newline
8179 8185
8180 8186 \begin_inset ERT
8181 8187 status collapsed
8182 8188
8183 8189 \begin_layout Standard
8184 8190
8185 8191
8186 8192 \backslash
8187 8193 hspace*{0mm}
8188 8194 \end_layout
8189 8195
8190 8196 \end_inset
8191 8197
8192 8198 \InsetSpace ~
8193 8199 \InsetSpace ~
8194 8200 \InsetSpace ~
8195 8201 \InsetSpace ~
8196 8202 \InsetSpace ~
8197 8203 \InsetSpace ~
8198 8204 \InsetSpace ~
8199 8205 \InsetSpace ~
8200 8206 \InsetSpace ~
8201 8207 \InsetSpace ~
8202 8208 \InsetSpace ~
8203 8209 \InsetSpace ~
8204 8210 \InsetSpace ~
8205 8211 \InsetSpace ~
8206 8212 |..>
8207 8213 \newline
8208 8214 file scopes.py 13 scopes.py
8209 8215 \newline
8210 8216 file strings.py 4 strings.py
8211 8217 \end_layout
8212 8218
8213 8219 \begin_layout Standard
8214 8220 Note that you may need to protect your variables with braces if you want
8215 8221 to append strings to their names.
8216 8222 To copy all files in alist to
8217 8223 \family typewriter
8218 8224 .bak
8219 8225 \family default
8220 8226 extensions, you must use:
8221 8227 \end_layout
8222 8228
8223 8229 \begin_layout Standard
8224 8230
8225 8231 \family typewriter
8226 8232 fperez[~/test]|12> for f in alist:
8227 8233 \newline
8228 8234
8229 8235 \begin_inset ERT
8230 8236 status collapsed
8231 8237
8232 8238 \begin_layout Standard
8233 8239
8234 8240
8235 8241 \backslash
8236 8242 hspace*{0mm}
8237 8243 \end_layout
8238 8244
8239 8245 \end_inset
8240 8246
8241 8247 \InsetSpace ~
8242 8248 \InsetSpace ~
8243 8249 \InsetSpace ~
8244 8250 \InsetSpace ~
8245 8251 \InsetSpace ~
8246 8252 \InsetSpace ~
8247 8253 \InsetSpace ~
8248 8254 \InsetSpace ~
8249 8255 \InsetSpace ~
8250 8256 \InsetSpace ~
8251 8257 \InsetSpace ~
8252 8258 \InsetSpace ~
8253 8259 \InsetSpace ~
8254 8260 \InsetSpace ~
8255 8261 |..> \InsetSpace ~
8256 8262 \InsetSpace ~
8257 8263 \InsetSpace ~
8258 8264 \InsetSpace ~
8259 8265 cp $f ${f}.bak
8260 8266 \end_layout
8261 8267
8262 8268 \begin_layout Standard
8263 8269 If you try using
8264 8270 \family typewriter
8265 8271 $f.bak
8266 8272 \family default
8267 8273 , you'll get an AttributeError exception saying that your string object
8268 8274 doesn't have a
8269 8275 \family typewriter
8270 8276 .bak
8271 8277 \family default
8272 8278 attribute.
8273 8279 This is because the
8274 8280 \family typewriter
8275 8281 $
8276 8282 \family default
8277 8283 expansion mechanism allows you to expand full Python expressions:
8278 8284 \end_layout
8279 8285
8280 8286 \begin_layout Standard
8281 8287
8282 8288 \family typewriter
8283 8289 fperez[~/test]|13> echo "sys.platform is: $sys.platform"
8284 8290 \newline
8285 8291 sys.platform is: linux2
8286 8292 \end_layout
8287 8293
8288 8294 \begin_layout Standard
8289 8295 IPython's input history handling is still active, which allows you to rerun
8290 8296 a single block of multi-line input by simply using exec:
8291 8297 \newline
8292 8298
8293 8299 \family typewriter
8294 8300 fperez[~/test]|14> $$alist = ls *.eps
8295 8301 \newline
8296 8302 fperez[~/test]|15> exec _i11
8297 8303 \newline
8298 8304 file image2.eps
8299 8305 921 image2.eps
8300 8306 \newline
8301 8307 file image.eps 921 image.eps
8302 8308 \end_layout
8303 8309
8304 8310 \begin_layout Standard
8305 8311 While these are new special-case syntaxes, they are designed to allow very
8306 8312 efficient use of the shell with minimal typing.
8307 8313 At an interactive shell prompt, conciseness of expression wins over readability.
8308 8314 \end_layout
8309 8315
8310 8316 \begin_layout Subsection
8311 8317 Useful functions and modules
8312 8318 \end_layout
8313 8319
8314 8320 \begin_layout Standard
8315 8321 The os, sys and shutil modules from the Python standard library are automaticall
8316 8322 y loaded.
8317 8323 Some additional functions, useful for shell usage, are listed below.
8318 8324 You can request more help about them with `
8319 8325 \family typewriter
8320 8326 ?
8321 8327 \family default
8322 8328 '.
8323 8329 \end_layout
8324 8330
8325 8331 \begin_layout Description
8326 8332
8327 8333 \family typewriter
8328 8334 shell
8329 8335 \family default
8330 8336 - execute a command in the underlying system shell
8331 8337 \end_layout
8332 8338
8333 8339 \begin_layout Description
8334 8340
8335 8341 \family typewriter
8336 8342 system
8337 8343 \family default
8338 8344 - like
8339 8345 \family typewriter
8340 8346 shell()
8341 8347 \family default
8342 8348 , but return the exit status of the command
8343 8349 \end_layout
8344 8350
8345 8351 \begin_layout Description
8346 8352
8347 8353 \family typewriter
8348 8354 sout
8349 8355 \family default
8350 8356 - capture the output of a command as a string
8351 8357 \end_layout
8352 8358
8353 8359 \begin_layout Description
8354 8360
8355 8361 \family typewriter
8356 8362 lout
8357 8363 \family default
8358 8364 - capture the output of a command as a list (split on `
8359 8365 \backslash
8360 8366 n')
8361 8367 \end_layout
8362 8368
8363 8369 \begin_layout Description
8364 8370
8365 8371 \family typewriter
8366 8372 getoutputerror
8367 8373 \family default
8368 8374 - capture (output,error) of a shell commandss
8369 8375 \end_layout
8370 8376
8371 8377 \begin_layout Standard
8372 8378
8373 8379 \family typewriter
8374 8380 sout
8375 8381 \family default
8376 8382 /
8377 8383 \family typewriter
8378 8384 lout
8379 8385 \family default
8380 8386 are the functional equivalents of
8381 8387 \family typewriter
8382 8388 $
8383 8389 \family default
8384 8390 /
8385 8391 \family typewriter
8386 8392 $$
8387 8393 \family default
8388 8394 .
8389 8395 They are provided to allow you to capture system output in the middle of
8390 8396 true python code, function definitions, etc (where
8391 8397 \family typewriter
8392 8398 $
8393 8399 \family default
8394 8400 and
8395 8401 \family typewriter
8396 8402 $$
8397 8403 \family default
8398 8404 are invalid).
8399 8405 \end_layout
8400 8406
8401 8407 \begin_layout Subsection
8402 8408 Directory management
8403 8409 \end_layout
8404 8410
8405 8411 \begin_layout Standard
8406 8412 Since each command passed by pysh to the underlying system is executed in
8407 8413 a subshell which exits immediately, you can NOT use !cd to navigate the
8408 8414 filesystem.
8409 8415 \end_layout
8410 8416
8411 8417 \begin_layout Standard
8412 8418 Pysh provides its own builtin
8413 8419 \family typewriter
8414 8420 `%cd
8415 8421 \family default
8416 8422 ' magic command to move in the filesystem (the
8417 8423 \family typewriter
8418 8424 %
8419 8425 \family default
8420 8426 is not required with automagic on).
8421 8427 It also maintains a list of visited directories (use
8422 8428 \family typewriter
8423 8429 %dhist
8424 8430 \family default
8425 8431 to see it) and allows direct switching to any of them.
8426 8432 Type
8427 8433 \family typewriter
8428 8434 `cd?
8429 8435 \family default
8430 8436 ' for more details.
8431 8437 \end_layout
8432 8438
8433 8439 \begin_layout Standard
8434 8440
8435 8441 \family typewriter
8436 8442 %pushd
8437 8443 \family default
8438 8444 ,
8439 8445 \family typewriter
8440 8446 %popd
8441 8447 \family default
8442 8448 and
8443 8449 \family typewriter
8444 8450 %dirs
8445 8451 \family default
8446 8452 are provided for directory stack handling.
8447 8453 \end_layout
8448 8454
8449 8455 \begin_layout Subsection
8450 8456 Prompt customization
8451 8457 \end_layout
8452 8458
8453 8459 \begin_layout Standard
8454 8460 The supplied
8455 8461 \family typewriter
8456 8462 ipythonrc-pysh
8457 8463 \family default
8458 8464 profile comes with an example of a very colored and detailed prompt, mainly
8459 8465 to serve as an illustration.
8460 8466 The valid escape sequences, besides color names, are:
8461 8467 \end_layout
8462 8468
8463 8469 \begin_layout Description
8464 8470
8465 8471 \backslash
8466 8472 # - Prompt number.
8467 8473 \end_layout
8468 8474
8469 8475 \begin_layout Description
8470 8476
8471 8477 \backslash
8472 8478 D - Dots, as many as there are digits in
8473 8479 \backslash
8474 8480 # (so they align).
8475 8481 \end_layout
8476 8482
8477 8483 \begin_layout Description
8478 8484
8479 8485 \backslash
8480 8486 w - Current working directory (cwd).
8481 8487 \end_layout
8482 8488
8483 8489 \begin_layout Description
8484 8490
8485 8491 \backslash
8486 8492 W - Basename of current working directory.
8487 8493 \end_layout
8488 8494
8489 8495 \begin_layout Description
8490 8496
8491 8497 \backslash
8492 8498 X
8493 8499 \emph on
8494 8500 N
8495 8501 \emph default
8496 8502 - Where
8497 8503 \emph on
8498 8504 N
8499 8505 \emph default
8500 8506 =0..5.
8501 8507 N terms of the cwd, with $HOME written as ~.
8502 8508 \end_layout
8503 8509
8504 8510 \begin_layout Description
8505 8511
8506 8512 \backslash
8507 8513 Y
8508 8514 \emph on
8509 8515 N
8510 8516 \emph default
8511 8517 - Where
8512 8518 \emph on
8513 8519 N
8514 8520 \emph default
8515 8521 =0..5.
8516 8522 Like X
8517 8523 \emph on
8518 8524 N
8519 8525 \emph default
8520 8526 , but if ~ is term
8521 8527 \emph on
8522 8528 N
8523 8529 \emph default
8524 8530 +1 it's also shown.
8525 8531 \end_layout
8526 8532
8527 8533 \begin_layout Description
8528 8534
8529 8535 \backslash
8530 8536 u - Username.
8531 8537 \end_layout
8532 8538
8533 8539 \begin_layout Description
8534 8540
8535 8541 \backslash
8536 8542 H - Full hostname.
8537 8543 \end_layout
8538 8544
8539 8545 \begin_layout Description
8540 8546
8541 8547 \backslash
8542 8548 h - Hostname up to first '.'
8543 8549 \end_layout
8544 8550
8545 8551 \begin_layout Description
8546 8552
8547 8553 \backslash
8548 8554 $ - Root symbol ($ or #).
8549 8555
8550 8556 \end_layout
8551 8557
8552 8558 \begin_layout Description
8553 8559
8554 8560 \backslash
8555 8561 t - Current time, in H:M:S format.
8556 8562 \end_layout
8557 8563
8558 8564 \begin_layout Description
8559 8565
8560 8566 \backslash
8561 8567 v - IPython release version.
8562 8568
8563 8569 \end_layout
8564 8570
8565 8571 \begin_layout Description
8566 8572
8567 8573 \backslash
8568 8574 n - Newline.
8569 8575
8570 8576 \end_layout
8571 8577
8572 8578 \begin_layout Description
8573 8579
8574 8580 \backslash
8575 8581 r - Carriage return.
8576 8582
8577 8583 \end_layout
8578 8584
8579 8585 \begin_layout Description
8580 8586
8581 8587 \backslash
8582 8588
8583 8589 \backslash
8584 8590 - An explicitly escaped '
8585 8591 \backslash
8586 8592 '.
8587 8593 \end_layout
8588 8594
8589 8595 \begin_layout Standard
8590 8596 You can configure your prompt colors using any ANSI color escape.
8591 8597 Each color escape sets the color for any subsequent text, until another
8592 8598 escape comes in and changes things.
8593 8599 The valid color escapes are:
8594 8600 \end_layout
8595 8601
8596 8602 \begin_layout Description
8597 8603
8598 8604 \backslash
8599 8605 C_Black
8600 8606 \end_layout
8601 8607
8602 8608 \begin_layout Description
8603 8609
8604 8610 \backslash
8605 8611 C_Blue
8606 8612 \end_layout
8607 8613
8608 8614 \begin_layout Description
8609 8615
8610 8616 \backslash
8611 8617 C_Brown
8612 8618 \end_layout
8613 8619
8614 8620 \begin_layout Description
8615 8621
8616 8622 \backslash
8617 8623 C_Cyan
8618 8624 \end_layout
8619 8625
8620 8626 \begin_layout Description
8621 8627
8622 8628 \backslash
8623 8629 C_DarkGray
8624 8630 \end_layout
8625 8631
8626 8632 \begin_layout Description
8627 8633
8628 8634 \backslash
8629 8635 C_Green
8630 8636 \end_layout
8631 8637
8632 8638 \begin_layout Description
8633 8639
8634 8640 \backslash
8635 8641 C_LightBlue
8636 8642 \end_layout
8637 8643
8638 8644 \begin_layout Description
8639 8645
8640 8646 \backslash
8641 8647 C_LightCyan
8642 8648 \end_layout
8643 8649
8644 8650 \begin_layout Description
8645 8651
8646 8652 \backslash
8647 8653 C_LightGray
8648 8654 \end_layout
8649 8655
8650 8656 \begin_layout Description
8651 8657
8652 8658 \backslash
8653 8659 C_LightGreen
8654 8660 \end_layout
8655 8661
8656 8662 \begin_layout Description
8657 8663
8658 8664 \backslash
8659 8665 C_LightPurple
8660 8666 \end_layout
8661 8667
8662 8668 \begin_layout Description
8663 8669
8664 8670 \backslash
8665 8671 C_LightRed
8666 8672 \end_layout
8667 8673
8668 8674 \begin_layout Description
8669 8675
8670 8676 \backslash
8671 8677 C_Purple
8672 8678 \end_layout
8673 8679
8674 8680 \begin_layout Description
8675 8681
8676 8682 \backslash
8677 8683 C_Red
8678 8684 \end_layout
8679 8685
8680 8686 \begin_layout Description
8681 8687
8682 8688 \backslash
8683 8689 C_White
8684 8690 \end_layout
8685 8691
8686 8692 \begin_layout Description
8687 8693
8688 8694 \backslash
8689 8695 C_Yellow
8690 8696 \end_layout
8691 8697
8692 8698 \begin_layout Description
8693 8699
8694 8700 \backslash
8695 8701 C_Normal Stop coloring, defaults to your terminal settings.
8696 8702 \end_layout
8697 8703
8698 8704 \begin_layout Section
8699 8705 \begin_inset LatexCommand \label{sec:Threading-support}
8700 8706
8701 8707 \end_inset
8702 8708
8703 8709 Threading support
8704 8710 \end_layout
8705 8711
8706 8712 \begin_layout Standard
8707 8713
8708 8714 \series bold
8709 8715 WARNING:
8710 8716 \series default
8711 8717 The threading support is still somewhat experimental, and it has only seen
8712 8718 reasonable testing under Linux.
8713 8719 Threaded code is particularly tricky to debug, and it tends to show extremely
8714 8720 platform-dependent behavior.
8715 8721 Since I only have access to Linux machines, I will have to rely on user's
8716 8722 experiences and assistance for this area of IPython to improve under other
8717 8723 platforms.
8718 8724 \end_layout
8719 8725
8720 8726 \begin_layout Standard
8721 8727 IPython, via the
8722 8728 \family typewriter
8723 8729 -gthread
8724 8730 \family default
8725 8731 ,
8726 8732 \family typewriter
8727 8733 -qthread
8728 8734 \family default
8729 8735 and
8730 8736 \family typewriter
8731 8737 -wthread
8732 8738 \family default
8733 8739 options (described in Sec.\InsetSpace ~
8734 8740
8735 8741 \begin_inset LatexCommand \ref{sec:threading-opts}
8736 8742
8737 8743 \end_inset
8738 8744
8739 8745 ), can run in multithreaded mode to support pyGTK, Qt and WXPython applications
8740 8746 respectively.
8741 8747 These GUI toolkits need to control the python main loop of execution, so
8742 8748 under a normal Python interpreter, starting a pyGTK, Qt or WXPython application
8743 8749 will immediately freeze the shell.
8744 8750
8745 8751 \end_layout
8746 8752
8747 8753 \begin_layout Standard
8748 8754 IPython, with one of these options (you can only use one at a time), separates
8749 8755 the graphical loop and IPython's code execution run into different threads.
8750 8756 This allows you to test interactively (with
8751 8757 \family typewriter
8752 8758 %run
8753 8759 \family default
8754 8760 , for example) your GUI code without blocking.
8755 8761 \end_layout
8756 8762
8757 8763 \begin_layout Standard
8758 8764 A nice mini-tutorial on using IPython along with the Qt Designer application
8759 8765 is available at the SciPy wiki:
8760 8766 \begin_inset LatexCommand \htmlurl{http://www.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer}
8761 8767
8762 8768 \end_inset
8763 8769
8764 8770 .
8765 8771 \end_layout
8766 8772
8767 8773 \begin_layout Subsection
8768 8774 Tk issues
8769 8775 \end_layout
8770 8776
8771 8777 \begin_layout Standard
8772 8778 As indicated in Sec.\InsetSpace ~
8773 8779
8774 8780 \begin_inset LatexCommand \ref{sec:threading-opts}
8775 8781
8776 8782 \end_inset
8777 8783
8778 8784 , a special
8779 8785 \family typewriter
8780 8786 -tk
8781 8787 \family default
8782 8788 option is provided to try and allow Tk graphical applications to coexist
8783 8789 interactively with WX, Qt or GTK ones.
8784 8790 Whether this works at all, however, is very platform and configuration
8785 8791 dependent.
8786 8792 Please experiment with simple test cases before committing to using this
8787 8793 combination of Tk and GTK/Qt/WX threading in a production environment.
8788 8794 \end_layout
8789 8795
8790 8796 \begin_layout Subsection
8791 8797 Signals and Threads
8792 8798 \end_layout
8793 8799
8794 8800 \begin_layout Standard
8795 8801 When any of the thread systems (GTK, Qt or WX) are active, either directly
8796 8802 or via
8797 8803 \family typewriter
8798 8804 -pylab
8799 8805 \family default
8800 8806 with a threaded backend, it is impossible to interrupt long-running Python
8801 8807 code via
8802 8808 \family typewriter
8803 8809 Ctrl-C
8804 8810 \family default
8805 8811 .
8806 8812 IPython can not pass the KeyboardInterrupt exception (or the underlying
8807 8813
8808 8814 \family typewriter
8809 8815 SIGINT
8810 8816 \family default
8811 8817 ) across threads, so any long-running process started from IPython will
8812 8818 run to completion, or will have to be killed via an external (OS-based)
8813 8819 mechanism.
8814 8820 \end_layout
8815 8821
8816 8822 \begin_layout Standard
8817 8823 To the best of my knowledge, this limitation is imposed by the Python interprete
8818 8824 r itself, and it comes from the difficulty of writing portable signal/threaded
8819 8825 code.
8820 8826 If any user is an expert on this topic and can suggest a better solution,
8821 8827 I would love to hear about it.
8822 8828 In the IPython sources, look at the
8823 8829 \family typewriter
8824 8830 Shell.py
8825 8831 \family default
8826 8832 module, and in particular at the
8827 8833 \family typewriter
8828 8834 runcode()
8829 8835 \family default
8830 8836 method.
8831 8837
8832 8838 \end_layout
8833 8839
8834 8840 \begin_layout Subsection
8835 8841 I/O pitfalls
8836 8842 \end_layout
8837 8843
8838 8844 \begin_layout Standard
8839 8845 Be mindful that the Python interpreter switches between threads every
8840 8846 \begin_inset Formula $N$
8841 8847 \end_inset
8842 8848
8843 8849 bytecodes, where the default value as of Python\InsetSpace ~
8844 8850 2.3 is
8845 8851 \begin_inset Formula $N=100.$
8846 8852 \end_inset
8847 8853
8848 8854 This value can be read by using the
8849 8855 \family typewriter
8850 8856 sys.getcheckinterval()
8851 8857 \family default
8852 8858 function, and it can be reset via
8853 8859 \family typewriter
8854 8860 sys.setcheckinterval(
8855 8861 \emph on
8856 8862 N
8857 8863 \emph default
8858 8864 )
8859 8865 \family default
8860 8866 .
8861 8867 This switching of threads can cause subtly confusing effects if one of
8862 8868 your threads is doing file I/O.
8863 8869 In text mode, most systems only flush file buffers when they encounter
8864 8870 a
8865 8871 \family typewriter
8866 8872 `
8867 8873 \backslash
8868 8874 n'
8869 8875 \family default
8870 8876 .
8871 8877 An instruction as simple as
8872 8878 \family typewriter
8873 8879
8874 8880 \newline
8875 8881 \InsetSpace ~
8876 8882 \InsetSpace ~
8877 8883 print >> filehandle,
8878 8884 \begin_inset Quotes eld
8879 8885 \end_inset
8880 8886
8881 8887 hello world
8882 8888 \begin_inset Quotes erd
8883 8889 \end_inset
8884 8890
8885 8891
8886 8892 \family default
8887 8893
8888 8894 \newline
8889 8895 actually consists of several bytecodes, so it is possible that the newline
8890 8896 does not reach your file before the next thread switch.
8891 8897 Similarly, if you are writing to a file in binary mode, the file won't
8892 8898 be flushed until the buffer fills, and your other thread may see apparently
8893 8899 truncated files.
8894 8900
8895 8901 \end_layout
8896 8902
8897 8903 \begin_layout Standard
8898 8904 For this reason, if you are using IPython's thread support and have (for
8899 8905 example) a GUI application which will read data generated by files written
8900 8906 to from the IPython thread, the safest approach is to open all of your
8901 8907 files in unbuffered mode (the third argument to the
8902 8908 \family typewriter
8903 8909 file/open
8904 8910 \family default
8905 8911 function is the buffering value):
8906 8912 \newline
8907 8913
8908 8914 \family typewriter
8909 8915 \InsetSpace ~
8910 8916 \InsetSpace ~
8911 8917 filehandle = open(filename,mode,0)
8912 8918 \end_layout
8913 8919
8914 8920 \begin_layout Standard
8915 8921 This is obviously a brute force way of avoiding race conditions with the
8916 8922 file buffering.
8917 8923 If you want to do it cleanly, and you have a resource which is being shared
8918 8924 by the interactive IPython loop and your GUI thread, you should really
8919 8925 handle it with thread locking and syncrhonization properties.
8920 8926 The Python documentation discusses these.
8921 8927 \end_layout
8922 8928
8923 8929 \begin_layout Section
8924 8930 \begin_inset LatexCommand \label{sec:interactive-demos}
8925 8931
8926 8932 \end_inset
8927 8933
8928 8934 Interactive demos with IPython
8929 8935 \end_layout
8930 8936
8931 8937 \begin_layout Standard
8932 8938 IPython ships with a basic system for running scripts interactively in sections,
8933 8939 useful when presenting code to audiences.
8934 8940 A few tags embedded in comments (so that the script remains valid Python
8935 8941 code) divide a file into separate blocks, and the demo can be run one block
8936 8942 at a time, with IPython printing (with syntax highlighting) the block before
8937 8943 executing it, and returning to the interactive prompt after each block.
8938 8944 The interactive namespace is updated after each block is run with the contents
8939 8945 of the demo's namespace.
8940 8946 \end_layout
8941 8947
8942 8948 \begin_layout Standard
8943 8949 This allows you to show a piece of code, run it and then execute interactively
8944 8950 commands based on the variables just created.
8945 8951 Once you want to continue, you simply execute the next block of the demo.
8946 8952 The following listing shows the markup necessary for dividing a script
8947 8953 into sections for execution as a demo.
8948 8954 \end_layout
8949 8955
8950 8956 \begin_layout Standard
8951 8957 \begin_inset ERT
8952 8958 status open
8953 8959
8954 8960 \begin_layout Standard
8955 8961
8956 8962
8957 8963 \backslash
8958 8964 codelist{examples/example-demo.py}
8959 8965 \end_layout
8960 8966
8961 8967 \end_inset
8962 8968
8963 8969
8964 8970 \end_layout
8965 8971
8966 8972 \begin_layout Standard
8967 8973 In order to run a file as a demo, you must first make a
8968 8974 \family typewriter
8969 8975 Demo
8970 8976 \family default
8971 8977 object out of it.
8972 8978 If the file is named
8973 8979 \family typewriter
8974 8980 myscript.py
8975 8981 \family default
8976 8982 , the following code will make a demo:
8977 8983 \end_layout
8978 8984
8979 8985 \begin_layout LyX-Code
8980 8986 from IPython.demo import Demo
8981 8987 \end_layout
8982 8988
8983 8989 \begin_layout LyX-Code
8984 8990 mydemo = Demo('myscript.py')
8985 8991 \end_layout
8986 8992
8987 8993 \begin_layout Standard
8988 8994 This creates the
8989 8995 \family typewriter
8990 8996 mydemo
8991 8997 \family default
8992 8998 object, whose blocks you run one at a time by simply calling the object
8993 8999 with no arguments.
8994 9000 If you have autocall active in IPython (the default), all you need to do
8995 9001 is type
8996 9002 \end_layout
8997 9003
8998 9004 \begin_layout LyX-Code
8999 9005 mydemo
9000 9006 \end_layout
9001 9007
9002 9008 \begin_layout Standard
9003 9009 and IPython will call it, executing each block.
9004 9010 Demo objects can be restarted, you can move forward or back skipping blocks,
9005 9011 re-execute the last block, etc.
9006 9012 Simply use the Tab key on a demo object to see its methods, and call
9007 9013 \family typewriter
9008 9014 `?'
9009 9015 \family default
9010 9016 on them to see their docstrings for more usage details.
9011 9017 In addition, the
9012 9018 \family typewriter
9013 9019 demo
9014 9020 \family default
9015 9021 module itself contains a comprehensive docstring, which you can access
9016 9022 via
9017 9023 \end_layout
9018 9024
9019 9025 \begin_layout LyX-Code
9020 9026 from IPython import demo
9021 9027 \end_layout
9022 9028
9023 9029 \begin_layout LyX-Code
9024 9030 demo?
9025 9031 \end_layout
9026 9032
9027 9033 \begin_layout Standard
9028 9034
9029 9035 \series bold
9030 9036 Limitations:
9031 9037 \series default
9032 9038 It is important to note that these demos are limited to fairly simple uses.
9033 9039 In particular, you can
9034 9040 \emph on
9035 9041 not
9036 9042 \emph default
9037 9043 put division marks in indented code (loops, if statements, function definitions
9038 9044 , etc.) Supporting something like this would basically require tracking the
9039 9045 internal execution state of the Python interpreter, so only top-level divisions
9040 9046 are allowed.
9041 9047 If you want to be able to open an IPython instance at an arbitrary point
9042 9048 in a program, you can use IPython's embedding facilities, described in
9043 9049 detail in Sec\SpecialChar \@.
9044 9050 \InsetSpace ~
9045 9051
9046 9052 \begin_inset LatexCommand \ref{sec:embed}
9047 9053
9048 9054 \end_inset
9049 9055
9050 9056 .
9051 9057 \end_layout
9052 9058
9053 9059 \begin_layout Section
9054 9060 \begin_inset LatexCommand \label{sec:matplotlib-support}
9055 9061
9056 9062 \end_inset
9057 9063
9058 9064 Plotting with
9059 9065 \family typewriter
9060 9066 matplotlib
9061 9067 \family default
9062 9068
9063 9069 \end_layout
9064 9070
9065 9071 \begin_layout Standard
9066 9072 The matplotlib library (
9067 9073 \begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
9068 9074
9069 9075 \end_inset
9070 9076
9071 9077 ) provides high quality 2D plotting for Python.
9072 9078 Matplotlib can produce plots on screen using a variety of GUI toolkits,
9073 9079 including Tk, GTK and WXPython.
9074 9080 It also provides a number of commands useful for scientific computing,
9075 9081 all with a syntax compatible with that of the popular Matlab program.
9076 9082 \end_layout
9077 9083
9078 9084 \begin_layout Standard
9079 9085 IPython accepts the special option
9080 9086 \family typewriter
9081 9087 -pylab
9082 9088 \family default
9083 9089 (Sec.\InsetSpace ~
9084 9090
9085 9091 \begin_inset LatexCommand \ref{sec:cmd-line-opts}
9086 9092
9087 9093 \end_inset
9088 9094
9089 9095 ).
9090 9096 This configures it to support matplotlib, honoring the settings in the
9091 9097
9092 9098 \family typewriter
9093 9099 .matplotlibrc
9094 9100 \family default
9095 9101 file.
9096 9102 IPython will detect the user's choice of matplotlib GUI backend, and automatica
9097 9103 lly select the proper threading model to prevent blocking.
9098 9104 It also sets matplotlib in interactive mode and modifies
9099 9105 \family typewriter
9100 9106 %run
9101 9107 \family default
9102 9108 slightly, so that any matplotlib-based script can be executed using
9103 9109 \family typewriter
9104 9110 %run
9105 9111 \family default
9106 9112 and the final
9107 9113 \family typewriter
9108 9114 show()
9109 9115 \family default
9110 9116 command does not block the interactive shell.
9111 9117 \end_layout
9112 9118
9113 9119 \begin_layout Standard
9114 9120 The
9115 9121 \family typewriter
9116 9122 -pylab
9117 9123 \family default
9118 9124 option must be given first in order for IPython to configure its threading
9119 9125 mode.
9120 9126 However, you can still issue other options afterwards.
9121 9127 This allows you to have a matplotlib-based environment customized with
9122 9128 additional modules using the standard IPython profile mechanism (Sec.\InsetSpace ~
9123 9129
9124 9130 \begin_inset LatexCommand \ref{sec:profiles}
9125 9131
9126 9132 \end_inset
9127 9133
9128 9134 ): ``
9129 9135 \family typewriter
9130 9136 ipython -pylab -p myprofile
9131 9137 \family default
9132 9138 '' will load the profile defined in
9133 9139 \family typewriter
9134 9140 ipythonrc-myprofile
9135 9141 \family default
9136 9142 after configuring matplotlib.
9137 9143 \end_layout
9138 9144
9139 9145 \begin_layout Section
9140 9146 \begin_inset LatexCommand \label{sec:Gnuplot}
9141 9147
9142 9148 \end_inset
9143 9149
9144 9150 Plotting with
9145 9151 \family typewriter
9146 9152 Gnuplot
9147 9153 \end_layout
9148 9154
9149 9155 \begin_layout Standard
9150 9156 Through the magic extension system described in sec.
9151 9157
9152 9158 \begin_inset LatexCommand \ref{sec:magic}
9153 9159
9154 9160 \end_inset
9155 9161
9156 9162 , IPython incorporates a mechanism for conveniently interfacing with the
9157 9163 Gnuplot system (
9158 9164 \begin_inset LatexCommand \htmlurl{http://www.gnuplot.info}
9159 9165
9160 9166 \end_inset
9161 9167
9162 9168 ).
9163 9169 Gnuplot is a very complete 2D and 3D plotting package available for many
9164 9170 operating systems and commonly included in modern Linux distributions.
9165 9171
9166 9172 \end_layout
9167 9173
9168 9174 \begin_layout Standard
9169 9175 Besides having Gnuplot installed, this functionality requires the
9170 9176 \family typewriter
9171 9177 Gnuplot.py
9172 9178 \family default
9173 9179 module for interfacing python with Gnuplot.
9174 9180 It can be downloaded from:
9175 9181 \begin_inset LatexCommand \htmlurl{http://gnuplot-py.sourceforge.net}
9176 9182
9177 9183 \end_inset
9178 9184
9179 9185 .
9180 9186 \end_layout
9181 9187
9182 9188 \begin_layout Subsection
9183 9189 Proper Gnuplot configuration
9184 9190 \end_layout
9185 9191
9186 9192 \begin_layout Standard
9187 9193 As of version 4.0, Gnuplot has excellent mouse and interactive keyboard support.
9188 9194 However, as of
9189 9195 \family typewriter
9190 9196 Gnuplot.py
9191 9197 \family default
9192 9198 version 1.7, a new option was added to communicate between Python and Gnuplot
9193 9199 via FIFOs (pipes).
9194 9200 This mechanism, while fast, also breaks the mouse system.
9195 9201 You must therefore set the variable
9196 9202 \family typewriter
9197 9203 prefer_fifo_data
9198 9204 \family default
9199 9205 to
9200 9206 \family typewriter
9201 9207 0
9202 9208 \family default
9203 9209 in file
9204 9210 \family typewriter
9205 9211 gp_unix.py
9206 9212 \family default
9207 9213 if you wish to keep the interactive mouse and keyboard features working
9208 9214 properly (
9209 9215 \family typewriter
9210 9216 prefer_inline_data
9211 9217 \family default
9212 9218 also must be
9213 9219 \family typewriter
9214 9220 0
9215 9221 \family default
9216 9222 , but this is the default so unless you've changed it manually you should
9217 9223 be fine).
9218 9224 \end_layout
9219 9225
9220 9226 \begin_layout Standard
9221 9227 'Out of the box', Gnuplot is configured with a rather poor set of size,
9222 9228 color and linewidth choices which make the graphs fairly hard to read on
9223 9229 modern high-resolution displays (although they work fine on old 640x480
9224 9230 ones).
9225 9231 Below is a section of my
9226 9232 \family typewriter
9227 9233 .Xdefaults
9228 9234 \family default
9229 9235 file which I use for having a more convenient Gnuplot setup.
9230 9236 Remember to load it by running
9231 9237 \family typewriter
9232 9238 `xrdb .Xdefaults`
9233 9239 \family default
9234 9240 :
9235 9241 \end_layout
9236 9242
9237 9243 \begin_layout Standard
9238 9244
9239 9245 \family typewriter
9240 9246 !******************************************************************
9241 9247 \newline
9242 9248 ! gnuplot
9243 9249 options
9244 9250 \newline
9245 9251 ! modify this for a convenient window size
9246 9252 \newline
9247 9253 gnuplot*geometry: 780x580
9248 9254 \end_layout
9249 9255
9250 9256 \begin_layout Standard
9251 9257
9252 9258 \family typewriter
9253 9259 ! on-screen font (not for PostScript)
9254 9260 \newline
9255 9261 gnuplot*font: -misc-fixed-bold-r-normal--15
9256 9262 -120-100-100-c-90-iso8859-1
9257 9263 \end_layout
9258 9264
9259 9265 \begin_layout Standard
9260 9266
9261 9267 \family typewriter
9262 9268 ! color options
9263 9269 \newline
9264 9270 gnuplot*background: black
9265 9271 \newline
9266 9272 gnuplot*textColor: white
9267 9273 \newline
9268 9274 gnuplot*borderCo
9269 9275 lor: white
9270 9276 \newline
9271 9277 gnuplot*axisColor: white
9272 9278 \newline
9273 9279 gnuplot*line1Color: red
9274 9280 \newline
9275 9281 gnuplot*line2Color:
9276 9282 green
9277 9283 \newline
9278 9284 gnuplot*line3Color: blue
9279 9285 \newline
9280 9286 gnuplot*line4Color: magenta
9281 9287 \newline
9282 9288 gnuplot*line5Color:
9283 9289 cyan
9284 9290 \newline
9285 9291 gnuplot*line6Color: sienna
9286 9292 \newline
9287 9293 gnuplot*line7Color: orange
9288 9294 \newline
9289 9295 gnuplot*line8Color:
9290 9296 coral
9291 9297 \end_layout
9292 9298
9293 9299 \begin_layout Standard
9294 9300
9295 9301 \family typewriter
9296 9302 ! multiplicative factor for point styles
9297 9303 \newline
9298 9304 gnuplot*pointsize: 2
9299 9305 \end_layout
9300 9306
9301 9307 \begin_layout Standard
9302 9308
9303 9309 \family typewriter
9304 9310 ! line width options (in pixels)
9305 9311 \newline
9306 9312 gnuplot*borderWidth: 2
9307 9313 \newline
9308 9314 gnuplot*axisWidth:
9309 9315 2
9310 9316 \newline
9311 9317 gnuplot*line1Width: 2
9312 9318 \newline
9313 9319 gnuplot*line2Width: 2
9314 9320 \newline
9315 9321 gnuplot*line3Width: 2
9316 9322 \newline
9317 9323 gnuplot*line4Wi
9318 9324 dth: 2
9319 9325 \newline
9320 9326 gnuplot*line5Width: 2
9321 9327 \newline
9322 9328 gnuplot*line6Width: 2
9323 9329 \newline
9324 9330 gnuplot*line7Width: 2
9325 9331 \newline
9326 9332 gnuplot*lin
9327 9333 e8Width: 2
9328 9334 \end_layout
9329 9335
9330 9336 \begin_layout Subsection
9331 9337 The
9332 9338 \family typewriter
9333 9339 IPython.GnuplotRuntime
9334 9340 \family default
9335 9341 module
9336 9342 \end_layout
9337 9343
9338 9344 \begin_layout Standard
9339 9345 IPython includes a module called
9340 9346 \family typewriter
9341 9347 Gnuplot2.py
9342 9348 \family default
9343 9349 which extends and improves the default
9344 9350 \family typewriter
9345 9351 Gnuplot
9346 9352 \family default
9347 9353 .
9348 9354 \family typewriter
9349 9355 py
9350 9356 \family default
9351 9357 (which it still relies upon).
9352 9358 For example, the new
9353 9359 \family typewriter
9354 9360 plot
9355 9361 \family default
9356 9362 function adds several improvements to the original making it more convenient
9357 9363 for interactive use, and
9358 9364 \family typewriter
9359 9365 hardcopy
9360 9366 \family default
9361 9367 fixes a bug in the original which under some circumstances blocks the creation
9362 9368 of PostScript output.
9363 9369 \end_layout
9364 9370
9365 9371 \begin_layout Standard
9366 9372 For scripting use,
9367 9373 \family typewriter
9368 9374 GnuplotRuntime.py
9369 9375 \family default
9370 9376 is provided, which wraps
9371 9377 \family typewriter
9372 9378 Gnuplot2.py
9373 9379 \family default
9374 9380 and creates a series of global aliases.
9375 9381 These make it easy to control Gnuplot plotting jobs through the Python
9376 9382 language.
9377 9383 \end_layout
9378 9384
9379 9385 \begin_layout Standard
9380 9386 Below is some example code which illustrates how to configure Gnuplot inside
9381 9387 your own programs but have it available for further interactive use through
9382 9388 an embedded IPython instance.
9383 9389 Simply run this file at a system prompt.
9384 9390 This file is provided as
9385 9391 \family typewriter
9386 9392 example-gnuplot.py
9387 9393 \family default
9388 9394 in the examples directory:
9389 9395 \end_layout
9390 9396
9391 9397 \begin_layout Standard
9392 9398 \begin_inset ERT
9393 9399 status open
9394 9400
9395 9401 \begin_layout Standard
9396 9402
9397 9403
9398 9404 \backslash
9399 9405 codelist{examples/example-gnuplot.py}
9400 9406 \end_layout
9401 9407
9402 9408 \end_inset
9403 9409
9404 9410
9405 9411 \end_layout
9406 9412
9407 9413 \begin_layout Subsection
9408 9414 The
9409 9415 \family typewriter
9410 9416 numeric
9411 9417 \family default
9412 9418 profile: a scientific computing environment
9413 9419 \end_layout
9414 9420
9415 9421 \begin_layout Standard
9416 9422 The
9417 9423 \family typewriter
9418 9424 numeric
9419 9425 \family default
9420 9426 IPython profile, which you can activate with
9421 9427 \family typewriter
9422 9428 `ipython -p numeric
9423 9429 \family default
9424 9430 ' will automatically load the IPython Gnuplot extensions (plus Numeric and
9425 9431 other useful things for numerical computing), contained in the
9426 9432 \family typewriter
9427 9433 IPython.GnuplotInteractive
9428 9434 \family default
9429 9435 module.
9430 9436 This will create the globals
9431 9437 \family typewriter
9432 9438 Gnuplot
9433 9439 \family default
9434 9440 (an alias to the improved Gnuplot2 module),
9435 9441 \family typewriter
9436 9442 gp
9437 9443 \family default
9438 9444 (a Gnuplot active instance), the new magic commands
9439 9445 \family typewriter
9440 9446 %gpc
9441 9447 \family default
9442 9448 and
9443 9449 \family typewriter
9444 9450 %gp_set_instance
9445 9451 \family default
9446 9452 and several other convenient globals.
9447 9453 Type
9448 9454 \family typewriter
9449 9455 gphelp()
9450 9456 \family default
9451 9457 for further details.
9452 9458 \end_layout
9453 9459
9454 9460 \begin_layout Standard
9455 9461 This should turn IPython into a convenient environment for numerical computing,
9456 9462 with all the functions in the NumPy library and the Gnuplot facilities
9457 9463 for plotting.
9458 9464 Further improvements can be obtained by loading the SciPy libraries for
9459 9465 scientific computing, available at
9460 9466 \begin_inset LatexCommand \htmlurl{http://scipy.org}
9461 9467
9462 9468 \end_inset
9463 9469
9464 9470 .
9465 9471 \end_layout
9466 9472
9467 9473 \begin_layout Standard
9468 9474 If you are in the middle of a working session with numerical objects and
9469 9475 need to plot them but you didn't start the
9470 9476 \family typewriter
9471 9477 numeric
9472 9478 \family default
9473 9479 profile, you can load these extensions at any time by typing
9474 9480 \newline
9475 9481
9476 9482 \family typewriter
9477 9483 from IPython.GnuplotInteractive import *
9478 9484 \newline
9479 9485
9480 9486 \family default
9481 9487 at the IPython prompt.
9482 9488 This will allow you to keep your objects intact and start using Gnuplot
9483 9489 to view them.
9484 9490 \end_layout
9485 9491
9486 9492 \begin_layout Section
9487 9493 Reporting bugs
9488 9494 \end_layout
9489 9495
9490 9496 \begin_layout Subsection*
9491 9497 Automatic crash reports
9492 9498 \end_layout
9493 9499
9494 9500 \begin_layout Standard
9495 9501 Ideally, IPython itself shouldn't crash.
9496 9502 It will catch exceptions produced by you, but bugs in its internals will
9497 9503 still crash it.
9498 9504 \end_layout
9499 9505
9500 9506 \begin_layout Standard
9501 9507 In such a situation, IPython will leave a file named
9502 9508 \family typewriter
9503 9509 IPython_crash_report.txt
9504 9510 \family default
9505 9511 in your IPYTHONDIR directory (that way if crashes happen several times
9506 9512 it won't litter many directories, the post-mortem file is always located
9507 9513 in the same place and new occurrences just overwrite the previous one).
9508 9514 If you can mail this file to the developers (see sec.
9509 9515
9510 9516 \begin_inset LatexCommand \ref{sec:credits}
9511 9517
9512 9518 \end_inset
9513 9519
9514 9520 for names and addresses), it will help us
9515 9521 \emph on
9516 9522 a lot
9517 9523 \emph default
9518 9524 in understanding the cause of the problem and fixing it sooner.
9519 9525 \end_layout
9520 9526
9521 9527 \begin_layout Subsection*
9522 9528 The bug tracker
9523 9529 \end_layout
9524 9530
9525 9531 \begin_layout Standard
9526 9532 IPython also has an online bug-tracker, located at
9527 9533 \begin_inset LatexCommand \htmlurl{http://projects.scipy.org/ipython/ipython/report/1}
9528 9534
9529 9535 \end_inset
9530 9536
9531 9537 .
9532 9538 In addition to mailing the developers, it would be a good idea to file
9533 9539 a bug report here.
9534 9540 This will ensure that the issue is properly followed to conclusion.
9535 9541 To report new bugs you will have to register first.
9536 9542 \end_layout
9537 9543
9538 9544 \begin_layout Standard
9539 9545 You can also use this bug tracker to file feature requests.
9540 9546 \end_layout
9541 9547
9542 9548 \begin_layout Section
9543 9549 Brief history
9544 9550 \end_layout
9545 9551
9546 9552 \begin_layout Subsection
9547 9553 Origins
9548 9554 \end_layout
9549 9555
9550 9556 \begin_layout Standard
9551 9557 The current IPython system grew out of the following three projects:
9552 9558 \end_layout
9553 9559
9554 9560 \begin_layout List
9555 9561 \labelwidthstring 00.00.0000
9556 9562 ipython by Fernando P
9557 9563 \begin_inset ERT
9558 9564 status collapsed
9559 9565
9560 9566 \begin_layout Standard
9561 9567
9562 9568
9563 9569 \backslash
9564 9570 '{e}
9565 9571 \end_layout
9566 9572
9567 9573 \end_inset
9568 9574
9569 9575 rez.
9570 9576 I was working on adding Mathematica-type prompts and a flexible configuration
9571 9577 system (something better than
9572 9578 \family typewriter
9573 9579 $PYTHONSTARTUP
9574 9580 \family default
9575 9581 ) to the standard Python interactive interpreter.
9576 9582 \end_layout
9577 9583
9578 9584 \begin_layout List
9579 9585 \labelwidthstring 00.00.0000
9580 9586 IPP by Janko Hauser.
9581 9587 Very well organized, great usability.
9582 9588 Had an old help system.
9583 9589 IPP was used as the `container' code into which I added the functionality
9584 9590 from ipython and LazyPython.
9585 9591 \end_layout
9586 9592
9587 9593 \begin_layout List
9588 9594 \labelwidthstring 00.00.0000
9589 9595 LazyPython by Nathan Gray.
9590 9596 Simple but
9591 9597 \emph on
9592 9598 very
9593 9599 \emph default
9594 9600 powerful.
9595 9601 The quick syntax (auto parens, auto quotes) and verbose/colored tracebacks
9596 9602 were all taken from here.
9597 9603 \end_layout
9598 9604
9599 9605 \begin_layout Standard
9600 9606 When I found out (see sec.
9601 9607
9602 9608 \begin_inset LatexCommand \ref{figgins}
9603 9609
9604 9610 \end_inset
9605 9611
9606 9612 ) about IPP and LazyPython I tried to join all three into a unified system.
9607 9613 I thought this could provide a very nice working environment, both for
9608 9614 regular programming and scientific computing: shell-like features, IDL/Matlab
9609 9615 numerics, Mathematica-type prompt history and great object introspection
9610 9616 and help facilities.
9611 9617 I think it worked reasonably well, though it was a lot more work than I
9612 9618 had initially planned.
9613 9619 \end_layout
9614 9620
9615 9621 \begin_layout Subsection
9616 9622 Current status
9617 9623 \end_layout
9618 9624
9619 9625 \begin_layout Standard
9620 9626 The above listed features work, and quite well for the most part.
9621 9627 But until a major internal restructuring is done (see below), only bug
9622 9628 fixing will be done, no other features will be added (unless very minor
9623 9629 and well localized in the cleaner parts of the code).
9624 9630 \end_layout
9625 9631
9626 9632 \begin_layout Standard
9627 9633 IPython consists of some 18000 lines of pure python code, of which roughly
9628 9634 two thirds is reasonably clean.
9629 9635 The rest is, messy code which needs a massive restructuring before any
9630 9636 further major work is done.
9631 9637 Even the messy code is fairly well documented though, and most of the problems
9632 9638 in the (non-existent) class design are well pointed to by a PyChecker run.
9633 9639 So the rewriting work isn't that bad, it will just be time-consuming.
9634 9640 \end_layout
9635 9641
9636 9642 \begin_layout Subsection
9637 9643 Future
9638 9644 \end_layout
9639 9645
9640 9646 \begin_layout Standard
9641 9647 See the separate
9642 9648 \family typewriter
9643 9649 new_design
9644 9650 \family default
9645 9651 document for details.
9646 9652 Ultimately, I would like to see IPython become part of the standard Python
9647 9653 distribution as a `big brother with batteries' to the standard Python interacti
9648 9654 ve interpreter.
9649 9655 But that will never happen with the current state of the code, so all contribut
9650 9656 ions are welcome.
9651 9657 \end_layout
9652 9658
9653 9659 \begin_layout Section
9654 9660 License
9655 9661 \end_layout
9656 9662
9657 9663 \begin_layout Standard
9658 9664 IPython is released under the terms of the BSD license, whose general form
9659 9665 can be found at:
9660 9666 \begin_inset LatexCommand \htmlurl{http://www.opensource.org/licenses/bsd-license.php}
9661 9667
9662 9668 \end_inset
9663 9669
9664 9670 .
9665 9671 The full text of the IPython license is reproduced below:
9666 9672 \end_layout
9667 9673
9668 9674 \begin_layout Quote
9669 9675
9670 9676 \family typewriter
9671 9677 \size small
9672 9678 IPython is released under a BSD-type license.
9673 9679 \end_layout
9674 9680
9675 9681 \begin_layout Quote
9676 9682
9677 9683 \family typewriter
9678 9684 \size small
9679 9685 Copyright (c) 2001, 2002, 2003, 2004 Fernando Perez <fperez@colorado.edu>.
9680 9686 \end_layout
9681 9687
9682 9688 \begin_layout Quote
9683 9689
9684 9690 \family typewriter
9685 9691 \size small
9686 9692 Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and
9687 9693 \newline
9688 9694 Nathaniel Gray <n8gray@ca
9689 9695 ltech.edu>.
9690 9696 \end_layout
9691 9697
9692 9698 \begin_layout Quote
9693 9699
9694 9700 \family typewriter
9695 9701 \size small
9696 9702 All rights reserved.
9697 9703 \end_layout
9698 9704
9699 9705 \begin_layout Quote
9700 9706
9701 9707 \family typewriter
9702 9708 \size small
9703 9709 Redistribution and use in source and binary forms, with or without modification,
9704 9710 are permitted provided that the following conditions are met:
9705 9711 \end_layout
9706 9712
9707 9713 \begin_layout Quote
9708 9714
9709 9715 \family typewriter
9710 9716 \size small
9711 9717 a.
9712 9718 Redistributions of source code must retain the above copyright notice,
9713 9719 this list of conditions and the following disclaimer.
9714 9720 \end_layout
9715 9721
9716 9722 \begin_layout Quote
9717 9723
9718 9724 \family typewriter
9719 9725 \size small
9720 9726 b.
9721 9727 Redistributions in binary form must reproduce the above copyright notice,
9722 9728 this list of conditions and the following disclaimer in the documentation
9723 9729 and/or other materials provided with the distribution.
9724 9730 \end_layout
9725 9731
9726 9732 \begin_layout Quote
9727 9733
9728 9734 \family typewriter
9729 9735 \size small
9730 9736 c.
9731 9737 Neither the name of the copyright holders nor the names of any contributors
9732 9738 to this software may be used to endorse or promote products derived from
9733 9739 this software without specific prior written permission.
9734 9740 \end_layout
9735 9741
9736 9742 \begin_layout Quote
9737 9743
9738 9744 \family typewriter
9739 9745 \size small
9740 9746 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
9741 9747 IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
9742 9748 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
9743 9749 PURPOSE ARE DISCLAIMED.
9744 9750 IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
9745 9751 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
9746 9752 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
9747 9753 USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
9748 9754 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
9749 9755 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
9750 9756 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9751 9757
9752 9758 \end_layout
9753 9759
9754 9760 \begin_layout Standard
9755 9761 Individual authors are the holders of the copyright for their code and are
9756 9762 listed in each file.
9757 9763 \end_layout
9758 9764
9759 9765 \begin_layout Standard
9760 9766 Some files (
9761 9767 \family typewriter
9762 9768 DPyGetOpt.py
9763 9769 \family default
9764 9770 , for example) may be licensed under different conditions.
9765 9771 Ultimately each file indicates clearly the conditions under which its author/au
9766 9772 thors have decided to publish the code.
9767 9773 \end_layout
9768 9774
9769 9775 \begin_layout Standard
9770 9776 Versions of IPython up to and including 0.6.3 were released under the GNU
9771 9777 Lesser General Public License (LGPL), available at
9772 9778 \begin_inset LatexCommand \htmlurl{http://www.gnu.org/copyleft/lesser.html}
9773 9779
9774 9780 \end_inset
9775 9781
9776 9782 .
9777 9783 \end_layout
9778 9784
9779 9785 \begin_layout Section
9780 9786 \begin_inset LatexCommand \label{sec:credits}
9781 9787
9782 9788 \end_inset
9783 9789
9784 9790 Credits
9785 9791 \end_layout
9786 9792
9787 9793 \begin_layout Standard
9788 9794 IPython is mainly developed by Fernando P
9789 9795 \begin_inset ERT
9790 9796 status collapsed
9791 9797
9792 9798 \begin_layout Standard
9793 9799
9794 9800
9795 9801 \backslash
9796 9802 '{e}
9797 9803 \end_layout
9798 9804
9799 9805 \end_inset
9800 9806
9801 9807 rez
9802 9808 \family typewriter
9803 9809 <Fernando.Perez@colorado.edu>
9804 9810 \family default
9805 9811 , but the project was born from mixing in Fernando's code with the IPP project
9806 9812 by Janko Hauser
9807 9813 \family typewriter
9808 9814 <jhauser-AT-zscout.de>
9809 9815 \family default
9810 9816 and LazyPython by Nathan Gray
9811 9817 \family typewriter
9812 9818 <n8gray-AT-caltech.edu>
9813 9819 \family default
9814 9820 .
9815 9821 For all IPython-related requests, please contact Fernando.
9816 9822
9817 9823 \end_layout
9818 9824
9819 9825 \begin_layout Standard
9820 9826 As of early 2006, the following developers have joined the core team:
9821 9827 \end_layout
9822 9828
9823 9829 \begin_layout List
9824 9830 \labelwidthstring 00.00.0000
9825 9831 Robert\InsetSpace ~
9826 9832 Kern
9827 9833 \family typewriter
9828 9834 <rkern-AT-enthought.com>
9829 9835 \family default
9830 9836 : co-mentored the 2005 Google Summer of Code project to develop python interacti
9831 9837 ve notebooks (XML documents) and graphical interface.
9832 9838 This project was awarded to the students Tzanko Matev
9833 9839 \family typewriter
9834 9840 <tsanko-AT-gmail.com>
9835 9841 \family default
9836 9842 and Toni Alatalo
9837 9843 \family typewriter
9838 9844 <antont-AT-an.org>
9839 9845 \end_layout
9840 9846
9841 9847 \begin_layout List
9842 9848 \labelwidthstring 00.00.0000
9843 9849 Brian\InsetSpace ~
9844 9850 Granger
9845 9851 \family typewriter
9846 9852 <bgranger-AT-scu.edu>
9847 9853 \family default
9848 9854 : extending IPython to allow support for interactive parallel computing.
9849 9855 \end_layout
9850 9856
9851 9857 \begin_layout List
9852 9858 \labelwidthstring 00.00.0000
9853 9859 Ville\InsetSpace ~
9854 9860 Vainio
9855 9861 \family typewriter
9856 9862 <vivainio-AT-gmail.com>
9857 9863 \family default
9858 9864 : Ville is the new maintainer for the main trunk of IPython after version
9859 9865 0.7.1.
9860 9866 \end_layout
9861 9867
9862 9868 \begin_layout Standard
9863 9869 User or development help should be requested via the IPython mailing lists:
9864 9870 \end_layout
9865 9871
9866 9872 \begin_layout Description
9867 9873 User\InsetSpace ~
9868 9874 list:
9869 9875 \begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-user}
9870 9876
9871 9877 \end_inset
9872 9878
9873 9879
9874 9880 \end_layout
9875 9881
9876 9882 \begin_layout Description
9877 9883 Developer's\InsetSpace ~
9878 9884 list:
9879 9885 \begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-dev}
9880 9886
9881 9887 \end_inset
9882 9888
9883 9889
9884 9890 \end_layout
9885 9891
9886 9892 \begin_layout Standard
9887 9893 The IPython project is also very grateful to
9888 9894 \begin_inset Foot
9889 9895 status collapsed
9890 9896
9891 9897 \begin_layout Standard
9892 9898 I've mangled email addresses to reduce spam, since the IPython manuals can
9893 9899 be accessed online.
9894 9900 \end_layout
9895 9901
9896 9902 \end_inset
9897 9903
9898 9904 :
9899 9905 \end_layout
9900 9906
9901 9907 \begin_layout Standard
9902 9908 Bill Bumgarner
9903 9909 \family typewriter
9904 9910 <bbum-AT-friday.com>
9905 9911 \family default
9906 9912 : for providing the DPyGetOpt module which gives very powerful and convenient
9907 9913 handling of command-line options (light years ahead of what Python 2.1.1's
9908 9914 getopt module does).
9909 9915 \end_layout
9910 9916
9911 9917 \begin_layout Standard
9912 9918 Ka-Ping Yee
9913 9919 \family typewriter
9914 9920 <ping-AT-lfw.org>
9915 9921 \family default
9916 9922 : for providing the Itpl module for convenient and powerful string interpolation
9917 9923 with a much nicer syntax than formatting through the '%' operator.
9918 9924 \end_layout
9919 9925
9920 9926 \begin_layout Standard
9921 9927 Arnd Baecker
9922 9928 \family typewriter
9923 9929 <baecker-AT-physik.tu-dresden.de>
9924 9930 \family default
9925 9931 : for his many very useful suggestions and comments, and lots of help with
9926 9932 testing and documentation checking.
9927 9933 Many of IPython's newer features are a result of discussions with him (bugs
9928 9934 are still my fault, not his).
9929 9935 \end_layout
9930 9936
9931 9937 \begin_layout Standard
9932 9938 Obviously Guido van\InsetSpace ~
9933 9939 Rossum and the whole Python development team, that goes
9934 9940 without saying.
9935 9941 \end_layout
9936 9942
9937 9943 \begin_layout Standard
9938 9944 IPython's website is generously hosted at
9939 9945 \begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
9940 9946
9941 9947 \end_inset
9942 9948
9943 9949 by Enthought (
9944 9950 \begin_inset LatexCommand \htmlurl{http://www.enthought.com}
9945 9951
9946 9952 \end_inset
9947 9953
9948 9954 ).
9949 9955 I am very grateful to them and all of the SciPy team for their contribution.
9950 9956 \end_layout
9951 9957
9952 9958 \begin_layout Standard
9953 9959 \begin_inset LatexCommand \label{figgins}
9954 9960
9955 9961 \end_inset
9956 9962
9957 9963 Fernando would also like to thank Stephen Figgins
9958 9964 \family typewriter
9959 9965 <fig-AT-monitor.net>
9960 9966 \family default
9961 9967 , an O'Reilly Python editor.
9962 9968 His Oct/11/2001 article about IPP and LazyPython, was what got this project
9963 9969 started.
9964 9970 You can read it at:
9965 9971 \begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2001/10/11/pythonnews.html}
9966 9972
9967 9973 \end_inset
9968 9974
9969 9975 .
9970 9976 \end_layout
9971 9977
9972 9978 \begin_layout Standard
9973 9979 And last but not least, all the kind IPython users who have emailed new
9974 9980 code, bug reports, fixes, comments and ideas.
9975 9981 A brief list follows, please let me know if I have ommitted your name by
9976 9982 accident:
9977 9983 \end_layout
9978 9984
9979 9985 \begin_layout List
9980 9986 \labelwidthstring 00.00.0000
9981 9987 Jack\InsetSpace ~
9982 9988 Moffit
9983 9989 \family typewriter
9984 9990 <jack-AT-xiph.org>
9985 9991 \family default
9986 9992 Bug fixes, including the infamous color problem.
9987 9993 This bug alone caused many lost hours and frustration, many thanks to him
9988 9994 for the fix.
9989 9995 I've always been a fan of Ogg & friends, now I have one more reason to
9990 9996 like these folks.
9991 9997 \newline
9992 9998 Jack is also contributing with Debian packaging and many
9993 9999 other things.
9994 10000 \end_layout
9995 10001
9996 10002 \begin_layout List
9997 10003 \labelwidthstring 00.00.0000
9998 10004 Alexander\InsetSpace ~
9999 10005 Schmolck
10000 10006 \family typewriter
10001 10007 <a.schmolck-AT-gmx.net>
10002 10008 \family default
10003 10009 Emacs work, bug reports, bug fixes, ideas, lots more.
10004 10010 The ipython.el mode for (X)Emacs is Alex's code, providing full support
10005 10011 for IPython under (X)Emacs.
10006 10012 \end_layout
10007 10013
10008 10014 \begin_layout List
10009 10015 \labelwidthstring 00.00.0000
10010 10016 Andrea\InsetSpace ~
10011 10017 Riciputi
10012 10018 \family typewriter
10013 10019 <andrea.riciputi-AT-libero.it>
10014 10020 \family default
10015 10021 Mac OSX information, Fink package management.
10016 10022 \end_layout
10017 10023
10018 10024 \begin_layout List
10019 10025 \labelwidthstring 00.00.0000
10020 10026 Gary\InsetSpace ~
10021 10027 Bishop
10022 10028 \family typewriter
10023 10029 <gb-AT-cs.unc.edu>
10024 10030 \family default
10025 10031 Bug reports, and patches to work around the exception handling idiosyncracies
10026 10032 of WxPython.
10027 10033 Readline and color support for Windows.
10028 10034 \end_layout
10029 10035
10030 10036 \begin_layout List
10031 10037 \labelwidthstring 00.00.0000
10032 10038 Jeffrey\InsetSpace ~
10033 10039 Collins
10034 10040 \family typewriter
10035 10041 <Jeff.Collins-AT-vexcel.com>
10036 10042 \family default
10037 10043 Bug reports.
10038 10044 Much improved readline support, including fixes for Python 2.3.
10039 10045 \end_layout
10040 10046
10041 10047 \begin_layout List
10042 10048 \labelwidthstring 00.00.0000
10043 10049 Dryice\InsetSpace ~
10044 10050 Liu
10045 10051 \family typewriter
10046 10052 <dryice-AT-liu.com.cn>
10047 10053 \family default
10048 10054 FreeBSD port.
10049 10055 \end_layout
10050 10056
10051 10057 \begin_layout List
10052 10058 \labelwidthstring 00.00.0000
10053 10059 Mike\InsetSpace ~
10054 10060 Heeter
10055 10061 \family typewriter
10056 10062 <korora-AT-SDF.LONESTAR.ORG>
10057 10063 \end_layout
10058 10064
10059 10065 \begin_layout List
10060 10066 \labelwidthstring 00.00.0000
10061 10067 Christopher\InsetSpace ~
10062 10068 Hart
10063 10069 \family typewriter
10064 10070 <hart-AT-caltech.edu>
10065 10071 \family default
10066 10072 PDB integration.
10067 10073 \end_layout
10068 10074
10069 10075 \begin_layout List
10070 10076 \labelwidthstring 00.00.0000
10071 10077 Milan\InsetSpace ~
10072 10078 Zamazal
10073 10079 \family typewriter
10074 10080 <pdm-AT-zamazal.org>
10075 10081 \family default
10076 10082 Emacs info.
10077 10083 \end_layout
10078 10084
10079 10085 \begin_layout List
10080 10086 \labelwidthstring 00.00.0000
10081 10087 Philip\InsetSpace ~
10082 10088 Hisley
10083 10089 \family typewriter
10084 10090 <compsys-AT-starpower.net>
10085 10091 \end_layout
10086 10092
10087 10093 \begin_layout List
10088 10094 \labelwidthstring 00.00.0000
10089 10095 Holger\InsetSpace ~
10090 10096 Krekel
10091 10097 \family typewriter
10092 10098 <pyth-AT-devel.trillke.net>
10093 10099 \family default
10094 10100 Tab completion, lots more.
10095 10101 \end_layout
10096 10102
10097 10103 \begin_layout List
10098 10104 \labelwidthstring 00.00.0000
10099 10105 Robin\InsetSpace ~
10100 10106 Siebler
10101 10107 \family typewriter
10102 10108 <robinsiebler-AT-starband.net>
10103 10109 \end_layout
10104 10110
10105 10111 \begin_layout List
10106 10112 \labelwidthstring 00.00.0000
10107 10113 Ralf\InsetSpace ~
10108 10114 Ahlbrink
10109 10115 \family typewriter
10110 10116 <ralf_ahlbrink-AT-web.de>
10111 10117 \end_layout
10112 10118
10113 10119 \begin_layout List
10114 10120 \labelwidthstring 00.00.0000
10115 10121 Thorsten\InsetSpace ~
10116 10122 Kampe
10117 10123 \family typewriter
10118 10124 <thorsten-AT-thorstenkampe.de>
10119 10125 \end_layout
10120 10126
10121 10127 \begin_layout List
10122 10128 \labelwidthstring 00.00.0000
10123 10129 Fredrik\InsetSpace ~
10124 10130 Kant
10125 10131 \family typewriter
10126 10132 <fredrik.kant-AT-front.com>
10127 10133 \family default
10128 10134 Windows setup.
10129 10135 \end_layout
10130 10136
10131 10137 \begin_layout List
10132 10138 \labelwidthstring 00.00.0000
10133 10139 Syver\InsetSpace ~
10134 10140 Enstad
10135 10141 \family typewriter
10136 10142 <syver-en-AT-online.no>
10137 10143 \family default
10138 10144 Windows setup.
10139 10145 \end_layout
10140 10146
10141 10147 \begin_layout List
10142 10148 \labelwidthstring 00.00.0000
10143 10149 Richard
10144 10150 \family typewriter
10145 10151 <rxe-AT-renre-europe.com>
10146 10152 \family default
10147 10153 Global embedding.
10148 10154 \end_layout
10149 10155
10150 10156 \begin_layout List
10151 10157 \labelwidthstring 00.00.0000
10152 10158 Hayden\InsetSpace ~
10153 10159 Callow
10154 10160 \family typewriter
10155 10161 <h.callow-AT-elec.canterbury.ac.nz>
10156 10162 \family default
10157 10163 Gnuplot.py 1.6 compatibility.
10158 10164 \end_layout
10159 10165
10160 10166 \begin_layout List
10161 10167 \labelwidthstring 00.00.0000
10162 10168 Leonardo\InsetSpace ~
10163 10169 Santagada
10164 10170 \family typewriter
10165 10171 <retype-AT-terra.com.br>
10166 10172 \family default
10167 10173 Fixes for Windows installation.
10168 10174 \end_layout
10169 10175
10170 10176 \begin_layout List
10171 10177 \labelwidthstring 00.00.0000
10172 10178 Christopher\InsetSpace ~
10173 10179 Armstrong
10174 10180 \family typewriter
10175 10181 <radix-AT-twistedmatrix.com>
10176 10182 \family default
10177 10183 Bugfixes.
10178 10184 \end_layout
10179 10185
10180 10186 \begin_layout List
10181 10187 \labelwidthstring 00.00.0000
10182 10188 Francois\InsetSpace ~
10183 10189 Pinard
10184 10190 \family typewriter
10185 10191 <pinard-AT-iro.umontreal.ca>
10186 10192 \family default
10187 10193 Code and documentation fixes.
10188 10194 \end_layout
10189 10195
10190 10196 \begin_layout List
10191 10197 \labelwidthstring 00.00.0000
10192 10198 Cory\InsetSpace ~
10193 10199 Dodt
10194 10200 \family typewriter
10195 10201 <cdodt-AT-fcoe.k12.ca.us>
10196 10202 \family default
10197 10203 Bug reports and Windows ideas.
10198 10204 Patches for Windows installer.
10199 10205 \end_layout
10200 10206
10201 10207 \begin_layout List
10202 10208 \labelwidthstring 00.00.0000
10203 10209 Olivier\InsetSpace ~
10204 10210 Aubert
10205 10211 \family typewriter
10206 10212 <oaubert-AT-bat710.univ-lyon1.fr>
10207 10213 \family default
10208 10214 New magics.
10209 10215 \end_layout
10210 10216
10211 10217 \begin_layout List
10212 10218 \labelwidthstring 00.00.0000
10213 10219 King\InsetSpace ~
10214 10220 C.\InsetSpace ~
10215 10221 Shu
10216 10222 \family typewriter
10217 10223 <kingshu-AT-myrealbox.com>
10218 10224 \family default
10219 10225 Autoindent patch.
10220 10226 \end_layout
10221 10227
10222 10228 \begin_layout List
10223 10229 \labelwidthstring 00.00.0000
10224 10230 Chris\InsetSpace ~
10225 10231 Drexler
10226 10232 \family typewriter
10227 10233 <chris-AT-ac-drexler.de>
10228 10234 \family default
10229 10235 Readline packages for Win32/CygWin.
10230 10236 \end_layout
10231 10237
10232 10238 \begin_layout List
10233 10239 \labelwidthstring 00.00.0000
10234 10240 Gustavo\InsetSpace ~
10235 10241 Cordova\InsetSpace ~
10236 10242 Avila
10237 10243 \family typewriter
10238 10244 <gcordova-AT-sismex.com>
10239 10245 \family default
10240 10246 EvalDict code for nice, lightweight string interpolation.
10241 10247 \end_layout
10242 10248
10243 10249 \begin_layout List
10244 10250 \labelwidthstring 00.00.0000
10245 10251 Kasper\InsetSpace ~
10246 10252 Souren
10247 10253 \family typewriter
10248 10254 <Kasper.Souren-AT-ircam.fr>
10249 10255 \family default
10250 10256 Bug reports, ideas.
10251 10257 \end_layout
10252 10258
10253 10259 \begin_layout List
10254 10260 \labelwidthstring 00.00.0000
10255 10261 Gever\InsetSpace ~
10256 10262 Tulley
10257 10263 \family typewriter
10258 10264 <gever-AT-helium.com>
10259 10265 \family default
10260 10266 Code contributions.
10261 10267 \end_layout
10262 10268
10263 10269 \begin_layout List
10264 10270 \labelwidthstring 00.00.0000
10265 10271 Ralf\InsetSpace ~
10266 10272 Schmitt
10267 10273 \family typewriter
10268 10274 <ralf-AT-brainbot.com>
10269 10275 \family default
10270 10276 Bug reports & fixes.
10271 10277 \end_layout
10272 10278
10273 10279 \begin_layout List
10274 10280 \labelwidthstring 00.00.0000
10275 10281 Oliver\InsetSpace ~
10276 10282 Sander
10277 10283 \family typewriter
10278 10284 <osander-AT-gmx.de>
10279 10285 \family default
10280 10286 Bug reports.
10281 10287 \end_layout
10282 10288
10283 10289 \begin_layout List
10284 10290 \labelwidthstring 00.00.0000
10285 10291 Rod\InsetSpace ~
10286 10292 Holland
10287 10293 \family typewriter
10288 10294 <rhh-AT-structurelabs.com>
10289 10295 \family default
10290 10296 Bug reports and fixes to logging module.
10291 10297 \end_layout
10292 10298
10293 10299 \begin_layout List
10294 10300 \labelwidthstring 00.00.0000
10295 10301 Daniel\InsetSpace ~
10296 10302 'Dang'\InsetSpace ~
10297 10303 Griffith
10298 10304 \family typewriter
10299 10305 <pythondev-dang-AT-lazytwinacres.net>
10300 10306 \family default
10301 10307 Fixes, enhancement suggestions for system shell use.
10302 10308 \end_layout
10303 10309
10304 10310 \begin_layout List
10305 10311 \labelwidthstring 00.00.0000
10306 10312 Viktor\InsetSpace ~
10307 10313 Ransmayr
10308 10314 \family typewriter
10309 10315 <viktor.ransmayr-AT-t-online.de>
10310 10316 \family default
10311 10317 Tests and reports on Windows installation issues.
10312 10318 Contributed a true Windows binary installer.
10313 10319 \end_layout
10314 10320
10315 10321 \begin_layout List
10316 10322 \labelwidthstring 00.00.0000
10317 10323 Mike\InsetSpace ~
10318 10324 Salib
10319 10325 \family typewriter
10320 10326 <msalib-AT-mit.edu>
10321 10327 \family default
10322 10328 Help fixing a subtle bug related to traceback printing.
10323 10329 \end_layout
10324 10330
10325 10331 \begin_layout List
10326 10332 \labelwidthstring 00.00.0000
10327 10333 W.J.\InsetSpace ~
10328 10334 van\InsetSpace ~
10329 10335 der\InsetSpace ~
10330 10336 Laan
10331 10337 \family typewriter
10332 10338 <gnufnork-AT-hetdigitalegat.nl>
10333 10339 \family default
10334 10340 Bash-like prompt specials.
10335 10341 \end_layout
10336 10342
10337 10343 \begin_layout List
10338 10344 \labelwidthstring 00.00.0000
10339 10345 Antoon\InsetSpace ~
10340 10346 Pardon
10341 10347 \family typewriter
10342 10348 <Antoon.Pardon-AT-rece.vub.ac.be>
10343 10349 \family default
10344 10350 Critical fix for the multithreaded IPython.
10345 10351 \end_layout
10346 10352
10347 10353 \begin_layout List
10348 10354 \labelwidthstring 00.00.0000
10349 10355 John\InsetSpace ~
10350 10356 Hunter
10351 10357 \family typewriter
10352 10358 <jdhunter-AT-nitace.bsd.uchicago.edu>
10353 10359 \family default
10354 10360 Matplotlib author, helped with all the development of support for matplotlib
10355 10361 in IPyhton, including making necessary changes to matplotlib itself.
10356 10362 \end_layout
10357 10363
10358 10364 \begin_layout List
10359 10365 \labelwidthstring 00.00.0000
10360 10366 Matthew\InsetSpace ~
10361 10367 Arnison
10362 10368 \family typewriter
10363 10369 <maffew-AT-cat.org.au>
10364 10370 \family default
10365 10371 Bug reports, `
10366 10372 \family typewriter
10367 10373 %run -d
10368 10374 \family default
10369 10375 ' idea.
10370 10376 \end_layout
10371 10377
10372 10378 \begin_layout List
10373 10379 \labelwidthstring 00.00.0000
10374 10380 Prabhu\InsetSpace ~
10375 10381 Ramachandran
10376 10382 \family typewriter
10377 10383 <prabhu_r-AT-users.sourceforge.net>
10378 10384 \family default
10379 10385 Help with (X)Emacs support, threading patches, ideas...
10380 10386 \end_layout
10381 10387
10382 10388 \begin_layout List
10383 10389 \labelwidthstring 00.00.0000
10384 10390 Norbert\InsetSpace ~
10385 10391 Tretkowski
10386 10392 \family typewriter
10387 10393 <tretkowski-AT-inittab.de>
10388 10394 \family default
10389 10395 help with Debian packaging and distribution.
10390 10396 \end_layout
10391 10397
10392 10398 \begin_layout List
10393 10399 \labelwidthstring 00.00.0000
10394 10400 George\InsetSpace ~
10395 10401 Sakkis <
10396 10402 \family typewriter
10397 10403 gsakkis-AT-eden.rutgers.edu>
10398 10404 \family default
10399 10405 New matcher for tab-completing named arguments of user-defined functions.
10400 10406 \end_layout
10401 10407
10402 10408 \begin_layout List
10403 10409 \labelwidthstring 00.00.0000
10404 10410 JοΏ½rgen\InsetSpace ~
10405 10411 Stenarson
10406 10412 \family typewriter
10407 10413 <jorgen.stenarson-AT-bostream.nu>
10408 10414 \family default
10409 10415 Wildcard support implementation for searching namespaces.
10410 10416 \end_layout
10411 10417
10412 10418 \begin_layout List
10413 10419 \labelwidthstring 00.00.0000
10414 10420 Vivian\InsetSpace ~
10415 10421 De\InsetSpace ~
10416 10422 Smedt
10417 10423 \family typewriter
10418 10424 <vivian-AT-vdesmedt.com>
10419 10425 \family default
10420 10426 Debugger enhancements, so that when pdb is activated from within IPython,
10421 10427 coloring, tab completion and other features continue to work seamlessly.
10422 10428 \end_layout
10423 10429
10424 10430 \begin_layout List
10425 10431 \labelwidthstring 00.00.0000
10426 10432 Scott\InsetSpace ~
10427 10433 Tsai
10428 10434 \family typewriter
10429 10435 <scottt958-AT-yahoo.com.tw>
10430 10436 \family default
10431 10437 Support for automatic editor invocation on syntax errors (see
10432 10438 \begin_inset LatexCommand \htmlurl{http://www.scipy.net/roundup/ipython/issue36}
10433 10439
10434 10440 \end_inset
10435 10441
10436 10442 ).
10437 10443 \end_layout
10438 10444
10439 10445 \begin_layout List
10440 10446 \labelwidthstring 00.00.0000
10441 10447 Alexander\InsetSpace ~
10442 10448 Belchenko
10443 10449 \family typewriter
10444 10450 <bialix-AT-ukr.net>
10445 10451 \family default
10446 10452 Improvements for win32 paging system.
10447 10453 \end_layout
10448 10454
10449 10455 \begin_layout List
10450 10456 \labelwidthstring 00.00.0000
10451 10457 Will\InsetSpace ~
10452 10458 Maier
10453 10459 \family typewriter
10454 10460 <willmaier-AT-ml1.net>
10455 10461 \family default
10456 10462 Official OpenBSD port.
10457 10463 \end_layout
10458 10464
10459 10465 \end_body
10460 10466 \end_document
General Comments 0
You need to be logged in to leave comments. Login now