##// END OF EJS Templates
Command line args have the highest priority again
vivainio -
Show More
@@ -1,766 +1,769 b''
1 1 # -*- coding: utf-8 -*-
2 2 """
3 3 IPython -- An enhanced Interactive Python
4 4
5 5 Requires Python 2.1 or better.
6 6
7 7 This file contains the main make_IPython() starter function.
8 8
9 $Id: ipmaker.py 2649 2007-08-21 18:19:20Z vivainio $"""
9 $Id: ipmaker.py 2672 2007-08-26 09:15:26Z vivainio $"""
10 10
11 11 #*****************************************************************************
12 12 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
13 13 #
14 14 # Distributed under the terms of the BSD License. The full license is in
15 15 # the file COPYING, distributed as part of this software.
16 16 #*****************************************************************************
17 17
18 18 from IPython import Release
19 19 __author__ = '%s <%s>' % Release.authors['Fernando']
20 20 __license__ = Release.license
21 21 __version__ = Release.version
22 22
23 23 try:
24 24 credits._Printer__data = """
25 25 Python: %s
26 26
27 27 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
28 28 See http://ipython.scipy.org for more information.""" \
29 29 % credits._Printer__data
30 30
31 31 copyright._Printer__data += """
32 32
33 33 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
34 34 All Rights Reserved."""
35 35 except NameError:
36 36 # Can happen if ipython was started with 'python -S', so that site.py is
37 37 # not loaded
38 38 pass
39 39
40 40 #****************************************************************************
41 41 # Required modules
42 42
43 43 # From the standard library
44 44 import __main__
45 45 import __builtin__
46 46 import os
47 47 import re
48 48 import sys
49 49 import types
50 50 from pprint import pprint,pformat
51 51
52 52 # Our own
53 53 from IPython import DPyGetOpt
54 54 from IPython.ipstruct import Struct
55 55 from IPython.OutputTrap import OutputTrap
56 56 from IPython.ConfigLoader import ConfigLoader
57 57 from IPython.iplib import InteractiveShell
58 58 from IPython.usage import cmd_line_usage,interactive_usage
59 59 from IPython.genutils import *
60 60
61 61 #-----------------------------------------------------------------------------
62 62 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
63 63 rc_override=None,shell_class=InteractiveShell,
64 64 embedded=False,**kw):
65 65 """This is a dump of IPython into a single function.
66 66
67 67 Later it will have to be broken up in a sensible manner.
68 68
69 69 Arguments:
70 70
71 71 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
72 72 script name, b/c DPyGetOpt strips the first argument only for the real
73 73 sys.argv.
74 74
75 75 - user_ns: a dict to be used as the user's namespace."""
76 76
77 77 #----------------------------------------------------------------------
78 78 # Defaults and initialization
79 79
80 80 # For developer debugging, deactivates crash handler and uses pdb.
81 81 DEVDEBUG = False
82 82
83 83 if argv is None:
84 84 argv = sys.argv
85 85
86 86 # __IP is the main global that lives throughout and represents the whole
87 87 # application. If the user redefines it, all bets are off as to what
88 88 # happens.
89 89
90 90 # __IP is the name of he global which the caller will have accessible as
91 91 # __IP.name. We set its name via the first parameter passed to
92 92 # InteractiveShell:
93 93
94 94 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
95 95 embedded=embedded,**kw)
96 96
97 97 # Put 'help' in the user namespace
98 98 from site import _Helper
99 99 IP.user_config_ns = {}
100 100 IP.user_ns['help'] = _Helper()
101 101
102 102
103 103 if DEVDEBUG:
104 104 # For developer debugging only (global flag)
105 105 from IPython import ultraTB
106 106 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
107 107
108 108 IP.BANNER_PARTS = ['Python %s\n'
109 109 'Type "copyright", "credits" or "license" '
110 110 'for more information.\n'
111 111 % (sys.version.split('\n')[0],),
112 112 "IPython %s -- An enhanced Interactive Python."
113 113 % (__version__,),
114 114 """? -> Introduction to IPython's features.
115 115 %magic -> Information about IPython's 'magic' % functions.
116 116 help -> Python's own help system.
117 117 object? -> Details about 'object'. ?object also works, ?? prints more.
118 118 """ ]
119 119
120 120 IP.usage = interactive_usage
121 121
122 122 # Platform-dependent suffix and directory names. We use _ipython instead
123 123 # of .ipython under win32 b/c there's software that breaks with .named
124 124 # directories on that platform.
125 125 if os.name == 'posix':
126 126 rc_suffix = ''
127 127 ipdir_def = '.ipython'
128 128 else:
129 129 rc_suffix = '.ini'
130 130 ipdir_def = '_ipython'
131 131
132 132 # default directory for configuration
133 133 ipythondir_def = os.path.abspath(os.environ.get('IPYTHONDIR',
134 134 os.path.join(IP.home_dir,ipdir_def)))
135 135
136 136 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
137 137
138 138 # we need the directory where IPython itself is installed
139 139 import IPython
140 140 IPython_dir = os.path.dirname(IPython.__file__)
141 141 del IPython
142 142
143 143 #-------------------------------------------------------------------------
144 144 # Command line handling
145 145
146 146 # Valid command line options (uses DPyGetOpt syntax, like Perl's
147 147 # GetOpt::Long)
148 148
149 149 # Any key not listed here gets deleted even if in the file (like session
150 150 # or profile). That's deliberate, to maintain the rc namespace clean.
151 151
152 152 # Each set of options appears twice: under _conv only the names are
153 153 # listed, indicating which type they must be converted to when reading the
154 154 # ipythonrc file. And under DPyGetOpt they are listed with the regular
155 155 # DPyGetOpt syntax (=s,=i,:f,etc).
156 156
157 157 # Make sure there's a space before each end of line (they get auto-joined!)
158 158 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
159 159 'c=s classic|cl color_info! colors=s confirm_exit! '
160 160 'debug! deep_reload! editor=s log|l messages! nosep '
161 161 'object_info_string_level=i pdb! '
162 162 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
163 163 'pylab_import_all! '
164 164 'quick screen_length|sl=i prompts_pad_left=i '
165 165 'logfile|lf=s logplay|lp=s profile|p=s '
166 166 'readline! readline_merge_completions! '
167 167 'readline_omit__names! '
168 168 'rcfile=s separate_in|si=s separate_out|so=s '
169 169 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
170 170 'magic_docstrings system_verbose! '
171 171 'multi_line_specials! '
172 172 'term_title! wxversion=s '
173 173 'autoedit_syntax!')
174 174
175 175 # Options that can *only* appear at the cmd line (not in rcfiles).
176 176
177 177 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
178 178 # the 'C-c !' command in emacs automatically appends a -i option at the end.
179 179 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
180 180 'gthread! qthread! q4thread! wthread! pylab! tk!')
181 181
182 182 # Build the actual name list to be used by DPyGetOpt
183 183 opts_names = qw(cmdline_opts) + qw(cmdline_only)
184 184
185 185 # Set sensible command line defaults.
186 186 # This should have everything from cmdline_opts and cmdline_only
187 187 opts_def = Struct(autocall = 1,
188 188 autoedit_syntax = 0,
189 189 autoindent = 0,
190 190 automagic = 1,
191 191 banner = 1,
192 192 cache_size = 1000,
193 193 c = '',
194 194 classic = 0,
195 195 colors = 'NoColor',
196 196 color_info = 0,
197 197 confirm_exit = 1,
198 198 debug = 0,
199 199 deep_reload = 0,
200 200 editor = '0',
201 201 help = 0,
202 202 ignore = 0,
203 203 ipythondir = ipythondir_def,
204 204 log = 0,
205 205 logfile = '',
206 206 logplay = '',
207 207 multi_line_specials = 1,
208 208 messages = 1,
209 209 object_info_string_level = 0,
210 210 nosep = 0,
211 211 pdb = 0,
212 212 pprint = 0,
213 213 profile = '',
214 214 prompt_in1 = 'In [\\#]: ',
215 215 prompt_in2 = ' .\\D.: ',
216 216 prompt_out = 'Out[\\#]: ',
217 217 prompts_pad_left = 1,
218 218 pylab_import_all = 1,
219 219 quiet = 0,
220 220 quick = 0,
221 221 readline = 1,
222 222 readline_merge_completions = 1,
223 223 readline_omit__names = 0,
224 224 rcfile = 'ipythonrc' + rc_suffix,
225 225 screen_length = 0,
226 226 separate_in = '\n',
227 227 separate_out = '\n',
228 228 separate_out2 = '',
229 229 system_header = 'IPython system call: ',
230 230 system_verbose = 0,
231 231 gthread = 0,
232 232 qthread = 0,
233 233 q4thread = 0,
234 234 wthread = 0,
235 235 pylab = 0,
236 236 term_title = 1,
237 237 tk = 0,
238 238 upgrade = 0,
239 239 Version = 0,
240 240 xmode = 'Verbose',
241 241 wildcards_case_sensitive = 1,
242 242 wxversion = '0',
243 243 magic_docstrings = 0, # undocumented, for doc generation
244 244 )
245 245
246 246 # Things that will *only* appear in rcfiles (not at the command line).
247 247 # Make sure there's a space before each end of line (they get auto-joined!)
248 248 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
249 249 qw_lol: 'import_some ',
250 250 # for things with embedded whitespace:
251 251 list_strings:'execute alias readline_parse_and_bind ',
252 252 # Regular strings need no conversion:
253 253 None:'readline_remove_delims ',
254 254 }
255 255 # Default values for these
256 256 rc_def = Struct(include = [],
257 257 import_mod = [],
258 258 import_all = [],
259 259 import_some = [[]],
260 260 execute = [],
261 261 execfile = [],
262 262 alias = [],
263 263 readline_parse_and_bind = [],
264 264 readline_remove_delims = '',
265 265 )
266 266
267 267 # Build the type conversion dictionary from the above tables:
268 268 typeconv = rcfile_opts.copy()
269 269 typeconv.update(optstr2types(cmdline_opts))
270 270
271 271 # FIXME: the None key appears in both, put that back together by hand. Ugly!
272 272 typeconv[None] += ' ' + rcfile_opts[None]
273 273
274 274 # Remove quotes at ends of all strings (used to protect spaces)
275 275 typeconv[unquote_ends] = typeconv[None]
276 276 del typeconv[None]
277 277
278 278 # Build the list we'll use to make all config decisions with defaults:
279 279 opts_all = opts_def.copy()
280 280 opts_all.update(rc_def)
281 281
282 282 # Build conflict resolver for recursive loading of config files:
283 283 # - preserve means the outermost file maintains the value, it is not
284 284 # overwritten if an included file has the same key.
285 285 # - add_flip applies + to the two values, so it better make sense to add
286 286 # those types of keys. But it flips them first so that things loaded
287 287 # deeper in the inclusion chain have lower precedence.
288 288 conflict = {'preserve': ' '.join([ typeconv[int],
289 289 typeconv[unquote_ends] ]),
290 290 'add_flip': ' '.join([ typeconv[qwflat],
291 291 typeconv[qw_lol],
292 292 typeconv[list_strings] ])
293 293 }
294 294
295 295 # Now actually process the command line
296 296 getopt = DPyGetOpt.DPyGetOpt()
297 297 getopt.setIgnoreCase(0)
298 298
299 299 getopt.parseConfiguration(opts_names)
300 300
301 301 try:
302 302 getopt.processArguments(argv)
303 303 except:
304 304 print cmd_line_usage
305 305 warn('\nError in Arguments: ' + `sys.exc_value`)
306 306 sys.exit(1)
307 307
308 308 # convert the options dict to a struct for much lighter syntax later
309 309 opts = Struct(getopt.optionValues)
310 310 args = getopt.freeValues
311 311
312 312 # this is the struct (which has default values at this point) with which
313 313 # we make all decisions:
314 314 opts_all.update(opts)
315 315
316 316 # Options that force an immediate exit
317 317 if opts_all.help:
318 318 page(cmd_line_usage)
319 319 sys.exit()
320 320
321 321 if opts_all.Version:
322 322 print __version__
323 323 sys.exit()
324 324
325 325 if opts_all.magic_docstrings:
326 326 IP.magic_magic('-latex')
327 327 sys.exit()
328 328
329 329 # add personal ipythondir to sys.path so that users can put things in
330 330 # there for customization
331 331 sys.path.append(os.path.abspath(opts_all.ipythondir))
332 332
333 333 # Create user config directory if it doesn't exist. This must be done
334 334 # *after* getting the cmd line options.
335 335 if not os.path.isdir(opts_all.ipythondir):
336 336 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
337 337
338 338 # upgrade user config files while preserving a copy of the originals
339 339 if opts_all.upgrade:
340 340 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
341 341
342 342 # check mutually exclusive options in the *original* command line
343 343 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
344 344 qw('classic profile'),qw('classic rcfile')])
345 345
346 346 #---------------------------------------------------------------------------
347 347 # Log replay
348 348
349 349 # if -logplay, we need to 'become' the other session. That basically means
350 350 # replacing the current command line environment with that of the old
351 351 # session and moving on.
352 352
353 353 # this is needed so that later we know we're in session reload mode, as
354 354 # opts_all will get overwritten:
355 355 load_logplay = 0
356 356
357 357 if opts_all.logplay:
358 358 load_logplay = opts_all.logplay
359 359 opts_debug_save = opts_all.debug
360 360 try:
361 361 logplay = open(opts_all.logplay)
362 362 except IOError:
363 363 if opts_all.debug: IP.InteractiveTB()
364 364 warn('Could not open logplay file '+`opts_all.logplay`)
365 365 # restore state as if nothing had happened and move on, but make
366 366 # sure that later we don't try to actually load the session file
367 367 logplay = None
368 368 load_logplay = 0
369 369 del opts_all.logplay
370 370 else:
371 371 try:
372 372 logplay.readline()
373 373 logplay.readline();
374 374 # this reloads that session's command line
375 375 cmd = logplay.readline()[6:]
376 376 exec cmd
377 377 # restore the true debug flag given so that the process of
378 378 # session loading itself can be monitored.
379 379 opts.debug = opts_debug_save
380 380 # save the logplay flag so later we don't overwrite the log
381 381 opts.logplay = load_logplay
382 382 # now we must update our own structure with defaults
383 383 opts_all.update(opts)
384 384 # now load args
385 385 cmd = logplay.readline()[6:]
386 386 exec cmd
387 387 logplay.close()
388 388 except:
389 389 logplay.close()
390 390 if opts_all.debug: IP.InteractiveTB()
391 391 warn("Logplay file lacking full configuration information.\n"
392 392 "I'll try to read it, but some things may not work.")
393 393
394 394 #-------------------------------------------------------------------------
395 395 # set up output traps: catch all output from files, being run, modules
396 396 # loaded, etc. Then give it to the user in a clean form at the end.
397 397
398 398 msg_out = 'Output messages. '
399 399 msg_err = 'Error messages. '
400 400 msg_sep = '\n'
401 401 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
402 402 msg_err,msg_sep,debug,
403 403 quiet_out=1),
404 404 user_exec = OutputTrap('User File Execution',msg_out,
405 405 msg_err,msg_sep,debug),
406 406 logplay = OutputTrap('Log Loader',msg_out,
407 407 msg_err,msg_sep,debug),
408 408 summary = ''
409 409 )
410 410
411 411 #-------------------------------------------------------------------------
412 412 # Process user ipythonrc-type configuration files
413 413
414 414 # turn on output trapping and log to msg.config
415 415 # remember that with debug on, trapping is actually disabled
416 416 msg.config.trap_all()
417 417
418 418 # look for rcfile in current or default directory
419 419 try:
420 420 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
421 421 except IOError:
422 422 if opts_all.debug: IP.InteractiveTB()
423 423 warn('Configuration file %s not found. Ignoring request.'
424 424 % (opts_all.rcfile) )
425 425
426 426 # 'profiles' are a shorthand notation for config filenames
427 427 profile_handled_by_legacy = False
428 428 if opts_all.profile:
429 429
430 430 try:
431 431 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
432 432 + rc_suffix,
433 433 opts_all.ipythondir)
434 434 profile_handled_by_legacy = True
435 435 except IOError:
436 436 if opts_all.debug: IP.InteractiveTB()
437 437 opts.profile = '' # remove profile from options if invalid
438 438 # We won't warn anymore, primary method is ipy_profile_PROFNAME
439 439 # which does trigger a warning.
440 440
441 441 # load the config file
442 442 rcfiledata = None
443 443 if opts_all.quick:
444 444 print 'Launching IPython in quick mode. No config file read.'
445 445 elif opts_all.rcfile:
446 446 try:
447 447 cfg_loader = ConfigLoader(conflict)
448 448 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
449 449 'include',opts_all.ipythondir,
450 450 purge = 1,
451 451 unique = conflict['preserve'])
452 452 except:
453 453 IP.InteractiveTB()
454 454 warn('Problems loading configuration file '+
455 455 `opts_all.rcfile`+
456 456 '\nStarting with default -bare bones- configuration.')
457 457 else:
458 458 warn('No valid configuration file found in either currrent directory\n'+
459 459 'or in the IPython config. directory: '+`opts_all.ipythondir`+
460 460 '\nProceeding with internal defaults.')
461 461
462 462 #------------------------------------------------------------------------
463 463 # Set exception handlers in mode requested by user.
464 464 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
465 465 IP.magic_xmode(opts_all.xmode)
466 466 otrap.release_out()
467 467
468 468 #------------------------------------------------------------------------
469 469 # Execute user config
470 470
471 471 # Create a valid config structure with the right precedence order:
472 472 # defaults < rcfile < command line. This needs to be in the instance, so
473 473 # that method calls below that rely on it find it.
474 474 IP.rc = rc_def.copy()
475 475
476 476 # Work with a local alias inside this routine to avoid unnecessary
477 477 # attribute lookups.
478 478 IP_rc = IP.rc
479 479
480 480 IP_rc.update(opts_def)
481 481 if rcfiledata:
482 482 # now we can update
483 483 IP_rc.update(rcfiledata)
484 484 IP_rc.update(opts)
485 485 IP_rc.update(rc_override)
486 486
487 487 # Store the original cmd line for reference:
488 488 IP_rc.opts = opts
489 489 IP_rc.args = args
490 490
491 491 # create a *runtime* Struct like rc for holding parameters which may be
492 492 # created and/or modified by runtime user extensions.
493 493 IP.runtime_rc = Struct()
494 494
495 495 # from this point on, all config should be handled through IP_rc,
496 496 # opts* shouldn't be used anymore.
497 497
498 498
499 499 # update IP_rc with some special things that need manual
500 500 # tweaks. Basically options which affect other options. I guess this
501 501 # should just be written so that options are fully orthogonal and we
502 502 # wouldn't worry about this stuff!
503 503
504 504 if IP_rc.classic:
505 505 IP_rc.quick = 1
506 506 IP_rc.cache_size = 0
507 507 IP_rc.pprint = 0
508 508 IP_rc.prompt_in1 = '>>> '
509 509 IP_rc.prompt_in2 = '... '
510 510 IP_rc.prompt_out = ''
511 511 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
512 512 IP_rc.colors = 'NoColor'
513 513 IP_rc.xmode = 'Plain'
514 514
515 515 IP.pre_config_initialization()
516 516 # configure readline
517 517 # Define the history file for saving commands in between sessions
518 518 if IP_rc.profile:
519 519 histfname = 'history-%s' % IP_rc.profile
520 520 else:
521 521 histfname = 'history'
522 522 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
523 523
524 524 # update exception handlers with rc file status
525 525 otrap.trap_out() # I don't want these messages ever.
526 526 IP.magic_xmode(IP_rc.xmode)
527 527 otrap.release_out()
528 528
529 529 # activate logging if requested and not reloading a log
530 530 if IP_rc.logplay:
531 531 IP.magic_logstart(IP_rc.logplay + ' append')
532 532 elif IP_rc.logfile:
533 533 IP.magic_logstart(IP_rc.logfile)
534 534 elif IP_rc.log:
535 535 IP.magic_logstart()
536 536
537 537 # find user editor so that it we don't have to look it up constantly
538 538 if IP_rc.editor.strip()=='0':
539 539 try:
540 540 ed = os.environ['EDITOR']
541 541 except KeyError:
542 542 if os.name == 'posix':
543 543 ed = 'vi' # the only one guaranteed to be there!
544 544 else:
545 545 ed = 'notepad' # same in Windows!
546 546 IP_rc.editor = ed
547 547
548 548 # Keep track of whether this is an embedded instance or not (useful for
549 549 # post-mortems).
550 550 IP_rc.embedded = IP.embedded
551 551
552 552 # Recursive reload
553 553 try:
554 554 from IPython import deep_reload
555 555 if IP_rc.deep_reload:
556 556 __builtin__.reload = deep_reload.reload
557 557 else:
558 558 __builtin__.dreload = deep_reload.reload
559 559 del deep_reload
560 560 except ImportError:
561 561 pass
562 562
563 563 # Save the current state of our namespace so that the interactive shell
564 564 # can later know which variables have been created by us from config files
565 565 # and loading. This way, loading a file (in any way) is treated just like
566 566 # defining things on the command line, and %who works as expected.
567 567
568 568 # DON'T do anything that affects the namespace beyond this point!
569 569 IP.internal_ns.update(__main__.__dict__)
570 570
571 571 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
572 572
573 573 # Now run through the different sections of the users's config
574 574 if IP_rc.debug:
575 575 print 'Trying to execute the following configuration structure:'
576 576 print '(Things listed first are deeper in the inclusion tree and get'
577 577 print 'loaded first).\n'
578 578 pprint(IP_rc.__dict__)
579 579
580 580 for mod in IP_rc.import_mod:
581 581 try:
582 582 exec 'import '+mod in IP.user_ns
583 583 except :
584 584 IP.InteractiveTB()
585 585 import_fail_info(mod)
586 586
587 587 for mod_fn in IP_rc.import_some:
588 588 if not mod_fn == []:
589 589 mod,fn = mod_fn[0],','.join(mod_fn[1:])
590 590 try:
591 591 exec 'from '+mod+' import '+fn in IP.user_ns
592 592 except :
593 593 IP.InteractiveTB()
594 594 import_fail_info(mod,fn)
595 595
596 596 for mod in IP_rc.import_all:
597 597 try:
598 598 exec 'from '+mod+' import *' in IP.user_ns
599 599 except :
600 600 IP.InteractiveTB()
601 601 import_fail_info(mod)
602 602
603 603 for code in IP_rc.execute:
604 604 try:
605 605 exec code in IP.user_ns
606 606 except:
607 607 IP.InteractiveTB()
608 608 warn('Failure executing code: ' + `code`)
609 609
610 610 # Execute the files the user wants in ipythonrc
611 611 for file in IP_rc.execfile:
612 612 try:
613 613 file = filefind(file,sys.path+[IPython_dir])
614 614 except IOError:
615 615 warn(itpl('File $file not found. Skipping it.'))
616 616 else:
617 617 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
618 618
619 619 # finally, try importing ipy_*_conf for final configuration
620 620 try:
621 621 import ipy_system_conf
622 622 except ImportError:
623 623 if opts_all.debug: IP.InteractiveTB()
624 624 warn("Could not import 'ipy_system_conf'")
625 625 except:
626 626 IP.InteractiveTB()
627 627 import_fail_info('ipy_system_conf')
628 628
629 629 # only import prof module if ipythonrc-PROF was not found
630 630 if opts_all.profile and not profile_handled_by_legacy:
631 631 profmodname = 'ipy_profile_' + opts_all.profile
632 632 try:
633 633 __import__(profmodname)
634 634 except ImportError:
635 635 # only warn if ipythonrc-PROFNAME didn't exist
636 636 if opts.profile =='':
637 637 warn("Could not start with profile '%s'!\n"
638 638 "('%s/%s.py' does not exist? run '%%upgrade')" %
639 639 (opts_all.profile, opts_all.ipythondir, profmodname) )
640 640 except:
641 641 print "Error importing",profmodname,"- perhaps you should run %upgrade?"
642 642 IP.InteractiveTB()
643 643 import_fail_info(profmodname)
644 644 else:
645 645 import ipy_profile_none
646 646 try:
647 647 import ipy_user_conf
648 648 except ImportError:
649 649 if opts_all.debug: IP.InteractiveTB()
650 650 warn("Could not import user config!\n "
651 651 "('%s/ipy_user_conf.py' does not exist? Please run '%%upgrade')\n"
652 652 % opts_all.ipythondir)
653 653 except:
654 654 print "Error importing ipy_user_conf - perhaps you should run %upgrade?"
655 655 IP.InteractiveTB()
656 656 import_fail_info("ipy_user_conf")
657
658 # finally, push the argv to options again to ensure highest priority
659 IP_rc.update(opts)
657 660
658 661 # release stdout and stderr and save config log into a global summary
659 662 msg.config.release_all()
660 663 if IP_rc.messages:
661 664 msg.summary += msg.config.summary_all()
662 665
663 666 #------------------------------------------------------------------------
664 667 # Setup interactive session
665 668
666 669 # Now we should be fully configured. We can then execute files or load
667 670 # things only needed for interactive use. Then we'll open the shell.
668 671
669 672 # Take a snapshot of the user namespace before opening the shell. That way
670 673 # we'll be able to identify which things were interactively defined and
671 674 # which were defined through config files.
672 675 IP.user_config_ns.update(IP.user_ns)
673 676
674 677 # Force reading a file as if it were a session log. Slower but safer.
675 678 if load_logplay:
676 679 print 'Replaying log...'
677 680 try:
678 681 if IP_rc.debug:
679 682 logplay_quiet = 0
680 683 else:
681 684 logplay_quiet = 1
682 685
683 686 msg.logplay.trap_all()
684 687 IP.safe_execfile(load_logplay,IP.user_ns,
685 688 islog = 1, quiet = logplay_quiet)
686 689 msg.logplay.release_all()
687 690 if IP_rc.messages:
688 691 msg.summary += msg.logplay.summary_all()
689 692 except:
690 693 warn('Problems replaying logfile %s.' % load_logplay)
691 694 IP.InteractiveTB()
692 695
693 696 # Load remaining files in command line
694 697 msg.user_exec.trap_all()
695 698
696 699 # Do NOT execute files named in the command line as scripts to be loaded
697 700 # by embedded instances. Doing so has the potential for an infinite
698 701 # recursion if there are exceptions thrown in the process.
699 702
700 703 # XXX FIXME: the execution of user files should be moved out to after
701 704 # ipython is fully initialized, just as if they were run via %run at the
702 705 # ipython prompt. This would also give them the benefit of ipython's
703 706 # nice tracebacks.
704 707
705 708 if (not embedded and IP_rc.args and
706 709 not IP_rc.args[0].lower().endswith('.ipy')):
707 710 name_save = IP.user_ns['__name__']
708 711 IP.user_ns['__name__'] = '__main__'
709 712 # Set our own excepthook in case the user code tries to call it
710 713 # directly. This prevents triggering the IPython crash handler.
711 714 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
712 715
713 716 save_argv = sys.argv[1:] # save it for later restoring
714 717
715 718 sys.argv = args
716 719
717 720 try:
718 721 IP.safe_execfile(args[0], IP.user_ns)
719 722 finally:
720 723 # Reset our crash handler in place
721 724 sys.excepthook = old_excepthook
722 725 sys.argv[:] = save_argv
723 726 IP.user_ns['__name__'] = name_save
724 727
725 728 msg.user_exec.release_all()
726 729
727 730 if IP_rc.messages:
728 731 msg.summary += msg.user_exec.summary_all()
729 732
730 733 # since we can't specify a null string on the cmd line, 0 is the equivalent:
731 734 if IP_rc.nosep:
732 735 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
733 736 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
734 737 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
735 738 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
736 739 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
737 740 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
738 741 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
739 742
740 743 # Determine how many lines at the bottom of the screen are needed for
741 744 # showing prompts, so we can know wheter long strings are to be printed or
742 745 # paged:
743 746 num_lines_bot = IP_rc.separate_in.count('\n')+1
744 747 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
745 748
746 749 # configure startup banner
747 750 if IP_rc.c: # regular python doesn't print the banner with -c
748 751 IP_rc.banner = 0
749 752 if IP_rc.banner:
750 753 BANN_P = IP.BANNER_PARTS
751 754 else:
752 755 BANN_P = []
753 756
754 757 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
755 758
756 759 # add message log (possibly empty)
757 760 if msg.summary: BANN_P.append(msg.summary)
758 761 # Final banner is a string
759 762 IP.BANNER = '\n'.join(BANN_P)
760 763
761 764 # Finalize the IPython instance. This assumes the rc structure is fully
762 765 # in place.
763 766 IP.post_config_initialization()
764 767
765 768 return IP
766 769 #************************ end of file <ipmaker.py> **************************
@@ -1,7052 +1,7056 b''
1 2007-08-26 Ville Vainio <vivainio@gmail.com>
2
3 * ipmaker.py: Command line args have the highest priority again
4
1 5 2007-08-22 Ville Vainio <vivainio@gmail.com>
2 6
3 7 * iplib.py: no extra empty (last) line in raw hist w/ multiline
4 8 statements
5 9
6 10 * logger.py: Fix bug where blank lines in history were not
7 11 added until AFTER adding the current line; translated and raw
8 12 history should finally be in sync with prompt now.
9 13
10 14 * ipy_completers.py: quick_completer now makes it easy to create
11 15 trivial custom completers
12 16
13 17 * clearcmd.py: shadow history compression & erasing, fixed input hist
14 18 clearing.
15 19
16 20 * envpersist.py, history.py: %env (sh profile only), %hist completers
17 21
18 22 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
19 23 term title now include the drive letter, and always use / instead of
20 24 os.sep (as per recommended approach for win32 ipython in general).
21 25
22 26 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
23 27 plain python scripts from ipykit command line by running
24 28 "py myscript.py", even w/o installed python.
25 29
26 30 2007-08-21 Ville Vainio <vivainio@gmail.com>
27 31
28 32 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
29 33 (for backwards compatibility)
30 34
31 35 * history.py: switch back to %hist -t from %hist -r as default.
32 36 At least until raw history is fixed for good.
33 37
34 38 2007-08-20 Ville Vainio <vivainio@gmail.com>
35 39
36 40 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
37 41 locate alias redeclarations etc. Also, avoid handling
38 42 _ip.IP.alias_table directly, prefer using _ip.defalias.
39 43
40 44
41 45 2007-08-15 Ville Vainio <vivainio@gmail.com>
42 46
43 47 * prefilter.py: ! is now always served first
44 48
45 49 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
46 50
47 51 * IPython/iplib.py (safe_execfile): fix the SystemExit
48 52 auto-suppression code to work in Python2.4 (the internal structure
49 53 of that exception changed and I'd only tested the code with 2.5).
50 54 Bug reported by a SciPy attendee.
51 55
52 56 2007-08-13 Ville Vainio <vivainio@gmail.com>
53 57
54 58 * prefilter.py: reverted !c:/bin/foo fix, made % in
55 59 multiline specials work again
56 60
57 61 2007-08-13 Ville Vainio <vivainio@gmail.com>
58 62
59 63 * prefilter.py: Take more care to special-case !, so that
60 64 !c:/bin/foo.exe works.
61 65
62 66 * setup.py: if we are building eggs, strip all docs and
63 67 examples (it doesn't make sense to bytecompile examples,
64 68 and docs would be in an awkward place anyway).
65 69
66 70 * Ryan Krauss' patch fixes start menu shortcuts when IPython
67 71 is installed into a directory that has spaces in the name.
68 72
69 73 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
70 74
71 75 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
72 76 doctest profile and %doctest_mode, so they actually generate the
73 77 blank lines needed by doctest to separate individual tests.
74 78
75 79 * IPython/iplib.py (safe_execfile): modify so that running code
76 80 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
77 81 doesn't get a printed traceback. Any other value in sys.exit(),
78 82 including the empty call, still generates a traceback. This
79 83 enables use of %run without having to pass '-e' for codes that
80 84 correctly set the exit status flag.
81 85
82 86 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
83 87
84 88 * IPython/iplib.py (InteractiveShell.post_config_initialization):
85 89 fix problems with doctests failing when run inside IPython due to
86 90 IPython's modifications of sys.displayhook.
87 91
88 92 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
89 93
90 94 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
91 95 a string with names.
92 96
93 97 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
94 98
95 99 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
96 100 magic to toggle on/off the doctest pasting support without having
97 101 to leave a session to switch to a separate profile.
98 102
99 103 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
100 104
101 105 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
102 106 introduce a blank line between inputs, to conform to doctest
103 107 requirements.
104 108
105 109 * IPython/OInspect.py (Inspector.pinfo): fix another part where
106 110 auto-generated docstrings for new-style classes were showing up.
107 111
108 112 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
109 113
110 114 * api_changes: Add new file to track backward-incompatible
111 115 user-visible changes.
112 116
113 117 2007-08-06 Ville Vainio <vivainio@gmail.com>
114 118
115 119 * ipmaker.py: fix bug where user_config_ns didn't exist at all
116 120 before all the config files were handled.
117 121
118 122 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
119 123
120 124 * IPython/irunner.py (RunnerFactory): Add new factory class for
121 125 creating reusable runners based on filenames.
122 126
123 127 * IPython/Extensions/ipy_profile_doctest.py: New profile for
124 128 doctest support. It sets prompts/exceptions as similar to
125 129 standard Python as possible, so that ipython sessions in this
126 130 profile can be easily pasted as doctests with minimal
127 131 modifications. It also enables pasting of doctests from external
128 132 sources (even if they have leading whitespace), so that you can
129 133 rerun doctests from existing sources.
130 134
131 135 * IPython/iplib.py (_prefilter): fix a buglet where after entering
132 136 some whitespace, the prompt would become a continuation prompt
133 137 with no way of exiting it other than Ctrl-C. This fix brings us
134 138 into conformity with how the default python prompt works.
135 139
136 140 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
137 141 Add support for pasting not only lines that start with '>>>', but
138 142 also with ' >>>'. That is, arbitrary whitespace can now precede
139 143 the prompts. This makes the system useful for pasting doctests
140 144 from docstrings back into a normal session.
141 145
142 146 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
143 147
144 148 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
145 149 r1357, which had killed multiple invocations of an embedded
146 150 ipython (this means that example-embed has been broken for over 1
147 151 year!!!). Rather than possibly breaking the batch stuff for which
148 152 the code in iplib.py/interact was introduced, I worked around the
149 153 problem in the embedding class in Shell.py. We really need a
150 154 bloody test suite for this code, I'm sick of finding stuff that
151 155 used to work breaking left and right every time I use an old
152 156 feature I hadn't touched in a few months.
153 157 (kill_embedded): Add a new magic that only shows up in embedded
154 158 mode, to allow users to permanently deactivate an embedded instance.
155 159
156 160 2007-08-01 Ville Vainio <vivainio@gmail.com>
157 161
158 162 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
159 163 history gets out of sync on runlines (e.g. when running macros).
160 164
161 165 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
162 166
163 167 * IPython/Magic.py (magic_colors): fix win32-related error message
164 168 that could appear under *nix when readline was missing. Patch by
165 169 Scott Jackson, closes #175.
166 170
167 171 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
168 172
169 173 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
170 174 completer that it traits-aware, so that traits objects don't show
171 175 all of their internal attributes all the time.
172 176
173 177 * IPython/genutils.py (dir2): moved this code from inside
174 178 completer.py to expose it publicly, so I could use it in the
175 179 wildcards bugfix.
176 180
177 181 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
178 182 Stefan with Traits.
179 183
180 184 * IPython/completer.py (Completer.attr_matches): change internal
181 185 var name from 'object' to 'obj', since 'object' is now a builtin
182 186 and this can lead to weird bugs if reusing this code elsewhere.
183 187
184 188 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
185 189
186 190 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
187 191 'foo?' and update the code to prevent printing of default
188 192 docstrings that started appearing after I added support for
189 193 new-style classes. The approach I'm using isn't ideal (I just
190 194 special-case those strings) but I'm not sure how to more robustly
191 195 differentiate between truly user-written strings and Python's
192 196 automatic ones.
193 197
194 198 2007-07-09 Ville Vainio <vivainio@gmail.com>
195 199
196 200 * completer.py: Applied Matthew Neeley's patch:
197 201 Dynamic attributes from trait_names and _getAttributeNames are added
198 202 to the list of tab completions, but when this happens, the attribute
199 203 list is turned into a set, so the attributes are unordered when
200 204 printed, which makes it hard to find the right completion. This patch
201 205 turns this set back into a list and sort it.
202 206
203 207 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
204 208
205 209 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
206 210 classes in various inspector functions.
207 211
208 212 2007-06-28 Ville Vainio <vivainio@gmail.com>
209 213
210 214 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
211 215 Implement "shadow" namespace, and callable aliases that reside there.
212 216 Use them by:
213 217
214 218 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
215 219
216 220 foo hello world
217 221 (gets translated to:)
218 222 _sh.foo(r"""hello world""")
219 223
220 224 In practice, this kind of alias can take the role of a magic function
221 225
222 226 * New generic inspect_object, called on obj? and obj??
223 227
224 228 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
225 229
226 230 * IPython/ultraTB.py (findsource): fix a problem with
227 231 inspect.getfile that can cause crashes during traceback construction.
228 232
229 233 2007-06-14 Ville Vainio <vivainio@gmail.com>
230 234
231 235 * iplib.py (handle_auto): Try to use ascii for printing "--->"
232 236 autocall rewrite indication, becausesometimes unicode fails to print
233 237 properly (and you get ' - - - '). Use plain uncoloured ---> for
234 238 unicode.
235 239
236 240 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
237 241
238 242 . pickleshare 'hash' commands (hget, hset, hcompress,
239 243 hdict) for efficient shadow history storage.
240 244
241 245 2007-06-13 Ville Vainio <vivainio@gmail.com>
242 246
243 247 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
244 248 Added kw arg 'interactive', tell whether vars should be visible
245 249 with %whos.
246 250
247 251 2007-06-11 Ville Vainio <vivainio@gmail.com>
248 252
249 253 * pspersistence.py, Magic.py, iplib.py: directory history now saved
250 254 to db
251 255
252 256 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
253 257 Also, it exits IPython immediately after evaluating the command (just like
254 258 std python)
255 259
256 260 2007-06-05 Walter Doerwald <walter@livinglogic.de>
257 261
258 262 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
259 263 Python string and captures the output. (Idea and original patch by
260 264 StοΏ½fan van der Walt)
261 265
262 266 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
263 267
264 268 * IPython/ultraTB.py (VerboseTB.text): update printing of
265 269 exception types for Python 2.5 (now all exceptions in the stdlib
266 270 are new-style classes).
267 271
268 272 2007-05-31 Walter Doerwald <walter@livinglogic.de>
269 273
270 274 * IPython/Extensions/igrid.py: Add new commands refresh and
271 275 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
272 276 the iterator once (refresh) or after every x seconds (refresh_timer).
273 277 Add a working implementation of "searchexpression", where the text
274 278 entered is not the text to search for, but an expression that must
275 279 be true. Added display of shortcuts to the menu. Added commands "pickinput"
276 280 and "pickinputattr" that put the object or attribute under the cursor
277 281 in the input line. Split the statusbar to be able to display the currently
278 282 active refresh interval. (Patch by Nik Tautenhahn)
279 283
280 284 2007-05-29 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
281 285
282 286 * fixing set_term_title to use ctypes as default
283 287
284 288 * fixing set_term_title fallback to work when curent dir
285 289 is on a windows network share
286 290
287 291 2007-05-28 Ville Vainio <vivainio@gmail.com>
288 292
289 293 * %cpaste: strip + with > from left (diffs).
290 294
291 295 * iplib.py: Fix crash when readline not installed
292 296
293 297 2007-05-26 Ville Vainio <vivainio@gmail.com>
294 298
295 299 * generics.py: intruduce easy to extend result_display generic
296 300 function (using simplegeneric.py).
297 301
298 302 * Fixed the append functionality of %set.
299 303
300 304 2007-05-25 Ville Vainio <vivainio@gmail.com>
301 305
302 306 * New magic: %rep (fetch / run old commands from history)
303 307
304 308 * New extension: mglob (%mglob magic), for powerful glob / find /filter
305 309 like functionality
306 310
307 311 % maghistory.py: %hist -g PATTERM greps the history for pattern
308 312
309 313 2007-05-24 Walter Doerwald <walter@livinglogic.de>
310 314
311 315 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
312 316 browse the IPython input history
313 317
314 318 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
315 319 (mapped to "i") can be used to put the object under the curser in the input
316 320 line. pickinputattr (mapped to "I") does the same for the attribute under
317 321 the cursor.
318 322
319 323 2007-05-24 Ville Vainio <vivainio@gmail.com>
320 324
321 325 * Grand magic cleansing (changeset [2380]):
322 326
323 327 * Introduce ipy_legacy.py where the following magics were
324 328 moved:
325 329
326 330 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
327 331
328 332 If you need them, either use default profile or "import ipy_legacy"
329 333 in your ipy_user_conf.py
330 334
331 335 * Move sh and scipy profile to Extensions from UserConfig. this implies
332 336 you should not edit them, but you don't need to run %upgrade when
333 337 upgrading IPython anymore.
334 338
335 339 * %hist/%history now operates in "raw" mode by default. To get the old
336 340 behaviour, run '%hist -n' (native mode).
337 341
338 342 * split ipy_stock_completers.py to ipy_stock_completers.py and
339 343 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
340 344 installed as default.
341 345
342 346 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
343 347 handling.
344 348
345 349 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
346 350 input if readline is available.
347 351
348 352 2007-05-23 Ville Vainio <vivainio@gmail.com>
349 353
350 354 * macro.py: %store uses __getstate__ properly
351 355
352 356 * exesetup.py: added new setup script for creating
353 357 standalone IPython executables with py2exe (i.e.
354 358 no python installation required).
355 359
356 360 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
357 361 its place.
358 362
359 363 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
360 364
361 365 2007-05-21 Ville Vainio <vivainio@gmail.com>
362 366
363 367 * platutil_win32.py (set_term_title): handle
364 368 failure of 'title' system call properly.
365 369
366 370 2007-05-17 Walter Doerwald <walter@livinglogic.de>
367 371
368 372 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
369 373 (Bug detected by Paul Mueller).
370 374
371 375 2007-05-16 Ville Vainio <vivainio@gmail.com>
372 376
373 377 * ipy_profile_sci.py, ipython_win_post_install.py: Create
374 378 new "sci" profile, effectively a modern version of the old
375 379 "scipy" profile (which is now slated for deprecation).
376 380
377 381 2007-05-15 Ville Vainio <vivainio@gmail.com>
378 382
379 383 * pycolorize.py, pycolor.1: Paul Mueller's patches that
380 384 make pycolorize read input from stdin when run without arguments.
381 385
382 386 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
383 387
384 388 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
385 389 it in sh profile (instead of ipy_system_conf.py).
386 390
387 391 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
388 392 aliases are now lower case on windows (MyCommand.exe => mycommand).
389 393
390 394 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
391 395 Macros are now callable objects that inherit from ipapi.IPyAutocall,
392 396 i.e. get autocalled regardless of system autocall setting.
393 397
394 398 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
395 399
396 400 * IPython/rlineimpl.py: check for clear_history in readline and
397 401 make it a dummy no-op if not available. This function isn't
398 402 guaranteed to be in the API and appeared in Python 2.4, so we need
399 403 to check it ourselves. Also, clean up this file quite a bit.
400 404
401 405 * ipython.1: update man page and full manual with information
402 406 about threads (remove outdated warning). Closes #151.
403 407
404 408 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
405 409
406 410 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
407 411 in trunk (note that this made it into the 0.8.1 release already,
408 412 but the changelogs didn't get coordinated). Many thanks to Gael
409 413 Varoquaux <gael.varoquaux-AT-normalesup.org>
410 414
411 415 2007-05-09 *** Released version 0.8.1
412 416
413 417 2007-05-10 Walter Doerwald <walter@livinglogic.de>
414 418
415 419 * IPython/Extensions/igrid.py: Incorporate html help into
416 420 the module, so we don't have to search for the file.
417 421
418 422 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
419 423
420 424 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
421 425
422 426 2007-04-30 Ville Vainio <vivainio@gmail.com>
423 427
424 428 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
425 429 user has illegal (non-ascii) home directory name
426 430
427 431 2007-04-27 Ville Vainio <vivainio@gmail.com>
428 432
429 433 * platutils_win32.py: implement set_term_title for windows
430 434
431 435 * Update version number
432 436
433 437 * ipy_profile_sh.py: more informative prompt (2 dir levels)
434 438
435 439 2007-04-26 Walter Doerwald <walter@livinglogic.de>
436 440
437 441 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
438 442 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
439 443 bug discovered by Ville).
440 444
441 445 2007-04-26 Ville Vainio <vivainio@gmail.com>
442 446
443 447 * Extensions/ipy_completers.py: Olivier's module completer now
444 448 saves the list of root modules if it takes > 4 secs on the first run.
445 449
446 450 * Magic.py (%rehashx): %rehashx now clears the completer cache
447 451
448 452
449 453 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
450 454
451 455 * ipython.el: fix incorrect color scheme, reported by Stefan.
452 456 Closes #149.
453 457
454 458 * IPython/PyColorize.py (Parser.format2): fix state-handling
455 459 logic. I still don't like how that code handles state, but at
456 460 least now it should be correct, if inelegant. Closes #146.
457 461
458 462 2007-04-25 Ville Vainio <vivainio@gmail.com>
459 463
460 464 * Extensions/ipy_which.py: added extension for %which magic, works
461 465 a lot like unix 'which' but also finds and expands aliases, and
462 466 allows wildcards.
463 467
464 468 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
465 469 as opposed to returning nothing.
466 470
467 471 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
468 472 ipy_stock_completers on default profile, do import on sh profile.
469 473
470 474 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
471 475
472 476 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
473 477 like ipython.py foo.py which raised a IndexError.
474 478
475 479 2007-04-21 Ville Vainio <vivainio@gmail.com>
476 480
477 481 * Extensions/ipy_extutil.py: added extension to manage other ipython
478 482 extensions. Now only supports 'ls' == list extensions.
479 483
480 484 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
481 485
482 486 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
483 487 would prevent use of the exception system outside of a running
484 488 IPython instance.
485 489
486 490 2007-04-20 Ville Vainio <vivainio@gmail.com>
487 491
488 492 * Extensions/ipy_render.py: added extension for easy
489 493 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
490 494 'Iptl' template notation,
491 495
492 496 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
493 497 safer & faster 'import' completer.
494 498
495 499 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
496 500 and _ip.defalias(name, command).
497 501
498 502 * Extensions/ipy_exportdb.py: New extension for exporting all the
499 503 %store'd data in a portable format (normal ipapi calls like
500 504 defmacro() etc.)
501 505
502 506 2007-04-19 Ville Vainio <vivainio@gmail.com>
503 507
504 508 * upgrade_dir.py: skip junk files like *.pyc
505 509
506 510 * Release.py: version number to 0.8.1
507 511
508 512 2007-04-18 Ville Vainio <vivainio@gmail.com>
509 513
510 514 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
511 515 and later on win32.
512 516
513 517 2007-04-16 Ville Vainio <vivainio@gmail.com>
514 518
515 519 * iplib.py (showtraceback): Do not crash when running w/o readline.
516 520
517 521 2007-04-12 Walter Doerwald <walter@livinglogic.de>
518 522
519 523 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
520 524 sorted (case sensitive with files and dirs mixed).
521 525
522 526 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
523 527
524 528 * IPython/Release.py (version): Open trunk for 0.8.1 development.
525 529
526 530 2007-04-10 *** Released version 0.8.0
527 531
528 532 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
529 533
530 534 * Tag 0.8.0 for release.
531 535
532 536 * IPython/iplib.py (reloadhist): add API function to cleanly
533 537 reload the readline history, which was growing inappropriately on
534 538 every %run call.
535 539
536 540 * win32_manual_post_install.py (run): apply last part of Nicolas
537 541 Pernetty's patch (I'd accidentally applied it in a different
538 542 directory and this particular file didn't get patched).
539 543
540 544 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
541 545
542 546 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
543 547 find the main thread id and use the proper API call. Thanks to
544 548 Stefan for the fix.
545 549
546 550 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
547 551 unit tests to reflect fixed ticket #52, and add more tests sent by
548 552 him.
549 553
550 554 * IPython/iplib.py (raw_input): restore the readline completer
551 555 state on every input, in case third-party code messed it up.
552 556 (_prefilter): revert recent addition of early-escape checks which
553 557 prevent many valid alias calls from working.
554 558
555 559 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
556 560 flag for sigint handler so we don't run a full signal() call on
557 561 each runcode access.
558 562
559 563 * IPython/Magic.py (magic_whos): small improvement to diagnostic
560 564 message.
561 565
562 566 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
563 567
564 568 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
565 569 asynchronous exceptions working, i.e., Ctrl-C can actually
566 570 interrupt long-running code in the multithreaded shells.
567 571
568 572 This is using Tomer Filiba's great ctypes-based trick:
569 573 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
570 574 this in the past, but hadn't been able to make it work before. So
571 575 far it looks like it's actually running, but this needs more
572 576 testing. If it really works, I'll be *very* happy, and we'll owe
573 577 a huge thank you to Tomer. My current implementation is ugly,
574 578 hackish and uses nasty globals, but I don't want to try and clean
575 579 anything up until we know if it actually works.
576 580
577 581 NOTE: this feature needs ctypes to work. ctypes is included in
578 582 Python2.5, but 2.4 users will need to manually install it. This
579 583 feature makes multi-threaded shells so much more usable that it's
580 584 a minor price to pay (ctypes is very easy to install, already a
581 585 requirement for win32 and available in major linux distros).
582 586
583 587 2007-04-04 Ville Vainio <vivainio@gmail.com>
584 588
585 589 * Extensions/ipy_completers.py, ipy_stock_completers.py:
586 590 Moved implementations of 'bundled' completers to ipy_completers.py,
587 591 they are only enabled in ipy_stock_completers.py.
588 592
589 593 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
590 594
591 595 * IPython/PyColorize.py (Parser.format2): Fix identation of
592 596 colorzied output and return early if color scheme is NoColor, to
593 597 avoid unnecessary and expensive tokenization. Closes #131.
594 598
595 599 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
596 600
597 601 * IPython/Debugger.py: disable the use of pydb version 1.17. It
598 602 has a critical bug (a missing import that makes post-mortem not
599 603 work at all). Unfortunately as of this time, this is the version
600 604 shipped with Ubuntu Edgy, so quite a few people have this one. I
601 605 hope Edgy will update to a more recent package.
602 606
603 607 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
604 608
605 609 * IPython/iplib.py (_prefilter): close #52, second part of a patch
606 610 set by Stefan (only the first part had been applied before).
607 611
608 612 * IPython/Extensions/ipy_stock_completers.py (module_completer):
609 613 remove usage of the dangerous pkgutil.walk_packages(). See
610 614 details in comments left in the code.
611 615
612 616 * IPython/Magic.py (magic_whos): add support for numpy arrays
613 617 similar to what we had for Numeric.
614 618
615 619 * IPython/completer.py (IPCompleter.complete): extend the
616 620 complete() call API to support completions by other mechanisms
617 621 than readline. Closes #109.
618 622
619 623 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
620 624 protect against a bug in Python's execfile(). Closes #123.
621 625
622 626 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
623 627
624 628 * IPython/iplib.py (split_user_input): ensure that when splitting
625 629 user input, the part that can be treated as a python name is pure
626 630 ascii (Python identifiers MUST be pure ascii). Part of the
627 631 ongoing Unicode support work.
628 632
629 633 * IPython/Prompts.py (prompt_specials_color): Add \N for the
630 634 actual prompt number, without any coloring. This allows users to
631 635 produce numbered prompts with their own colors. Added after a
632 636 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
633 637
634 638 2007-03-31 Walter Doerwald <walter@livinglogic.de>
635 639
636 640 * IPython/Extensions/igrid.py: Map the return key
637 641 to enter() and shift-return to enterattr().
638 642
639 643 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
640 644
641 645 * IPython/Magic.py (magic_psearch): add unicode support by
642 646 encoding to ascii the input, since this routine also only deals
643 647 with valid Python names. Fixes a bug reported by Stefan.
644 648
645 649 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
646 650
647 651 * IPython/Magic.py (_inspect): convert unicode input into ascii
648 652 before trying to evaluate it as a Python identifier. This fixes a
649 653 problem that the new unicode support had introduced when analyzing
650 654 long definition lines for functions.
651 655
652 656 2007-03-24 Walter Doerwald <walter@livinglogic.de>
653 657
654 658 * IPython/Extensions/igrid.py: Fix picking. Using
655 659 igrid with wxPython 2.6 and -wthread should work now.
656 660 igrid.display() simply tries to create a frame without
657 661 an application. Only if this fails an application is created.
658 662
659 663 2007-03-23 Walter Doerwald <walter@livinglogic.de>
660 664
661 665 * IPython/Extensions/path.py: Updated to version 2.2.
662 666
663 667 2007-03-23 Ville Vainio <vivainio@gmail.com>
664 668
665 669 * iplib.py: recursive alias expansion now works better, so that
666 670 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
667 671 doesn't trip up the process, if 'd' has been aliased to 'ls'.
668 672
669 673 * Extensions/ipy_gnuglobal.py added, provides %global magic
670 674 for users of http://www.gnu.org/software/global
671 675
672 676 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
673 677 Closes #52. Patch by Stefan van der Walt.
674 678
675 679 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
676 680
677 681 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
678 682 respect the __file__ attribute when using %run. Thanks to a bug
679 683 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
680 684
681 685 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
682 686
683 687 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
684 688 input. Patch sent by Stefan.
685 689
686 690 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
687 691 * IPython/Extensions/ipy_stock_completer.py
688 692 shlex_split, fix bug in shlex_split. len function
689 693 call was missing an if statement. Caused shlex_split to
690 694 sometimes return "" as last element.
691 695
692 696 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
693 697
694 698 * IPython/completer.py
695 699 (IPCompleter.file_matches.single_dir_expand): fix a problem
696 700 reported by Stefan, where directories containign a single subdir
697 701 would be completed too early.
698 702
699 703 * IPython/Shell.py (_load_pylab): Make the execution of 'from
700 704 pylab import *' when -pylab is given be optional. A new flag,
701 705 pylab_import_all controls this behavior, the default is True for
702 706 backwards compatibility.
703 707
704 708 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
705 709 modified) R. Bernstein's patch for fully syntax highlighted
706 710 tracebacks. The functionality is also available under ultraTB for
707 711 non-ipython users (someone using ultraTB but outside an ipython
708 712 session). They can select the color scheme by setting the
709 713 module-level global DEFAULT_SCHEME. The highlight functionality
710 714 also works when debugging.
711 715
712 716 * IPython/genutils.py (IOStream.close): small patch by
713 717 R. Bernstein for improved pydb support.
714 718
715 719 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
716 720 DaveS <davls@telus.net> to improve support of debugging under
717 721 NTEmacs, including improved pydb behavior.
718 722
719 723 * IPython/Magic.py (magic_prun): Fix saving of profile info for
720 724 Python 2.5, where the stats object API changed a little. Thanks
721 725 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
722 726
723 727 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
724 728 Pernetty's patch to improve support for (X)Emacs under Win32.
725 729
726 730 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
727 731
728 732 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
729 733 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
730 734 a report by Nik Tautenhahn.
731 735
732 736 2007-03-16 Walter Doerwald <walter@livinglogic.de>
733 737
734 738 * setup.py: Add the igrid help files to the list of data files
735 739 to be installed alongside igrid.
736 740 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
737 741 Show the input object of the igrid browser as the window tile.
738 742 Show the object the cursor is on in the statusbar.
739 743
740 744 2007-03-15 Ville Vainio <vivainio@gmail.com>
741 745
742 746 * Extensions/ipy_stock_completers.py: Fixed exception
743 747 on mismatching quotes in %run completer. Patch by
744 748 JοΏ½rgen Stenarson. Closes #127.
745 749
746 750 2007-03-14 Ville Vainio <vivainio@gmail.com>
747 751
748 752 * Extensions/ext_rehashdir.py: Do not do auto_alias
749 753 in %rehashdir, it clobbers %store'd aliases.
750 754
751 755 * UserConfig/ipy_profile_sh.py: envpersist.py extension
752 756 (beefed up %env) imported for sh profile.
753 757
754 758 2007-03-10 Walter Doerwald <walter@livinglogic.de>
755 759
756 760 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
757 761 as the default browser.
758 762 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
759 763 As igrid displays all attributes it ever encounters, fetch() (which has
760 764 been renamed to _fetch()) doesn't have to recalculate the display attributes
761 765 every time a new item is fetched. This should speed up scrolling.
762 766
763 767 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
764 768
765 769 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
766 770 Schmolck's recently reported tab-completion bug (my previous one
767 771 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
768 772
769 773 2007-03-09 Walter Doerwald <walter@livinglogic.de>
770 774
771 775 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
772 776 Close help window if exiting igrid.
773 777
774 778 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
775 779
776 780 * IPython/Extensions/ipy_defaults.py: Check if readline is available
777 781 before calling functions from readline.
778 782
779 783 2007-03-02 Walter Doerwald <walter@livinglogic.de>
780 784
781 785 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
782 786 igrid is a wxPython-based display object for ipipe. If your system has
783 787 wx installed igrid will be the default display. Without wx ipipe falls
784 788 back to ibrowse (which needs curses). If no curses is installed ipipe
785 789 falls back to idump.
786 790
787 791 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
788 792
789 793 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
790 794 my changes from yesterday, they introduced bugs. Will reactivate
791 795 once I get a correct solution, which will be much easier thanks to
792 796 Dan Milstein's new prefilter test suite.
793 797
794 798 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
795 799
796 800 * IPython/iplib.py (split_user_input): fix input splitting so we
797 801 don't attempt attribute accesses on things that can't possibly be
798 802 valid Python attributes. After a bug report by Alex Schmolck.
799 803 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
800 804 %magic with explicit % prefix.
801 805
802 806 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
803 807
804 808 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
805 809 avoid a DeprecationWarning from GTK.
806 810
807 811 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
808 812
809 813 * IPython/genutils.py (clock): I modified clock() to return total
810 814 time, user+system. This is a more commonly needed metric. I also
811 815 introduced the new clocku/clocks to get only user/system time if
812 816 one wants those instead.
813 817
814 818 ***WARNING: API CHANGE*** clock() used to return only user time,
815 819 so if you want exactly the same results as before, use clocku
816 820 instead.
817 821
818 822 2007-02-22 Ville Vainio <vivainio@gmail.com>
819 823
820 824 * IPython/Extensions/ipy_p4.py: Extension for improved
821 825 p4 (perforce version control system) experience.
822 826 Adds %p4 magic with p4 command completion and
823 827 automatic -G argument (marshall output as python dict)
824 828
825 829 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
826 830
827 831 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
828 832 stop marks.
829 833 (ClearingMixin): a simple mixin to easily make a Demo class clear
830 834 the screen in between blocks and have empty marquees. The
831 835 ClearDemo and ClearIPDemo classes that use it are included.
832 836
833 837 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
834 838
835 839 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
836 840 protect against exceptions at Python shutdown time. Patch
837 841 sumbmitted to upstream.
838 842
839 843 2007-02-14 Walter Doerwald <walter@livinglogic.de>
840 844
841 845 * IPython/Extensions/ibrowse.py: If entering the first object level
842 846 (i.e. the object for which the browser has been started) fails,
843 847 now the error is raised directly (aborting the browser) instead of
844 848 running into an empty levels list later.
845 849
846 850 2007-02-03 Walter Doerwald <walter@livinglogic.de>
847 851
848 852 * IPython/Extensions/ipipe.py: Add an xrepr implementation
849 853 for the noitem object.
850 854
851 855 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
852 856
853 857 * IPython/completer.py (Completer.attr_matches): Fix small
854 858 tab-completion bug with Enthought Traits objects with units.
855 859 Thanks to a bug report by Tom Denniston
856 860 <tom.denniston-AT-alum.dartmouth.org>.
857 861
858 862 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
859 863
860 864 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
861 865 bug where only .ipy or .py would be completed. Once the first
862 866 argument to %run has been given, all completions are valid because
863 867 they are the arguments to the script, which may well be non-python
864 868 filenames.
865 869
866 870 * IPython/irunner.py (InteractiveRunner.run_source): major updates
867 871 to irunner to allow it to correctly support real doctesting of
868 872 out-of-process ipython code.
869 873
870 874 * IPython/Magic.py (magic_cd): Make the setting of the terminal
871 875 title an option (-noterm_title) because it completely breaks
872 876 doctesting.
873 877
874 878 * IPython/demo.py: fix IPythonDemo class that was not actually working.
875 879
876 880 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
877 881
878 882 * IPython/irunner.py (main): fix small bug where extensions were
879 883 not being correctly recognized.
880 884
881 885 2007-01-23 Walter Doerwald <walter@livinglogic.de>
882 886
883 887 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
884 888 a string containing a single line yields the string itself as the
885 889 only item.
886 890
887 891 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
888 892 object if it's the same as the one on the last level (This avoids
889 893 infinite recursion for one line strings).
890 894
891 895 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
892 896
893 897 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
894 898 all output streams before printing tracebacks. This ensures that
895 899 user output doesn't end up interleaved with traceback output.
896 900
897 901 2007-01-10 Ville Vainio <vivainio@gmail.com>
898 902
899 903 * Extensions/envpersist.py: Turbocharged %env that remembers
900 904 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
901 905 "%env VISUAL=jed".
902 906
903 907 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
904 908
905 909 * IPython/iplib.py (showtraceback): ensure that we correctly call
906 910 custom handlers in all cases (some with pdb were slipping through,
907 911 but I'm not exactly sure why).
908 912
909 913 * IPython/Debugger.py (Tracer.__init__): added new class to
910 914 support set_trace-like usage of IPython's enhanced debugger.
911 915
912 916 2006-12-24 Ville Vainio <vivainio@gmail.com>
913 917
914 918 * ipmaker.py: more informative message when ipy_user_conf
915 919 import fails (suggest running %upgrade).
916 920
917 921 * tools/run_ipy_in_profiler.py: Utility to see where
918 922 the time during IPython startup is spent.
919 923
920 924 2006-12-20 Ville Vainio <vivainio@gmail.com>
921 925
922 926 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
923 927
924 928 * ipapi.py: Add new ipapi method, expand_alias.
925 929
926 930 * Release.py: Bump up version to 0.7.4.svn
927 931
928 932 2006-12-17 Ville Vainio <vivainio@gmail.com>
929 933
930 934 * Extensions/jobctrl.py: Fixed &cmd arg arg...
931 935 to work properly on posix too
932 936
933 937 * Release.py: Update revnum (version is still just 0.7.3).
934 938
935 939 2006-12-15 Ville Vainio <vivainio@gmail.com>
936 940
937 941 * scripts/ipython_win_post_install: create ipython.py in
938 942 prefix + "/scripts".
939 943
940 944 * Release.py: Update version to 0.7.3.
941 945
942 946 2006-12-14 Ville Vainio <vivainio@gmail.com>
943 947
944 948 * scripts/ipython_win_post_install: Overwrite old shortcuts
945 949 if they already exist
946 950
947 951 * Release.py: release 0.7.3rc2
948 952
949 953 2006-12-13 Ville Vainio <vivainio@gmail.com>
950 954
951 955 * Branch and update Release.py for 0.7.3rc1
952 956
953 957 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
954 958
955 959 * IPython/Shell.py (IPShellWX): update for current WX naming
956 960 conventions, to avoid a deprecation warning with current WX
957 961 versions. Thanks to a report by Danny Shevitz.
958 962
959 963 2006-12-12 Ville Vainio <vivainio@gmail.com>
960 964
961 965 * ipmaker.py: apply david cournapeau's patch to make
962 966 import_some work properly even when ipythonrc does
963 967 import_some on empty list (it was an old bug!).
964 968
965 969 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
966 970 Add deprecation note to ipythonrc and a url to wiki
967 971 in ipy_user_conf.py
968 972
969 973
970 974 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
971 975 as if it was typed on IPython command prompt, i.e.
972 976 as IPython script.
973 977
974 978 * example-magic.py, magic_grepl.py: remove outdated examples
975 979
976 980 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
977 981
978 982 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
979 983 is called before any exception has occurred.
980 984
981 985 2006-12-08 Ville Vainio <vivainio@gmail.com>
982 986
983 987 * Extensions/ipy_stock_completers.py: fix cd completer
984 988 to translate /'s to \'s again.
985 989
986 990 * completer.py: prevent traceback on file completions w/
987 991 backslash.
988 992
989 993 * Release.py: Update release number to 0.7.3b3 for release
990 994
991 995 2006-12-07 Ville Vainio <vivainio@gmail.com>
992 996
993 997 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
994 998 while executing external code. Provides more shell-like behaviour
995 999 and overall better response to ctrl + C / ctrl + break.
996 1000
997 1001 * tools/make_tarball.py: new script to create tarball straight from svn
998 1002 (setup.py sdist doesn't work on win32).
999 1003
1000 1004 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1001 1005 on dirnames with spaces and use the default completer instead.
1002 1006
1003 1007 * Revision.py: Change version to 0.7.3b2 for release.
1004 1008
1005 1009 2006-12-05 Ville Vainio <vivainio@gmail.com>
1006 1010
1007 1011 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1008 1012 pydb patch 4 (rm debug printing, py 2.5 checking)
1009 1013
1010 1014 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1011 1015 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1012 1016 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1013 1017 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1014 1018 object the cursor was on before the refresh. The command "markrange" is
1015 1019 mapped to "%" now.
1016 1020 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1017 1021
1018 1022 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1019 1023
1020 1024 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1021 1025 interactive debugger on the last traceback, without having to call
1022 1026 %pdb and rerun your code. Made minor changes in various modules,
1023 1027 should automatically recognize pydb if available.
1024 1028
1025 1029 2006-11-28 Ville Vainio <vivainio@gmail.com>
1026 1030
1027 1031 * completer.py: If the text start with !, show file completions
1028 1032 properly. This helps when trying to complete command name
1029 1033 for shell escapes.
1030 1034
1031 1035 2006-11-27 Ville Vainio <vivainio@gmail.com>
1032 1036
1033 1037 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1034 1038 der Walt. Clean up svn and hg completers by using a common
1035 1039 vcs_completer.
1036 1040
1037 1041 2006-11-26 Ville Vainio <vivainio@gmail.com>
1038 1042
1039 1043 * Remove ipconfig and %config; you should use _ip.options structure
1040 1044 directly instead!
1041 1045
1042 1046 * genutils.py: add wrap_deprecated function for deprecating callables
1043 1047
1044 1048 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1045 1049 _ip.system instead. ipalias is redundant.
1046 1050
1047 1051 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1048 1052 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1049 1053 explicit.
1050 1054
1051 1055 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1052 1056 completer. Try it by entering 'hg ' and pressing tab.
1053 1057
1054 1058 * macro.py: Give Macro a useful __repr__ method
1055 1059
1056 1060 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1057 1061
1058 1062 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1059 1063 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1060 1064 we don't get a duplicate ipipe module, where registration of the xrepr
1061 1065 implementation for Text is useless.
1062 1066
1063 1067 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1064 1068
1065 1069 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1066 1070
1067 1071 2006-11-24 Ville Vainio <vivainio@gmail.com>
1068 1072
1069 1073 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1070 1074 try to use "cProfile" instead of the slower pure python
1071 1075 "profile"
1072 1076
1073 1077 2006-11-23 Ville Vainio <vivainio@gmail.com>
1074 1078
1075 1079 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1076 1080 Qt+IPython+Designer link in documentation.
1077 1081
1078 1082 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1079 1083 correct Pdb object to %pydb.
1080 1084
1081 1085
1082 1086 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1083 1087 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1084 1088 generic xrepr(), otherwise the list implementation would kick in.
1085 1089
1086 1090 2006-11-21 Ville Vainio <vivainio@gmail.com>
1087 1091
1088 1092 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1089 1093 with one from UserConfig.
1090 1094
1091 1095 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1092 1096 it was missing which broke the sh profile.
1093 1097
1094 1098 * completer.py: file completer now uses explicit '/' instead
1095 1099 of os.path.join, expansion of 'foo' was broken on win32
1096 1100 if there was one directory with name 'foobar'.
1097 1101
1098 1102 * A bunch of patches from Kirill Smelkov:
1099 1103
1100 1104 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1101 1105
1102 1106 * [patch 7/9] Implement %page -r (page in raw mode) -
1103 1107
1104 1108 * [patch 5/9] ScientificPython webpage has moved
1105 1109
1106 1110 * [patch 4/9] The manual mentions %ds, should be %dhist
1107 1111
1108 1112 * [patch 3/9] Kill old bits from %prun doc.
1109 1113
1110 1114 * [patch 1/9] Fix typos here and there.
1111 1115
1112 1116 2006-11-08 Ville Vainio <vivainio@gmail.com>
1113 1117
1114 1118 * completer.py (attr_matches): catch all exceptions raised
1115 1119 by eval of expr with dots.
1116 1120
1117 1121 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1118 1122
1119 1123 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1120 1124 input if it starts with whitespace. This allows you to paste
1121 1125 indented input from any editor without manually having to type in
1122 1126 the 'if 1:', which is convenient when working interactively.
1123 1127 Slightly modifed version of a patch by Bo Peng
1124 1128 <bpeng-AT-rice.edu>.
1125 1129
1126 1130 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1127 1131
1128 1132 * IPython/irunner.py (main): modified irunner so it automatically
1129 1133 recognizes the right runner to use based on the extension (.py for
1130 1134 python, .ipy for ipython and .sage for sage).
1131 1135
1132 1136 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1133 1137 visible in ipapi as ip.config(), to programatically control the
1134 1138 internal rc object. There's an accompanying %config magic for
1135 1139 interactive use, which has been enhanced to match the
1136 1140 funtionality in ipconfig.
1137 1141
1138 1142 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1139 1143 so it's not just a toggle, it now takes an argument. Add support
1140 1144 for a customizable header when making system calls, as the new
1141 1145 system_header variable in the ipythonrc file.
1142 1146
1143 1147 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1144 1148
1145 1149 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1146 1150 generic functions (using Philip J. Eby's simplegeneric package).
1147 1151 This makes it possible to customize the display of third-party classes
1148 1152 without having to monkeypatch them. xiter() no longer supports a mode
1149 1153 argument and the XMode class has been removed. The same functionality can
1150 1154 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1151 1155 One consequence of the switch to generic functions is that xrepr() and
1152 1156 xattrs() implementation must define the default value for the mode
1153 1157 argument themselves and xattrs() implementations must return real
1154 1158 descriptors.
1155 1159
1156 1160 * IPython/external: This new subpackage will contain all third-party
1157 1161 packages that are bundled with IPython. (The first one is simplegeneric).
1158 1162
1159 1163 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1160 1164 directory which as been dropped in r1703.
1161 1165
1162 1166 * IPython/Extensions/ipipe.py (iless): Fixed.
1163 1167
1164 1168 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1165 1169
1166 1170 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1167 1171
1168 1172 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1169 1173 handling in variable expansion so that shells and magics recognize
1170 1174 function local scopes correctly. Bug reported by Brian.
1171 1175
1172 1176 * scripts/ipython: remove the very first entry in sys.path which
1173 1177 Python auto-inserts for scripts, so that sys.path under IPython is
1174 1178 as similar as possible to that under plain Python.
1175 1179
1176 1180 * IPython/completer.py (IPCompleter.file_matches): Fix
1177 1181 tab-completion so that quotes are not closed unless the completion
1178 1182 is unambiguous. After a request by Stefan. Minor cleanups in
1179 1183 ipy_stock_completers.
1180 1184
1181 1185 2006-11-02 Ville Vainio <vivainio@gmail.com>
1182 1186
1183 1187 * ipy_stock_completers.py: Add %run and %cd completers.
1184 1188
1185 1189 * completer.py: Try running custom completer for both
1186 1190 "foo" and "%foo" if the command is just "foo". Ignore case
1187 1191 when filtering possible completions.
1188 1192
1189 1193 * UserConfig/ipy_user_conf.py: install stock completers as default
1190 1194
1191 1195 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1192 1196 simplified readline history save / restore through a wrapper
1193 1197 function
1194 1198
1195 1199
1196 1200 2006-10-31 Ville Vainio <vivainio@gmail.com>
1197 1201
1198 1202 * strdispatch.py, completer.py, ipy_stock_completers.py:
1199 1203 Allow str_key ("command") in completer hooks. Implement
1200 1204 trivial completer for 'import' (stdlib modules only). Rename
1201 1205 ipy_linux_package_managers.py to ipy_stock_completers.py.
1202 1206 SVN completer.
1203 1207
1204 1208 * Extensions/ledit.py: %magic line editor for easily and
1205 1209 incrementally manipulating lists of strings. The magic command
1206 1210 name is %led.
1207 1211
1208 1212 2006-10-30 Ville Vainio <vivainio@gmail.com>
1209 1213
1210 1214 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1211 1215 Bernsteins's patches for pydb integration.
1212 1216 http://bashdb.sourceforge.net/pydb/
1213 1217
1214 1218 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1215 1219 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1216 1220 custom completer hook to allow the users to implement their own
1217 1221 completers. See ipy_linux_package_managers.py for example. The
1218 1222 hook name is 'complete_command'.
1219 1223
1220 1224 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1221 1225
1222 1226 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1223 1227 Numeric leftovers.
1224 1228
1225 1229 * ipython.el (py-execute-region): apply Stefan's patch to fix
1226 1230 garbled results if the python shell hasn't been previously started.
1227 1231
1228 1232 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1229 1233 pretty generic function and useful for other things.
1230 1234
1231 1235 * IPython/OInspect.py (getsource): Add customizable source
1232 1236 extractor. After a request/patch form W. Stein (SAGE).
1233 1237
1234 1238 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1235 1239 window size to a more reasonable value from what pexpect does,
1236 1240 since their choice causes wrapping bugs with long input lines.
1237 1241
1238 1242 2006-10-28 Ville Vainio <vivainio@gmail.com>
1239 1243
1240 1244 * Magic.py (%run): Save and restore the readline history from
1241 1245 file around %run commands to prevent side effects from
1242 1246 %runned programs that might use readline (e.g. pydb).
1243 1247
1244 1248 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1245 1249 invoking the pydb enhanced debugger.
1246 1250
1247 1251 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1248 1252
1249 1253 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1250 1254 call the base class method and propagate the return value to
1251 1255 ifile. This is now done by path itself.
1252 1256
1253 1257 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1254 1258
1255 1259 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1256 1260 api: set_crash_handler(), to expose the ability to change the
1257 1261 internal crash handler.
1258 1262
1259 1263 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1260 1264 the various parameters of the crash handler so that apps using
1261 1265 IPython as their engine can customize crash handling. Ipmlemented
1262 1266 at the request of SAGE.
1263 1267
1264 1268 2006-10-14 Ville Vainio <vivainio@gmail.com>
1265 1269
1266 1270 * Magic.py, ipython.el: applied first "safe" part of Rocky
1267 1271 Bernstein's patch set for pydb integration.
1268 1272
1269 1273 * Magic.py (%unalias, %alias): %store'd aliases can now be
1270 1274 removed with '%unalias'. %alias w/o args now shows most
1271 1275 interesting (stored / manually defined) aliases last
1272 1276 where they catch the eye w/o scrolling.
1273 1277
1274 1278 * Magic.py (%rehashx), ext_rehashdir.py: files with
1275 1279 'py' extension are always considered executable, even
1276 1280 when not in PATHEXT environment variable.
1277 1281
1278 1282 2006-10-12 Ville Vainio <vivainio@gmail.com>
1279 1283
1280 1284 * jobctrl.py: Add new "jobctrl" extension for spawning background
1281 1285 processes with "&find /". 'import jobctrl' to try it out. Requires
1282 1286 'subprocess' module, standard in python 2.4+.
1283 1287
1284 1288 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1285 1289 so if foo -> bar and bar -> baz, then foo -> baz.
1286 1290
1287 1291 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1288 1292
1289 1293 * IPython/Magic.py (Magic.parse_options): add a new posix option
1290 1294 to allow parsing of input args in magics that doesn't strip quotes
1291 1295 (if posix=False). This also closes %timeit bug reported by
1292 1296 Stefan.
1293 1297
1294 1298 2006-10-03 Ville Vainio <vivainio@gmail.com>
1295 1299
1296 1300 * iplib.py (raw_input, interact): Return ValueError catching for
1297 1301 raw_input. Fixes infinite loop for sys.stdin.close() or
1298 1302 sys.stdout.close().
1299 1303
1300 1304 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1301 1305
1302 1306 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1303 1307 to help in handling doctests. irunner is now pretty useful for
1304 1308 running standalone scripts and simulate a full interactive session
1305 1309 in a format that can be then pasted as a doctest.
1306 1310
1307 1311 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1308 1312 on top of the default (useless) ones. This also fixes the nasty
1309 1313 way in which 2.5's Quitter() exits (reverted [1785]).
1310 1314
1311 1315 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1312 1316 2.5.
1313 1317
1314 1318 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1315 1319 color scheme is updated as well when color scheme is changed
1316 1320 interactively.
1317 1321
1318 1322 2006-09-27 Ville Vainio <vivainio@gmail.com>
1319 1323
1320 1324 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1321 1325 infinite loop and just exit. It's a hack, but will do for a while.
1322 1326
1323 1327 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1324 1328
1325 1329 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1326 1330 the constructor, this makes it possible to get a list of only directories
1327 1331 or only files.
1328 1332
1329 1333 2006-08-12 Ville Vainio <vivainio@gmail.com>
1330 1334
1331 1335 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1332 1336 they broke unittest
1333 1337
1334 1338 2006-08-11 Ville Vainio <vivainio@gmail.com>
1335 1339
1336 1340 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1337 1341 by resolving issue properly, i.e. by inheriting FakeModule
1338 1342 from types.ModuleType. Pickling ipython interactive data
1339 1343 should still work as usual (testing appreciated).
1340 1344
1341 1345 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1342 1346
1343 1347 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1344 1348 running under python 2.3 with code from 2.4 to fix a bug with
1345 1349 help(). Reported by the Debian maintainers, Norbert Tretkowski
1346 1350 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1347 1351 <afayolle-AT-debian.org>.
1348 1352
1349 1353 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1350 1354
1351 1355 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1352 1356 (which was displaying "quit" twice).
1353 1357
1354 1358 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1355 1359
1356 1360 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1357 1361 the mode argument).
1358 1362
1359 1363 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1360 1364
1361 1365 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1362 1366 not running under IPython.
1363 1367
1364 1368 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1365 1369 and make it iterable (iterating over the attribute itself). Add two new
1366 1370 magic strings for __xattrs__(): If the string starts with "-", the attribute
1367 1371 will not be displayed in ibrowse's detail view (but it can still be
1368 1372 iterated over). This makes it possible to add attributes that are large
1369 1373 lists or generator methods to the detail view. Replace magic attribute names
1370 1374 and _attrname() and _getattr() with "descriptors": For each type of magic
1371 1375 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1372 1376 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1373 1377 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1374 1378 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1375 1379 are still supported.
1376 1380
1377 1381 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1378 1382 fails in ibrowse.fetch(), the exception object is added as the last item
1379 1383 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1380 1384 a generator throws an exception midway through execution.
1381 1385
1382 1386 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1383 1387 encoding into methods.
1384 1388
1385 1389 2006-07-26 Ville Vainio <vivainio@gmail.com>
1386 1390
1387 1391 * iplib.py: history now stores multiline input as single
1388 1392 history entries. Patch by Jorgen Cederlof.
1389 1393
1390 1394 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1391 1395
1392 1396 * IPython/Extensions/ibrowse.py: Make cursor visible over
1393 1397 non existing attributes.
1394 1398
1395 1399 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1396 1400
1397 1401 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1398 1402 error output of the running command doesn't mess up the screen.
1399 1403
1400 1404 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1401 1405
1402 1406 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1403 1407 argument. This sorts the items themselves.
1404 1408
1405 1409 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1406 1410
1407 1411 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1408 1412 Compile expression strings into code objects. This should speed
1409 1413 up ifilter and friends somewhat.
1410 1414
1411 1415 2006-07-08 Ville Vainio <vivainio@gmail.com>
1412 1416
1413 1417 * Magic.py: %cpaste now strips > from the beginning of lines
1414 1418 to ease pasting quoted code from emails. Contributed by
1415 1419 Stefan van der Walt.
1416 1420
1417 1421 2006-06-29 Ville Vainio <vivainio@gmail.com>
1418 1422
1419 1423 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1420 1424 mode, patch contributed by Darren Dale. NEEDS TESTING!
1421 1425
1422 1426 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1423 1427
1424 1428 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1425 1429 a blue background. Fix fetching new display rows when the browser
1426 1430 scrolls more than a screenful (e.g. by using the goto command).
1427 1431
1428 1432 2006-06-27 Ville Vainio <vivainio@gmail.com>
1429 1433
1430 1434 * Magic.py (_inspect, _ofind) Apply David Huard's
1431 1435 patch for displaying the correct docstring for 'property'
1432 1436 attributes.
1433 1437
1434 1438 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1435 1439
1436 1440 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1437 1441 commands into the methods implementing them.
1438 1442
1439 1443 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1440 1444
1441 1445 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1442 1446 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1443 1447 autoindent support was authored by Jin Liu.
1444 1448
1445 1449 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1446 1450
1447 1451 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1448 1452 for keymaps with a custom class that simplifies handling.
1449 1453
1450 1454 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1451 1455
1452 1456 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1453 1457 resizing. This requires Python 2.5 to work.
1454 1458
1455 1459 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1456 1460
1457 1461 * IPython/Extensions/ibrowse.py: Add two new commands to
1458 1462 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1459 1463 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1460 1464 attributes again. Remapped the help command to "?". Display
1461 1465 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1462 1466 as keys for the "home" and "end" commands. Add three new commands
1463 1467 to the input mode for "find" and friends: "delend" (CTRL-K)
1464 1468 deletes to the end of line. "incsearchup" searches upwards in the
1465 1469 command history for an input that starts with the text before the cursor.
1466 1470 "incsearchdown" does the same downwards. Removed a bogus mapping of
1467 1471 the x key to "delete".
1468 1472
1469 1473 2006-06-15 Ville Vainio <vivainio@gmail.com>
1470 1474
1471 1475 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1472 1476 used to create prompts dynamically, instead of the "old" way of
1473 1477 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1474 1478 way still works (it's invoked by the default hook), of course.
1475 1479
1476 1480 * Prompts.py: added generate_output_prompt hook for altering output
1477 1481 prompt
1478 1482
1479 1483 * Release.py: Changed version string to 0.7.3.svn.
1480 1484
1481 1485 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1482 1486
1483 1487 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1484 1488 the call to fetch() always tries to fetch enough data for at least one
1485 1489 full screen. This makes it possible to simply call moveto(0,0,True) in
1486 1490 the constructor. Fix typos and removed the obsolete goto attribute.
1487 1491
1488 1492 2006-06-12 Ville Vainio <vivainio@gmail.com>
1489 1493
1490 1494 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1491 1495 allowing $variable interpolation within multiline statements,
1492 1496 though so far only with "sh" profile for a testing period.
1493 1497 The patch also enables splitting long commands with \ but it
1494 1498 doesn't work properly yet.
1495 1499
1496 1500 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1497 1501
1498 1502 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1499 1503 input history and the position of the cursor in the input history for
1500 1504 the find, findbackwards and goto command.
1501 1505
1502 1506 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1503 1507
1504 1508 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1505 1509 implements the basic functionality of browser commands that require
1506 1510 input. Reimplement the goto, find and findbackwards commands as
1507 1511 subclasses of _CommandInput. Add an input history and keymaps to those
1508 1512 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1509 1513 execute commands.
1510 1514
1511 1515 2006-06-07 Ville Vainio <vivainio@gmail.com>
1512 1516
1513 1517 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1514 1518 running the batch files instead of leaving the session open.
1515 1519
1516 1520 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1517 1521
1518 1522 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1519 1523 the original fix was incomplete. Patch submitted by W. Maier.
1520 1524
1521 1525 2006-06-07 Ville Vainio <vivainio@gmail.com>
1522 1526
1523 1527 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1524 1528 Confirmation prompts can be supressed by 'quiet' option.
1525 1529 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1526 1530
1527 1531 2006-06-06 *** Released version 0.7.2
1528 1532
1529 1533 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1530 1534
1531 1535 * IPython/Release.py (version): Made 0.7.2 final for release.
1532 1536 Repo tagged and release cut.
1533 1537
1534 1538 2006-06-05 Ville Vainio <vivainio@gmail.com>
1535 1539
1536 1540 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1537 1541 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1538 1542
1539 1543 * upgrade_dir.py: try import 'path' module a bit harder
1540 1544 (for %upgrade)
1541 1545
1542 1546 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1543 1547
1544 1548 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1545 1549 instead of looping 20 times.
1546 1550
1547 1551 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1548 1552 correctly at initialization time. Bug reported by Krishna Mohan
1549 1553 Gundu <gkmohan-AT-gmail.com> on the user list.
1550 1554
1551 1555 * IPython/Release.py (version): Mark 0.7.2 version to start
1552 1556 testing for release on 06/06.
1553 1557
1554 1558 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1555 1559
1556 1560 * scripts/irunner: thin script interface so users don't have to
1557 1561 find the module and call it as an executable, since modules rarely
1558 1562 live in people's PATH.
1559 1563
1560 1564 * IPython/irunner.py (InteractiveRunner.__init__): added
1561 1565 delaybeforesend attribute to control delays with newer versions of
1562 1566 pexpect. Thanks to detailed help from pexpect's author, Noah
1563 1567 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1564 1568 correctly (it works in NoColor mode).
1565 1569
1566 1570 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1567 1571 SAGE list, from improper log() calls.
1568 1572
1569 1573 2006-05-31 Ville Vainio <vivainio@gmail.com>
1570 1574
1571 1575 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1572 1576 with args in parens to work correctly with dirs that have spaces.
1573 1577
1574 1578 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1575 1579
1576 1580 * IPython/Logger.py (Logger.logstart): add option to log raw input
1577 1581 instead of the processed one. A -r flag was added to the
1578 1582 %logstart magic used for controlling logging.
1579 1583
1580 1584 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1581 1585
1582 1586 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1583 1587 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1584 1588 recognize the option. After a bug report by Will Maier. This
1585 1589 closes #64 (will do it after confirmation from W. Maier).
1586 1590
1587 1591 * IPython/irunner.py: New module to run scripts as if manually
1588 1592 typed into an interactive environment, based on pexpect. After a
1589 1593 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1590 1594 ipython-user list. Simple unittests in the tests/ directory.
1591 1595
1592 1596 * tools/release: add Will Maier, OpenBSD port maintainer, to
1593 1597 recepients list. We are now officially part of the OpenBSD ports:
1594 1598 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1595 1599 work.
1596 1600
1597 1601 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1598 1602
1599 1603 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1600 1604 so that it doesn't break tkinter apps.
1601 1605
1602 1606 * IPython/iplib.py (_prefilter): fix bug where aliases would
1603 1607 shadow variables when autocall was fully off. Reported by SAGE
1604 1608 author William Stein.
1605 1609
1606 1610 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1607 1611 at what detail level strings are computed when foo? is requested.
1608 1612 This allows users to ask for example that the string form of an
1609 1613 object is only computed when foo?? is called, or even never, by
1610 1614 setting the object_info_string_level >= 2 in the configuration
1611 1615 file. This new option has been added and documented. After a
1612 1616 request by SAGE to be able to control the printing of very large
1613 1617 objects more easily.
1614 1618
1615 1619 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1616 1620
1617 1621 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1618 1622 from sys.argv, to be 100% consistent with how Python itself works
1619 1623 (as seen for example with python -i file.py). After a bug report
1620 1624 by Jeffrey Collins.
1621 1625
1622 1626 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1623 1627 nasty bug which was preventing custom namespaces with -pylab,
1624 1628 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1625 1629 compatibility (long gone from mpl).
1626 1630
1627 1631 * IPython/ipapi.py (make_session): name change: create->make. We
1628 1632 use make in other places (ipmaker,...), it's shorter and easier to
1629 1633 type and say, etc. I'm trying to clean things before 0.7.2 so
1630 1634 that I can keep things stable wrt to ipapi in the chainsaw branch.
1631 1635
1632 1636 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1633 1637 python-mode recognizes our debugger mode. Add support for
1634 1638 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1635 1639 <m.liu.jin-AT-gmail.com> originally written by
1636 1640 doxgen-AT-newsmth.net (with minor modifications for xemacs
1637 1641 compatibility)
1638 1642
1639 1643 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1640 1644 tracebacks when walking the stack so that the stack tracking system
1641 1645 in emacs' python-mode can identify the frames correctly.
1642 1646
1643 1647 * IPython/ipmaker.py (make_IPython): make the internal (and
1644 1648 default config) autoedit_syntax value false by default. Too many
1645 1649 users have complained to me (both on and off-list) about problems
1646 1650 with this option being on by default, so I'm making it default to
1647 1651 off. It can still be enabled by anyone via the usual mechanisms.
1648 1652
1649 1653 * IPython/completer.py (Completer.attr_matches): add support for
1650 1654 PyCrust-style _getAttributeNames magic method. Patch contributed
1651 1655 by <mscott-AT-goldenspud.com>. Closes #50.
1652 1656
1653 1657 * IPython/iplib.py (InteractiveShell.__init__): remove the
1654 1658 deletion of exit/quit from __builtin__, which can break
1655 1659 third-party tools like the Zope debugging console. The
1656 1660 %exit/%quit magics remain. In general, it's probably a good idea
1657 1661 not to delete anything from __builtin__, since we never know what
1658 1662 that will break. In any case, python now (for 2.5) will support
1659 1663 'real' exit/quit, so this issue is moot. Closes #55.
1660 1664
1661 1665 * IPython/genutils.py (with_obj): rename the 'with' function to
1662 1666 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1663 1667 becomes a language keyword. Closes #53.
1664 1668
1665 1669 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1666 1670 __file__ attribute to this so it fools more things into thinking
1667 1671 it is a real module. Closes #59.
1668 1672
1669 1673 * IPython/Magic.py (magic_edit): add -n option to open the editor
1670 1674 at a specific line number. After a patch by Stefan van der Walt.
1671 1675
1672 1676 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1673 1677
1674 1678 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1675 1679 reason the file could not be opened. After automatic crash
1676 1680 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1677 1681 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1678 1682 (_should_recompile): Don't fire editor if using %bg, since there
1679 1683 is no file in the first place. From the same report as above.
1680 1684 (raw_input): protect against faulty third-party prefilters. After
1681 1685 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1682 1686 while running under SAGE.
1683 1687
1684 1688 2006-05-23 Ville Vainio <vivainio@gmail.com>
1685 1689
1686 1690 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1687 1691 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1688 1692 now returns None (again), unless dummy is specifically allowed by
1689 1693 ipapi.get(allow_dummy=True).
1690 1694
1691 1695 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1692 1696
1693 1697 * IPython: remove all 2.2-compatibility objects and hacks from
1694 1698 everywhere, since we only support 2.3 at this point. Docs
1695 1699 updated.
1696 1700
1697 1701 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1698 1702 Anything requiring extra validation can be turned into a Python
1699 1703 property in the future. I used a property for the db one b/c
1700 1704 there was a nasty circularity problem with the initialization
1701 1705 order, which right now I don't have time to clean up.
1702 1706
1703 1707 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1704 1708 another locking bug reported by Jorgen. I'm not 100% sure though,
1705 1709 so more testing is needed...
1706 1710
1707 1711 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1708 1712
1709 1713 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1710 1714 local variables from any routine in user code (typically executed
1711 1715 with %run) directly into the interactive namespace. Very useful
1712 1716 when doing complex debugging.
1713 1717 (IPythonNotRunning): Changed the default None object to a dummy
1714 1718 whose attributes can be queried as well as called without
1715 1719 exploding, to ease writing code which works transparently both in
1716 1720 and out of ipython and uses some of this API.
1717 1721
1718 1722 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1719 1723
1720 1724 * IPython/hooks.py (result_display): Fix the fact that our display
1721 1725 hook was using str() instead of repr(), as the default python
1722 1726 console does. This had gone unnoticed b/c it only happened if
1723 1727 %Pprint was off, but the inconsistency was there.
1724 1728
1725 1729 2006-05-15 Ville Vainio <vivainio@gmail.com>
1726 1730
1727 1731 * Oinspect.py: Only show docstring for nonexisting/binary files
1728 1732 when doing object??, closing ticket #62
1729 1733
1730 1734 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1731 1735
1732 1736 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1733 1737 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1734 1738 was being released in a routine which hadn't checked if it had
1735 1739 been the one to acquire it.
1736 1740
1737 1741 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1738 1742
1739 1743 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1740 1744
1741 1745 2006-04-11 Ville Vainio <vivainio@gmail.com>
1742 1746
1743 1747 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1744 1748 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1745 1749 prefilters, allowing stuff like magics and aliases in the file.
1746 1750
1747 1751 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1748 1752 added. Supported now are "%clear in" and "%clear out" (clear input and
1749 1753 output history, respectively). Also fixed CachedOutput.flush to
1750 1754 properly flush the output cache.
1751 1755
1752 1756 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1753 1757 half-success (and fail explicitly).
1754 1758
1755 1759 2006-03-28 Ville Vainio <vivainio@gmail.com>
1756 1760
1757 1761 * iplib.py: Fix quoting of aliases so that only argless ones
1758 1762 are quoted
1759 1763
1760 1764 2006-03-28 Ville Vainio <vivainio@gmail.com>
1761 1765
1762 1766 * iplib.py: Quote aliases with spaces in the name.
1763 1767 "c:\program files\blah\bin" is now legal alias target.
1764 1768
1765 1769 * ext_rehashdir.py: Space no longer allowed as arg
1766 1770 separator, since space is legal in path names.
1767 1771
1768 1772 2006-03-16 Ville Vainio <vivainio@gmail.com>
1769 1773
1770 1774 * upgrade_dir.py: Take path.py from Extensions, correcting
1771 1775 %upgrade magic
1772 1776
1773 1777 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1774 1778
1775 1779 * hooks.py: Only enclose editor binary in quotes if legal and
1776 1780 necessary (space in the name, and is an existing file). Fixes a bug
1777 1781 reported by Zachary Pincus.
1778 1782
1779 1783 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1780 1784
1781 1785 * Manual: thanks to a tip on proper color handling for Emacs, by
1782 1786 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1783 1787
1784 1788 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1785 1789 by applying the provided patch. Thanks to Liu Jin
1786 1790 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1787 1791 XEmacs/Linux, I'm trusting the submitter that it actually helps
1788 1792 under win32/GNU Emacs. Will revisit if any problems are reported.
1789 1793
1790 1794 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1791 1795
1792 1796 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1793 1797 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1794 1798
1795 1799 2006-03-12 Ville Vainio <vivainio@gmail.com>
1796 1800
1797 1801 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1798 1802 Torsten Marek.
1799 1803
1800 1804 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1801 1805
1802 1806 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1803 1807 line ranges works again.
1804 1808
1805 1809 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1806 1810
1807 1811 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1808 1812 and friends, after a discussion with Zach Pincus on ipython-user.
1809 1813 I'm not 100% sure, but after thinking about it quite a bit, it may
1810 1814 be OK. Testing with the multithreaded shells didn't reveal any
1811 1815 problems, but let's keep an eye out.
1812 1816
1813 1817 In the process, I fixed a few things which were calling
1814 1818 self.InteractiveTB() directly (like safe_execfile), which is a
1815 1819 mistake: ALL exception reporting should be done by calling
1816 1820 self.showtraceback(), which handles state and tab-completion and
1817 1821 more.
1818 1822
1819 1823 2006-03-01 Ville Vainio <vivainio@gmail.com>
1820 1824
1821 1825 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1822 1826 To use, do "from ipipe import *".
1823 1827
1824 1828 2006-02-24 Ville Vainio <vivainio@gmail.com>
1825 1829
1826 1830 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1827 1831 "cleanly" and safely than the older upgrade mechanism.
1828 1832
1829 1833 2006-02-21 Ville Vainio <vivainio@gmail.com>
1830 1834
1831 1835 * Magic.py: %save works again.
1832 1836
1833 1837 2006-02-15 Ville Vainio <vivainio@gmail.com>
1834 1838
1835 1839 * Magic.py: %Pprint works again
1836 1840
1837 1841 * Extensions/ipy_sane_defaults.py: Provide everything provided
1838 1842 in default ipythonrc, to make it possible to have a completely empty
1839 1843 ipythonrc (and thus completely rc-file free configuration)
1840 1844
1841 1845 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1842 1846
1843 1847 * IPython/hooks.py (editor): quote the call to the editor command,
1844 1848 to allow commands with spaces in them. Problem noted by watching
1845 1849 Ian Oswald's video about textpad under win32 at
1846 1850 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1847 1851
1848 1852 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1849 1853 describing magics (we haven't used @ for a loong time).
1850 1854
1851 1855 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1852 1856 contributed by marienz to close
1853 1857 http://www.scipy.net/roundup/ipython/issue53.
1854 1858
1855 1859 2006-02-10 Ville Vainio <vivainio@gmail.com>
1856 1860
1857 1861 * genutils.py: getoutput now works in win32 too
1858 1862
1859 1863 * completer.py: alias and magic completion only invoked
1860 1864 at the first "item" in the line, to avoid "cd %store"
1861 1865 nonsense.
1862 1866
1863 1867 2006-02-09 Ville Vainio <vivainio@gmail.com>
1864 1868
1865 1869 * test/*: Added a unit testing framework (finally).
1866 1870 '%run runtests.py' to run test_*.
1867 1871
1868 1872 * ipapi.py: Exposed runlines and set_custom_exc
1869 1873
1870 1874 2006-02-07 Ville Vainio <vivainio@gmail.com>
1871 1875
1872 1876 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1873 1877 instead use "f(1 2)" as before.
1874 1878
1875 1879 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1876 1880
1877 1881 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1878 1882 facilities, for demos processed by the IPython input filter
1879 1883 (IPythonDemo), and for running a script one-line-at-a-time as a
1880 1884 demo, both for pure Python (LineDemo) and for IPython-processed
1881 1885 input (IPythonLineDemo). After a request by Dave Kohel, from the
1882 1886 SAGE team.
1883 1887 (Demo.edit): added an edit() method to the demo objects, to edit
1884 1888 the in-memory copy of the last executed block.
1885 1889
1886 1890 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1887 1891 processing to %edit, %macro and %save. These commands can now be
1888 1892 invoked on the unprocessed input as it was typed by the user
1889 1893 (without any prefilters applied). After requests by the SAGE team
1890 1894 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1891 1895
1892 1896 2006-02-01 Ville Vainio <vivainio@gmail.com>
1893 1897
1894 1898 * setup.py, eggsetup.py: easy_install ipython==dev works
1895 1899 correctly now (on Linux)
1896 1900
1897 1901 * ipy_user_conf,ipmaker: user config changes, removed spurious
1898 1902 warnings
1899 1903
1900 1904 * iplib: if rc.banner is string, use it as is.
1901 1905
1902 1906 * Magic: %pycat accepts a string argument and pages it's contents.
1903 1907
1904 1908
1905 1909 2006-01-30 Ville Vainio <vivainio@gmail.com>
1906 1910
1907 1911 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1908 1912 Now %store and bookmarks work through PickleShare, meaning that
1909 1913 concurrent access is possible and all ipython sessions see the
1910 1914 same database situation all the time, instead of snapshot of
1911 1915 the situation when the session was started. Hence, %bookmark
1912 1916 results are immediately accessible from othes sessions. The database
1913 1917 is also available for use by user extensions. See:
1914 1918 http://www.python.org/pypi/pickleshare
1915 1919
1916 1920 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1917 1921
1918 1922 * aliases can now be %store'd
1919 1923
1920 1924 * path.py moved to Extensions so that pickleshare does not need
1921 1925 IPython-specific import. Extensions added to pythonpath right
1922 1926 at __init__.
1923 1927
1924 1928 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1925 1929 called with _ip.system and the pre-transformed command string.
1926 1930
1927 1931 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1928 1932
1929 1933 * IPython/iplib.py (interact): Fix that we were not catching
1930 1934 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1931 1935 logic here had to change, but it's fixed now.
1932 1936
1933 1937 2006-01-29 Ville Vainio <vivainio@gmail.com>
1934 1938
1935 1939 * iplib.py: Try to import pyreadline on Windows.
1936 1940
1937 1941 2006-01-27 Ville Vainio <vivainio@gmail.com>
1938 1942
1939 1943 * iplib.py: Expose ipapi as _ip in builtin namespace.
1940 1944 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1941 1945 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1942 1946 syntax now produce _ip.* variant of the commands.
1943 1947
1944 1948 * "_ip.options().autoedit_syntax = 2" automatically throws
1945 1949 user to editor for syntax error correction without prompting.
1946 1950
1947 1951 2006-01-27 Ville Vainio <vivainio@gmail.com>
1948 1952
1949 1953 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1950 1954 'ipython' at argv[0]) executed through command line.
1951 1955 NOTE: this DEPRECATES calling ipython with multiple scripts
1952 1956 ("ipython a.py b.py c.py")
1953 1957
1954 1958 * iplib.py, hooks.py: Added configurable input prefilter,
1955 1959 named 'input_prefilter'. See ext_rescapture.py for example
1956 1960 usage.
1957 1961
1958 1962 * ext_rescapture.py, Magic.py: Better system command output capture
1959 1963 through 'var = !ls' (deprecates user-visible %sc). Same notation
1960 1964 applies for magics, 'var = %alias' assigns alias list to var.
1961 1965
1962 1966 * ipapi.py: added meta() for accessing extension-usable data store.
1963 1967
1964 1968 * iplib.py: added InteractiveShell.getapi(). New magics should be
1965 1969 written doing self.getapi() instead of using the shell directly.
1966 1970
1967 1971 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1968 1972 %store foo >> ~/myfoo.txt to store variables to files (in clean
1969 1973 textual form, not a restorable pickle).
1970 1974
1971 1975 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1972 1976
1973 1977 * usage.py, Magic.py: added %quickref
1974 1978
1975 1979 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1976 1980
1977 1981 * GetoptErrors when invoking magics etc. with wrong args
1978 1982 are now more helpful:
1979 1983 GetoptError: option -l not recognized (allowed: "qb" )
1980 1984
1981 1985 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1982 1986
1983 1987 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1984 1988 computationally intensive blocks don't appear to stall the demo.
1985 1989
1986 1990 2006-01-24 Ville Vainio <vivainio@gmail.com>
1987 1991
1988 1992 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1989 1993 value to manipulate resulting history entry.
1990 1994
1991 1995 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1992 1996 to instance methods of IPApi class, to make extending an embedded
1993 1997 IPython feasible. See ext_rehashdir.py for example usage.
1994 1998
1995 1999 * Merged 1071-1076 from branches/0.7.1
1996 2000
1997 2001
1998 2002 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1999 2003
2000 2004 * tools/release (daystamp): Fix build tools to use the new
2001 2005 eggsetup.py script to build lightweight eggs.
2002 2006
2003 2007 * Applied changesets 1062 and 1064 before 0.7.1 release.
2004 2008
2005 2009 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2006 2010 see the raw input history (without conversions like %ls ->
2007 2011 ipmagic("ls")). After a request from W. Stein, SAGE
2008 2012 (http://modular.ucsd.edu/sage) developer. This information is
2009 2013 stored in the input_hist_raw attribute of the IPython instance, so
2010 2014 developers can access it if needed (it's an InputList instance).
2011 2015
2012 2016 * Versionstring = 0.7.2.svn
2013 2017
2014 2018 * eggsetup.py: A separate script for constructing eggs, creates
2015 2019 proper launch scripts even on Windows (an .exe file in
2016 2020 \python24\scripts).
2017 2021
2018 2022 * ipapi.py: launch_new_instance, launch entry point needed for the
2019 2023 egg.
2020 2024
2021 2025 2006-01-23 Ville Vainio <vivainio@gmail.com>
2022 2026
2023 2027 * Added %cpaste magic for pasting python code
2024 2028
2025 2029 2006-01-22 Ville Vainio <vivainio@gmail.com>
2026 2030
2027 2031 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2028 2032
2029 2033 * Versionstring = 0.7.2.svn
2030 2034
2031 2035 * eggsetup.py: A separate script for constructing eggs, creates
2032 2036 proper launch scripts even on Windows (an .exe file in
2033 2037 \python24\scripts).
2034 2038
2035 2039 * ipapi.py: launch_new_instance, launch entry point needed for the
2036 2040 egg.
2037 2041
2038 2042 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2039 2043
2040 2044 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2041 2045 %pfile foo would print the file for foo even if it was a binary.
2042 2046 Now, extensions '.so' and '.dll' are skipped.
2043 2047
2044 2048 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2045 2049 bug, where macros would fail in all threaded modes. I'm not 100%
2046 2050 sure, so I'm going to put out an rc instead of making a release
2047 2051 today, and wait for feedback for at least a few days.
2048 2052
2049 2053 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2050 2054 it...) the handling of pasting external code with autoindent on.
2051 2055 To get out of a multiline input, the rule will appear for most
2052 2056 users unchanged: two blank lines or change the indent level
2053 2057 proposed by IPython. But there is a twist now: you can
2054 2058 add/subtract only *one or two spaces*. If you add/subtract three
2055 2059 or more (unless you completely delete the line), IPython will
2056 2060 accept that line, and you'll need to enter a second one of pure
2057 2061 whitespace. I know it sounds complicated, but I can't find a
2058 2062 different solution that covers all the cases, with the right
2059 2063 heuristics. Hopefully in actual use, nobody will really notice
2060 2064 all these strange rules and things will 'just work'.
2061 2065
2062 2066 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2063 2067
2064 2068 * IPython/iplib.py (interact): catch exceptions which can be
2065 2069 triggered asynchronously by signal handlers. Thanks to an
2066 2070 automatic crash report, submitted by Colin Kingsley
2067 2071 <tercel-AT-gentoo.org>.
2068 2072
2069 2073 2006-01-20 Ville Vainio <vivainio@gmail.com>
2070 2074
2071 2075 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2072 2076 (%rehashdir, very useful, try it out) of how to extend ipython
2073 2077 with new magics. Also added Extensions dir to pythonpath to make
2074 2078 importing extensions easy.
2075 2079
2076 2080 * %store now complains when trying to store interactively declared
2077 2081 classes / instances of those classes.
2078 2082
2079 2083 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2080 2084 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2081 2085 if they exist, and ipy_user_conf.py with some defaults is created for
2082 2086 the user.
2083 2087
2084 2088 * Startup rehashing done by the config file, not InterpreterExec.
2085 2089 This means system commands are available even without selecting the
2086 2090 pysh profile. It's the sensible default after all.
2087 2091
2088 2092 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2089 2093
2090 2094 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2091 2095 multiline code with autoindent on working. But I am really not
2092 2096 sure, so this needs more testing. Will commit a debug-enabled
2093 2097 version for now, while I test it some more, so that Ville and
2094 2098 others may also catch any problems. Also made
2095 2099 self.indent_current_str() a method, to ensure that there's no
2096 2100 chance of the indent space count and the corresponding string
2097 2101 falling out of sync. All code needing the string should just call
2098 2102 the method.
2099 2103
2100 2104 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2101 2105
2102 2106 * IPython/Magic.py (magic_edit): fix check for when users don't
2103 2107 save their output files, the try/except was in the wrong section.
2104 2108
2105 2109 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2106 2110
2107 2111 * IPython/Magic.py (magic_run): fix __file__ global missing from
2108 2112 script's namespace when executed via %run. After a report by
2109 2113 Vivian.
2110 2114
2111 2115 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2112 2116 when using python 2.4. The parent constructor changed in 2.4, and
2113 2117 we need to track it directly (we can't call it, as it messes up
2114 2118 readline and tab-completion inside our pdb would stop working).
2115 2119 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2116 2120
2117 2121 2006-01-16 Ville Vainio <vivainio@gmail.com>
2118 2122
2119 2123 * Ipython/magic.py: Reverted back to old %edit functionality
2120 2124 that returns file contents on exit.
2121 2125
2122 2126 * IPython/path.py: Added Jason Orendorff's "path" module to
2123 2127 IPython tree, http://www.jorendorff.com/articles/python/path/.
2124 2128 You can get path objects conveniently through %sc, and !!, e.g.:
2125 2129 sc files=ls
2126 2130 for p in files.paths: # or files.p
2127 2131 print p,p.mtime
2128 2132
2129 2133 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2130 2134 now work again without considering the exclusion regexp -
2131 2135 hence, things like ',foo my/path' turn to 'foo("my/path")'
2132 2136 instead of syntax error.
2133 2137
2134 2138
2135 2139 2006-01-14 Ville Vainio <vivainio@gmail.com>
2136 2140
2137 2141 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2138 2142 ipapi decorators for python 2.4 users, options() provides access to rc
2139 2143 data.
2140 2144
2141 2145 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2142 2146 as path separators (even on Linux ;-). Space character after
2143 2147 backslash (as yielded by tab completer) is still space;
2144 2148 "%cd long\ name" works as expected.
2145 2149
2146 2150 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2147 2151 as "chain of command", with priority. API stays the same,
2148 2152 TryNext exception raised by a hook function signals that
2149 2153 current hook failed and next hook should try handling it, as
2150 2154 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2151 2155 requested configurable display hook, which is now implemented.
2152 2156
2153 2157 2006-01-13 Ville Vainio <vivainio@gmail.com>
2154 2158
2155 2159 * IPython/platutils*.py: platform specific utility functions,
2156 2160 so far only set_term_title is implemented (change terminal
2157 2161 label in windowing systems). %cd now changes the title to
2158 2162 current dir.
2159 2163
2160 2164 * IPython/Release.py: Added myself to "authors" list,
2161 2165 had to create new files.
2162 2166
2163 2167 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2164 2168 shell escape; not a known bug but had potential to be one in the
2165 2169 future.
2166 2170
2167 2171 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2168 2172 extension API for IPython! See the module for usage example. Fix
2169 2173 OInspect for docstring-less magic functions.
2170 2174
2171 2175
2172 2176 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2173 2177
2174 2178 * IPython/iplib.py (raw_input): temporarily deactivate all
2175 2179 attempts at allowing pasting of code with autoindent on. It
2176 2180 introduced bugs (reported by Prabhu) and I can't seem to find a
2177 2181 robust combination which works in all cases. Will have to revisit
2178 2182 later.
2179 2183
2180 2184 * IPython/genutils.py: remove isspace() function. We've dropped
2181 2185 2.2 compatibility, so it's OK to use the string method.
2182 2186
2183 2187 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2184 2188
2185 2189 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2186 2190 matching what NOT to autocall on, to include all python binary
2187 2191 operators (including things like 'and', 'or', 'is' and 'in').
2188 2192 Prompted by a bug report on 'foo & bar', but I realized we had
2189 2193 many more potential bug cases with other operators. The regexp is
2190 2194 self.re_exclude_auto, it's fairly commented.
2191 2195
2192 2196 2006-01-12 Ville Vainio <vivainio@gmail.com>
2193 2197
2194 2198 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2195 2199 Prettified and hardened string/backslash quoting with ipsystem(),
2196 2200 ipalias() and ipmagic(). Now even \ characters are passed to
2197 2201 %magics, !shell escapes and aliases exactly as they are in the
2198 2202 ipython command line. Should improve backslash experience,
2199 2203 particularly in Windows (path delimiter for some commands that
2200 2204 won't understand '/'), but Unix benefits as well (regexps). %cd
2201 2205 magic still doesn't support backslash path delimiters, though. Also
2202 2206 deleted all pretense of supporting multiline command strings in
2203 2207 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2204 2208
2205 2209 * doc/build_doc_instructions.txt added. Documentation on how to
2206 2210 use doc/update_manual.py, added yesterday. Both files contributed
2207 2211 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2208 2212 doc/*.sh for deprecation at a later date.
2209 2213
2210 2214 * /ipython.py Added ipython.py to root directory for
2211 2215 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2212 2216 ipython.py) and development convenience (no need to keep doing
2213 2217 "setup.py install" between changes).
2214 2218
2215 2219 * Made ! and !! shell escapes work (again) in multiline expressions:
2216 2220 if 1:
2217 2221 !ls
2218 2222 !!ls
2219 2223
2220 2224 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2221 2225
2222 2226 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2223 2227 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2224 2228 module in case-insensitive installation. Was causing crashes
2225 2229 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2226 2230
2227 2231 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2228 2232 <marienz-AT-gentoo.org>, closes
2229 2233 http://www.scipy.net/roundup/ipython/issue51.
2230 2234
2231 2235 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2232 2236
2233 2237 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2234 2238 problem of excessive CPU usage under *nix and keyboard lag under
2235 2239 win32.
2236 2240
2237 2241 2006-01-10 *** Released version 0.7.0
2238 2242
2239 2243 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2240 2244
2241 2245 * IPython/Release.py (revision): tag version number to 0.7.0,
2242 2246 ready for release.
2243 2247
2244 2248 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2245 2249 it informs the user of the name of the temp. file used. This can
2246 2250 help if you decide later to reuse that same file, so you know
2247 2251 where to copy the info from.
2248 2252
2249 2253 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2250 2254
2251 2255 * setup_bdist_egg.py: little script to build an egg. Added
2252 2256 support in the release tools as well.
2253 2257
2254 2258 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2255 2259
2256 2260 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2257 2261 version selection (new -wxversion command line and ipythonrc
2258 2262 parameter). Patch contributed by Arnd Baecker
2259 2263 <arnd.baecker-AT-web.de>.
2260 2264
2261 2265 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2262 2266 embedded instances, for variables defined at the interactive
2263 2267 prompt of the embedded ipython. Reported by Arnd.
2264 2268
2265 2269 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2266 2270 it can be used as a (stateful) toggle, or with a direct parameter.
2267 2271
2268 2272 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2269 2273 could be triggered in certain cases and cause the traceback
2270 2274 printer not to work.
2271 2275
2272 2276 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2273 2277
2274 2278 * IPython/iplib.py (_should_recompile): Small fix, closes
2275 2279 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2276 2280
2277 2281 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2278 2282
2279 2283 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2280 2284 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2281 2285 Moad for help with tracking it down.
2282 2286
2283 2287 * IPython/iplib.py (handle_auto): fix autocall handling for
2284 2288 objects which support BOTH __getitem__ and __call__ (so that f [x]
2285 2289 is left alone, instead of becoming f([x]) automatically).
2286 2290
2287 2291 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2288 2292 Ville's patch.
2289 2293
2290 2294 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2291 2295
2292 2296 * IPython/iplib.py (handle_auto): changed autocall semantics to
2293 2297 include 'smart' mode, where the autocall transformation is NOT
2294 2298 applied if there are no arguments on the line. This allows you to
2295 2299 just type 'foo' if foo is a callable to see its internal form,
2296 2300 instead of having it called with no arguments (typically a
2297 2301 mistake). The old 'full' autocall still exists: for that, you
2298 2302 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2299 2303
2300 2304 * IPython/completer.py (Completer.attr_matches): add
2301 2305 tab-completion support for Enthoughts' traits. After a report by
2302 2306 Arnd and a patch by Prabhu.
2303 2307
2304 2308 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2305 2309
2306 2310 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2307 2311 Schmolck's patch to fix inspect.getinnerframes().
2308 2312
2309 2313 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2310 2314 for embedded instances, regarding handling of namespaces and items
2311 2315 added to the __builtin__ one. Multiple embedded instances and
2312 2316 recursive embeddings should work better now (though I'm not sure
2313 2317 I've got all the corner cases fixed, that code is a bit of a brain
2314 2318 twister).
2315 2319
2316 2320 * IPython/Magic.py (magic_edit): added support to edit in-memory
2317 2321 macros (automatically creates the necessary temp files). %edit
2318 2322 also doesn't return the file contents anymore, it's just noise.
2319 2323
2320 2324 * IPython/completer.py (Completer.attr_matches): revert change to
2321 2325 complete only on attributes listed in __all__. I realized it
2322 2326 cripples the tab-completion system as a tool for exploring the
2323 2327 internals of unknown libraries (it renders any non-__all__
2324 2328 attribute off-limits). I got bit by this when trying to see
2325 2329 something inside the dis module.
2326 2330
2327 2331 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2328 2332
2329 2333 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2330 2334 namespace for users and extension writers to hold data in. This
2331 2335 follows the discussion in
2332 2336 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2333 2337
2334 2338 * IPython/completer.py (IPCompleter.complete): small patch to help
2335 2339 tab-completion under Emacs, after a suggestion by John Barnard
2336 2340 <barnarj-AT-ccf.org>.
2337 2341
2338 2342 * IPython/Magic.py (Magic.extract_input_slices): added support for
2339 2343 the slice notation in magics to use N-M to represent numbers N...M
2340 2344 (closed endpoints). This is used by %macro and %save.
2341 2345
2342 2346 * IPython/completer.py (Completer.attr_matches): for modules which
2343 2347 define __all__, complete only on those. After a patch by Jeffrey
2344 2348 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2345 2349 speed up this routine.
2346 2350
2347 2351 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2348 2352 don't know if this is the end of it, but the behavior now is
2349 2353 certainly much more correct. Note that coupled with macros,
2350 2354 slightly surprising (at first) behavior may occur: a macro will in
2351 2355 general expand to multiple lines of input, so upon exiting, the
2352 2356 in/out counters will both be bumped by the corresponding amount
2353 2357 (as if the macro's contents had been typed interactively). Typing
2354 2358 %hist will reveal the intermediate (silently processed) lines.
2355 2359
2356 2360 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2357 2361 pickle to fail (%run was overwriting __main__ and not restoring
2358 2362 it, but pickle relies on __main__ to operate).
2359 2363
2360 2364 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2361 2365 using properties, but forgot to make the main InteractiveShell
2362 2366 class a new-style class. Properties fail silently, and
2363 2367 mysteriously, with old-style class (getters work, but
2364 2368 setters don't do anything).
2365 2369
2366 2370 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2367 2371
2368 2372 * IPython/Magic.py (magic_history): fix history reporting bug (I
2369 2373 know some nasties are still there, I just can't seem to find a
2370 2374 reproducible test case to track them down; the input history is
2371 2375 falling out of sync...)
2372 2376
2373 2377 * IPython/iplib.py (handle_shell_escape): fix bug where both
2374 2378 aliases and system accesses where broken for indented code (such
2375 2379 as loops).
2376 2380
2377 2381 * IPython/genutils.py (shell): fix small but critical bug for
2378 2382 win32 system access.
2379 2383
2380 2384 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2381 2385
2382 2386 * IPython/iplib.py (showtraceback): remove use of the
2383 2387 sys.last_{type/value/traceback} structures, which are non
2384 2388 thread-safe.
2385 2389 (_prefilter): change control flow to ensure that we NEVER
2386 2390 introspect objects when autocall is off. This will guarantee that
2387 2391 having an input line of the form 'x.y', where access to attribute
2388 2392 'y' has side effects, doesn't trigger the side effect TWICE. It
2389 2393 is important to note that, with autocall on, these side effects
2390 2394 can still happen.
2391 2395 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2392 2396 trio. IPython offers these three kinds of special calls which are
2393 2397 not python code, and it's a good thing to have their call method
2394 2398 be accessible as pure python functions (not just special syntax at
2395 2399 the command line). It gives us a better internal implementation
2396 2400 structure, as well as exposing these for user scripting more
2397 2401 cleanly.
2398 2402
2399 2403 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2400 2404 file. Now that they'll be more likely to be used with the
2401 2405 persistance system (%store), I want to make sure their module path
2402 2406 doesn't change in the future, so that we don't break things for
2403 2407 users' persisted data.
2404 2408
2405 2409 * IPython/iplib.py (autoindent_update): move indentation
2406 2410 management into the _text_ processing loop, not the keyboard
2407 2411 interactive one. This is necessary to correctly process non-typed
2408 2412 multiline input (such as macros).
2409 2413
2410 2414 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2411 2415 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2412 2416 which was producing problems in the resulting manual.
2413 2417 (magic_whos): improve reporting of instances (show their class,
2414 2418 instead of simply printing 'instance' which isn't terribly
2415 2419 informative).
2416 2420
2417 2421 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2418 2422 (minor mods) to support network shares under win32.
2419 2423
2420 2424 * IPython/winconsole.py (get_console_size): add new winconsole
2421 2425 module and fixes to page_dumb() to improve its behavior under
2422 2426 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2423 2427
2424 2428 * IPython/Magic.py (Macro): simplified Macro class to just
2425 2429 subclass list. We've had only 2.2 compatibility for a very long
2426 2430 time, yet I was still avoiding subclassing the builtin types. No
2427 2431 more (I'm also starting to use properties, though I won't shift to
2428 2432 2.3-specific features quite yet).
2429 2433 (magic_store): added Ville's patch for lightweight variable
2430 2434 persistence, after a request on the user list by Matt Wilkie
2431 2435 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2432 2436 details.
2433 2437
2434 2438 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2435 2439 changed the default logfile name from 'ipython.log' to
2436 2440 'ipython_log.py'. These logs are real python files, and now that
2437 2441 we have much better multiline support, people are more likely to
2438 2442 want to use them as such. Might as well name them correctly.
2439 2443
2440 2444 * IPython/Magic.py: substantial cleanup. While we can't stop
2441 2445 using magics as mixins, due to the existing customizations 'out
2442 2446 there' which rely on the mixin naming conventions, at least I
2443 2447 cleaned out all cross-class name usage. So once we are OK with
2444 2448 breaking compatibility, the two systems can be separated.
2445 2449
2446 2450 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2447 2451 anymore, and the class is a fair bit less hideous as well. New
2448 2452 features were also introduced: timestamping of input, and logging
2449 2453 of output results. These are user-visible with the -t and -o
2450 2454 options to %logstart. Closes
2451 2455 http://www.scipy.net/roundup/ipython/issue11 and a request by
2452 2456 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2453 2457
2454 2458 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2455 2459
2456 2460 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2457 2461 better handle backslashes in paths. See the thread 'More Windows
2458 2462 questions part 2 - \/ characters revisited' on the iypthon user
2459 2463 list:
2460 2464 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2461 2465
2462 2466 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2463 2467
2464 2468 (InteractiveShell.__init__): change threaded shells to not use the
2465 2469 ipython crash handler. This was causing more problems than not,
2466 2470 as exceptions in the main thread (GUI code, typically) would
2467 2471 always show up as a 'crash', when they really weren't.
2468 2472
2469 2473 The colors and exception mode commands (%colors/%xmode) have been
2470 2474 synchronized to also take this into account, so users can get
2471 2475 verbose exceptions for their threaded code as well. I also added
2472 2476 support for activating pdb inside this exception handler as well,
2473 2477 so now GUI authors can use IPython's enhanced pdb at runtime.
2474 2478
2475 2479 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2476 2480 true by default, and add it to the shipped ipythonrc file. Since
2477 2481 this asks the user before proceeding, I think it's OK to make it
2478 2482 true by default.
2479 2483
2480 2484 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2481 2485 of the previous special-casing of input in the eval loop. I think
2482 2486 this is cleaner, as they really are commands and shouldn't have
2483 2487 a special role in the middle of the core code.
2484 2488
2485 2489 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2486 2490
2487 2491 * IPython/iplib.py (edit_syntax_error): added support for
2488 2492 automatically reopening the editor if the file had a syntax error
2489 2493 in it. Thanks to scottt who provided the patch at:
2490 2494 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2491 2495 version committed).
2492 2496
2493 2497 * IPython/iplib.py (handle_normal): add suport for multi-line
2494 2498 input with emtpy lines. This fixes
2495 2499 http://www.scipy.net/roundup/ipython/issue43 and a similar
2496 2500 discussion on the user list.
2497 2501
2498 2502 WARNING: a behavior change is necessarily introduced to support
2499 2503 blank lines: now a single blank line with whitespace does NOT
2500 2504 break the input loop, which means that when autoindent is on, by
2501 2505 default hitting return on the next (indented) line does NOT exit.
2502 2506
2503 2507 Instead, to exit a multiline input you can either have:
2504 2508
2505 2509 - TWO whitespace lines (just hit return again), or
2506 2510 - a single whitespace line of a different length than provided
2507 2511 by the autoindent (add or remove a space).
2508 2512
2509 2513 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2510 2514 module to better organize all readline-related functionality.
2511 2515 I've deleted FlexCompleter and put all completion clases here.
2512 2516
2513 2517 * IPython/iplib.py (raw_input): improve indentation management.
2514 2518 It is now possible to paste indented code with autoindent on, and
2515 2519 the code is interpreted correctly (though it still looks bad on
2516 2520 screen, due to the line-oriented nature of ipython).
2517 2521 (MagicCompleter.complete): change behavior so that a TAB key on an
2518 2522 otherwise empty line actually inserts a tab, instead of completing
2519 2523 on the entire global namespace. This makes it easier to use the
2520 2524 TAB key for indentation. After a request by Hans Meine
2521 2525 <hans_meine-AT-gmx.net>
2522 2526 (_prefilter): add support so that typing plain 'exit' or 'quit'
2523 2527 does a sensible thing. Originally I tried to deviate as little as
2524 2528 possible from the default python behavior, but even that one may
2525 2529 change in this direction (thread on python-dev to that effect).
2526 2530 Regardless, ipython should do the right thing even if CPython's
2527 2531 '>>>' prompt doesn't.
2528 2532 (InteractiveShell): removed subclassing code.InteractiveConsole
2529 2533 class. By now we'd overridden just about all of its methods: I've
2530 2534 copied the remaining two over, and now ipython is a standalone
2531 2535 class. This will provide a clearer picture for the chainsaw
2532 2536 branch refactoring.
2533 2537
2534 2538 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2535 2539
2536 2540 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2537 2541 failures for objects which break when dir() is called on them.
2538 2542
2539 2543 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2540 2544 distinct local and global namespaces in the completer API. This
2541 2545 change allows us to properly handle completion with distinct
2542 2546 scopes, including in embedded instances (this had never really
2543 2547 worked correctly).
2544 2548
2545 2549 Note: this introduces a change in the constructor for
2546 2550 MagicCompleter, as a new global_namespace parameter is now the
2547 2551 second argument (the others were bumped one position).
2548 2552
2549 2553 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2550 2554
2551 2555 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2552 2556 embedded instances (which can be done now thanks to Vivian's
2553 2557 frame-handling fixes for pdb).
2554 2558 (InteractiveShell.__init__): Fix namespace handling problem in
2555 2559 embedded instances. We were overwriting __main__ unconditionally,
2556 2560 and this should only be done for 'full' (non-embedded) IPython;
2557 2561 embedded instances must respect the caller's __main__. Thanks to
2558 2562 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2559 2563
2560 2564 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2561 2565
2562 2566 * setup.py: added download_url to setup(). This registers the
2563 2567 download address at PyPI, which is not only useful to humans
2564 2568 browsing the site, but is also picked up by setuptools (the Eggs
2565 2569 machinery). Thanks to Ville and R. Kern for the info/discussion
2566 2570 on this.
2567 2571
2568 2572 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2569 2573
2570 2574 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2571 2575 This brings a lot of nice functionality to the pdb mode, which now
2572 2576 has tab-completion, syntax highlighting, and better stack handling
2573 2577 than before. Many thanks to Vivian De Smedt
2574 2578 <vivian-AT-vdesmedt.com> for the original patches.
2575 2579
2576 2580 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2577 2581
2578 2582 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2579 2583 sequence to consistently accept the banner argument. The
2580 2584 inconsistency was tripping SAGE, thanks to Gary Zablackis
2581 2585 <gzabl-AT-yahoo.com> for the report.
2582 2586
2583 2587 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2584 2588
2585 2589 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2586 2590 Fix bug where a naked 'alias' call in the ipythonrc file would
2587 2591 cause a crash. Bug reported by Jorgen Stenarson.
2588 2592
2589 2593 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2590 2594
2591 2595 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2592 2596 startup time.
2593 2597
2594 2598 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2595 2599 instances had introduced a bug with globals in normal code. Now
2596 2600 it's working in all cases.
2597 2601
2598 2602 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2599 2603 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2600 2604 has been introduced to set the default case sensitivity of the
2601 2605 searches. Users can still select either mode at runtime on a
2602 2606 per-search basis.
2603 2607
2604 2608 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2605 2609
2606 2610 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2607 2611 attributes in wildcard searches for subclasses. Modified version
2608 2612 of a patch by Jorgen.
2609 2613
2610 2614 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2611 2615
2612 2616 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2613 2617 embedded instances. I added a user_global_ns attribute to the
2614 2618 InteractiveShell class to handle this.
2615 2619
2616 2620 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2617 2621
2618 2622 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2619 2623 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2620 2624 (reported under win32, but may happen also in other platforms).
2621 2625 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2622 2626
2623 2627 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2624 2628
2625 2629 * IPython/Magic.py (magic_psearch): new support for wildcard
2626 2630 patterns. Now, typing ?a*b will list all names which begin with a
2627 2631 and end in b, for example. The %psearch magic has full
2628 2632 docstrings. Many thanks to JΓΆrgen Stenarson
2629 2633 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2630 2634 implementing this functionality.
2631 2635
2632 2636 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2633 2637
2634 2638 * Manual: fixed long-standing annoyance of double-dashes (as in
2635 2639 --prefix=~, for example) being stripped in the HTML version. This
2636 2640 is a latex2html bug, but a workaround was provided. Many thanks
2637 2641 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2638 2642 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2639 2643 rolling. This seemingly small issue had tripped a number of users
2640 2644 when first installing, so I'm glad to see it gone.
2641 2645
2642 2646 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2643 2647
2644 2648 * IPython/Extensions/numeric_formats.py: fix missing import,
2645 2649 reported by Stephen Walton.
2646 2650
2647 2651 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2648 2652
2649 2653 * IPython/demo.py: finish demo module, fully documented now.
2650 2654
2651 2655 * IPython/genutils.py (file_read): simple little utility to read a
2652 2656 file and ensure it's closed afterwards.
2653 2657
2654 2658 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2655 2659
2656 2660 * IPython/demo.py (Demo.__init__): added support for individually
2657 2661 tagging blocks for automatic execution.
2658 2662
2659 2663 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2660 2664 syntax-highlighted python sources, requested by John.
2661 2665
2662 2666 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2663 2667
2664 2668 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2665 2669 finishing.
2666 2670
2667 2671 * IPython/genutils.py (shlex_split): moved from Magic to here,
2668 2672 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2669 2673
2670 2674 * IPython/demo.py (Demo.__init__): added support for silent
2671 2675 blocks, improved marks as regexps, docstrings written.
2672 2676 (Demo.__init__): better docstring, added support for sys.argv.
2673 2677
2674 2678 * IPython/genutils.py (marquee): little utility used by the demo
2675 2679 code, handy in general.
2676 2680
2677 2681 * IPython/demo.py (Demo.__init__): new class for interactive
2678 2682 demos. Not documented yet, I just wrote it in a hurry for
2679 2683 scipy'05. Will docstring later.
2680 2684
2681 2685 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2682 2686
2683 2687 * IPython/Shell.py (sigint_handler): Drastic simplification which
2684 2688 also seems to make Ctrl-C work correctly across threads! This is
2685 2689 so simple, that I can't beleive I'd missed it before. Needs more
2686 2690 testing, though.
2687 2691 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2688 2692 like this before...
2689 2693
2690 2694 * IPython/genutils.py (get_home_dir): add protection against
2691 2695 non-dirs in win32 registry.
2692 2696
2693 2697 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2694 2698 bug where dict was mutated while iterating (pysh crash).
2695 2699
2696 2700 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2697 2701
2698 2702 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2699 2703 spurious newlines added by this routine. After a report by
2700 2704 F. Mantegazza.
2701 2705
2702 2706 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2703 2707
2704 2708 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2705 2709 calls. These were a leftover from the GTK 1.x days, and can cause
2706 2710 problems in certain cases (after a report by John Hunter).
2707 2711
2708 2712 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2709 2713 os.getcwd() fails at init time. Thanks to patch from David Remahl
2710 2714 <chmod007-AT-mac.com>.
2711 2715 (InteractiveShell.__init__): prevent certain special magics from
2712 2716 being shadowed by aliases. Closes
2713 2717 http://www.scipy.net/roundup/ipython/issue41.
2714 2718
2715 2719 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2716 2720
2717 2721 * IPython/iplib.py (InteractiveShell.complete): Added new
2718 2722 top-level completion method to expose the completion mechanism
2719 2723 beyond readline-based environments.
2720 2724
2721 2725 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2722 2726
2723 2727 * tools/ipsvnc (svnversion): fix svnversion capture.
2724 2728
2725 2729 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2726 2730 attribute to self, which was missing. Before, it was set by a
2727 2731 routine which in certain cases wasn't being called, so the
2728 2732 instance could end up missing the attribute. This caused a crash.
2729 2733 Closes http://www.scipy.net/roundup/ipython/issue40.
2730 2734
2731 2735 2005-08-16 Fernando Perez <fperez@colorado.edu>
2732 2736
2733 2737 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2734 2738 contains non-string attribute. Closes
2735 2739 http://www.scipy.net/roundup/ipython/issue38.
2736 2740
2737 2741 2005-08-14 Fernando Perez <fperez@colorado.edu>
2738 2742
2739 2743 * tools/ipsvnc: Minor improvements, to add changeset info.
2740 2744
2741 2745 2005-08-12 Fernando Perez <fperez@colorado.edu>
2742 2746
2743 2747 * IPython/iplib.py (runsource): remove self.code_to_run_src
2744 2748 attribute. I realized this is nothing more than
2745 2749 '\n'.join(self.buffer), and having the same data in two different
2746 2750 places is just asking for synchronization bugs. This may impact
2747 2751 people who have custom exception handlers, so I need to warn
2748 2752 ipython-dev about it (F. Mantegazza may use them).
2749 2753
2750 2754 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2751 2755
2752 2756 * IPython/genutils.py: fix 2.2 compatibility (generators)
2753 2757
2754 2758 2005-07-18 Fernando Perez <fperez@colorado.edu>
2755 2759
2756 2760 * IPython/genutils.py (get_home_dir): fix to help users with
2757 2761 invalid $HOME under win32.
2758 2762
2759 2763 2005-07-17 Fernando Perez <fperez@colorado.edu>
2760 2764
2761 2765 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2762 2766 some old hacks and clean up a bit other routines; code should be
2763 2767 simpler and a bit faster.
2764 2768
2765 2769 * IPython/iplib.py (interact): removed some last-resort attempts
2766 2770 to survive broken stdout/stderr. That code was only making it
2767 2771 harder to abstract out the i/o (necessary for gui integration),
2768 2772 and the crashes it could prevent were extremely rare in practice
2769 2773 (besides being fully user-induced in a pretty violent manner).
2770 2774
2771 2775 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2772 2776 Nothing major yet, but the code is simpler to read; this should
2773 2777 make it easier to do more serious modifications in the future.
2774 2778
2775 2779 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2776 2780 which broke in .15 (thanks to a report by Ville).
2777 2781
2778 2782 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2779 2783 be quite correct, I know next to nothing about unicode). This
2780 2784 will allow unicode strings to be used in prompts, amongst other
2781 2785 cases. It also will prevent ipython from crashing when unicode
2782 2786 shows up unexpectedly in many places. If ascii encoding fails, we
2783 2787 assume utf_8. Currently the encoding is not a user-visible
2784 2788 setting, though it could be made so if there is demand for it.
2785 2789
2786 2790 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2787 2791
2788 2792 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2789 2793
2790 2794 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2791 2795
2792 2796 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2793 2797 code can work transparently for 2.2/2.3.
2794 2798
2795 2799 2005-07-16 Fernando Perez <fperez@colorado.edu>
2796 2800
2797 2801 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2798 2802 out of the color scheme table used for coloring exception
2799 2803 tracebacks. This allows user code to add new schemes at runtime.
2800 2804 This is a minimally modified version of the patch at
2801 2805 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2802 2806 for the contribution.
2803 2807
2804 2808 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2805 2809 slightly modified version of the patch in
2806 2810 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2807 2811 to remove the previous try/except solution (which was costlier).
2808 2812 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2809 2813
2810 2814 2005-06-08 Fernando Perez <fperez@colorado.edu>
2811 2815
2812 2816 * IPython/iplib.py (write/write_err): Add methods to abstract all
2813 2817 I/O a bit more.
2814 2818
2815 2819 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2816 2820 warning, reported by Aric Hagberg, fix by JD Hunter.
2817 2821
2818 2822 2005-06-02 *** Released version 0.6.15
2819 2823
2820 2824 2005-06-01 Fernando Perez <fperez@colorado.edu>
2821 2825
2822 2826 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2823 2827 tab-completion of filenames within open-quoted strings. Note that
2824 2828 this requires that in ~/.ipython/ipythonrc, users change the
2825 2829 readline delimiters configuration to read:
2826 2830
2827 2831 readline_remove_delims -/~
2828 2832
2829 2833
2830 2834 2005-05-31 *** Released version 0.6.14
2831 2835
2832 2836 2005-05-29 Fernando Perez <fperez@colorado.edu>
2833 2837
2834 2838 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2835 2839 with files not on the filesystem. Reported by Eliyahu Sandler
2836 2840 <eli@gondolin.net>
2837 2841
2838 2842 2005-05-22 Fernando Perez <fperez@colorado.edu>
2839 2843
2840 2844 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2841 2845 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2842 2846
2843 2847 2005-05-19 Fernando Perez <fperez@colorado.edu>
2844 2848
2845 2849 * IPython/iplib.py (safe_execfile): close a file which could be
2846 2850 left open (causing problems in win32, which locks open files).
2847 2851 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2848 2852
2849 2853 2005-05-18 Fernando Perez <fperez@colorado.edu>
2850 2854
2851 2855 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2852 2856 keyword arguments correctly to safe_execfile().
2853 2857
2854 2858 2005-05-13 Fernando Perez <fperez@colorado.edu>
2855 2859
2856 2860 * ipython.1: Added info about Qt to manpage, and threads warning
2857 2861 to usage page (invoked with --help).
2858 2862
2859 2863 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2860 2864 new matcher (it goes at the end of the priority list) to do
2861 2865 tab-completion on named function arguments. Submitted by George
2862 2866 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2863 2867 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2864 2868 for more details.
2865 2869
2866 2870 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2867 2871 SystemExit exceptions in the script being run. Thanks to a report
2868 2872 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2869 2873 producing very annoying behavior when running unit tests.
2870 2874
2871 2875 2005-05-12 Fernando Perez <fperez@colorado.edu>
2872 2876
2873 2877 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2874 2878 which I'd broken (again) due to a changed regexp. In the process,
2875 2879 added ';' as an escape to auto-quote the whole line without
2876 2880 splitting its arguments. Thanks to a report by Jerry McRae
2877 2881 <qrs0xyc02-AT-sneakemail.com>.
2878 2882
2879 2883 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2880 2884 possible crashes caused by a TokenError. Reported by Ed Schofield
2881 2885 <schofield-AT-ftw.at>.
2882 2886
2883 2887 2005-05-06 Fernando Perez <fperez@colorado.edu>
2884 2888
2885 2889 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2886 2890
2887 2891 2005-04-29 Fernando Perez <fperez@colorado.edu>
2888 2892
2889 2893 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2890 2894 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2891 2895 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2892 2896 which provides support for Qt interactive usage (similar to the
2893 2897 existing one for WX and GTK). This had been often requested.
2894 2898
2895 2899 2005-04-14 *** Released version 0.6.13
2896 2900
2897 2901 2005-04-08 Fernando Perez <fperez@colorado.edu>
2898 2902
2899 2903 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2900 2904 from _ofind, which gets called on almost every input line. Now,
2901 2905 we only try to get docstrings if they are actually going to be
2902 2906 used (the overhead of fetching unnecessary docstrings can be
2903 2907 noticeable for certain objects, such as Pyro proxies).
2904 2908
2905 2909 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2906 2910 for completers. For some reason I had been passing them the state
2907 2911 variable, which completers never actually need, and was in
2908 2912 conflict with the rlcompleter API. Custom completers ONLY need to
2909 2913 take the text parameter.
2910 2914
2911 2915 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2912 2916 work correctly in pysh. I've also moved all the logic which used
2913 2917 to be in pysh.py here, which will prevent problems with future
2914 2918 upgrades. However, this time I must warn users to update their
2915 2919 pysh profile to include the line
2916 2920
2917 2921 import_all IPython.Extensions.InterpreterExec
2918 2922
2919 2923 because otherwise things won't work for them. They MUST also
2920 2924 delete pysh.py and the line
2921 2925
2922 2926 execfile pysh.py
2923 2927
2924 2928 from their ipythonrc-pysh.
2925 2929
2926 2930 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2927 2931 robust in the face of objects whose dir() returns non-strings
2928 2932 (which it shouldn't, but some broken libs like ITK do). Thanks to
2929 2933 a patch by John Hunter (implemented differently, though). Also
2930 2934 minor improvements by using .extend instead of + on lists.
2931 2935
2932 2936 * pysh.py:
2933 2937
2934 2938 2005-04-06 Fernando Perez <fperez@colorado.edu>
2935 2939
2936 2940 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2937 2941 by default, so that all users benefit from it. Those who don't
2938 2942 want it can still turn it off.
2939 2943
2940 2944 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2941 2945 config file, I'd forgotten about this, so users were getting it
2942 2946 off by default.
2943 2947
2944 2948 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2945 2949 consistency. Now magics can be called in multiline statements,
2946 2950 and python variables can be expanded in magic calls via $var.
2947 2951 This makes the magic system behave just like aliases or !system
2948 2952 calls.
2949 2953
2950 2954 2005-03-28 Fernando Perez <fperez@colorado.edu>
2951 2955
2952 2956 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2953 2957 expensive string additions for building command. Add support for
2954 2958 trailing ';' when autocall is used.
2955 2959
2956 2960 2005-03-26 Fernando Perez <fperez@colorado.edu>
2957 2961
2958 2962 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2959 2963 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2960 2964 ipython.el robust against prompts with any number of spaces
2961 2965 (including 0) after the ':' character.
2962 2966
2963 2967 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2964 2968 continuation prompt, which misled users to think the line was
2965 2969 already indented. Closes debian Bug#300847, reported to me by
2966 2970 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2967 2971
2968 2972 2005-03-23 Fernando Perez <fperez@colorado.edu>
2969 2973
2970 2974 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2971 2975 properly aligned if they have embedded newlines.
2972 2976
2973 2977 * IPython/iplib.py (runlines): Add a public method to expose
2974 2978 IPython's code execution machinery, so that users can run strings
2975 2979 as if they had been typed at the prompt interactively.
2976 2980 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2977 2981 methods which can call the system shell, but with python variable
2978 2982 expansion. The three such methods are: __IPYTHON__.system,
2979 2983 .getoutput and .getoutputerror. These need to be documented in a
2980 2984 'public API' section (to be written) of the manual.
2981 2985
2982 2986 2005-03-20 Fernando Perez <fperez@colorado.edu>
2983 2987
2984 2988 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2985 2989 for custom exception handling. This is quite powerful, and it
2986 2990 allows for user-installable exception handlers which can trap
2987 2991 custom exceptions at runtime and treat them separately from
2988 2992 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2989 2993 Mantegazza <mantegazza-AT-ill.fr>.
2990 2994 (InteractiveShell.set_custom_completer): public API function to
2991 2995 add new completers at runtime.
2992 2996
2993 2997 2005-03-19 Fernando Perez <fperez@colorado.edu>
2994 2998
2995 2999 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2996 3000 allow objects which provide their docstrings via non-standard
2997 3001 mechanisms (like Pyro proxies) to still be inspected by ipython's
2998 3002 ? system.
2999 3003
3000 3004 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3001 3005 automatic capture system. I tried quite hard to make it work
3002 3006 reliably, and simply failed. I tried many combinations with the
3003 3007 subprocess module, but eventually nothing worked in all needed
3004 3008 cases (not blocking stdin for the child, duplicating stdout
3005 3009 without blocking, etc). The new %sc/%sx still do capture to these
3006 3010 magical list/string objects which make shell use much more
3007 3011 conveninent, so not all is lost.
3008 3012
3009 3013 XXX - FIX MANUAL for the change above!
3010 3014
3011 3015 (runsource): I copied code.py's runsource() into ipython to modify
3012 3016 it a bit. Now the code object and source to be executed are
3013 3017 stored in ipython. This makes this info accessible to third-party
3014 3018 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3015 3019 Mantegazza <mantegazza-AT-ill.fr>.
3016 3020
3017 3021 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3018 3022 history-search via readline (like C-p/C-n). I'd wanted this for a
3019 3023 long time, but only recently found out how to do it. For users
3020 3024 who already have their ipythonrc files made and want this, just
3021 3025 add:
3022 3026
3023 3027 readline_parse_and_bind "\e[A": history-search-backward
3024 3028 readline_parse_and_bind "\e[B": history-search-forward
3025 3029
3026 3030 2005-03-18 Fernando Perez <fperez@colorado.edu>
3027 3031
3028 3032 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3029 3033 LSString and SList classes which allow transparent conversions
3030 3034 between list mode and whitespace-separated string.
3031 3035 (magic_r): Fix recursion problem in %r.
3032 3036
3033 3037 * IPython/genutils.py (LSString): New class to be used for
3034 3038 automatic storage of the results of all alias/system calls in _o
3035 3039 and _e (stdout/err). These provide a .l/.list attribute which
3036 3040 does automatic splitting on newlines. This means that for most
3037 3041 uses, you'll never need to do capturing of output with %sc/%sx
3038 3042 anymore, since ipython keeps this always done for you. Note that
3039 3043 only the LAST results are stored, the _o/e variables are
3040 3044 overwritten on each call. If you need to save their contents
3041 3045 further, simply bind them to any other name.
3042 3046
3043 3047 2005-03-17 Fernando Perez <fperez@colorado.edu>
3044 3048
3045 3049 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3046 3050 prompt namespace handling.
3047 3051
3048 3052 2005-03-16 Fernando Perez <fperez@colorado.edu>
3049 3053
3050 3054 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3051 3055 classic prompts to be '>>> ' (final space was missing, and it
3052 3056 trips the emacs python mode).
3053 3057 (BasePrompt.__str__): Added safe support for dynamic prompt
3054 3058 strings. Now you can set your prompt string to be '$x', and the
3055 3059 value of x will be printed from your interactive namespace. The
3056 3060 interpolation syntax includes the full Itpl support, so
3057 3061 ${foo()+x+bar()} is a valid prompt string now, and the function
3058 3062 calls will be made at runtime.
3059 3063
3060 3064 2005-03-15 Fernando Perez <fperez@colorado.edu>
3061 3065
3062 3066 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3063 3067 avoid name clashes in pylab. %hist still works, it just forwards
3064 3068 the call to %history.
3065 3069
3066 3070 2005-03-02 *** Released version 0.6.12
3067 3071
3068 3072 2005-03-02 Fernando Perez <fperez@colorado.edu>
3069 3073
3070 3074 * IPython/iplib.py (handle_magic): log magic calls properly as
3071 3075 ipmagic() function calls.
3072 3076
3073 3077 * IPython/Magic.py (magic_time): Improved %time to support
3074 3078 statements and provide wall-clock as well as CPU time.
3075 3079
3076 3080 2005-02-27 Fernando Perez <fperez@colorado.edu>
3077 3081
3078 3082 * IPython/hooks.py: New hooks module, to expose user-modifiable
3079 3083 IPython functionality in a clean manner. For now only the editor
3080 3084 hook is actually written, and other thigns which I intend to turn
3081 3085 into proper hooks aren't yet there. The display and prefilter
3082 3086 stuff, for example, should be hooks. But at least now the
3083 3087 framework is in place, and the rest can be moved here with more
3084 3088 time later. IPython had had a .hooks variable for a long time for
3085 3089 this purpose, but I'd never actually used it for anything.
3086 3090
3087 3091 2005-02-26 Fernando Perez <fperez@colorado.edu>
3088 3092
3089 3093 * IPython/ipmaker.py (make_IPython): make the default ipython
3090 3094 directory be called _ipython under win32, to follow more the
3091 3095 naming peculiarities of that platform (where buggy software like
3092 3096 Visual Sourcesafe breaks with .named directories). Reported by
3093 3097 Ville Vainio.
3094 3098
3095 3099 2005-02-23 Fernando Perez <fperez@colorado.edu>
3096 3100
3097 3101 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3098 3102 auto_aliases for win32 which were causing problems. Users can
3099 3103 define the ones they personally like.
3100 3104
3101 3105 2005-02-21 Fernando Perez <fperez@colorado.edu>
3102 3106
3103 3107 * IPython/Magic.py (magic_time): new magic to time execution of
3104 3108 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3105 3109
3106 3110 2005-02-19 Fernando Perez <fperez@colorado.edu>
3107 3111
3108 3112 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3109 3113 into keys (for prompts, for example).
3110 3114
3111 3115 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3112 3116 prompts in case users want them. This introduces a small behavior
3113 3117 change: ipython does not automatically add a space to all prompts
3114 3118 anymore. To get the old prompts with a space, users should add it
3115 3119 manually to their ipythonrc file, so for example prompt_in1 should
3116 3120 now read 'In [\#]: ' instead of 'In [\#]:'.
3117 3121 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3118 3122 file) to control left-padding of secondary prompts.
3119 3123
3120 3124 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3121 3125 the profiler can't be imported. Fix for Debian, which removed
3122 3126 profile.py because of License issues. I applied a slightly
3123 3127 modified version of the original Debian patch at
3124 3128 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3125 3129
3126 3130 2005-02-17 Fernando Perez <fperez@colorado.edu>
3127 3131
3128 3132 * IPython/genutils.py (native_line_ends): Fix bug which would
3129 3133 cause improper line-ends under win32 b/c I was not opening files
3130 3134 in binary mode. Bug report and fix thanks to Ville.
3131 3135
3132 3136 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3133 3137 trying to catch spurious foo[1] autocalls. My fix actually broke
3134 3138 ',/' autoquote/call with explicit escape (bad regexp).
3135 3139
3136 3140 2005-02-15 *** Released version 0.6.11
3137 3141
3138 3142 2005-02-14 Fernando Perez <fperez@colorado.edu>
3139 3143
3140 3144 * IPython/background_jobs.py: New background job management
3141 3145 subsystem. This is implemented via a new set of classes, and
3142 3146 IPython now provides a builtin 'jobs' object for background job
3143 3147 execution. A convenience %bg magic serves as a lightweight
3144 3148 frontend for starting the more common type of calls. This was
3145 3149 inspired by discussions with B. Granger and the BackgroundCommand
3146 3150 class described in the book Python Scripting for Computational
3147 3151 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3148 3152 (although ultimately no code from this text was used, as IPython's
3149 3153 system is a separate implementation).
3150 3154
3151 3155 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3152 3156 to control the completion of single/double underscore names
3153 3157 separately. As documented in the example ipytonrc file, the
3154 3158 readline_omit__names variable can now be set to 2, to omit even
3155 3159 single underscore names. Thanks to a patch by Brian Wong
3156 3160 <BrianWong-AT-AirgoNetworks.Com>.
3157 3161 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3158 3162 be autocalled as foo([1]) if foo were callable. A problem for
3159 3163 things which are both callable and implement __getitem__.
3160 3164 (init_readline): Fix autoindentation for win32. Thanks to a patch
3161 3165 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3162 3166
3163 3167 2005-02-12 Fernando Perez <fperez@colorado.edu>
3164 3168
3165 3169 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3166 3170 which I had written long ago to sort out user error messages which
3167 3171 may occur during startup. This seemed like a good idea initially,
3168 3172 but it has proven a disaster in retrospect. I don't want to
3169 3173 change much code for now, so my fix is to set the internal 'debug'
3170 3174 flag to true everywhere, whose only job was precisely to control
3171 3175 this subsystem. This closes issue 28 (as well as avoiding all
3172 3176 sorts of strange hangups which occur from time to time).
3173 3177
3174 3178 2005-02-07 Fernando Perez <fperez@colorado.edu>
3175 3179
3176 3180 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3177 3181 previous call produced a syntax error.
3178 3182
3179 3183 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3180 3184 classes without constructor.
3181 3185
3182 3186 2005-02-06 Fernando Perez <fperez@colorado.edu>
3183 3187
3184 3188 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3185 3189 completions with the results of each matcher, so we return results
3186 3190 to the user from all namespaces. This breaks with ipython
3187 3191 tradition, but I think it's a nicer behavior. Now you get all
3188 3192 possible completions listed, from all possible namespaces (python,
3189 3193 filesystem, magics...) After a request by John Hunter
3190 3194 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3191 3195
3192 3196 2005-02-05 Fernando Perez <fperez@colorado.edu>
3193 3197
3194 3198 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3195 3199 the call had quote characters in it (the quotes were stripped).
3196 3200
3197 3201 2005-01-31 Fernando Perez <fperez@colorado.edu>
3198 3202
3199 3203 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3200 3204 Itpl.itpl() to make the code more robust against psyco
3201 3205 optimizations.
3202 3206
3203 3207 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3204 3208 of causing an exception. Quicker, cleaner.
3205 3209
3206 3210 2005-01-28 Fernando Perez <fperez@colorado.edu>
3207 3211
3208 3212 * scripts/ipython_win_post_install.py (install): hardcode
3209 3213 sys.prefix+'python.exe' as the executable path. It turns out that
3210 3214 during the post-installation run, sys.executable resolves to the
3211 3215 name of the binary installer! I should report this as a distutils
3212 3216 bug, I think. I updated the .10 release with this tiny fix, to
3213 3217 avoid annoying the lists further.
3214 3218
3215 3219 2005-01-27 *** Released version 0.6.10
3216 3220
3217 3221 2005-01-27 Fernando Perez <fperez@colorado.edu>
3218 3222
3219 3223 * IPython/numutils.py (norm): Added 'inf' as optional name for
3220 3224 L-infinity norm, included references to mathworld.com for vector
3221 3225 norm definitions.
3222 3226 (amin/amax): added amin/amax for array min/max. Similar to what
3223 3227 pylab ships with after the recent reorganization of names.
3224 3228 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3225 3229
3226 3230 * ipython.el: committed Alex's recent fixes and improvements.
3227 3231 Tested with python-mode from CVS, and it looks excellent. Since
3228 3232 python-mode hasn't released anything in a while, I'm temporarily
3229 3233 putting a copy of today's CVS (v 4.70) of python-mode in:
3230 3234 http://ipython.scipy.org/tmp/python-mode.el
3231 3235
3232 3236 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3233 3237 sys.executable for the executable name, instead of assuming it's
3234 3238 called 'python.exe' (the post-installer would have produced broken
3235 3239 setups on systems with a differently named python binary).
3236 3240
3237 3241 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3238 3242 references to os.linesep, to make the code more
3239 3243 platform-independent. This is also part of the win32 coloring
3240 3244 fixes.
3241 3245
3242 3246 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3243 3247 lines, which actually cause coloring bugs because the length of
3244 3248 the line is very difficult to correctly compute with embedded
3245 3249 escapes. This was the source of all the coloring problems under
3246 3250 Win32. I think that _finally_, Win32 users have a properly
3247 3251 working ipython in all respects. This would never have happened
3248 3252 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3249 3253
3250 3254 2005-01-26 *** Released version 0.6.9
3251 3255
3252 3256 2005-01-25 Fernando Perez <fperez@colorado.edu>
3253 3257
3254 3258 * setup.py: finally, we have a true Windows installer, thanks to
3255 3259 the excellent work of Viktor Ransmayr
3256 3260 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3257 3261 Windows users. The setup routine is quite a bit cleaner thanks to
3258 3262 this, and the post-install script uses the proper functions to
3259 3263 allow a clean de-installation using the standard Windows Control
3260 3264 Panel.
3261 3265
3262 3266 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3263 3267 environment variable under all OSes (including win32) if
3264 3268 available. This will give consistency to win32 users who have set
3265 3269 this variable for any reason. If os.environ['HOME'] fails, the
3266 3270 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3267 3271
3268 3272 2005-01-24 Fernando Perez <fperez@colorado.edu>
3269 3273
3270 3274 * IPython/numutils.py (empty_like): add empty_like(), similar to
3271 3275 zeros_like() but taking advantage of the new empty() Numeric routine.
3272 3276
3273 3277 2005-01-23 *** Released version 0.6.8
3274 3278
3275 3279 2005-01-22 Fernando Perez <fperez@colorado.edu>
3276 3280
3277 3281 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3278 3282 automatic show() calls. After discussing things with JDH, it
3279 3283 turns out there are too many corner cases where this can go wrong.
3280 3284 It's best not to try to be 'too smart', and simply have ipython
3281 3285 reproduce as much as possible the default behavior of a normal
3282 3286 python shell.
3283 3287
3284 3288 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3285 3289 line-splitting regexp and _prefilter() to avoid calling getattr()
3286 3290 on assignments. This closes
3287 3291 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3288 3292 readline uses getattr(), so a simple <TAB> keypress is still
3289 3293 enough to trigger getattr() calls on an object.
3290 3294
3291 3295 2005-01-21 Fernando Perez <fperez@colorado.edu>
3292 3296
3293 3297 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3294 3298 docstring under pylab so it doesn't mask the original.
3295 3299
3296 3300 2005-01-21 *** Released version 0.6.7
3297 3301
3298 3302 2005-01-21 Fernando Perez <fperez@colorado.edu>
3299 3303
3300 3304 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3301 3305 signal handling for win32 users in multithreaded mode.
3302 3306
3303 3307 2005-01-17 Fernando Perez <fperez@colorado.edu>
3304 3308
3305 3309 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3306 3310 instances with no __init__. After a crash report by Norbert Nemec
3307 3311 <Norbert-AT-nemec-online.de>.
3308 3312
3309 3313 2005-01-14 Fernando Perez <fperez@colorado.edu>
3310 3314
3311 3315 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3312 3316 names for verbose exceptions, when multiple dotted names and the
3313 3317 'parent' object were present on the same line.
3314 3318
3315 3319 2005-01-11 Fernando Perez <fperez@colorado.edu>
3316 3320
3317 3321 * IPython/genutils.py (flag_calls): new utility to trap and flag
3318 3322 calls in functions. I need it to clean up matplotlib support.
3319 3323 Also removed some deprecated code in genutils.
3320 3324
3321 3325 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3322 3326 that matplotlib scripts called with %run, which don't call show()
3323 3327 themselves, still have their plotting windows open.
3324 3328
3325 3329 2005-01-05 Fernando Perez <fperez@colorado.edu>
3326 3330
3327 3331 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3328 3332 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3329 3333
3330 3334 2004-12-19 Fernando Perez <fperez@colorado.edu>
3331 3335
3332 3336 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3333 3337 parent_runcode, which was an eyesore. The same result can be
3334 3338 obtained with Python's regular superclass mechanisms.
3335 3339
3336 3340 2004-12-17 Fernando Perez <fperez@colorado.edu>
3337 3341
3338 3342 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3339 3343 reported by Prabhu.
3340 3344 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3341 3345 sys.stderr) instead of explicitly calling sys.stderr. This helps
3342 3346 maintain our I/O abstractions clean, for future GUI embeddings.
3343 3347
3344 3348 * IPython/genutils.py (info): added new utility for sys.stderr
3345 3349 unified info message handling (thin wrapper around warn()).
3346 3350
3347 3351 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3348 3352 composite (dotted) names on verbose exceptions.
3349 3353 (VerboseTB.nullrepr): harden against another kind of errors which
3350 3354 Python's inspect module can trigger, and which were crashing
3351 3355 IPython. Thanks to a report by Marco Lombardi
3352 3356 <mlombard-AT-ma010192.hq.eso.org>.
3353 3357
3354 3358 2004-12-13 *** Released version 0.6.6
3355 3359
3356 3360 2004-12-12 Fernando Perez <fperez@colorado.edu>
3357 3361
3358 3362 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3359 3363 generated by pygtk upon initialization if it was built without
3360 3364 threads (for matplotlib users). After a crash reported by
3361 3365 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3362 3366
3363 3367 * IPython/ipmaker.py (make_IPython): fix small bug in the
3364 3368 import_some parameter for multiple imports.
3365 3369
3366 3370 * IPython/iplib.py (ipmagic): simplified the interface of
3367 3371 ipmagic() to take a single string argument, just as it would be
3368 3372 typed at the IPython cmd line.
3369 3373 (ipalias): Added new ipalias() with an interface identical to
3370 3374 ipmagic(). This completes exposing a pure python interface to the
3371 3375 alias and magic system, which can be used in loops or more complex
3372 3376 code where IPython's automatic line mangling is not active.
3373 3377
3374 3378 * IPython/genutils.py (timing): changed interface of timing to
3375 3379 simply run code once, which is the most common case. timings()
3376 3380 remains unchanged, for the cases where you want multiple runs.
3377 3381
3378 3382 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3379 3383 bug where Python2.2 crashes with exec'ing code which does not end
3380 3384 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3381 3385 before.
3382 3386
3383 3387 2004-12-10 Fernando Perez <fperez@colorado.edu>
3384 3388
3385 3389 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3386 3390 -t to -T, to accomodate the new -t flag in %run (the %run and
3387 3391 %prun options are kind of intermixed, and it's not easy to change
3388 3392 this with the limitations of python's getopt).
3389 3393
3390 3394 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3391 3395 the execution of scripts. It's not as fine-tuned as timeit.py,
3392 3396 but it works from inside ipython (and under 2.2, which lacks
3393 3397 timeit.py). Optionally a number of runs > 1 can be given for
3394 3398 timing very short-running code.
3395 3399
3396 3400 * IPython/genutils.py (uniq_stable): new routine which returns a
3397 3401 list of unique elements in any iterable, but in stable order of
3398 3402 appearance. I needed this for the ultraTB fixes, and it's a handy
3399 3403 utility.
3400 3404
3401 3405 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3402 3406 dotted names in Verbose exceptions. This had been broken since
3403 3407 the very start, now x.y will properly be printed in a Verbose
3404 3408 traceback, instead of x being shown and y appearing always as an
3405 3409 'undefined global'. Getting this to work was a bit tricky,
3406 3410 because by default python tokenizers are stateless. Saved by
3407 3411 python's ability to easily add a bit of state to an arbitrary
3408 3412 function (without needing to build a full-blown callable object).
3409 3413
3410 3414 Also big cleanup of this code, which had horrendous runtime
3411 3415 lookups of zillions of attributes for colorization. Moved all
3412 3416 this code into a few templates, which make it cleaner and quicker.
3413 3417
3414 3418 Printout quality was also improved for Verbose exceptions: one
3415 3419 variable per line, and memory addresses are printed (this can be
3416 3420 quite handy in nasty debugging situations, which is what Verbose
3417 3421 is for).
3418 3422
3419 3423 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3420 3424 the command line as scripts to be loaded by embedded instances.
3421 3425 Doing so has the potential for an infinite recursion if there are
3422 3426 exceptions thrown in the process. This fixes a strange crash
3423 3427 reported by Philippe MULLER <muller-AT-irit.fr>.
3424 3428
3425 3429 2004-12-09 Fernando Perez <fperez@colorado.edu>
3426 3430
3427 3431 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3428 3432 to reflect new names in matplotlib, which now expose the
3429 3433 matlab-compatible interface via a pylab module instead of the
3430 3434 'matlab' name. The new code is backwards compatible, so users of
3431 3435 all matplotlib versions are OK. Patch by J. Hunter.
3432 3436
3433 3437 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3434 3438 of __init__ docstrings for instances (class docstrings are already
3435 3439 automatically printed). Instances with customized docstrings
3436 3440 (indep. of the class) are also recognized and all 3 separate
3437 3441 docstrings are printed (instance, class, constructor). After some
3438 3442 comments/suggestions by J. Hunter.
3439 3443
3440 3444 2004-12-05 Fernando Perez <fperez@colorado.edu>
3441 3445
3442 3446 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3443 3447 warnings when tab-completion fails and triggers an exception.
3444 3448
3445 3449 2004-12-03 Fernando Perez <fperez@colorado.edu>
3446 3450
3447 3451 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3448 3452 be triggered when using 'run -p'. An incorrect option flag was
3449 3453 being set ('d' instead of 'D').
3450 3454 (manpage): fix missing escaped \- sign.
3451 3455
3452 3456 2004-11-30 *** Released version 0.6.5
3453 3457
3454 3458 2004-11-30 Fernando Perez <fperez@colorado.edu>
3455 3459
3456 3460 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3457 3461 setting with -d option.
3458 3462
3459 3463 * setup.py (docfiles): Fix problem where the doc glob I was using
3460 3464 was COMPLETELY BROKEN. It was giving the right files by pure
3461 3465 accident, but failed once I tried to include ipython.el. Note:
3462 3466 glob() does NOT allow you to do exclusion on multiple endings!
3463 3467
3464 3468 2004-11-29 Fernando Perez <fperez@colorado.edu>
3465 3469
3466 3470 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3467 3471 the manpage as the source. Better formatting & consistency.
3468 3472
3469 3473 * IPython/Magic.py (magic_run): Added new -d option, to run
3470 3474 scripts under the control of the python pdb debugger. Note that
3471 3475 this required changing the %prun option -d to -D, to avoid a clash
3472 3476 (since %run must pass options to %prun, and getopt is too dumb to
3473 3477 handle options with string values with embedded spaces). Thanks
3474 3478 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3475 3479 (magic_who_ls): added type matching to %who and %whos, so that one
3476 3480 can filter their output to only include variables of certain
3477 3481 types. Another suggestion by Matthew.
3478 3482 (magic_whos): Added memory summaries in kb and Mb for arrays.
3479 3483 (magic_who): Improve formatting (break lines every 9 vars).
3480 3484
3481 3485 2004-11-28 Fernando Perez <fperez@colorado.edu>
3482 3486
3483 3487 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3484 3488 cache when empty lines were present.
3485 3489
3486 3490 2004-11-24 Fernando Perez <fperez@colorado.edu>
3487 3491
3488 3492 * IPython/usage.py (__doc__): document the re-activated threading
3489 3493 options for WX and GTK.
3490 3494
3491 3495 2004-11-23 Fernando Perez <fperez@colorado.edu>
3492 3496
3493 3497 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3494 3498 the -wthread and -gthread options, along with a new -tk one to try
3495 3499 and coordinate Tk threading with wx/gtk. The tk support is very
3496 3500 platform dependent, since it seems to require Tcl and Tk to be
3497 3501 built with threads (Fedora1/2 appears NOT to have it, but in
3498 3502 Prabhu's Debian boxes it works OK). But even with some Tk
3499 3503 limitations, this is a great improvement.
3500 3504
3501 3505 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3502 3506 info in user prompts. Patch by Prabhu.
3503 3507
3504 3508 2004-11-18 Fernando Perez <fperez@colorado.edu>
3505 3509
3506 3510 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3507 3511 EOFErrors and bail, to avoid infinite loops if a non-terminating
3508 3512 file is fed into ipython. Patch submitted in issue 19 by user,
3509 3513 many thanks.
3510 3514
3511 3515 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3512 3516 autoquote/parens in continuation prompts, which can cause lots of
3513 3517 problems. Closes roundup issue 20.
3514 3518
3515 3519 2004-11-17 Fernando Perez <fperez@colorado.edu>
3516 3520
3517 3521 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3518 3522 reported as debian bug #280505. I'm not sure my local changelog
3519 3523 entry has the proper debian format (Jack?).
3520 3524
3521 3525 2004-11-08 *** Released version 0.6.4
3522 3526
3523 3527 2004-11-08 Fernando Perez <fperez@colorado.edu>
3524 3528
3525 3529 * IPython/iplib.py (init_readline): Fix exit message for Windows
3526 3530 when readline is active. Thanks to a report by Eric Jones
3527 3531 <eric-AT-enthought.com>.
3528 3532
3529 3533 2004-11-07 Fernando Perez <fperez@colorado.edu>
3530 3534
3531 3535 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3532 3536 sometimes seen by win2k/cygwin users.
3533 3537
3534 3538 2004-11-06 Fernando Perez <fperez@colorado.edu>
3535 3539
3536 3540 * IPython/iplib.py (interact): Change the handling of %Exit from
3537 3541 trying to propagate a SystemExit to an internal ipython flag.
3538 3542 This is less elegant than using Python's exception mechanism, but
3539 3543 I can't get that to work reliably with threads, so under -pylab
3540 3544 %Exit was hanging IPython. Cross-thread exception handling is
3541 3545 really a bitch. Thaks to a bug report by Stephen Walton
3542 3546 <stephen.walton-AT-csun.edu>.
3543 3547
3544 3548 2004-11-04 Fernando Perez <fperez@colorado.edu>
3545 3549
3546 3550 * IPython/iplib.py (raw_input_original): store a pointer to the
3547 3551 true raw_input to harden against code which can modify it
3548 3552 (wx.py.PyShell does this and would otherwise crash ipython).
3549 3553 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3550 3554
3551 3555 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3552 3556 Ctrl-C problem, which does not mess up the input line.
3553 3557
3554 3558 2004-11-03 Fernando Perez <fperez@colorado.edu>
3555 3559
3556 3560 * IPython/Release.py: Changed licensing to BSD, in all files.
3557 3561 (name): lowercase name for tarball/RPM release.
3558 3562
3559 3563 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3560 3564 use throughout ipython.
3561 3565
3562 3566 * IPython/Magic.py (Magic._ofind): Switch to using the new
3563 3567 OInspect.getdoc() function.
3564 3568
3565 3569 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3566 3570 of the line currently being canceled via Ctrl-C. It's extremely
3567 3571 ugly, but I don't know how to do it better (the problem is one of
3568 3572 handling cross-thread exceptions).
3569 3573
3570 3574 2004-10-28 Fernando Perez <fperez@colorado.edu>
3571 3575
3572 3576 * IPython/Shell.py (signal_handler): add signal handlers to trap
3573 3577 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3574 3578 report by Francesc Alted.
3575 3579
3576 3580 2004-10-21 Fernando Perez <fperez@colorado.edu>
3577 3581
3578 3582 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3579 3583 to % for pysh syntax extensions.
3580 3584
3581 3585 2004-10-09 Fernando Perez <fperez@colorado.edu>
3582 3586
3583 3587 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3584 3588 arrays to print a more useful summary, without calling str(arr).
3585 3589 This avoids the problem of extremely lengthy computations which
3586 3590 occur if arr is large, and appear to the user as a system lockup
3587 3591 with 100% cpu activity. After a suggestion by Kristian Sandberg
3588 3592 <Kristian.Sandberg@colorado.edu>.
3589 3593 (Magic.__init__): fix bug in global magic escapes not being
3590 3594 correctly set.
3591 3595
3592 3596 2004-10-08 Fernando Perez <fperez@colorado.edu>
3593 3597
3594 3598 * IPython/Magic.py (__license__): change to absolute imports of
3595 3599 ipython's own internal packages, to start adapting to the absolute
3596 3600 import requirement of PEP-328.
3597 3601
3598 3602 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3599 3603 files, and standardize author/license marks through the Release
3600 3604 module instead of having per/file stuff (except for files with
3601 3605 particular licenses, like the MIT/PSF-licensed codes).
3602 3606
3603 3607 * IPython/Debugger.py: remove dead code for python 2.1
3604 3608
3605 3609 2004-10-04 Fernando Perez <fperez@colorado.edu>
3606 3610
3607 3611 * IPython/iplib.py (ipmagic): New function for accessing magics
3608 3612 via a normal python function call.
3609 3613
3610 3614 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3611 3615 from '@' to '%', to accomodate the new @decorator syntax of python
3612 3616 2.4.
3613 3617
3614 3618 2004-09-29 Fernando Perez <fperez@colorado.edu>
3615 3619
3616 3620 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3617 3621 matplotlib.use to prevent running scripts which try to switch
3618 3622 interactive backends from within ipython. This will just crash
3619 3623 the python interpreter, so we can't allow it (but a detailed error
3620 3624 is given to the user).
3621 3625
3622 3626 2004-09-28 Fernando Perez <fperez@colorado.edu>
3623 3627
3624 3628 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3625 3629 matplotlib-related fixes so that using @run with non-matplotlib
3626 3630 scripts doesn't pop up spurious plot windows. This requires
3627 3631 matplotlib >= 0.63, where I had to make some changes as well.
3628 3632
3629 3633 * IPython/ipmaker.py (make_IPython): update version requirement to
3630 3634 python 2.2.
3631 3635
3632 3636 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3633 3637 banner arg for embedded customization.
3634 3638
3635 3639 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3636 3640 explicit uses of __IP as the IPython's instance name. Now things
3637 3641 are properly handled via the shell.name value. The actual code
3638 3642 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3639 3643 is much better than before. I'll clean things completely when the
3640 3644 magic stuff gets a real overhaul.
3641 3645
3642 3646 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3643 3647 minor changes to debian dir.
3644 3648
3645 3649 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3646 3650 pointer to the shell itself in the interactive namespace even when
3647 3651 a user-supplied dict is provided. This is needed for embedding
3648 3652 purposes (found by tests with Michel Sanner).
3649 3653
3650 3654 2004-09-27 Fernando Perez <fperez@colorado.edu>
3651 3655
3652 3656 * IPython/UserConfig/ipythonrc: remove []{} from
3653 3657 readline_remove_delims, so that things like [modname.<TAB> do
3654 3658 proper completion. This disables [].TAB, but that's a less common
3655 3659 case than module names in list comprehensions, for example.
3656 3660 Thanks to a report by Andrea Riciputi.
3657 3661
3658 3662 2004-09-09 Fernando Perez <fperez@colorado.edu>
3659 3663
3660 3664 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3661 3665 blocking problems in win32 and osx. Fix by John.
3662 3666
3663 3667 2004-09-08 Fernando Perez <fperez@colorado.edu>
3664 3668
3665 3669 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3666 3670 for Win32 and OSX. Fix by John Hunter.
3667 3671
3668 3672 2004-08-30 *** Released version 0.6.3
3669 3673
3670 3674 2004-08-30 Fernando Perez <fperez@colorado.edu>
3671 3675
3672 3676 * setup.py (isfile): Add manpages to list of dependent files to be
3673 3677 updated.
3674 3678
3675 3679 2004-08-27 Fernando Perez <fperez@colorado.edu>
3676 3680
3677 3681 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3678 3682 for now. They don't really work with standalone WX/GTK code
3679 3683 (though matplotlib IS working fine with both of those backends).
3680 3684 This will neeed much more testing. I disabled most things with
3681 3685 comments, so turning it back on later should be pretty easy.
3682 3686
3683 3687 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3684 3688 autocalling of expressions like r'foo', by modifying the line
3685 3689 split regexp. Closes
3686 3690 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3687 3691 Riley <ipythonbugs-AT-sabi.net>.
3688 3692 (InteractiveShell.mainloop): honor --nobanner with banner
3689 3693 extensions.
3690 3694
3691 3695 * IPython/Shell.py: Significant refactoring of all classes, so
3692 3696 that we can really support ALL matplotlib backends and threading
3693 3697 models (John spotted a bug with Tk which required this). Now we
3694 3698 should support single-threaded, WX-threads and GTK-threads, both
3695 3699 for generic code and for matplotlib.
3696 3700
3697 3701 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3698 3702 -pylab, to simplify things for users. Will also remove the pylab
3699 3703 profile, since now all of matplotlib configuration is directly
3700 3704 handled here. This also reduces startup time.
3701 3705
3702 3706 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3703 3707 shell wasn't being correctly called. Also in IPShellWX.
3704 3708
3705 3709 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3706 3710 fine-tune banner.
3707 3711
3708 3712 * IPython/numutils.py (spike): Deprecate these spike functions,
3709 3713 delete (long deprecated) gnuplot_exec handler.
3710 3714
3711 3715 2004-08-26 Fernando Perez <fperez@colorado.edu>
3712 3716
3713 3717 * ipython.1: Update for threading options, plus some others which
3714 3718 were missing.
3715 3719
3716 3720 * IPython/ipmaker.py (__call__): Added -wthread option for
3717 3721 wxpython thread handling. Make sure threading options are only
3718 3722 valid at the command line.
3719 3723
3720 3724 * scripts/ipython: moved shell selection into a factory function
3721 3725 in Shell.py, to keep the starter script to a minimum.
3722 3726
3723 3727 2004-08-25 Fernando Perez <fperez@colorado.edu>
3724 3728
3725 3729 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3726 3730 John. Along with some recent changes he made to matplotlib, the
3727 3731 next versions of both systems should work very well together.
3728 3732
3729 3733 2004-08-24 Fernando Perez <fperez@colorado.edu>
3730 3734
3731 3735 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3732 3736 tried to switch the profiling to using hotshot, but I'm getting
3733 3737 strange errors from prof.runctx() there. I may be misreading the
3734 3738 docs, but it looks weird. For now the profiling code will
3735 3739 continue to use the standard profiler.
3736 3740
3737 3741 2004-08-23 Fernando Perez <fperez@colorado.edu>
3738 3742
3739 3743 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3740 3744 threaded shell, by John Hunter. It's not quite ready yet, but
3741 3745 close.
3742 3746
3743 3747 2004-08-22 Fernando Perez <fperez@colorado.edu>
3744 3748
3745 3749 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3746 3750 in Magic and ultraTB.
3747 3751
3748 3752 * ipython.1: document threading options in manpage.
3749 3753
3750 3754 * scripts/ipython: Changed name of -thread option to -gthread,
3751 3755 since this is GTK specific. I want to leave the door open for a
3752 3756 -wthread option for WX, which will most likely be necessary. This
3753 3757 change affects usage and ipmaker as well.
3754 3758
3755 3759 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3756 3760 handle the matplotlib shell issues. Code by John Hunter
3757 3761 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3758 3762 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3759 3763 broken (and disabled for end users) for now, but it puts the
3760 3764 infrastructure in place.
3761 3765
3762 3766 2004-08-21 Fernando Perez <fperez@colorado.edu>
3763 3767
3764 3768 * ipythonrc-pylab: Add matplotlib support.
3765 3769
3766 3770 * matplotlib_config.py: new files for matplotlib support, part of
3767 3771 the pylab profile.
3768 3772
3769 3773 * IPython/usage.py (__doc__): documented the threading options.
3770 3774
3771 3775 2004-08-20 Fernando Perez <fperez@colorado.edu>
3772 3776
3773 3777 * ipython: Modified the main calling routine to handle the -thread
3774 3778 and -mpthread options. This needs to be done as a top-level hack,
3775 3779 because it determines which class to instantiate for IPython
3776 3780 itself.
3777 3781
3778 3782 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3779 3783 classes to support multithreaded GTK operation without blocking,
3780 3784 and matplotlib with all backends. This is a lot of still very
3781 3785 experimental code, and threads are tricky. So it may still have a
3782 3786 few rough edges... This code owes a lot to
3783 3787 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3784 3788 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3785 3789 to John Hunter for all the matplotlib work.
3786 3790
3787 3791 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3788 3792 options for gtk thread and matplotlib support.
3789 3793
3790 3794 2004-08-16 Fernando Perez <fperez@colorado.edu>
3791 3795
3792 3796 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3793 3797 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3794 3798 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3795 3799
3796 3800 2004-08-11 Fernando Perez <fperez@colorado.edu>
3797 3801
3798 3802 * setup.py (isfile): Fix build so documentation gets updated for
3799 3803 rpms (it was only done for .tgz builds).
3800 3804
3801 3805 2004-08-10 Fernando Perez <fperez@colorado.edu>
3802 3806
3803 3807 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3804 3808
3805 3809 * iplib.py : Silence syntax error exceptions in tab-completion.
3806 3810
3807 3811 2004-08-05 Fernando Perez <fperez@colorado.edu>
3808 3812
3809 3813 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3810 3814 'color off' mark for continuation prompts. This was causing long
3811 3815 continuation lines to mis-wrap.
3812 3816
3813 3817 2004-08-01 Fernando Perez <fperez@colorado.edu>
3814 3818
3815 3819 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3816 3820 for building ipython to be a parameter. All this is necessary
3817 3821 right now to have a multithreaded version, but this insane
3818 3822 non-design will be cleaned up soon. For now, it's a hack that
3819 3823 works.
3820 3824
3821 3825 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3822 3826 args in various places. No bugs so far, but it's a dangerous
3823 3827 practice.
3824 3828
3825 3829 2004-07-31 Fernando Perez <fperez@colorado.edu>
3826 3830
3827 3831 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3828 3832 fix completion of files with dots in their names under most
3829 3833 profiles (pysh was OK because the completion order is different).
3830 3834
3831 3835 2004-07-27 Fernando Perez <fperez@colorado.edu>
3832 3836
3833 3837 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3834 3838 keywords manually, b/c the one in keyword.py was removed in python
3835 3839 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3836 3840 This is NOT a bug under python 2.3 and earlier.
3837 3841
3838 3842 2004-07-26 Fernando Perez <fperez@colorado.edu>
3839 3843
3840 3844 * IPython/ultraTB.py (VerboseTB.text): Add another
3841 3845 linecache.checkcache() call to try to prevent inspect.py from
3842 3846 crashing under python 2.3. I think this fixes
3843 3847 http://www.scipy.net/roundup/ipython/issue17.
3844 3848
3845 3849 2004-07-26 *** Released version 0.6.2
3846 3850
3847 3851 2004-07-26 Fernando Perez <fperez@colorado.edu>
3848 3852
3849 3853 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3850 3854 fail for any number.
3851 3855 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3852 3856 empty bookmarks.
3853 3857
3854 3858 2004-07-26 *** Released version 0.6.1
3855 3859
3856 3860 2004-07-26 Fernando Perez <fperez@colorado.edu>
3857 3861
3858 3862 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3859 3863
3860 3864 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3861 3865 escaping '()[]{}' in filenames.
3862 3866
3863 3867 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3864 3868 Python 2.2 users who lack a proper shlex.split.
3865 3869
3866 3870 2004-07-19 Fernando Perez <fperez@colorado.edu>
3867 3871
3868 3872 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3869 3873 for reading readline's init file. I follow the normal chain:
3870 3874 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3871 3875 report by Mike Heeter. This closes
3872 3876 http://www.scipy.net/roundup/ipython/issue16.
3873 3877
3874 3878 2004-07-18 Fernando Perez <fperez@colorado.edu>
3875 3879
3876 3880 * IPython/iplib.py (__init__): Add better handling of '\' under
3877 3881 Win32 for filenames. After a patch by Ville.
3878 3882
3879 3883 2004-07-17 Fernando Perez <fperez@colorado.edu>
3880 3884
3881 3885 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3882 3886 autocalling would be triggered for 'foo is bar' if foo is
3883 3887 callable. I also cleaned up the autocall detection code to use a
3884 3888 regexp, which is faster. Bug reported by Alexander Schmolck.
3885 3889
3886 3890 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3887 3891 '?' in them would confuse the help system. Reported by Alex
3888 3892 Schmolck.
3889 3893
3890 3894 2004-07-16 Fernando Perez <fperez@colorado.edu>
3891 3895
3892 3896 * IPython/GnuplotInteractive.py (__all__): added plot2.
3893 3897
3894 3898 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3895 3899 plotting dictionaries, lists or tuples of 1d arrays.
3896 3900
3897 3901 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3898 3902 optimizations.
3899 3903
3900 3904 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3901 3905 the information which was there from Janko's original IPP code:
3902 3906
3903 3907 03.05.99 20:53 porto.ifm.uni-kiel.de
3904 3908 --Started changelog.
3905 3909 --make clear do what it say it does
3906 3910 --added pretty output of lines from inputcache
3907 3911 --Made Logger a mixin class, simplifies handling of switches
3908 3912 --Added own completer class. .string<TAB> expands to last history
3909 3913 line which starts with string. The new expansion is also present
3910 3914 with Ctrl-r from the readline library. But this shows, who this
3911 3915 can be done for other cases.
3912 3916 --Added convention that all shell functions should accept a
3913 3917 parameter_string This opens the door for different behaviour for
3914 3918 each function. @cd is a good example of this.
3915 3919
3916 3920 04.05.99 12:12 porto.ifm.uni-kiel.de
3917 3921 --added logfile rotation
3918 3922 --added new mainloop method which freezes first the namespace
3919 3923
3920 3924 07.05.99 21:24 porto.ifm.uni-kiel.de
3921 3925 --added the docreader classes. Now there is a help system.
3922 3926 -This is only a first try. Currently it's not easy to put new
3923 3927 stuff in the indices. But this is the way to go. Info would be
3924 3928 better, but HTML is every where and not everybody has an info
3925 3929 system installed and it's not so easy to change html-docs to info.
3926 3930 --added global logfile option
3927 3931 --there is now a hook for object inspection method pinfo needs to
3928 3932 be provided for this. Can be reached by two '??'.
3929 3933
3930 3934 08.05.99 20:51 porto.ifm.uni-kiel.de
3931 3935 --added a README
3932 3936 --bug in rc file. Something has changed so functions in the rc
3933 3937 file need to reference the shell and not self. Not clear if it's a
3934 3938 bug or feature.
3935 3939 --changed rc file for new behavior
3936 3940
3937 3941 2004-07-15 Fernando Perez <fperez@colorado.edu>
3938 3942
3939 3943 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3940 3944 cache was falling out of sync in bizarre manners when multi-line
3941 3945 input was present. Minor optimizations and cleanup.
3942 3946
3943 3947 (Logger): Remove old Changelog info for cleanup. This is the
3944 3948 information which was there from Janko's original code:
3945 3949
3946 3950 Changes to Logger: - made the default log filename a parameter
3947 3951
3948 3952 - put a check for lines beginning with !@? in log(). Needed
3949 3953 (even if the handlers properly log their lines) for mid-session
3950 3954 logging activation to work properly. Without this, lines logged
3951 3955 in mid session, which get read from the cache, would end up
3952 3956 'bare' (with !@? in the open) in the log. Now they are caught
3953 3957 and prepended with a #.
3954 3958
3955 3959 * IPython/iplib.py (InteractiveShell.init_readline): added check
3956 3960 in case MagicCompleter fails to be defined, so we don't crash.
3957 3961
3958 3962 2004-07-13 Fernando Perez <fperez@colorado.edu>
3959 3963
3960 3964 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3961 3965 of EPS if the requested filename ends in '.eps'.
3962 3966
3963 3967 2004-07-04 Fernando Perez <fperez@colorado.edu>
3964 3968
3965 3969 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3966 3970 escaping of quotes when calling the shell.
3967 3971
3968 3972 2004-07-02 Fernando Perez <fperez@colorado.edu>
3969 3973
3970 3974 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3971 3975 gettext not working because we were clobbering '_'. Fixes
3972 3976 http://www.scipy.net/roundup/ipython/issue6.
3973 3977
3974 3978 2004-07-01 Fernando Perez <fperez@colorado.edu>
3975 3979
3976 3980 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3977 3981 into @cd. Patch by Ville.
3978 3982
3979 3983 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3980 3984 new function to store things after ipmaker runs. Patch by Ville.
3981 3985 Eventually this will go away once ipmaker is removed and the class
3982 3986 gets cleaned up, but for now it's ok. Key functionality here is
3983 3987 the addition of the persistent storage mechanism, a dict for
3984 3988 keeping data across sessions (for now just bookmarks, but more can
3985 3989 be implemented later).
3986 3990
3987 3991 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3988 3992 persistent across sections. Patch by Ville, I modified it
3989 3993 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3990 3994 added a '-l' option to list all bookmarks.
3991 3995
3992 3996 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3993 3997 center for cleanup. Registered with atexit.register(). I moved
3994 3998 here the old exit_cleanup(). After a patch by Ville.
3995 3999
3996 4000 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3997 4001 characters in the hacked shlex_split for python 2.2.
3998 4002
3999 4003 * IPython/iplib.py (file_matches): more fixes to filenames with
4000 4004 whitespace in them. It's not perfect, but limitations in python's
4001 4005 readline make it impossible to go further.
4002 4006
4003 4007 2004-06-29 Fernando Perez <fperez@colorado.edu>
4004 4008
4005 4009 * IPython/iplib.py (file_matches): escape whitespace correctly in
4006 4010 filename completions. Bug reported by Ville.
4007 4011
4008 4012 2004-06-28 Fernando Perez <fperez@colorado.edu>
4009 4013
4010 4014 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4011 4015 the history file will be called 'history-PROFNAME' (or just
4012 4016 'history' if no profile is loaded). I was getting annoyed at
4013 4017 getting my Numerical work history clobbered by pysh sessions.
4014 4018
4015 4019 * IPython/iplib.py (InteractiveShell.__init__): Internal
4016 4020 getoutputerror() function so that we can honor the system_verbose
4017 4021 flag for _all_ system calls. I also added escaping of #
4018 4022 characters here to avoid confusing Itpl.
4019 4023
4020 4024 * IPython/Magic.py (shlex_split): removed call to shell in
4021 4025 parse_options and replaced it with shlex.split(). The annoying
4022 4026 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4023 4027 to backport it from 2.3, with several frail hacks (the shlex
4024 4028 module is rather limited in 2.2). Thanks to a suggestion by Ville
4025 4029 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4026 4030 problem.
4027 4031
4028 4032 (Magic.magic_system_verbose): new toggle to print the actual
4029 4033 system calls made by ipython. Mainly for debugging purposes.
4030 4034
4031 4035 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4032 4036 doesn't support persistence. Reported (and fix suggested) by
4033 4037 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4034 4038
4035 4039 2004-06-26 Fernando Perez <fperez@colorado.edu>
4036 4040
4037 4041 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4038 4042 continue prompts.
4039 4043
4040 4044 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4041 4045 function (basically a big docstring) and a few more things here to
4042 4046 speedup startup. pysh.py is now very lightweight. We want because
4043 4047 it gets execfile'd, while InterpreterExec gets imported, so
4044 4048 byte-compilation saves time.
4045 4049
4046 4050 2004-06-25 Fernando Perez <fperez@colorado.edu>
4047 4051
4048 4052 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4049 4053 -NUM', which was recently broken.
4050 4054
4051 4055 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4052 4056 in multi-line input (but not !!, which doesn't make sense there).
4053 4057
4054 4058 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4055 4059 It's just too useful, and people can turn it off in the less
4056 4060 common cases where it's a problem.
4057 4061
4058 4062 2004-06-24 Fernando Perez <fperez@colorado.edu>
4059 4063
4060 4064 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4061 4065 special syntaxes (like alias calling) is now allied in multi-line
4062 4066 input. This is still _very_ experimental, but it's necessary for
4063 4067 efficient shell usage combining python looping syntax with system
4064 4068 calls. For now it's restricted to aliases, I don't think it
4065 4069 really even makes sense to have this for magics.
4066 4070
4067 4071 2004-06-23 Fernando Perez <fperez@colorado.edu>
4068 4072
4069 4073 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4070 4074 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4071 4075
4072 4076 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4073 4077 extensions under Windows (after code sent by Gary Bishop). The
4074 4078 extensions considered 'executable' are stored in IPython's rc
4075 4079 structure as win_exec_ext.
4076 4080
4077 4081 * IPython/genutils.py (shell): new function, like system() but
4078 4082 without return value. Very useful for interactive shell work.
4079 4083
4080 4084 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4081 4085 delete aliases.
4082 4086
4083 4087 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4084 4088 sure that the alias table doesn't contain python keywords.
4085 4089
4086 4090 2004-06-21 Fernando Perez <fperez@colorado.edu>
4087 4091
4088 4092 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4089 4093 non-existent items are found in $PATH. Reported by Thorsten.
4090 4094
4091 4095 2004-06-20 Fernando Perez <fperez@colorado.edu>
4092 4096
4093 4097 * IPython/iplib.py (complete): modified the completer so that the
4094 4098 order of priorities can be easily changed at runtime.
4095 4099
4096 4100 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4097 4101 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4098 4102
4099 4103 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4100 4104 expand Python variables prepended with $ in all system calls. The
4101 4105 same was done to InteractiveShell.handle_shell_escape. Now all
4102 4106 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4103 4107 expansion of python variables and expressions according to the
4104 4108 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4105 4109
4106 4110 Though PEP-215 has been rejected, a similar (but simpler) one
4107 4111 seems like it will go into Python 2.4, PEP-292 -
4108 4112 http://www.python.org/peps/pep-0292.html.
4109 4113
4110 4114 I'll keep the full syntax of PEP-215, since IPython has since the
4111 4115 start used Ka-Ping Yee's reference implementation discussed there
4112 4116 (Itpl), and I actually like the powerful semantics it offers.
4113 4117
4114 4118 In order to access normal shell variables, the $ has to be escaped
4115 4119 via an extra $. For example:
4116 4120
4117 4121 In [7]: PATH='a python variable'
4118 4122
4119 4123 In [8]: !echo $PATH
4120 4124 a python variable
4121 4125
4122 4126 In [9]: !echo $$PATH
4123 4127 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4124 4128
4125 4129 (Magic.parse_options): escape $ so the shell doesn't evaluate
4126 4130 things prematurely.
4127 4131
4128 4132 * IPython/iplib.py (InteractiveShell.call_alias): added the
4129 4133 ability for aliases to expand python variables via $.
4130 4134
4131 4135 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4132 4136 system, now there's a @rehash/@rehashx pair of magics. These work
4133 4137 like the csh rehash command, and can be invoked at any time. They
4134 4138 build a table of aliases to everything in the user's $PATH
4135 4139 (@rehash uses everything, @rehashx is slower but only adds
4136 4140 executable files). With this, the pysh.py-based shell profile can
4137 4141 now simply call rehash upon startup, and full access to all
4138 4142 programs in the user's path is obtained.
4139 4143
4140 4144 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4141 4145 functionality is now fully in place. I removed the old dynamic
4142 4146 code generation based approach, in favor of a much lighter one
4143 4147 based on a simple dict. The advantage is that this allows me to
4144 4148 now have thousands of aliases with negligible cost (unthinkable
4145 4149 with the old system).
4146 4150
4147 4151 2004-06-19 Fernando Perez <fperez@colorado.edu>
4148 4152
4149 4153 * IPython/iplib.py (__init__): extended MagicCompleter class to
4150 4154 also complete (last in priority) on user aliases.
4151 4155
4152 4156 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4153 4157 call to eval.
4154 4158 (ItplNS.__init__): Added a new class which functions like Itpl,
4155 4159 but allows configuring the namespace for the evaluation to occur
4156 4160 in.
4157 4161
4158 4162 2004-06-18 Fernando Perez <fperez@colorado.edu>
4159 4163
4160 4164 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4161 4165 better message when 'exit' or 'quit' are typed (a common newbie
4162 4166 confusion).
4163 4167
4164 4168 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4165 4169 check for Windows users.
4166 4170
4167 4171 * IPython/iplib.py (InteractiveShell.user_setup): removed
4168 4172 disabling of colors for Windows. I'll test at runtime and issue a
4169 4173 warning if Gary's readline isn't found, as to nudge users to
4170 4174 download it.
4171 4175
4172 4176 2004-06-16 Fernando Perez <fperez@colorado.edu>
4173 4177
4174 4178 * IPython/genutils.py (Stream.__init__): changed to print errors
4175 4179 to sys.stderr. I had a circular dependency here. Now it's
4176 4180 possible to run ipython as IDLE's shell (consider this pre-alpha,
4177 4181 since true stdout things end up in the starting terminal instead
4178 4182 of IDLE's out).
4179 4183
4180 4184 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4181 4185 users who haven't # updated their prompt_in2 definitions. Remove
4182 4186 eventually.
4183 4187 (multiple_replace): added credit to original ASPN recipe.
4184 4188
4185 4189 2004-06-15 Fernando Perez <fperez@colorado.edu>
4186 4190
4187 4191 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4188 4192 list of auto-defined aliases.
4189 4193
4190 4194 2004-06-13 Fernando Perez <fperez@colorado.edu>
4191 4195
4192 4196 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4193 4197 install was really requested (so setup.py can be used for other
4194 4198 things under Windows).
4195 4199
4196 4200 2004-06-10 Fernando Perez <fperez@colorado.edu>
4197 4201
4198 4202 * IPython/Logger.py (Logger.create_log): Manually remove any old
4199 4203 backup, since os.remove may fail under Windows. Fixes bug
4200 4204 reported by Thorsten.
4201 4205
4202 4206 2004-06-09 Fernando Perez <fperez@colorado.edu>
4203 4207
4204 4208 * examples/example-embed.py: fixed all references to %n (replaced
4205 4209 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4206 4210 for all examples and the manual as well.
4207 4211
4208 4212 2004-06-08 Fernando Perez <fperez@colorado.edu>
4209 4213
4210 4214 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4211 4215 alignment and color management. All 3 prompt subsystems now
4212 4216 inherit from BasePrompt.
4213 4217
4214 4218 * tools/release: updates for windows installer build and tag rpms
4215 4219 with python version (since paths are fixed).
4216 4220
4217 4221 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4218 4222 which will become eventually obsolete. Also fixed the default
4219 4223 prompt_in2 to use \D, so at least new users start with the correct
4220 4224 defaults.
4221 4225 WARNING: Users with existing ipythonrc files will need to apply
4222 4226 this fix manually!
4223 4227
4224 4228 * setup.py: make windows installer (.exe). This is finally the
4225 4229 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4226 4230 which I hadn't included because it required Python 2.3 (or recent
4227 4231 distutils).
4228 4232
4229 4233 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4230 4234 usage of new '\D' escape.
4231 4235
4232 4236 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4233 4237 lacks os.getuid())
4234 4238 (CachedOutput.set_colors): Added the ability to turn coloring
4235 4239 on/off with @colors even for manually defined prompt colors. It
4236 4240 uses a nasty global, but it works safely and via the generic color
4237 4241 handling mechanism.
4238 4242 (Prompt2.__init__): Introduced new escape '\D' for continuation
4239 4243 prompts. It represents the counter ('\#') as dots.
4240 4244 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4241 4245 need to update their ipythonrc files and replace '%n' with '\D' in
4242 4246 their prompt_in2 settings everywhere. Sorry, but there's
4243 4247 otherwise no clean way to get all prompts to properly align. The
4244 4248 ipythonrc shipped with IPython has been updated.
4245 4249
4246 4250 2004-06-07 Fernando Perez <fperez@colorado.edu>
4247 4251
4248 4252 * setup.py (isfile): Pass local_icons option to latex2html, so the
4249 4253 resulting HTML file is self-contained. Thanks to
4250 4254 dryice-AT-liu.com.cn for the tip.
4251 4255
4252 4256 * pysh.py: I created a new profile 'shell', which implements a
4253 4257 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4254 4258 system shell, nor will it become one anytime soon. It's mainly
4255 4259 meant to illustrate the use of the new flexible bash-like prompts.
4256 4260 I guess it could be used by hardy souls for true shell management,
4257 4261 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4258 4262 profile. This uses the InterpreterExec extension provided by
4259 4263 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4260 4264
4261 4265 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4262 4266 auto-align itself with the length of the previous input prompt
4263 4267 (taking into account the invisible color escapes).
4264 4268 (CachedOutput.__init__): Large restructuring of this class. Now
4265 4269 all three prompts (primary1, primary2, output) are proper objects,
4266 4270 managed by the 'parent' CachedOutput class. The code is still a
4267 4271 bit hackish (all prompts share state via a pointer to the cache),
4268 4272 but it's overall far cleaner than before.
4269 4273
4270 4274 * IPython/genutils.py (getoutputerror): modified to add verbose,
4271 4275 debug and header options. This makes the interface of all getout*
4272 4276 functions uniform.
4273 4277 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4274 4278
4275 4279 * IPython/Magic.py (Magic.default_option): added a function to
4276 4280 allow registering default options for any magic command. This
4277 4281 makes it easy to have profiles which customize the magics globally
4278 4282 for a certain use. The values set through this function are
4279 4283 picked up by the parse_options() method, which all magics should
4280 4284 use to parse their options.
4281 4285
4282 4286 * IPython/genutils.py (warn): modified the warnings framework to
4283 4287 use the Term I/O class. I'm trying to slowly unify all of
4284 4288 IPython's I/O operations to pass through Term.
4285 4289
4286 4290 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4287 4291 the secondary prompt to correctly match the length of the primary
4288 4292 one for any prompt. Now multi-line code will properly line up
4289 4293 even for path dependent prompts, such as the new ones available
4290 4294 via the prompt_specials.
4291 4295
4292 4296 2004-06-06 Fernando Perez <fperez@colorado.edu>
4293 4297
4294 4298 * IPython/Prompts.py (prompt_specials): Added the ability to have
4295 4299 bash-like special sequences in the prompts, which get
4296 4300 automatically expanded. Things like hostname, current working
4297 4301 directory and username are implemented already, but it's easy to
4298 4302 add more in the future. Thanks to a patch by W.J. van der Laan
4299 4303 <gnufnork-AT-hetdigitalegat.nl>
4300 4304 (prompt_specials): Added color support for prompt strings, so
4301 4305 users can define arbitrary color setups for their prompts.
4302 4306
4303 4307 2004-06-05 Fernando Perez <fperez@colorado.edu>
4304 4308
4305 4309 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4306 4310 code to load Gary Bishop's readline and configure it
4307 4311 automatically. Thanks to Gary for help on this.
4308 4312
4309 4313 2004-06-01 Fernando Perez <fperez@colorado.edu>
4310 4314
4311 4315 * IPython/Logger.py (Logger.create_log): fix bug for logging
4312 4316 with no filename (previous fix was incomplete).
4313 4317
4314 4318 2004-05-25 Fernando Perez <fperez@colorado.edu>
4315 4319
4316 4320 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4317 4321 parens would get passed to the shell.
4318 4322
4319 4323 2004-05-20 Fernando Perez <fperez@colorado.edu>
4320 4324
4321 4325 * IPython/Magic.py (Magic.magic_prun): changed default profile
4322 4326 sort order to 'time' (the more common profiling need).
4323 4327
4324 4328 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4325 4329 so that source code shown is guaranteed in sync with the file on
4326 4330 disk (also changed in psource). Similar fix to the one for
4327 4331 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4328 4332 <yann.ledu-AT-noos.fr>.
4329 4333
4330 4334 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4331 4335 with a single option would not be correctly parsed. Closes
4332 4336 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4333 4337 introduced in 0.6.0 (on 2004-05-06).
4334 4338
4335 4339 2004-05-13 *** Released version 0.6.0
4336 4340
4337 4341 2004-05-13 Fernando Perez <fperez@colorado.edu>
4338 4342
4339 4343 * debian/: Added debian/ directory to CVS, so that debian support
4340 4344 is publicly accessible. The debian package is maintained by Jack
4341 4345 Moffit <jack-AT-xiph.org>.
4342 4346
4343 4347 * Documentation: included the notes about an ipython-based system
4344 4348 shell (the hypothetical 'pysh') into the new_design.pdf document,
4345 4349 so that these ideas get distributed to users along with the
4346 4350 official documentation.
4347 4351
4348 4352 2004-05-10 Fernando Perez <fperez@colorado.edu>
4349 4353
4350 4354 * IPython/Logger.py (Logger.create_log): fix recently introduced
4351 4355 bug (misindented line) where logstart would fail when not given an
4352 4356 explicit filename.
4353 4357
4354 4358 2004-05-09 Fernando Perez <fperez@colorado.edu>
4355 4359
4356 4360 * IPython/Magic.py (Magic.parse_options): skip system call when
4357 4361 there are no options to look for. Faster, cleaner for the common
4358 4362 case.
4359 4363
4360 4364 * Documentation: many updates to the manual: describing Windows
4361 4365 support better, Gnuplot updates, credits, misc small stuff. Also
4362 4366 updated the new_design doc a bit.
4363 4367
4364 4368 2004-05-06 *** Released version 0.6.0.rc1
4365 4369
4366 4370 2004-05-06 Fernando Perez <fperez@colorado.edu>
4367 4371
4368 4372 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4369 4373 operations to use the vastly more efficient list/''.join() method.
4370 4374 (FormattedTB.text): Fix
4371 4375 http://www.scipy.net/roundup/ipython/issue12 - exception source
4372 4376 extract not updated after reload. Thanks to Mike Salib
4373 4377 <msalib-AT-mit.edu> for pinning the source of the problem.
4374 4378 Fortunately, the solution works inside ipython and doesn't require
4375 4379 any changes to python proper.
4376 4380
4377 4381 * IPython/Magic.py (Magic.parse_options): Improved to process the
4378 4382 argument list as a true shell would (by actually using the
4379 4383 underlying system shell). This way, all @magics automatically get
4380 4384 shell expansion for variables. Thanks to a comment by Alex
4381 4385 Schmolck.
4382 4386
4383 4387 2004-04-04 Fernando Perez <fperez@colorado.edu>
4384 4388
4385 4389 * IPython/iplib.py (InteractiveShell.interact): Added a special
4386 4390 trap for a debugger quit exception, which is basically impossible
4387 4391 to handle by normal mechanisms, given what pdb does to the stack.
4388 4392 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4389 4393
4390 4394 2004-04-03 Fernando Perez <fperez@colorado.edu>
4391 4395
4392 4396 * IPython/genutils.py (Term): Standardized the names of the Term
4393 4397 class streams to cin/cout/cerr, following C++ naming conventions
4394 4398 (I can't use in/out/err because 'in' is not a valid attribute
4395 4399 name).
4396 4400
4397 4401 * IPython/iplib.py (InteractiveShell.interact): don't increment
4398 4402 the prompt if there's no user input. By Daniel 'Dang' Griffith
4399 4403 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4400 4404 Francois Pinard.
4401 4405
4402 4406 2004-04-02 Fernando Perez <fperez@colorado.edu>
4403 4407
4404 4408 * IPython/genutils.py (Stream.__init__): Modified to survive at
4405 4409 least importing in contexts where stdin/out/err aren't true file
4406 4410 objects, such as PyCrust (they lack fileno() and mode). However,
4407 4411 the recovery facilities which rely on these things existing will
4408 4412 not work.
4409 4413
4410 4414 2004-04-01 Fernando Perez <fperez@colorado.edu>
4411 4415
4412 4416 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4413 4417 use the new getoutputerror() function, so it properly
4414 4418 distinguishes stdout/err.
4415 4419
4416 4420 * IPython/genutils.py (getoutputerror): added a function to
4417 4421 capture separately the standard output and error of a command.
4418 4422 After a comment from dang on the mailing lists. This code is
4419 4423 basically a modified version of commands.getstatusoutput(), from
4420 4424 the standard library.
4421 4425
4422 4426 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4423 4427 '!!' as a special syntax (shorthand) to access @sx.
4424 4428
4425 4429 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4426 4430 command and return its output as a list split on '\n'.
4427 4431
4428 4432 2004-03-31 Fernando Perez <fperez@colorado.edu>
4429 4433
4430 4434 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4431 4435 method to dictionaries used as FakeModule instances if they lack
4432 4436 it. At least pydoc in python2.3 breaks for runtime-defined
4433 4437 functions without this hack. At some point I need to _really_
4434 4438 understand what FakeModule is doing, because it's a gross hack.
4435 4439 But it solves Arnd's problem for now...
4436 4440
4437 4441 2004-02-27 Fernando Perez <fperez@colorado.edu>
4438 4442
4439 4443 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4440 4444 mode would behave erratically. Also increased the number of
4441 4445 possible logs in rotate mod to 999. Thanks to Rod Holland
4442 4446 <rhh@StructureLABS.com> for the report and fixes.
4443 4447
4444 4448 2004-02-26 Fernando Perez <fperez@colorado.edu>
4445 4449
4446 4450 * IPython/genutils.py (page): Check that the curses module really
4447 4451 has the initscr attribute before trying to use it. For some
4448 4452 reason, the Solaris curses module is missing this. I think this
4449 4453 should be considered a Solaris python bug, but I'm not sure.
4450 4454
4451 4455 2004-01-17 Fernando Perez <fperez@colorado.edu>
4452 4456
4453 4457 * IPython/genutils.py (Stream.__init__): Changes to try to make
4454 4458 ipython robust against stdin/out/err being closed by the user.
4455 4459 This is 'user error' (and blocks a normal python session, at least
4456 4460 the stdout case). However, Ipython should be able to survive such
4457 4461 instances of abuse as gracefully as possible. To simplify the
4458 4462 coding and maintain compatibility with Gary Bishop's Term
4459 4463 contributions, I've made use of classmethods for this. I think
4460 4464 this introduces a dependency on python 2.2.
4461 4465
4462 4466 2004-01-13 Fernando Perez <fperez@colorado.edu>
4463 4467
4464 4468 * IPython/numutils.py (exp_safe): simplified the code a bit and
4465 4469 removed the need for importing the kinds module altogether.
4466 4470
4467 4471 2004-01-06 Fernando Perez <fperez@colorado.edu>
4468 4472
4469 4473 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4470 4474 a magic function instead, after some community feedback. No
4471 4475 special syntax will exist for it, but its name is deliberately
4472 4476 very short.
4473 4477
4474 4478 2003-12-20 Fernando Perez <fperez@colorado.edu>
4475 4479
4476 4480 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4477 4481 new functionality, to automagically assign the result of a shell
4478 4482 command to a variable. I'll solicit some community feedback on
4479 4483 this before making it permanent.
4480 4484
4481 4485 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4482 4486 requested about callables for which inspect couldn't obtain a
4483 4487 proper argspec. Thanks to a crash report sent by Etienne
4484 4488 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4485 4489
4486 4490 2003-12-09 Fernando Perez <fperez@colorado.edu>
4487 4491
4488 4492 * IPython/genutils.py (page): patch for the pager to work across
4489 4493 various versions of Windows. By Gary Bishop.
4490 4494
4491 4495 2003-12-04 Fernando Perez <fperez@colorado.edu>
4492 4496
4493 4497 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4494 4498 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4495 4499 While I tested this and it looks ok, there may still be corner
4496 4500 cases I've missed.
4497 4501
4498 4502 2003-12-01 Fernando Perez <fperez@colorado.edu>
4499 4503
4500 4504 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4501 4505 where a line like 'p,q=1,2' would fail because the automagic
4502 4506 system would be triggered for @p.
4503 4507
4504 4508 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4505 4509 cleanups, code unmodified.
4506 4510
4507 4511 * IPython/genutils.py (Term): added a class for IPython to handle
4508 4512 output. In most cases it will just be a proxy for stdout/err, but
4509 4513 having this allows modifications to be made for some platforms,
4510 4514 such as handling color escapes under Windows. All of this code
4511 4515 was contributed by Gary Bishop, with minor modifications by me.
4512 4516 The actual changes affect many files.
4513 4517
4514 4518 2003-11-30 Fernando Perez <fperez@colorado.edu>
4515 4519
4516 4520 * IPython/iplib.py (file_matches): new completion code, courtesy
4517 4521 of Jeff Collins. This enables filename completion again under
4518 4522 python 2.3, which disabled it at the C level.
4519 4523
4520 4524 2003-11-11 Fernando Perez <fperez@colorado.edu>
4521 4525
4522 4526 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4523 4527 for Numeric.array(map(...)), but often convenient.
4524 4528
4525 4529 2003-11-05 Fernando Perez <fperez@colorado.edu>
4526 4530
4527 4531 * IPython/numutils.py (frange): Changed a call from int() to
4528 4532 int(round()) to prevent a problem reported with arange() in the
4529 4533 numpy list.
4530 4534
4531 4535 2003-10-06 Fernando Perez <fperez@colorado.edu>
4532 4536
4533 4537 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4534 4538 prevent crashes if sys lacks an argv attribute (it happens with
4535 4539 embedded interpreters which build a bare-bones sys module).
4536 4540 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4537 4541
4538 4542 2003-09-24 Fernando Perez <fperez@colorado.edu>
4539 4543
4540 4544 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4541 4545 to protect against poorly written user objects where __getattr__
4542 4546 raises exceptions other than AttributeError. Thanks to a bug
4543 4547 report by Oliver Sander <osander-AT-gmx.de>.
4544 4548
4545 4549 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4546 4550 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4547 4551
4548 4552 2003-09-09 Fernando Perez <fperez@colorado.edu>
4549 4553
4550 4554 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4551 4555 unpacking a list whith a callable as first element would
4552 4556 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4553 4557 Collins.
4554 4558
4555 4559 2003-08-25 *** Released version 0.5.0
4556 4560
4557 4561 2003-08-22 Fernando Perez <fperez@colorado.edu>
4558 4562
4559 4563 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4560 4564 improperly defined user exceptions. Thanks to feedback from Mark
4561 4565 Russell <mrussell-AT-verio.net>.
4562 4566
4563 4567 2003-08-20 Fernando Perez <fperez@colorado.edu>
4564 4568
4565 4569 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4566 4570 printing so that it would print multi-line string forms starting
4567 4571 with a new line. This way the formatting is better respected for
4568 4572 objects which work hard to make nice string forms.
4569 4573
4570 4574 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4571 4575 autocall would overtake data access for objects with both
4572 4576 __getitem__ and __call__.
4573 4577
4574 4578 2003-08-19 *** Released version 0.5.0-rc1
4575 4579
4576 4580 2003-08-19 Fernando Perez <fperez@colorado.edu>
4577 4581
4578 4582 * IPython/deep_reload.py (load_tail): single tiny change here
4579 4583 seems to fix the long-standing bug of dreload() failing to work
4580 4584 for dotted names. But this module is pretty tricky, so I may have
4581 4585 missed some subtlety. Needs more testing!.
4582 4586
4583 4587 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4584 4588 exceptions which have badly implemented __str__ methods.
4585 4589 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4586 4590 which I've been getting reports about from Python 2.3 users. I
4587 4591 wish I had a simple test case to reproduce the problem, so I could
4588 4592 either write a cleaner workaround or file a bug report if
4589 4593 necessary.
4590 4594
4591 4595 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4592 4596 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4593 4597 a bug report by Tjabo Kloppenburg.
4594 4598
4595 4599 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4596 4600 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4597 4601 seems rather unstable. Thanks to a bug report by Tjabo
4598 4602 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4599 4603
4600 4604 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4601 4605 this out soon because of the critical fixes in the inner loop for
4602 4606 generators.
4603 4607
4604 4608 * IPython/Magic.py (Magic.getargspec): removed. This (and
4605 4609 _get_def) have been obsoleted by OInspect for a long time, I
4606 4610 hadn't noticed that they were dead code.
4607 4611 (Magic._ofind): restored _ofind functionality for a few literals
4608 4612 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4609 4613 for things like "hello".capitalize?, since that would require a
4610 4614 potentially dangerous eval() again.
4611 4615
4612 4616 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4613 4617 logic a bit more to clean up the escapes handling and minimize the
4614 4618 use of _ofind to only necessary cases. The interactive 'feel' of
4615 4619 IPython should have improved quite a bit with the changes in
4616 4620 _prefilter and _ofind (besides being far safer than before).
4617 4621
4618 4622 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4619 4623 obscure, never reported). Edit would fail to find the object to
4620 4624 edit under some circumstances.
4621 4625 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4622 4626 which were causing double-calling of generators. Those eval calls
4623 4627 were _very_ dangerous, since code with side effects could be
4624 4628 triggered. As they say, 'eval is evil'... These were the
4625 4629 nastiest evals in IPython. Besides, _ofind is now far simpler,
4626 4630 and it should also be quite a bit faster. Its use of inspect is
4627 4631 also safer, so perhaps some of the inspect-related crashes I've
4628 4632 seen lately with Python 2.3 might be taken care of. That will
4629 4633 need more testing.
4630 4634
4631 4635 2003-08-17 Fernando Perez <fperez@colorado.edu>
4632 4636
4633 4637 * IPython/iplib.py (InteractiveShell._prefilter): significant
4634 4638 simplifications to the logic for handling user escapes. Faster
4635 4639 and simpler code.
4636 4640
4637 4641 2003-08-14 Fernando Perez <fperez@colorado.edu>
4638 4642
4639 4643 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4640 4644 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4641 4645 but it should be quite a bit faster. And the recursive version
4642 4646 generated O(log N) intermediate storage for all rank>1 arrays,
4643 4647 even if they were contiguous.
4644 4648 (l1norm): Added this function.
4645 4649 (norm): Added this function for arbitrary norms (including
4646 4650 l-infinity). l1 and l2 are still special cases for convenience
4647 4651 and speed.
4648 4652
4649 4653 2003-08-03 Fernando Perez <fperez@colorado.edu>
4650 4654
4651 4655 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4652 4656 exceptions, which now raise PendingDeprecationWarnings in Python
4653 4657 2.3. There were some in Magic and some in Gnuplot2.
4654 4658
4655 4659 2003-06-30 Fernando Perez <fperez@colorado.edu>
4656 4660
4657 4661 * IPython/genutils.py (page): modified to call curses only for
4658 4662 terminals where TERM=='xterm'. After problems under many other
4659 4663 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4660 4664
4661 4665 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4662 4666 would be triggered when readline was absent. This was just an old
4663 4667 debugging statement I'd forgotten to take out.
4664 4668
4665 4669 2003-06-20 Fernando Perez <fperez@colorado.edu>
4666 4670
4667 4671 * IPython/genutils.py (clock): modified to return only user time
4668 4672 (not counting system time), after a discussion on scipy. While
4669 4673 system time may be a useful quantity occasionally, it may much
4670 4674 more easily be skewed by occasional swapping or other similar
4671 4675 activity.
4672 4676
4673 4677 2003-06-05 Fernando Perez <fperez@colorado.edu>
4674 4678
4675 4679 * IPython/numutils.py (identity): new function, for building
4676 4680 arbitrary rank Kronecker deltas (mostly backwards compatible with
4677 4681 Numeric.identity)
4678 4682
4679 4683 2003-06-03 Fernando Perez <fperez@colorado.edu>
4680 4684
4681 4685 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4682 4686 arguments passed to magics with spaces, to allow trailing '\' to
4683 4687 work normally (mainly for Windows users).
4684 4688
4685 4689 2003-05-29 Fernando Perez <fperez@colorado.edu>
4686 4690
4687 4691 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4688 4692 instead of pydoc.help. This fixes a bizarre behavior where
4689 4693 printing '%s' % locals() would trigger the help system. Now
4690 4694 ipython behaves like normal python does.
4691 4695
4692 4696 Note that if one does 'from pydoc import help', the bizarre
4693 4697 behavior returns, but this will also happen in normal python, so
4694 4698 it's not an ipython bug anymore (it has to do with how pydoc.help
4695 4699 is implemented).
4696 4700
4697 4701 2003-05-22 Fernando Perez <fperez@colorado.edu>
4698 4702
4699 4703 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4700 4704 return [] instead of None when nothing matches, also match to end
4701 4705 of line. Patch by Gary Bishop.
4702 4706
4703 4707 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4704 4708 protection as before, for files passed on the command line. This
4705 4709 prevents the CrashHandler from kicking in if user files call into
4706 4710 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4707 4711 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4708 4712
4709 4713 2003-05-20 *** Released version 0.4.0
4710 4714
4711 4715 2003-05-20 Fernando Perez <fperez@colorado.edu>
4712 4716
4713 4717 * setup.py: added support for manpages. It's a bit hackish b/c of
4714 4718 a bug in the way the bdist_rpm distutils target handles gzipped
4715 4719 manpages, but it works. After a patch by Jack.
4716 4720
4717 4721 2003-05-19 Fernando Perez <fperez@colorado.edu>
4718 4722
4719 4723 * IPython/numutils.py: added a mockup of the kinds module, since
4720 4724 it was recently removed from Numeric. This way, numutils will
4721 4725 work for all users even if they are missing kinds.
4722 4726
4723 4727 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4724 4728 failure, which can occur with SWIG-wrapped extensions. After a
4725 4729 crash report from Prabhu.
4726 4730
4727 4731 2003-05-16 Fernando Perez <fperez@colorado.edu>
4728 4732
4729 4733 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4730 4734 protect ipython from user code which may call directly
4731 4735 sys.excepthook (this looks like an ipython crash to the user, even
4732 4736 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4733 4737 This is especially important to help users of WxWindows, but may
4734 4738 also be useful in other cases.
4735 4739
4736 4740 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4737 4741 an optional tb_offset to be specified, and to preserve exception
4738 4742 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4739 4743
4740 4744 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4741 4745
4742 4746 2003-05-15 Fernando Perez <fperez@colorado.edu>
4743 4747
4744 4748 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4745 4749 installing for a new user under Windows.
4746 4750
4747 4751 2003-05-12 Fernando Perez <fperez@colorado.edu>
4748 4752
4749 4753 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4750 4754 handler for Emacs comint-based lines. Currently it doesn't do
4751 4755 much (but importantly, it doesn't update the history cache). In
4752 4756 the future it may be expanded if Alex needs more functionality
4753 4757 there.
4754 4758
4755 4759 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4756 4760 info to crash reports.
4757 4761
4758 4762 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4759 4763 just like Python's -c. Also fixed crash with invalid -color
4760 4764 option value at startup. Thanks to Will French
4761 4765 <wfrench-AT-bestweb.net> for the bug report.
4762 4766
4763 4767 2003-05-09 Fernando Perez <fperez@colorado.edu>
4764 4768
4765 4769 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4766 4770 to EvalDict (it's a mapping, after all) and simplified its code
4767 4771 quite a bit, after a nice discussion on c.l.py where Gustavo
4768 4772 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4769 4773
4770 4774 2003-04-30 Fernando Perez <fperez@colorado.edu>
4771 4775
4772 4776 * IPython/genutils.py (timings_out): modified it to reduce its
4773 4777 overhead in the common reps==1 case.
4774 4778
4775 4779 2003-04-29 Fernando Perez <fperez@colorado.edu>
4776 4780
4777 4781 * IPython/genutils.py (timings_out): Modified to use the resource
4778 4782 module, which avoids the wraparound problems of time.clock().
4779 4783
4780 4784 2003-04-17 *** Released version 0.2.15pre4
4781 4785
4782 4786 2003-04-17 Fernando Perez <fperez@colorado.edu>
4783 4787
4784 4788 * setup.py (scriptfiles): Split windows-specific stuff over to a
4785 4789 separate file, in an attempt to have a Windows GUI installer.
4786 4790 That didn't work, but part of the groundwork is done.
4787 4791
4788 4792 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4789 4793 indent/unindent with 4 spaces. Particularly useful in combination
4790 4794 with the new auto-indent option.
4791 4795
4792 4796 2003-04-16 Fernando Perez <fperez@colorado.edu>
4793 4797
4794 4798 * IPython/Magic.py: various replacements of self.rc for
4795 4799 self.shell.rc. A lot more remains to be done to fully disentangle
4796 4800 this class from the main Shell class.
4797 4801
4798 4802 * IPython/GnuplotRuntime.py: added checks for mouse support so
4799 4803 that we don't try to enable it if the current gnuplot doesn't
4800 4804 really support it. Also added checks so that we don't try to
4801 4805 enable persist under Windows (where Gnuplot doesn't recognize the
4802 4806 option).
4803 4807
4804 4808 * IPython/iplib.py (InteractiveShell.interact): Added optional
4805 4809 auto-indenting code, after a patch by King C. Shu
4806 4810 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4807 4811 get along well with pasting indented code. If I ever figure out
4808 4812 how to make that part go well, it will become on by default.
4809 4813
4810 4814 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4811 4815 crash ipython if there was an unmatched '%' in the user's prompt
4812 4816 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4813 4817
4814 4818 * IPython/iplib.py (InteractiveShell.interact): removed the
4815 4819 ability to ask the user whether he wants to crash or not at the
4816 4820 'last line' exception handler. Calling functions at that point
4817 4821 changes the stack, and the error reports would have incorrect
4818 4822 tracebacks.
4819 4823
4820 4824 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4821 4825 pass through a peger a pretty-printed form of any object. After a
4822 4826 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4823 4827
4824 4828 2003-04-14 Fernando Perez <fperez@colorado.edu>
4825 4829
4826 4830 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4827 4831 all files in ~ would be modified at first install (instead of
4828 4832 ~/.ipython). This could be potentially disastrous, as the
4829 4833 modification (make line-endings native) could damage binary files.
4830 4834
4831 4835 2003-04-10 Fernando Perez <fperez@colorado.edu>
4832 4836
4833 4837 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4834 4838 handle only lines which are invalid python. This now means that
4835 4839 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4836 4840 for the bug report.
4837 4841
4838 4842 2003-04-01 Fernando Perez <fperez@colorado.edu>
4839 4843
4840 4844 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4841 4845 where failing to set sys.last_traceback would crash pdb.pm().
4842 4846 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4843 4847 report.
4844 4848
4845 4849 2003-03-25 Fernando Perez <fperez@colorado.edu>
4846 4850
4847 4851 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4848 4852 before printing it (it had a lot of spurious blank lines at the
4849 4853 end).
4850 4854
4851 4855 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4852 4856 output would be sent 21 times! Obviously people don't use this
4853 4857 too often, or I would have heard about it.
4854 4858
4855 4859 2003-03-24 Fernando Perez <fperez@colorado.edu>
4856 4860
4857 4861 * setup.py (scriptfiles): renamed the data_files parameter from
4858 4862 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4859 4863 for the patch.
4860 4864
4861 4865 2003-03-20 Fernando Perez <fperez@colorado.edu>
4862 4866
4863 4867 * IPython/genutils.py (error): added error() and fatal()
4864 4868 functions.
4865 4869
4866 4870 2003-03-18 *** Released version 0.2.15pre3
4867 4871
4868 4872 2003-03-18 Fernando Perez <fperez@colorado.edu>
4869 4873
4870 4874 * setupext/install_data_ext.py
4871 4875 (install_data_ext.initialize_options): Class contributed by Jack
4872 4876 Moffit for fixing the old distutils hack. He is sending this to
4873 4877 the distutils folks so in the future we may not need it as a
4874 4878 private fix.
4875 4879
4876 4880 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4877 4881 changes for Debian packaging. See his patch for full details.
4878 4882 The old distutils hack of making the ipythonrc* files carry a
4879 4883 bogus .py extension is gone, at last. Examples were moved to a
4880 4884 separate subdir under doc/, and the separate executable scripts
4881 4885 now live in their own directory. Overall a great cleanup. The
4882 4886 manual was updated to use the new files, and setup.py has been
4883 4887 fixed for this setup.
4884 4888
4885 4889 * IPython/PyColorize.py (Parser.usage): made non-executable and
4886 4890 created a pycolor wrapper around it to be included as a script.
4887 4891
4888 4892 2003-03-12 *** Released version 0.2.15pre2
4889 4893
4890 4894 2003-03-12 Fernando Perez <fperez@colorado.edu>
4891 4895
4892 4896 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4893 4897 long-standing problem with garbage characters in some terminals.
4894 4898 The issue was really that the \001 and \002 escapes must _only_ be
4895 4899 passed to input prompts (which call readline), but _never_ to
4896 4900 normal text to be printed on screen. I changed ColorANSI to have
4897 4901 two classes: TermColors and InputTermColors, each with the
4898 4902 appropriate escapes for input prompts or normal text. The code in
4899 4903 Prompts.py got slightly more complicated, but this very old and
4900 4904 annoying bug is finally fixed.
4901 4905
4902 4906 All the credit for nailing down the real origin of this problem
4903 4907 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4904 4908 *Many* thanks to him for spending quite a bit of effort on this.
4905 4909
4906 4910 2003-03-05 *** Released version 0.2.15pre1
4907 4911
4908 4912 2003-03-03 Fernando Perez <fperez@colorado.edu>
4909 4913
4910 4914 * IPython/FakeModule.py: Moved the former _FakeModule to a
4911 4915 separate file, because it's also needed by Magic (to fix a similar
4912 4916 pickle-related issue in @run).
4913 4917
4914 4918 2003-03-02 Fernando Perez <fperez@colorado.edu>
4915 4919
4916 4920 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4917 4921 the autocall option at runtime.
4918 4922 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4919 4923 across Magic.py to start separating Magic from InteractiveShell.
4920 4924 (Magic._ofind): Fixed to return proper namespace for dotted
4921 4925 names. Before, a dotted name would always return 'not currently
4922 4926 defined', because it would find the 'parent'. s.x would be found,
4923 4927 but since 'x' isn't defined by itself, it would get confused.
4924 4928 (Magic.magic_run): Fixed pickling problems reported by Ralf
4925 4929 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4926 4930 that I'd used when Mike Heeter reported similar issues at the
4927 4931 top-level, but now for @run. It boils down to injecting the
4928 4932 namespace where code is being executed with something that looks
4929 4933 enough like a module to fool pickle.dump(). Since a pickle stores
4930 4934 a named reference to the importing module, we need this for
4931 4935 pickles to save something sensible.
4932 4936
4933 4937 * IPython/ipmaker.py (make_IPython): added an autocall option.
4934 4938
4935 4939 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4936 4940 the auto-eval code. Now autocalling is an option, and the code is
4937 4941 also vastly safer. There is no more eval() involved at all.
4938 4942
4939 4943 2003-03-01 Fernando Perez <fperez@colorado.edu>
4940 4944
4941 4945 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4942 4946 dict with named keys instead of a tuple.
4943 4947
4944 4948 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4945 4949
4946 4950 * setup.py (make_shortcut): Fixed message about directories
4947 4951 created during Windows installation (the directories were ok, just
4948 4952 the printed message was misleading). Thanks to Chris Liechti
4949 4953 <cliechti-AT-gmx.net> for the heads up.
4950 4954
4951 4955 2003-02-21 Fernando Perez <fperez@colorado.edu>
4952 4956
4953 4957 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4954 4958 of ValueError exception when checking for auto-execution. This
4955 4959 one is raised by things like Numeric arrays arr.flat when the
4956 4960 array is non-contiguous.
4957 4961
4958 4962 2003-01-31 Fernando Perez <fperez@colorado.edu>
4959 4963
4960 4964 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4961 4965 not return any value at all (even though the command would get
4962 4966 executed).
4963 4967 (xsys): Flush stdout right after printing the command to ensure
4964 4968 proper ordering of commands and command output in the total
4965 4969 output.
4966 4970 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4967 4971 system/getoutput as defaults. The old ones are kept for
4968 4972 compatibility reasons, so no code which uses this library needs
4969 4973 changing.
4970 4974
4971 4975 2003-01-27 *** Released version 0.2.14
4972 4976
4973 4977 2003-01-25 Fernando Perez <fperez@colorado.edu>
4974 4978
4975 4979 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4976 4980 functions defined in previous edit sessions could not be re-edited
4977 4981 (because the temp files were immediately removed). Now temp files
4978 4982 are removed only at IPython's exit.
4979 4983 (Magic.magic_run): Improved @run to perform shell-like expansions
4980 4984 on its arguments (~users and $VARS). With this, @run becomes more
4981 4985 like a normal command-line.
4982 4986
4983 4987 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4984 4988 bugs related to embedding and cleaned up that code. A fairly
4985 4989 important one was the impossibility to access the global namespace
4986 4990 through the embedded IPython (only local variables were visible).
4987 4991
4988 4992 2003-01-14 Fernando Perez <fperez@colorado.edu>
4989 4993
4990 4994 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4991 4995 auto-calling to be a bit more conservative. Now it doesn't get
4992 4996 triggered if any of '!=()<>' are in the rest of the input line, to
4993 4997 allow comparing callables. Thanks to Alex for the heads up.
4994 4998
4995 4999 2003-01-07 Fernando Perez <fperez@colorado.edu>
4996 5000
4997 5001 * IPython/genutils.py (page): fixed estimation of the number of
4998 5002 lines in a string to be paged to simply count newlines. This
4999 5003 prevents over-guessing due to embedded escape sequences. A better
5000 5004 long-term solution would involve stripping out the control chars
5001 5005 for the count, but it's potentially so expensive I just don't
5002 5006 think it's worth doing.
5003 5007
5004 5008 2002-12-19 *** Released version 0.2.14pre50
5005 5009
5006 5010 2002-12-19 Fernando Perez <fperez@colorado.edu>
5007 5011
5008 5012 * tools/release (version): Changed release scripts to inform
5009 5013 Andrea and build a NEWS file with a list of recent changes.
5010 5014
5011 5015 * IPython/ColorANSI.py (__all__): changed terminal detection
5012 5016 code. Seems to work better for xterms without breaking
5013 5017 konsole. Will need more testing to determine if WinXP and Mac OSX
5014 5018 also work ok.
5015 5019
5016 5020 2002-12-18 *** Released version 0.2.14pre49
5017 5021
5018 5022 2002-12-18 Fernando Perez <fperez@colorado.edu>
5019 5023
5020 5024 * Docs: added new info about Mac OSX, from Andrea.
5021 5025
5022 5026 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5023 5027 allow direct plotting of python strings whose format is the same
5024 5028 of gnuplot data files.
5025 5029
5026 5030 2002-12-16 Fernando Perez <fperez@colorado.edu>
5027 5031
5028 5032 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5029 5033 value of exit question to be acknowledged.
5030 5034
5031 5035 2002-12-03 Fernando Perez <fperez@colorado.edu>
5032 5036
5033 5037 * IPython/ipmaker.py: removed generators, which had been added
5034 5038 by mistake in an earlier debugging run. This was causing trouble
5035 5039 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5036 5040 for pointing this out.
5037 5041
5038 5042 2002-11-17 Fernando Perez <fperez@colorado.edu>
5039 5043
5040 5044 * Manual: updated the Gnuplot section.
5041 5045
5042 5046 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5043 5047 a much better split of what goes in Runtime and what goes in
5044 5048 Interactive.
5045 5049
5046 5050 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5047 5051 being imported from iplib.
5048 5052
5049 5053 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5050 5054 for command-passing. Now the global Gnuplot instance is called
5051 5055 'gp' instead of 'g', which was really a far too fragile and
5052 5056 common name.
5053 5057
5054 5058 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5055 5059 bounding boxes generated by Gnuplot for square plots.
5056 5060
5057 5061 * IPython/genutils.py (popkey): new function added. I should
5058 5062 suggest this on c.l.py as a dict method, it seems useful.
5059 5063
5060 5064 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5061 5065 to transparently handle PostScript generation. MUCH better than
5062 5066 the previous plot_eps/replot_eps (which I removed now). The code
5063 5067 is also fairly clean and well documented now (including
5064 5068 docstrings).
5065 5069
5066 5070 2002-11-13 Fernando Perez <fperez@colorado.edu>
5067 5071
5068 5072 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5069 5073 (inconsistent with options).
5070 5074
5071 5075 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5072 5076 manually disabled, I don't know why. Fixed it.
5073 5077 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5074 5078 eps output.
5075 5079
5076 5080 2002-11-12 Fernando Perez <fperez@colorado.edu>
5077 5081
5078 5082 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5079 5083 don't propagate up to caller. Fixes crash reported by François
5080 5084 Pinard.
5081 5085
5082 5086 2002-11-09 Fernando Perez <fperez@colorado.edu>
5083 5087
5084 5088 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5085 5089 history file for new users.
5086 5090 (make_IPython): fixed bug where initial install would leave the
5087 5091 user running in the .ipython dir.
5088 5092 (make_IPython): fixed bug where config dir .ipython would be
5089 5093 created regardless of the given -ipythondir option. Thanks to Cory
5090 5094 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5091 5095
5092 5096 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5093 5097 type confirmations. Will need to use it in all of IPython's code
5094 5098 consistently.
5095 5099
5096 5100 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5097 5101 context to print 31 lines instead of the default 5. This will make
5098 5102 the crash reports extremely detailed in case the problem is in
5099 5103 libraries I don't have access to.
5100 5104
5101 5105 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5102 5106 line of defense' code to still crash, but giving users fair
5103 5107 warning. I don't want internal errors to go unreported: if there's
5104 5108 an internal problem, IPython should crash and generate a full
5105 5109 report.
5106 5110
5107 5111 2002-11-08 Fernando Perez <fperez@colorado.edu>
5108 5112
5109 5113 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5110 5114 otherwise uncaught exceptions which can appear if people set
5111 5115 sys.stdout to something badly broken. Thanks to a crash report
5112 5116 from henni-AT-mail.brainbot.com.
5113 5117
5114 5118 2002-11-04 Fernando Perez <fperez@colorado.edu>
5115 5119
5116 5120 * IPython/iplib.py (InteractiveShell.interact): added
5117 5121 __IPYTHON__active to the builtins. It's a flag which goes on when
5118 5122 the interaction starts and goes off again when it stops. This
5119 5123 allows embedding code to detect being inside IPython. Before this
5120 5124 was done via __IPYTHON__, but that only shows that an IPython
5121 5125 instance has been created.
5122 5126
5123 5127 * IPython/Magic.py (Magic.magic_env): I realized that in a
5124 5128 UserDict, instance.data holds the data as a normal dict. So I
5125 5129 modified @env to return os.environ.data instead of rebuilding a
5126 5130 dict by hand.
5127 5131
5128 5132 2002-11-02 Fernando Perez <fperez@colorado.edu>
5129 5133
5130 5134 * IPython/genutils.py (warn): changed so that level 1 prints no
5131 5135 header. Level 2 is now the default (with 'WARNING' header, as
5132 5136 before). I think I tracked all places where changes were needed in
5133 5137 IPython, but outside code using the old level numbering may have
5134 5138 broken.
5135 5139
5136 5140 * IPython/iplib.py (InteractiveShell.runcode): added this to
5137 5141 handle the tracebacks in SystemExit traps correctly. The previous
5138 5142 code (through interact) was printing more of the stack than
5139 5143 necessary, showing IPython internal code to the user.
5140 5144
5141 5145 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5142 5146 default. Now that the default at the confirmation prompt is yes,
5143 5147 it's not so intrusive. François' argument that ipython sessions
5144 5148 tend to be complex enough not to lose them from an accidental C-d,
5145 5149 is a valid one.
5146 5150
5147 5151 * IPython/iplib.py (InteractiveShell.interact): added a
5148 5152 showtraceback() call to the SystemExit trap, and modified the exit
5149 5153 confirmation to have yes as the default.
5150 5154
5151 5155 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5152 5156 this file. It's been gone from the code for a long time, this was
5153 5157 simply leftover junk.
5154 5158
5155 5159 2002-11-01 Fernando Perez <fperez@colorado.edu>
5156 5160
5157 5161 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5158 5162 added. If set, IPython now traps EOF and asks for
5159 5163 confirmation. After a request by François Pinard.
5160 5164
5161 5165 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5162 5166 of @abort, and with a new (better) mechanism for handling the
5163 5167 exceptions.
5164 5168
5165 5169 2002-10-27 Fernando Perez <fperez@colorado.edu>
5166 5170
5167 5171 * IPython/usage.py (__doc__): updated the --help information and
5168 5172 the ipythonrc file to indicate that -log generates
5169 5173 ./ipython.log. Also fixed the corresponding info in @logstart.
5170 5174 This and several other fixes in the manuals thanks to reports by
5171 5175 François Pinard <pinard-AT-iro.umontreal.ca>.
5172 5176
5173 5177 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5174 5178 refer to @logstart (instead of @log, which doesn't exist).
5175 5179
5176 5180 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5177 5181 AttributeError crash. Thanks to Christopher Armstrong
5178 5182 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5179 5183 introduced recently (in 0.2.14pre37) with the fix to the eval
5180 5184 problem mentioned below.
5181 5185
5182 5186 2002-10-17 Fernando Perez <fperez@colorado.edu>
5183 5187
5184 5188 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5185 5189 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5186 5190
5187 5191 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5188 5192 this function to fix a problem reported by Alex Schmolck. He saw
5189 5193 it with list comprehensions and generators, which were getting
5190 5194 called twice. The real problem was an 'eval' call in testing for
5191 5195 automagic which was evaluating the input line silently.
5192 5196
5193 5197 This is a potentially very nasty bug, if the input has side
5194 5198 effects which must not be repeated. The code is much cleaner now,
5195 5199 without any blanket 'except' left and with a regexp test for
5196 5200 actual function names.
5197 5201
5198 5202 But an eval remains, which I'm not fully comfortable with. I just
5199 5203 don't know how to find out if an expression could be a callable in
5200 5204 the user's namespace without doing an eval on the string. However
5201 5205 that string is now much more strictly checked so that no code
5202 5206 slips by, so the eval should only happen for things that can
5203 5207 really be only function/method names.
5204 5208
5205 5209 2002-10-15 Fernando Perez <fperez@colorado.edu>
5206 5210
5207 5211 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5208 5212 OSX information to main manual, removed README_Mac_OSX file from
5209 5213 distribution. Also updated credits for recent additions.
5210 5214
5211 5215 2002-10-10 Fernando Perez <fperez@colorado.edu>
5212 5216
5213 5217 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5214 5218 terminal-related issues. Many thanks to Andrea Riciputi
5215 5219 <andrea.riciputi-AT-libero.it> for writing it.
5216 5220
5217 5221 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5218 5222 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5219 5223
5220 5224 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5221 5225 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5222 5226 <syver-en-AT-online.no> who both submitted patches for this problem.
5223 5227
5224 5228 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5225 5229 global embedding to make sure that things don't overwrite user
5226 5230 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5227 5231
5228 5232 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5229 5233 compatibility. Thanks to Hayden Callow
5230 5234 <h.callow-AT-elec.canterbury.ac.nz>
5231 5235
5232 5236 2002-10-04 Fernando Perez <fperez@colorado.edu>
5233 5237
5234 5238 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5235 5239 Gnuplot.File objects.
5236 5240
5237 5241 2002-07-23 Fernando Perez <fperez@colorado.edu>
5238 5242
5239 5243 * IPython/genutils.py (timing): Added timings() and timing() for
5240 5244 quick access to the most commonly needed data, the execution
5241 5245 times. Old timing() renamed to timings_out().
5242 5246
5243 5247 2002-07-18 Fernando Perez <fperez@colorado.edu>
5244 5248
5245 5249 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5246 5250 bug with nested instances disrupting the parent's tab completion.
5247 5251
5248 5252 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5249 5253 all_completions code to begin the emacs integration.
5250 5254
5251 5255 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5252 5256 argument to allow titling individual arrays when plotting.
5253 5257
5254 5258 2002-07-15 Fernando Perez <fperez@colorado.edu>
5255 5259
5256 5260 * setup.py (make_shortcut): changed to retrieve the value of
5257 5261 'Program Files' directory from the registry (this value changes in
5258 5262 non-english versions of Windows). Thanks to Thomas Fanslau
5259 5263 <tfanslau-AT-gmx.de> for the report.
5260 5264
5261 5265 2002-07-10 Fernando Perez <fperez@colorado.edu>
5262 5266
5263 5267 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5264 5268 a bug in pdb, which crashes if a line with only whitespace is
5265 5269 entered. Bug report submitted to sourceforge.
5266 5270
5267 5271 2002-07-09 Fernando Perez <fperez@colorado.edu>
5268 5272
5269 5273 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5270 5274 reporting exceptions (it's a bug in inspect.py, I just set a
5271 5275 workaround).
5272 5276
5273 5277 2002-07-08 Fernando Perez <fperez@colorado.edu>
5274 5278
5275 5279 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5276 5280 __IPYTHON__ in __builtins__ to show up in user_ns.
5277 5281
5278 5282 2002-07-03 Fernando Perez <fperez@colorado.edu>
5279 5283
5280 5284 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5281 5285 name from @gp_set_instance to @gp_set_default.
5282 5286
5283 5287 * IPython/ipmaker.py (make_IPython): default editor value set to
5284 5288 '0' (a string), to match the rc file. Otherwise will crash when
5285 5289 .strip() is called on it.
5286 5290
5287 5291
5288 5292 2002-06-28 Fernando Perez <fperez@colorado.edu>
5289 5293
5290 5294 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5291 5295 of files in current directory when a file is executed via
5292 5296 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5293 5297
5294 5298 * setup.py (manfiles): fix for rpm builds, submitted by RA
5295 5299 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5296 5300
5297 5301 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5298 5302 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5299 5303 string!). A. Schmolck caught this one.
5300 5304
5301 5305 2002-06-27 Fernando Perez <fperez@colorado.edu>
5302 5306
5303 5307 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5304 5308 defined files at the cmd line. __name__ wasn't being set to
5305 5309 __main__.
5306 5310
5307 5311 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5308 5312 regular lists and tuples besides Numeric arrays.
5309 5313
5310 5314 * IPython/Prompts.py (CachedOutput.__call__): Added output
5311 5315 supression for input ending with ';'. Similar to Mathematica and
5312 5316 Matlab. The _* vars and Out[] list are still updated, just like
5313 5317 Mathematica behaves.
5314 5318
5315 5319 2002-06-25 Fernando Perez <fperez@colorado.edu>
5316 5320
5317 5321 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5318 5322 .ini extensions for profiels under Windows.
5319 5323
5320 5324 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5321 5325 string form. Fix contributed by Alexander Schmolck
5322 5326 <a.schmolck-AT-gmx.net>
5323 5327
5324 5328 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5325 5329 pre-configured Gnuplot instance.
5326 5330
5327 5331 2002-06-21 Fernando Perez <fperez@colorado.edu>
5328 5332
5329 5333 * IPython/numutils.py (exp_safe): new function, works around the
5330 5334 underflow problems in Numeric.
5331 5335 (log2): New fn. Safe log in base 2: returns exact integer answer
5332 5336 for exact integer powers of 2.
5333 5337
5334 5338 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5335 5339 properly.
5336 5340
5337 5341 2002-06-20 Fernando Perez <fperez@colorado.edu>
5338 5342
5339 5343 * IPython/genutils.py (timing): new function like
5340 5344 Mathematica's. Similar to time_test, but returns more info.
5341 5345
5342 5346 2002-06-18 Fernando Perez <fperez@colorado.edu>
5343 5347
5344 5348 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5345 5349 according to Mike Heeter's suggestions.
5346 5350
5347 5351 2002-06-16 Fernando Perez <fperez@colorado.edu>
5348 5352
5349 5353 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5350 5354 system. GnuplotMagic is gone as a user-directory option. New files
5351 5355 make it easier to use all the gnuplot stuff both from external
5352 5356 programs as well as from IPython. Had to rewrite part of
5353 5357 hardcopy() b/c of a strange bug: often the ps files simply don't
5354 5358 get created, and require a repeat of the command (often several
5355 5359 times).
5356 5360
5357 5361 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5358 5362 resolve output channel at call time, so that if sys.stderr has
5359 5363 been redirected by user this gets honored.
5360 5364
5361 5365 2002-06-13 Fernando Perez <fperez@colorado.edu>
5362 5366
5363 5367 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5364 5368 IPShell. Kept a copy with the old names to avoid breaking people's
5365 5369 embedded code.
5366 5370
5367 5371 * IPython/ipython: simplified it to the bare minimum after
5368 5372 Holger's suggestions. Added info about how to use it in
5369 5373 PYTHONSTARTUP.
5370 5374
5371 5375 * IPython/Shell.py (IPythonShell): changed the options passing
5372 5376 from a string with funky %s replacements to a straight list. Maybe
5373 5377 a bit more typing, but it follows sys.argv conventions, so there's
5374 5378 less special-casing to remember.
5375 5379
5376 5380 2002-06-12 Fernando Perez <fperez@colorado.edu>
5377 5381
5378 5382 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5379 5383 command. Thanks to a suggestion by Mike Heeter.
5380 5384 (Magic.magic_pfile): added behavior to look at filenames if given
5381 5385 arg is not a defined object.
5382 5386 (Magic.magic_save): New @save function to save code snippets. Also
5383 5387 a Mike Heeter idea.
5384 5388
5385 5389 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5386 5390 plot() and replot(). Much more convenient now, especially for
5387 5391 interactive use.
5388 5392
5389 5393 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5390 5394 filenames.
5391 5395
5392 5396 2002-06-02 Fernando Perez <fperez@colorado.edu>
5393 5397
5394 5398 * IPython/Struct.py (Struct.__init__): modified to admit
5395 5399 initialization via another struct.
5396 5400
5397 5401 * IPython/genutils.py (SystemExec.__init__): New stateful
5398 5402 interface to xsys and bq. Useful for writing system scripts.
5399 5403
5400 5404 2002-05-30 Fernando Perez <fperez@colorado.edu>
5401 5405
5402 5406 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5403 5407 documents. This will make the user download smaller (it's getting
5404 5408 too big).
5405 5409
5406 5410 2002-05-29 Fernando Perez <fperez@colorado.edu>
5407 5411
5408 5412 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5409 5413 fix problems with shelve and pickle. Seems to work, but I don't
5410 5414 know if corner cases break it. Thanks to Mike Heeter
5411 5415 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5412 5416
5413 5417 2002-05-24 Fernando Perez <fperez@colorado.edu>
5414 5418
5415 5419 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5416 5420 macros having broken.
5417 5421
5418 5422 2002-05-21 Fernando Perez <fperez@colorado.edu>
5419 5423
5420 5424 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5421 5425 introduced logging bug: all history before logging started was
5422 5426 being written one character per line! This came from the redesign
5423 5427 of the input history as a special list which slices to strings,
5424 5428 not to lists.
5425 5429
5426 5430 2002-05-20 Fernando Perez <fperez@colorado.edu>
5427 5431
5428 5432 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5429 5433 be an attribute of all classes in this module. The design of these
5430 5434 classes needs some serious overhauling.
5431 5435
5432 5436 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5433 5437 which was ignoring '_' in option names.
5434 5438
5435 5439 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5436 5440 'Verbose_novars' to 'Context' and made it the new default. It's a
5437 5441 bit more readable and also safer than verbose.
5438 5442
5439 5443 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5440 5444 triple-quoted strings.
5441 5445
5442 5446 * IPython/OInspect.py (__all__): new module exposing the object
5443 5447 introspection facilities. Now the corresponding magics are dummy
5444 5448 wrappers around this. Having this module will make it much easier
5445 5449 to put these functions into our modified pdb.
5446 5450 This new object inspector system uses the new colorizing module,
5447 5451 so source code and other things are nicely syntax highlighted.
5448 5452
5449 5453 2002-05-18 Fernando Perez <fperez@colorado.edu>
5450 5454
5451 5455 * IPython/ColorANSI.py: Split the coloring tools into a separate
5452 5456 module so I can use them in other code easier (they were part of
5453 5457 ultraTB).
5454 5458
5455 5459 2002-05-17 Fernando Perez <fperez@colorado.edu>
5456 5460
5457 5461 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5458 5462 fixed it to set the global 'g' also to the called instance, as
5459 5463 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5460 5464 user's 'g' variables).
5461 5465
5462 5466 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5463 5467 global variables (aliases to _ih,_oh) so that users which expect
5464 5468 In[5] or Out[7] to work aren't unpleasantly surprised.
5465 5469 (InputList.__getslice__): new class to allow executing slices of
5466 5470 input history directly. Very simple class, complements the use of
5467 5471 macros.
5468 5472
5469 5473 2002-05-16 Fernando Perez <fperez@colorado.edu>
5470 5474
5471 5475 * setup.py (docdirbase): make doc directory be just doc/IPython
5472 5476 without version numbers, it will reduce clutter for users.
5473 5477
5474 5478 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5475 5479 execfile call to prevent possible memory leak. See for details:
5476 5480 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5477 5481
5478 5482 2002-05-15 Fernando Perez <fperez@colorado.edu>
5479 5483
5480 5484 * IPython/Magic.py (Magic.magic_psource): made the object
5481 5485 introspection names be more standard: pdoc, pdef, pfile and
5482 5486 psource. They all print/page their output, and it makes
5483 5487 remembering them easier. Kept old names for compatibility as
5484 5488 aliases.
5485 5489
5486 5490 2002-05-14 Fernando Perez <fperez@colorado.edu>
5487 5491
5488 5492 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5489 5493 what the mouse problem was. The trick is to use gnuplot with temp
5490 5494 files and NOT with pipes (for data communication), because having
5491 5495 both pipes and the mouse on is bad news.
5492 5496
5493 5497 2002-05-13 Fernando Perez <fperez@colorado.edu>
5494 5498
5495 5499 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5496 5500 bug. Information would be reported about builtins even when
5497 5501 user-defined functions overrode them.
5498 5502
5499 5503 2002-05-11 Fernando Perez <fperez@colorado.edu>
5500 5504
5501 5505 * IPython/__init__.py (__all__): removed FlexCompleter from
5502 5506 __all__ so that things don't fail in platforms without readline.
5503 5507
5504 5508 2002-05-10 Fernando Perez <fperez@colorado.edu>
5505 5509
5506 5510 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5507 5511 it requires Numeric, effectively making Numeric a dependency for
5508 5512 IPython.
5509 5513
5510 5514 * Released 0.2.13
5511 5515
5512 5516 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5513 5517 profiler interface. Now all the major options from the profiler
5514 5518 module are directly supported in IPython, both for single
5515 5519 expressions (@prun) and for full programs (@run -p).
5516 5520
5517 5521 2002-05-09 Fernando Perez <fperez@colorado.edu>
5518 5522
5519 5523 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5520 5524 magic properly formatted for screen.
5521 5525
5522 5526 * setup.py (make_shortcut): Changed things to put pdf version in
5523 5527 doc/ instead of doc/manual (had to change lyxport a bit).
5524 5528
5525 5529 * IPython/Magic.py (Profile.string_stats): made profile runs go
5526 5530 through pager (they are long and a pager allows searching, saving,
5527 5531 etc.)
5528 5532
5529 5533 2002-05-08 Fernando Perez <fperez@colorado.edu>
5530 5534
5531 5535 * Released 0.2.12
5532 5536
5533 5537 2002-05-06 Fernando Perez <fperez@colorado.edu>
5534 5538
5535 5539 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5536 5540 introduced); 'hist n1 n2' was broken.
5537 5541 (Magic.magic_pdb): added optional on/off arguments to @pdb
5538 5542 (Magic.magic_run): added option -i to @run, which executes code in
5539 5543 the IPython namespace instead of a clean one. Also added @irun as
5540 5544 an alias to @run -i.
5541 5545
5542 5546 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5543 5547 fixed (it didn't really do anything, the namespaces were wrong).
5544 5548
5545 5549 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5546 5550
5547 5551 * IPython/__init__.py (__all__): Fixed package namespace, now
5548 5552 'import IPython' does give access to IPython.<all> as
5549 5553 expected. Also renamed __release__ to Release.
5550 5554
5551 5555 * IPython/Debugger.py (__license__): created new Pdb class which
5552 5556 functions like a drop-in for the normal pdb.Pdb but does NOT
5553 5557 import readline by default. This way it doesn't muck up IPython's
5554 5558 readline handling, and now tab-completion finally works in the
5555 5559 debugger -- sort of. It completes things globally visible, but the
5556 5560 completer doesn't track the stack as pdb walks it. That's a bit
5557 5561 tricky, and I'll have to implement it later.
5558 5562
5559 5563 2002-05-05 Fernando Perez <fperez@colorado.edu>
5560 5564
5561 5565 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5562 5566 magic docstrings when printed via ? (explicit \'s were being
5563 5567 printed).
5564 5568
5565 5569 * IPython/ipmaker.py (make_IPython): fixed namespace
5566 5570 identification bug. Now variables loaded via logs or command-line
5567 5571 files are recognized in the interactive namespace by @who.
5568 5572
5569 5573 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5570 5574 log replay system stemming from the string form of Structs.
5571 5575
5572 5576 * IPython/Magic.py (Macro.__init__): improved macros to properly
5573 5577 handle magic commands in them.
5574 5578 (Magic.magic_logstart): usernames are now expanded so 'logstart
5575 5579 ~/mylog' now works.
5576 5580
5577 5581 * IPython/iplib.py (complete): fixed bug where paths starting with
5578 5582 '/' would be completed as magic names.
5579 5583
5580 5584 2002-05-04 Fernando Perez <fperez@colorado.edu>
5581 5585
5582 5586 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5583 5587 allow running full programs under the profiler's control.
5584 5588
5585 5589 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5586 5590 mode to report exceptions verbosely but without formatting
5587 5591 variables. This addresses the issue of ipython 'freezing' (it's
5588 5592 not frozen, but caught in an expensive formatting loop) when huge
5589 5593 variables are in the context of an exception.
5590 5594 (VerboseTB.text): Added '--->' markers at line where exception was
5591 5595 triggered. Much clearer to read, especially in NoColor modes.
5592 5596
5593 5597 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5594 5598 implemented in reverse when changing to the new parse_options().
5595 5599
5596 5600 2002-05-03 Fernando Perez <fperez@colorado.edu>
5597 5601
5598 5602 * IPython/Magic.py (Magic.parse_options): new function so that
5599 5603 magics can parse options easier.
5600 5604 (Magic.magic_prun): new function similar to profile.run(),
5601 5605 suggested by Chris Hart.
5602 5606 (Magic.magic_cd): fixed behavior so that it only changes if
5603 5607 directory actually is in history.
5604 5608
5605 5609 * IPython/usage.py (__doc__): added information about potential
5606 5610 slowness of Verbose exception mode when there are huge data
5607 5611 structures to be formatted (thanks to Archie Paulson).
5608 5612
5609 5613 * IPython/ipmaker.py (make_IPython): Changed default logging
5610 5614 (when simply called with -log) to use curr_dir/ipython.log in
5611 5615 rotate mode. Fixed crash which was occuring with -log before
5612 5616 (thanks to Jim Boyle).
5613 5617
5614 5618 2002-05-01 Fernando Perez <fperez@colorado.edu>
5615 5619
5616 5620 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5617 5621 was nasty -- though somewhat of a corner case).
5618 5622
5619 5623 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5620 5624 text (was a bug).
5621 5625
5622 5626 2002-04-30 Fernando Perez <fperez@colorado.edu>
5623 5627
5624 5628 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5625 5629 a print after ^D or ^C from the user so that the In[] prompt
5626 5630 doesn't over-run the gnuplot one.
5627 5631
5628 5632 2002-04-29 Fernando Perez <fperez@colorado.edu>
5629 5633
5630 5634 * Released 0.2.10
5631 5635
5632 5636 * IPython/__release__.py (version): get date dynamically.
5633 5637
5634 5638 * Misc. documentation updates thanks to Arnd's comments. Also ran
5635 5639 a full spellcheck on the manual (hadn't been done in a while).
5636 5640
5637 5641 2002-04-27 Fernando Perez <fperez@colorado.edu>
5638 5642
5639 5643 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5640 5644 starting a log in mid-session would reset the input history list.
5641 5645
5642 5646 2002-04-26 Fernando Perez <fperez@colorado.edu>
5643 5647
5644 5648 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5645 5649 all files were being included in an update. Now anything in
5646 5650 UserConfig that matches [A-Za-z]*.py will go (this excludes
5647 5651 __init__.py)
5648 5652
5649 5653 2002-04-25 Fernando Perez <fperez@colorado.edu>
5650 5654
5651 5655 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5652 5656 to __builtins__ so that any form of embedded or imported code can
5653 5657 test for being inside IPython.
5654 5658
5655 5659 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5656 5660 changed to GnuplotMagic because it's now an importable module,
5657 5661 this makes the name follow that of the standard Gnuplot module.
5658 5662 GnuplotMagic can now be loaded at any time in mid-session.
5659 5663
5660 5664 2002-04-24 Fernando Perez <fperez@colorado.edu>
5661 5665
5662 5666 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5663 5667 the globals (IPython has its own namespace) and the
5664 5668 PhysicalQuantity stuff is much better anyway.
5665 5669
5666 5670 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5667 5671 embedding example to standard user directory for
5668 5672 distribution. Also put it in the manual.
5669 5673
5670 5674 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5671 5675 instance as first argument (so it doesn't rely on some obscure
5672 5676 hidden global).
5673 5677
5674 5678 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5675 5679 delimiters. While it prevents ().TAB from working, it allows
5676 5680 completions in open (... expressions. This is by far a more common
5677 5681 case.
5678 5682
5679 5683 2002-04-23 Fernando Perez <fperez@colorado.edu>
5680 5684
5681 5685 * IPython/Extensions/InterpreterPasteInput.py: new
5682 5686 syntax-processing module for pasting lines with >>> or ... at the
5683 5687 start.
5684 5688
5685 5689 * IPython/Extensions/PhysicalQ_Interactive.py
5686 5690 (PhysicalQuantityInteractive.__int__): fixed to work with either
5687 5691 Numeric or math.
5688 5692
5689 5693 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5690 5694 provided profiles. Now we have:
5691 5695 -math -> math module as * and cmath with its own namespace.
5692 5696 -numeric -> Numeric as *, plus gnuplot & grace
5693 5697 -physics -> same as before
5694 5698
5695 5699 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5696 5700 user-defined magics wouldn't be found by @magic if they were
5697 5701 defined as class methods. Also cleaned up the namespace search
5698 5702 logic and the string building (to use %s instead of many repeated
5699 5703 string adds).
5700 5704
5701 5705 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5702 5706 of user-defined magics to operate with class methods (cleaner, in
5703 5707 line with the gnuplot code).
5704 5708
5705 5709 2002-04-22 Fernando Perez <fperez@colorado.edu>
5706 5710
5707 5711 * setup.py: updated dependency list so that manual is updated when
5708 5712 all included files change.
5709 5713
5710 5714 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5711 5715 the delimiter removal option (the fix is ugly right now).
5712 5716
5713 5717 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5714 5718 all of the math profile (quicker loading, no conflict between
5715 5719 g-9.8 and g-gnuplot).
5716 5720
5717 5721 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5718 5722 name of post-mortem files to IPython_crash_report.txt.
5719 5723
5720 5724 * Cleanup/update of the docs. Added all the new readline info and
5721 5725 formatted all lists as 'real lists'.
5722 5726
5723 5727 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5724 5728 tab-completion options, since the full readline parse_and_bind is
5725 5729 now accessible.
5726 5730
5727 5731 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5728 5732 handling of readline options. Now users can specify any string to
5729 5733 be passed to parse_and_bind(), as well as the delimiters to be
5730 5734 removed.
5731 5735 (InteractiveShell.__init__): Added __name__ to the global
5732 5736 namespace so that things like Itpl which rely on its existence
5733 5737 don't crash.
5734 5738 (InteractiveShell._prefilter): Defined the default with a _ so
5735 5739 that prefilter() is easier to override, while the default one
5736 5740 remains available.
5737 5741
5738 5742 2002-04-18 Fernando Perez <fperez@colorado.edu>
5739 5743
5740 5744 * Added information about pdb in the docs.
5741 5745
5742 5746 2002-04-17 Fernando Perez <fperez@colorado.edu>
5743 5747
5744 5748 * IPython/ipmaker.py (make_IPython): added rc_override option to
5745 5749 allow passing config options at creation time which may override
5746 5750 anything set in the config files or command line. This is
5747 5751 particularly useful for configuring embedded instances.
5748 5752
5749 5753 2002-04-15 Fernando Perez <fperez@colorado.edu>
5750 5754
5751 5755 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5752 5756 crash embedded instances because of the input cache falling out of
5753 5757 sync with the output counter.
5754 5758
5755 5759 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5756 5760 mode which calls pdb after an uncaught exception in IPython itself.
5757 5761
5758 5762 2002-04-14 Fernando Perez <fperez@colorado.edu>
5759 5763
5760 5764 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5761 5765 readline, fix it back after each call.
5762 5766
5763 5767 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5764 5768 method to force all access via __call__(), which guarantees that
5765 5769 traceback references are properly deleted.
5766 5770
5767 5771 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5768 5772 improve printing when pprint is in use.
5769 5773
5770 5774 2002-04-13 Fernando Perez <fperez@colorado.edu>
5771 5775
5772 5776 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5773 5777 exceptions aren't caught anymore. If the user triggers one, he
5774 5778 should know why he's doing it and it should go all the way up,
5775 5779 just like any other exception. So now @abort will fully kill the
5776 5780 embedded interpreter and the embedding code (unless that happens
5777 5781 to catch SystemExit).
5778 5782
5779 5783 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5780 5784 and a debugger() method to invoke the interactive pdb debugger
5781 5785 after printing exception information. Also added the corresponding
5782 5786 -pdb option and @pdb magic to control this feature, and updated
5783 5787 the docs. After a suggestion from Christopher Hart
5784 5788 (hart-AT-caltech.edu).
5785 5789
5786 5790 2002-04-12 Fernando Perez <fperez@colorado.edu>
5787 5791
5788 5792 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5789 5793 the exception handlers defined by the user (not the CrashHandler)
5790 5794 so that user exceptions don't trigger an ipython bug report.
5791 5795
5792 5796 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5793 5797 configurable (it should have always been so).
5794 5798
5795 5799 2002-03-26 Fernando Perez <fperez@colorado.edu>
5796 5800
5797 5801 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5798 5802 and there to fix embedding namespace issues. This should all be
5799 5803 done in a more elegant way.
5800 5804
5801 5805 2002-03-25 Fernando Perez <fperez@colorado.edu>
5802 5806
5803 5807 * IPython/genutils.py (get_home_dir): Try to make it work under
5804 5808 win9x also.
5805 5809
5806 5810 2002-03-20 Fernando Perez <fperez@colorado.edu>
5807 5811
5808 5812 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5809 5813 sys.displayhook untouched upon __init__.
5810 5814
5811 5815 2002-03-19 Fernando Perez <fperez@colorado.edu>
5812 5816
5813 5817 * Released 0.2.9 (for embedding bug, basically).
5814 5818
5815 5819 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5816 5820 exceptions so that enclosing shell's state can be restored.
5817 5821
5818 5822 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5819 5823 naming conventions in the .ipython/ dir.
5820 5824
5821 5825 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5822 5826 from delimiters list so filenames with - in them get expanded.
5823 5827
5824 5828 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5825 5829 sys.displayhook not being properly restored after an embedded call.
5826 5830
5827 5831 2002-03-18 Fernando Perez <fperez@colorado.edu>
5828 5832
5829 5833 * Released 0.2.8
5830 5834
5831 5835 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5832 5836 some files weren't being included in a -upgrade.
5833 5837 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5834 5838 on' so that the first tab completes.
5835 5839 (InteractiveShell.handle_magic): fixed bug with spaces around
5836 5840 quotes breaking many magic commands.
5837 5841
5838 5842 * setup.py: added note about ignoring the syntax error messages at
5839 5843 installation.
5840 5844
5841 5845 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5842 5846 streamlining the gnuplot interface, now there's only one magic @gp.
5843 5847
5844 5848 2002-03-17 Fernando Perez <fperez@colorado.edu>
5845 5849
5846 5850 * IPython/UserConfig/magic_gnuplot.py: new name for the
5847 5851 example-magic_pm.py file. Much enhanced system, now with a shell
5848 5852 for communicating directly with gnuplot, one command at a time.
5849 5853
5850 5854 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5851 5855 setting __name__=='__main__'.
5852 5856
5853 5857 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5854 5858 mini-shell for accessing gnuplot from inside ipython. Should
5855 5859 extend it later for grace access too. Inspired by Arnd's
5856 5860 suggestion.
5857 5861
5858 5862 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5859 5863 calling magic functions with () in their arguments. Thanks to Arnd
5860 5864 Baecker for pointing this to me.
5861 5865
5862 5866 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5863 5867 infinitely for integer or complex arrays (only worked with floats).
5864 5868
5865 5869 2002-03-16 Fernando Perez <fperez@colorado.edu>
5866 5870
5867 5871 * setup.py: Merged setup and setup_windows into a single script
5868 5872 which properly handles things for windows users.
5869 5873
5870 5874 2002-03-15 Fernando Perez <fperez@colorado.edu>
5871 5875
5872 5876 * Big change to the manual: now the magics are all automatically
5873 5877 documented. This information is generated from their docstrings
5874 5878 and put in a latex file included by the manual lyx file. This way
5875 5879 we get always up to date information for the magics. The manual
5876 5880 now also has proper version information, also auto-synced.
5877 5881
5878 5882 For this to work, an undocumented --magic_docstrings option was added.
5879 5883
5880 5884 2002-03-13 Fernando Perez <fperez@colorado.edu>
5881 5885
5882 5886 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5883 5887 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5884 5888
5885 5889 2002-03-12 Fernando Perez <fperez@colorado.edu>
5886 5890
5887 5891 * IPython/ultraTB.py (TermColors): changed color escapes again to
5888 5892 fix the (old, reintroduced) line-wrapping bug. Basically, if
5889 5893 \001..\002 aren't given in the color escapes, lines get wrapped
5890 5894 weirdly. But giving those screws up old xterms and emacs terms. So
5891 5895 I added some logic for emacs terms to be ok, but I can't identify old
5892 5896 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5893 5897
5894 5898 2002-03-10 Fernando Perez <fperez@colorado.edu>
5895 5899
5896 5900 * IPython/usage.py (__doc__): Various documentation cleanups and
5897 5901 updates, both in usage docstrings and in the manual.
5898 5902
5899 5903 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5900 5904 handling of caching. Set minimum acceptabe value for having a
5901 5905 cache at 20 values.
5902 5906
5903 5907 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5904 5908 install_first_time function to a method, renamed it and added an
5905 5909 'upgrade' mode. Now people can update their config directory with
5906 5910 a simple command line switch (-upgrade, also new).
5907 5911
5908 5912 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5909 5913 @file (convenient for automagic users under Python >= 2.2).
5910 5914 Removed @files (it seemed more like a plural than an abbrev. of
5911 5915 'file show').
5912 5916
5913 5917 * IPython/iplib.py (install_first_time): Fixed crash if there were
5914 5918 backup files ('~') in .ipython/ install directory.
5915 5919
5916 5920 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5917 5921 system. Things look fine, but these changes are fairly
5918 5922 intrusive. Test them for a few days.
5919 5923
5920 5924 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5921 5925 the prompts system. Now all in/out prompt strings are user
5922 5926 controllable. This is particularly useful for embedding, as one
5923 5927 can tag embedded instances with particular prompts.
5924 5928
5925 5929 Also removed global use of sys.ps1/2, which now allows nested
5926 5930 embeddings without any problems. Added command-line options for
5927 5931 the prompt strings.
5928 5932
5929 5933 2002-03-08 Fernando Perez <fperez@colorado.edu>
5930 5934
5931 5935 * IPython/UserConfig/example-embed-short.py (ipshell): added
5932 5936 example file with the bare minimum code for embedding.
5933 5937
5934 5938 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5935 5939 functionality for the embeddable shell to be activated/deactivated
5936 5940 either globally or at each call.
5937 5941
5938 5942 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5939 5943 rewriting the prompt with '--->' for auto-inputs with proper
5940 5944 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5941 5945 this is handled by the prompts class itself, as it should.
5942 5946
5943 5947 2002-03-05 Fernando Perez <fperez@colorado.edu>
5944 5948
5945 5949 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5946 5950 @logstart to avoid name clashes with the math log function.
5947 5951
5948 5952 * Big updates to X/Emacs section of the manual.
5949 5953
5950 5954 * Removed ipython_emacs. Milan explained to me how to pass
5951 5955 arguments to ipython through Emacs. Some day I'm going to end up
5952 5956 learning some lisp...
5953 5957
5954 5958 2002-03-04 Fernando Perez <fperez@colorado.edu>
5955 5959
5956 5960 * IPython/ipython_emacs: Created script to be used as the
5957 5961 py-python-command Emacs variable so we can pass IPython
5958 5962 parameters. I can't figure out how to tell Emacs directly to pass
5959 5963 parameters to IPython, so a dummy shell script will do it.
5960 5964
5961 5965 Other enhancements made for things to work better under Emacs'
5962 5966 various types of terminals. Many thanks to Milan Zamazal
5963 5967 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5964 5968
5965 5969 2002-03-01 Fernando Perez <fperez@colorado.edu>
5966 5970
5967 5971 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5968 5972 that loading of readline is now optional. This gives better
5969 5973 control to emacs users.
5970 5974
5971 5975 * IPython/ultraTB.py (__date__): Modified color escape sequences
5972 5976 and now things work fine under xterm and in Emacs' term buffers
5973 5977 (though not shell ones). Well, in emacs you get colors, but all
5974 5978 seem to be 'light' colors (no difference between dark and light
5975 5979 ones). But the garbage chars are gone, and also in xterms. It
5976 5980 seems that now I'm using 'cleaner' ansi sequences.
5977 5981
5978 5982 2002-02-21 Fernando Perez <fperez@colorado.edu>
5979 5983
5980 5984 * Released 0.2.7 (mainly to publish the scoping fix).
5981 5985
5982 5986 * IPython/Logger.py (Logger.logstate): added. A corresponding
5983 5987 @logstate magic was created.
5984 5988
5985 5989 * IPython/Magic.py: fixed nested scoping problem under Python
5986 5990 2.1.x (automagic wasn't working).
5987 5991
5988 5992 2002-02-20 Fernando Perez <fperez@colorado.edu>
5989 5993
5990 5994 * Released 0.2.6.
5991 5995
5992 5996 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5993 5997 option so that logs can come out without any headers at all.
5994 5998
5995 5999 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5996 6000 SciPy.
5997 6001
5998 6002 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5999 6003 that embedded IPython calls don't require vars() to be explicitly
6000 6004 passed. Now they are extracted from the caller's frame (code
6001 6005 snatched from Eric Jones' weave). Added better documentation to
6002 6006 the section on embedding and the example file.
6003 6007
6004 6008 * IPython/genutils.py (page): Changed so that under emacs, it just
6005 6009 prints the string. You can then page up and down in the emacs
6006 6010 buffer itself. This is how the builtin help() works.
6007 6011
6008 6012 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6009 6013 macro scoping: macros need to be executed in the user's namespace
6010 6014 to work as if they had been typed by the user.
6011 6015
6012 6016 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6013 6017 execute automatically (no need to type 'exec...'). They then
6014 6018 behave like 'true macros'. The printing system was also modified
6015 6019 for this to work.
6016 6020
6017 6021 2002-02-19 Fernando Perez <fperez@colorado.edu>
6018 6022
6019 6023 * IPython/genutils.py (page_file): new function for paging files
6020 6024 in an OS-independent way. Also necessary for file viewing to work
6021 6025 well inside Emacs buffers.
6022 6026 (page): Added checks for being in an emacs buffer.
6023 6027 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6024 6028 same bug in iplib.
6025 6029
6026 6030 2002-02-18 Fernando Perez <fperez@colorado.edu>
6027 6031
6028 6032 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6029 6033 of readline so that IPython can work inside an Emacs buffer.
6030 6034
6031 6035 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6032 6036 method signatures (they weren't really bugs, but it looks cleaner
6033 6037 and keeps PyChecker happy).
6034 6038
6035 6039 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6036 6040 for implementing various user-defined hooks. Currently only
6037 6041 display is done.
6038 6042
6039 6043 * IPython/Prompts.py (CachedOutput._display): changed display
6040 6044 functions so that they can be dynamically changed by users easily.
6041 6045
6042 6046 * IPython/Extensions/numeric_formats.py (num_display): added an
6043 6047 extension for printing NumPy arrays in flexible manners. It
6044 6048 doesn't do anything yet, but all the structure is in
6045 6049 place. Ultimately the plan is to implement output format control
6046 6050 like in Octave.
6047 6051
6048 6052 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6049 6053 methods are found at run-time by all the automatic machinery.
6050 6054
6051 6055 2002-02-17 Fernando Perez <fperez@colorado.edu>
6052 6056
6053 6057 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6054 6058 whole file a little.
6055 6059
6056 6060 * ToDo: closed this document. Now there's a new_design.lyx
6057 6061 document for all new ideas. Added making a pdf of it for the
6058 6062 end-user distro.
6059 6063
6060 6064 * IPython/Logger.py (Logger.switch_log): Created this to replace
6061 6065 logon() and logoff(). It also fixes a nasty crash reported by
6062 6066 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6063 6067
6064 6068 * IPython/iplib.py (complete): got auto-completion to work with
6065 6069 automagic (I had wanted this for a long time).
6066 6070
6067 6071 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6068 6072 to @file, since file() is now a builtin and clashes with automagic
6069 6073 for @file.
6070 6074
6071 6075 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6072 6076 of this was previously in iplib, which had grown to more than 2000
6073 6077 lines, way too long. No new functionality, but it makes managing
6074 6078 the code a bit easier.
6075 6079
6076 6080 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6077 6081 information to crash reports.
6078 6082
6079 6083 2002-02-12 Fernando Perez <fperez@colorado.edu>
6080 6084
6081 6085 * Released 0.2.5.
6082 6086
6083 6087 2002-02-11 Fernando Perez <fperez@colorado.edu>
6084 6088
6085 6089 * Wrote a relatively complete Windows installer. It puts
6086 6090 everything in place, creates Start Menu entries and fixes the
6087 6091 color issues. Nothing fancy, but it works.
6088 6092
6089 6093 2002-02-10 Fernando Perez <fperez@colorado.edu>
6090 6094
6091 6095 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6092 6096 os.path.expanduser() call so that we can type @run ~/myfile.py and
6093 6097 have thigs work as expected.
6094 6098
6095 6099 * IPython/genutils.py (page): fixed exception handling so things
6096 6100 work both in Unix and Windows correctly. Quitting a pager triggers
6097 6101 an IOError/broken pipe in Unix, and in windows not finding a pager
6098 6102 is also an IOError, so I had to actually look at the return value
6099 6103 of the exception, not just the exception itself. Should be ok now.
6100 6104
6101 6105 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6102 6106 modified to allow case-insensitive color scheme changes.
6103 6107
6104 6108 2002-02-09 Fernando Perez <fperez@colorado.edu>
6105 6109
6106 6110 * IPython/genutils.py (native_line_ends): new function to leave
6107 6111 user config files with os-native line-endings.
6108 6112
6109 6113 * README and manual updates.
6110 6114
6111 6115 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6112 6116 instead of StringType to catch Unicode strings.
6113 6117
6114 6118 * IPython/genutils.py (filefind): fixed bug for paths with
6115 6119 embedded spaces (very common in Windows).
6116 6120
6117 6121 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6118 6122 files under Windows, so that they get automatically associated
6119 6123 with a text editor. Windows makes it a pain to handle
6120 6124 extension-less files.
6121 6125
6122 6126 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6123 6127 warning about readline only occur for Posix. In Windows there's no
6124 6128 way to get readline, so why bother with the warning.
6125 6129
6126 6130 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6127 6131 for __str__ instead of dir(self), since dir() changed in 2.2.
6128 6132
6129 6133 * Ported to Windows! Tested on XP, I suspect it should work fine
6130 6134 on NT/2000, but I don't think it will work on 98 et al. That
6131 6135 series of Windows is such a piece of junk anyway that I won't try
6132 6136 porting it there. The XP port was straightforward, showed a few
6133 6137 bugs here and there (fixed all), in particular some string
6134 6138 handling stuff which required considering Unicode strings (which
6135 6139 Windows uses). This is good, but hasn't been too tested :) No
6136 6140 fancy installer yet, I'll put a note in the manual so people at
6137 6141 least make manually a shortcut.
6138 6142
6139 6143 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6140 6144 into a single one, "colors". This now controls both prompt and
6141 6145 exception color schemes, and can be changed both at startup
6142 6146 (either via command-line switches or via ipythonrc files) and at
6143 6147 runtime, with @colors.
6144 6148 (Magic.magic_run): renamed @prun to @run and removed the old
6145 6149 @run. The two were too similar to warrant keeping both.
6146 6150
6147 6151 2002-02-03 Fernando Perez <fperez@colorado.edu>
6148 6152
6149 6153 * IPython/iplib.py (install_first_time): Added comment on how to
6150 6154 configure the color options for first-time users. Put a <return>
6151 6155 request at the end so that small-terminal users get a chance to
6152 6156 read the startup info.
6153 6157
6154 6158 2002-01-23 Fernando Perez <fperez@colorado.edu>
6155 6159
6156 6160 * IPython/iplib.py (CachedOutput.update): Changed output memory
6157 6161 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6158 6162 input history we still use _i. Did this b/c these variable are
6159 6163 very commonly used in interactive work, so the less we need to
6160 6164 type the better off we are.
6161 6165 (Magic.magic_prun): updated @prun to better handle the namespaces
6162 6166 the file will run in, including a fix for __name__ not being set
6163 6167 before.
6164 6168
6165 6169 2002-01-20 Fernando Perez <fperez@colorado.edu>
6166 6170
6167 6171 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6168 6172 extra garbage for Python 2.2. Need to look more carefully into
6169 6173 this later.
6170 6174
6171 6175 2002-01-19 Fernando Perez <fperez@colorado.edu>
6172 6176
6173 6177 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6174 6178 display SyntaxError exceptions properly formatted when they occur
6175 6179 (they can be triggered by imported code).
6176 6180
6177 6181 2002-01-18 Fernando Perez <fperez@colorado.edu>
6178 6182
6179 6183 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6180 6184 SyntaxError exceptions are reported nicely formatted, instead of
6181 6185 spitting out only offset information as before.
6182 6186 (Magic.magic_prun): Added the @prun function for executing
6183 6187 programs with command line args inside IPython.
6184 6188
6185 6189 2002-01-16 Fernando Perez <fperez@colorado.edu>
6186 6190
6187 6191 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6188 6192 to *not* include the last item given in a range. This brings their
6189 6193 behavior in line with Python's slicing:
6190 6194 a[n1:n2] -> a[n1]...a[n2-1]
6191 6195 It may be a bit less convenient, but I prefer to stick to Python's
6192 6196 conventions *everywhere*, so users never have to wonder.
6193 6197 (Magic.magic_macro): Added @macro function to ease the creation of
6194 6198 macros.
6195 6199
6196 6200 2002-01-05 Fernando Perez <fperez@colorado.edu>
6197 6201
6198 6202 * Released 0.2.4.
6199 6203
6200 6204 * IPython/iplib.py (Magic.magic_pdef):
6201 6205 (InteractiveShell.safe_execfile): report magic lines and error
6202 6206 lines without line numbers so one can easily copy/paste them for
6203 6207 re-execution.
6204 6208
6205 6209 * Updated manual with recent changes.
6206 6210
6207 6211 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6208 6212 docstring printing when class? is called. Very handy for knowing
6209 6213 how to create class instances (as long as __init__ is well
6210 6214 documented, of course :)
6211 6215 (Magic.magic_doc): print both class and constructor docstrings.
6212 6216 (Magic.magic_pdef): give constructor info if passed a class and
6213 6217 __call__ info for callable object instances.
6214 6218
6215 6219 2002-01-04 Fernando Perez <fperez@colorado.edu>
6216 6220
6217 6221 * Made deep_reload() off by default. It doesn't always work
6218 6222 exactly as intended, so it's probably safer to have it off. It's
6219 6223 still available as dreload() anyway, so nothing is lost.
6220 6224
6221 6225 2002-01-02 Fernando Perez <fperez@colorado.edu>
6222 6226
6223 6227 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6224 6228 so I wanted an updated release).
6225 6229
6226 6230 2001-12-27 Fernando Perez <fperez@colorado.edu>
6227 6231
6228 6232 * IPython/iplib.py (InteractiveShell.interact): Added the original
6229 6233 code from 'code.py' for this module in order to change the
6230 6234 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6231 6235 the history cache would break when the user hit Ctrl-C, and
6232 6236 interact() offers no way to add any hooks to it.
6233 6237
6234 6238 2001-12-23 Fernando Perez <fperez@colorado.edu>
6235 6239
6236 6240 * setup.py: added check for 'MANIFEST' before trying to remove
6237 6241 it. Thanks to Sean Reifschneider.
6238 6242
6239 6243 2001-12-22 Fernando Perez <fperez@colorado.edu>
6240 6244
6241 6245 * Released 0.2.2.
6242 6246
6243 6247 * Finished (reasonably) writing the manual. Later will add the
6244 6248 python-standard navigation stylesheets, but for the time being
6245 6249 it's fairly complete. Distribution will include html and pdf
6246 6250 versions.
6247 6251
6248 6252 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6249 6253 (MayaVi author).
6250 6254
6251 6255 2001-12-21 Fernando Perez <fperez@colorado.edu>
6252 6256
6253 6257 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6254 6258 good public release, I think (with the manual and the distutils
6255 6259 installer). The manual can use some work, but that can go
6256 6260 slowly. Otherwise I think it's quite nice for end users. Next
6257 6261 summer, rewrite the guts of it...
6258 6262
6259 6263 * Changed format of ipythonrc files to use whitespace as the
6260 6264 separator instead of an explicit '='. Cleaner.
6261 6265
6262 6266 2001-12-20 Fernando Perez <fperez@colorado.edu>
6263 6267
6264 6268 * Started a manual in LyX. For now it's just a quick merge of the
6265 6269 various internal docstrings and READMEs. Later it may grow into a
6266 6270 nice, full-blown manual.
6267 6271
6268 6272 * Set up a distutils based installer. Installation should now be
6269 6273 trivially simple for end-users.
6270 6274
6271 6275 2001-12-11 Fernando Perez <fperez@colorado.edu>
6272 6276
6273 6277 * Released 0.2.0. First public release, announced it at
6274 6278 comp.lang.python. From now on, just bugfixes...
6275 6279
6276 6280 * Went through all the files, set copyright/license notices and
6277 6281 cleaned up things. Ready for release.
6278 6282
6279 6283 2001-12-10 Fernando Perez <fperez@colorado.edu>
6280 6284
6281 6285 * Changed the first-time installer not to use tarfiles. It's more
6282 6286 robust now and less unix-dependent. Also makes it easier for
6283 6287 people to later upgrade versions.
6284 6288
6285 6289 * Changed @exit to @abort to reflect the fact that it's pretty
6286 6290 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6287 6291 becomes significant only when IPyhton is embedded: in that case,
6288 6292 C-D closes IPython only, but @abort kills the enclosing program
6289 6293 too (unless it had called IPython inside a try catching
6290 6294 SystemExit).
6291 6295
6292 6296 * Created Shell module which exposes the actuall IPython Shell
6293 6297 classes, currently the normal and the embeddable one. This at
6294 6298 least offers a stable interface we won't need to change when
6295 6299 (later) the internals are rewritten. That rewrite will be confined
6296 6300 to iplib and ipmaker, but the Shell interface should remain as is.
6297 6301
6298 6302 * Added embed module which offers an embeddable IPShell object,
6299 6303 useful to fire up IPython *inside* a running program. Great for
6300 6304 debugging or dynamical data analysis.
6301 6305
6302 6306 2001-12-08 Fernando Perez <fperez@colorado.edu>
6303 6307
6304 6308 * Fixed small bug preventing seeing info from methods of defined
6305 6309 objects (incorrect namespace in _ofind()).
6306 6310
6307 6311 * Documentation cleanup. Moved the main usage docstrings to a
6308 6312 separate file, usage.py (cleaner to maintain, and hopefully in the
6309 6313 future some perlpod-like way of producing interactive, man and
6310 6314 html docs out of it will be found).
6311 6315
6312 6316 * Added @profile to see your profile at any time.
6313 6317
6314 6318 * Added @p as an alias for 'print'. It's especially convenient if
6315 6319 using automagic ('p x' prints x).
6316 6320
6317 6321 * Small cleanups and fixes after a pychecker run.
6318 6322
6319 6323 * Changed the @cd command to handle @cd - and @cd -<n> for
6320 6324 visiting any directory in _dh.
6321 6325
6322 6326 * Introduced _dh, a history of visited directories. @dhist prints
6323 6327 it out with numbers.
6324 6328
6325 6329 2001-12-07 Fernando Perez <fperez@colorado.edu>
6326 6330
6327 6331 * Released 0.1.22
6328 6332
6329 6333 * Made initialization a bit more robust against invalid color
6330 6334 options in user input (exit, not traceback-crash).
6331 6335
6332 6336 * Changed the bug crash reporter to write the report only in the
6333 6337 user's .ipython directory. That way IPython won't litter people's
6334 6338 hard disks with crash files all over the place. Also print on
6335 6339 screen the necessary mail command.
6336 6340
6337 6341 * With the new ultraTB, implemented LightBG color scheme for light
6338 6342 background terminals. A lot of people like white backgrounds, so I
6339 6343 guess we should at least give them something readable.
6340 6344
6341 6345 2001-12-06 Fernando Perez <fperez@colorado.edu>
6342 6346
6343 6347 * Modified the structure of ultraTB. Now there's a proper class
6344 6348 for tables of color schemes which allow adding schemes easily and
6345 6349 switching the active scheme without creating a new instance every
6346 6350 time (which was ridiculous). The syntax for creating new schemes
6347 6351 is also cleaner. I think ultraTB is finally done, with a clean
6348 6352 class structure. Names are also much cleaner (now there's proper
6349 6353 color tables, no need for every variable to also have 'color' in
6350 6354 its name).
6351 6355
6352 6356 * Broke down genutils into separate files. Now genutils only
6353 6357 contains utility functions, and classes have been moved to their
6354 6358 own files (they had enough independent functionality to warrant
6355 6359 it): ConfigLoader, OutputTrap, Struct.
6356 6360
6357 6361 2001-12-05 Fernando Perez <fperez@colorado.edu>
6358 6362
6359 6363 * IPython turns 21! Released version 0.1.21, as a candidate for
6360 6364 public consumption. If all goes well, release in a few days.
6361 6365
6362 6366 * Fixed path bug (files in Extensions/ directory wouldn't be found
6363 6367 unless IPython/ was explicitly in sys.path).
6364 6368
6365 6369 * Extended the FlexCompleter class as MagicCompleter to allow
6366 6370 completion of @-starting lines.
6367 6371
6368 6372 * Created __release__.py file as a central repository for release
6369 6373 info that other files can read from.
6370 6374
6371 6375 * Fixed small bug in logging: when logging was turned on in
6372 6376 mid-session, old lines with special meanings (!@?) were being
6373 6377 logged without the prepended comment, which is necessary since
6374 6378 they are not truly valid python syntax. This should make session
6375 6379 restores produce less errors.
6376 6380
6377 6381 * The namespace cleanup forced me to make a FlexCompleter class
6378 6382 which is nothing but a ripoff of rlcompleter, but with selectable
6379 6383 namespace (rlcompleter only works in __main__.__dict__). I'll try
6380 6384 to submit a note to the authors to see if this change can be
6381 6385 incorporated in future rlcompleter releases (Dec.6: done)
6382 6386
6383 6387 * More fixes to namespace handling. It was a mess! Now all
6384 6388 explicit references to __main__.__dict__ are gone (except when
6385 6389 really needed) and everything is handled through the namespace
6386 6390 dicts in the IPython instance. We seem to be getting somewhere
6387 6391 with this, finally...
6388 6392
6389 6393 * Small documentation updates.
6390 6394
6391 6395 * Created the Extensions directory under IPython (with an
6392 6396 __init__.py). Put the PhysicalQ stuff there. This directory should
6393 6397 be used for all special-purpose extensions.
6394 6398
6395 6399 * File renaming:
6396 6400 ipythonlib --> ipmaker
6397 6401 ipplib --> iplib
6398 6402 This makes a bit more sense in terms of what these files actually do.
6399 6403
6400 6404 * Moved all the classes and functions in ipythonlib to ipplib, so
6401 6405 now ipythonlib only has make_IPython(). This will ease up its
6402 6406 splitting in smaller functional chunks later.
6403 6407
6404 6408 * Cleaned up (done, I think) output of @whos. Better column
6405 6409 formatting, and now shows str(var) for as much as it can, which is
6406 6410 typically what one gets with a 'print var'.
6407 6411
6408 6412 2001-12-04 Fernando Perez <fperez@colorado.edu>
6409 6413
6410 6414 * Fixed namespace problems. Now builtin/IPyhton/user names get
6411 6415 properly reported in their namespace. Internal namespace handling
6412 6416 is finally getting decent (not perfect yet, but much better than
6413 6417 the ad-hoc mess we had).
6414 6418
6415 6419 * Removed -exit option. If people just want to run a python
6416 6420 script, that's what the normal interpreter is for. Less
6417 6421 unnecessary options, less chances for bugs.
6418 6422
6419 6423 * Added a crash handler which generates a complete post-mortem if
6420 6424 IPython crashes. This will help a lot in tracking bugs down the
6421 6425 road.
6422 6426
6423 6427 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6424 6428 which were boud to functions being reassigned would bypass the
6425 6429 logger, breaking the sync of _il with the prompt counter. This
6426 6430 would then crash IPython later when a new line was logged.
6427 6431
6428 6432 2001-12-02 Fernando Perez <fperez@colorado.edu>
6429 6433
6430 6434 * Made IPython a package. This means people don't have to clutter
6431 6435 their sys.path with yet another directory. Changed the INSTALL
6432 6436 file accordingly.
6433 6437
6434 6438 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6435 6439 sorts its output (so @who shows it sorted) and @whos formats the
6436 6440 table according to the width of the first column. Nicer, easier to
6437 6441 read. Todo: write a generic table_format() which takes a list of
6438 6442 lists and prints it nicely formatted, with optional row/column
6439 6443 separators and proper padding and justification.
6440 6444
6441 6445 * Released 0.1.20
6442 6446
6443 6447 * Fixed bug in @log which would reverse the inputcache list (a
6444 6448 copy operation was missing).
6445 6449
6446 6450 * Code cleanup. @config was changed to use page(). Better, since
6447 6451 its output is always quite long.
6448 6452
6449 6453 * Itpl is back as a dependency. I was having too many problems
6450 6454 getting the parametric aliases to work reliably, and it's just
6451 6455 easier to code weird string operations with it than playing %()s
6452 6456 games. It's only ~6k, so I don't think it's too big a deal.
6453 6457
6454 6458 * Found (and fixed) a very nasty bug with history. !lines weren't
6455 6459 getting cached, and the out of sync caches would crash
6456 6460 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6457 6461 division of labor a bit better. Bug fixed, cleaner structure.
6458 6462
6459 6463 2001-12-01 Fernando Perez <fperez@colorado.edu>
6460 6464
6461 6465 * Released 0.1.19
6462 6466
6463 6467 * Added option -n to @hist to prevent line number printing. Much
6464 6468 easier to copy/paste code this way.
6465 6469
6466 6470 * Created global _il to hold the input list. Allows easy
6467 6471 re-execution of blocks of code by slicing it (inspired by Janko's
6468 6472 comment on 'macros').
6469 6473
6470 6474 * Small fixes and doc updates.
6471 6475
6472 6476 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6473 6477 much too fragile with automagic. Handles properly multi-line
6474 6478 statements and takes parameters.
6475 6479
6476 6480 2001-11-30 Fernando Perez <fperez@colorado.edu>
6477 6481
6478 6482 * Version 0.1.18 released.
6479 6483
6480 6484 * Fixed nasty namespace bug in initial module imports.
6481 6485
6482 6486 * Added copyright/license notes to all code files (except
6483 6487 DPyGetOpt). For the time being, LGPL. That could change.
6484 6488
6485 6489 * Rewrote a much nicer README, updated INSTALL, cleaned up
6486 6490 ipythonrc-* samples.
6487 6491
6488 6492 * Overall code/documentation cleanup. Basically ready for
6489 6493 release. Only remaining thing: licence decision (LGPL?).
6490 6494
6491 6495 * Converted load_config to a class, ConfigLoader. Now recursion
6492 6496 control is better organized. Doesn't include the same file twice.
6493 6497
6494 6498 2001-11-29 Fernando Perez <fperez@colorado.edu>
6495 6499
6496 6500 * Got input history working. Changed output history variables from
6497 6501 _p to _o so that _i is for input and _o for output. Just cleaner
6498 6502 convention.
6499 6503
6500 6504 * Implemented parametric aliases. This pretty much allows the
6501 6505 alias system to offer full-blown shell convenience, I think.
6502 6506
6503 6507 * Version 0.1.17 released, 0.1.18 opened.
6504 6508
6505 6509 * dot_ipython/ipythonrc (alias): added documentation.
6506 6510 (xcolor): Fixed small bug (xcolors -> xcolor)
6507 6511
6508 6512 * Changed the alias system. Now alias is a magic command to define
6509 6513 aliases just like the shell. Rationale: the builtin magics should
6510 6514 be there for things deeply connected to IPython's
6511 6515 architecture. And this is a much lighter system for what I think
6512 6516 is the really important feature: allowing users to define quickly
6513 6517 magics that will do shell things for them, so they can customize
6514 6518 IPython easily to match their work habits. If someone is really
6515 6519 desperate to have another name for a builtin alias, they can
6516 6520 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6517 6521 works.
6518 6522
6519 6523 2001-11-28 Fernando Perez <fperez@colorado.edu>
6520 6524
6521 6525 * Changed @file so that it opens the source file at the proper
6522 6526 line. Since it uses less, if your EDITOR environment is
6523 6527 configured, typing v will immediately open your editor of choice
6524 6528 right at the line where the object is defined. Not as quick as
6525 6529 having a direct @edit command, but for all intents and purposes it
6526 6530 works. And I don't have to worry about writing @edit to deal with
6527 6531 all the editors, less does that.
6528 6532
6529 6533 * Version 0.1.16 released, 0.1.17 opened.
6530 6534
6531 6535 * Fixed some nasty bugs in the page/page_dumb combo that could
6532 6536 crash IPython.
6533 6537
6534 6538 2001-11-27 Fernando Perez <fperez@colorado.edu>
6535 6539
6536 6540 * Version 0.1.15 released, 0.1.16 opened.
6537 6541
6538 6542 * Finally got ? and ?? to work for undefined things: now it's
6539 6543 possible to type {}.get? and get information about the get method
6540 6544 of dicts, or os.path? even if only os is defined (so technically
6541 6545 os.path isn't). Works at any level. For example, after import os,
6542 6546 os?, os.path?, os.path.abspath? all work. This is great, took some
6543 6547 work in _ofind.
6544 6548
6545 6549 * Fixed more bugs with logging. The sanest way to do it was to add
6546 6550 to @log a 'mode' parameter. Killed two in one shot (this mode
6547 6551 option was a request of Janko's). I think it's finally clean
6548 6552 (famous last words).
6549 6553
6550 6554 * Added a page_dumb() pager which does a decent job of paging on
6551 6555 screen, if better things (like less) aren't available. One less
6552 6556 unix dependency (someday maybe somebody will port this to
6553 6557 windows).
6554 6558
6555 6559 * Fixed problem in magic_log: would lock of logging out if log
6556 6560 creation failed (because it would still think it had succeeded).
6557 6561
6558 6562 * Improved the page() function using curses to auto-detect screen
6559 6563 size. Now it can make a much better decision on whether to print
6560 6564 or page a string. Option screen_length was modified: a value 0
6561 6565 means auto-detect, and that's the default now.
6562 6566
6563 6567 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6564 6568 go out. I'll test it for a few days, then talk to Janko about
6565 6569 licences and announce it.
6566 6570
6567 6571 * Fixed the length of the auto-generated ---> prompt which appears
6568 6572 for auto-parens and auto-quotes. Getting this right isn't trivial,
6569 6573 with all the color escapes, different prompt types and optional
6570 6574 separators. But it seems to be working in all the combinations.
6571 6575
6572 6576 2001-11-26 Fernando Perez <fperez@colorado.edu>
6573 6577
6574 6578 * Wrote a regexp filter to get option types from the option names
6575 6579 string. This eliminates the need to manually keep two duplicate
6576 6580 lists.
6577 6581
6578 6582 * Removed the unneeded check_option_names. Now options are handled
6579 6583 in a much saner manner and it's easy to visually check that things
6580 6584 are ok.
6581 6585
6582 6586 * Updated version numbers on all files I modified to carry a
6583 6587 notice so Janko and Nathan have clear version markers.
6584 6588
6585 6589 * Updated docstring for ultraTB with my changes. I should send
6586 6590 this to Nathan.
6587 6591
6588 6592 * Lots of small fixes. Ran everything through pychecker again.
6589 6593
6590 6594 * Made loading of deep_reload an cmd line option. If it's not too
6591 6595 kosher, now people can just disable it. With -nodeep_reload it's
6592 6596 still available as dreload(), it just won't overwrite reload().
6593 6597
6594 6598 * Moved many options to the no| form (-opt and -noopt
6595 6599 accepted). Cleaner.
6596 6600
6597 6601 * Changed magic_log so that if called with no parameters, it uses
6598 6602 'rotate' mode. That way auto-generated logs aren't automatically
6599 6603 over-written. For normal logs, now a backup is made if it exists
6600 6604 (only 1 level of backups). A new 'backup' mode was added to the
6601 6605 Logger class to support this. This was a request by Janko.
6602 6606
6603 6607 * Added @logoff/@logon to stop/restart an active log.
6604 6608
6605 6609 * Fixed a lot of bugs in log saving/replay. It was pretty
6606 6610 broken. Now special lines (!@,/) appear properly in the command
6607 6611 history after a log replay.
6608 6612
6609 6613 * Tried and failed to implement full session saving via pickle. My
6610 6614 idea was to pickle __main__.__dict__, but modules can't be
6611 6615 pickled. This would be a better alternative to replaying logs, but
6612 6616 seems quite tricky to get to work. Changed -session to be called
6613 6617 -logplay, which more accurately reflects what it does. And if we
6614 6618 ever get real session saving working, -session is now available.
6615 6619
6616 6620 * Implemented color schemes for prompts also. As for tracebacks,
6617 6621 currently only NoColor and Linux are supported. But now the
6618 6622 infrastructure is in place, based on a generic ColorScheme
6619 6623 class. So writing and activating new schemes both for the prompts
6620 6624 and the tracebacks should be straightforward.
6621 6625
6622 6626 * Version 0.1.13 released, 0.1.14 opened.
6623 6627
6624 6628 * Changed handling of options for output cache. Now counter is
6625 6629 hardwired starting at 1 and one specifies the maximum number of
6626 6630 entries *in the outcache* (not the max prompt counter). This is
6627 6631 much better, since many statements won't increase the cache
6628 6632 count. It also eliminated some confusing options, now there's only
6629 6633 one: cache_size.
6630 6634
6631 6635 * Added 'alias' magic function and magic_alias option in the
6632 6636 ipythonrc file. Now the user can easily define whatever names he
6633 6637 wants for the magic functions without having to play weird
6634 6638 namespace games. This gives IPython a real shell-like feel.
6635 6639
6636 6640 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6637 6641 @ or not).
6638 6642
6639 6643 This was one of the last remaining 'visible' bugs (that I know
6640 6644 of). I think if I can clean up the session loading so it works
6641 6645 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6642 6646 about licensing).
6643 6647
6644 6648 2001-11-25 Fernando Perez <fperez@colorado.edu>
6645 6649
6646 6650 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6647 6651 there's a cleaner distinction between what ? and ?? show.
6648 6652
6649 6653 * Added screen_length option. Now the user can define his own
6650 6654 screen size for page() operations.
6651 6655
6652 6656 * Implemented magic shell-like functions with automatic code
6653 6657 generation. Now adding another function is just a matter of adding
6654 6658 an entry to a dict, and the function is dynamically generated at
6655 6659 run-time. Python has some really cool features!
6656 6660
6657 6661 * Renamed many options to cleanup conventions a little. Now all
6658 6662 are lowercase, and only underscores where needed. Also in the code
6659 6663 option name tables are clearer.
6660 6664
6661 6665 * Changed prompts a little. Now input is 'In [n]:' instead of
6662 6666 'In[n]:='. This allows it the numbers to be aligned with the
6663 6667 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6664 6668 Python (it was a Mathematica thing). The '...' continuation prompt
6665 6669 was also changed a little to align better.
6666 6670
6667 6671 * Fixed bug when flushing output cache. Not all _p<n> variables
6668 6672 exist, so their deletion needs to be wrapped in a try:
6669 6673
6670 6674 * Figured out how to properly use inspect.formatargspec() (it
6671 6675 requires the args preceded by *). So I removed all the code from
6672 6676 _get_pdef in Magic, which was just replicating that.
6673 6677
6674 6678 * Added test to prefilter to allow redefining magic function names
6675 6679 as variables. This is ok, since the @ form is always available,
6676 6680 but whe should allow the user to define a variable called 'ls' if
6677 6681 he needs it.
6678 6682
6679 6683 * Moved the ToDo information from README into a separate ToDo.
6680 6684
6681 6685 * General code cleanup and small bugfixes. I think it's close to a
6682 6686 state where it can be released, obviously with a big 'beta'
6683 6687 warning on it.
6684 6688
6685 6689 * Got the magic function split to work. Now all magics are defined
6686 6690 in a separate class. It just organizes things a bit, and now
6687 6691 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6688 6692 was too long).
6689 6693
6690 6694 * Changed @clear to @reset to avoid potential confusions with
6691 6695 the shell command clear. Also renamed @cl to @clear, which does
6692 6696 exactly what people expect it to from their shell experience.
6693 6697
6694 6698 Added a check to the @reset command (since it's so
6695 6699 destructive, it's probably a good idea to ask for confirmation).
6696 6700 But now reset only works for full namespace resetting. Since the
6697 6701 del keyword is already there for deleting a few specific
6698 6702 variables, I don't see the point of having a redundant magic
6699 6703 function for the same task.
6700 6704
6701 6705 2001-11-24 Fernando Perez <fperez@colorado.edu>
6702 6706
6703 6707 * Updated the builtin docs (esp. the ? ones).
6704 6708
6705 6709 * Ran all the code through pychecker. Not terribly impressed with
6706 6710 it: lots of spurious warnings and didn't really find anything of
6707 6711 substance (just a few modules being imported and not used).
6708 6712
6709 6713 * Implemented the new ultraTB functionality into IPython. New
6710 6714 option: xcolors. This chooses color scheme. xmode now only selects
6711 6715 between Plain and Verbose. Better orthogonality.
6712 6716
6713 6717 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6714 6718 mode and color scheme for the exception handlers. Now it's
6715 6719 possible to have the verbose traceback with no coloring.
6716 6720
6717 6721 2001-11-23 Fernando Perez <fperez@colorado.edu>
6718 6722
6719 6723 * Version 0.1.12 released, 0.1.13 opened.
6720 6724
6721 6725 * Removed option to set auto-quote and auto-paren escapes by
6722 6726 user. The chances of breaking valid syntax are just too high. If
6723 6727 someone *really* wants, they can always dig into the code.
6724 6728
6725 6729 * Made prompt separators configurable.
6726 6730
6727 6731 2001-11-22 Fernando Perez <fperez@colorado.edu>
6728 6732
6729 6733 * Small bugfixes in many places.
6730 6734
6731 6735 * Removed the MyCompleter class from ipplib. It seemed redundant
6732 6736 with the C-p,C-n history search functionality. Less code to
6733 6737 maintain.
6734 6738
6735 6739 * Moved all the original ipython.py code into ipythonlib.py. Right
6736 6740 now it's just one big dump into a function called make_IPython, so
6737 6741 no real modularity has been gained. But at least it makes the
6738 6742 wrapper script tiny, and since ipythonlib is a module, it gets
6739 6743 compiled and startup is much faster.
6740 6744
6741 6745 This is a reasobably 'deep' change, so we should test it for a
6742 6746 while without messing too much more with the code.
6743 6747
6744 6748 2001-11-21 Fernando Perez <fperez@colorado.edu>
6745 6749
6746 6750 * Version 0.1.11 released, 0.1.12 opened for further work.
6747 6751
6748 6752 * Removed dependency on Itpl. It was only needed in one place. It
6749 6753 would be nice if this became part of python, though. It makes life
6750 6754 *a lot* easier in some cases.
6751 6755
6752 6756 * Simplified the prefilter code a bit. Now all handlers are
6753 6757 expected to explicitly return a value (at least a blank string).
6754 6758
6755 6759 * Heavy edits in ipplib. Removed the help system altogether. Now
6756 6760 obj?/?? is used for inspecting objects, a magic @doc prints
6757 6761 docstrings, and full-blown Python help is accessed via the 'help'
6758 6762 keyword. This cleans up a lot of code (less to maintain) and does
6759 6763 the job. Since 'help' is now a standard Python component, might as
6760 6764 well use it and remove duplicate functionality.
6761 6765
6762 6766 Also removed the option to use ipplib as a standalone program. By
6763 6767 now it's too dependent on other parts of IPython to function alone.
6764 6768
6765 6769 * Fixed bug in genutils.pager. It would crash if the pager was
6766 6770 exited immediately after opening (broken pipe).
6767 6771
6768 6772 * Trimmed down the VerboseTB reporting a little. The header is
6769 6773 much shorter now and the repeated exception arguments at the end
6770 6774 have been removed. For interactive use the old header seemed a bit
6771 6775 excessive.
6772 6776
6773 6777 * Fixed small bug in output of @whos for variables with multi-word
6774 6778 types (only first word was displayed).
6775 6779
6776 6780 2001-11-17 Fernando Perez <fperez@colorado.edu>
6777 6781
6778 6782 * Version 0.1.10 released, 0.1.11 opened for further work.
6779 6783
6780 6784 * Modified dirs and friends. dirs now *returns* the stack (not
6781 6785 prints), so one can manipulate it as a variable. Convenient to
6782 6786 travel along many directories.
6783 6787
6784 6788 * Fixed bug in magic_pdef: would only work with functions with
6785 6789 arguments with default values.
6786 6790
6787 6791 2001-11-14 Fernando Perez <fperez@colorado.edu>
6788 6792
6789 6793 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6790 6794 example with IPython. Various other minor fixes and cleanups.
6791 6795
6792 6796 * Version 0.1.9 released, 0.1.10 opened for further work.
6793 6797
6794 6798 * Added sys.path to the list of directories searched in the
6795 6799 execfile= option. It used to be the current directory and the
6796 6800 user's IPYTHONDIR only.
6797 6801
6798 6802 2001-11-13 Fernando Perez <fperez@colorado.edu>
6799 6803
6800 6804 * Reinstated the raw_input/prefilter separation that Janko had
6801 6805 initially. This gives a more convenient setup for extending the
6802 6806 pre-processor from the outside: raw_input always gets a string,
6803 6807 and prefilter has to process it. We can then redefine prefilter
6804 6808 from the outside and implement extensions for special
6805 6809 purposes.
6806 6810
6807 6811 Today I got one for inputting PhysicalQuantity objects
6808 6812 (from Scientific) without needing any function calls at
6809 6813 all. Extremely convenient, and it's all done as a user-level
6810 6814 extension (no IPython code was touched). Now instead of:
6811 6815 a = PhysicalQuantity(4.2,'m/s**2')
6812 6816 one can simply say
6813 6817 a = 4.2 m/s**2
6814 6818 or even
6815 6819 a = 4.2 m/s^2
6816 6820
6817 6821 I use this, but it's also a proof of concept: IPython really is
6818 6822 fully user-extensible, even at the level of the parsing of the
6819 6823 command line. It's not trivial, but it's perfectly doable.
6820 6824
6821 6825 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6822 6826 the problem of modules being loaded in the inverse order in which
6823 6827 they were defined in
6824 6828
6825 6829 * Version 0.1.8 released, 0.1.9 opened for further work.
6826 6830
6827 6831 * Added magics pdef, source and file. They respectively show the
6828 6832 definition line ('prototype' in C), source code and full python
6829 6833 file for any callable object. The object inspector oinfo uses
6830 6834 these to show the same information.
6831 6835
6832 6836 * Version 0.1.7 released, 0.1.8 opened for further work.
6833 6837
6834 6838 * Separated all the magic functions into a class called Magic. The
6835 6839 InteractiveShell class was becoming too big for Xemacs to handle
6836 6840 (de-indenting a line would lock it up for 10 seconds while it
6837 6841 backtracked on the whole class!)
6838 6842
6839 6843 FIXME: didn't work. It can be done, but right now namespaces are
6840 6844 all messed up. Do it later (reverted it for now, so at least
6841 6845 everything works as before).
6842 6846
6843 6847 * Got the object introspection system (magic_oinfo) working! I
6844 6848 think this is pretty much ready for release to Janko, so he can
6845 6849 test it for a while and then announce it. Pretty much 100% of what
6846 6850 I wanted for the 'phase 1' release is ready. Happy, tired.
6847 6851
6848 6852 2001-11-12 Fernando Perez <fperez@colorado.edu>
6849 6853
6850 6854 * Version 0.1.6 released, 0.1.7 opened for further work.
6851 6855
6852 6856 * Fixed bug in printing: it used to test for truth before
6853 6857 printing, so 0 wouldn't print. Now checks for None.
6854 6858
6855 6859 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6856 6860 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6857 6861 reaches by hand into the outputcache. Think of a better way to do
6858 6862 this later.
6859 6863
6860 6864 * Various small fixes thanks to Nathan's comments.
6861 6865
6862 6866 * Changed magic_pprint to magic_Pprint. This way it doesn't
6863 6867 collide with pprint() and the name is consistent with the command
6864 6868 line option.
6865 6869
6866 6870 * Changed prompt counter behavior to be fully like
6867 6871 Mathematica's. That is, even input that doesn't return a result
6868 6872 raises the prompt counter. The old behavior was kind of confusing
6869 6873 (getting the same prompt number several times if the operation
6870 6874 didn't return a result).
6871 6875
6872 6876 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6873 6877
6874 6878 * Fixed -Classic mode (wasn't working anymore).
6875 6879
6876 6880 * Added colored prompts using Nathan's new code. Colors are
6877 6881 currently hardwired, they can be user-configurable. For
6878 6882 developers, they can be chosen in file ipythonlib.py, at the
6879 6883 beginning of the CachedOutput class def.
6880 6884
6881 6885 2001-11-11 Fernando Perez <fperez@colorado.edu>
6882 6886
6883 6887 * Version 0.1.5 released, 0.1.6 opened for further work.
6884 6888
6885 6889 * Changed magic_env to *return* the environment as a dict (not to
6886 6890 print it). This way it prints, but it can also be processed.
6887 6891
6888 6892 * Added Verbose exception reporting to interactive
6889 6893 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6890 6894 traceback. Had to make some changes to the ultraTB file. This is
6891 6895 probably the last 'big' thing in my mental todo list. This ties
6892 6896 in with the next entry:
6893 6897
6894 6898 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6895 6899 has to specify is Plain, Color or Verbose for all exception
6896 6900 handling.
6897 6901
6898 6902 * Removed ShellServices option. All this can really be done via
6899 6903 the magic system. It's easier to extend, cleaner and has automatic
6900 6904 namespace protection and documentation.
6901 6905
6902 6906 2001-11-09 Fernando Perez <fperez@colorado.edu>
6903 6907
6904 6908 * Fixed bug in output cache flushing (missing parameter to
6905 6909 __init__). Other small bugs fixed (found using pychecker).
6906 6910
6907 6911 * Version 0.1.4 opened for bugfixing.
6908 6912
6909 6913 2001-11-07 Fernando Perez <fperez@colorado.edu>
6910 6914
6911 6915 * Version 0.1.3 released, mainly because of the raw_input bug.
6912 6916
6913 6917 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6914 6918 and when testing for whether things were callable, a call could
6915 6919 actually be made to certain functions. They would get called again
6916 6920 once 'really' executed, with a resulting double call. A disaster
6917 6921 in many cases (list.reverse() would never work!).
6918 6922
6919 6923 * Removed prefilter() function, moved its code to raw_input (which
6920 6924 after all was just a near-empty caller for prefilter). This saves
6921 6925 a function call on every prompt, and simplifies the class a tiny bit.
6922 6926
6923 6927 * Fix _ip to __ip name in magic example file.
6924 6928
6925 6929 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6926 6930 work with non-gnu versions of tar.
6927 6931
6928 6932 2001-11-06 Fernando Perez <fperez@colorado.edu>
6929 6933
6930 6934 * Version 0.1.2. Just to keep track of the recent changes.
6931 6935
6932 6936 * Fixed nasty bug in output prompt routine. It used to check 'if
6933 6937 arg != None...'. Problem is, this fails if arg implements a
6934 6938 special comparison (__cmp__) which disallows comparing to
6935 6939 None. Found it when trying to use the PhysicalQuantity module from
6936 6940 ScientificPython.
6937 6941
6938 6942 2001-11-05 Fernando Perez <fperez@colorado.edu>
6939 6943
6940 6944 * Also added dirs. Now the pushd/popd/dirs family functions
6941 6945 basically like the shell, with the added convenience of going home
6942 6946 when called with no args.
6943 6947
6944 6948 * pushd/popd slightly modified to mimic shell behavior more
6945 6949 closely.
6946 6950
6947 6951 * Added env,pushd,popd from ShellServices as magic functions. I
6948 6952 think the cleanest will be to port all desired functions from
6949 6953 ShellServices as magics and remove ShellServices altogether. This
6950 6954 will provide a single, clean way of adding functionality
6951 6955 (shell-type or otherwise) to IP.
6952 6956
6953 6957 2001-11-04 Fernando Perez <fperez@colorado.edu>
6954 6958
6955 6959 * Added .ipython/ directory to sys.path. This way users can keep
6956 6960 customizations there and access them via import.
6957 6961
6958 6962 2001-11-03 Fernando Perez <fperez@colorado.edu>
6959 6963
6960 6964 * Opened version 0.1.1 for new changes.
6961 6965
6962 6966 * Changed version number to 0.1.0: first 'public' release, sent to
6963 6967 Nathan and Janko.
6964 6968
6965 6969 * Lots of small fixes and tweaks.
6966 6970
6967 6971 * Minor changes to whos format. Now strings are shown, snipped if
6968 6972 too long.
6969 6973
6970 6974 * Changed ShellServices to work on __main__ so they show up in @who
6971 6975
6972 6976 * Help also works with ? at the end of a line:
6973 6977 ?sin and sin?
6974 6978 both produce the same effect. This is nice, as often I use the
6975 6979 tab-complete to find the name of a method, but I used to then have
6976 6980 to go to the beginning of the line to put a ? if I wanted more
6977 6981 info. Now I can just add the ? and hit return. Convenient.
6978 6982
6979 6983 2001-11-02 Fernando Perez <fperez@colorado.edu>
6980 6984
6981 6985 * Python version check (>=2.1) added.
6982 6986
6983 6987 * Added LazyPython documentation. At this point the docs are quite
6984 6988 a mess. A cleanup is in order.
6985 6989
6986 6990 * Auto-installer created. For some bizarre reason, the zipfiles
6987 6991 module isn't working on my system. So I made a tar version
6988 6992 (hopefully the command line options in various systems won't kill
6989 6993 me).
6990 6994
6991 6995 * Fixes to Struct in genutils. Now all dictionary-like methods are
6992 6996 protected (reasonably).
6993 6997
6994 6998 * Added pager function to genutils and changed ? to print usage
6995 6999 note through it (it was too long).
6996 7000
6997 7001 * Added the LazyPython functionality. Works great! I changed the
6998 7002 auto-quote escape to ';', it's on home row and next to '. But
6999 7003 both auto-quote and auto-paren (still /) escapes are command-line
7000 7004 parameters.
7001 7005
7002 7006
7003 7007 2001-11-01 Fernando Perez <fperez@colorado.edu>
7004 7008
7005 7009 * Version changed to 0.0.7. Fairly large change: configuration now
7006 7010 is all stored in a directory, by default .ipython. There, all
7007 7011 config files have normal looking names (not .names)
7008 7012
7009 7013 * Version 0.0.6 Released first to Lucas and Archie as a test
7010 7014 run. Since it's the first 'semi-public' release, change version to
7011 7015 > 0.0.6 for any changes now.
7012 7016
7013 7017 * Stuff I had put in the ipplib.py changelog:
7014 7018
7015 7019 Changes to InteractiveShell:
7016 7020
7017 7021 - Made the usage message a parameter.
7018 7022
7019 7023 - Require the name of the shell variable to be given. It's a bit
7020 7024 of a hack, but allows the name 'shell' not to be hardwired in the
7021 7025 magic (@) handler, which is problematic b/c it requires
7022 7026 polluting the global namespace with 'shell'. This in turn is
7023 7027 fragile: if a user redefines a variable called shell, things
7024 7028 break.
7025 7029
7026 7030 - magic @: all functions available through @ need to be defined
7027 7031 as magic_<name>, even though they can be called simply as
7028 7032 @<name>. This allows the special command @magic to gather
7029 7033 information automatically about all existing magic functions,
7030 7034 even if they are run-time user extensions, by parsing the shell
7031 7035 instance __dict__ looking for special magic_ names.
7032 7036
7033 7037 - mainloop: added *two* local namespace parameters. This allows
7034 7038 the class to differentiate between parameters which were there
7035 7039 before and after command line initialization was processed. This
7036 7040 way, later @who can show things loaded at startup by the
7037 7041 user. This trick was necessary to make session saving/reloading
7038 7042 really work: ideally after saving/exiting/reloading a session,
7039 7043 *everything* should look the same, including the output of @who. I
7040 7044 was only able to make this work with this double namespace
7041 7045 trick.
7042 7046
7043 7047 - added a header to the logfile which allows (almost) full
7044 7048 session restoring.
7045 7049
7046 7050 - prepend lines beginning with @ or !, with a and log
7047 7051 them. Why? !lines: may be useful to know what you did @lines:
7048 7052 they may affect session state. So when restoring a session, at
7049 7053 least inform the user of their presence. I couldn't quite get
7050 7054 them to properly re-execute, but at least the user is warned.
7051 7055
7052 7056 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now