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