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