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