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