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