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