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