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