##// END OF EJS Templates
apply Matthew Neeley's patch to sort the attribute names properly when the dupes have been removed
vivainio -
Show More
@@ -1,673 +1,674 b''
1 """Word completion for IPython.
1 """Word completion for IPython.
2
2
3 This module is a fork of the rlcompleter module in the Python standard
3 This module is a fork of the rlcompleter module in the Python standard
4 library. The original enhancements made to rlcompleter have been sent
4 library. The original enhancements made to rlcompleter have been sent
5 upstream and were accepted as of Python 2.3, but we need a lot more
5 upstream and were accepted as of Python 2.3, but we need a lot more
6 functionality specific to IPython, so this module will continue to live as an
6 functionality specific to IPython, so this module will continue to live as an
7 IPython-specific utility.
7 IPython-specific utility.
8
8
9 ---------------------------------------------------------------------------
9 ---------------------------------------------------------------------------
10 Original rlcompleter documentation:
10 Original rlcompleter documentation:
11
11
12 This requires the latest extension to the readline module (the
12 This requires the latest extension to the readline module (the
13 completes keywords, built-ins and globals in __main__; when completing
13 completes keywords, built-ins and globals in __main__; when completing
14 NAME.NAME..., it evaluates (!) the expression up to the last dot and
14 NAME.NAME..., it evaluates (!) the expression up to the last dot and
15 completes its attributes.
15 completes its attributes.
16
16
17 It's very cool to do "import string" type "string.", hit the
17 It's very cool to do "import string" type "string.", hit the
18 completion key (twice), and see the list of names defined by the
18 completion key (twice), and see the list of names defined by the
19 string module!
19 string module!
20
20
21 Tip: to use the tab key as the completion key, call
21 Tip: to use the tab key as the completion key, call
22
22
23 readline.parse_and_bind("tab: complete")
23 readline.parse_and_bind("tab: complete")
24
24
25 Notes:
25 Notes:
26
26
27 - Exceptions raised by the completer function are *ignored* (and
27 - Exceptions raised by the completer function are *ignored* (and
28 generally cause the completion to fail). This is a feature -- since
28 generally cause the completion to fail). This is a feature -- since
29 readline sets the tty device in raw (or cbreak) mode, printing a
29 readline sets the tty device in raw (or cbreak) mode, printing a
30 traceback wouldn't work well without some complicated hoopla to save,
30 traceback wouldn't work well without some complicated hoopla to save,
31 reset and restore the tty state.
31 reset and restore the tty state.
32
32
33 - The evaluation of the NAME.NAME... form may cause arbitrary
33 - The evaluation of the NAME.NAME... form may cause arbitrary
34 application defined code to be executed if an object with a
34 application defined code to be executed if an object with a
35 __getattr__ hook is found. Since it is the responsibility of the
35 __getattr__ hook is found. Since it is the responsibility of the
36 application (or the user) to enable this feature, I consider this an
36 application (or the user) to enable this feature, I consider this an
37 acceptable risk. More complicated expressions (e.g. function calls or
37 acceptable risk. More complicated expressions (e.g. function calls or
38 indexing operations) are *not* evaluated.
38 indexing operations) are *not* evaluated.
39
39
40 - GNU readline is also used by the built-in functions input() and
40 - GNU readline is also used by the built-in functions input() and
41 raw_input(), and thus these also benefit/suffer from the completer
41 raw_input(), and thus these also benefit/suffer from the completer
42 features. Clearly an interactive application can benefit by
42 features. Clearly an interactive application can benefit by
43 specifying its own completer function and using raw_input() for all
43 specifying its own completer function and using raw_input() for all
44 its input.
44 its input.
45
45
46 - When the original stdin is not a tty device, GNU readline is never
46 - When the original stdin is not a tty device, GNU readline is never
47 used, and this module (and the readline module) are silently inactive.
47 used, and this module (and the readline module) are silently inactive.
48
48
49 """
49 """
50
50
51 #*****************************************************************************
51 #*****************************************************************************
52 #
52 #
53 # Since this file is essentially a minimally modified copy of the rlcompleter
53 # Since this file is essentially a minimally modified copy of the rlcompleter
54 # module which is part of the standard Python distribution, I assume that the
54 # module which is part of the standard Python distribution, I assume that the
55 # proper procedure is to maintain its copyright as belonging to the Python
55 # proper procedure is to maintain its copyright as belonging to the Python
56 # Software Foundation (in addition to my own, for all new code).
56 # Software Foundation (in addition to my own, for all new code).
57 #
57 #
58 # Copyright (C) 2001 Python Software Foundation, www.python.org
58 # Copyright (C) 2001 Python Software Foundation, www.python.org
59 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
59 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
60 #
60 #
61 # Distributed under the terms of the BSD License. The full license is in
61 # Distributed under the terms of the BSD License. The full license is in
62 # the file COPYING, distributed as part of this software.
62 # the file COPYING, distributed as part of this software.
63 #
63 #
64 #*****************************************************************************
64 #*****************************************************************************
65
65
66 import __builtin__
66 import __builtin__
67 import __main__
67 import __main__
68 import glob
68 import glob
69 import keyword
69 import keyword
70 import os
70 import os
71 import re
71 import re
72 import shlex
72 import shlex
73 import sys
73 import sys
74 import IPython.rlineimpl as readline
74 import IPython.rlineimpl as readline
75 import itertools
75 import itertools
76 from IPython.ipstruct import Struct
76 from IPython.ipstruct import Struct
77 from IPython import ipapi
77 from IPython import ipapi
78
78
79 import types
79 import types
80
80
81 # Python 2.4 offers sets as a builtin
81 # Python 2.4 offers sets as a builtin
82 try:
82 try:
83 set([1,2])
83 set([1,2])
84 except NameError:
84 except NameError:
85 from sets import Set as set
85 from sets import Set as set
86
86
87 from IPython.genutils import debugx
87 from IPython.genutils import debugx
88
88
89 __all__ = ['Completer','IPCompleter']
89 __all__ = ['Completer','IPCompleter']
90
90
91 def get_class_members(cls):
91 def get_class_members(cls):
92 ret = dir(cls)
92 ret = dir(cls)
93 if hasattr(cls,'__bases__'):
93 if hasattr(cls,'__bases__'):
94 for base in cls.__bases__:
94 for base in cls.__bases__:
95 ret.extend(get_class_members(base))
95 ret.extend(get_class_members(base))
96 return ret
96 return ret
97
97
98 class Completer:
98 class Completer:
99 def __init__(self,namespace=None,global_namespace=None):
99 def __init__(self,namespace=None,global_namespace=None):
100 """Create a new completer for the command line.
100 """Create a new completer for the command line.
101
101
102 Completer([namespace,global_namespace]) -> completer instance.
102 Completer([namespace,global_namespace]) -> completer instance.
103
103
104 If unspecified, the default namespace where completions are performed
104 If unspecified, the default namespace where completions are performed
105 is __main__ (technically, __main__.__dict__). Namespaces should be
105 is __main__ (technically, __main__.__dict__). Namespaces should be
106 given as dictionaries.
106 given as dictionaries.
107
107
108 An optional second namespace can be given. This allows the completer
108 An optional second namespace can be given. This allows the completer
109 to handle cases where both the local and global scopes need to be
109 to handle cases where both the local and global scopes need to be
110 distinguished.
110 distinguished.
111
111
112 Completer instances should be used as the completion mechanism of
112 Completer instances should be used as the completion mechanism of
113 readline via the set_completer() call:
113 readline via the set_completer() call:
114
114
115 readline.set_completer(Completer(my_namespace).complete)
115 readline.set_completer(Completer(my_namespace).complete)
116 """
116 """
117
117
118 # some minimal strict typechecks. For some core data structures, I
118 # some minimal strict typechecks. For some core data structures, I
119 # want actual basic python types, not just anything that looks like
119 # want actual basic python types, not just anything that looks like
120 # one. This is especially true for namespaces.
120 # one. This is especially true for namespaces.
121 for ns in (namespace,global_namespace):
121 for ns in (namespace,global_namespace):
122 if ns is not None and type(ns) != types.DictType:
122 if ns is not None and type(ns) != types.DictType:
123 raise TypeError,'namespace must be a dictionary'
123 raise TypeError,'namespace must be a dictionary'
124
124
125 # Don't bind to namespace quite yet, but flag whether the user wants a
125 # Don't bind to namespace quite yet, but flag whether the user wants a
126 # specific namespace or to use __main__.__dict__. This will allow us
126 # specific namespace or to use __main__.__dict__. This will allow us
127 # to bind to __main__.__dict__ at completion time, not now.
127 # to bind to __main__.__dict__ at completion time, not now.
128 if namespace is None:
128 if namespace is None:
129 self.use_main_ns = 1
129 self.use_main_ns = 1
130 else:
130 else:
131 self.use_main_ns = 0
131 self.use_main_ns = 0
132 self.namespace = namespace
132 self.namespace = namespace
133
133
134 # The global namespace, if given, can be bound directly
134 # The global namespace, if given, can be bound directly
135 if global_namespace is None:
135 if global_namespace is None:
136 self.global_namespace = {}
136 self.global_namespace = {}
137 else:
137 else:
138 self.global_namespace = global_namespace
138 self.global_namespace = global_namespace
139
139
140 def complete(self, text, state):
140 def complete(self, text, state):
141 """Return the next possible completion for 'text'.
141 """Return the next possible completion for 'text'.
142
142
143 This is called successively with state == 0, 1, 2, ... until it
143 This is called successively with state == 0, 1, 2, ... until it
144 returns None. The completion should begin with 'text'.
144 returns None. The completion should begin with 'text'.
145
145
146 """
146 """
147 if self.use_main_ns:
147 if self.use_main_ns:
148 self.namespace = __main__.__dict__
148 self.namespace = __main__.__dict__
149
149
150 if state == 0:
150 if state == 0:
151 if "." in text:
151 if "." in text:
152 self.matches = self.attr_matches(text)
152 self.matches = self.attr_matches(text)
153 else:
153 else:
154 self.matches = self.global_matches(text)
154 self.matches = self.global_matches(text)
155 try:
155 try:
156 return self.matches[state]
156 return self.matches[state]
157 except IndexError:
157 except IndexError:
158 return None
158 return None
159
159
160 def global_matches(self, text):
160 def global_matches(self, text):
161 """Compute matches when text is a simple name.
161 """Compute matches when text is a simple name.
162
162
163 Return a list of all keywords, built-in functions and names currently
163 Return a list of all keywords, built-in functions and names currently
164 defined in self.namespace or self.global_namespace that match.
164 defined in self.namespace or self.global_namespace that match.
165
165
166 """
166 """
167 matches = []
167 matches = []
168 match_append = matches.append
168 match_append = matches.append
169 n = len(text)
169 n = len(text)
170 for lst in [keyword.kwlist,
170 for lst in [keyword.kwlist,
171 __builtin__.__dict__.keys(),
171 __builtin__.__dict__.keys(),
172 self.namespace.keys(),
172 self.namespace.keys(),
173 self.global_namespace.keys()]:
173 self.global_namespace.keys()]:
174 for word in lst:
174 for word in lst:
175 if word[:n] == text and word != "__builtins__":
175 if word[:n] == text and word != "__builtins__":
176 match_append(word)
176 match_append(word)
177 return matches
177 return matches
178
178
179 def attr_matches(self, text):
179 def attr_matches(self, text):
180 """Compute matches when text contains a dot.
180 """Compute matches when text contains a dot.
181
181
182 Assuming the text is of the form NAME.NAME....[NAME], and is
182 Assuming the text is of the form NAME.NAME....[NAME], and is
183 evaluatable in self.namespace or self.global_namespace, it will be
183 evaluatable in self.namespace or self.global_namespace, it will be
184 evaluated and its attributes (as revealed by dir()) are used as
184 evaluated and its attributes (as revealed by dir()) are used as
185 possible completions. (For class instances, class members are are
185 possible completions. (For class instances, class members are are
186 also considered.)
186 also considered.)
187
187
188 WARNING: this can still invoke arbitrary C code, if an object
188 WARNING: this can still invoke arbitrary C code, if an object
189 with a __getattr__ hook is evaluated.
189 with a __getattr__ hook is evaluated.
190
190
191 """
191 """
192 import re
192 import re
193
193
194 # Another option, seems to work great. Catches things like ''.<tab>
194 # Another option, seems to work great. Catches things like ''.<tab>
195 m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)
195 m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)
196
196
197 if not m:
197 if not m:
198 return []
198 return []
199
199
200 expr, attr = m.group(1, 3)
200 expr, attr = m.group(1, 3)
201 try:
201 try:
202 object = eval(expr, self.namespace)
202 object = eval(expr, self.namespace)
203 except:
203 except:
204 try:
204 try:
205 object = eval(expr, self.global_namespace)
205 object = eval(expr, self.global_namespace)
206 except:
206 except:
207 return []
207 return []
208
208
209
209
210 # Start building the attribute list via dir(), and then complete it
210 # Start building the attribute list via dir(), and then complete it
211 # with a few extra special-purpose calls.
211 # with a few extra special-purpose calls.
212 words = dir(object)
212 words = dir(object)
213
213
214 if hasattr(object,'__class__'):
214 if hasattr(object,'__class__'):
215 words.append('__class__')
215 words.append('__class__')
216 words.extend(get_class_members(object.__class__))
216 words.extend(get_class_members(object.__class__))
217
217
218 # Some libraries (such as traits) may introduce duplicates, we want to
218 # Some libraries (such as traits) may introduce duplicates, we want to
219 # track and clean this up if it happens
219 # track and clean this up if it happens
220 may_have_dupes = False
220 may_have_dupes = False
221
221
222 # this is the 'dir' function for objects with Enthought's traits
222 # this is the 'dir' function for objects with Enthought's traits
223 if hasattr(object, 'trait_names'):
223 if hasattr(object, 'trait_names'):
224 try:
224 try:
225 words.extend(object.trait_names())
225 words.extend(object.trait_names())
226 may_have_dupes = True
226 may_have_dupes = True
227 except TypeError:
227 except TypeError:
228 # This will happen if `object` is a class and not an instance.
228 # This will happen if `object` is a class and not an instance.
229 pass
229 pass
230
230
231 # Support for PyCrust-style _getAttributeNames magic method.
231 # Support for PyCrust-style _getAttributeNames magic method.
232 if hasattr(object, '_getAttributeNames'):
232 if hasattr(object, '_getAttributeNames'):
233 try:
233 try:
234 words.extend(object._getAttributeNames())
234 words.extend(object._getAttributeNames())
235 may_have_dupes = True
235 may_have_dupes = True
236 except TypeError:
236 except TypeError:
237 # `object` is a class and not an instance. Ignore
237 # `object` is a class and not an instance. Ignore
238 # this error.
238 # this error.
239 pass
239 pass
240
240
241 if may_have_dupes:
241 if may_have_dupes:
242 # eliminate possible duplicates, as some traits may also
242 # eliminate possible duplicates, as some traits may also
243 # appear as normal attributes in the dir() call.
243 # appear as normal attributes in the dir() call.
244 words = set(words)
244 words = list(set(words))
245 words.sort()
245
246
246 # filter out non-string attributes which may be stuffed by dir() calls
247 # filter out non-string attributes which may be stuffed by dir() calls
247 # and poor coding in third-party modules
248 # and poor coding in third-party modules
248 words = [w for w in words
249 words = [w for w in words
249 if isinstance(w, basestring) and w != "__builtins__"]
250 if isinstance(w, basestring) and w != "__builtins__"]
250 # Build match list to return
251 # Build match list to return
251 n = len(attr)
252 n = len(attr)
252 return ["%s.%s" % (expr, w) for w in words if w[:n] == attr ]
253 return ["%s.%s" % (expr, w) for w in words if w[:n] == attr ]
253
254
254 class IPCompleter(Completer):
255 class IPCompleter(Completer):
255 """Extension of the completer class with IPython-specific features"""
256 """Extension of the completer class with IPython-specific features"""
256
257
257 def __init__(self,shell,namespace=None,global_namespace=None,
258 def __init__(self,shell,namespace=None,global_namespace=None,
258 omit__names=0,alias_table=None):
259 omit__names=0,alias_table=None):
259 """IPCompleter() -> completer
260 """IPCompleter() -> completer
260
261
261 Return a completer object suitable for use by the readline library
262 Return a completer object suitable for use by the readline library
262 via readline.set_completer().
263 via readline.set_completer().
263
264
264 Inputs:
265 Inputs:
265
266
266 - shell: a pointer to the ipython shell itself. This is needed
267 - shell: a pointer to the ipython shell itself. This is needed
267 because this completer knows about magic functions, and those can
268 because this completer knows about magic functions, and those can
268 only be accessed via the ipython instance.
269 only be accessed via the ipython instance.
269
270
270 - namespace: an optional dict where completions are performed.
271 - namespace: an optional dict where completions are performed.
271
272
272 - global_namespace: secondary optional dict for completions, to
273 - global_namespace: secondary optional dict for completions, to
273 handle cases (such as IPython embedded inside functions) where
274 handle cases (such as IPython embedded inside functions) where
274 both Python scopes are visible.
275 both Python scopes are visible.
275
276
276 - The optional omit__names parameter sets the completer to omit the
277 - The optional omit__names parameter sets the completer to omit the
277 'magic' names (__magicname__) for python objects unless the text
278 'magic' names (__magicname__) for python objects unless the text
278 to be completed explicitly starts with one or more underscores.
279 to be completed explicitly starts with one or more underscores.
279
280
280 - If alias_table is supplied, it should be a dictionary of aliases
281 - If alias_table is supplied, it should be a dictionary of aliases
281 to complete. """
282 to complete. """
282
283
283 Completer.__init__(self,namespace,global_namespace)
284 Completer.__init__(self,namespace,global_namespace)
284 self.magic_prefix = shell.name+'.magic_'
285 self.magic_prefix = shell.name+'.magic_'
285 self.magic_escape = shell.ESC_MAGIC
286 self.magic_escape = shell.ESC_MAGIC
286 self.readline = readline
287 self.readline = readline
287 delims = self.readline.get_completer_delims()
288 delims = self.readline.get_completer_delims()
288 delims = delims.replace(self.magic_escape,'')
289 delims = delims.replace(self.magic_escape,'')
289 self.readline.set_completer_delims(delims)
290 self.readline.set_completer_delims(delims)
290 self.get_line_buffer = self.readline.get_line_buffer
291 self.get_line_buffer = self.readline.get_line_buffer
291 self.omit__names = omit__names
292 self.omit__names = omit__names
292 self.merge_completions = shell.rc.readline_merge_completions
293 self.merge_completions = shell.rc.readline_merge_completions
293
294
294 if alias_table is None:
295 if alias_table is None:
295 alias_table = {}
296 alias_table = {}
296 self.alias_table = alias_table
297 self.alias_table = alias_table
297 # Regexp to split filenames with spaces in them
298 # Regexp to split filenames with spaces in them
298 self.space_name_re = re.compile(r'([^\\] )')
299 self.space_name_re = re.compile(r'([^\\] )')
299 # Hold a local ref. to glob.glob for speed
300 # Hold a local ref. to glob.glob for speed
300 self.glob = glob.glob
301 self.glob = glob.glob
301
302
302 # Determine if we are running on 'dumb' terminals, like (X)Emacs
303 # Determine if we are running on 'dumb' terminals, like (X)Emacs
303 # buffers, to avoid completion problems.
304 # buffers, to avoid completion problems.
304 term = os.environ.get('TERM','xterm')
305 term = os.environ.get('TERM','xterm')
305 self.dumb_terminal = term in ['dumb','emacs']
306 self.dumb_terminal = term in ['dumb','emacs']
306
307
307 # Special handling of backslashes needed in win32 platforms
308 # Special handling of backslashes needed in win32 platforms
308 if sys.platform == "win32":
309 if sys.platform == "win32":
309 self.clean_glob = self._clean_glob_win32
310 self.clean_glob = self._clean_glob_win32
310 else:
311 else:
311 self.clean_glob = self._clean_glob
312 self.clean_glob = self._clean_glob
312 self.matchers = [self.python_matches,
313 self.matchers = [self.python_matches,
313 self.file_matches,
314 self.file_matches,
314 self.alias_matches,
315 self.alias_matches,
315 self.python_func_kw_matches]
316 self.python_func_kw_matches]
316
317
317 # Code contributed by Alex Schmolck, for ipython/emacs integration
318 # Code contributed by Alex Schmolck, for ipython/emacs integration
318 def all_completions(self, text):
319 def all_completions(self, text):
319 """Return all possible completions for the benefit of emacs."""
320 """Return all possible completions for the benefit of emacs."""
320
321
321 completions = []
322 completions = []
322 comp_append = completions.append
323 comp_append = completions.append
323 try:
324 try:
324 for i in xrange(sys.maxint):
325 for i in xrange(sys.maxint):
325 res = self.complete(text, i)
326 res = self.complete(text, i)
326
327
327 if not res: break
328 if not res: break
328
329
329 comp_append(res)
330 comp_append(res)
330 #XXX workaround for ``notDefined.<tab>``
331 #XXX workaround for ``notDefined.<tab>``
331 except NameError:
332 except NameError:
332 pass
333 pass
333 return completions
334 return completions
334 # /end Alex Schmolck code.
335 # /end Alex Schmolck code.
335
336
336 def _clean_glob(self,text):
337 def _clean_glob(self,text):
337 return self.glob("%s*" % text)
338 return self.glob("%s*" % text)
338
339
339 def _clean_glob_win32(self,text):
340 def _clean_glob_win32(self,text):
340 return [f.replace("\\","/")
341 return [f.replace("\\","/")
341 for f in self.glob("%s*" % text)]
342 for f in self.glob("%s*" % text)]
342
343
343 def file_matches(self, text):
344 def file_matches(self, text):
344 """Match filenames, expanding ~USER type strings.
345 """Match filenames, expanding ~USER type strings.
345
346
346 Most of the seemingly convoluted logic in this completer is an
347 Most of the seemingly convoluted logic in this completer is an
347 attempt to handle filenames with spaces in them. And yet it's not
348 attempt to handle filenames with spaces in them. And yet it's not
348 quite perfect, because Python's readline doesn't expose all of the
349 quite perfect, because Python's readline doesn't expose all of the
349 GNU readline details needed for this to be done correctly.
350 GNU readline details needed for this to be done correctly.
350
351
351 For a filename with a space in it, the printed completions will be
352 For a filename with a space in it, the printed completions will be
352 only the parts after what's already been typed (instead of the
353 only the parts after what's already been typed (instead of the
353 full completions, as is normally done). I don't think with the
354 full completions, as is normally done). I don't think with the
354 current (as of Python 2.3) Python readline it's possible to do
355 current (as of Python 2.3) Python readline it's possible to do
355 better."""
356 better."""
356
357
357 #print 'Completer->file_matches: <%s>' % text # dbg
358 #print 'Completer->file_matches: <%s>' % text # dbg
358
359
359 # chars that require escaping with backslash - i.e. chars
360 # chars that require escaping with backslash - i.e. chars
360 # that readline treats incorrectly as delimiters, but we
361 # that readline treats incorrectly as delimiters, but we
361 # don't want to treat as delimiters in filename matching
362 # don't want to treat as delimiters in filename matching
362 # when escaped with backslash
363 # when escaped with backslash
363
364
364 protectables = ' ()[]{}'
365 protectables = ' ()[]{}'
365
366
366 if text.startswith('!'):
367 if text.startswith('!'):
367 text = text[1:]
368 text = text[1:]
368 text_prefix = '!'
369 text_prefix = '!'
369 else:
370 else:
370 text_prefix = ''
371 text_prefix = ''
371
372
372 def protect_filename(s):
373 def protect_filename(s):
373 return "".join([(ch in protectables and '\\' + ch or ch)
374 return "".join([(ch in protectables and '\\' + ch or ch)
374 for ch in s])
375 for ch in s])
375
376
376 def single_dir_expand(matches):
377 def single_dir_expand(matches):
377 "Recursively expand match lists containing a single dir."
378 "Recursively expand match lists containing a single dir."
378
379
379 if len(matches) == 1 and os.path.isdir(matches[0]):
380 if len(matches) == 1 and os.path.isdir(matches[0]):
380 # Takes care of links to directories also. Use '/'
381 # Takes care of links to directories also. Use '/'
381 # explicitly, even under Windows, so that name completions
382 # explicitly, even under Windows, so that name completions
382 # don't end up escaped.
383 # don't end up escaped.
383 d = matches[0]
384 d = matches[0]
384 if d[-1] in ['/','\\']:
385 if d[-1] in ['/','\\']:
385 d = d[:-1]
386 d = d[:-1]
386
387
387 subdirs = os.listdir(d)
388 subdirs = os.listdir(d)
388 if subdirs:
389 if subdirs:
389 matches = [ (d + '/' + p) for p in subdirs]
390 matches = [ (d + '/' + p) for p in subdirs]
390 return single_dir_expand(matches)
391 return single_dir_expand(matches)
391 else:
392 else:
392 return matches
393 return matches
393 else:
394 else:
394 return matches
395 return matches
395
396
396 lbuf = self.lbuf
397 lbuf = self.lbuf
397 open_quotes = 0 # track strings with open quotes
398 open_quotes = 0 # track strings with open quotes
398 try:
399 try:
399 lsplit = shlex.split(lbuf)[-1]
400 lsplit = shlex.split(lbuf)[-1]
400 except ValueError:
401 except ValueError:
401 # typically an unmatched ", or backslash without escaped char.
402 # typically an unmatched ", or backslash without escaped char.
402 if lbuf.count('"')==1:
403 if lbuf.count('"')==1:
403 open_quotes = 1
404 open_quotes = 1
404 lsplit = lbuf.split('"')[-1]
405 lsplit = lbuf.split('"')[-1]
405 elif lbuf.count("'")==1:
406 elif lbuf.count("'")==1:
406 open_quotes = 1
407 open_quotes = 1
407 lsplit = lbuf.split("'")[-1]
408 lsplit = lbuf.split("'")[-1]
408 else:
409 else:
409 return []
410 return []
410 except IndexError:
411 except IndexError:
411 # tab pressed on empty line
412 # tab pressed on empty line
412 lsplit = ""
413 lsplit = ""
413
414
414 if lsplit != protect_filename(lsplit):
415 if lsplit != protect_filename(lsplit):
415 # if protectables are found, do matching on the whole escaped
416 # if protectables are found, do matching on the whole escaped
416 # name
417 # name
417 has_protectables = 1
418 has_protectables = 1
418 text0,text = text,lsplit
419 text0,text = text,lsplit
419 else:
420 else:
420 has_protectables = 0
421 has_protectables = 0
421 text = os.path.expanduser(text)
422 text = os.path.expanduser(text)
422
423
423 if text == "":
424 if text == "":
424 return [text_prefix + protect_filename(f) for f in self.glob("*")]
425 return [text_prefix + protect_filename(f) for f in self.glob("*")]
425
426
426 m0 = self.clean_glob(text.replace('\\',''))
427 m0 = self.clean_glob(text.replace('\\',''))
427 if has_protectables:
428 if has_protectables:
428 # If we had protectables, we need to revert our changes to the
429 # If we had protectables, we need to revert our changes to the
429 # beginning of filename so that we don't double-write the part
430 # beginning of filename so that we don't double-write the part
430 # of the filename we have so far
431 # of the filename we have so far
431 len_lsplit = len(lsplit)
432 len_lsplit = len(lsplit)
432 matches = [text_prefix + text0 +
433 matches = [text_prefix + text0 +
433 protect_filename(f[len_lsplit:]) for f in m0]
434 protect_filename(f[len_lsplit:]) for f in m0]
434 else:
435 else:
435 if open_quotes:
436 if open_quotes:
436 # if we have a string with an open quote, we don't need to
437 # if we have a string with an open quote, we don't need to
437 # protect the names at all (and we _shouldn't_, as it
438 # protect the names at all (and we _shouldn't_, as it
438 # would cause bugs when the filesystem call is made).
439 # would cause bugs when the filesystem call is made).
439 matches = m0
440 matches = m0
440 else:
441 else:
441 matches = [text_prefix +
442 matches = [text_prefix +
442 protect_filename(f) for f in m0]
443 protect_filename(f) for f in m0]
443
444
444 #print 'mm',matches # dbg
445 #print 'mm',matches # dbg
445 return single_dir_expand(matches)
446 return single_dir_expand(matches)
446
447
447 def alias_matches(self, text):
448 def alias_matches(self, text):
448 """Match internal system aliases"""
449 """Match internal system aliases"""
449 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
450 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
450
451
451 # if we are not in the first 'item', alias matching
452 # if we are not in the first 'item', alias matching
452 # doesn't make sense
453 # doesn't make sense
453 if ' ' in self.lbuf.lstrip():
454 if ' ' in self.lbuf.lstrip():
454 return []
455 return []
455 text = os.path.expanduser(text)
456 text = os.path.expanduser(text)
456 aliases = self.alias_table.keys()
457 aliases = self.alias_table.keys()
457 if text == "":
458 if text == "":
458 return aliases
459 return aliases
459 else:
460 else:
460 return [alias for alias in aliases if alias.startswith(text)]
461 return [alias for alias in aliases if alias.startswith(text)]
461
462
462 def python_matches(self,text):
463 def python_matches(self,text):
463 """Match attributes or global python names"""
464 """Match attributes or global python names"""
464
465
465 #print 'Completer->python_matches, txt=<%s>' % text # dbg
466 #print 'Completer->python_matches, txt=<%s>' % text # dbg
466 if "." in text:
467 if "." in text:
467 try:
468 try:
468 matches = self.attr_matches(text)
469 matches = self.attr_matches(text)
469 if text.endswith('.') and self.omit__names:
470 if text.endswith('.') and self.omit__names:
470 if self.omit__names == 1:
471 if self.omit__names == 1:
471 # true if txt is _not_ a __ name, false otherwise:
472 # true if txt is _not_ a __ name, false otherwise:
472 no__name = (lambda txt:
473 no__name = (lambda txt:
473 re.match(r'.*\.__.*?__',txt) is None)
474 re.match(r'.*\.__.*?__',txt) is None)
474 else:
475 else:
475 # true if txt is _not_ a _ name, false otherwise:
476 # true if txt is _not_ a _ name, false otherwise:
476 no__name = (lambda txt:
477 no__name = (lambda txt:
477 re.match(r'.*\._.*?',txt) is None)
478 re.match(r'.*\._.*?',txt) is None)
478 matches = filter(no__name, matches)
479 matches = filter(no__name, matches)
479 except NameError:
480 except NameError:
480 # catches <undefined attributes>.<tab>
481 # catches <undefined attributes>.<tab>
481 matches = []
482 matches = []
482 else:
483 else:
483 matches = self.global_matches(text)
484 matches = self.global_matches(text)
484 # this is so completion finds magics when automagic is on:
485 # this is so completion finds magics when automagic is on:
485 if (matches == [] and
486 if (matches == [] and
486 not text.startswith(os.sep) and
487 not text.startswith(os.sep) and
487 not ' ' in self.lbuf):
488 not ' ' in self.lbuf):
488 matches = self.attr_matches(self.magic_prefix+text)
489 matches = self.attr_matches(self.magic_prefix+text)
489 return matches
490 return matches
490
491
491 def _default_arguments(self, obj):
492 def _default_arguments(self, obj):
492 """Return the list of default arguments of obj if it is callable,
493 """Return the list of default arguments of obj if it is callable,
493 or empty list otherwise."""
494 or empty list otherwise."""
494
495
495 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
496 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
496 # for classes, check for __init__,__new__
497 # for classes, check for __init__,__new__
497 if inspect.isclass(obj):
498 if inspect.isclass(obj):
498 obj = (getattr(obj,'__init__',None) or
499 obj = (getattr(obj,'__init__',None) or
499 getattr(obj,'__new__',None))
500 getattr(obj,'__new__',None))
500 # for all others, check if they are __call__able
501 # for all others, check if they are __call__able
501 elif hasattr(obj, '__call__'):
502 elif hasattr(obj, '__call__'):
502 obj = obj.__call__
503 obj = obj.__call__
503 # XXX: is there a way to handle the builtins ?
504 # XXX: is there a way to handle the builtins ?
504 try:
505 try:
505 args,_,_1,defaults = inspect.getargspec(obj)
506 args,_,_1,defaults = inspect.getargspec(obj)
506 if defaults:
507 if defaults:
507 return args[-len(defaults):]
508 return args[-len(defaults):]
508 except TypeError: pass
509 except TypeError: pass
509 return []
510 return []
510
511
511 def python_func_kw_matches(self,text):
512 def python_func_kw_matches(self,text):
512 """Match named parameters (kwargs) of the last open function"""
513 """Match named parameters (kwargs) of the last open function"""
513
514
514 if "." in text: # a parameter cannot be dotted
515 if "." in text: # a parameter cannot be dotted
515 return []
516 return []
516 try: regexp = self.__funcParamsRegex
517 try: regexp = self.__funcParamsRegex
517 except AttributeError:
518 except AttributeError:
518 regexp = self.__funcParamsRegex = re.compile(r'''
519 regexp = self.__funcParamsRegex = re.compile(r'''
519 '.*?' | # single quoted strings or
520 '.*?' | # single quoted strings or
520 ".*?" | # double quoted strings or
521 ".*?" | # double quoted strings or
521 \w+ | # identifier
522 \w+ | # identifier
522 \S # other characters
523 \S # other characters
523 ''', re.VERBOSE | re.DOTALL)
524 ''', re.VERBOSE | re.DOTALL)
524 # 1. find the nearest identifier that comes before an unclosed
525 # 1. find the nearest identifier that comes before an unclosed
525 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
526 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
526 tokens = regexp.findall(self.get_line_buffer())
527 tokens = regexp.findall(self.get_line_buffer())
527 tokens.reverse()
528 tokens.reverse()
528 iterTokens = iter(tokens); openPar = 0
529 iterTokens = iter(tokens); openPar = 0
529 for token in iterTokens:
530 for token in iterTokens:
530 if token == ')':
531 if token == ')':
531 openPar -= 1
532 openPar -= 1
532 elif token == '(':
533 elif token == '(':
533 openPar += 1
534 openPar += 1
534 if openPar > 0:
535 if openPar > 0:
535 # found the last unclosed parenthesis
536 # found the last unclosed parenthesis
536 break
537 break
537 else:
538 else:
538 return []
539 return []
539 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
540 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
540 ids = []
541 ids = []
541 isId = re.compile(r'\w+$').match
542 isId = re.compile(r'\w+$').match
542 while True:
543 while True:
543 try:
544 try:
544 ids.append(iterTokens.next())
545 ids.append(iterTokens.next())
545 if not isId(ids[-1]):
546 if not isId(ids[-1]):
546 ids.pop(); break
547 ids.pop(); break
547 if not iterTokens.next() == '.':
548 if not iterTokens.next() == '.':
548 break
549 break
549 except StopIteration:
550 except StopIteration:
550 break
551 break
551 # lookup the candidate callable matches either using global_matches
552 # lookup the candidate callable matches either using global_matches
552 # or attr_matches for dotted names
553 # or attr_matches for dotted names
553 if len(ids) == 1:
554 if len(ids) == 1:
554 callableMatches = self.global_matches(ids[0])
555 callableMatches = self.global_matches(ids[0])
555 else:
556 else:
556 callableMatches = self.attr_matches('.'.join(ids[::-1]))
557 callableMatches = self.attr_matches('.'.join(ids[::-1]))
557 argMatches = []
558 argMatches = []
558 for callableMatch in callableMatches:
559 for callableMatch in callableMatches:
559 try: namedArgs = self._default_arguments(eval(callableMatch,
560 try: namedArgs = self._default_arguments(eval(callableMatch,
560 self.namespace))
561 self.namespace))
561 except: continue
562 except: continue
562 for namedArg in namedArgs:
563 for namedArg in namedArgs:
563 if namedArg.startswith(text):
564 if namedArg.startswith(text):
564 argMatches.append("%s=" %namedArg)
565 argMatches.append("%s=" %namedArg)
565 return argMatches
566 return argMatches
566
567
567 def dispatch_custom_completer(self,text):
568 def dispatch_custom_completer(self,text):
568 # print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
569 # print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
569 line = self.full_lbuf
570 line = self.full_lbuf
570 if not line.strip():
571 if not line.strip():
571 return None
572 return None
572
573
573 event = Struct()
574 event = Struct()
574 event.line = line
575 event.line = line
575 event.symbol = text
576 event.symbol = text
576 cmd = line.split(None,1)[0]
577 cmd = line.split(None,1)[0]
577 event.command = cmd
578 event.command = cmd
578 #print "\ncustom:{%s]\n" % event # dbg
579 #print "\ncustom:{%s]\n" % event # dbg
579
580
580 # for foo etc, try also to find completer for %foo
581 # for foo etc, try also to find completer for %foo
581 if not cmd.startswith(self.magic_escape):
582 if not cmd.startswith(self.magic_escape):
582 try_magic = self.custom_completers.s_matches(
583 try_magic = self.custom_completers.s_matches(
583 self.magic_escape + cmd)
584 self.magic_escape + cmd)
584 else:
585 else:
585 try_magic = []
586 try_magic = []
586
587
587
588
588 for c in itertools.chain(
589 for c in itertools.chain(
589 self.custom_completers.s_matches(cmd),
590 self.custom_completers.s_matches(cmd),
590 try_magic,
591 try_magic,
591 self.custom_completers.flat_matches(self.lbuf)):
592 self.custom_completers.flat_matches(self.lbuf)):
592 # print "try",c # dbg
593 # print "try",c # dbg
593 try:
594 try:
594 res = c(event)
595 res = c(event)
595 return [r for r in res if r.lower().startswith(text.lower())]
596 return [r for r in res if r.lower().startswith(text.lower())]
596 except ipapi.TryNext:
597 except ipapi.TryNext:
597 pass
598 pass
598
599
599 return None
600 return None
600
601
601
602
602 def complete(self, text, state,line_buffer=None):
603 def complete(self, text, state,line_buffer=None):
603 """Return the next possible completion for 'text'.
604 """Return the next possible completion for 'text'.
604
605
605 This is called successively with state == 0, 1, 2, ... until it
606 This is called successively with state == 0, 1, 2, ... until it
606 returns None. The completion should begin with 'text'.
607 returns None. The completion should begin with 'text'.
607
608
608 :Keywords:
609 :Keywords:
609 - line_buffer: string
610 - line_buffer: string
610 If not given, the completer attempts to obtain the current line buffer
611 If not given, the completer attempts to obtain the current line buffer
611 via readline. This keyword allows clients which are requesting for
612 via readline. This keyword allows clients which are requesting for
612 text completions in non-readline contexts to inform the completer of
613 text completions in non-readline contexts to inform the completer of
613 the entire text.
614 the entire text.
614 """
615 """
615
616
616 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
617 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
617
618
618 # if there is only a tab on a line with only whitespace, instead
619 # if there is only a tab on a line with only whitespace, instead
619 # of the mostly useless 'do you want to see all million
620 # of the mostly useless 'do you want to see all million
620 # completions' message, just do the right thing and give the user
621 # completions' message, just do the right thing and give the user
621 # his tab! Incidentally, this enables pasting of tabbed text from
622 # his tab! Incidentally, this enables pasting of tabbed text from
622 # an editor (as long as autoindent is off).
623 # an editor (as long as autoindent is off).
623
624
624 # don't apply this on 'dumb' terminals, such as emacs buffers, so we
625 # don't apply this on 'dumb' terminals, such as emacs buffers, so we
625 # don't interfere with their own tab-completion mechanism.
626 # don't interfere with their own tab-completion mechanism.
626 if line_buffer is None:
627 if line_buffer is None:
627 self.full_lbuf = self.get_line_buffer()
628 self.full_lbuf = self.get_line_buffer()
628 else:
629 else:
629 self.full_lbuf = line_buffer
630 self.full_lbuf = line_buffer
630
631
631 if not (self.dumb_terminal or self.full_lbuf.strip()):
632 if not (self.dumb_terminal or self.full_lbuf.strip()):
632 self.readline.insert_text('\t')
633 self.readline.insert_text('\t')
633 return None
634 return None
634
635
635 magic_escape = self.magic_escape
636 magic_escape = self.magic_escape
636 magic_prefix = self.magic_prefix
637 magic_prefix = self.magic_prefix
637
638
638 self.lbuf = self.full_lbuf[:self.readline.get_endidx()]
639 self.lbuf = self.full_lbuf[:self.readline.get_endidx()]
639
640
640 try:
641 try:
641 if text.startswith(magic_escape):
642 if text.startswith(magic_escape):
642 text = text.replace(magic_escape,magic_prefix)
643 text = text.replace(magic_escape,magic_prefix)
643 elif text.startswith('~'):
644 elif text.startswith('~'):
644 text = os.path.expanduser(text)
645 text = os.path.expanduser(text)
645 if state == 0:
646 if state == 0:
646 custom_res = self.dispatch_custom_completer(text)
647 custom_res = self.dispatch_custom_completer(text)
647 if custom_res is not None:
648 if custom_res is not None:
648 # did custom completers produce something?
649 # did custom completers produce something?
649 self.matches = custom_res
650 self.matches = custom_res
650 else:
651 else:
651 # Extend the list of completions with the results of each
652 # Extend the list of completions with the results of each
652 # matcher, so we return results to the user from all
653 # matcher, so we return results to the user from all
653 # namespaces.
654 # namespaces.
654 if self.merge_completions:
655 if self.merge_completions:
655 self.matches = []
656 self.matches = []
656 for matcher in self.matchers:
657 for matcher in self.matchers:
657 self.matches.extend(matcher(text))
658 self.matches.extend(matcher(text))
658 else:
659 else:
659 for matcher in self.matchers:
660 for matcher in self.matchers:
660 self.matches = matcher(text)
661 self.matches = matcher(text)
661 if self.matches:
662 if self.matches:
662 break
663 break
663
664
664 try:
665 try:
665 return self.matches[state].replace(magic_prefix,magic_escape)
666 return self.matches[state].replace(magic_prefix,magic_escape)
666 except IndexError:
667 except IndexError:
667 return None
668 return None
668 except:
669 except:
669 #from IPython.ultraTB import AutoFormattedTB; # dbg
670 #from IPython.ultraTB import AutoFormattedTB; # dbg
670 #tb=AutoFormattedTB('Verbose');tb() #dbg
671 #tb=AutoFormattedTB('Verbose');tb() #dbg
671
672
672 # If completion fails, don't annoy the user.
673 # If completion fails, don't annoy the user.
673 return None
674 return None
@@ -1,6850 +1,6859 b''
1 2007-07-09 Ville Vainio <vivainio@gmail.com>
2
3 * completer.py: Applied Matthew Neeley's patch:
4 Dynamic attributes from trait_names and _getAttributeNames are added
5 to the list of tab completions, but when this happens, the attribute
6 list is turned into a set, so the attributes are unordered when
7 printed, which makes it hard to find the right completion. This patch
8 turns this set back into a list and sort it.
9
1 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
10 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
2
11
3 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
12 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
4 classes in various inspector functions.
13 classes in various inspector functions.
5
14
6 2007-06-28 Ville Vainio <vivainio@gmail.com>
15 2007-06-28 Ville Vainio <vivainio@gmail.com>
7
16
8 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
17 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
9 Implement "shadow" namespace, and callable aliases that reside there.
18 Implement "shadow" namespace, and callable aliases that reside there.
10 Use them by:
19 Use them by:
11
20
12 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
21 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
13
22
14 foo hello world
23 foo hello world
15 (gets translated to:)
24 (gets translated to:)
16 _sh.foo(r"""hello world""")
25 _sh.foo(r"""hello world""")
17
26
18 In practice, this kind of alias can take the role of a magic function
27 In practice, this kind of alias can take the role of a magic function
19
28
20 * New generic inspect_object, called on obj? and obj??
29 * New generic inspect_object, called on obj? and obj??
21
30
22 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
31 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
23
32
24 * IPython/ultraTB.py (findsource): fix a problem with
33 * IPython/ultraTB.py (findsource): fix a problem with
25 inspect.getfile that can cause crashes during traceback construction.
34 inspect.getfile that can cause crashes during traceback construction.
26
35
27 2007-06-14 Ville Vainio <vivainio@gmail.com>
36 2007-06-14 Ville Vainio <vivainio@gmail.com>
28
37
29 * iplib.py (handle_auto): Try to use ascii for printing "--->"
38 * iplib.py (handle_auto): Try to use ascii for printing "--->"
30 autocall rewrite indication, becausesometimes unicode fails to print
39 autocall rewrite indication, becausesometimes unicode fails to print
31 properly (and you get ' - - - '). Use plain uncoloured ---> for
40 properly (and you get ' - - - '). Use plain uncoloured ---> for
32 unicode.
41 unicode.
33
42
34 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
43 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
35
44
36 . pickleshare 'hash' commands (hget, hset, hcompress,
45 . pickleshare 'hash' commands (hget, hset, hcompress,
37 hdict) for efficient shadow history storage.
46 hdict) for efficient shadow history storage.
38
47
39 2007-06-13 Ville Vainio <vivainio@gmail.com>
48 2007-06-13 Ville Vainio <vivainio@gmail.com>
40
49
41 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
50 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
42 Added kw arg 'interactive', tell whether vars should be visible
51 Added kw arg 'interactive', tell whether vars should be visible
43 with %whos.
52 with %whos.
44
53
45 2007-06-11 Ville Vainio <vivainio@gmail.com>
54 2007-06-11 Ville Vainio <vivainio@gmail.com>
46
55
47 * pspersistence.py, Magic.py, iplib.py: directory history now saved
56 * pspersistence.py, Magic.py, iplib.py: directory history now saved
48 to db
57 to db
49
58
50 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
59 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
51 Also, it exits IPython immediately after evaluating the command (just like
60 Also, it exits IPython immediately after evaluating the command (just like
52 std python)
61 std python)
53
62
54 2007-06-05 Walter Doerwald <walter@livinglogic.de>
63 2007-06-05 Walter Doerwald <walter@livinglogic.de>
55
64
56 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
65 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
57 Python string and captures the output. (Idea and original patch by
66 Python string and captures the output. (Idea and original patch by
58 StοΏ½fan van der Walt)
67 StοΏ½fan van der Walt)
59
68
60 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
69 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
61
70
62 * IPython/ultraTB.py (VerboseTB.text): update printing of
71 * IPython/ultraTB.py (VerboseTB.text): update printing of
63 exception types for Python 2.5 (now all exceptions in the stdlib
72 exception types for Python 2.5 (now all exceptions in the stdlib
64 are new-style classes).
73 are new-style classes).
65
74
66 2007-05-31 Walter Doerwald <walter@livinglogic.de>
75 2007-05-31 Walter Doerwald <walter@livinglogic.de>
67
76
68 * IPython/Extensions/igrid.py: Add new commands refresh and
77 * IPython/Extensions/igrid.py: Add new commands refresh and
69 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
78 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
70 the iterator once (refresh) or after every x seconds (refresh_timer).
79 the iterator once (refresh) or after every x seconds (refresh_timer).
71 Add a working implementation of "searchexpression", where the text
80 Add a working implementation of "searchexpression", where the text
72 entered is not the text to search for, but an expression that must
81 entered is not the text to search for, but an expression that must
73 be true. Added display of shortcuts to the menu. Added commands "pickinput"
82 be true. Added display of shortcuts to the menu. Added commands "pickinput"
74 and "pickinputattr" that put the object or attribute under the cursor
83 and "pickinputattr" that put the object or attribute under the cursor
75 in the input line. Split the statusbar to be able to display the currently
84 in the input line. Split the statusbar to be able to display the currently
76 active refresh interval. (Patch by Nik Tautenhahn)
85 active refresh interval. (Patch by Nik Tautenhahn)
77
86
78 2007-05-29 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
87 2007-05-29 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
79
88
80 * fixing set_term_title to use ctypes as default
89 * fixing set_term_title to use ctypes as default
81
90
82 * fixing set_term_title fallback to work when curent dir
91 * fixing set_term_title fallback to work when curent dir
83 is on a windows network share
92 is on a windows network share
84
93
85 2007-05-28 Ville Vainio <vivainio@gmail.com>
94 2007-05-28 Ville Vainio <vivainio@gmail.com>
86
95
87 * %cpaste: strip + with > from left (diffs).
96 * %cpaste: strip + with > from left (diffs).
88
97
89 * iplib.py: Fix crash when readline not installed
98 * iplib.py: Fix crash when readline not installed
90
99
91 2007-05-26 Ville Vainio <vivainio@gmail.com>
100 2007-05-26 Ville Vainio <vivainio@gmail.com>
92
101
93 * generics.py: intruduce easy to extend result_display generic
102 * generics.py: intruduce easy to extend result_display generic
94 function (using simplegeneric.py).
103 function (using simplegeneric.py).
95
104
96 * Fixed the append functionality of %set.
105 * Fixed the append functionality of %set.
97
106
98 2007-05-25 Ville Vainio <vivainio@gmail.com>
107 2007-05-25 Ville Vainio <vivainio@gmail.com>
99
108
100 * New magic: %rep (fetch / run old commands from history)
109 * New magic: %rep (fetch / run old commands from history)
101
110
102 * New extension: mglob (%mglob magic), for powerful glob / find /filter
111 * New extension: mglob (%mglob magic), for powerful glob / find /filter
103 like functionality
112 like functionality
104
113
105 % maghistory.py: %hist -g PATTERM greps the history for pattern
114 % maghistory.py: %hist -g PATTERM greps the history for pattern
106
115
107 2007-05-24 Walter Doerwald <walter@livinglogic.de>
116 2007-05-24 Walter Doerwald <walter@livinglogic.de>
108
117
109 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
118 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
110 browse the IPython input history
119 browse the IPython input history
111
120
112 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
121 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
113 (mapped to "i") can be used to put the object under the curser in the input
122 (mapped to "i") can be used to put the object under the curser in the input
114 line. pickinputattr (mapped to "I") does the same for the attribute under
123 line. pickinputattr (mapped to "I") does the same for the attribute under
115 the cursor.
124 the cursor.
116
125
117 2007-05-24 Ville Vainio <vivainio@gmail.com>
126 2007-05-24 Ville Vainio <vivainio@gmail.com>
118
127
119 * Grand magic cleansing (changeset [2380]):
128 * Grand magic cleansing (changeset [2380]):
120
129
121 * Introduce ipy_legacy.py where the following magics were
130 * Introduce ipy_legacy.py where the following magics were
122 moved:
131 moved:
123
132
124 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
133 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
125
134
126 If you need them, either use default profile or "import ipy_legacy"
135 If you need them, either use default profile or "import ipy_legacy"
127 in your ipy_user_conf.py
136 in your ipy_user_conf.py
128
137
129 * Move sh and scipy profile to Extensions from UserConfig. this implies
138 * Move sh and scipy profile to Extensions from UserConfig. this implies
130 you should not edit them, but you don't need to run %upgrade when
139 you should not edit them, but you don't need to run %upgrade when
131 upgrading IPython anymore.
140 upgrading IPython anymore.
132
141
133 * %hist/%history now operates in "raw" mode by default. To get the old
142 * %hist/%history now operates in "raw" mode by default. To get the old
134 behaviour, run '%hist -n' (native mode).
143 behaviour, run '%hist -n' (native mode).
135
144
136 * split ipy_stock_completers.py to ipy_stock_completers.py and
145 * split ipy_stock_completers.py to ipy_stock_completers.py and
137 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
146 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
138 installed as default.
147 installed as default.
139
148
140 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
149 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
141 handling.
150 handling.
142
151
143 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
152 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
144 input if readline is available.
153 input if readline is available.
145
154
146 2007-05-23 Ville Vainio <vivainio@gmail.com>
155 2007-05-23 Ville Vainio <vivainio@gmail.com>
147
156
148 * macro.py: %store uses __getstate__ properly
157 * macro.py: %store uses __getstate__ properly
149
158
150 * exesetup.py: added new setup script for creating
159 * exesetup.py: added new setup script for creating
151 standalone IPython executables with py2exe (i.e.
160 standalone IPython executables with py2exe (i.e.
152 no python installation required).
161 no python installation required).
153
162
154 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
163 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
155 its place.
164 its place.
156
165
157 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
166 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
158
167
159 2007-05-21 Ville Vainio <vivainio@gmail.com>
168 2007-05-21 Ville Vainio <vivainio@gmail.com>
160
169
161 * platutil_win32.py (set_term_title): handle
170 * platutil_win32.py (set_term_title): handle
162 failure of 'title' system call properly.
171 failure of 'title' system call properly.
163
172
164 2007-05-17 Walter Doerwald <walter@livinglogic.de>
173 2007-05-17 Walter Doerwald <walter@livinglogic.de>
165
174
166 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
175 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
167 (Bug detected by Paul Mueller).
176 (Bug detected by Paul Mueller).
168
177
169 2007-05-16 Ville Vainio <vivainio@gmail.com>
178 2007-05-16 Ville Vainio <vivainio@gmail.com>
170
179
171 * ipy_profile_sci.py, ipython_win_post_install.py: Create
180 * ipy_profile_sci.py, ipython_win_post_install.py: Create
172 new "sci" profile, effectively a modern version of the old
181 new "sci" profile, effectively a modern version of the old
173 "scipy" profile (which is now slated for deprecation).
182 "scipy" profile (which is now slated for deprecation).
174
183
175 2007-05-15 Ville Vainio <vivainio@gmail.com>
184 2007-05-15 Ville Vainio <vivainio@gmail.com>
176
185
177 * pycolorize.py, pycolor.1: Paul Mueller's patches that
186 * pycolorize.py, pycolor.1: Paul Mueller's patches that
178 make pycolorize read input from stdin when run without arguments.
187 make pycolorize read input from stdin when run without arguments.
179
188
180 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
189 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
181
190
182 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
191 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
183 it in sh profile (instead of ipy_system_conf.py).
192 it in sh profile (instead of ipy_system_conf.py).
184
193
185 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
194 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
186 aliases are now lower case on windows (MyCommand.exe => mycommand).
195 aliases are now lower case on windows (MyCommand.exe => mycommand).
187
196
188 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
197 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
189 Macros are now callable objects that inherit from ipapi.IPyAutocall,
198 Macros are now callable objects that inherit from ipapi.IPyAutocall,
190 i.e. get autocalled regardless of system autocall setting.
199 i.e. get autocalled regardless of system autocall setting.
191
200
192 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
201 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
193
202
194 * IPython/rlineimpl.py: check for clear_history in readline and
203 * IPython/rlineimpl.py: check for clear_history in readline and
195 make it a dummy no-op if not available. This function isn't
204 make it a dummy no-op if not available. This function isn't
196 guaranteed to be in the API and appeared in Python 2.4, so we need
205 guaranteed to be in the API and appeared in Python 2.4, so we need
197 to check it ourselves. Also, clean up this file quite a bit.
206 to check it ourselves. Also, clean up this file quite a bit.
198
207
199 * ipython.1: update man page and full manual with information
208 * ipython.1: update man page and full manual with information
200 about threads (remove outdated warning). Closes #151.
209 about threads (remove outdated warning). Closes #151.
201
210
202 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
211 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
203
212
204 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
213 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
205 in trunk (note that this made it into the 0.8.1 release already,
214 in trunk (note that this made it into the 0.8.1 release already,
206 but the changelogs didn't get coordinated). Many thanks to Gael
215 but the changelogs didn't get coordinated). Many thanks to Gael
207 Varoquaux <gael.varoquaux-AT-normalesup.org>
216 Varoquaux <gael.varoquaux-AT-normalesup.org>
208
217
209 2007-05-09 *** Released version 0.8.1
218 2007-05-09 *** Released version 0.8.1
210
219
211 2007-05-10 Walter Doerwald <walter@livinglogic.de>
220 2007-05-10 Walter Doerwald <walter@livinglogic.de>
212
221
213 * IPython/Extensions/igrid.py: Incorporate html help into
222 * IPython/Extensions/igrid.py: Incorporate html help into
214 the module, so we don't have to search for the file.
223 the module, so we don't have to search for the file.
215
224
216 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
225 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
217
226
218 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
227 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
219
228
220 2007-04-30 Ville Vainio <vivainio@gmail.com>
229 2007-04-30 Ville Vainio <vivainio@gmail.com>
221
230
222 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
231 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
223 user has illegal (non-ascii) home directory name
232 user has illegal (non-ascii) home directory name
224
233
225 2007-04-27 Ville Vainio <vivainio@gmail.com>
234 2007-04-27 Ville Vainio <vivainio@gmail.com>
226
235
227 * platutils_win32.py: implement set_term_title for windows
236 * platutils_win32.py: implement set_term_title for windows
228
237
229 * Update version number
238 * Update version number
230
239
231 * ipy_profile_sh.py: more informative prompt (2 dir levels)
240 * ipy_profile_sh.py: more informative prompt (2 dir levels)
232
241
233 2007-04-26 Walter Doerwald <walter@livinglogic.de>
242 2007-04-26 Walter Doerwald <walter@livinglogic.de>
234
243
235 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
244 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
236 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
245 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
237 bug discovered by Ville).
246 bug discovered by Ville).
238
247
239 2007-04-26 Ville Vainio <vivainio@gmail.com>
248 2007-04-26 Ville Vainio <vivainio@gmail.com>
240
249
241 * Extensions/ipy_completers.py: Olivier's module completer now
250 * Extensions/ipy_completers.py: Olivier's module completer now
242 saves the list of root modules if it takes > 4 secs on the first run.
251 saves the list of root modules if it takes > 4 secs on the first run.
243
252
244 * Magic.py (%rehashx): %rehashx now clears the completer cache
253 * Magic.py (%rehashx): %rehashx now clears the completer cache
245
254
246
255
247 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
256 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
248
257
249 * ipython.el: fix incorrect color scheme, reported by Stefan.
258 * ipython.el: fix incorrect color scheme, reported by Stefan.
250 Closes #149.
259 Closes #149.
251
260
252 * IPython/PyColorize.py (Parser.format2): fix state-handling
261 * IPython/PyColorize.py (Parser.format2): fix state-handling
253 logic. I still don't like how that code handles state, but at
262 logic. I still don't like how that code handles state, but at
254 least now it should be correct, if inelegant. Closes #146.
263 least now it should be correct, if inelegant. Closes #146.
255
264
256 2007-04-25 Ville Vainio <vivainio@gmail.com>
265 2007-04-25 Ville Vainio <vivainio@gmail.com>
257
266
258 * Extensions/ipy_which.py: added extension for %which magic, works
267 * Extensions/ipy_which.py: added extension for %which magic, works
259 a lot like unix 'which' but also finds and expands aliases, and
268 a lot like unix 'which' but also finds and expands aliases, and
260 allows wildcards.
269 allows wildcards.
261
270
262 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
271 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
263 as opposed to returning nothing.
272 as opposed to returning nothing.
264
273
265 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
274 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
266 ipy_stock_completers on default profile, do import on sh profile.
275 ipy_stock_completers on default profile, do import on sh profile.
267
276
268 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
277 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
269
278
270 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
279 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
271 like ipython.py foo.py which raised a IndexError.
280 like ipython.py foo.py which raised a IndexError.
272
281
273 2007-04-21 Ville Vainio <vivainio@gmail.com>
282 2007-04-21 Ville Vainio <vivainio@gmail.com>
274
283
275 * Extensions/ipy_extutil.py: added extension to manage other ipython
284 * Extensions/ipy_extutil.py: added extension to manage other ipython
276 extensions. Now only supports 'ls' == list extensions.
285 extensions. Now only supports 'ls' == list extensions.
277
286
278 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
287 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
279
288
280 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
289 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
281 would prevent use of the exception system outside of a running
290 would prevent use of the exception system outside of a running
282 IPython instance.
291 IPython instance.
283
292
284 2007-04-20 Ville Vainio <vivainio@gmail.com>
293 2007-04-20 Ville Vainio <vivainio@gmail.com>
285
294
286 * Extensions/ipy_render.py: added extension for easy
295 * Extensions/ipy_render.py: added extension for easy
287 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
296 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
288 'Iptl' template notation,
297 'Iptl' template notation,
289
298
290 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
299 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
291 safer & faster 'import' completer.
300 safer & faster 'import' completer.
292
301
293 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
302 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
294 and _ip.defalias(name, command).
303 and _ip.defalias(name, command).
295
304
296 * Extensions/ipy_exportdb.py: New extension for exporting all the
305 * Extensions/ipy_exportdb.py: New extension for exporting all the
297 %store'd data in a portable format (normal ipapi calls like
306 %store'd data in a portable format (normal ipapi calls like
298 defmacro() etc.)
307 defmacro() etc.)
299
308
300 2007-04-19 Ville Vainio <vivainio@gmail.com>
309 2007-04-19 Ville Vainio <vivainio@gmail.com>
301
310
302 * upgrade_dir.py: skip junk files like *.pyc
311 * upgrade_dir.py: skip junk files like *.pyc
303
312
304 * Release.py: version number to 0.8.1
313 * Release.py: version number to 0.8.1
305
314
306 2007-04-18 Ville Vainio <vivainio@gmail.com>
315 2007-04-18 Ville Vainio <vivainio@gmail.com>
307
316
308 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
317 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
309 and later on win32.
318 and later on win32.
310
319
311 2007-04-16 Ville Vainio <vivainio@gmail.com>
320 2007-04-16 Ville Vainio <vivainio@gmail.com>
312
321
313 * iplib.py (showtraceback): Do not crash when running w/o readline.
322 * iplib.py (showtraceback): Do not crash when running w/o readline.
314
323
315 2007-04-12 Walter Doerwald <walter@livinglogic.de>
324 2007-04-12 Walter Doerwald <walter@livinglogic.de>
316
325
317 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
326 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
318 sorted (case sensitive with files and dirs mixed).
327 sorted (case sensitive with files and dirs mixed).
319
328
320 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
329 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
321
330
322 * IPython/Release.py (version): Open trunk for 0.8.1 development.
331 * IPython/Release.py (version): Open trunk for 0.8.1 development.
323
332
324 2007-04-10 *** Released version 0.8.0
333 2007-04-10 *** Released version 0.8.0
325
334
326 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
335 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
327
336
328 * Tag 0.8.0 for release.
337 * Tag 0.8.0 for release.
329
338
330 * IPython/iplib.py (reloadhist): add API function to cleanly
339 * IPython/iplib.py (reloadhist): add API function to cleanly
331 reload the readline history, which was growing inappropriately on
340 reload the readline history, which was growing inappropriately on
332 every %run call.
341 every %run call.
333
342
334 * win32_manual_post_install.py (run): apply last part of Nicolas
343 * win32_manual_post_install.py (run): apply last part of Nicolas
335 Pernetty's patch (I'd accidentally applied it in a different
344 Pernetty's patch (I'd accidentally applied it in a different
336 directory and this particular file didn't get patched).
345 directory and this particular file didn't get patched).
337
346
338 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
347 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
339
348
340 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
349 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
341 find the main thread id and use the proper API call. Thanks to
350 find the main thread id and use the proper API call. Thanks to
342 Stefan for the fix.
351 Stefan for the fix.
343
352
344 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
353 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
345 unit tests to reflect fixed ticket #52, and add more tests sent by
354 unit tests to reflect fixed ticket #52, and add more tests sent by
346 him.
355 him.
347
356
348 * IPython/iplib.py (raw_input): restore the readline completer
357 * IPython/iplib.py (raw_input): restore the readline completer
349 state on every input, in case third-party code messed it up.
358 state on every input, in case third-party code messed it up.
350 (_prefilter): revert recent addition of early-escape checks which
359 (_prefilter): revert recent addition of early-escape checks which
351 prevent many valid alias calls from working.
360 prevent many valid alias calls from working.
352
361
353 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
362 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
354 flag for sigint handler so we don't run a full signal() call on
363 flag for sigint handler so we don't run a full signal() call on
355 each runcode access.
364 each runcode access.
356
365
357 * IPython/Magic.py (magic_whos): small improvement to diagnostic
366 * IPython/Magic.py (magic_whos): small improvement to diagnostic
358 message.
367 message.
359
368
360 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
369 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
361
370
362 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
371 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
363 asynchronous exceptions working, i.e., Ctrl-C can actually
372 asynchronous exceptions working, i.e., Ctrl-C can actually
364 interrupt long-running code in the multithreaded shells.
373 interrupt long-running code in the multithreaded shells.
365
374
366 This is using Tomer Filiba's great ctypes-based trick:
375 This is using Tomer Filiba's great ctypes-based trick:
367 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
376 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
368 this in the past, but hadn't been able to make it work before. So
377 this in the past, but hadn't been able to make it work before. So
369 far it looks like it's actually running, but this needs more
378 far it looks like it's actually running, but this needs more
370 testing. If it really works, I'll be *very* happy, and we'll owe
379 testing. If it really works, I'll be *very* happy, and we'll owe
371 a huge thank you to Tomer. My current implementation is ugly,
380 a huge thank you to Tomer. My current implementation is ugly,
372 hackish and uses nasty globals, but I don't want to try and clean
381 hackish and uses nasty globals, but I don't want to try and clean
373 anything up until we know if it actually works.
382 anything up until we know if it actually works.
374
383
375 NOTE: this feature needs ctypes to work. ctypes is included in
384 NOTE: this feature needs ctypes to work. ctypes is included in
376 Python2.5, but 2.4 users will need to manually install it. This
385 Python2.5, but 2.4 users will need to manually install it. This
377 feature makes multi-threaded shells so much more usable that it's
386 feature makes multi-threaded shells so much more usable that it's
378 a minor price to pay (ctypes is very easy to install, already a
387 a minor price to pay (ctypes is very easy to install, already a
379 requirement for win32 and available in major linux distros).
388 requirement for win32 and available in major linux distros).
380
389
381 2007-04-04 Ville Vainio <vivainio@gmail.com>
390 2007-04-04 Ville Vainio <vivainio@gmail.com>
382
391
383 * Extensions/ipy_completers.py, ipy_stock_completers.py:
392 * Extensions/ipy_completers.py, ipy_stock_completers.py:
384 Moved implementations of 'bundled' completers to ipy_completers.py,
393 Moved implementations of 'bundled' completers to ipy_completers.py,
385 they are only enabled in ipy_stock_completers.py.
394 they are only enabled in ipy_stock_completers.py.
386
395
387 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
396 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
388
397
389 * IPython/PyColorize.py (Parser.format2): Fix identation of
398 * IPython/PyColorize.py (Parser.format2): Fix identation of
390 colorzied output and return early if color scheme is NoColor, to
399 colorzied output and return early if color scheme is NoColor, to
391 avoid unnecessary and expensive tokenization. Closes #131.
400 avoid unnecessary and expensive tokenization. Closes #131.
392
401
393 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
402 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
394
403
395 * IPython/Debugger.py: disable the use of pydb version 1.17. It
404 * IPython/Debugger.py: disable the use of pydb version 1.17. It
396 has a critical bug (a missing import that makes post-mortem not
405 has a critical bug (a missing import that makes post-mortem not
397 work at all). Unfortunately as of this time, this is the version
406 work at all). Unfortunately as of this time, this is the version
398 shipped with Ubuntu Edgy, so quite a few people have this one. I
407 shipped with Ubuntu Edgy, so quite a few people have this one. I
399 hope Edgy will update to a more recent package.
408 hope Edgy will update to a more recent package.
400
409
401 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
410 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
402
411
403 * IPython/iplib.py (_prefilter): close #52, second part of a patch
412 * IPython/iplib.py (_prefilter): close #52, second part of a patch
404 set by Stefan (only the first part had been applied before).
413 set by Stefan (only the first part had been applied before).
405
414
406 * IPython/Extensions/ipy_stock_completers.py (module_completer):
415 * IPython/Extensions/ipy_stock_completers.py (module_completer):
407 remove usage of the dangerous pkgutil.walk_packages(). See
416 remove usage of the dangerous pkgutil.walk_packages(). See
408 details in comments left in the code.
417 details in comments left in the code.
409
418
410 * IPython/Magic.py (magic_whos): add support for numpy arrays
419 * IPython/Magic.py (magic_whos): add support for numpy arrays
411 similar to what we had for Numeric.
420 similar to what we had for Numeric.
412
421
413 * IPython/completer.py (IPCompleter.complete): extend the
422 * IPython/completer.py (IPCompleter.complete): extend the
414 complete() call API to support completions by other mechanisms
423 complete() call API to support completions by other mechanisms
415 than readline. Closes #109.
424 than readline. Closes #109.
416
425
417 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
426 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
418 protect against a bug in Python's execfile(). Closes #123.
427 protect against a bug in Python's execfile(). Closes #123.
419
428
420 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
429 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
421
430
422 * IPython/iplib.py (split_user_input): ensure that when splitting
431 * IPython/iplib.py (split_user_input): ensure that when splitting
423 user input, the part that can be treated as a python name is pure
432 user input, the part that can be treated as a python name is pure
424 ascii (Python identifiers MUST be pure ascii). Part of the
433 ascii (Python identifiers MUST be pure ascii). Part of the
425 ongoing Unicode support work.
434 ongoing Unicode support work.
426
435
427 * IPython/Prompts.py (prompt_specials_color): Add \N for the
436 * IPython/Prompts.py (prompt_specials_color): Add \N for the
428 actual prompt number, without any coloring. This allows users to
437 actual prompt number, without any coloring. This allows users to
429 produce numbered prompts with their own colors. Added after a
438 produce numbered prompts with their own colors. Added after a
430 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
439 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
431
440
432 2007-03-31 Walter Doerwald <walter@livinglogic.de>
441 2007-03-31 Walter Doerwald <walter@livinglogic.de>
433
442
434 * IPython/Extensions/igrid.py: Map the return key
443 * IPython/Extensions/igrid.py: Map the return key
435 to enter() and shift-return to enterattr().
444 to enter() and shift-return to enterattr().
436
445
437 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
446 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
438
447
439 * IPython/Magic.py (magic_psearch): add unicode support by
448 * IPython/Magic.py (magic_psearch): add unicode support by
440 encoding to ascii the input, since this routine also only deals
449 encoding to ascii the input, since this routine also only deals
441 with valid Python names. Fixes a bug reported by Stefan.
450 with valid Python names. Fixes a bug reported by Stefan.
442
451
443 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
452 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
444
453
445 * IPython/Magic.py (_inspect): convert unicode input into ascii
454 * IPython/Magic.py (_inspect): convert unicode input into ascii
446 before trying to evaluate it as a Python identifier. This fixes a
455 before trying to evaluate it as a Python identifier. This fixes a
447 problem that the new unicode support had introduced when analyzing
456 problem that the new unicode support had introduced when analyzing
448 long definition lines for functions.
457 long definition lines for functions.
449
458
450 2007-03-24 Walter Doerwald <walter@livinglogic.de>
459 2007-03-24 Walter Doerwald <walter@livinglogic.de>
451
460
452 * IPython/Extensions/igrid.py: Fix picking. Using
461 * IPython/Extensions/igrid.py: Fix picking. Using
453 igrid with wxPython 2.6 and -wthread should work now.
462 igrid with wxPython 2.6 and -wthread should work now.
454 igrid.display() simply tries to create a frame without
463 igrid.display() simply tries to create a frame without
455 an application. Only if this fails an application is created.
464 an application. Only if this fails an application is created.
456
465
457 2007-03-23 Walter Doerwald <walter@livinglogic.de>
466 2007-03-23 Walter Doerwald <walter@livinglogic.de>
458
467
459 * IPython/Extensions/path.py: Updated to version 2.2.
468 * IPython/Extensions/path.py: Updated to version 2.2.
460
469
461 2007-03-23 Ville Vainio <vivainio@gmail.com>
470 2007-03-23 Ville Vainio <vivainio@gmail.com>
462
471
463 * iplib.py: recursive alias expansion now works better, so that
472 * iplib.py: recursive alias expansion now works better, so that
464 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
473 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
465 doesn't trip up the process, if 'd' has been aliased to 'ls'.
474 doesn't trip up the process, if 'd' has been aliased to 'ls'.
466
475
467 * Extensions/ipy_gnuglobal.py added, provides %global magic
476 * Extensions/ipy_gnuglobal.py added, provides %global magic
468 for users of http://www.gnu.org/software/global
477 for users of http://www.gnu.org/software/global
469
478
470 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
479 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
471 Closes #52. Patch by Stefan van der Walt.
480 Closes #52. Patch by Stefan van der Walt.
472
481
473 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
482 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
474
483
475 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
484 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
476 respect the __file__ attribute when using %run. Thanks to a bug
485 respect the __file__ attribute when using %run. Thanks to a bug
477 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
486 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
478
487
479 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
488 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
480
489
481 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
490 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
482 input. Patch sent by Stefan.
491 input. Patch sent by Stefan.
483
492
484 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
493 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
485 * IPython/Extensions/ipy_stock_completer.py
494 * IPython/Extensions/ipy_stock_completer.py
486 shlex_split, fix bug in shlex_split. len function
495 shlex_split, fix bug in shlex_split. len function
487 call was missing an if statement. Caused shlex_split to
496 call was missing an if statement. Caused shlex_split to
488 sometimes return "" as last element.
497 sometimes return "" as last element.
489
498
490 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
499 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
491
500
492 * IPython/completer.py
501 * IPython/completer.py
493 (IPCompleter.file_matches.single_dir_expand): fix a problem
502 (IPCompleter.file_matches.single_dir_expand): fix a problem
494 reported by Stefan, where directories containign a single subdir
503 reported by Stefan, where directories containign a single subdir
495 would be completed too early.
504 would be completed too early.
496
505
497 * IPython/Shell.py (_load_pylab): Make the execution of 'from
506 * IPython/Shell.py (_load_pylab): Make the execution of 'from
498 pylab import *' when -pylab is given be optional. A new flag,
507 pylab import *' when -pylab is given be optional. A new flag,
499 pylab_import_all controls this behavior, the default is True for
508 pylab_import_all controls this behavior, the default is True for
500 backwards compatibility.
509 backwards compatibility.
501
510
502 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
511 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
503 modified) R. Bernstein's patch for fully syntax highlighted
512 modified) R. Bernstein's patch for fully syntax highlighted
504 tracebacks. The functionality is also available under ultraTB for
513 tracebacks. The functionality is also available under ultraTB for
505 non-ipython users (someone using ultraTB but outside an ipython
514 non-ipython users (someone using ultraTB but outside an ipython
506 session). They can select the color scheme by setting the
515 session). They can select the color scheme by setting the
507 module-level global DEFAULT_SCHEME. The highlight functionality
516 module-level global DEFAULT_SCHEME. The highlight functionality
508 also works when debugging.
517 also works when debugging.
509
518
510 * IPython/genutils.py (IOStream.close): small patch by
519 * IPython/genutils.py (IOStream.close): small patch by
511 R. Bernstein for improved pydb support.
520 R. Bernstein for improved pydb support.
512
521
513 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
522 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
514 DaveS <davls@telus.net> to improve support of debugging under
523 DaveS <davls@telus.net> to improve support of debugging under
515 NTEmacs, including improved pydb behavior.
524 NTEmacs, including improved pydb behavior.
516
525
517 * IPython/Magic.py (magic_prun): Fix saving of profile info for
526 * IPython/Magic.py (magic_prun): Fix saving of profile info for
518 Python 2.5, where the stats object API changed a little. Thanks
527 Python 2.5, where the stats object API changed a little. Thanks
519 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
528 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
520
529
521 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
530 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
522 Pernetty's patch to improve support for (X)Emacs under Win32.
531 Pernetty's patch to improve support for (X)Emacs under Win32.
523
532
524 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
533 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
525
534
526 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
535 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
527 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
536 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
528 a report by Nik Tautenhahn.
537 a report by Nik Tautenhahn.
529
538
530 2007-03-16 Walter Doerwald <walter@livinglogic.de>
539 2007-03-16 Walter Doerwald <walter@livinglogic.de>
531
540
532 * setup.py: Add the igrid help files to the list of data files
541 * setup.py: Add the igrid help files to the list of data files
533 to be installed alongside igrid.
542 to be installed alongside igrid.
534 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
543 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
535 Show the input object of the igrid browser as the window tile.
544 Show the input object of the igrid browser as the window tile.
536 Show the object the cursor is on in the statusbar.
545 Show the object the cursor is on in the statusbar.
537
546
538 2007-03-15 Ville Vainio <vivainio@gmail.com>
547 2007-03-15 Ville Vainio <vivainio@gmail.com>
539
548
540 * Extensions/ipy_stock_completers.py: Fixed exception
549 * Extensions/ipy_stock_completers.py: Fixed exception
541 on mismatching quotes in %run completer. Patch by
550 on mismatching quotes in %run completer. Patch by
542 JοΏ½rgen Stenarson. Closes #127.
551 JοΏ½rgen Stenarson. Closes #127.
543
552
544 2007-03-14 Ville Vainio <vivainio@gmail.com>
553 2007-03-14 Ville Vainio <vivainio@gmail.com>
545
554
546 * Extensions/ext_rehashdir.py: Do not do auto_alias
555 * Extensions/ext_rehashdir.py: Do not do auto_alias
547 in %rehashdir, it clobbers %store'd aliases.
556 in %rehashdir, it clobbers %store'd aliases.
548
557
549 * UserConfig/ipy_profile_sh.py: envpersist.py extension
558 * UserConfig/ipy_profile_sh.py: envpersist.py extension
550 (beefed up %env) imported for sh profile.
559 (beefed up %env) imported for sh profile.
551
560
552 2007-03-10 Walter Doerwald <walter@livinglogic.de>
561 2007-03-10 Walter Doerwald <walter@livinglogic.de>
553
562
554 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
563 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
555 as the default browser.
564 as the default browser.
556 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
565 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
557 As igrid displays all attributes it ever encounters, fetch() (which has
566 As igrid displays all attributes it ever encounters, fetch() (which has
558 been renamed to _fetch()) doesn't have to recalculate the display attributes
567 been renamed to _fetch()) doesn't have to recalculate the display attributes
559 every time a new item is fetched. This should speed up scrolling.
568 every time a new item is fetched. This should speed up scrolling.
560
569
561 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
570 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
562
571
563 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
572 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
564 Schmolck's recently reported tab-completion bug (my previous one
573 Schmolck's recently reported tab-completion bug (my previous one
565 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
574 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
566
575
567 2007-03-09 Walter Doerwald <walter@livinglogic.de>
576 2007-03-09 Walter Doerwald <walter@livinglogic.de>
568
577
569 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
578 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
570 Close help window if exiting igrid.
579 Close help window if exiting igrid.
571
580
572 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
581 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
573
582
574 * IPython/Extensions/ipy_defaults.py: Check if readline is available
583 * IPython/Extensions/ipy_defaults.py: Check if readline is available
575 before calling functions from readline.
584 before calling functions from readline.
576
585
577 2007-03-02 Walter Doerwald <walter@livinglogic.de>
586 2007-03-02 Walter Doerwald <walter@livinglogic.de>
578
587
579 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
588 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
580 igrid is a wxPython-based display object for ipipe. If your system has
589 igrid is a wxPython-based display object for ipipe. If your system has
581 wx installed igrid will be the default display. Without wx ipipe falls
590 wx installed igrid will be the default display. Without wx ipipe falls
582 back to ibrowse (which needs curses). If no curses is installed ipipe
591 back to ibrowse (which needs curses). If no curses is installed ipipe
583 falls back to idump.
592 falls back to idump.
584
593
585 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
594 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
586
595
587 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
596 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
588 my changes from yesterday, they introduced bugs. Will reactivate
597 my changes from yesterday, they introduced bugs. Will reactivate
589 once I get a correct solution, which will be much easier thanks to
598 once I get a correct solution, which will be much easier thanks to
590 Dan Milstein's new prefilter test suite.
599 Dan Milstein's new prefilter test suite.
591
600
592 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
601 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
593
602
594 * IPython/iplib.py (split_user_input): fix input splitting so we
603 * IPython/iplib.py (split_user_input): fix input splitting so we
595 don't attempt attribute accesses on things that can't possibly be
604 don't attempt attribute accesses on things that can't possibly be
596 valid Python attributes. After a bug report by Alex Schmolck.
605 valid Python attributes. After a bug report by Alex Schmolck.
597 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
606 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
598 %magic with explicit % prefix.
607 %magic with explicit % prefix.
599
608
600 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
609 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
601
610
602 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
611 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
603 avoid a DeprecationWarning from GTK.
612 avoid a DeprecationWarning from GTK.
604
613
605 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
614 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
606
615
607 * IPython/genutils.py (clock): I modified clock() to return total
616 * IPython/genutils.py (clock): I modified clock() to return total
608 time, user+system. This is a more commonly needed metric. I also
617 time, user+system. This is a more commonly needed metric. I also
609 introduced the new clocku/clocks to get only user/system time if
618 introduced the new clocku/clocks to get only user/system time if
610 one wants those instead.
619 one wants those instead.
611
620
612 ***WARNING: API CHANGE*** clock() used to return only user time,
621 ***WARNING: API CHANGE*** clock() used to return only user time,
613 so if you want exactly the same results as before, use clocku
622 so if you want exactly the same results as before, use clocku
614 instead.
623 instead.
615
624
616 2007-02-22 Ville Vainio <vivainio@gmail.com>
625 2007-02-22 Ville Vainio <vivainio@gmail.com>
617
626
618 * IPython/Extensions/ipy_p4.py: Extension for improved
627 * IPython/Extensions/ipy_p4.py: Extension for improved
619 p4 (perforce version control system) experience.
628 p4 (perforce version control system) experience.
620 Adds %p4 magic with p4 command completion and
629 Adds %p4 magic with p4 command completion and
621 automatic -G argument (marshall output as python dict)
630 automatic -G argument (marshall output as python dict)
622
631
623 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
632 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
624
633
625 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
634 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
626 stop marks.
635 stop marks.
627 (ClearingMixin): a simple mixin to easily make a Demo class clear
636 (ClearingMixin): a simple mixin to easily make a Demo class clear
628 the screen in between blocks and have empty marquees. The
637 the screen in between blocks and have empty marquees. The
629 ClearDemo and ClearIPDemo classes that use it are included.
638 ClearDemo and ClearIPDemo classes that use it are included.
630
639
631 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
640 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
632
641
633 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
642 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
634 protect against exceptions at Python shutdown time. Patch
643 protect against exceptions at Python shutdown time. Patch
635 sumbmitted to upstream.
644 sumbmitted to upstream.
636
645
637 2007-02-14 Walter Doerwald <walter@livinglogic.de>
646 2007-02-14 Walter Doerwald <walter@livinglogic.de>
638
647
639 * IPython/Extensions/ibrowse.py: If entering the first object level
648 * IPython/Extensions/ibrowse.py: If entering the first object level
640 (i.e. the object for which the browser has been started) fails,
649 (i.e. the object for which the browser has been started) fails,
641 now the error is raised directly (aborting the browser) instead of
650 now the error is raised directly (aborting the browser) instead of
642 running into an empty levels list later.
651 running into an empty levels list later.
643
652
644 2007-02-03 Walter Doerwald <walter@livinglogic.de>
653 2007-02-03 Walter Doerwald <walter@livinglogic.de>
645
654
646 * IPython/Extensions/ipipe.py: Add an xrepr implementation
655 * IPython/Extensions/ipipe.py: Add an xrepr implementation
647 for the noitem object.
656 for the noitem object.
648
657
649 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
658 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
650
659
651 * IPython/completer.py (Completer.attr_matches): Fix small
660 * IPython/completer.py (Completer.attr_matches): Fix small
652 tab-completion bug with Enthought Traits objects with units.
661 tab-completion bug with Enthought Traits objects with units.
653 Thanks to a bug report by Tom Denniston
662 Thanks to a bug report by Tom Denniston
654 <tom.denniston-AT-alum.dartmouth.org>.
663 <tom.denniston-AT-alum.dartmouth.org>.
655
664
656 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
665 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
657
666
658 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
667 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
659 bug where only .ipy or .py would be completed. Once the first
668 bug where only .ipy or .py would be completed. Once the first
660 argument to %run has been given, all completions are valid because
669 argument to %run has been given, all completions are valid because
661 they are the arguments to the script, which may well be non-python
670 they are the arguments to the script, which may well be non-python
662 filenames.
671 filenames.
663
672
664 * IPython/irunner.py (InteractiveRunner.run_source): major updates
673 * IPython/irunner.py (InteractiveRunner.run_source): major updates
665 to irunner to allow it to correctly support real doctesting of
674 to irunner to allow it to correctly support real doctesting of
666 out-of-process ipython code.
675 out-of-process ipython code.
667
676
668 * IPython/Magic.py (magic_cd): Make the setting of the terminal
677 * IPython/Magic.py (magic_cd): Make the setting of the terminal
669 title an option (-noterm_title) because it completely breaks
678 title an option (-noterm_title) because it completely breaks
670 doctesting.
679 doctesting.
671
680
672 * IPython/demo.py: fix IPythonDemo class that was not actually working.
681 * IPython/demo.py: fix IPythonDemo class that was not actually working.
673
682
674 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
683 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
675
684
676 * IPython/irunner.py (main): fix small bug where extensions were
685 * IPython/irunner.py (main): fix small bug where extensions were
677 not being correctly recognized.
686 not being correctly recognized.
678
687
679 2007-01-23 Walter Doerwald <walter@livinglogic.de>
688 2007-01-23 Walter Doerwald <walter@livinglogic.de>
680
689
681 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
690 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
682 a string containing a single line yields the string itself as the
691 a string containing a single line yields the string itself as the
683 only item.
692 only item.
684
693
685 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
694 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
686 object if it's the same as the one on the last level (This avoids
695 object if it's the same as the one on the last level (This avoids
687 infinite recursion for one line strings).
696 infinite recursion for one line strings).
688
697
689 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
698 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
690
699
691 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
700 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
692 all output streams before printing tracebacks. This ensures that
701 all output streams before printing tracebacks. This ensures that
693 user output doesn't end up interleaved with traceback output.
702 user output doesn't end up interleaved with traceback output.
694
703
695 2007-01-10 Ville Vainio <vivainio@gmail.com>
704 2007-01-10 Ville Vainio <vivainio@gmail.com>
696
705
697 * Extensions/envpersist.py: Turbocharged %env that remembers
706 * Extensions/envpersist.py: Turbocharged %env that remembers
698 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
707 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
699 "%env VISUAL=jed".
708 "%env VISUAL=jed".
700
709
701 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
710 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
702
711
703 * IPython/iplib.py (showtraceback): ensure that we correctly call
712 * IPython/iplib.py (showtraceback): ensure that we correctly call
704 custom handlers in all cases (some with pdb were slipping through,
713 custom handlers in all cases (some with pdb were slipping through,
705 but I'm not exactly sure why).
714 but I'm not exactly sure why).
706
715
707 * IPython/Debugger.py (Tracer.__init__): added new class to
716 * IPython/Debugger.py (Tracer.__init__): added new class to
708 support set_trace-like usage of IPython's enhanced debugger.
717 support set_trace-like usage of IPython's enhanced debugger.
709
718
710 2006-12-24 Ville Vainio <vivainio@gmail.com>
719 2006-12-24 Ville Vainio <vivainio@gmail.com>
711
720
712 * ipmaker.py: more informative message when ipy_user_conf
721 * ipmaker.py: more informative message when ipy_user_conf
713 import fails (suggest running %upgrade).
722 import fails (suggest running %upgrade).
714
723
715 * tools/run_ipy_in_profiler.py: Utility to see where
724 * tools/run_ipy_in_profiler.py: Utility to see where
716 the time during IPython startup is spent.
725 the time during IPython startup is spent.
717
726
718 2006-12-20 Ville Vainio <vivainio@gmail.com>
727 2006-12-20 Ville Vainio <vivainio@gmail.com>
719
728
720 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
729 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
721
730
722 * ipapi.py: Add new ipapi method, expand_alias.
731 * ipapi.py: Add new ipapi method, expand_alias.
723
732
724 * Release.py: Bump up version to 0.7.4.svn
733 * Release.py: Bump up version to 0.7.4.svn
725
734
726 2006-12-17 Ville Vainio <vivainio@gmail.com>
735 2006-12-17 Ville Vainio <vivainio@gmail.com>
727
736
728 * Extensions/jobctrl.py: Fixed &cmd arg arg...
737 * Extensions/jobctrl.py: Fixed &cmd arg arg...
729 to work properly on posix too
738 to work properly on posix too
730
739
731 * Release.py: Update revnum (version is still just 0.7.3).
740 * Release.py: Update revnum (version is still just 0.7.3).
732
741
733 2006-12-15 Ville Vainio <vivainio@gmail.com>
742 2006-12-15 Ville Vainio <vivainio@gmail.com>
734
743
735 * scripts/ipython_win_post_install: create ipython.py in
744 * scripts/ipython_win_post_install: create ipython.py in
736 prefix + "/scripts".
745 prefix + "/scripts".
737
746
738 * Release.py: Update version to 0.7.3.
747 * Release.py: Update version to 0.7.3.
739
748
740 2006-12-14 Ville Vainio <vivainio@gmail.com>
749 2006-12-14 Ville Vainio <vivainio@gmail.com>
741
750
742 * scripts/ipython_win_post_install: Overwrite old shortcuts
751 * scripts/ipython_win_post_install: Overwrite old shortcuts
743 if they already exist
752 if they already exist
744
753
745 * Release.py: release 0.7.3rc2
754 * Release.py: release 0.7.3rc2
746
755
747 2006-12-13 Ville Vainio <vivainio@gmail.com>
756 2006-12-13 Ville Vainio <vivainio@gmail.com>
748
757
749 * Branch and update Release.py for 0.7.3rc1
758 * Branch and update Release.py for 0.7.3rc1
750
759
751 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
760 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
752
761
753 * IPython/Shell.py (IPShellWX): update for current WX naming
762 * IPython/Shell.py (IPShellWX): update for current WX naming
754 conventions, to avoid a deprecation warning with current WX
763 conventions, to avoid a deprecation warning with current WX
755 versions. Thanks to a report by Danny Shevitz.
764 versions. Thanks to a report by Danny Shevitz.
756
765
757 2006-12-12 Ville Vainio <vivainio@gmail.com>
766 2006-12-12 Ville Vainio <vivainio@gmail.com>
758
767
759 * ipmaker.py: apply david cournapeau's patch to make
768 * ipmaker.py: apply david cournapeau's patch to make
760 import_some work properly even when ipythonrc does
769 import_some work properly even when ipythonrc does
761 import_some on empty list (it was an old bug!).
770 import_some on empty list (it was an old bug!).
762
771
763 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
772 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
764 Add deprecation note to ipythonrc and a url to wiki
773 Add deprecation note to ipythonrc and a url to wiki
765 in ipy_user_conf.py
774 in ipy_user_conf.py
766
775
767
776
768 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
777 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
769 as if it was typed on IPython command prompt, i.e.
778 as if it was typed on IPython command prompt, i.e.
770 as IPython script.
779 as IPython script.
771
780
772 * example-magic.py, magic_grepl.py: remove outdated examples
781 * example-magic.py, magic_grepl.py: remove outdated examples
773
782
774 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
783 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
775
784
776 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
785 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
777 is called before any exception has occurred.
786 is called before any exception has occurred.
778
787
779 2006-12-08 Ville Vainio <vivainio@gmail.com>
788 2006-12-08 Ville Vainio <vivainio@gmail.com>
780
789
781 * Extensions/ipy_stock_completers.py: fix cd completer
790 * Extensions/ipy_stock_completers.py: fix cd completer
782 to translate /'s to \'s again.
791 to translate /'s to \'s again.
783
792
784 * completer.py: prevent traceback on file completions w/
793 * completer.py: prevent traceback on file completions w/
785 backslash.
794 backslash.
786
795
787 * Release.py: Update release number to 0.7.3b3 for release
796 * Release.py: Update release number to 0.7.3b3 for release
788
797
789 2006-12-07 Ville Vainio <vivainio@gmail.com>
798 2006-12-07 Ville Vainio <vivainio@gmail.com>
790
799
791 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
800 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
792 while executing external code. Provides more shell-like behaviour
801 while executing external code. Provides more shell-like behaviour
793 and overall better response to ctrl + C / ctrl + break.
802 and overall better response to ctrl + C / ctrl + break.
794
803
795 * tools/make_tarball.py: new script to create tarball straight from svn
804 * tools/make_tarball.py: new script to create tarball straight from svn
796 (setup.py sdist doesn't work on win32).
805 (setup.py sdist doesn't work on win32).
797
806
798 * Extensions/ipy_stock_completers.py: fix cd completer to give up
807 * Extensions/ipy_stock_completers.py: fix cd completer to give up
799 on dirnames with spaces and use the default completer instead.
808 on dirnames with spaces and use the default completer instead.
800
809
801 * Revision.py: Change version to 0.7.3b2 for release.
810 * Revision.py: Change version to 0.7.3b2 for release.
802
811
803 2006-12-05 Ville Vainio <vivainio@gmail.com>
812 2006-12-05 Ville Vainio <vivainio@gmail.com>
804
813
805 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
814 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
806 pydb patch 4 (rm debug printing, py 2.5 checking)
815 pydb patch 4 (rm debug printing, py 2.5 checking)
807
816
808 2006-11-30 Walter Doerwald <walter@livinglogic.de>
817 2006-11-30 Walter Doerwald <walter@livinglogic.de>
809 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
818 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
810 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
819 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
811 "refreshfind" (mapped to "R") does the same but tries to go back to the same
820 "refreshfind" (mapped to "R") does the same but tries to go back to the same
812 object the cursor was on before the refresh. The command "markrange" is
821 object the cursor was on before the refresh. The command "markrange" is
813 mapped to "%" now.
822 mapped to "%" now.
814 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
823 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
815
824
816 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
825 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
817
826
818 * IPython/Magic.py (magic_debug): new %debug magic to activate the
827 * IPython/Magic.py (magic_debug): new %debug magic to activate the
819 interactive debugger on the last traceback, without having to call
828 interactive debugger on the last traceback, without having to call
820 %pdb and rerun your code. Made minor changes in various modules,
829 %pdb and rerun your code. Made minor changes in various modules,
821 should automatically recognize pydb if available.
830 should automatically recognize pydb if available.
822
831
823 2006-11-28 Ville Vainio <vivainio@gmail.com>
832 2006-11-28 Ville Vainio <vivainio@gmail.com>
824
833
825 * completer.py: If the text start with !, show file completions
834 * completer.py: If the text start with !, show file completions
826 properly. This helps when trying to complete command name
835 properly. This helps when trying to complete command name
827 for shell escapes.
836 for shell escapes.
828
837
829 2006-11-27 Ville Vainio <vivainio@gmail.com>
838 2006-11-27 Ville Vainio <vivainio@gmail.com>
830
839
831 * ipy_stock_completers.py: bzr completer submitted by Stefan van
840 * ipy_stock_completers.py: bzr completer submitted by Stefan van
832 der Walt. Clean up svn and hg completers by using a common
841 der Walt. Clean up svn and hg completers by using a common
833 vcs_completer.
842 vcs_completer.
834
843
835 2006-11-26 Ville Vainio <vivainio@gmail.com>
844 2006-11-26 Ville Vainio <vivainio@gmail.com>
836
845
837 * Remove ipconfig and %config; you should use _ip.options structure
846 * Remove ipconfig and %config; you should use _ip.options structure
838 directly instead!
847 directly instead!
839
848
840 * genutils.py: add wrap_deprecated function for deprecating callables
849 * genutils.py: add wrap_deprecated function for deprecating callables
841
850
842 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
851 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
843 _ip.system instead. ipalias is redundant.
852 _ip.system instead. ipalias is redundant.
844
853
845 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
854 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
846 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
855 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
847 explicit.
856 explicit.
848
857
849 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
858 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
850 completer. Try it by entering 'hg ' and pressing tab.
859 completer. Try it by entering 'hg ' and pressing tab.
851
860
852 * macro.py: Give Macro a useful __repr__ method
861 * macro.py: Give Macro a useful __repr__ method
853
862
854 * Magic.py: %whos abbreviates the typename of Macro for brevity.
863 * Magic.py: %whos abbreviates the typename of Macro for brevity.
855
864
856 2006-11-24 Walter Doerwald <walter@livinglogic.de>
865 2006-11-24 Walter Doerwald <walter@livinglogic.de>
857 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
866 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
858 we don't get a duplicate ipipe module, where registration of the xrepr
867 we don't get a duplicate ipipe module, where registration of the xrepr
859 implementation for Text is useless.
868 implementation for Text is useless.
860
869
861 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
870 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
862
871
863 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
872 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
864
873
865 2006-11-24 Ville Vainio <vivainio@gmail.com>
874 2006-11-24 Ville Vainio <vivainio@gmail.com>
866
875
867 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
876 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
868 try to use "cProfile" instead of the slower pure python
877 try to use "cProfile" instead of the slower pure python
869 "profile"
878 "profile"
870
879
871 2006-11-23 Ville Vainio <vivainio@gmail.com>
880 2006-11-23 Ville Vainio <vivainio@gmail.com>
872
881
873 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
882 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
874 Qt+IPython+Designer link in documentation.
883 Qt+IPython+Designer link in documentation.
875
884
876 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
885 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
877 correct Pdb object to %pydb.
886 correct Pdb object to %pydb.
878
887
879
888
880 2006-11-22 Walter Doerwald <walter@livinglogic.de>
889 2006-11-22 Walter Doerwald <walter@livinglogic.de>
881 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
890 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
882 generic xrepr(), otherwise the list implementation would kick in.
891 generic xrepr(), otherwise the list implementation would kick in.
883
892
884 2006-11-21 Ville Vainio <vivainio@gmail.com>
893 2006-11-21 Ville Vainio <vivainio@gmail.com>
885
894
886 * upgrade_dir.py: Now actually overwrites a nonmodified user file
895 * upgrade_dir.py: Now actually overwrites a nonmodified user file
887 with one from UserConfig.
896 with one from UserConfig.
888
897
889 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
898 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
890 it was missing which broke the sh profile.
899 it was missing which broke the sh profile.
891
900
892 * completer.py: file completer now uses explicit '/' instead
901 * completer.py: file completer now uses explicit '/' instead
893 of os.path.join, expansion of 'foo' was broken on win32
902 of os.path.join, expansion of 'foo' was broken on win32
894 if there was one directory with name 'foobar'.
903 if there was one directory with name 'foobar'.
895
904
896 * A bunch of patches from Kirill Smelkov:
905 * A bunch of patches from Kirill Smelkov:
897
906
898 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
907 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
899
908
900 * [patch 7/9] Implement %page -r (page in raw mode) -
909 * [patch 7/9] Implement %page -r (page in raw mode) -
901
910
902 * [patch 5/9] ScientificPython webpage has moved
911 * [patch 5/9] ScientificPython webpage has moved
903
912
904 * [patch 4/9] The manual mentions %ds, should be %dhist
913 * [patch 4/9] The manual mentions %ds, should be %dhist
905
914
906 * [patch 3/9] Kill old bits from %prun doc.
915 * [patch 3/9] Kill old bits from %prun doc.
907
916
908 * [patch 1/9] Fix typos here and there.
917 * [patch 1/9] Fix typos here and there.
909
918
910 2006-11-08 Ville Vainio <vivainio@gmail.com>
919 2006-11-08 Ville Vainio <vivainio@gmail.com>
911
920
912 * completer.py (attr_matches): catch all exceptions raised
921 * completer.py (attr_matches): catch all exceptions raised
913 by eval of expr with dots.
922 by eval of expr with dots.
914
923
915 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
924 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
916
925
917 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
926 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
918 input if it starts with whitespace. This allows you to paste
927 input if it starts with whitespace. This allows you to paste
919 indented input from any editor without manually having to type in
928 indented input from any editor without manually having to type in
920 the 'if 1:', which is convenient when working interactively.
929 the 'if 1:', which is convenient when working interactively.
921 Slightly modifed version of a patch by Bo Peng
930 Slightly modifed version of a patch by Bo Peng
922 <bpeng-AT-rice.edu>.
931 <bpeng-AT-rice.edu>.
923
932
924 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
933 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
925
934
926 * IPython/irunner.py (main): modified irunner so it automatically
935 * IPython/irunner.py (main): modified irunner so it automatically
927 recognizes the right runner to use based on the extension (.py for
936 recognizes the right runner to use based on the extension (.py for
928 python, .ipy for ipython and .sage for sage).
937 python, .ipy for ipython and .sage for sage).
929
938
930 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
939 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
931 visible in ipapi as ip.config(), to programatically control the
940 visible in ipapi as ip.config(), to programatically control the
932 internal rc object. There's an accompanying %config magic for
941 internal rc object. There's an accompanying %config magic for
933 interactive use, which has been enhanced to match the
942 interactive use, which has been enhanced to match the
934 funtionality in ipconfig.
943 funtionality in ipconfig.
935
944
936 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
945 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
937 so it's not just a toggle, it now takes an argument. Add support
946 so it's not just a toggle, it now takes an argument. Add support
938 for a customizable header when making system calls, as the new
947 for a customizable header when making system calls, as the new
939 system_header variable in the ipythonrc file.
948 system_header variable in the ipythonrc file.
940
949
941 2006-11-03 Walter Doerwald <walter@livinglogic.de>
950 2006-11-03 Walter Doerwald <walter@livinglogic.de>
942
951
943 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
952 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
944 generic functions (using Philip J. Eby's simplegeneric package).
953 generic functions (using Philip J. Eby's simplegeneric package).
945 This makes it possible to customize the display of third-party classes
954 This makes it possible to customize the display of third-party classes
946 without having to monkeypatch them. xiter() no longer supports a mode
955 without having to monkeypatch them. xiter() no longer supports a mode
947 argument and the XMode class has been removed. The same functionality can
956 argument and the XMode class has been removed. The same functionality can
948 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
957 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
949 One consequence of the switch to generic functions is that xrepr() and
958 One consequence of the switch to generic functions is that xrepr() and
950 xattrs() implementation must define the default value for the mode
959 xattrs() implementation must define the default value for the mode
951 argument themselves and xattrs() implementations must return real
960 argument themselves and xattrs() implementations must return real
952 descriptors.
961 descriptors.
953
962
954 * IPython/external: This new subpackage will contain all third-party
963 * IPython/external: This new subpackage will contain all third-party
955 packages that are bundled with IPython. (The first one is simplegeneric).
964 packages that are bundled with IPython. (The first one is simplegeneric).
956
965
957 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
966 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
958 directory which as been dropped in r1703.
967 directory which as been dropped in r1703.
959
968
960 * IPython/Extensions/ipipe.py (iless): Fixed.
969 * IPython/Extensions/ipipe.py (iless): Fixed.
961
970
962 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
971 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
963
972
964 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
973 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
965
974
966 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
975 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
967 handling in variable expansion so that shells and magics recognize
976 handling in variable expansion so that shells and magics recognize
968 function local scopes correctly. Bug reported by Brian.
977 function local scopes correctly. Bug reported by Brian.
969
978
970 * scripts/ipython: remove the very first entry in sys.path which
979 * scripts/ipython: remove the very first entry in sys.path which
971 Python auto-inserts for scripts, so that sys.path under IPython is
980 Python auto-inserts for scripts, so that sys.path under IPython is
972 as similar as possible to that under plain Python.
981 as similar as possible to that under plain Python.
973
982
974 * IPython/completer.py (IPCompleter.file_matches): Fix
983 * IPython/completer.py (IPCompleter.file_matches): Fix
975 tab-completion so that quotes are not closed unless the completion
984 tab-completion so that quotes are not closed unless the completion
976 is unambiguous. After a request by Stefan. Minor cleanups in
985 is unambiguous. After a request by Stefan. Minor cleanups in
977 ipy_stock_completers.
986 ipy_stock_completers.
978
987
979 2006-11-02 Ville Vainio <vivainio@gmail.com>
988 2006-11-02 Ville Vainio <vivainio@gmail.com>
980
989
981 * ipy_stock_completers.py: Add %run and %cd completers.
990 * ipy_stock_completers.py: Add %run and %cd completers.
982
991
983 * completer.py: Try running custom completer for both
992 * completer.py: Try running custom completer for both
984 "foo" and "%foo" if the command is just "foo". Ignore case
993 "foo" and "%foo" if the command is just "foo". Ignore case
985 when filtering possible completions.
994 when filtering possible completions.
986
995
987 * UserConfig/ipy_user_conf.py: install stock completers as default
996 * UserConfig/ipy_user_conf.py: install stock completers as default
988
997
989 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
998 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
990 simplified readline history save / restore through a wrapper
999 simplified readline history save / restore through a wrapper
991 function
1000 function
992
1001
993
1002
994 2006-10-31 Ville Vainio <vivainio@gmail.com>
1003 2006-10-31 Ville Vainio <vivainio@gmail.com>
995
1004
996 * strdispatch.py, completer.py, ipy_stock_completers.py:
1005 * strdispatch.py, completer.py, ipy_stock_completers.py:
997 Allow str_key ("command") in completer hooks. Implement
1006 Allow str_key ("command") in completer hooks. Implement
998 trivial completer for 'import' (stdlib modules only). Rename
1007 trivial completer for 'import' (stdlib modules only). Rename
999 ipy_linux_package_managers.py to ipy_stock_completers.py.
1008 ipy_linux_package_managers.py to ipy_stock_completers.py.
1000 SVN completer.
1009 SVN completer.
1001
1010
1002 * Extensions/ledit.py: %magic line editor for easily and
1011 * Extensions/ledit.py: %magic line editor for easily and
1003 incrementally manipulating lists of strings. The magic command
1012 incrementally manipulating lists of strings. The magic command
1004 name is %led.
1013 name is %led.
1005
1014
1006 2006-10-30 Ville Vainio <vivainio@gmail.com>
1015 2006-10-30 Ville Vainio <vivainio@gmail.com>
1007
1016
1008 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1017 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1009 Bernsteins's patches for pydb integration.
1018 Bernsteins's patches for pydb integration.
1010 http://bashdb.sourceforge.net/pydb/
1019 http://bashdb.sourceforge.net/pydb/
1011
1020
1012 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1021 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1013 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1022 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1014 custom completer hook to allow the users to implement their own
1023 custom completer hook to allow the users to implement their own
1015 completers. See ipy_linux_package_managers.py for example. The
1024 completers. See ipy_linux_package_managers.py for example. The
1016 hook name is 'complete_command'.
1025 hook name is 'complete_command'.
1017
1026
1018 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1027 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1019
1028
1020 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1029 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1021 Numeric leftovers.
1030 Numeric leftovers.
1022
1031
1023 * ipython.el (py-execute-region): apply Stefan's patch to fix
1032 * ipython.el (py-execute-region): apply Stefan's patch to fix
1024 garbled results if the python shell hasn't been previously started.
1033 garbled results if the python shell hasn't been previously started.
1025
1034
1026 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1035 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1027 pretty generic function and useful for other things.
1036 pretty generic function and useful for other things.
1028
1037
1029 * IPython/OInspect.py (getsource): Add customizable source
1038 * IPython/OInspect.py (getsource): Add customizable source
1030 extractor. After a request/patch form W. Stein (SAGE).
1039 extractor. After a request/patch form W. Stein (SAGE).
1031
1040
1032 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1041 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1033 window size to a more reasonable value from what pexpect does,
1042 window size to a more reasonable value from what pexpect does,
1034 since their choice causes wrapping bugs with long input lines.
1043 since their choice causes wrapping bugs with long input lines.
1035
1044
1036 2006-10-28 Ville Vainio <vivainio@gmail.com>
1045 2006-10-28 Ville Vainio <vivainio@gmail.com>
1037
1046
1038 * Magic.py (%run): Save and restore the readline history from
1047 * Magic.py (%run): Save and restore the readline history from
1039 file around %run commands to prevent side effects from
1048 file around %run commands to prevent side effects from
1040 %runned programs that might use readline (e.g. pydb).
1049 %runned programs that might use readline (e.g. pydb).
1041
1050
1042 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1051 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1043 invoking the pydb enhanced debugger.
1052 invoking the pydb enhanced debugger.
1044
1053
1045 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1054 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1046
1055
1047 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1056 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1048 call the base class method and propagate the return value to
1057 call the base class method and propagate the return value to
1049 ifile. This is now done by path itself.
1058 ifile. This is now done by path itself.
1050
1059
1051 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1060 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1052
1061
1053 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1062 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1054 api: set_crash_handler(), to expose the ability to change the
1063 api: set_crash_handler(), to expose the ability to change the
1055 internal crash handler.
1064 internal crash handler.
1056
1065
1057 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1066 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1058 the various parameters of the crash handler so that apps using
1067 the various parameters of the crash handler so that apps using
1059 IPython as their engine can customize crash handling. Ipmlemented
1068 IPython as their engine can customize crash handling. Ipmlemented
1060 at the request of SAGE.
1069 at the request of SAGE.
1061
1070
1062 2006-10-14 Ville Vainio <vivainio@gmail.com>
1071 2006-10-14 Ville Vainio <vivainio@gmail.com>
1063
1072
1064 * Magic.py, ipython.el: applied first "safe" part of Rocky
1073 * Magic.py, ipython.el: applied first "safe" part of Rocky
1065 Bernstein's patch set for pydb integration.
1074 Bernstein's patch set for pydb integration.
1066
1075
1067 * Magic.py (%unalias, %alias): %store'd aliases can now be
1076 * Magic.py (%unalias, %alias): %store'd aliases can now be
1068 removed with '%unalias'. %alias w/o args now shows most
1077 removed with '%unalias'. %alias w/o args now shows most
1069 interesting (stored / manually defined) aliases last
1078 interesting (stored / manually defined) aliases last
1070 where they catch the eye w/o scrolling.
1079 where they catch the eye w/o scrolling.
1071
1080
1072 * Magic.py (%rehashx), ext_rehashdir.py: files with
1081 * Magic.py (%rehashx), ext_rehashdir.py: files with
1073 'py' extension are always considered executable, even
1082 'py' extension are always considered executable, even
1074 when not in PATHEXT environment variable.
1083 when not in PATHEXT environment variable.
1075
1084
1076 2006-10-12 Ville Vainio <vivainio@gmail.com>
1085 2006-10-12 Ville Vainio <vivainio@gmail.com>
1077
1086
1078 * jobctrl.py: Add new "jobctrl" extension for spawning background
1087 * jobctrl.py: Add new "jobctrl" extension for spawning background
1079 processes with "&find /". 'import jobctrl' to try it out. Requires
1088 processes with "&find /". 'import jobctrl' to try it out. Requires
1080 'subprocess' module, standard in python 2.4+.
1089 'subprocess' module, standard in python 2.4+.
1081
1090
1082 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1091 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1083 so if foo -> bar and bar -> baz, then foo -> baz.
1092 so if foo -> bar and bar -> baz, then foo -> baz.
1084
1093
1085 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1094 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1086
1095
1087 * IPython/Magic.py (Magic.parse_options): add a new posix option
1096 * IPython/Magic.py (Magic.parse_options): add a new posix option
1088 to allow parsing of input args in magics that doesn't strip quotes
1097 to allow parsing of input args in magics that doesn't strip quotes
1089 (if posix=False). This also closes %timeit bug reported by
1098 (if posix=False). This also closes %timeit bug reported by
1090 Stefan.
1099 Stefan.
1091
1100
1092 2006-10-03 Ville Vainio <vivainio@gmail.com>
1101 2006-10-03 Ville Vainio <vivainio@gmail.com>
1093
1102
1094 * iplib.py (raw_input, interact): Return ValueError catching for
1103 * iplib.py (raw_input, interact): Return ValueError catching for
1095 raw_input. Fixes infinite loop for sys.stdin.close() or
1104 raw_input. Fixes infinite loop for sys.stdin.close() or
1096 sys.stdout.close().
1105 sys.stdout.close().
1097
1106
1098 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1107 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1099
1108
1100 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1109 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1101 to help in handling doctests. irunner is now pretty useful for
1110 to help in handling doctests. irunner is now pretty useful for
1102 running standalone scripts and simulate a full interactive session
1111 running standalone scripts and simulate a full interactive session
1103 in a format that can be then pasted as a doctest.
1112 in a format that can be then pasted as a doctest.
1104
1113
1105 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1114 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1106 on top of the default (useless) ones. This also fixes the nasty
1115 on top of the default (useless) ones. This also fixes the nasty
1107 way in which 2.5's Quitter() exits (reverted [1785]).
1116 way in which 2.5's Quitter() exits (reverted [1785]).
1108
1117
1109 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1118 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1110 2.5.
1119 2.5.
1111
1120
1112 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1121 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1113 color scheme is updated as well when color scheme is changed
1122 color scheme is updated as well when color scheme is changed
1114 interactively.
1123 interactively.
1115
1124
1116 2006-09-27 Ville Vainio <vivainio@gmail.com>
1125 2006-09-27 Ville Vainio <vivainio@gmail.com>
1117
1126
1118 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1127 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1119 infinite loop and just exit. It's a hack, but will do for a while.
1128 infinite loop and just exit. It's a hack, but will do for a while.
1120
1129
1121 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1130 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1122
1131
1123 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1132 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1124 the constructor, this makes it possible to get a list of only directories
1133 the constructor, this makes it possible to get a list of only directories
1125 or only files.
1134 or only files.
1126
1135
1127 2006-08-12 Ville Vainio <vivainio@gmail.com>
1136 2006-08-12 Ville Vainio <vivainio@gmail.com>
1128
1137
1129 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1138 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1130 they broke unittest
1139 they broke unittest
1131
1140
1132 2006-08-11 Ville Vainio <vivainio@gmail.com>
1141 2006-08-11 Ville Vainio <vivainio@gmail.com>
1133
1142
1134 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1143 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1135 by resolving issue properly, i.e. by inheriting FakeModule
1144 by resolving issue properly, i.e. by inheriting FakeModule
1136 from types.ModuleType. Pickling ipython interactive data
1145 from types.ModuleType. Pickling ipython interactive data
1137 should still work as usual (testing appreciated).
1146 should still work as usual (testing appreciated).
1138
1147
1139 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1148 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1140
1149
1141 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1150 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1142 running under python 2.3 with code from 2.4 to fix a bug with
1151 running under python 2.3 with code from 2.4 to fix a bug with
1143 help(). Reported by the Debian maintainers, Norbert Tretkowski
1152 help(). Reported by the Debian maintainers, Norbert Tretkowski
1144 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1153 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1145 <afayolle-AT-debian.org>.
1154 <afayolle-AT-debian.org>.
1146
1155
1147 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1156 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1148
1157
1149 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1158 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1150 (which was displaying "quit" twice).
1159 (which was displaying "quit" twice).
1151
1160
1152 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1161 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1153
1162
1154 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1163 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1155 the mode argument).
1164 the mode argument).
1156
1165
1157 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1166 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1158
1167
1159 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1168 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1160 not running under IPython.
1169 not running under IPython.
1161
1170
1162 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1171 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1163 and make it iterable (iterating over the attribute itself). Add two new
1172 and make it iterable (iterating over the attribute itself). Add two new
1164 magic strings for __xattrs__(): If the string starts with "-", the attribute
1173 magic strings for __xattrs__(): If the string starts with "-", the attribute
1165 will not be displayed in ibrowse's detail view (but it can still be
1174 will not be displayed in ibrowse's detail view (but it can still be
1166 iterated over). This makes it possible to add attributes that are large
1175 iterated over). This makes it possible to add attributes that are large
1167 lists or generator methods to the detail view. Replace magic attribute names
1176 lists or generator methods to the detail view. Replace magic attribute names
1168 and _attrname() and _getattr() with "descriptors": For each type of magic
1177 and _attrname() and _getattr() with "descriptors": For each type of magic
1169 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1178 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1170 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1179 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1171 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1180 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1172 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1181 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1173 are still supported.
1182 are still supported.
1174
1183
1175 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1184 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1176 fails in ibrowse.fetch(), the exception object is added as the last item
1185 fails in ibrowse.fetch(), the exception object is added as the last item
1177 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1186 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1178 a generator throws an exception midway through execution.
1187 a generator throws an exception midway through execution.
1179
1188
1180 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1189 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1181 encoding into methods.
1190 encoding into methods.
1182
1191
1183 2006-07-26 Ville Vainio <vivainio@gmail.com>
1192 2006-07-26 Ville Vainio <vivainio@gmail.com>
1184
1193
1185 * iplib.py: history now stores multiline input as single
1194 * iplib.py: history now stores multiline input as single
1186 history entries. Patch by Jorgen Cederlof.
1195 history entries. Patch by Jorgen Cederlof.
1187
1196
1188 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1197 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1189
1198
1190 * IPython/Extensions/ibrowse.py: Make cursor visible over
1199 * IPython/Extensions/ibrowse.py: Make cursor visible over
1191 non existing attributes.
1200 non existing attributes.
1192
1201
1193 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1202 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1194
1203
1195 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1204 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1196 error output of the running command doesn't mess up the screen.
1205 error output of the running command doesn't mess up the screen.
1197
1206
1198 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1207 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1199
1208
1200 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1209 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1201 argument. This sorts the items themselves.
1210 argument. This sorts the items themselves.
1202
1211
1203 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1212 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1204
1213
1205 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1214 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1206 Compile expression strings into code objects. This should speed
1215 Compile expression strings into code objects. This should speed
1207 up ifilter and friends somewhat.
1216 up ifilter and friends somewhat.
1208
1217
1209 2006-07-08 Ville Vainio <vivainio@gmail.com>
1218 2006-07-08 Ville Vainio <vivainio@gmail.com>
1210
1219
1211 * Magic.py: %cpaste now strips > from the beginning of lines
1220 * Magic.py: %cpaste now strips > from the beginning of lines
1212 to ease pasting quoted code from emails. Contributed by
1221 to ease pasting quoted code from emails. Contributed by
1213 Stefan van der Walt.
1222 Stefan van der Walt.
1214
1223
1215 2006-06-29 Ville Vainio <vivainio@gmail.com>
1224 2006-06-29 Ville Vainio <vivainio@gmail.com>
1216
1225
1217 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1226 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1218 mode, patch contributed by Darren Dale. NEEDS TESTING!
1227 mode, patch contributed by Darren Dale. NEEDS TESTING!
1219
1228
1220 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1229 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1221
1230
1222 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1231 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1223 a blue background. Fix fetching new display rows when the browser
1232 a blue background. Fix fetching new display rows when the browser
1224 scrolls more than a screenful (e.g. by using the goto command).
1233 scrolls more than a screenful (e.g. by using the goto command).
1225
1234
1226 2006-06-27 Ville Vainio <vivainio@gmail.com>
1235 2006-06-27 Ville Vainio <vivainio@gmail.com>
1227
1236
1228 * Magic.py (_inspect, _ofind) Apply David Huard's
1237 * Magic.py (_inspect, _ofind) Apply David Huard's
1229 patch for displaying the correct docstring for 'property'
1238 patch for displaying the correct docstring for 'property'
1230 attributes.
1239 attributes.
1231
1240
1232 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1241 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1233
1242
1234 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1243 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1235 commands into the methods implementing them.
1244 commands into the methods implementing them.
1236
1245
1237 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1246 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1238
1247
1239 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1248 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1240 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1249 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1241 autoindent support was authored by Jin Liu.
1250 autoindent support was authored by Jin Liu.
1242
1251
1243 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1252 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1244
1253
1245 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1254 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1246 for keymaps with a custom class that simplifies handling.
1255 for keymaps with a custom class that simplifies handling.
1247
1256
1248 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1257 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1249
1258
1250 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1259 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1251 resizing. This requires Python 2.5 to work.
1260 resizing. This requires Python 2.5 to work.
1252
1261
1253 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1262 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1254
1263
1255 * IPython/Extensions/ibrowse.py: Add two new commands to
1264 * IPython/Extensions/ibrowse.py: Add two new commands to
1256 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1265 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1257 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1266 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1258 attributes again. Remapped the help command to "?". Display
1267 attributes again. Remapped the help command to "?". Display
1259 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1268 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1260 as keys for the "home" and "end" commands. Add three new commands
1269 as keys for the "home" and "end" commands. Add three new commands
1261 to the input mode for "find" and friends: "delend" (CTRL-K)
1270 to the input mode for "find" and friends: "delend" (CTRL-K)
1262 deletes to the end of line. "incsearchup" searches upwards in the
1271 deletes to the end of line. "incsearchup" searches upwards in the
1263 command history for an input that starts with the text before the cursor.
1272 command history for an input that starts with the text before the cursor.
1264 "incsearchdown" does the same downwards. Removed a bogus mapping of
1273 "incsearchdown" does the same downwards. Removed a bogus mapping of
1265 the x key to "delete".
1274 the x key to "delete".
1266
1275
1267 2006-06-15 Ville Vainio <vivainio@gmail.com>
1276 2006-06-15 Ville Vainio <vivainio@gmail.com>
1268
1277
1269 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1278 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1270 used to create prompts dynamically, instead of the "old" way of
1279 used to create prompts dynamically, instead of the "old" way of
1271 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1280 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1272 way still works (it's invoked by the default hook), of course.
1281 way still works (it's invoked by the default hook), of course.
1273
1282
1274 * Prompts.py: added generate_output_prompt hook for altering output
1283 * Prompts.py: added generate_output_prompt hook for altering output
1275 prompt
1284 prompt
1276
1285
1277 * Release.py: Changed version string to 0.7.3.svn.
1286 * Release.py: Changed version string to 0.7.3.svn.
1278
1287
1279 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1288 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1280
1289
1281 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1290 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1282 the call to fetch() always tries to fetch enough data for at least one
1291 the call to fetch() always tries to fetch enough data for at least one
1283 full screen. This makes it possible to simply call moveto(0,0,True) in
1292 full screen. This makes it possible to simply call moveto(0,0,True) in
1284 the constructor. Fix typos and removed the obsolete goto attribute.
1293 the constructor. Fix typos and removed the obsolete goto attribute.
1285
1294
1286 2006-06-12 Ville Vainio <vivainio@gmail.com>
1295 2006-06-12 Ville Vainio <vivainio@gmail.com>
1287
1296
1288 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1297 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1289 allowing $variable interpolation within multiline statements,
1298 allowing $variable interpolation within multiline statements,
1290 though so far only with "sh" profile for a testing period.
1299 though so far only with "sh" profile for a testing period.
1291 The patch also enables splitting long commands with \ but it
1300 The patch also enables splitting long commands with \ but it
1292 doesn't work properly yet.
1301 doesn't work properly yet.
1293
1302
1294 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1303 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1295
1304
1296 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1305 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1297 input history and the position of the cursor in the input history for
1306 input history and the position of the cursor in the input history for
1298 the find, findbackwards and goto command.
1307 the find, findbackwards and goto command.
1299
1308
1300 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1309 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1301
1310
1302 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1311 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1303 implements the basic functionality of browser commands that require
1312 implements the basic functionality of browser commands that require
1304 input. Reimplement the goto, find and findbackwards commands as
1313 input. Reimplement the goto, find and findbackwards commands as
1305 subclasses of _CommandInput. Add an input history and keymaps to those
1314 subclasses of _CommandInput. Add an input history and keymaps to those
1306 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1315 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1307 execute commands.
1316 execute commands.
1308
1317
1309 2006-06-07 Ville Vainio <vivainio@gmail.com>
1318 2006-06-07 Ville Vainio <vivainio@gmail.com>
1310
1319
1311 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1320 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1312 running the batch files instead of leaving the session open.
1321 running the batch files instead of leaving the session open.
1313
1322
1314 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1323 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1315
1324
1316 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1325 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1317 the original fix was incomplete. Patch submitted by W. Maier.
1326 the original fix was incomplete. Patch submitted by W. Maier.
1318
1327
1319 2006-06-07 Ville Vainio <vivainio@gmail.com>
1328 2006-06-07 Ville Vainio <vivainio@gmail.com>
1320
1329
1321 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1330 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1322 Confirmation prompts can be supressed by 'quiet' option.
1331 Confirmation prompts can be supressed by 'quiet' option.
1323 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1332 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1324
1333
1325 2006-06-06 *** Released version 0.7.2
1334 2006-06-06 *** Released version 0.7.2
1326
1335
1327 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1336 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1328
1337
1329 * IPython/Release.py (version): Made 0.7.2 final for release.
1338 * IPython/Release.py (version): Made 0.7.2 final for release.
1330 Repo tagged and release cut.
1339 Repo tagged and release cut.
1331
1340
1332 2006-06-05 Ville Vainio <vivainio@gmail.com>
1341 2006-06-05 Ville Vainio <vivainio@gmail.com>
1333
1342
1334 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1343 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1335 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1344 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1336
1345
1337 * upgrade_dir.py: try import 'path' module a bit harder
1346 * upgrade_dir.py: try import 'path' module a bit harder
1338 (for %upgrade)
1347 (for %upgrade)
1339
1348
1340 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1349 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1341
1350
1342 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1351 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1343 instead of looping 20 times.
1352 instead of looping 20 times.
1344
1353
1345 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1354 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1346 correctly at initialization time. Bug reported by Krishna Mohan
1355 correctly at initialization time. Bug reported by Krishna Mohan
1347 Gundu <gkmohan-AT-gmail.com> on the user list.
1356 Gundu <gkmohan-AT-gmail.com> on the user list.
1348
1357
1349 * IPython/Release.py (version): Mark 0.7.2 version to start
1358 * IPython/Release.py (version): Mark 0.7.2 version to start
1350 testing for release on 06/06.
1359 testing for release on 06/06.
1351
1360
1352 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1361 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1353
1362
1354 * scripts/irunner: thin script interface so users don't have to
1363 * scripts/irunner: thin script interface so users don't have to
1355 find the module and call it as an executable, since modules rarely
1364 find the module and call it as an executable, since modules rarely
1356 live in people's PATH.
1365 live in people's PATH.
1357
1366
1358 * IPython/irunner.py (InteractiveRunner.__init__): added
1367 * IPython/irunner.py (InteractiveRunner.__init__): added
1359 delaybeforesend attribute to control delays with newer versions of
1368 delaybeforesend attribute to control delays with newer versions of
1360 pexpect. Thanks to detailed help from pexpect's author, Noah
1369 pexpect. Thanks to detailed help from pexpect's author, Noah
1361 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1370 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1362 correctly (it works in NoColor mode).
1371 correctly (it works in NoColor mode).
1363
1372
1364 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1373 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1365 SAGE list, from improper log() calls.
1374 SAGE list, from improper log() calls.
1366
1375
1367 2006-05-31 Ville Vainio <vivainio@gmail.com>
1376 2006-05-31 Ville Vainio <vivainio@gmail.com>
1368
1377
1369 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1378 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1370 with args in parens to work correctly with dirs that have spaces.
1379 with args in parens to work correctly with dirs that have spaces.
1371
1380
1372 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1381 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1373
1382
1374 * IPython/Logger.py (Logger.logstart): add option to log raw input
1383 * IPython/Logger.py (Logger.logstart): add option to log raw input
1375 instead of the processed one. A -r flag was added to the
1384 instead of the processed one. A -r flag was added to the
1376 %logstart magic used for controlling logging.
1385 %logstart magic used for controlling logging.
1377
1386
1378 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1387 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1379
1388
1380 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1389 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1381 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1390 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1382 recognize the option. After a bug report by Will Maier. This
1391 recognize the option. After a bug report by Will Maier. This
1383 closes #64 (will do it after confirmation from W. Maier).
1392 closes #64 (will do it after confirmation from W. Maier).
1384
1393
1385 * IPython/irunner.py: New module to run scripts as if manually
1394 * IPython/irunner.py: New module to run scripts as if manually
1386 typed into an interactive environment, based on pexpect. After a
1395 typed into an interactive environment, based on pexpect. After a
1387 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1396 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1388 ipython-user list. Simple unittests in the tests/ directory.
1397 ipython-user list. Simple unittests in the tests/ directory.
1389
1398
1390 * tools/release: add Will Maier, OpenBSD port maintainer, to
1399 * tools/release: add Will Maier, OpenBSD port maintainer, to
1391 recepients list. We are now officially part of the OpenBSD ports:
1400 recepients list. We are now officially part of the OpenBSD ports:
1392 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1401 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1393 work.
1402 work.
1394
1403
1395 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1404 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1396
1405
1397 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1406 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1398 so that it doesn't break tkinter apps.
1407 so that it doesn't break tkinter apps.
1399
1408
1400 * IPython/iplib.py (_prefilter): fix bug where aliases would
1409 * IPython/iplib.py (_prefilter): fix bug where aliases would
1401 shadow variables when autocall was fully off. Reported by SAGE
1410 shadow variables when autocall was fully off. Reported by SAGE
1402 author William Stein.
1411 author William Stein.
1403
1412
1404 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1413 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1405 at what detail level strings are computed when foo? is requested.
1414 at what detail level strings are computed when foo? is requested.
1406 This allows users to ask for example that the string form of an
1415 This allows users to ask for example that the string form of an
1407 object is only computed when foo?? is called, or even never, by
1416 object is only computed when foo?? is called, or even never, by
1408 setting the object_info_string_level >= 2 in the configuration
1417 setting the object_info_string_level >= 2 in the configuration
1409 file. This new option has been added and documented. After a
1418 file. This new option has been added and documented. After a
1410 request by SAGE to be able to control the printing of very large
1419 request by SAGE to be able to control the printing of very large
1411 objects more easily.
1420 objects more easily.
1412
1421
1413 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1422 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1414
1423
1415 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1424 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1416 from sys.argv, to be 100% consistent with how Python itself works
1425 from sys.argv, to be 100% consistent with how Python itself works
1417 (as seen for example with python -i file.py). After a bug report
1426 (as seen for example with python -i file.py). After a bug report
1418 by Jeffrey Collins.
1427 by Jeffrey Collins.
1419
1428
1420 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1429 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1421 nasty bug which was preventing custom namespaces with -pylab,
1430 nasty bug which was preventing custom namespaces with -pylab,
1422 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1431 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1423 compatibility (long gone from mpl).
1432 compatibility (long gone from mpl).
1424
1433
1425 * IPython/ipapi.py (make_session): name change: create->make. We
1434 * IPython/ipapi.py (make_session): name change: create->make. We
1426 use make in other places (ipmaker,...), it's shorter and easier to
1435 use make in other places (ipmaker,...), it's shorter and easier to
1427 type and say, etc. I'm trying to clean things before 0.7.2 so
1436 type and say, etc. I'm trying to clean things before 0.7.2 so
1428 that I can keep things stable wrt to ipapi in the chainsaw branch.
1437 that I can keep things stable wrt to ipapi in the chainsaw branch.
1429
1438
1430 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1439 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1431 python-mode recognizes our debugger mode. Add support for
1440 python-mode recognizes our debugger mode. Add support for
1432 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1441 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1433 <m.liu.jin-AT-gmail.com> originally written by
1442 <m.liu.jin-AT-gmail.com> originally written by
1434 doxgen-AT-newsmth.net (with minor modifications for xemacs
1443 doxgen-AT-newsmth.net (with minor modifications for xemacs
1435 compatibility)
1444 compatibility)
1436
1445
1437 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1446 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1438 tracebacks when walking the stack so that the stack tracking system
1447 tracebacks when walking the stack so that the stack tracking system
1439 in emacs' python-mode can identify the frames correctly.
1448 in emacs' python-mode can identify the frames correctly.
1440
1449
1441 * IPython/ipmaker.py (make_IPython): make the internal (and
1450 * IPython/ipmaker.py (make_IPython): make the internal (and
1442 default config) autoedit_syntax value false by default. Too many
1451 default config) autoedit_syntax value false by default. Too many
1443 users have complained to me (both on and off-list) about problems
1452 users have complained to me (both on and off-list) about problems
1444 with this option being on by default, so I'm making it default to
1453 with this option being on by default, so I'm making it default to
1445 off. It can still be enabled by anyone via the usual mechanisms.
1454 off. It can still be enabled by anyone via the usual mechanisms.
1446
1455
1447 * IPython/completer.py (Completer.attr_matches): add support for
1456 * IPython/completer.py (Completer.attr_matches): add support for
1448 PyCrust-style _getAttributeNames magic method. Patch contributed
1457 PyCrust-style _getAttributeNames magic method. Patch contributed
1449 by <mscott-AT-goldenspud.com>. Closes #50.
1458 by <mscott-AT-goldenspud.com>. Closes #50.
1450
1459
1451 * IPython/iplib.py (InteractiveShell.__init__): remove the
1460 * IPython/iplib.py (InteractiveShell.__init__): remove the
1452 deletion of exit/quit from __builtin__, which can break
1461 deletion of exit/quit from __builtin__, which can break
1453 third-party tools like the Zope debugging console. The
1462 third-party tools like the Zope debugging console. The
1454 %exit/%quit magics remain. In general, it's probably a good idea
1463 %exit/%quit magics remain. In general, it's probably a good idea
1455 not to delete anything from __builtin__, since we never know what
1464 not to delete anything from __builtin__, since we never know what
1456 that will break. In any case, python now (for 2.5) will support
1465 that will break. In any case, python now (for 2.5) will support
1457 'real' exit/quit, so this issue is moot. Closes #55.
1466 'real' exit/quit, so this issue is moot. Closes #55.
1458
1467
1459 * IPython/genutils.py (with_obj): rename the 'with' function to
1468 * IPython/genutils.py (with_obj): rename the 'with' function to
1460 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1469 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1461 becomes a language keyword. Closes #53.
1470 becomes a language keyword. Closes #53.
1462
1471
1463 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1472 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1464 __file__ attribute to this so it fools more things into thinking
1473 __file__ attribute to this so it fools more things into thinking
1465 it is a real module. Closes #59.
1474 it is a real module. Closes #59.
1466
1475
1467 * IPython/Magic.py (magic_edit): add -n option to open the editor
1476 * IPython/Magic.py (magic_edit): add -n option to open the editor
1468 at a specific line number. After a patch by Stefan van der Walt.
1477 at a specific line number. After a patch by Stefan van der Walt.
1469
1478
1470 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1479 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1471
1480
1472 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1481 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1473 reason the file could not be opened. After automatic crash
1482 reason the file could not be opened. After automatic crash
1474 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1483 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1475 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1484 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1476 (_should_recompile): Don't fire editor if using %bg, since there
1485 (_should_recompile): Don't fire editor if using %bg, since there
1477 is no file in the first place. From the same report as above.
1486 is no file in the first place. From the same report as above.
1478 (raw_input): protect against faulty third-party prefilters. After
1487 (raw_input): protect against faulty third-party prefilters. After
1479 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1488 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1480 while running under SAGE.
1489 while running under SAGE.
1481
1490
1482 2006-05-23 Ville Vainio <vivainio@gmail.com>
1491 2006-05-23 Ville Vainio <vivainio@gmail.com>
1483
1492
1484 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1493 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1485 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1494 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1486 now returns None (again), unless dummy is specifically allowed by
1495 now returns None (again), unless dummy is specifically allowed by
1487 ipapi.get(allow_dummy=True).
1496 ipapi.get(allow_dummy=True).
1488
1497
1489 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1498 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1490
1499
1491 * IPython: remove all 2.2-compatibility objects and hacks from
1500 * IPython: remove all 2.2-compatibility objects and hacks from
1492 everywhere, since we only support 2.3 at this point. Docs
1501 everywhere, since we only support 2.3 at this point. Docs
1493 updated.
1502 updated.
1494
1503
1495 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1504 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1496 Anything requiring extra validation can be turned into a Python
1505 Anything requiring extra validation can be turned into a Python
1497 property in the future. I used a property for the db one b/c
1506 property in the future. I used a property for the db one b/c
1498 there was a nasty circularity problem with the initialization
1507 there was a nasty circularity problem with the initialization
1499 order, which right now I don't have time to clean up.
1508 order, which right now I don't have time to clean up.
1500
1509
1501 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1510 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1502 another locking bug reported by Jorgen. I'm not 100% sure though,
1511 another locking bug reported by Jorgen. I'm not 100% sure though,
1503 so more testing is needed...
1512 so more testing is needed...
1504
1513
1505 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1514 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1506
1515
1507 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1516 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1508 local variables from any routine in user code (typically executed
1517 local variables from any routine in user code (typically executed
1509 with %run) directly into the interactive namespace. Very useful
1518 with %run) directly into the interactive namespace. Very useful
1510 when doing complex debugging.
1519 when doing complex debugging.
1511 (IPythonNotRunning): Changed the default None object to a dummy
1520 (IPythonNotRunning): Changed the default None object to a dummy
1512 whose attributes can be queried as well as called without
1521 whose attributes can be queried as well as called without
1513 exploding, to ease writing code which works transparently both in
1522 exploding, to ease writing code which works transparently both in
1514 and out of ipython and uses some of this API.
1523 and out of ipython and uses some of this API.
1515
1524
1516 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1525 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1517
1526
1518 * IPython/hooks.py (result_display): Fix the fact that our display
1527 * IPython/hooks.py (result_display): Fix the fact that our display
1519 hook was using str() instead of repr(), as the default python
1528 hook was using str() instead of repr(), as the default python
1520 console does. This had gone unnoticed b/c it only happened if
1529 console does. This had gone unnoticed b/c it only happened if
1521 %Pprint was off, but the inconsistency was there.
1530 %Pprint was off, but the inconsistency was there.
1522
1531
1523 2006-05-15 Ville Vainio <vivainio@gmail.com>
1532 2006-05-15 Ville Vainio <vivainio@gmail.com>
1524
1533
1525 * Oinspect.py: Only show docstring for nonexisting/binary files
1534 * Oinspect.py: Only show docstring for nonexisting/binary files
1526 when doing object??, closing ticket #62
1535 when doing object??, closing ticket #62
1527
1536
1528 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1537 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1529
1538
1530 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1539 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1531 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1540 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1532 was being released in a routine which hadn't checked if it had
1541 was being released in a routine which hadn't checked if it had
1533 been the one to acquire it.
1542 been the one to acquire it.
1534
1543
1535 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1544 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1536
1545
1537 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1546 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1538
1547
1539 2006-04-11 Ville Vainio <vivainio@gmail.com>
1548 2006-04-11 Ville Vainio <vivainio@gmail.com>
1540
1549
1541 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1550 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1542 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1551 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1543 prefilters, allowing stuff like magics and aliases in the file.
1552 prefilters, allowing stuff like magics and aliases in the file.
1544
1553
1545 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1554 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1546 added. Supported now are "%clear in" and "%clear out" (clear input and
1555 added. Supported now are "%clear in" and "%clear out" (clear input and
1547 output history, respectively). Also fixed CachedOutput.flush to
1556 output history, respectively). Also fixed CachedOutput.flush to
1548 properly flush the output cache.
1557 properly flush the output cache.
1549
1558
1550 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1559 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1551 half-success (and fail explicitly).
1560 half-success (and fail explicitly).
1552
1561
1553 2006-03-28 Ville Vainio <vivainio@gmail.com>
1562 2006-03-28 Ville Vainio <vivainio@gmail.com>
1554
1563
1555 * iplib.py: Fix quoting of aliases so that only argless ones
1564 * iplib.py: Fix quoting of aliases so that only argless ones
1556 are quoted
1565 are quoted
1557
1566
1558 2006-03-28 Ville Vainio <vivainio@gmail.com>
1567 2006-03-28 Ville Vainio <vivainio@gmail.com>
1559
1568
1560 * iplib.py: Quote aliases with spaces in the name.
1569 * iplib.py: Quote aliases with spaces in the name.
1561 "c:\program files\blah\bin" is now legal alias target.
1570 "c:\program files\blah\bin" is now legal alias target.
1562
1571
1563 * ext_rehashdir.py: Space no longer allowed as arg
1572 * ext_rehashdir.py: Space no longer allowed as arg
1564 separator, since space is legal in path names.
1573 separator, since space is legal in path names.
1565
1574
1566 2006-03-16 Ville Vainio <vivainio@gmail.com>
1575 2006-03-16 Ville Vainio <vivainio@gmail.com>
1567
1576
1568 * upgrade_dir.py: Take path.py from Extensions, correcting
1577 * upgrade_dir.py: Take path.py from Extensions, correcting
1569 %upgrade magic
1578 %upgrade magic
1570
1579
1571 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1580 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1572
1581
1573 * hooks.py: Only enclose editor binary in quotes if legal and
1582 * hooks.py: Only enclose editor binary in quotes if legal and
1574 necessary (space in the name, and is an existing file). Fixes a bug
1583 necessary (space in the name, and is an existing file). Fixes a bug
1575 reported by Zachary Pincus.
1584 reported by Zachary Pincus.
1576
1585
1577 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1586 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1578
1587
1579 * Manual: thanks to a tip on proper color handling for Emacs, by
1588 * Manual: thanks to a tip on proper color handling for Emacs, by
1580 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1589 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1581
1590
1582 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1591 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1583 by applying the provided patch. Thanks to Liu Jin
1592 by applying the provided patch. Thanks to Liu Jin
1584 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1593 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1585 XEmacs/Linux, I'm trusting the submitter that it actually helps
1594 XEmacs/Linux, I'm trusting the submitter that it actually helps
1586 under win32/GNU Emacs. Will revisit if any problems are reported.
1595 under win32/GNU Emacs. Will revisit if any problems are reported.
1587
1596
1588 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1597 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1589
1598
1590 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1599 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1591 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1600 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1592
1601
1593 2006-03-12 Ville Vainio <vivainio@gmail.com>
1602 2006-03-12 Ville Vainio <vivainio@gmail.com>
1594
1603
1595 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1604 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1596 Torsten Marek.
1605 Torsten Marek.
1597
1606
1598 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1607 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1599
1608
1600 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1609 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1601 line ranges works again.
1610 line ranges works again.
1602
1611
1603 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1612 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1604
1613
1605 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1614 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1606 and friends, after a discussion with Zach Pincus on ipython-user.
1615 and friends, after a discussion with Zach Pincus on ipython-user.
1607 I'm not 100% sure, but after thinking about it quite a bit, it may
1616 I'm not 100% sure, but after thinking about it quite a bit, it may
1608 be OK. Testing with the multithreaded shells didn't reveal any
1617 be OK. Testing with the multithreaded shells didn't reveal any
1609 problems, but let's keep an eye out.
1618 problems, but let's keep an eye out.
1610
1619
1611 In the process, I fixed a few things which were calling
1620 In the process, I fixed a few things which were calling
1612 self.InteractiveTB() directly (like safe_execfile), which is a
1621 self.InteractiveTB() directly (like safe_execfile), which is a
1613 mistake: ALL exception reporting should be done by calling
1622 mistake: ALL exception reporting should be done by calling
1614 self.showtraceback(), which handles state and tab-completion and
1623 self.showtraceback(), which handles state and tab-completion and
1615 more.
1624 more.
1616
1625
1617 2006-03-01 Ville Vainio <vivainio@gmail.com>
1626 2006-03-01 Ville Vainio <vivainio@gmail.com>
1618
1627
1619 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1628 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1620 To use, do "from ipipe import *".
1629 To use, do "from ipipe import *".
1621
1630
1622 2006-02-24 Ville Vainio <vivainio@gmail.com>
1631 2006-02-24 Ville Vainio <vivainio@gmail.com>
1623
1632
1624 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1633 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1625 "cleanly" and safely than the older upgrade mechanism.
1634 "cleanly" and safely than the older upgrade mechanism.
1626
1635
1627 2006-02-21 Ville Vainio <vivainio@gmail.com>
1636 2006-02-21 Ville Vainio <vivainio@gmail.com>
1628
1637
1629 * Magic.py: %save works again.
1638 * Magic.py: %save works again.
1630
1639
1631 2006-02-15 Ville Vainio <vivainio@gmail.com>
1640 2006-02-15 Ville Vainio <vivainio@gmail.com>
1632
1641
1633 * Magic.py: %Pprint works again
1642 * Magic.py: %Pprint works again
1634
1643
1635 * Extensions/ipy_sane_defaults.py: Provide everything provided
1644 * Extensions/ipy_sane_defaults.py: Provide everything provided
1636 in default ipythonrc, to make it possible to have a completely empty
1645 in default ipythonrc, to make it possible to have a completely empty
1637 ipythonrc (and thus completely rc-file free configuration)
1646 ipythonrc (and thus completely rc-file free configuration)
1638
1647
1639 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1648 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1640
1649
1641 * IPython/hooks.py (editor): quote the call to the editor command,
1650 * IPython/hooks.py (editor): quote the call to the editor command,
1642 to allow commands with spaces in them. Problem noted by watching
1651 to allow commands with spaces in them. Problem noted by watching
1643 Ian Oswald's video about textpad under win32 at
1652 Ian Oswald's video about textpad under win32 at
1644 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1653 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1645
1654
1646 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1655 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1647 describing magics (we haven't used @ for a loong time).
1656 describing magics (we haven't used @ for a loong time).
1648
1657
1649 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1658 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1650 contributed by marienz to close
1659 contributed by marienz to close
1651 http://www.scipy.net/roundup/ipython/issue53.
1660 http://www.scipy.net/roundup/ipython/issue53.
1652
1661
1653 2006-02-10 Ville Vainio <vivainio@gmail.com>
1662 2006-02-10 Ville Vainio <vivainio@gmail.com>
1654
1663
1655 * genutils.py: getoutput now works in win32 too
1664 * genutils.py: getoutput now works in win32 too
1656
1665
1657 * completer.py: alias and magic completion only invoked
1666 * completer.py: alias and magic completion only invoked
1658 at the first "item" in the line, to avoid "cd %store"
1667 at the first "item" in the line, to avoid "cd %store"
1659 nonsense.
1668 nonsense.
1660
1669
1661 2006-02-09 Ville Vainio <vivainio@gmail.com>
1670 2006-02-09 Ville Vainio <vivainio@gmail.com>
1662
1671
1663 * test/*: Added a unit testing framework (finally).
1672 * test/*: Added a unit testing framework (finally).
1664 '%run runtests.py' to run test_*.
1673 '%run runtests.py' to run test_*.
1665
1674
1666 * ipapi.py: Exposed runlines and set_custom_exc
1675 * ipapi.py: Exposed runlines and set_custom_exc
1667
1676
1668 2006-02-07 Ville Vainio <vivainio@gmail.com>
1677 2006-02-07 Ville Vainio <vivainio@gmail.com>
1669
1678
1670 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1679 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1671 instead use "f(1 2)" as before.
1680 instead use "f(1 2)" as before.
1672
1681
1673 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1682 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1674
1683
1675 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1684 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1676 facilities, for demos processed by the IPython input filter
1685 facilities, for demos processed by the IPython input filter
1677 (IPythonDemo), and for running a script one-line-at-a-time as a
1686 (IPythonDemo), and for running a script one-line-at-a-time as a
1678 demo, both for pure Python (LineDemo) and for IPython-processed
1687 demo, both for pure Python (LineDemo) and for IPython-processed
1679 input (IPythonLineDemo). After a request by Dave Kohel, from the
1688 input (IPythonLineDemo). After a request by Dave Kohel, from the
1680 SAGE team.
1689 SAGE team.
1681 (Demo.edit): added an edit() method to the demo objects, to edit
1690 (Demo.edit): added an edit() method to the demo objects, to edit
1682 the in-memory copy of the last executed block.
1691 the in-memory copy of the last executed block.
1683
1692
1684 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1693 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1685 processing to %edit, %macro and %save. These commands can now be
1694 processing to %edit, %macro and %save. These commands can now be
1686 invoked on the unprocessed input as it was typed by the user
1695 invoked on the unprocessed input as it was typed by the user
1687 (without any prefilters applied). After requests by the SAGE team
1696 (without any prefilters applied). After requests by the SAGE team
1688 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1697 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1689
1698
1690 2006-02-01 Ville Vainio <vivainio@gmail.com>
1699 2006-02-01 Ville Vainio <vivainio@gmail.com>
1691
1700
1692 * setup.py, eggsetup.py: easy_install ipython==dev works
1701 * setup.py, eggsetup.py: easy_install ipython==dev works
1693 correctly now (on Linux)
1702 correctly now (on Linux)
1694
1703
1695 * ipy_user_conf,ipmaker: user config changes, removed spurious
1704 * ipy_user_conf,ipmaker: user config changes, removed spurious
1696 warnings
1705 warnings
1697
1706
1698 * iplib: if rc.banner is string, use it as is.
1707 * iplib: if rc.banner is string, use it as is.
1699
1708
1700 * Magic: %pycat accepts a string argument and pages it's contents.
1709 * Magic: %pycat accepts a string argument and pages it's contents.
1701
1710
1702
1711
1703 2006-01-30 Ville Vainio <vivainio@gmail.com>
1712 2006-01-30 Ville Vainio <vivainio@gmail.com>
1704
1713
1705 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1714 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1706 Now %store and bookmarks work through PickleShare, meaning that
1715 Now %store and bookmarks work through PickleShare, meaning that
1707 concurrent access is possible and all ipython sessions see the
1716 concurrent access is possible and all ipython sessions see the
1708 same database situation all the time, instead of snapshot of
1717 same database situation all the time, instead of snapshot of
1709 the situation when the session was started. Hence, %bookmark
1718 the situation when the session was started. Hence, %bookmark
1710 results are immediately accessible from othes sessions. The database
1719 results are immediately accessible from othes sessions. The database
1711 is also available for use by user extensions. See:
1720 is also available for use by user extensions. See:
1712 http://www.python.org/pypi/pickleshare
1721 http://www.python.org/pypi/pickleshare
1713
1722
1714 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1723 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1715
1724
1716 * aliases can now be %store'd
1725 * aliases can now be %store'd
1717
1726
1718 * path.py moved to Extensions so that pickleshare does not need
1727 * path.py moved to Extensions so that pickleshare does not need
1719 IPython-specific import. Extensions added to pythonpath right
1728 IPython-specific import. Extensions added to pythonpath right
1720 at __init__.
1729 at __init__.
1721
1730
1722 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1731 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1723 called with _ip.system and the pre-transformed command string.
1732 called with _ip.system and the pre-transformed command string.
1724
1733
1725 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1734 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1726
1735
1727 * IPython/iplib.py (interact): Fix that we were not catching
1736 * IPython/iplib.py (interact): Fix that we were not catching
1728 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1737 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1729 logic here had to change, but it's fixed now.
1738 logic here had to change, but it's fixed now.
1730
1739
1731 2006-01-29 Ville Vainio <vivainio@gmail.com>
1740 2006-01-29 Ville Vainio <vivainio@gmail.com>
1732
1741
1733 * iplib.py: Try to import pyreadline on Windows.
1742 * iplib.py: Try to import pyreadline on Windows.
1734
1743
1735 2006-01-27 Ville Vainio <vivainio@gmail.com>
1744 2006-01-27 Ville Vainio <vivainio@gmail.com>
1736
1745
1737 * iplib.py: Expose ipapi as _ip in builtin namespace.
1746 * iplib.py: Expose ipapi as _ip in builtin namespace.
1738 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1747 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1739 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1748 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1740 syntax now produce _ip.* variant of the commands.
1749 syntax now produce _ip.* variant of the commands.
1741
1750
1742 * "_ip.options().autoedit_syntax = 2" automatically throws
1751 * "_ip.options().autoedit_syntax = 2" automatically throws
1743 user to editor for syntax error correction without prompting.
1752 user to editor for syntax error correction without prompting.
1744
1753
1745 2006-01-27 Ville Vainio <vivainio@gmail.com>
1754 2006-01-27 Ville Vainio <vivainio@gmail.com>
1746
1755
1747 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1756 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1748 'ipython' at argv[0]) executed through command line.
1757 'ipython' at argv[0]) executed through command line.
1749 NOTE: this DEPRECATES calling ipython with multiple scripts
1758 NOTE: this DEPRECATES calling ipython with multiple scripts
1750 ("ipython a.py b.py c.py")
1759 ("ipython a.py b.py c.py")
1751
1760
1752 * iplib.py, hooks.py: Added configurable input prefilter,
1761 * iplib.py, hooks.py: Added configurable input prefilter,
1753 named 'input_prefilter'. See ext_rescapture.py for example
1762 named 'input_prefilter'. See ext_rescapture.py for example
1754 usage.
1763 usage.
1755
1764
1756 * ext_rescapture.py, Magic.py: Better system command output capture
1765 * ext_rescapture.py, Magic.py: Better system command output capture
1757 through 'var = !ls' (deprecates user-visible %sc). Same notation
1766 through 'var = !ls' (deprecates user-visible %sc). Same notation
1758 applies for magics, 'var = %alias' assigns alias list to var.
1767 applies for magics, 'var = %alias' assigns alias list to var.
1759
1768
1760 * ipapi.py: added meta() for accessing extension-usable data store.
1769 * ipapi.py: added meta() for accessing extension-usable data store.
1761
1770
1762 * iplib.py: added InteractiveShell.getapi(). New magics should be
1771 * iplib.py: added InteractiveShell.getapi(). New magics should be
1763 written doing self.getapi() instead of using the shell directly.
1772 written doing self.getapi() instead of using the shell directly.
1764
1773
1765 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1774 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1766 %store foo >> ~/myfoo.txt to store variables to files (in clean
1775 %store foo >> ~/myfoo.txt to store variables to files (in clean
1767 textual form, not a restorable pickle).
1776 textual form, not a restorable pickle).
1768
1777
1769 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1778 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1770
1779
1771 * usage.py, Magic.py: added %quickref
1780 * usage.py, Magic.py: added %quickref
1772
1781
1773 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1782 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1774
1783
1775 * GetoptErrors when invoking magics etc. with wrong args
1784 * GetoptErrors when invoking magics etc. with wrong args
1776 are now more helpful:
1785 are now more helpful:
1777 GetoptError: option -l not recognized (allowed: "qb" )
1786 GetoptError: option -l not recognized (allowed: "qb" )
1778
1787
1779 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1788 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1780
1789
1781 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1790 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1782 computationally intensive blocks don't appear to stall the demo.
1791 computationally intensive blocks don't appear to stall the demo.
1783
1792
1784 2006-01-24 Ville Vainio <vivainio@gmail.com>
1793 2006-01-24 Ville Vainio <vivainio@gmail.com>
1785
1794
1786 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1795 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1787 value to manipulate resulting history entry.
1796 value to manipulate resulting history entry.
1788
1797
1789 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1798 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1790 to instance methods of IPApi class, to make extending an embedded
1799 to instance methods of IPApi class, to make extending an embedded
1791 IPython feasible. See ext_rehashdir.py for example usage.
1800 IPython feasible. See ext_rehashdir.py for example usage.
1792
1801
1793 * Merged 1071-1076 from branches/0.7.1
1802 * Merged 1071-1076 from branches/0.7.1
1794
1803
1795
1804
1796 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1805 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1797
1806
1798 * tools/release (daystamp): Fix build tools to use the new
1807 * tools/release (daystamp): Fix build tools to use the new
1799 eggsetup.py script to build lightweight eggs.
1808 eggsetup.py script to build lightweight eggs.
1800
1809
1801 * Applied changesets 1062 and 1064 before 0.7.1 release.
1810 * Applied changesets 1062 and 1064 before 0.7.1 release.
1802
1811
1803 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1812 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1804 see the raw input history (without conversions like %ls ->
1813 see the raw input history (without conversions like %ls ->
1805 ipmagic("ls")). After a request from W. Stein, SAGE
1814 ipmagic("ls")). After a request from W. Stein, SAGE
1806 (http://modular.ucsd.edu/sage) developer. This information is
1815 (http://modular.ucsd.edu/sage) developer. This information is
1807 stored in the input_hist_raw attribute of the IPython instance, so
1816 stored in the input_hist_raw attribute of the IPython instance, so
1808 developers can access it if needed (it's an InputList instance).
1817 developers can access it if needed (it's an InputList instance).
1809
1818
1810 * Versionstring = 0.7.2.svn
1819 * Versionstring = 0.7.2.svn
1811
1820
1812 * eggsetup.py: A separate script for constructing eggs, creates
1821 * eggsetup.py: A separate script for constructing eggs, creates
1813 proper launch scripts even on Windows (an .exe file in
1822 proper launch scripts even on Windows (an .exe file in
1814 \python24\scripts).
1823 \python24\scripts).
1815
1824
1816 * ipapi.py: launch_new_instance, launch entry point needed for the
1825 * ipapi.py: launch_new_instance, launch entry point needed for the
1817 egg.
1826 egg.
1818
1827
1819 2006-01-23 Ville Vainio <vivainio@gmail.com>
1828 2006-01-23 Ville Vainio <vivainio@gmail.com>
1820
1829
1821 * Added %cpaste magic for pasting python code
1830 * Added %cpaste magic for pasting python code
1822
1831
1823 2006-01-22 Ville Vainio <vivainio@gmail.com>
1832 2006-01-22 Ville Vainio <vivainio@gmail.com>
1824
1833
1825 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1834 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1826
1835
1827 * Versionstring = 0.7.2.svn
1836 * Versionstring = 0.7.2.svn
1828
1837
1829 * eggsetup.py: A separate script for constructing eggs, creates
1838 * eggsetup.py: A separate script for constructing eggs, creates
1830 proper launch scripts even on Windows (an .exe file in
1839 proper launch scripts even on Windows (an .exe file in
1831 \python24\scripts).
1840 \python24\scripts).
1832
1841
1833 * ipapi.py: launch_new_instance, launch entry point needed for the
1842 * ipapi.py: launch_new_instance, launch entry point needed for the
1834 egg.
1843 egg.
1835
1844
1836 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1845 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1837
1846
1838 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1847 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1839 %pfile foo would print the file for foo even if it was a binary.
1848 %pfile foo would print the file for foo even if it was a binary.
1840 Now, extensions '.so' and '.dll' are skipped.
1849 Now, extensions '.so' and '.dll' are skipped.
1841
1850
1842 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1851 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1843 bug, where macros would fail in all threaded modes. I'm not 100%
1852 bug, where macros would fail in all threaded modes. I'm not 100%
1844 sure, so I'm going to put out an rc instead of making a release
1853 sure, so I'm going to put out an rc instead of making a release
1845 today, and wait for feedback for at least a few days.
1854 today, and wait for feedback for at least a few days.
1846
1855
1847 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1856 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1848 it...) the handling of pasting external code with autoindent on.
1857 it...) the handling of pasting external code with autoindent on.
1849 To get out of a multiline input, the rule will appear for most
1858 To get out of a multiline input, the rule will appear for most
1850 users unchanged: two blank lines or change the indent level
1859 users unchanged: two blank lines or change the indent level
1851 proposed by IPython. But there is a twist now: you can
1860 proposed by IPython. But there is a twist now: you can
1852 add/subtract only *one or two spaces*. If you add/subtract three
1861 add/subtract only *one or two spaces*. If you add/subtract three
1853 or more (unless you completely delete the line), IPython will
1862 or more (unless you completely delete the line), IPython will
1854 accept that line, and you'll need to enter a second one of pure
1863 accept that line, and you'll need to enter a second one of pure
1855 whitespace. I know it sounds complicated, but I can't find a
1864 whitespace. I know it sounds complicated, but I can't find a
1856 different solution that covers all the cases, with the right
1865 different solution that covers all the cases, with the right
1857 heuristics. Hopefully in actual use, nobody will really notice
1866 heuristics. Hopefully in actual use, nobody will really notice
1858 all these strange rules and things will 'just work'.
1867 all these strange rules and things will 'just work'.
1859
1868
1860 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1869 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1861
1870
1862 * IPython/iplib.py (interact): catch exceptions which can be
1871 * IPython/iplib.py (interact): catch exceptions which can be
1863 triggered asynchronously by signal handlers. Thanks to an
1872 triggered asynchronously by signal handlers. Thanks to an
1864 automatic crash report, submitted by Colin Kingsley
1873 automatic crash report, submitted by Colin Kingsley
1865 <tercel-AT-gentoo.org>.
1874 <tercel-AT-gentoo.org>.
1866
1875
1867 2006-01-20 Ville Vainio <vivainio@gmail.com>
1876 2006-01-20 Ville Vainio <vivainio@gmail.com>
1868
1877
1869 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1878 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1870 (%rehashdir, very useful, try it out) of how to extend ipython
1879 (%rehashdir, very useful, try it out) of how to extend ipython
1871 with new magics. Also added Extensions dir to pythonpath to make
1880 with new magics. Also added Extensions dir to pythonpath to make
1872 importing extensions easy.
1881 importing extensions easy.
1873
1882
1874 * %store now complains when trying to store interactively declared
1883 * %store now complains when trying to store interactively declared
1875 classes / instances of those classes.
1884 classes / instances of those classes.
1876
1885
1877 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1886 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1878 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1887 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1879 if they exist, and ipy_user_conf.py with some defaults is created for
1888 if they exist, and ipy_user_conf.py with some defaults is created for
1880 the user.
1889 the user.
1881
1890
1882 * Startup rehashing done by the config file, not InterpreterExec.
1891 * Startup rehashing done by the config file, not InterpreterExec.
1883 This means system commands are available even without selecting the
1892 This means system commands are available even without selecting the
1884 pysh profile. It's the sensible default after all.
1893 pysh profile. It's the sensible default after all.
1885
1894
1886 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1895 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1887
1896
1888 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1897 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1889 multiline code with autoindent on working. But I am really not
1898 multiline code with autoindent on working. But I am really not
1890 sure, so this needs more testing. Will commit a debug-enabled
1899 sure, so this needs more testing. Will commit a debug-enabled
1891 version for now, while I test it some more, so that Ville and
1900 version for now, while I test it some more, so that Ville and
1892 others may also catch any problems. Also made
1901 others may also catch any problems. Also made
1893 self.indent_current_str() a method, to ensure that there's no
1902 self.indent_current_str() a method, to ensure that there's no
1894 chance of the indent space count and the corresponding string
1903 chance of the indent space count and the corresponding string
1895 falling out of sync. All code needing the string should just call
1904 falling out of sync. All code needing the string should just call
1896 the method.
1905 the method.
1897
1906
1898 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1907 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1899
1908
1900 * IPython/Magic.py (magic_edit): fix check for when users don't
1909 * IPython/Magic.py (magic_edit): fix check for when users don't
1901 save their output files, the try/except was in the wrong section.
1910 save their output files, the try/except was in the wrong section.
1902
1911
1903 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1912 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1904
1913
1905 * IPython/Magic.py (magic_run): fix __file__ global missing from
1914 * IPython/Magic.py (magic_run): fix __file__ global missing from
1906 script's namespace when executed via %run. After a report by
1915 script's namespace when executed via %run. After a report by
1907 Vivian.
1916 Vivian.
1908
1917
1909 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1918 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1910 when using python 2.4. The parent constructor changed in 2.4, and
1919 when using python 2.4. The parent constructor changed in 2.4, and
1911 we need to track it directly (we can't call it, as it messes up
1920 we need to track it directly (we can't call it, as it messes up
1912 readline and tab-completion inside our pdb would stop working).
1921 readline and tab-completion inside our pdb would stop working).
1913 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1922 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1914
1923
1915 2006-01-16 Ville Vainio <vivainio@gmail.com>
1924 2006-01-16 Ville Vainio <vivainio@gmail.com>
1916
1925
1917 * Ipython/magic.py: Reverted back to old %edit functionality
1926 * Ipython/magic.py: Reverted back to old %edit functionality
1918 that returns file contents on exit.
1927 that returns file contents on exit.
1919
1928
1920 * IPython/path.py: Added Jason Orendorff's "path" module to
1929 * IPython/path.py: Added Jason Orendorff's "path" module to
1921 IPython tree, http://www.jorendorff.com/articles/python/path/.
1930 IPython tree, http://www.jorendorff.com/articles/python/path/.
1922 You can get path objects conveniently through %sc, and !!, e.g.:
1931 You can get path objects conveniently through %sc, and !!, e.g.:
1923 sc files=ls
1932 sc files=ls
1924 for p in files.paths: # or files.p
1933 for p in files.paths: # or files.p
1925 print p,p.mtime
1934 print p,p.mtime
1926
1935
1927 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1936 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1928 now work again without considering the exclusion regexp -
1937 now work again without considering the exclusion regexp -
1929 hence, things like ',foo my/path' turn to 'foo("my/path")'
1938 hence, things like ',foo my/path' turn to 'foo("my/path")'
1930 instead of syntax error.
1939 instead of syntax error.
1931
1940
1932
1941
1933 2006-01-14 Ville Vainio <vivainio@gmail.com>
1942 2006-01-14 Ville Vainio <vivainio@gmail.com>
1934
1943
1935 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1944 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1936 ipapi decorators for python 2.4 users, options() provides access to rc
1945 ipapi decorators for python 2.4 users, options() provides access to rc
1937 data.
1946 data.
1938
1947
1939 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1948 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1940 as path separators (even on Linux ;-). Space character after
1949 as path separators (even on Linux ;-). Space character after
1941 backslash (as yielded by tab completer) is still space;
1950 backslash (as yielded by tab completer) is still space;
1942 "%cd long\ name" works as expected.
1951 "%cd long\ name" works as expected.
1943
1952
1944 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1953 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1945 as "chain of command", with priority. API stays the same,
1954 as "chain of command", with priority. API stays the same,
1946 TryNext exception raised by a hook function signals that
1955 TryNext exception raised by a hook function signals that
1947 current hook failed and next hook should try handling it, as
1956 current hook failed and next hook should try handling it, as
1948 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1957 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1949 requested configurable display hook, which is now implemented.
1958 requested configurable display hook, which is now implemented.
1950
1959
1951 2006-01-13 Ville Vainio <vivainio@gmail.com>
1960 2006-01-13 Ville Vainio <vivainio@gmail.com>
1952
1961
1953 * IPython/platutils*.py: platform specific utility functions,
1962 * IPython/platutils*.py: platform specific utility functions,
1954 so far only set_term_title is implemented (change terminal
1963 so far only set_term_title is implemented (change terminal
1955 label in windowing systems). %cd now changes the title to
1964 label in windowing systems). %cd now changes the title to
1956 current dir.
1965 current dir.
1957
1966
1958 * IPython/Release.py: Added myself to "authors" list,
1967 * IPython/Release.py: Added myself to "authors" list,
1959 had to create new files.
1968 had to create new files.
1960
1969
1961 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1970 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1962 shell escape; not a known bug but had potential to be one in the
1971 shell escape; not a known bug but had potential to be one in the
1963 future.
1972 future.
1964
1973
1965 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1974 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1966 extension API for IPython! See the module for usage example. Fix
1975 extension API for IPython! See the module for usage example. Fix
1967 OInspect for docstring-less magic functions.
1976 OInspect for docstring-less magic functions.
1968
1977
1969
1978
1970 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1979 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1971
1980
1972 * IPython/iplib.py (raw_input): temporarily deactivate all
1981 * IPython/iplib.py (raw_input): temporarily deactivate all
1973 attempts at allowing pasting of code with autoindent on. It
1982 attempts at allowing pasting of code with autoindent on. It
1974 introduced bugs (reported by Prabhu) and I can't seem to find a
1983 introduced bugs (reported by Prabhu) and I can't seem to find a
1975 robust combination which works in all cases. Will have to revisit
1984 robust combination which works in all cases. Will have to revisit
1976 later.
1985 later.
1977
1986
1978 * IPython/genutils.py: remove isspace() function. We've dropped
1987 * IPython/genutils.py: remove isspace() function. We've dropped
1979 2.2 compatibility, so it's OK to use the string method.
1988 2.2 compatibility, so it's OK to use the string method.
1980
1989
1981 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1990 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1982
1991
1983 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1992 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1984 matching what NOT to autocall on, to include all python binary
1993 matching what NOT to autocall on, to include all python binary
1985 operators (including things like 'and', 'or', 'is' and 'in').
1994 operators (including things like 'and', 'or', 'is' and 'in').
1986 Prompted by a bug report on 'foo & bar', but I realized we had
1995 Prompted by a bug report on 'foo & bar', but I realized we had
1987 many more potential bug cases with other operators. The regexp is
1996 many more potential bug cases with other operators. The regexp is
1988 self.re_exclude_auto, it's fairly commented.
1997 self.re_exclude_auto, it's fairly commented.
1989
1998
1990 2006-01-12 Ville Vainio <vivainio@gmail.com>
1999 2006-01-12 Ville Vainio <vivainio@gmail.com>
1991
2000
1992 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2001 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1993 Prettified and hardened string/backslash quoting with ipsystem(),
2002 Prettified and hardened string/backslash quoting with ipsystem(),
1994 ipalias() and ipmagic(). Now even \ characters are passed to
2003 ipalias() and ipmagic(). Now even \ characters are passed to
1995 %magics, !shell escapes and aliases exactly as they are in the
2004 %magics, !shell escapes and aliases exactly as they are in the
1996 ipython command line. Should improve backslash experience,
2005 ipython command line. Should improve backslash experience,
1997 particularly in Windows (path delimiter for some commands that
2006 particularly in Windows (path delimiter for some commands that
1998 won't understand '/'), but Unix benefits as well (regexps). %cd
2007 won't understand '/'), but Unix benefits as well (regexps). %cd
1999 magic still doesn't support backslash path delimiters, though. Also
2008 magic still doesn't support backslash path delimiters, though. Also
2000 deleted all pretense of supporting multiline command strings in
2009 deleted all pretense of supporting multiline command strings in
2001 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2010 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2002
2011
2003 * doc/build_doc_instructions.txt added. Documentation on how to
2012 * doc/build_doc_instructions.txt added. Documentation on how to
2004 use doc/update_manual.py, added yesterday. Both files contributed
2013 use doc/update_manual.py, added yesterday. Both files contributed
2005 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2014 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2006 doc/*.sh for deprecation at a later date.
2015 doc/*.sh for deprecation at a later date.
2007
2016
2008 * /ipython.py Added ipython.py to root directory for
2017 * /ipython.py Added ipython.py to root directory for
2009 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2018 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2010 ipython.py) and development convenience (no need to keep doing
2019 ipython.py) and development convenience (no need to keep doing
2011 "setup.py install" between changes).
2020 "setup.py install" between changes).
2012
2021
2013 * Made ! and !! shell escapes work (again) in multiline expressions:
2022 * Made ! and !! shell escapes work (again) in multiline expressions:
2014 if 1:
2023 if 1:
2015 !ls
2024 !ls
2016 !!ls
2025 !!ls
2017
2026
2018 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2027 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2019
2028
2020 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2029 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2021 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2030 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2022 module in case-insensitive installation. Was causing crashes
2031 module in case-insensitive installation. Was causing crashes
2023 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2032 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2024
2033
2025 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2034 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2026 <marienz-AT-gentoo.org>, closes
2035 <marienz-AT-gentoo.org>, closes
2027 http://www.scipy.net/roundup/ipython/issue51.
2036 http://www.scipy.net/roundup/ipython/issue51.
2028
2037
2029 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2038 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2030
2039
2031 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2040 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2032 problem of excessive CPU usage under *nix and keyboard lag under
2041 problem of excessive CPU usage under *nix and keyboard lag under
2033 win32.
2042 win32.
2034
2043
2035 2006-01-10 *** Released version 0.7.0
2044 2006-01-10 *** Released version 0.7.0
2036
2045
2037 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2046 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2038
2047
2039 * IPython/Release.py (revision): tag version number to 0.7.0,
2048 * IPython/Release.py (revision): tag version number to 0.7.0,
2040 ready for release.
2049 ready for release.
2041
2050
2042 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2051 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2043 it informs the user of the name of the temp. file used. This can
2052 it informs the user of the name of the temp. file used. This can
2044 help if you decide later to reuse that same file, so you know
2053 help if you decide later to reuse that same file, so you know
2045 where to copy the info from.
2054 where to copy the info from.
2046
2055
2047 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2056 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2048
2057
2049 * setup_bdist_egg.py: little script to build an egg. Added
2058 * setup_bdist_egg.py: little script to build an egg. Added
2050 support in the release tools as well.
2059 support in the release tools as well.
2051
2060
2052 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2061 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2053
2062
2054 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2063 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2055 version selection (new -wxversion command line and ipythonrc
2064 version selection (new -wxversion command line and ipythonrc
2056 parameter). Patch contributed by Arnd Baecker
2065 parameter). Patch contributed by Arnd Baecker
2057 <arnd.baecker-AT-web.de>.
2066 <arnd.baecker-AT-web.de>.
2058
2067
2059 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2068 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2060 embedded instances, for variables defined at the interactive
2069 embedded instances, for variables defined at the interactive
2061 prompt of the embedded ipython. Reported by Arnd.
2070 prompt of the embedded ipython. Reported by Arnd.
2062
2071
2063 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2072 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2064 it can be used as a (stateful) toggle, or with a direct parameter.
2073 it can be used as a (stateful) toggle, or with a direct parameter.
2065
2074
2066 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2075 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2067 could be triggered in certain cases and cause the traceback
2076 could be triggered in certain cases and cause the traceback
2068 printer not to work.
2077 printer not to work.
2069
2078
2070 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2079 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2071
2080
2072 * IPython/iplib.py (_should_recompile): Small fix, closes
2081 * IPython/iplib.py (_should_recompile): Small fix, closes
2073 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2082 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2074
2083
2075 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2084 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2076
2085
2077 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2086 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2078 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2087 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2079 Moad for help with tracking it down.
2088 Moad for help with tracking it down.
2080
2089
2081 * IPython/iplib.py (handle_auto): fix autocall handling for
2090 * IPython/iplib.py (handle_auto): fix autocall handling for
2082 objects which support BOTH __getitem__ and __call__ (so that f [x]
2091 objects which support BOTH __getitem__ and __call__ (so that f [x]
2083 is left alone, instead of becoming f([x]) automatically).
2092 is left alone, instead of becoming f([x]) automatically).
2084
2093
2085 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2094 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2086 Ville's patch.
2095 Ville's patch.
2087
2096
2088 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2097 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2089
2098
2090 * IPython/iplib.py (handle_auto): changed autocall semantics to
2099 * IPython/iplib.py (handle_auto): changed autocall semantics to
2091 include 'smart' mode, where the autocall transformation is NOT
2100 include 'smart' mode, where the autocall transformation is NOT
2092 applied if there are no arguments on the line. This allows you to
2101 applied if there are no arguments on the line. This allows you to
2093 just type 'foo' if foo is a callable to see its internal form,
2102 just type 'foo' if foo is a callable to see its internal form,
2094 instead of having it called with no arguments (typically a
2103 instead of having it called with no arguments (typically a
2095 mistake). The old 'full' autocall still exists: for that, you
2104 mistake). The old 'full' autocall still exists: for that, you
2096 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2105 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2097
2106
2098 * IPython/completer.py (Completer.attr_matches): add
2107 * IPython/completer.py (Completer.attr_matches): add
2099 tab-completion support for Enthoughts' traits. After a report by
2108 tab-completion support for Enthoughts' traits. After a report by
2100 Arnd and a patch by Prabhu.
2109 Arnd and a patch by Prabhu.
2101
2110
2102 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2111 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2103
2112
2104 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2113 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2105 Schmolck's patch to fix inspect.getinnerframes().
2114 Schmolck's patch to fix inspect.getinnerframes().
2106
2115
2107 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2116 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2108 for embedded instances, regarding handling of namespaces and items
2117 for embedded instances, regarding handling of namespaces and items
2109 added to the __builtin__ one. Multiple embedded instances and
2118 added to the __builtin__ one. Multiple embedded instances and
2110 recursive embeddings should work better now (though I'm not sure
2119 recursive embeddings should work better now (though I'm not sure
2111 I've got all the corner cases fixed, that code is a bit of a brain
2120 I've got all the corner cases fixed, that code is a bit of a brain
2112 twister).
2121 twister).
2113
2122
2114 * IPython/Magic.py (magic_edit): added support to edit in-memory
2123 * IPython/Magic.py (magic_edit): added support to edit in-memory
2115 macros (automatically creates the necessary temp files). %edit
2124 macros (automatically creates the necessary temp files). %edit
2116 also doesn't return the file contents anymore, it's just noise.
2125 also doesn't return the file contents anymore, it's just noise.
2117
2126
2118 * IPython/completer.py (Completer.attr_matches): revert change to
2127 * IPython/completer.py (Completer.attr_matches): revert change to
2119 complete only on attributes listed in __all__. I realized it
2128 complete only on attributes listed in __all__. I realized it
2120 cripples the tab-completion system as a tool for exploring the
2129 cripples the tab-completion system as a tool for exploring the
2121 internals of unknown libraries (it renders any non-__all__
2130 internals of unknown libraries (it renders any non-__all__
2122 attribute off-limits). I got bit by this when trying to see
2131 attribute off-limits). I got bit by this when trying to see
2123 something inside the dis module.
2132 something inside the dis module.
2124
2133
2125 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2134 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2126
2135
2127 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2136 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2128 namespace for users and extension writers to hold data in. This
2137 namespace for users and extension writers to hold data in. This
2129 follows the discussion in
2138 follows the discussion in
2130 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2139 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2131
2140
2132 * IPython/completer.py (IPCompleter.complete): small patch to help
2141 * IPython/completer.py (IPCompleter.complete): small patch to help
2133 tab-completion under Emacs, after a suggestion by John Barnard
2142 tab-completion under Emacs, after a suggestion by John Barnard
2134 <barnarj-AT-ccf.org>.
2143 <barnarj-AT-ccf.org>.
2135
2144
2136 * IPython/Magic.py (Magic.extract_input_slices): added support for
2145 * IPython/Magic.py (Magic.extract_input_slices): added support for
2137 the slice notation in magics to use N-M to represent numbers N...M
2146 the slice notation in magics to use N-M to represent numbers N...M
2138 (closed endpoints). This is used by %macro and %save.
2147 (closed endpoints). This is used by %macro and %save.
2139
2148
2140 * IPython/completer.py (Completer.attr_matches): for modules which
2149 * IPython/completer.py (Completer.attr_matches): for modules which
2141 define __all__, complete only on those. After a patch by Jeffrey
2150 define __all__, complete only on those. After a patch by Jeffrey
2142 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2151 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2143 speed up this routine.
2152 speed up this routine.
2144
2153
2145 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2154 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2146 don't know if this is the end of it, but the behavior now is
2155 don't know if this is the end of it, but the behavior now is
2147 certainly much more correct. Note that coupled with macros,
2156 certainly much more correct. Note that coupled with macros,
2148 slightly surprising (at first) behavior may occur: a macro will in
2157 slightly surprising (at first) behavior may occur: a macro will in
2149 general expand to multiple lines of input, so upon exiting, the
2158 general expand to multiple lines of input, so upon exiting, the
2150 in/out counters will both be bumped by the corresponding amount
2159 in/out counters will both be bumped by the corresponding amount
2151 (as if the macro's contents had been typed interactively). Typing
2160 (as if the macro's contents had been typed interactively). Typing
2152 %hist will reveal the intermediate (silently processed) lines.
2161 %hist will reveal the intermediate (silently processed) lines.
2153
2162
2154 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2163 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2155 pickle to fail (%run was overwriting __main__ and not restoring
2164 pickle to fail (%run was overwriting __main__ and not restoring
2156 it, but pickle relies on __main__ to operate).
2165 it, but pickle relies on __main__ to operate).
2157
2166
2158 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2167 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2159 using properties, but forgot to make the main InteractiveShell
2168 using properties, but forgot to make the main InteractiveShell
2160 class a new-style class. Properties fail silently, and
2169 class a new-style class. Properties fail silently, and
2161 mysteriously, with old-style class (getters work, but
2170 mysteriously, with old-style class (getters work, but
2162 setters don't do anything).
2171 setters don't do anything).
2163
2172
2164 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2173 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2165
2174
2166 * IPython/Magic.py (magic_history): fix history reporting bug (I
2175 * IPython/Magic.py (magic_history): fix history reporting bug (I
2167 know some nasties are still there, I just can't seem to find a
2176 know some nasties are still there, I just can't seem to find a
2168 reproducible test case to track them down; the input history is
2177 reproducible test case to track them down; the input history is
2169 falling out of sync...)
2178 falling out of sync...)
2170
2179
2171 * IPython/iplib.py (handle_shell_escape): fix bug where both
2180 * IPython/iplib.py (handle_shell_escape): fix bug where both
2172 aliases and system accesses where broken for indented code (such
2181 aliases and system accesses where broken for indented code (such
2173 as loops).
2182 as loops).
2174
2183
2175 * IPython/genutils.py (shell): fix small but critical bug for
2184 * IPython/genutils.py (shell): fix small but critical bug for
2176 win32 system access.
2185 win32 system access.
2177
2186
2178 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2187 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2179
2188
2180 * IPython/iplib.py (showtraceback): remove use of the
2189 * IPython/iplib.py (showtraceback): remove use of the
2181 sys.last_{type/value/traceback} structures, which are non
2190 sys.last_{type/value/traceback} structures, which are non
2182 thread-safe.
2191 thread-safe.
2183 (_prefilter): change control flow to ensure that we NEVER
2192 (_prefilter): change control flow to ensure that we NEVER
2184 introspect objects when autocall is off. This will guarantee that
2193 introspect objects when autocall is off. This will guarantee that
2185 having an input line of the form 'x.y', where access to attribute
2194 having an input line of the form 'x.y', where access to attribute
2186 'y' has side effects, doesn't trigger the side effect TWICE. It
2195 'y' has side effects, doesn't trigger the side effect TWICE. It
2187 is important to note that, with autocall on, these side effects
2196 is important to note that, with autocall on, these side effects
2188 can still happen.
2197 can still happen.
2189 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2198 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2190 trio. IPython offers these three kinds of special calls which are
2199 trio. IPython offers these three kinds of special calls which are
2191 not python code, and it's a good thing to have their call method
2200 not python code, and it's a good thing to have their call method
2192 be accessible as pure python functions (not just special syntax at
2201 be accessible as pure python functions (not just special syntax at
2193 the command line). It gives us a better internal implementation
2202 the command line). It gives us a better internal implementation
2194 structure, as well as exposing these for user scripting more
2203 structure, as well as exposing these for user scripting more
2195 cleanly.
2204 cleanly.
2196
2205
2197 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2206 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2198 file. Now that they'll be more likely to be used with the
2207 file. Now that they'll be more likely to be used with the
2199 persistance system (%store), I want to make sure their module path
2208 persistance system (%store), I want to make sure their module path
2200 doesn't change in the future, so that we don't break things for
2209 doesn't change in the future, so that we don't break things for
2201 users' persisted data.
2210 users' persisted data.
2202
2211
2203 * IPython/iplib.py (autoindent_update): move indentation
2212 * IPython/iplib.py (autoindent_update): move indentation
2204 management into the _text_ processing loop, not the keyboard
2213 management into the _text_ processing loop, not the keyboard
2205 interactive one. This is necessary to correctly process non-typed
2214 interactive one. This is necessary to correctly process non-typed
2206 multiline input (such as macros).
2215 multiline input (such as macros).
2207
2216
2208 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2217 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2209 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2218 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2210 which was producing problems in the resulting manual.
2219 which was producing problems in the resulting manual.
2211 (magic_whos): improve reporting of instances (show their class,
2220 (magic_whos): improve reporting of instances (show their class,
2212 instead of simply printing 'instance' which isn't terribly
2221 instead of simply printing 'instance' which isn't terribly
2213 informative).
2222 informative).
2214
2223
2215 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2224 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2216 (minor mods) to support network shares under win32.
2225 (minor mods) to support network shares under win32.
2217
2226
2218 * IPython/winconsole.py (get_console_size): add new winconsole
2227 * IPython/winconsole.py (get_console_size): add new winconsole
2219 module and fixes to page_dumb() to improve its behavior under
2228 module and fixes to page_dumb() to improve its behavior under
2220 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2229 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2221
2230
2222 * IPython/Magic.py (Macro): simplified Macro class to just
2231 * IPython/Magic.py (Macro): simplified Macro class to just
2223 subclass list. We've had only 2.2 compatibility for a very long
2232 subclass list. We've had only 2.2 compatibility for a very long
2224 time, yet I was still avoiding subclassing the builtin types. No
2233 time, yet I was still avoiding subclassing the builtin types. No
2225 more (I'm also starting to use properties, though I won't shift to
2234 more (I'm also starting to use properties, though I won't shift to
2226 2.3-specific features quite yet).
2235 2.3-specific features quite yet).
2227 (magic_store): added Ville's patch for lightweight variable
2236 (magic_store): added Ville's patch for lightweight variable
2228 persistence, after a request on the user list by Matt Wilkie
2237 persistence, after a request on the user list by Matt Wilkie
2229 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2238 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2230 details.
2239 details.
2231
2240
2232 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2241 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2233 changed the default logfile name from 'ipython.log' to
2242 changed the default logfile name from 'ipython.log' to
2234 'ipython_log.py'. These logs are real python files, and now that
2243 'ipython_log.py'. These logs are real python files, and now that
2235 we have much better multiline support, people are more likely to
2244 we have much better multiline support, people are more likely to
2236 want to use them as such. Might as well name them correctly.
2245 want to use them as such. Might as well name them correctly.
2237
2246
2238 * IPython/Magic.py: substantial cleanup. While we can't stop
2247 * IPython/Magic.py: substantial cleanup. While we can't stop
2239 using magics as mixins, due to the existing customizations 'out
2248 using magics as mixins, due to the existing customizations 'out
2240 there' which rely on the mixin naming conventions, at least I
2249 there' which rely on the mixin naming conventions, at least I
2241 cleaned out all cross-class name usage. So once we are OK with
2250 cleaned out all cross-class name usage. So once we are OK with
2242 breaking compatibility, the two systems can be separated.
2251 breaking compatibility, the two systems can be separated.
2243
2252
2244 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2253 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2245 anymore, and the class is a fair bit less hideous as well. New
2254 anymore, and the class is a fair bit less hideous as well. New
2246 features were also introduced: timestamping of input, and logging
2255 features were also introduced: timestamping of input, and logging
2247 of output results. These are user-visible with the -t and -o
2256 of output results. These are user-visible with the -t and -o
2248 options to %logstart. Closes
2257 options to %logstart. Closes
2249 http://www.scipy.net/roundup/ipython/issue11 and a request by
2258 http://www.scipy.net/roundup/ipython/issue11 and a request by
2250 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2259 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2251
2260
2252 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2261 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2253
2262
2254 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2263 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2255 better handle backslashes in paths. See the thread 'More Windows
2264 better handle backslashes in paths. See the thread 'More Windows
2256 questions part 2 - \/ characters revisited' on the iypthon user
2265 questions part 2 - \/ characters revisited' on the iypthon user
2257 list:
2266 list:
2258 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2267 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2259
2268
2260 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2269 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2261
2270
2262 (InteractiveShell.__init__): change threaded shells to not use the
2271 (InteractiveShell.__init__): change threaded shells to not use the
2263 ipython crash handler. This was causing more problems than not,
2272 ipython crash handler. This was causing more problems than not,
2264 as exceptions in the main thread (GUI code, typically) would
2273 as exceptions in the main thread (GUI code, typically) would
2265 always show up as a 'crash', when they really weren't.
2274 always show up as a 'crash', when they really weren't.
2266
2275
2267 The colors and exception mode commands (%colors/%xmode) have been
2276 The colors and exception mode commands (%colors/%xmode) have been
2268 synchronized to also take this into account, so users can get
2277 synchronized to also take this into account, so users can get
2269 verbose exceptions for their threaded code as well. I also added
2278 verbose exceptions for their threaded code as well. I also added
2270 support for activating pdb inside this exception handler as well,
2279 support for activating pdb inside this exception handler as well,
2271 so now GUI authors can use IPython's enhanced pdb at runtime.
2280 so now GUI authors can use IPython's enhanced pdb at runtime.
2272
2281
2273 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2282 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2274 true by default, and add it to the shipped ipythonrc file. Since
2283 true by default, and add it to the shipped ipythonrc file. Since
2275 this asks the user before proceeding, I think it's OK to make it
2284 this asks the user before proceeding, I think it's OK to make it
2276 true by default.
2285 true by default.
2277
2286
2278 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2287 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2279 of the previous special-casing of input in the eval loop. I think
2288 of the previous special-casing of input in the eval loop. I think
2280 this is cleaner, as they really are commands and shouldn't have
2289 this is cleaner, as they really are commands and shouldn't have
2281 a special role in the middle of the core code.
2290 a special role in the middle of the core code.
2282
2291
2283 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2292 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2284
2293
2285 * IPython/iplib.py (edit_syntax_error): added support for
2294 * IPython/iplib.py (edit_syntax_error): added support for
2286 automatically reopening the editor if the file had a syntax error
2295 automatically reopening the editor if the file had a syntax error
2287 in it. Thanks to scottt who provided the patch at:
2296 in it. Thanks to scottt who provided the patch at:
2288 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2297 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2289 version committed).
2298 version committed).
2290
2299
2291 * IPython/iplib.py (handle_normal): add suport for multi-line
2300 * IPython/iplib.py (handle_normal): add suport for multi-line
2292 input with emtpy lines. This fixes
2301 input with emtpy lines. This fixes
2293 http://www.scipy.net/roundup/ipython/issue43 and a similar
2302 http://www.scipy.net/roundup/ipython/issue43 and a similar
2294 discussion on the user list.
2303 discussion on the user list.
2295
2304
2296 WARNING: a behavior change is necessarily introduced to support
2305 WARNING: a behavior change is necessarily introduced to support
2297 blank lines: now a single blank line with whitespace does NOT
2306 blank lines: now a single blank line with whitespace does NOT
2298 break the input loop, which means that when autoindent is on, by
2307 break the input loop, which means that when autoindent is on, by
2299 default hitting return on the next (indented) line does NOT exit.
2308 default hitting return on the next (indented) line does NOT exit.
2300
2309
2301 Instead, to exit a multiline input you can either have:
2310 Instead, to exit a multiline input you can either have:
2302
2311
2303 - TWO whitespace lines (just hit return again), or
2312 - TWO whitespace lines (just hit return again), or
2304 - a single whitespace line of a different length than provided
2313 - a single whitespace line of a different length than provided
2305 by the autoindent (add or remove a space).
2314 by the autoindent (add or remove a space).
2306
2315
2307 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2316 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2308 module to better organize all readline-related functionality.
2317 module to better organize all readline-related functionality.
2309 I've deleted FlexCompleter and put all completion clases here.
2318 I've deleted FlexCompleter and put all completion clases here.
2310
2319
2311 * IPython/iplib.py (raw_input): improve indentation management.
2320 * IPython/iplib.py (raw_input): improve indentation management.
2312 It is now possible to paste indented code with autoindent on, and
2321 It is now possible to paste indented code with autoindent on, and
2313 the code is interpreted correctly (though it still looks bad on
2322 the code is interpreted correctly (though it still looks bad on
2314 screen, due to the line-oriented nature of ipython).
2323 screen, due to the line-oriented nature of ipython).
2315 (MagicCompleter.complete): change behavior so that a TAB key on an
2324 (MagicCompleter.complete): change behavior so that a TAB key on an
2316 otherwise empty line actually inserts a tab, instead of completing
2325 otherwise empty line actually inserts a tab, instead of completing
2317 on the entire global namespace. This makes it easier to use the
2326 on the entire global namespace. This makes it easier to use the
2318 TAB key for indentation. After a request by Hans Meine
2327 TAB key for indentation. After a request by Hans Meine
2319 <hans_meine-AT-gmx.net>
2328 <hans_meine-AT-gmx.net>
2320 (_prefilter): add support so that typing plain 'exit' or 'quit'
2329 (_prefilter): add support so that typing plain 'exit' or 'quit'
2321 does a sensible thing. Originally I tried to deviate as little as
2330 does a sensible thing. Originally I tried to deviate as little as
2322 possible from the default python behavior, but even that one may
2331 possible from the default python behavior, but even that one may
2323 change in this direction (thread on python-dev to that effect).
2332 change in this direction (thread on python-dev to that effect).
2324 Regardless, ipython should do the right thing even if CPython's
2333 Regardless, ipython should do the right thing even if CPython's
2325 '>>>' prompt doesn't.
2334 '>>>' prompt doesn't.
2326 (InteractiveShell): removed subclassing code.InteractiveConsole
2335 (InteractiveShell): removed subclassing code.InteractiveConsole
2327 class. By now we'd overridden just about all of its methods: I've
2336 class. By now we'd overridden just about all of its methods: I've
2328 copied the remaining two over, and now ipython is a standalone
2337 copied the remaining two over, and now ipython is a standalone
2329 class. This will provide a clearer picture for the chainsaw
2338 class. This will provide a clearer picture for the chainsaw
2330 branch refactoring.
2339 branch refactoring.
2331
2340
2332 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2341 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2333
2342
2334 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2343 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2335 failures for objects which break when dir() is called on them.
2344 failures for objects which break when dir() is called on them.
2336
2345
2337 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2346 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2338 distinct local and global namespaces in the completer API. This
2347 distinct local and global namespaces in the completer API. This
2339 change allows us to properly handle completion with distinct
2348 change allows us to properly handle completion with distinct
2340 scopes, including in embedded instances (this had never really
2349 scopes, including in embedded instances (this had never really
2341 worked correctly).
2350 worked correctly).
2342
2351
2343 Note: this introduces a change in the constructor for
2352 Note: this introduces a change in the constructor for
2344 MagicCompleter, as a new global_namespace parameter is now the
2353 MagicCompleter, as a new global_namespace parameter is now the
2345 second argument (the others were bumped one position).
2354 second argument (the others were bumped one position).
2346
2355
2347 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2356 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2348
2357
2349 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2358 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2350 embedded instances (which can be done now thanks to Vivian's
2359 embedded instances (which can be done now thanks to Vivian's
2351 frame-handling fixes for pdb).
2360 frame-handling fixes for pdb).
2352 (InteractiveShell.__init__): Fix namespace handling problem in
2361 (InteractiveShell.__init__): Fix namespace handling problem in
2353 embedded instances. We were overwriting __main__ unconditionally,
2362 embedded instances. We were overwriting __main__ unconditionally,
2354 and this should only be done for 'full' (non-embedded) IPython;
2363 and this should only be done for 'full' (non-embedded) IPython;
2355 embedded instances must respect the caller's __main__. Thanks to
2364 embedded instances must respect the caller's __main__. Thanks to
2356 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2365 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2357
2366
2358 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2367 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2359
2368
2360 * setup.py: added download_url to setup(). This registers the
2369 * setup.py: added download_url to setup(). This registers the
2361 download address at PyPI, which is not only useful to humans
2370 download address at PyPI, which is not only useful to humans
2362 browsing the site, but is also picked up by setuptools (the Eggs
2371 browsing the site, but is also picked up by setuptools (the Eggs
2363 machinery). Thanks to Ville and R. Kern for the info/discussion
2372 machinery). Thanks to Ville and R. Kern for the info/discussion
2364 on this.
2373 on this.
2365
2374
2366 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2375 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2367
2376
2368 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2377 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2369 This brings a lot of nice functionality to the pdb mode, which now
2378 This brings a lot of nice functionality to the pdb mode, which now
2370 has tab-completion, syntax highlighting, and better stack handling
2379 has tab-completion, syntax highlighting, and better stack handling
2371 than before. Many thanks to Vivian De Smedt
2380 than before. Many thanks to Vivian De Smedt
2372 <vivian-AT-vdesmedt.com> for the original patches.
2381 <vivian-AT-vdesmedt.com> for the original patches.
2373
2382
2374 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2383 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2375
2384
2376 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2385 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2377 sequence to consistently accept the banner argument. The
2386 sequence to consistently accept the banner argument. The
2378 inconsistency was tripping SAGE, thanks to Gary Zablackis
2387 inconsistency was tripping SAGE, thanks to Gary Zablackis
2379 <gzabl-AT-yahoo.com> for the report.
2388 <gzabl-AT-yahoo.com> for the report.
2380
2389
2381 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2390 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2382
2391
2383 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2392 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2384 Fix bug where a naked 'alias' call in the ipythonrc file would
2393 Fix bug where a naked 'alias' call in the ipythonrc file would
2385 cause a crash. Bug reported by Jorgen Stenarson.
2394 cause a crash. Bug reported by Jorgen Stenarson.
2386
2395
2387 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2396 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2388
2397
2389 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2398 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2390 startup time.
2399 startup time.
2391
2400
2392 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2401 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2393 instances had introduced a bug with globals in normal code. Now
2402 instances had introduced a bug with globals in normal code. Now
2394 it's working in all cases.
2403 it's working in all cases.
2395
2404
2396 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2405 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2397 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2406 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2398 has been introduced to set the default case sensitivity of the
2407 has been introduced to set the default case sensitivity of the
2399 searches. Users can still select either mode at runtime on a
2408 searches. Users can still select either mode at runtime on a
2400 per-search basis.
2409 per-search basis.
2401
2410
2402 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2411 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2403
2412
2404 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2413 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2405 attributes in wildcard searches for subclasses. Modified version
2414 attributes in wildcard searches for subclasses. Modified version
2406 of a patch by Jorgen.
2415 of a patch by Jorgen.
2407
2416
2408 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2417 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2409
2418
2410 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2419 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2411 embedded instances. I added a user_global_ns attribute to the
2420 embedded instances. I added a user_global_ns attribute to the
2412 InteractiveShell class to handle this.
2421 InteractiveShell class to handle this.
2413
2422
2414 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2423 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2415
2424
2416 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2425 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2417 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2426 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2418 (reported under win32, but may happen also in other platforms).
2427 (reported under win32, but may happen also in other platforms).
2419 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2428 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2420
2429
2421 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2430 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2422
2431
2423 * IPython/Magic.py (magic_psearch): new support for wildcard
2432 * IPython/Magic.py (magic_psearch): new support for wildcard
2424 patterns. Now, typing ?a*b will list all names which begin with a
2433 patterns. Now, typing ?a*b will list all names which begin with a
2425 and end in b, for example. The %psearch magic has full
2434 and end in b, for example. The %psearch magic has full
2426 docstrings. Many thanks to JΓΆrgen Stenarson
2435 docstrings. Many thanks to JΓΆrgen Stenarson
2427 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2436 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2428 implementing this functionality.
2437 implementing this functionality.
2429
2438
2430 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2439 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2431
2440
2432 * Manual: fixed long-standing annoyance of double-dashes (as in
2441 * Manual: fixed long-standing annoyance of double-dashes (as in
2433 --prefix=~, for example) being stripped in the HTML version. This
2442 --prefix=~, for example) being stripped in the HTML version. This
2434 is a latex2html bug, but a workaround was provided. Many thanks
2443 is a latex2html bug, but a workaround was provided. Many thanks
2435 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2444 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2436 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2445 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2437 rolling. This seemingly small issue had tripped a number of users
2446 rolling. This seemingly small issue had tripped a number of users
2438 when first installing, so I'm glad to see it gone.
2447 when first installing, so I'm glad to see it gone.
2439
2448
2440 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2449 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2441
2450
2442 * IPython/Extensions/numeric_formats.py: fix missing import,
2451 * IPython/Extensions/numeric_formats.py: fix missing import,
2443 reported by Stephen Walton.
2452 reported by Stephen Walton.
2444
2453
2445 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2454 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2446
2455
2447 * IPython/demo.py: finish demo module, fully documented now.
2456 * IPython/demo.py: finish demo module, fully documented now.
2448
2457
2449 * IPython/genutils.py (file_read): simple little utility to read a
2458 * IPython/genutils.py (file_read): simple little utility to read a
2450 file and ensure it's closed afterwards.
2459 file and ensure it's closed afterwards.
2451
2460
2452 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2461 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2453
2462
2454 * IPython/demo.py (Demo.__init__): added support for individually
2463 * IPython/demo.py (Demo.__init__): added support for individually
2455 tagging blocks for automatic execution.
2464 tagging blocks for automatic execution.
2456
2465
2457 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2466 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2458 syntax-highlighted python sources, requested by John.
2467 syntax-highlighted python sources, requested by John.
2459
2468
2460 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2469 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2461
2470
2462 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2471 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2463 finishing.
2472 finishing.
2464
2473
2465 * IPython/genutils.py (shlex_split): moved from Magic to here,
2474 * IPython/genutils.py (shlex_split): moved from Magic to here,
2466 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2475 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2467
2476
2468 * IPython/demo.py (Demo.__init__): added support for silent
2477 * IPython/demo.py (Demo.__init__): added support for silent
2469 blocks, improved marks as regexps, docstrings written.
2478 blocks, improved marks as regexps, docstrings written.
2470 (Demo.__init__): better docstring, added support for sys.argv.
2479 (Demo.__init__): better docstring, added support for sys.argv.
2471
2480
2472 * IPython/genutils.py (marquee): little utility used by the demo
2481 * IPython/genutils.py (marquee): little utility used by the demo
2473 code, handy in general.
2482 code, handy in general.
2474
2483
2475 * IPython/demo.py (Demo.__init__): new class for interactive
2484 * IPython/demo.py (Demo.__init__): new class for interactive
2476 demos. Not documented yet, I just wrote it in a hurry for
2485 demos. Not documented yet, I just wrote it in a hurry for
2477 scipy'05. Will docstring later.
2486 scipy'05. Will docstring later.
2478
2487
2479 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2488 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2480
2489
2481 * IPython/Shell.py (sigint_handler): Drastic simplification which
2490 * IPython/Shell.py (sigint_handler): Drastic simplification which
2482 also seems to make Ctrl-C work correctly across threads! This is
2491 also seems to make Ctrl-C work correctly across threads! This is
2483 so simple, that I can't beleive I'd missed it before. Needs more
2492 so simple, that I can't beleive I'd missed it before. Needs more
2484 testing, though.
2493 testing, though.
2485 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2494 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2486 like this before...
2495 like this before...
2487
2496
2488 * IPython/genutils.py (get_home_dir): add protection against
2497 * IPython/genutils.py (get_home_dir): add protection against
2489 non-dirs in win32 registry.
2498 non-dirs in win32 registry.
2490
2499
2491 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2500 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2492 bug where dict was mutated while iterating (pysh crash).
2501 bug where dict was mutated while iterating (pysh crash).
2493
2502
2494 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2503 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2495
2504
2496 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2505 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2497 spurious newlines added by this routine. After a report by
2506 spurious newlines added by this routine. After a report by
2498 F. Mantegazza.
2507 F. Mantegazza.
2499
2508
2500 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2509 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2501
2510
2502 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2511 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2503 calls. These were a leftover from the GTK 1.x days, and can cause
2512 calls. These were a leftover from the GTK 1.x days, and can cause
2504 problems in certain cases (after a report by John Hunter).
2513 problems in certain cases (after a report by John Hunter).
2505
2514
2506 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2515 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2507 os.getcwd() fails at init time. Thanks to patch from David Remahl
2516 os.getcwd() fails at init time. Thanks to patch from David Remahl
2508 <chmod007-AT-mac.com>.
2517 <chmod007-AT-mac.com>.
2509 (InteractiveShell.__init__): prevent certain special magics from
2518 (InteractiveShell.__init__): prevent certain special magics from
2510 being shadowed by aliases. Closes
2519 being shadowed by aliases. Closes
2511 http://www.scipy.net/roundup/ipython/issue41.
2520 http://www.scipy.net/roundup/ipython/issue41.
2512
2521
2513 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2522 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2514
2523
2515 * IPython/iplib.py (InteractiveShell.complete): Added new
2524 * IPython/iplib.py (InteractiveShell.complete): Added new
2516 top-level completion method to expose the completion mechanism
2525 top-level completion method to expose the completion mechanism
2517 beyond readline-based environments.
2526 beyond readline-based environments.
2518
2527
2519 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2528 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2520
2529
2521 * tools/ipsvnc (svnversion): fix svnversion capture.
2530 * tools/ipsvnc (svnversion): fix svnversion capture.
2522
2531
2523 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2532 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2524 attribute to self, which was missing. Before, it was set by a
2533 attribute to self, which was missing. Before, it was set by a
2525 routine which in certain cases wasn't being called, so the
2534 routine which in certain cases wasn't being called, so the
2526 instance could end up missing the attribute. This caused a crash.
2535 instance could end up missing the attribute. This caused a crash.
2527 Closes http://www.scipy.net/roundup/ipython/issue40.
2536 Closes http://www.scipy.net/roundup/ipython/issue40.
2528
2537
2529 2005-08-16 Fernando Perez <fperez@colorado.edu>
2538 2005-08-16 Fernando Perez <fperez@colorado.edu>
2530
2539
2531 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2540 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2532 contains non-string attribute. Closes
2541 contains non-string attribute. Closes
2533 http://www.scipy.net/roundup/ipython/issue38.
2542 http://www.scipy.net/roundup/ipython/issue38.
2534
2543
2535 2005-08-14 Fernando Perez <fperez@colorado.edu>
2544 2005-08-14 Fernando Perez <fperez@colorado.edu>
2536
2545
2537 * tools/ipsvnc: Minor improvements, to add changeset info.
2546 * tools/ipsvnc: Minor improvements, to add changeset info.
2538
2547
2539 2005-08-12 Fernando Perez <fperez@colorado.edu>
2548 2005-08-12 Fernando Perez <fperez@colorado.edu>
2540
2549
2541 * IPython/iplib.py (runsource): remove self.code_to_run_src
2550 * IPython/iplib.py (runsource): remove self.code_to_run_src
2542 attribute. I realized this is nothing more than
2551 attribute. I realized this is nothing more than
2543 '\n'.join(self.buffer), and having the same data in two different
2552 '\n'.join(self.buffer), and having the same data in two different
2544 places is just asking for synchronization bugs. This may impact
2553 places is just asking for synchronization bugs. This may impact
2545 people who have custom exception handlers, so I need to warn
2554 people who have custom exception handlers, so I need to warn
2546 ipython-dev about it (F. Mantegazza may use them).
2555 ipython-dev about it (F. Mantegazza may use them).
2547
2556
2548 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2557 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2549
2558
2550 * IPython/genutils.py: fix 2.2 compatibility (generators)
2559 * IPython/genutils.py: fix 2.2 compatibility (generators)
2551
2560
2552 2005-07-18 Fernando Perez <fperez@colorado.edu>
2561 2005-07-18 Fernando Perez <fperez@colorado.edu>
2553
2562
2554 * IPython/genutils.py (get_home_dir): fix to help users with
2563 * IPython/genutils.py (get_home_dir): fix to help users with
2555 invalid $HOME under win32.
2564 invalid $HOME under win32.
2556
2565
2557 2005-07-17 Fernando Perez <fperez@colorado.edu>
2566 2005-07-17 Fernando Perez <fperez@colorado.edu>
2558
2567
2559 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2568 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2560 some old hacks and clean up a bit other routines; code should be
2569 some old hacks and clean up a bit other routines; code should be
2561 simpler and a bit faster.
2570 simpler and a bit faster.
2562
2571
2563 * IPython/iplib.py (interact): removed some last-resort attempts
2572 * IPython/iplib.py (interact): removed some last-resort attempts
2564 to survive broken stdout/stderr. That code was only making it
2573 to survive broken stdout/stderr. That code was only making it
2565 harder to abstract out the i/o (necessary for gui integration),
2574 harder to abstract out the i/o (necessary for gui integration),
2566 and the crashes it could prevent were extremely rare in practice
2575 and the crashes it could prevent were extremely rare in practice
2567 (besides being fully user-induced in a pretty violent manner).
2576 (besides being fully user-induced in a pretty violent manner).
2568
2577
2569 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2578 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2570 Nothing major yet, but the code is simpler to read; this should
2579 Nothing major yet, but the code is simpler to read; this should
2571 make it easier to do more serious modifications in the future.
2580 make it easier to do more serious modifications in the future.
2572
2581
2573 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2582 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2574 which broke in .15 (thanks to a report by Ville).
2583 which broke in .15 (thanks to a report by Ville).
2575
2584
2576 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2585 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2577 be quite correct, I know next to nothing about unicode). This
2586 be quite correct, I know next to nothing about unicode). This
2578 will allow unicode strings to be used in prompts, amongst other
2587 will allow unicode strings to be used in prompts, amongst other
2579 cases. It also will prevent ipython from crashing when unicode
2588 cases. It also will prevent ipython from crashing when unicode
2580 shows up unexpectedly in many places. If ascii encoding fails, we
2589 shows up unexpectedly in many places. If ascii encoding fails, we
2581 assume utf_8. Currently the encoding is not a user-visible
2590 assume utf_8. Currently the encoding is not a user-visible
2582 setting, though it could be made so if there is demand for it.
2591 setting, though it could be made so if there is demand for it.
2583
2592
2584 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2593 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2585
2594
2586 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2595 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2587
2596
2588 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2597 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2589
2598
2590 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2599 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2591 code can work transparently for 2.2/2.3.
2600 code can work transparently for 2.2/2.3.
2592
2601
2593 2005-07-16 Fernando Perez <fperez@colorado.edu>
2602 2005-07-16 Fernando Perez <fperez@colorado.edu>
2594
2603
2595 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2604 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2596 out of the color scheme table used for coloring exception
2605 out of the color scheme table used for coloring exception
2597 tracebacks. This allows user code to add new schemes at runtime.
2606 tracebacks. This allows user code to add new schemes at runtime.
2598 This is a minimally modified version of the patch at
2607 This is a minimally modified version of the patch at
2599 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2608 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2600 for the contribution.
2609 for the contribution.
2601
2610
2602 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2611 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2603 slightly modified version of the patch in
2612 slightly modified version of the patch in
2604 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2613 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2605 to remove the previous try/except solution (which was costlier).
2614 to remove the previous try/except solution (which was costlier).
2606 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2615 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2607
2616
2608 2005-06-08 Fernando Perez <fperez@colorado.edu>
2617 2005-06-08 Fernando Perez <fperez@colorado.edu>
2609
2618
2610 * IPython/iplib.py (write/write_err): Add methods to abstract all
2619 * IPython/iplib.py (write/write_err): Add methods to abstract all
2611 I/O a bit more.
2620 I/O a bit more.
2612
2621
2613 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2622 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2614 warning, reported by Aric Hagberg, fix by JD Hunter.
2623 warning, reported by Aric Hagberg, fix by JD Hunter.
2615
2624
2616 2005-06-02 *** Released version 0.6.15
2625 2005-06-02 *** Released version 0.6.15
2617
2626
2618 2005-06-01 Fernando Perez <fperez@colorado.edu>
2627 2005-06-01 Fernando Perez <fperez@colorado.edu>
2619
2628
2620 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2629 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2621 tab-completion of filenames within open-quoted strings. Note that
2630 tab-completion of filenames within open-quoted strings. Note that
2622 this requires that in ~/.ipython/ipythonrc, users change the
2631 this requires that in ~/.ipython/ipythonrc, users change the
2623 readline delimiters configuration to read:
2632 readline delimiters configuration to read:
2624
2633
2625 readline_remove_delims -/~
2634 readline_remove_delims -/~
2626
2635
2627
2636
2628 2005-05-31 *** Released version 0.6.14
2637 2005-05-31 *** Released version 0.6.14
2629
2638
2630 2005-05-29 Fernando Perez <fperez@colorado.edu>
2639 2005-05-29 Fernando Perez <fperez@colorado.edu>
2631
2640
2632 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2641 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2633 with files not on the filesystem. Reported by Eliyahu Sandler
2642 with files not on the filesystem. Reported by Eliyahu Sandler
2634 <eli@gondolin.net>
2643 <eli@gondolin.net>
2635
2644
2636 2005-05-22 Fernando Perez <fperez@colorado.edu>
2645 2005-05-22 Fernando Perez <fperez@colorado.edu>
2637
2646
2638 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2647 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2639 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2648 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2640
2649
2641 2005-05-19 Fernando Perez <fperez@colorado.edu>
2650 2005-05-19 Fernando Perez <fperez@colorado.edu>
2642
2651
2643 * IPython/iplib.py (safe_execfile): close a file which could be
2652 * IPython/iplib.py (safe_execfile): close a file which could be
2644 left open (causing problems in win32, which locks open files).
2653 left open (causing problems in win32, which locks open files).
2645 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2654 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2646
2655
2647 2005-05-18 Fernando Perez <fperez@colorado.edu>
2656 2005-05-18 Fernando Perez <fperez@colorado.edu>
2648
2657
2649 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2658 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2650 keyword arguments correctly to safe_execfile().
2659 keyword arguments correctly to safe_execfile().
2651
2660
2652 2005-05-13 Fernando Perez <fperez@colorado.edu>
2661 2005-05-13 Fernando Perez <fperez@colorado.edu>
2653
2662
2654 * ipython.1: Added info about Qt to manpage, and threads warning
2663 * ipython.1: Added info about Qt to manpage, and threads warning
2655 to usage page (invoked with --help).
2664 to usage page (invoked with --help).
2656
2665
2657 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2666 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2658 new matcher (it goes at the end of the priority list) to do
2667 new matcher (it goes at the end of the priority list) to do
2659 tab-completion on named function arguments. Submitted by George
2668 tab-completion on named function arguments. Submitted by George
2660 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2669 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2661 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2670 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2662 for more details.
2671 for more details.
2663
2672
2664 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2673 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2665 SystemExit exceptions in the script being run. Thanks to a report
2674 SystemExit exceptions in the script being run. Thanks to a report
2666 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2675 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2667 producing very annoying behavior when running unit tests.
2676 producing very annoying behavior when running unit tests.
2668
2677
2669 2005-05-12 Fernando Perez <fperez@colorado.edu>
2678 2005-05-12 Fernando Perez <fperez@colorado.edu>
2670
2679
2671 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2680 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2672 which I'd broken (again) due to a changed regexp. In the process,
2681 which I'd broken (again) due to a changed regexp. In the process,
2673 added ';' as an escape to auto-quote the whole line without
2682 added ';' as an escape to auto-quote the whole line without
2674 splitting its arguments. Thanks to a report by Jerry McRae
2683 splitting its arguments. Thanks to a report by Jerry McRae
2675 <qrs0xyc02-AT-sneakemail.com>.
2684 <qrs0xyc02-AT-sneakemail.com>.
2676
2685
2677 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2686 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2678 possible crashes caused by a TokenError. Reported by Ed Schofield
2687 possible crashes caused by a TokenError. Reported by Ed Schofield
2679 <schofield-AT-ftw.at>.
2688 <schofield-AT-ftw.at>.
2680
2689
2681 2005-05-06 Fernando Perez <fperez@colorado.edu>
2690 2005-05-06 Fernando Perez <fperez@colorado.edu>
2682
2691
2683 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2692 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2684
2693
2685 2005-04-29 Fernando Perez <fperez@colorado.edu>
2694 2005-04-29 Fernando Perez <fperez@colorado.edu>
2686
2695
2687 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2696 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2688 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2697 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2689 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2698 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2690 which provides support for Qt interactive usage (similar to the
2699 which provides support for Qt interactive usage (similar to the
2691 existing one for WX and GTK). This had been often requested.
2700 existing one for WX and GTK). This had been often requested.
2692
2701
2693 2005-04-14 *** Released version 0.6.13
2702 2005-04-14 *** Released version 0.6.13
2694
2703
2695 2005-04-08 Fernando Perez <fperez@colorado.edu>
2704 2005-04-08 Fernando Perez <fperez@colorado.edu>
2696
2705
2697 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2706 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2698 from _ofind, which gets called on almost every input line. Now,
2707 from _ofind, which gets called on almost every input line. Now,
2699 we only try to get docstrings if they are actually going to be
2708 we only try to get docstrings if they are actually going to be
2700 used (the overhead of fetching unnecessary docstrings can be
2709 used (the overhead of fetching unnecessary docstrings can be
2701 noticeable for certain objects, such as Pyro proxies).
2710 noticeable for certain objects, such as Pyro proxies).
2702
2711
2703 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2712 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2704 for completers. For some reason I had been passing them the state
2713 for completers. For some reason I had been passing them the state
2705 variable, which completers never actually need, and was in
2714 variable, which completers never actually need, and was in
2706 conflict with the rlcompleter API. Custom completers ONLY need to
2715 conflict with the rlcompleter API. Custom completers ONLY need to
2707 take the text parameter.
2716 take the text parameter.
2708
2717
2709 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2718 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2710 work correctly in pysh. I've also moved all the logic which used
2719 work correctly in pysh. I've also moved all the logic which used
2711 to be in pysh.py here, which will prevent problems with future
2720 to be in pysh.py here, which will prevent problems with future
2712 upgrades. However, this time I must warn users to update their
2721 upgrades. However, this time I must warn users to update their
2713 pysh profile to include the line
2722 pysh profile to include the line
2714
2723
2715 import_all IPython.Extensions.InterpreterExec
2724 import_all IPython.Extensions.InterpreterExec
2716
2725
2717 because otherwise things won't work for them. They MUST also
2726 because otherwise things won't work for them. They MUST also
2718 delete pysh.py and the line
2727 delete pysh.py and the line
2719
2728
2720 execfile pysh.py
2729 execfile pysh.py
2721
2730
2722 from their ipythonrc-pysh.
2731 from their ipythonrc-pysh.
2723
2732
2724 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2733 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2725 robust in the face of objects whose dir() returns non-strings
2734 robust in the face of objects whose dir() returns non-strings
2726 (which it shouldn't, but some broken libs like ITK do). Thanks to
2735 (which it shouldn't, but some broken libs like ITK do). Thanks to
2727 a patch by John Hunter (implemented differently, though). Also
2736 a patch by John Hunter (implemented differently, though). Also
2728 minor improvements by using .extend instead of + on lists.
2737 minor improvements by using .extend instead of + on lists.
2729
2738
2730 * pysh.py:
2739 * pysh.py:
2731
2740
2732 2005-04-06 Fernando Perez <fperez@colorado.edu>
2741 2005-04-06 Fernando Perez <fperez@colorado.edu>
2733
2742
2734 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2743 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2735 by default, so that all users benefit from it. Those who don't
2744 by default, so that all users benefit from it. Those who don't
2736 want it can still turn it off.
2745 want it can still turn it off.
2737
2746
2738 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2747 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2739 config file, I'd forgotten about this, so users were getting it
2748 config file, I'd forgotten about this, so users were getting it
2740 off by default.
2749 off by default.
2741
2750
2742 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2751 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2743 consistency. Now magics can be called in multiline statements,
2752 consistency. Now magics can be called in multiline statements,
2744 and python variables can be expanded in magic calls via $var.
2753 and python variables can be expanded in magic calls via $var.
2745 This makes the magic system behave just like aliases or !system
2754 This makes the magic system behave just like aliases or !system
2746 calls.
2755 calls.
2747
2756
2748 2005-03-28 Fernando Perez <fperez@colorado.edu>
2757 2005-03-28 Fernando Perez <fperez@colorado.edu>
2749
2758
2750 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2759 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2751 expensive string additions for building command. Add support for
2760 expensive string additions for building command. Add support for
2752 trailing ';' when autocall is used.
2761 trailing ';' when autocall is used.
2753
2762
2754 2005-03-26 Fernando Perez <fperez@colorado.edu>
2763 2005-03-26 Fernando Perez <fperez@colorado.edu>
2755
2764
2756 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2765 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2757 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2766 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2758 ipython.el robust against prompts with any number of spaces
2767 ipython.el robust against prompts with any number of spaces
2759 (including 0) after the ':' character.
2768 (including 0) after the ':' character.
2760
2769
2761 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2770 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2762 continuation prompt, which misled users to think the line was
2771 continuation prompt, which misled users to think the line was
2763 already indented. Closes debian Bug#300847, reported to me by
2772 already indented. Closes debian Bug#300847, reported to me by
2764 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2773 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2765
2774
2766 2005-03-23 Fernando Perez <fperez@colorado.edu>
2775 2005-03-23 Fernando Perez <fperez@colorado.edu>
2767
2776
2768 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2777 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2769 properly aligned if they have embedded newlines.
2778 properly aligned if they have embedded newlines.
2770
2779
2771 * IPython/iplib.py (runlines): Add a public method to expose
2780 * IPython/iplib.py (runlines): Add a public method to expose
2772 IPython's code execution machinery, so that users can run strings
2781 IPython's code execution machinery, so that users can run strings
2773 as if they had been typed at the prompt interactively.
2782 as if they had been typed at the prompt interactively.
2774 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2783 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2775 methods which can call the system shell, but with python variable
2784 methods which can call the system shell, but with python variable
2776 expansion. The three such methods are: __IPYTHON__.system,
2785 expansion. The three such methods are: __IPYTHON__.system,
2777 .getoutput and .getoutputerror. These need to be documented in a
2786 .getoutput and .getoutputerror. These need to be documented in a
2778 'public API' section (to be written) of the manual.
2787 'public API' section (to be written) of the manual.
2779
2788
2780 2005-03-20 Fernando Perez <fperez@colorado.edu>
2789 2005-03-20 Fernando Perez <fperez@colorado.edu>
2781
2790
2782 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2791 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2783 for custom exception handling. This is quite powerful, and it
2792 for custom exception handling. This is quite powerful, and it
2784 allows for user-installable exception handlers which can trap
2793 allows for user-installable exception handlers which can trap
2785 custom exceptions at runtime and treat them separately from
2794 custom exceptions at runtime and treat them separately from
2786 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2795 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2787 Mantegazza <mantegazza-AT-ill.fr>.
2796 Mantegazza <mantegazza-AT-ill.fr>.
2788 (InteractiveShell.set_custom_completer): public API function to
2797 (InteractiveShell.set_custom_completer): public API function to
2789 add new completers at runtime.
2798 add new completers at runtime.
2790
2799
2791 2005-03-19 Fernando Perez <fperez@colorado.edu>
2800 2005-03-19 Fernando Perez <fperez@colorado.edu>
2792
2801
2793 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2802 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2794 allow objects which provide their docstrings via non-standard
2803 allow objects which provide their docstrings via non-standard
2795 mechanisms (like Pyro proxies) to still be inspected by ipython's
2804 mechanisms (like Pyro proxies) to still be inspected by ipython's
2796 ? system.
2805 ? system.
2797
2806
2798 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2807 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2799 automatic capture system. I tried quite hard to make it work
2808 automatic capture system. I tried quite hard to make it work
2800 reliably, and simply failed. I tried many combinations with the
2809 reliably, and simply failed. I tried many combinations with the
2801 subprocess module, but eventually nothing worked in all needed
2810 subprocess module, but eventually nothing worked in all needed
2802 cases (not blocking stdin for the child, duplicating stdout
2811 cases (not blocking stdin for the child, duplicating stdout
2803 without blocking, etc). The new %sc/%sx still do capture to these
2812 without blocking, etc). The new %sc/%sx still do capture to these
2804 magical list/string objects which make shell use much more
2813 magical list/string objects which make shell use much more
2805 conveninent, so not all is lost.
2814 conveninent, so not all is lost.
2806
2815
2807 XXX - FIX MANUAL for the change above!
2816 XXX - FIX MANUAL for the change above!
2808
2817
2809 (runsource): I copied code.py's runsource() into ipython to modify
2818 (runsource): I copied code.py's runsource() into ipython to modify
2810 it a bit. Now the code object and source to be executed are
2819 it a bit. Now the code object and source to be executed are
2811 stored in ipython. This makes this info accessible to third-party
2820 stored in ipython. This makes this info accessible to third-party
2812 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2821 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2813 Mantegazza <mantegazza-AT-ill.fr>.
2822 Mantegazza <mantegazza-AT-ill.fr>.
2814
2823
2815 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2824 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2816 history-search via readline (like C-p/C-n). I'd wanted this for a
2825 history-search via readline (like C-p/C-n). I'd wanted this for a
2817 long time, but only recently found out how to do it. For users
2826 long time, but only recently found out how to do it. For users
2818 who already have their ipythonrc files made and want this, just
2827 who already have their ipythonrc files made and want this, just
2819 add:
2828 add:
2820
2829
2821 readline_parse_and_bind "\e[A": history-search-backward
2830 readline_parse_and_bind "\e[A": history-search-backward
2822 readline_parse_and_bind "\e[B": history-search-forward
2831 readline_parse_and_bind "\e[B": history-search-forward
2823
2832
2824 2005-03-18 Fernando Perez <fperez@colorado.edu>
2833 2005-03-18 Fernando Perez <fperez@colorado.edu>
2825
2834
2826 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2835 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2827 LSString and SList classes which allow transparent conversions
2836 LSString and SList classes which allow transparent conversions
2828 between list mode and whitespace-separated string.
2837 between list mode and whitespace-separated string.
2829 (magic_r): Fix recursion problem in %r.
2838 (magic_r): Fix recursion problem in %r.
2830
2839
2831 * IPython/genutils.py (LSString): New class to be used for
2840 * IPython/genutils.py (LSString): New class to be used for
2832 automatic storage of the results of all alias/system calls in _o
2841 automatic storage of the results of all alias/system calls in _o
2833 and _e (stdout/err). These provide a .l/.list attribute which
2842 and _e (stdout/err). These provide a .l/.list attribute which
2834 does automatic splitting on newlines. This means that for most
2843 does automatic splitting on newlines. This means that for most
2835 uses, you'll never need to do capturing of output with %sc/%sx
2844 uses, you'll never need to do capturing of output with %sc/%sx
2836 anymore, since ipython keeps this always done for you. Note that
2845 anymore, since ipython keeps this always done for you. Note that
2837 only the LAST results are stored, the _o/e variables are
2846 only the LAST results are stored, the _o/e variables are
2838 overwritten on each call. If you need to save their contents
2847 overwritten on each call. If you need to save their contents
2839 further, simply bind them to any other name.
2848 further, simply bind them to any other name.
2840
2849
2841 2005-03-17 Fernando Perez <fperez@colorado.edu>
2850 2005-03-17 Fernando Perez <fperez@colorado.edu>
2842
2851
2843 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2852 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2844 prompt namespace handling.
2853 prompt namespace handling.
2845
2854
2846 2005-03-16 Fernando Perez <fperez@colorado.edu>
2855 2005-03-16 Fernando Perez <fperez@colorado.edu>
2847
2856
2848 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2857 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2849 classic prompts to be '>>> ' (final space was missing, and it
2858 classic prompts to be '>>> ' (final space was missing, and it
2850 trips the emacs python mode).
2859 trips the emacs python mode).
2851 (BasePrompt.__str__): Added safe support for dynamic prompt
2860 (BasePrompt.__str__): Added safe support for dynamic prompt
2852 strings. Now you can set your prompt string to be '$x', and the
2861 strings. Now you can set your prompt string to be '$x', and the
2853 value of x will be printed from your interactive namespace. The
2862 value of x will be printed from your interactive namespace. The
2854 interpolation syntax includes the full Itpl support, so
2863 interpolation syntax includes the full Itpl support, so
2855 ${foo()+x+bar()} is a valid prompt string now, and the function
2864 ${foo()+x+bar()} is a valid prompt string now, and the function
2856 calls will be made at runtime.
2865 calls will be made at runtime.
2857
2866
2858 2005-03-15 Fernando Perez <fperez@colorado.edu>
2867 2005-03-15 Fernando Perez <fperez@colorado.edu>
2859
2868
2860 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2869 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2861 avoid name clashes in pylab. %hist still works, it just forwards
2870 avoid name clashes in pylab. %hist still works, it just forwards
2862 the call to %history.
2871 the call to %history.
2863
2872
2864 2005-03-02 *** Released version 0.6.12
2873 2005-03-02 *** Released version 0.6.12
2865
2874
2866 2005-03-02 Fernando Perez <fperez@colorado.edu>
2875 2005-03-02 Fernando Perez <fperez@colorado.edu>
2867
2876
2868 * IPython/iplib.py (handle_magic): log magic calls properly as
2877 * IPython/iplib.py (handle_magic): log magic calls properly as
2869 ipmagic() function calls.
2878 ipmagic() function calls.
2870
2879
2871 * IPython/Magic.py (magic_time): Improved %time to support
2880 * IPython/Magic.py (magic_time): Improved %time to support
2872 statements and provide wall-clock as well as CPU time.
2881 statements and provide wall-clock as well as CPU time.
2873
2882
2874 2005-02-27 Fernando Perez <fperez@colorado.edu>
2883 2005-02-27 Fernando Perez <fperez@colorado.edu>
2875
2884
2876 * IPython/hooks.py: New hooks module, to expose user-modifiable
2885 * IPython/hooks.py: New hooks module, to expose user-modifiable
2877 IPython functionality in a clean manner. For now only the editor
2886 IPython functionality in a clean manner. For now only the editor
2878 hook is actually written, and other thigns which I intend to turn
2887 hook is actually written, and other thigns which I intend to turn
2879 into proper hooks aren't yet there. The display and prefilter
2888 into proper hooks aren't yet there. The display and prefilter
2880 stuff, for example, should be hooks. But at least now the
2889 stuff, for example, should be hooks. But at least now the
2881 framework is in place, and the rest can be moved here with more
2890 framework is in place, and the rest can be moved here with more
2882 time later. IPython had had a .hooks variable for a long time for
2891 time later. IPython had had a .hooks variable for a long time for
2883 this purpose, but I'd never actually used it for anything.
2892 this purpose, but I'd never actually used it for anything.
2884
2893
2885 2005-02-26 Fernando Perez <fperez@colorado.edu>
2894 2005-02-26 Fernando Perez <fperez@colorado.edu>
2886
2895
2887 * IPython/ipmaker.py (make_IPython): make the default ipython
2896 * IPython/ipmaker.py (make_IPython): make the default ipython
2888 directory be called _ipython under win32, to follow more the
2897 directory be called _ipython under win32, to follow more the
2889 naming peculiarities of that platform (where buggy software like
2898 naming peculiarities of that platform (where buggy software like
2890 Visual Sourcesafe breaks with .named directories). Reported by
2899 Visual Sourcesafe breaks with .named directories). Reported by
2891 Ville Vainio.
2900 Ville Vainio.
2892
2901
2893 2005-02-23 Fernando Perez <fperez@colorado.edu>
2902 2005-02-23 Fernando Perez <fperez@colorado.edu>
2894
2903
2895 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2904 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2896 auto_aliases for win32 which were causing problems. Users can
2905 auto_aliases for win32 which were causing problems. Users can
2897 define the ones they personally like.
2906 define the ones they personally like.
2898
2907
2899 2005-02-21 Fernando Perez <fperez@colorado.edu>
2908 2005-02-21 Fernando Perez <fperez@colorado.edu>
2900
2909
2901 * IPython/Magic.py (magic_time): new magic to time execution of
2910 * IPython/Magic.py (magic_time): new magic to time execution of
2902 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2911 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2903
2912
2904 2005-02-19 Fernando Perez <fperez@colorado.edu>
2913 2005-02-19 Fernando Perez <fperez@colorado.edu>
2905
2914
2906 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2915 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2907 into keys (for prompts, for example).
2916 into keys (for prompts, for example).
2908
2917
2909 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2918 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2910 prompts in case users want them. This introduces a small behavior
2919 prompts in case users want them. This introduces a small behavior
2911 change: ipython does not automatically add a space to all prompts
2920 change: ipython does not automatically add a space to all prompts
2912 anymore. To get the old prompts with a space, users should add it
2921 anymore. To get the old prompts with a space, users should add it
2913 manually to their ipythonrc file, so for example prompt_in1 should
2922 manually to their ipythonrc file, so for example prompt_in1 should
2914 now read 'In [\#]: ' instead of 'In [\#]:'.
2923 now read 'In [\#]: ' instead of 'In [\#]:'.
2915 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2924 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2916 file) to control left-padding of secondary prompts.
2925 file) to control left-padding of secondary prompts.
2917
2926
2918 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2927 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2919 the profiler can't be imported. Fix for Debian, which removed
2928 the profiler can't be imported. Fix for Debian, which removed
2920 profile.py because of License issues. I applied a slightly
2929 profile.py because of License issues. I applied a slightly
2921 modified version of the original Debian patch at
2930 modified version of the original Debian patch at
2922 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2931 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2923
2932
2924 2005-02-17 Fernando Perez <fperez@colorado.edu>
2933 2005-02-17 Fernando Perez <fperez@colorado.edu>
2925
2934
2926 * IPython/genutils.py (native_line_ends): Fix bug which would
2935 * IPython/genutils.py (native_line_ends): Fix bug which would
2927 cause improper line-ends under win32 b/c I was not opening files
2936 cause improper line-ends under win32 b/c I was not opening files
2928 in binary mode. Bug report and fix thanks to Ville.
2937 in binary mode. Bug report and fix thanks to Ville.
2929
2938
2930 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2939 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2931 trying to catch spurious foo[1] autocalls. My fix actually broke
2940 trying to catch spurious foo[1] autocalls. My fix actually broke
2932 ',/' autoquote/call with explicit escape (bad regexp).
2941 ',/' autoquote/call with explicit escape (bad regexp).
2933
2942
2934 2005-02-15 *** Released version 0.6.11
2943 2005-02-15 *** Released version 0.6.11
2935
2944
2936 2005-02-14 Fernando Perez <fperez@colorado.edu>
2945 2005-02-14 Fernando Perez <fperez@colorado.edu>
2937
2946
2938 * IPython/background_jobs.py: New background job management
2947 * IPython/background_jobs.py: New background job management
2939 subsystem. This is implemented via a new set of classes, and
2948 subsystem. This is implemented via a new set of classes, and
2940 IPython now provides a builtin 'jobs' object for background job
2949 IPython now provides a builtin 'jobs' object for background job
2941 execution. A convenience %bg magic serves as a lightweight
2950 execution. A convenience %bg magic serves as a lightweight
2942 frontend for starting the more common type of calls. This was
2951 frontend for starting the more common type of calls. This was
2943 inspired by discussions with B. Granger and the BackgroundCommand
2952 inspired by discussions with B. Granger and the BackgroundCommand
2944 class described in the book Python Scripting for Computational
2953 class described in the book Python Scripting for Computational
2945 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2954 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2946 (although ultimately no code from this text was used, as IPython's
2955 (although ultimately no code from this text was used, as IPython's
2947 system is a separate implementation).
2956 system is a separate implementation).
2948
2957
2949 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2958 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2950 to control the completion of single/double underscore names
2959 to control the completion of single/double underscore names
2951 separately. As documented in the example ipytonrc file, the
2960 separately. As documented in the example ipytonrc file, the
2952 readline_omit__names variable can now be set to 2, to omit even
2961 readline_omit__names variable can now be set to 2, to omit even
2953 single underscore names. Thanks to a patch by Brian Wong
2962 single underscore names. Thanks to a patch by Brian Wong
2954 <BrianWong-AT-AirgoNetworks.Com>.
2963 <BrianWong-AT-AirgoNetworks.Com>.
2955 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2964 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2956 be autocalled as foo([1]) if foo were callable. A problem for
2965 be autocalled as foo([1]) if foo were callable. A problem for
2957 things which are both callable and implement __getitem__.
2966 things which are both callable and implement __getitem__.
2958 (init_readline): Fix autoindentation for win32. Thanks to a patch
2967 (init_readline): Fix autoindentation for win32. Thanks to a patch
2959 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2968 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2960
2969
2961 2005-02-12 Fernando Perez <fperez@colorado.edu>
2970 2005-02-12 Fernando Perez <fperez@colorado.edu>
2962
2971
2963 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2972 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2964 which I had written long ago to sort out user error messages which
2973 which I had written long ago to sort out user error messages which
2965 may occur during startup. This seemed like a good idea initially,
2974 may occur during startup. This seemed like a good idea initially,
2966 but it has proven a disaster in retrospect. I don't want to
2975 but it has proven a disaster in retrospect. I don't want to
2967 change much code for now, so my fix is to set the internal 'debug'
2976 change much code for now, so my fix is to set the internal 'debug'
2968 flag to true everywhere, whose only job was precisely to control
2977 flag to true everywhere, whose only job was precisely to control
2969 this subsystem. This closes issue 28 (as well as avoiding all
2978 this subsystem. This closes issue 28 (as well as avoiding all
2970 sorts of strange hangups which occur from time to time).
2979 sorts of strange hangups which occur from time to time).
2971
2980
2972 2005-02-07 Fernando Perez <fperez@colorado.edu>
2981 2005-02-07 Fernando Perez <fperez@colorado.edu>
2973
2982
2974 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2983 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2975 previous call produced a syntax error.
2984 previous call produced a syntax error.
2976
2985
2977 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2986 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2978 classes without constructor.
2987 classes without constructor.
2979
2988
2980 2005-02-06 Fernando Perez <fperez@colorado.edu>
2989 2005-02-06 Fernando Perez <fperez@colorado.edu>
2981
2990
2982 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2991 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2983 completions with the results of each matcher, so we return results
2992 completions with the results of each matcher, so we return results
2984 to the user from all namespaces. This breaks with ipython
2993 to the user from all namespaces. This breaks with ipython
2985 tradition, but I think it's a nicer behavior. Now you get all
2994 tradition, but I think it's a nicer behavior. Now you get all
2986 possible completions listed, from all possible namespaces (python,
2995 possible completions listed, from all possible namespaces (python,
2987 filesystem, magics...) After a request by John Hunter
2996 filesystem, magics...) After a request by John Hunter
2988 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2997 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2989
2998
2990 2005-02-05 Fernando Perez <fperez@colorado.edu>
2999 2005-02-05 Fernando Perez <fperez@colorado.edu>
2991
3000
2992 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3001 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2993 the call had quote characters in it (the quotes were stripped).
3002 the call had quote characters in it (the quotes were stripped).
2994
3003
2995 2005-01-31 Fernando Perez <fperez@colorado.edu>
3004 2005-01-31 Fernando Perez <fperez@colorado.edu>
2996
3005
2997 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3006 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2998 Itpl.itpl() to make the code more robust against psyco
3007 Itpl.itpl() to make the code more robust against psyco
2999 optimizations.
3008 optimizations.
3000
3009
3001 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3010 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3002 of causing an exception. Quicker, cleaner.
3011 of causing an exception. Quicker, cleaner.
3003
3012
3004 2005-01-28 Fernando Perez <fperez@colorado.edu>
3013 2005-01-28 Fernando Perez <fperez@colorado.edu>
3005
3014
3006 * scripts/ipython_win_post_install.py (install): hardcode
3015 * scripts/ipython_win_post_install.py (install): hardcode
3007 sys.prefix+'python.exe' as the executable path. It turns out that
3016 sys.prefix+'python.exe' as the executable path. It turns out that
3008 during the post-installation run, sys.executable resolves to the
3017 during the post-installation run, sys.executable resolves to the
3009 name of the binary installer! I should report this as a distutils
3018 name of the binary installer! I should report this as a distutils
3010 bug, I think. I updated the .10 release with this tiny fix, to
3019 bug, I think. I updated the .10 release with this tiny fix, to
3011 avoid annoying the lists further.
3020 avoid annoying the lists further.
3012
3021
3013 2005-01-27 *** Released version 0.6.10
3022 2005-01-27 *** Released version 0.6.10
3014
3023
3015 2005-01-27 Fernando Perez <fperez@colorado.edu>
3024 2005-01-27 Fernando Perez <fperez@colorado.edu>
3016
3025
3017 * IPython/numutils.py (norm): Added 'inf' as optional name for
3026 * IPython/numutils.py (norm): Added 'inf' as optional name for
3018 L-infinity norm, included references to mathworld.com for vector
3027 L-infinity norm, included references to mathworld.com for vector
3019 norm definitions.
3028 norm definitions.
3020 (amin/amax): added amin/amax for array min/max. Similar to what
3029 (amin/amax): added amin/amax for array min/max. Similar to what
3021 pylab ships with after the recent reorganization of names.
3030 pylab ships with after the recent reorganization of names.
3022 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3031 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3023
3032
3024 * ipython.el: committed Alex's recent fixes and improvements.
3033 * ipython.el: committed Alex's recent fixes and improvements.
3025 Tested with python-mode from CVS, and it looks excellent. Since
3034 Tested with python-mode from CVS, and it looks excellent. Since
3026 python-mode hasn't released anything in a while, I'm temporarily
3035 python-mode hasn't released anything in a while, I'm temporarily
3027 putting a copy of today's CVS (v 4.70) of python-mode in:
3036 putting a copy of today's CVS (v 4.70) of python-mode in:
3028 http://ipython.scipy.org/tmp/python-mode.el
3037 http://ipython.scipy.org/tmp/python-mode.el
3029
3038
3030 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3039 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3031 sys.executable for the executable name, instead of assuming it's
3040 sys.executable for the executable name, instead of assuming it's
3032 called 'python.exe' (the post-installer would have produced broken
3041 called 'python.exe' (the post-installer would have produced broken
3033 setups on systems with a differently named python binary).
3042 setups on systems with a differently named python binary).
3034
3043
3035 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3044 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3036 references to os.linesep, to make the code more
3045 references to os.linesep, to make the code more
3037 platform-independent. This is also part of the win32 coloring
3046 platform-independent. This is also part of the win32 coloring
3038 fixes.
3047 fixes.
3039
3048
3040 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3049 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3041 lines, which actually cause coloring bugs because the length of
3050 lines, which actually cause coloring bugs because the length of
3042 the line is very difficult to correctly compute with embedded
3051 the line is very difficult to correctly compute with embedded
3043 escapes. This was the source of all the coloring problems under
3052 escapes. This was the source of all the coloring problems under
3044 Win32. I think that _finally_, Win32 users have a properly
3053 Win32. I think that _finally_, Win32 users have a properly
3045 working ipython in all respects. This would never have happened
3054 working ipython in all respects. This would never have happened
3046 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3055 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3047
3056
3048 2005-01-26 *** Released version 0.6.9
3057 2005-01-26 *** Released version 0.6.9
3049
3058
3050 2005-01-25 Fernando Perez <fperez@colorado.edu>
3059 2005-01-25 Fernando Perez <fperez@colorado.edu>
3051
3060
3052 * setup.py: finally, we have a true Windows installer, thanks to
3061 * setup.py: finally, we have a true Windows installer, thanks to
3053 the excellent work of Viktor Ransmayr
3062 the excellent work of Viktor Ransmayr
3054 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3063 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3055 Windows users. The setup routine is quite a bit cleaner thanks to
3064 Windows users. The setup routine is quite a bit cleaner thanks to
3056 this, and the post-install script uses the proper functions to
3065 this, and the post-install script uses the proper functions to
3057 allow a clean de-installation using the standard Windows Control
3066 allow a clean de-installation using the standard Windows Control
3058 Panel.
3067 Panel.
3059
3068
3060 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3069 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3061 environment variable under all OSes (including win32) if
3070 environment variable under all OSes (including win32) if
3062 available. This will give consistency to win32 users who have set
3071 available. This will give consistency to win32 users who have set
3063 this variable for any reason. If os.environ['HOME'] fails, the
3072 this variable for any reason. If os.environ['HOME'] fails, the
3064 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3073 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3065
3074
3066 2005-01-24 Fernando Perez <fperez@colorado.edu>
3075 2005-01-24 Fernando Perez <fperez@colorado.edu>
3067
3076
3068 * IPython/numutils.py (empty_like): add empty_like(), similar to
3077 * IPython/numutils.py (empty_like): add empty_like(), similar to
3069 zeros_like() but taking advantage of the new empty() Numeric routine.
3078 zeros_like() but taking advantage of the new empty() Numeric routine.
3070
3079
3071 2005-01-23 *** Released version 0.6.8
3080 2005-01-23 *** Released version 0.6.8
3072
3081
3073 2005-01-22 Fernando Perez <fperez@colorado.edu>
3082 2005-01-22 Fernando Perez <fperez@colorado.edu>
3074
3083
3075 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3084 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3076 automatic show() calls. After discussing things with JDH, it
3085 automatic show() calls. After discussing things with JDH, it
3077 turns out there are too many corner cases where this can go wrong.
3086 turns out there are too many corner cases where this can go wrong.
3078 It's best not to try to be 'too smart', and simply have ipython
3087 It's best not to try to be 'too smart', and simply have ipython
3079 reproduce as much as possible the default behavior of a normal
3088 reproduce as much as possible the default behavior of a normal
3080 python shell.
3089 python shell.
3081
3090
3082 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3091 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3083 line-splitting regexp and _prefilter() to avoid calling getattr()
3092 line-splitting regexp and _prefilter() to avoid calling getattr()
3084 on assignments. This closes
3093 on assignments. This closes
3085 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3094 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3086 readline uses getattr(), so a simple <TAB> keypress is still
3095 readline uses getattr(), so a simple <TAB> keypress is still
3087 enough to trigger getattr() calls on an object.
3096 enough to trigger getattr() calls on an object.
3088
3097
3089 2005-01-21 Fernando Perez <fperez@colorado.edu>
3098 2005-01-21 Fernando Perez <fperez@colorado.edu>
3090
3099
3091 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3100 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3092 docstring under pylab so it doesn't mask the original.
3101 docstring under pylab so it doesn't mask the original.
3093
3102
3094 2005-01-21 *** Released version 0.6.7
3103 2005-01-21 *** Released version 0.6.7
3095
3104
3096 2005-01-21 Fernando Perez <fperez@colorado.edu>
3105 2005-01-21 Fernando Perez <fperez@colorado.edu>
3097
3106
3098 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3107 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3099 signal handling for win32 users in multithreaded mode.
3108 signal handling for win32 users in multithreaded mode.
3100
3109
3101 2005-01-17 Fernando Perez <fperez@colorado.edu>
3110 2005-01-17 Fernando Perez <fperez@colorado.edu>
3102
3111
3103 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3112 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3104 instances with no __init__. After a crash report by Norbert Nemec
3113 instances with no __init__. After a crash report by Norbert Nemec
3105 <Norbert-AT-nemec-online.de>.
3114 <Norbert-AT-nemec-online.de>.
3106
3115
3107 2005-01-14 Fernando Perez <fperez@colorado.edu>
3116 2005-01-14 Fernando Perez <fperez@colorado.edu>
3108
3117
3109 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3118 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3110 names for verbose exceptions, when multiple dotted names and the
3119 names for verbose exceptions, when multiple dotted names and the
3111 'parent' object were present on the same line.
3120 'parent' object were present on the same line.
3112
3121
3113 2005-01-11 Fernando Perez <fperez@colorado.edu>
3122 2005-01-11 Fernando Perez <fperez@colorado.edu>
3114
3123
3115 * IPython/genutils.py (flag_calls): new utility to trap and flag
3124 * IPython/genutils.py (flag_calls): new utility to trap and flag
3116 calls in functions. I need it to clean up matplotlib support.
3125 calls in functions. I need it to clean up matplotlib support.
3117 Also removed some deprecated code in genutils.
3126 Also removed some deprecated code in genutils.
3118
3127
3119 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3128 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3120 that matplotlib scripts called with %run, which don't call show()
3129 that matplotlib scripts called with %run, which don't call show()
3121 themselves, still have their plotting windows open.
3130 themselves, still have their plotting windows open.
3122
3131
3123 2005-01-05 Fernando Perez <fperez@colorado.edu>
3132 2005-01-05 Fernando Perez <fperez@colorado.edu>
3124
3133
3125 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3134 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3126 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3135 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3127
3136
3128 2004-12-19 Fernando Perez <fperez@colorado.edu>
3137 2004-12-19 Fernando Perez <fperez@colorado.edu>
3129
3138
3130 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3139 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3131 parent_runcode, which was an eyesore. The same result can be
3140 parent_runcode, which was an eyesore. The same result can be
3132 obtained with Python's regular superclass mechanisms.
3141 obtained with Python's regular superclass mechanisms.
3133
3142
3134 2004-12-17 Fernando Perez <fperez@colorado.edu>
3143 2004-12-17 Fernando Perez <fperez@colorado.edu>
3135
3144
3136 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3145 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3137 reported by Prabhu.
3146 reported by Prabhu.
3138 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3147 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3139 sys.stderr) instead of explicitly calling sys.stderr. This helps
3148 sys.stderr) instead of explicitly calling sys.stderr. This helps
3140 maintain our I/O abstractions clean, for future GUI embeddings.
3149 maintain our I/O abstractions clean, for future GUI embeddings.
3141
3150
3142 * IPython/genutils.py (info): added new utility for sys.stderr
3151 * IPython/genutils.py (info): added new utility for sys.stderr
3143 unified info message handling (thin wrapper around warn()).
3152 unified info message handling (thin wrapper around warn()).
3144
3153
3145 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3154 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3146 composite (dotted) names on verbose exceptions.
3155 composite (dotted) names on verbose exceptions.
3147 (VerboseTB.nullrepr): harden against another kind of errors which
3156 (VerboseTB.nullrepr): harden against another kind of errors which
3148 Python's inspect module can trigger, and which were crashing
3157 Python's inspect module can trigger, and which were crashing
3149 IPython. Thanks to a report by Marco Lombardi
3158 IPython. Thanks to a report by Marco Lombardi
3150 <mlombard-AT-ma010192.hq.eso.org>.
3159 <mlombard-AT-ma010192.hq.eso.org>.
3151
3160
3152 2004-12-13 *** Released version 0.6.6
3161 2004-12-13 *** Released version 0.6.6
3153
3162
3154 2004-12-12 Fernando Perez <fperez@colorado.edu>
3163 2004-12-12 Fernando Perez <fperez@colorado.edu>
3155
3164
3156 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3165 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3157 generated by pygtk upon initialization if it was built without
3166 generated by pygtk upon initialization if it was built without
3158 threads (for matplotlib users). After a crash reported by
3167 threads (for matplotlib users). After a crash reported by
3159 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3168 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3160
3169
3161 * IPython/ipmaker.py (make_IPython): fix small bug in the
3170 * IPython/ipmaker.py (make_IPython): fix small bug in the
3162 import_some parameter for multiple imports.
3171 import_some parameter for multiple imports.
3163
3172
3164 * IPython/iplib.py (ipmagic): simplified the interface of
3173 * IPython/iplib.py (ipmagic): simplified the interface of
3165 ipmagic() to take a single string argument, just as it would be
3174 ipmagic() to take a single string argument, just as it would be
3166 typed at the IPython cmd line.
3175 typed at the IPython cmd line.
3167 (ipalias): Added new ipalias() with an interface identical to
3176 (ipalias): Added new ipalias() with an interface identical to
3168 ipmagic(). This completes exposing a pure python interface to the
3177 ipmagic(). This completes exposing a pure python interface to the
3169 alias and magic system, which can be used in loops or more complex
3178 alias and magic system, which can be used in loops or more complex
3170 code where IPython's automatic line mangling is not active.
3179 code where IPython's automatic line mangling is not active.
3171
3180
3172 * IPython/genutils.py (timing): changed interface of timing to
3181 * IPython/genutils.py (timing): changed interface of timing to
3173 simply run code once, which is the most common case. timings()
3182 simply run code once, which is the most common case. timings()
3174 remains unchanged, for the cases where you want multiple runs.
3183 remains unchanged, for the cases where you want multiple runs.
3175
3184
3176 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3185 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3177 bug where Python2.2 crashes with exec'ing code which does not end
3186 bug where Python2.2 crashes with exec'ing code which does not end
3178 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3187 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3179 before.
3188 before.
3180
3189
3181 2004-12-10 Fernando Perez <fperez@colorado.edu>
3190 2004-12-10 Fernando Perez <fperez@colorado.edu>
3182
3191
3183 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3192 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3184 -t to -T, to accomodate the new -t flag in %run (the %run and
3193 -t to -T, to accomodate the new -t flag in %run (the %run and
3185 %prun options are kind of intermixed, and it's not easy to change
3194 %prun options are kind of intermixed, and it's not easy to change
3186 this with the limitations of python's getopt).
3195 this with the limitations of python's getopt).
3187
3196
3188 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3197 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3189 the execution of scripts. It's not as fine-tuned as timeit.py,
3198 the execution of scripts. It's not as fine-tuned as timeit.py,
3190 but it works from inside ipython (and under 2.2, which lacks
3199 but it works from inside ipython (and under 2.2, which lacks
3191 timeit.py). Optionally a number of runs > 1 can be given for
3200 timeit.py). Optionally a number of runs > 1 can be given for
3192 timing very short-running code.
3201 timing very short-running code.
3193
3202
3194 * IPython/genutils.py (uniq_stable): new routine which returns a
3203 * IPython/genutils.py (uniq_stable): new routine which returns a
3195 list of unique elements in any iterable, but in stable order of
3204 list of unique elements in any iterable, but in stable order of
3196 appearance. I needed this for the ultraTB fixes, and it's a handy
3205 appearance. I needed this for the ultraTB fixes, and it's a handy
3197 utility.
3206 utility.
3198
3207
3199 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3208 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3200 dotted names in Verbose exceptions. This had been broken since
3209 dotted names in Verbose exceptions. This had been broken since
3201 the very start, now x.y will properly be printed in a Verbose
3210 the very start, now x.y will properly be printed in a Verbose
3202 traceback, instead of x being shown and y appearing always as an
3211 traceback, instead of x being shown and y appearing always as an
3203 'undefined global'. Getting this to work was a bit tricky,
3212 'undefined global'. Getting this to work was a bit tricky,
3204 because by default python tokenizers are stateless. Saved by
3213 because by default python tokenizers are stateless. Saved by
3205 python's ability to easily add a bit of state to an arbitrary
3214 python's ability to easily add a bit of state to an arbitrary
3206 function (without needing to build a full-blown callable object).
3215 function (without needing to build a full-blown callable object).
3207
3216
3208 Also big cleanup of this code, which had horrendous runtime
3217 Also big cleanup of this code, which had horrendous runtime
3209 lookups of zillions of attributes for colorization. Moved all
3218 lookups of zillions of attributes for colorization. Moved all
3210 this code into a few templates, which make it cleaner and quicker.
3219 this code into a few templates, which make it cleaner and quicker.
3211
3220
3212 Printout quality was also improved for Verbose exceptions: one
3221 Printout quality was also improved for Verbose exceptions: one
3213 variable per line, and memory addresses are printed (this can be
3222 variable per line, and memory addresses are printed (this can be
3214 quite handy in nasty debugging situations, which is what Verbose
3223 quite handy in nasty debugging situations, which is what Verbose
3215 is for).
3224 is for).
3216
3225
3217 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3226 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3218 the command line as scripts to be loaded by embedded instances.
3227 the command line as scripts to be loaded by embedded instances.
3219 Doing so has the potential for an infinite recursion if there are
3228 Doing so has the potential for an infinite recursion if there are
3220 exceptions thrown in the process. This fixes a strange crash
3229 exceptions thrown in the process. This fixes a strange crash
3221 reported by Philippe MULLER <muller-AT-irit.fr>.
3230 reported by Philippe MULLER <muller-AT-irit.fr>.
3222
3231
3223 2004-12-09 Fernando Perez <fperez@colorado.edu>
3232 2004-12-09 Fernando Perez <fperez@colorado.edu>
3224
3233
3225 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3234 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3226 to reflect new names in matplotlib, which now expose the
3235 to reflect new names in matplotlib, which now expose the
3227 matlab-compatible interface via a pylab module instead of the
3236 matlab-compatible interface via a pylab module instead of the
3228 'matlab' name. The new code is backwards compatible, so users of
3237 'matlab' name. The new code is backwards compatible, so users of
3229 all matplotlib versions are OK. Patch by J. Hunter.
3238 all matplotlib versions are OK. Patch by J. Hunter.
3230
3239
3231 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3240 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3232 of __init__ docstrings for instances (class docstrings are already
3241 of __init__ docstrings for instances (class docstrings are already
3233 automatically printed). Instances with customized docstrings
3242 automatically printed). Instances with customized docstrings
3234 (indep. of the class) are also recognized and all 3 separate
3243 (indep. of the class) are also recognized and all 3 separate
3235 docstrings are printed (instance, class, constructor). After some
3244 docstrings are printed (instance, class, constructor). After some
3236 comments/suggestions by J. Hunter.
3245 comments/suggestions by J. Hunter.
3237
3246
3238 2004-12-05 Fernando Perez <fperez@colorado.edu>
3247 2004-12-05 Fernando Perez <fperez@colorado.edu>
3239
3248
3240 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3249 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3241 warnings when tab-completion fails and triggers an exception.
3250 warnings when tab-completion fails and triggers an exception.
3242
3251
3243 2004-12-03 Fernando Perez <fperez@colorado.edu>
3252 2004-12-03 Fernando Perez <fperez@colorado.edu>
3244
3253
3245 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3254 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3246 be triggered when using 'run -p'. An incorrect option flag was
3255 be triggered when using 'run -p'. An incorrect option flag was
3247 being set ('d' instead of 'D').
3256 being set ('d' instead of 'D').
3248 (manpage): fix missing escaped \- sign.
3257 (manpage): fix missing escaped \- sign.
3249
3258
3250 2004-11-30 *** Released version 0.6.5
3259 2004-11-30 *** Released version 0.6.5
3251
3260
3252 2004-11-30 Fernando Perez <fperez@colorado.edu>
3261 2004-11-30 Fernando Perez <fperez@colorado.edu>
3253
3262
3254 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3263 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3255 setting with -d option.
3264 setting with -d option.
3256
3265
3257 * setup.py (docfiles): Fix problem where the doc glob I was using
3266 * setup.py (docfiles): Fix problem where the doc glob I was using
3258 was COMPLETELY BROKEN. It was giving the right files by pure
3267 was COMPLETELY BROKEN. It was giving the right files by pure
3259 accident, but failed once I tried to include ipython.el. Note:
3268 accident, but failed once I tried to include ipython.el. Note:
3260 glob() does NOT allow you to do exclusion on multiple endings!
3269 glob() does NOT allow you to do exclusion on multiple endings!
3261
3270
3262 2004-11-29 Fernando Perez <fperez@colorado.edu>
3271 2004-11-29 Fernando Perez <fperez@colorado.edu>
3263
3272
3264 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3273 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3265 the manpage as the source. Better formatting & consistency.
3274 the manpage as the source. Better formatting & consistency.
3266
3275
3267 * IPython/Magic.py (magic_run): Added new -d option, to run
3276 * IPython/Magic.py (magic_run): Added new -d option, to run
3268 scripts under the control of the python pdb debugger. Note that
3277 scripts under the control of the python pdb debugger. Note that
3269 this required changing the %prun option -d to -D, to avoid a clash
3278 this required changing the %prun option -d to -D, to avoid a clash
3270 (since %run must pass options to %prun, and getopt is too dumb to
3279 (since %run must pass options to %prun, and getopt is too dumb to
3271 handle options with string values with embedded spaces). Thanks
3280 handle options with string values with embedded spaces). Thanks
3272 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3281 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3273 (magic_who_ls): added type matching to %who and %whos, so that one
3282 (magic_who_ls): added type matching to %who and %whos, so that one
3274 can filter their output to only include variables of certain
3283 can filter their output to only include variables of certain
3275 types. Another suggestion by Matthew.
3284 types. Another suggestion by Matthew.
3276 (magic_whos): Added memory summaries in kb and Mb for arrays.
3285 (magic_whos): Added memory summaries in kb and Mb for arrays.
3277 (magic_who): Improve formatting (break lines every 9 vars).
3286 (magic_who): Improve formatting (break lines every 9 vars).
3278
3287
3279 2004-11-28 Fernando Perez <fperez@colorado.edu>
3288 2004-11-28 Fernando Perez <fperez@colorado.edu>
3280
3289
3281 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3290 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3282 cache when empty lines were present.
3291 cache when empty lines were present.
3283
3292
3284 2004-11-24 Fernando Perez <fperez@colorado.edu>
3293 2004-11-24 Fernando Perez <fperez@colorado.edu>
3285
3294
3286 * IPython/usage.py (__doc__): document the re-activated threading
3295 * IPython/usage.py (__doc__): document the re-activated threading
3287 options for WX and GTK.
3296 options for WX and GTK.
3288
3297
3289 2004-11-23 Fernando Perez <fperez@colorado.edu>
3298 2004-11-23 Fernando Perez <fperez@colorado.edu>
3290
3299
3291 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3300 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3292 the -wthread and -gthread options, along with a new -tk one to try
3301 the -wthread and -gthread options, along with a new -tk one to try
3293 and coordinate Tk threading with wx/gtk. The tk support is very
3302 and coordinate Tk threading with wx/gtk. The tk support is very
3294 platform dependent, since it seems to require Tcl and Tk to be
3303 platform dependent, since it seems to require Tcl and Tk to be
3295 built with threads (Fedora1/2 appears NOT to have it, but in
3304 built with threads (Fedora1/2 appears NOT to have it, but in
3296 Prabhu's Debian boxes it works OK). But even with some Tk
3305 Prabhu's Debian boxes it works OK). But even with some Tk
3297 limitations, this is a great improvement.
3306 limitations, this is a great improvement.
3298
3307
3299 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3308 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3300 info in user prompts. Patch by Prabhu.
3309 info in user prompts. Patch by Prabhu.
3301
3310
3302 2004-11-18 Fernando Perez <fperez@colorado.edu>
3311 2004-11-18 Fernando Perez <fperez@colorado.edu>
3303
3312
3304 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3313 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3305 EOFErrors and bail, to avoid infinite loops if a non-terminating
3314 EOFErrors and bail, to avoid infinite loops if a non-terminating
3306 file is fed into ipython. Patch submitted in issue 19 by user,
3315 file is fed into ipython. Patch submitted in issue 19 by user,
3307 many thanks.
3316 many thanks.
3308
3317
3309 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3318 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3310 autoquote/parens in continuation prompts, which can cause lots of
3319 autoquote/parens in continuation prompts, which can cause lots of
3311 problems. Closes roundup issue 20.
3320 problems. Closes roundup issue 20.
3312
3321
3313 2004-11-17 Fernando Perez <fperez@colorado.edu>
3322 2004-11-17 Fernando Perez <fperez@colorado.edu>
3314
3323
3315 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3324 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3316 reported as debian bug #280505. I'm not sure my local changelog
3325 reported as debian bug #280505. I'm not sure my local changelog
3317 entry has the proper debian format (Jack?).
3326 entry has the proper debian format (Jack?).
3318
3327
3319 2004-11-08 *** Released version 0.6.4
3328 2004-11-08 *** Released version 0.6.4
3320
3329
3321 2004-11-08 Fernando Perez <fperez@colorado.edu>
3330 2004-11-08 Fernando Perez <fperez@colorado.edu>
3322
3331
3323 * IPython/iplib.py (init_readline): Fix exit message for Windows
3332 * IPython/iplib.py (init_readline): Fix exit message for Windows
3324 when readline is active. Thanks to a report by Eric Jones
3333 when readline is active. Thanks to a report by Eric Jones
3325 <eric-AT-enthought.com>.
3334 <eric-AT-enthought.com>.
3326
3335
3327 2004-11-07 Fernando Perez <fperez@colorado.edu>
3336 2004-11-07 Fernando Perez <fperez@colorado.edu>
3328
3337
3329 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3338 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3330 sometimes seen by win2k/cygwin users.
3339 sometimes seen by win2k/cygwin users.
3331
3340
3332 2004-11-06 Fernando Perez <fperez@colorado.edu>
3341 2004-11-06 Fernando Perez <fperez@colorado.edu>
3333
3342
3334 * IPython/iplib.py (interact): Change the handling of %Exit from
3343 * IPython/iplib.py (interact): Change the handling of %Exit from
3335 trying to propagate a SystemExit to an internal ipython flag.
3344 trying to propagate a SystemExit to an internal ipython flag.
3336 This is less elegant than using Python's exception mechanism, but
3345 This is less elegant than using Python's exception mechanism, but
3337 I can't get that to work reliably with threads, so under -pylab
3346 I can't get that to work reliably with threads, so under -pylab
3338 %Exit was hanging IPython. Cross-thread exception handling is
3347 %Exit was hanging IPython. Cross-thread exception handling is
3339 really a bitch. Thaks to a bug report by Stephen Walton
3348 really a bitch. Thaks to a bug report by Stephen Walton
3340 <stephen.walton-AT-csun.edu>.
3349 <stephen.walton-AT-csun.edu>.
3341
3350
3342 2004-11-04 Fernando Perez <fperez@colorado.edu>
3351 2004-11-04 Fernando Perez <fperez@colorado.edu>
3343
3352
3344 * IPython/iplib.py (raw_input_original): store a pointer to the
3353 * IPython/iplib.py (raw_input_original): store a pointer to the
3345 true raw_input to harden against code which can modify it
3354 true raw_input to harden against code which can modify it
3346 (wx.py.PyShell does this and would otherwise crash ipython).
3355 (wx.py.PyShell does this and would otherwise crash ipython).
3347 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3356 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3348
3357
3349 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3358 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3350 Ctrl-C problem, which does not mess up the input line.
3359 Ctrl-C problem, which does not mess up the input line.
3351
3360
3352 2004-11-03 Fernando Perez <fperez@colorado.edu>
3361 2004-11-03 Fernando Perez <fperez@colorado.edu>
3353
3362
3354 * IPython/Release.py: Changed licensing to BSD, in all files.
3363 * IPython/Release.py: Changed licensing to BSD, in all files.
3355 (name): lowercase name for tarball/RPM release.
3364 (name): lowercase name for tarball/RPM release.
3356
3365
3357 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3366 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3358 use throughout ipython.
3367 use throughout ipython.
3359
3368
3360 * IPython/Magic.py (Magic._ofind): Switch to using the new
3369 * IPython/Magic.py (Magic._ofind): Switch to using the new
3361 OInspect.getdoc() function.
3370 OInspect.getdoc() function.
3362
3371
3363 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3372 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3364 of the line currently being canceled via Ctrl-C. It's extremely
3373 of the line currently being canceled via Ctrl-C. It's extremely
3365 ugly, but I don't know how to do it better (the problem is one of
3374 ugly, but I don't know how to do it better (the problem is one of
3366 handling cross-thread exceptions).
3375 handling cross-thread exceptions).
3367
3376
3368 2004-10-28 Fernando Perez <fperez@colorado.edu>
3377 2004-10-28 Fernando Perez <fperez@colorado.edu>
3369
3378
3370 * IPython/Shell.py (signal_handler): add signal handlers to trap
3379 * IPython/Shell.py (signal_handler): add signal handlers to trap
3371 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3380 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3372 report by Francesc Alted.
3381 report by Francesc Alted.
3373
3382
3374 2004-10-21 Fernando Perez <fperez@colorado.edu>
3383 2004-10-21 Fernando Perez <fperez@colorado.edu>
3375
3384
3376 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3385 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3377 to % for pysh syntax extensions.
3386 to % for pysh syntax extensions.
3378
3387
3379 2004-10-09 Fernando Perez <fperez@colorado.edu>
3388 2004-10-09 Fernando Perez <fperez@colorado.edu>
3380
3389
3381 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3390 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3382 arrays to print a more useful summary, without calling str(arr).
3391 arrays to print a more useful summary, without calling str(arr).
3383 This avoids the problem of extremely lengthy computations which
3392 This avoids the problem of extremely lengthy computations which
3384 occur if arr is large, and appear to the user as a system lockup
3393 occur if arr is large, and appear to the user as a system lockup
3385 with 100% cpu activity. After a suggestion by Kristian Sandberg
3394 with 100% cpu activity. After a suggestion by Kristian Sandberg
3386 <Kristian.Sandberg@colorado.edu>.
3395 <Kristian.Sandberg@colorado.edu>.
3387 (Magic.__init__): fix bug in global magic escapes not being
3396 (Magic.__init__): fix bug in global magic escapes not being
3388 correctly set.
3397 correctly set.
3389
3398
3390 2004-10-08 Fernando Perez <fperez@colorado.edu>
3399 2004-10-08 Fernando Perez <fperez@colorado.edu>
3391
3400
3392 * IPython/Magic.py (__license__): change to absolute imports of
3401 * IPython/Magic.py (__license__): change to absolute imports of
3393 ipython's own internal packages, to start adapting to the absolute
3402 ipython's own internal packages, to start adapting to the absolute
3394 import requirement of PEP-328.
3403 import requirement of PEP-328.
3395
3404
3396 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3405 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3397 files, and standardize author/license marks through the Release
3406 files, and standardize author/license marks through the Release
3398 module instead of having per/file stuff (except for files with
3407 module instead of having per/file stuff (except for files with
3399 particular licenses, like the MIT/PSF-licensed codes).
3408 particular licenses, like the MIT/PSF-licensed codes).
3400
3409
3401 * IPython/Debugger.py: remove dead code for python 2.1
3410 * IPython/Debugger.py: remove dead code for python 2.1
3402
3411
3403 2004-10-04 Fernando Perez <fperez@colorado.edu>
3412 2004-10-04 Fernando Perez <fperez@colorado.edu>
3404
3413
3405 * IPython/iplib.py (ipmagic): New function for accessing magics
3414 * IPython/iplib.py (ipmagic): New function for accessing magics
3406 via a normal python function call.
3415 via a normal python function call.
3407
3416
3408 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3417 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3409 from '@' to '%', to accomodate the new @decorator syntax of python
3418 from '@' to '%', to accomodate the new @decorator syntax of python
3410 2.4.
3419 2.4.
3411
3420
3412 2004-09-29 Fernando Perez <fperez@colorado.edu>
3421 2004-09-29 Fernando Perez <fperez@colorado.edu>
3413
3422
3414 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3423 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3415 matplotlib.use to prevent running scripts which try to switch
3424 matplotlib.use to prevent running scripts which try to switch
3416 interactive backends from within ipython. This will just crash
3425 interactive backends from within ipython. This will just crash
3417 the python interpreter, so we can't allow it (but a detailed error
3426 the python interpreter, so we can't allow it (but a detailed error
3418 is given to the user).
3427 is given to the user).
3419
3428
3420 2004-09-28 Fernando Perez <fperez@colorado.edu>
3429 2004-09-28 Fernando Perez <fperez@colorado.edu>
3421
3430
3422 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3431 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3423 matplotlib-related fixes so that using @run with non-matplotlib
3432 matplotlib-related fixes so that using @run with non-matplotlib
3424 scripts doesn't pop up spurious plot windows. This requires
3433 scripts doesn't pop up spurious plot windows. This requires
3425 matplotlib >= 0.63, where I had to make some changes as well.
3434 matplotlib >= 0.63, where I had to make some changes as well.
3426
3435
3427 * IPython/ipmaker.py (make_IPython): update version requirement to
3436 * IPython/ipmaker.py (make_IPython): update version requirement to
3428 python 2.2.
3437 python 2.2.
3429
3438
3430 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3439 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3431 banner arg for embedded customization.
3440 banner arg for embedded customization.
3432
3441
3433 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3442 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3434 explicit uses of __IP as the IPython's instance name. Now things
3443 explicit uses of __IP as the IPython's instance name. Now things
3435 are properly handled via the shell.name value. The actual code
3444 are properly handled via the shell.name value. The actual code
3436 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3445 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3437 is much better than before. I'll clean things completely when the
3446 is much better than before. I'll clean things completely when the
3438 magic stuff gets a real overhaul.
3447 magic stuff gets a real overhaul.
3439
3448
3440 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3449 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3441 minor changes to debian dir.
3450 minor changes to debian dir.
3442
3451
3443 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3452 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3444 pointer to the shell itself in the interactive namespace even when
3453 pointer to the shell itself in the interactive namespace even when
3445 a user-supplied dict is provided. This is needed for embedding
3454 a user-supplied dict is provided. This is needed for embedding
3446 purposes (found by tests with Michel Sanner).
3455 purposes (found by tests with Michel Sanner).
3447
3456
3448 2004-09-27 Fernando Perez <fperez@colorado.edu>
3457 2004-09-27 Fernando Perez <fperez@colorado.edu>
3449
3458
3450 * IPython/UserConfig/ipythonrc: remove []{} from
3459 * IPython/UserConfig/ipythonrc: remove []{} from
3451 readline_remove_delims, so that things like [modname.<TAB> do
3460 readline_remove_delims, so that things like [modname.<TAB> do
3452 proper completion. This disables [].TAB, but that's a less common
3461 proper completion. This disables [].TAB, but that's a less common
3453 case than module names in list comprehensions, for example.
3462 case than module names in list comprehensions, for example.
3454 Thanks to a report by Andrea Riciputi.
3463 Thanks to a report by Andrea Riciputi.
3455
3464
3456 2004-09-09 Fernando Perez <fperez@colorado.edu>
3465 2004-09-09 Fernando Perez <fperez@colorado.edu>
3457
3466
3458 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3467 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3459 blocking problems in win32 and osx. Fix by John.
3468 blocking problems in win32 and osx. Fix by John.
3460
3469
3461 2004-09-08 Fernando Perez <fperez@colorado.edu>
3470 2004-09-08 Fernando Perez <fperez@colorado.edu>
3462
3471
3463 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3472 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3464 for Win32 and OSX. Fix by John Hunter.
3473 for Win32 and OSX. Fix by John Hunter.
3465
3474
3466 2004-08-30 *** Released version 0.6.3
3475 2004-08-30 *** Released version 0.6.3
3467
3476
3468 2004-08-30 Fernando Perez <fperez@colorado.edu>
3477 2004-08-30 Fernando Perez <fperez@colorado.edu>
3469
3478
3470 * setup.py (isfile): Add manpages to list of dependent files to be
3479 * setup.py (isfile): Add manpages to list of dependent files to be
3471 updated.
3480 updated.
3472
3481
3473 2004-08-27 Fernando Perez <fperez@colorado.edu>
3482 2004-08-27 Fernando Perez <fperez@colorado.edu>
3474
3483
3475 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3484 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3476 for now. They don't really work with standalone WX/GTK code
3485 for now. They don't really work with standalone WX/GTK code
3477 (though matplotlib IS working fine with both of those backends).
3486 (though matplotlib IS working fine with both of those backends).
3478 This will neeed much more testing. I disabled most things with
3487 This will neeed much more testing. I disabled most things with
3479 comments, so turning it back on later should be pretty easy.
3488 comments, so turning it back on later should be pretty easy.
3480
3489
3481 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3490 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3482 autocalling of expressions like r'foo', by modifying the line
3491 autocalling of expressions like r'foo', by modifying the line
3483 split regexp. Closes
3492 split regexp. Closes
3484 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3493 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3485 Riley <ipythonbugs-AT-sabi.net>.
3494 Riley <ipythonbugs-AT-sabi.net>.
3486 (InteractiveShell.mainloop): honor --nobanner with banner
3495 (InteractiveShell.mainloop): honor --nobanner with banner
3487 extensions.
3496 extensions.
3488
3497
3489 * IPython/Shell.py: Significant refactoring of all classes, so
3498 * IPython/Shell.py: Significant refactoring of all classes, so
3490 that we can really support ALL matplotlib backends and threading
3499 that we can really support ALL matplotlib backends and threading
3491 models (John spotted a bug with Tk which required this). Now we
3500 models (John spotted a bug with Tk which required this). Now we
3492 should support single-threaded, WX-threads and GTK-threads, both
3501 should support single-threaded, WX-threads and GTK-threads, both
3493 for generic code and for matplotlib.
3502 for generic code and for matplotlib.
3494
3503
3495 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3504 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3496 -pylab, to simplify things for users. Will also remove the pylab
3505 -pylab, to simplify things for users. Will also remove the pylab
3497 profile, since now all of matplotlib configuration is directly
3506 profile, since now all of matplotlib configuration is directly
3498 handled here. This also reduces startup time.
3507 handled here. This also reduces startup time.
3499
3508
3500 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3509 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3501 shell wasn't being correctly called. Also in IPShellWX.
3510 shell wasn't being correctly called. Also in IPShellWX.
3502
3511
3503 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3512 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3504 fine-tune banner.
3513 fine-tune banner.
3505
3514
3506 * IPython/numutils.py (spike): Deprecate these spike functions,
3515 * IPython/numutils.py (spike): Deprecate these spike functions,
3507 delete (long deprecated) gnuplot_exec handler.
3516 delete (long deprecated) gnuplot_exec handler.
3508
3517
3509 2004-08-26 Fernando Perez <fperez@colorado.edu>
3518 2004-08-26 Fernando Perez <fperez@colorado.edu>
3510
3519
3511 * ipython.1: Update for threading options, plus some others which
3520 * ipython.1: Update for threading options, plus some others which
3512 were missing.
3521 were missing.
3513
3522
3514 * IPython/ipmaker.py (__call__): Added -wthread option for
3523 * IPython/ipmaker.py (__call__): Added -wthread option for
3515 wxpython thread handling. Make sure threading options are only
3524 wxpython thread handling. Make sure threading options are only
3516 valid at the command line.
3525 valid at the command line.
3517
3526
3518 * scripts/ipython: moved shell selection into a factory function
3527 * scripts/ipython: moved shell selection into a factory function
3519 in Shell.py, to keep the starter script to a minimum.
3528 in Shell.py, to keep the starter script to a minimum.
3520
3529
3521 2004-08-25 Fernando Perez <fperez@colorado.edu>
3530 2004-08-25 Fernando Perez <fperez@colorado.edu>
3522
3531
3523 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3532 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3524 John. Along with some recent changes he made to matplotlib, the
3533 John. Along with some recent changes he made to matplotlib, the
3525 next versions of both systems should work very well together.
3534 next versions of both systems should work very well together.
3526
3535
3527 2004-08-24 Fernando Perez <fperez@colorado.edu>
3536 2004-08-24 Fernando Perez <fperez@colorado.edu>
3528
3537
3529 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3538 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3530 tried to switch the profiling to using hotshot, but I'm getting
3539 tried to switch the profiling to using hotshot, but I'm getting
3531 strange errors from prof.runctx() there. I may be misreading the
3540 strange errors from prof.runctx() there. I may be misreading the
3532 docs, but it looks weird. For now the profiling code will
3541 docs, but it looks weird. For now the profiling code will
3533 continue to use the standard profiler.
3542 continue to use the standard profiler.
3534
3543
3535 2004-08-23 Fernando Perez <fperez@colorado.edu>
3544 2004-08-23 Fernando Perez <fperez@colorado.edu>
3536
3545
3537 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3546 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3538 threaded shell, by John Hunter. It's not quite ready yet, but
3547 threaded shell, by John Hunter. It's not quite ready yet, but
3539 close.
3548 close.
3540
3549
3541 2004-08-22 Fernando Perez <fperez@colorado.edu>
3550 2004-08-22 Fernando Perez <fperez@colorado.edu>
3542
3551
3543 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3552 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3544 in Magic and ultraTB.
3553 in Magic and ultraTB.
3545
3554
3546 * ipython.1: document threading options in manpage.
3555 * ipython.1: document threading options in manpage.
3547
3556
3548 * scripts/ipython: Changed name of -thread option to -gthread,
3557 * scripts/ipython: Changed name of -thread option to -gthread,
3549 since this is GTK specific. I want to leave the door open for a
3558 since this is GTK specific. I want to leave the door open for a
3550 -wthread option for WX, which will most likely be necessary. This
3559 -wthread option for WX, which will most likely be necessary. This
3551 change affects usage and ipmaker as well.
3560 change affects usage and ipmaker as well.
3552
3561
3553 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3562 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3554 handle the matplotlib shell issues. Code by John Hunter
3563 handle the matplotlib shell issues. Code by John Hunter
3555 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3564 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3556 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3565 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3557 broken (and disabled for end users) for now, but it puts the
3566 broken (and disabled for end users) for now, but it puts the
3558 infrastructure in place.
3567 infrastructure in place.
3559
3568
3560 2004-08-21 Fernando Perez <fperez@colorado.edu>
3569 2004-08-21 Fernando Perez <fperez@colorado.edu>
3561
3570
3562 * ipythonrc-pylab: Add matplotlib support.
3571 * ipythonrc-pylab: Add matplotlib support.
3563
3572
3564 * matplotlib_config.py: new files for matplotlib support, part of
3573 * matplotlib_config.py: new files for matplotlib support, part of
3565 the pylab profile.
3574 the pylab profile.
3566
3575
3567 * IPython/usage.py (__doc__): documented the threading options.
3576 * IPython/usage.py (__doc__): documented the threading options.
3568
3577
3569 2004-08-20 Fernando Perez <fperez@colorado.edu>
3578 2004-08-20 Fernando Perez <fperez@colorado.edu>
3570
3579
3571 * ipython: Modified the main calling routine to handle the -thread
3580 * ipython: Modified the main calling routine to handle the -thread
3572 and -mpthread options. This needs to be done as a top-level hack,
3581 and -mpthread options. This needs to be done as a top-level hack,
3573 because it determines which class to instantiate for IPython
3582 because it determines which class to instantiate for IPython
3574 itself.
3583 itself.
3575
3584
3576 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3585 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3577 classes to support multithreaded GTK operation without blocking,
3586 classes to support multithreaded GTK operation without blocking,
3578 and matplotlib with all backends. This is a lot of still very
3587 and matplotlib with all backends. This is a lot of still very
3579 experimental code, and threads are tricky. So it may still have a
3588 experimental code, and threads are tricky. So it may still have a
3580 few rough edges... This code owes a lot to
3589 few rough edges... This code owes a lot to
3581 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3590 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3582 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3591 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3583 to John Hunter for all the matplotlib work.
3592 to John Hunter for all the matplotlib work.
3584
3593
3585 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3594 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3586 options for gtk thread and matplotlib support.
3595 options for gtk thread and matplotlib support.
3587
3596
3588 2004-08-16 Fernando Perez <fperez@colorado.edu>
3597 2004-08-16 Fernando Perez <fperez@colorado.edu>
3589
3598
3590 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3599 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3591 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3600 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3592 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3601 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3593
3602
3594 2004-08-11 Fernando Perez <fperez@colorado.edu>
3603 2004-08-11 Fernando Perez <fperez@colorado.edu>
3595
3604
3596 * setup.py (isfile): Fix build so documentation gets updated for
3605 * setup.py (isfile): Fix build so documentation gets updated for
3597 rpms (it was only done for .tgz builds).
3606 rpms (it was only done for .tgz builds).
3598
3607
3599 2004-08-10 Fernando Perez <fperez@colorado.edu>
3608 2004-08-10 Fernando Perez <fperez@colorado.edu>
3600
3609
3601 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3610 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3602
3611
3603 * iplib.py : Silence syntax error exceptions in tab-completion.
3612 * iplib.py : Silence syntax error exceptions in tab-completion.
3604
3613
3605 2004-08-05 Fernando Perez <fperez@colorado.edu>
3614 2004-08-05 Fernando Perez <fperez@colorado.edu>
3606
3615
3607 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3616 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3608 'color off' mark for continuation prompts. This was causing long
3617 'color off' mark for continuation prompts. This was causing long
3609 continuation lines to mis-wrap.
3618 continuation lines to mis-wrap.
3610
3619
3611 2004-08-01 Fernando Perez <fperez@colorado.edu>
3620 2004-08-01 Fernando Perez <fperez@colorado.edu>
3612
3621
3613 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3622 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3614 for building ipython to be a parameter. All this is necessary
3623 for building ipython to be a parameter. All this is necessary
3615 right now to have a multithreaded version, but this insane
3624 right now to have a multithreaded version, but this insane
3616 non-design will be cleaned up soon. For now, it's a hack that
3625 non-design will be cleaned up soon. For now, it's a hack that
3617 works.
3626 works.
3618
3627
3619 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3628 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3620 args in various places. No bugs so far, but it's a dangerous
3629 args in various places. No bugs so far, but it's a dangerous
3621 practice.
3630 practice.
3622
3631
3623 2004-07-31 Fernando Perez <fperez@colorado.edu>
3632 2004-07-31 Fernando Perez <fperez@colorado.edu>
3624
3633
3625 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3634 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3626 fix completion of files with dots in their names under most
3635 fix completion of files with dots in their names under most
3627 profiles (pysh was OK because the completion order is different).
3636 profiles (pysh was OK because the completion order is different).
3628
3637
3629 2004-07-27 Fernando Perez <fperez@colorado.edu>
3638 2004-07-27 Fernando Perez <fperez@colorado.edu>
3630
3639
3631 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3640 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3632 keywords manually, b/c the one in keyword.py was removed in python
3641 keywords manually, b/c the one in keyword.py was removed in python
3633 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3642 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3634 This is NOT a bug under python 2.3 and earlier.
3643 This is NOT a bug under python 2.3 and earlier.
3635
3644
3636 2004-07-26 Fernando Perez <fperez@colorado.edu>
3645 2004-07-26 Fernando Perez <fperez@colorado.edu>
3637
3646
3638 * IPython/ultraTB.py (VerboseTB.text): Add another
3647 * IPython/ultraTB.py (VerboseTB.text): Add another
3639 linecache.checkcache() call to try to prevent inspect.py from
3648 linecache.checkcache() call to try to prevent inspect.py from
3640 crashing under python 2.3. I think this fixes
3649 crashing under python 2.3. I think this fixes
3641 http://www.scipy.net/roundup/ipython/issue17.
3650 http://www.scipy.net/roundup/ipython/issue17.
3642
3651
3643 2004-07-26 *** Released version 0.6.2
3652 2004-07-26 *** Released version 0.6.2
3644
3653
3645 2004-07-26 Fernando Perez <fperez@colorado.edu>
3654 2004-07-26 Fernando Perez <fperez@colorado.edu>
3646
3655
3647 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3656 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3648 fail for any number.
3657 fail for any number.
3649 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3658 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3650 empty bookmarks.
3659 empty bookmarks.
3651
3660
3652 2004-07-26 *** Released version 0.6.1
3661 2004-07-26 *** Released version 0.6.1
3653
3662
3654 2004-07-26 Fernando Perez <fperez@colorado.edu>
3663 2004-07-26 Fernando Perez <fperez@colorado.edu>
3655
3664
3656 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3665 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3657
3666
3658 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3667 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3659 escaping '()[]{}' in filenames.
3668 escaping '()[]{}' in filenames.
3660
3669
3661 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3670 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3662 Python 2.2 users who lack a proper shlex.split.
3671 Python 2.2 users who lack a proper shlex.split.
3663
3672
3664 2004-07-19 Fernando Perez <fperez@colorado.edu>
3673 2004-07-19 Fernando Perez <fperez@colorado.edu>
3665
3674
3666 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3675 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3667 for reading readline's init file. I follow the normal chain:
3676 for reading readline's init file. I follow the normal chain:
3668 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3677 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3669 report by Mike Heeter. This closes
3678 report by Mike Heeter. This closes
3670 http://www.scipy.net/roundup/ipython/issue16.
3679 http://www.scipy.net/roundup/ipython/issue16.
3671
3680
3672 2004-07-18 Fernando Perez <fperez@colorado.edu>
3681 2004-07-18 Fernando Perez <fperez@colorado.edu>
3673
3682
3674 * IPython/iplib.py (__init__): Add better handling of '\' under
3683 * IPython/iplib.py (__init__): Add better handling of '\' under
3675 Win32 for filenames. After a patch by Ville.
3684 Win32 for filenames. After a patch by Ville.
3676
3685
3677 2004-07-17 Fernando Perez <fperez@colorado.edu>
3686 2004-07-17 Fernando Perez <fperez@colorado.edu>
3678
3687
3679 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3688 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3680 autocalling would be triggered for 'foo is bar' if foo is
3689 autocalling would be triggered for 'foo is bar' if foo is
3681 callable. I also cleaned up the autocall detection code to use a
3690 callable. I also cleaned up the autocall detection code to use a
3682 regexp, which is faster. Bug reported by Alexander Schmolck.
3691 regexp, which is faster. Bug reported by Alexander Schmolck.
3683
3692
3684 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3693 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3685 '?' in them would confuse the help system. Reported by Alex
3694 '?' in them would confuse the help system. Reported by Alex
3686 Schmolck.
3695 Schmolck.
3687
3696
3688 2004-07-16 Fernando Perez <fperez@colorado.edu>
3697 2004-07-16 Fernando Perez <fperez@colorado.edu>
3689
3698
3690 * IPython/GnuplotInteractive.py (__all__): added plot2.
3699 * IPython/GnuplotInteractive.py (__all__): added plot2.
3691
3700
3692 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3701 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3693 plotting dictionaries, lists or tuples of 1d arrays.
3702 plotting dictionaries, lists or tuples of 1d arrays.
3694
3703
3695 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3704 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3696 optimizations.
3705 optimizations.
3697
3706
3698 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3707 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3699 the information which was there from Janko's original IPP code:
3708 the information which was there from Janko's original IPP code:
3700
3709
3701 03.05.99 20:53 porto.ifm.uni-kiel.de
3710 03.05.99 20:53 porto.ifm.uni-kiel.de
3702 --Started changelog.
3711 --Started changelog.
3703 --make clear do what it say it does
3712 --make clear do what it say it does
3704 --added pretty output of lines from inputcache
3713 --added pretty output of lines from inputcache
3705 --Made Logger a mixin class, simplifies handling of switches
3714 --Made Logger a mixin class, simplifies handling of switches
3706 --Added own completer class. .string<TAB> expands to last history
3715 --Added own completer class. .string<TAB> expands to last history
3707 line which starts with string. The new expansion is also present
3716 line which starts with string. The new expansion is also present
3708 with Ctrl-r from the readline library. But this shows, who this
3717 with Ctrl-r from the readline library. But this shows, who this
3709 can be done for other cases.
3718 can be done for other cases.
3710 --Added convention that all shell functions should accept a
3719 --Added convention that all shell functions should accept a
3711 parameter_string This opens the door for different behaviour for
3720 parameter_string This opens the door for different behaviour for
3712 each function. @cd is a good example of this.
3721 each function. @cd is a good example of this.
3713
3722
3714 04.05.99 12:12 porto.ifm.uni-kiel.de
3723 04.05.99 12:12 porto.ifm.uni-kiel.de
3715 --added logfile rotation
3724 --added logfile rotation
3716 --added new mainloop method which freezes first the namespace
3725 --added new mainloop method which freezes first the namespace
3717
3726
3718 07.05.99 21:24 porto.ifm.uni-kiel.de
3727 07.05.99 21:24 porto.ifm.uni-kiel.de
3719 --added the docreader classes. Now there is a help system.
3728 --added the docreader classes. Now there is a help system.
3720 -This is only a first try. Currently it's not easy to put new
3729 -This is only a first try. Currently it's not easy to put new
3721 stuff in the indices. But this is the way to go. Info would be
3730 stuff in the indices. But this is the way to go. Info would be
3722 better, but HTML is every where and not everybody has an info
3731 better, but HTML is every where and not everybody has an info
3723 system installed and it's not so easy to change html-docs to info.
3732 system installed and it's not so easy to change html-docs to info.
3724 --added global logfile option
3733 --added global logfile option
3725 --there is now a hook for object inspection method pinfo needs to
3734 --there is now a hook for object inspection method pinfo needs to
3726 be provided for this. Can be reached by two '??'.
3735 be provided for this. Can be reached by two '??'.
3727
3736
3728 08.05.99 20:51 porto.ifm.uni-kiel.de
3737 08.05.99 20:51 porto.ifm.uni-kiel.de
3729 --added a README
3738 --added a README
3730 --bug in rc file. Something has changed so functions in the rc
3739 --bug in rc file. Something has changed so functions in the rc
3731 file need to reference the shell and not self. Not clear if it's a
3740 file need to reference the shell and not self. Not clear if it's a
3732 bug or feature.
3741 bug or feature.
3733 --changed rc file for new behavior
3742 --changed rc file for new behavior
3734
3743
3735 2004-07-15 Fernando Perez <fperez@colorado.edu>
3744 2004-07-15 Fernando Perez <fperez@colorado.edu>
3736
3745
3737 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3746 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3738 cache was falling out of sync in bizarre manners when multi-line
3747 cache was falling out of sync in bizarre manners when multi-line
3739 input was present. Minor optimizations and cleanup.
3748 input was present. Minor optimizations and cleanup.
3740
3749
3741 (Logger): Remove old Changelog info for cleanup. This is the
3750 (Logger): Remove old Changelog info for cleanup. This is the
3742 information which was there from Janko's original code:
3751 information which was there from Janko's original code:
3743
3752
3744 Changes to Logger: - made the default log filename a parameter
3753 Changes to Logger: - made the default log filename a parameter
3745
3754
3746 - put a check for lines beginning with !@? in log(). Needed
3755 - put a check for lines beginning with !@? in log(). Needed
3747 (even if the handlers properly log their lines) for mid-session
3756 (even if the handlers properly log their lines) for mid-session
3748 logging activation to work properly. Without this, lines logged
3757 logging activation to work properly. Without this, lines logged
3749 in mid session, which get read from the cache, would end up
3758 in mid session, which get read from the cache, would end up
3750 'bare' (with !@? in the open) in the log. Now they are caught
3759 'bare' (with !@? in the open) in the log. Now they are caught
3751 and prepended with a #.
3760 and prepended with a #.
3752
3761
3753 * IPython/iplib.py (InteractiveShell.init_readline): added check
3762 * IPython/iplib.py (InteractiveShell.init_readline): added check
3754 in case MagicCompleter fails to be defined, so we don't crash.
3763 in case MagicCompleter fails to be defined, so we don't crash.
3755
3764
3756 2004-07-13 Fernando Perez <fperez@colorado.edu>
3765 2004-07-13 Fernando Perez <fperez@colorado.edu>
3757
3766
3758 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3767 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3759 of EPS if the requested filename ends in '.eps'.
3768 of EPS if the requested filename ends in '.eps'.
3760
3769
3761 2004-07-04 Fernando Perez <fperez@colorado.edu>
3770 2004-07-04 Fernando Perez <fperez@colorado.edu>
3762
3771
3763 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3772 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3764 escaping of quotes when calling the shell.
3773 escaping of quotes when calling the shell.
3765
3774
3766 2004-07-02 Fernando Perez <fperez@colorado.edu>
3775 2004-07-02 Fernando Perez <fperez@colorado.edu>
3767
3776
3768 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3777 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3769 gettext not working because we were clobbering '_'. Fixes
3778 gettext not working because we were clobbering '_'. Fixes
3770 http://www.scipy.net/roundup/ipython/issue6.
3779 http://www.scipy.net/roundup/ipython/issue6.
3771
3780
3772 2004-07-01 Fernando Perez <fperez@colorado.edu>
3781 2004-07-01 Fernando Perez <fperez@colorado.edu>
3773
3782
3774 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3783 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3775 into @cd. Patch by Ville.
3784 into @cd. Patch by Ville.
3776
3785
3777 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3786 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3778 new function to store things after ipmaker runs. Patch by Ville.
3787 new function to store things after ipmaker runs. Patch by Ville.
3779 Eventually this will go away once ipmaker is removed and the class
3788 Eventually this will go away once ipmaker is removed and the class
3780 gets cleaned up, but for now it's ok. Key functionality here is
3789 gets cleaned up, but for now it's ok. Key functionality here is
3781 the addition of the persistent storage mechanism, a dict for
3790 the addition of the persistent storage mechanism, a dict for
3782 keeping data across sessions (for now just bookmarks, but more can
3791 keeping data across sessions (for now just bookmarks, but more can
3783 be implemented later).
3792 be implemented later).
3784
3793
3785 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3794 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3786 persistent across sections. Patch by Ville, I modified it
3795 persistent across sections. Patch by Ville, I modified it
3787 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3796 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3788 added a '-l' option to list all bookmarks.
3797 added a '-l' option to list all bookmarks.
3789
3798
3790 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3799 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3791 center for cleanup. Registered with atexit.register(). I moved
3800 center for cleanup. Registered with atexit.register(). I moved
3792 here the old exit_cleanup(). After a patch by Ville.
3801 here the old exit_cleanup(). After a patch by Ville.
3793
3802
3794 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3803 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3795 characters in the hacked shlex_split for python 2.2.
3804 characters in the hacked shlex_split for python 2.2.
3796
3805
3797 * IPython/iplib.py (file_matches): more fixes to filenames with
3806 * IPython/iplib.py (file_matches): more fixes to filenames with
3798 whitespace in them. It's not perfect, but limitations in python's
3807 whitespace in them. It's not perfect, but limitations in python's
3799 readline make it impossible to go further.
3808 readline make it impossible to go further.
3800
3809
3801 2004-06-29 Fernando Perez <fperez@colorado.edu>
3810 2004-06-29 Fernando Perez <fperez@colorado.edu>
3802
3811
3803 * IPython/iplib.py (file_matches): escape whitespace correctly in
3812 * IPython/iplib.py (file_matches): escape whitespace correctly in
3804 filename completions. Bug reported by Ville.
3813 filename completions. Bug reported by Ville.
3805
3814
3806 2004-06-28 Fernando Perez <fperez@colorado.edu>
3815 2004-06-28 Fernando Perez <fperez@colorado.edu>
3807
3816
3808 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3817 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3809 the history file will be called 'history-PROFNAME' (or just
3818 the history file will be called 'history-PROFNAME' (or just
3810 'history' if no profile is loaded). I was getting annoyed at
3819 'history' if no profile is loaded). I was getting annoyed at
3811 getting my Numerical work history clobbered by pysh sessions.
3820 getting my Numerical work history clobbered by pysh sessions.
3812
3821
3813 * IPython/iplib.py (InteractiveShell.__init__): Internal
3822 * IPython/iplib.py (InteractiveShell.__init__): Internal
3814 getoutputerror() function so that we can honor the system_verbose
3823 getoutputerror() function so that we can honor the system_verbose
3815 flag for _all_ system calls. I also added escaping of #
3824 flag for _all_ system calls. I also added escaping of #
3816 characters here to avoid confusing Itpl.
3825 characters here to avoid confusing Itpl.
3817
3826
3818 * IPython/Magic.py (shlex_split): removed call to shell in
3827 * IPython/Magic.py (shlex_split): removed call to shell in
3819 parse_options and replaced it with shlex.split(). The annoying
3828 parse_options and replaced it with shlex.split(). The annoying
3820 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3829 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3821 to backport it from 2.3, with several frail hacks (the shlex
3830 to backport it from 2.3, with several frail hacks (the shlex
3822 module is rather limited in 2.2). Thanks to a suggestion by Ville
3831 module is rather limited in 2.2). Thanks to a suggestion by Ville
3823 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3832 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3824 problem.
3833 problem.
3825
3834
3826 (Magic.magic_system_verbose): new toggle to print the actual
3835 (Magic.magic_system_verbose): new toggle to print the actual
3827 system calls made by ipython. Mainly for debugging purposes.
3836 system calls made by ipython. Mainly for debugging purposes.
3828
3837
3829 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3838 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3830 doesn't support persistence. Reported (and fix suggested) by
3839 doesn't support persistence. Reported (and fix suggested) by
3831 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3840 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3832
3841
3833 2004-06-26 Fernando Perez <fperez@colorado.edu>
3842 2004-06-26 Fernando Perez <fperez@colorado.edu>
3834
3843
3835 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3844 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3836 continue prompts.
3845 continue prompts.
3837
3846
3838 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3847 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3839 function (basically a big docstring) and a few more things here to
3848 function (basically a big docstring) and a few more things here to
3840 speedup startup. pysh.py is now very lightweight. We want because
3849 speedup startup. pysh.py is now very lightweight. We want because
3841 it gets execfile'd, while InterpreterExec gets imported, so
3850 it gets execfile'd, while InterpreterExec gets imported, so
3842 byte-compilation saves time.
3851 byte-compilation saves time.
3843
3852
3844 2004-06-25 Fernando Perez <fperez@colorado.edu>
3853 2004-06-25 Fernando Perez <fperez@colorado.edu>
3845
3854
3846 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3855 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3847 -NUM', which was recently broken.
3856 -NUM', which was recently broken.
3848
3857
3849 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3858 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3850 in multi-line input (but not !!, which doesn't make sense there).
3859 in multi-line input (but not !!, which doesn't make sense there).
3851
3860
3852 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3861 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3853 It's just too useful, and people can turn it off in the less
3862 It's just too useful, and people can turn it off in the less
3854 common cases where it's a problem.
3863 common cases where it's a problem.
3855
3864
3856 2004-06-24 Fernando Perez <fperez@colorado.edu>
3865 2004-06-24 Fernando Perez <fperez@colorado.edu>
3857
3866
3858 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3867 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3859 special syntaxes (like alias calling) is now allied in multi-line
3868 special syntaxes (like alias calling) is now allied in multi-line
3860 input. This is still _very_ experimental, but it's necessary for
3869 input. This is still _very_ experimental, but it's necessary for
3861 efficient shell usage combining python looping syntax with system
3870 efficient shell usage combining python looping syntax with system
3862 calls. For now it's restricted to aliases, I don't think it
3871 calls. For now it's restricted to aliases, I don't think it
3863 really even makes sense to have this for magics.
3872 really even makes sense to have this for magics.
3864
3873
3865 2004-06-23 Fernando Perez <fperez@colorado.edu>
3874 2004-06-23 Fernando Perez <fperez@colorado.edu>
3866
3875
3867 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3876 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3868 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3877 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3869
3878
3870 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3879 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3871 extensions under Windows (after code sent by Gary Bishop). The
3880 extensions under Windows (after code sent by Gary Bishop). The
3872 extensions considered 'executable' are stored in IPython's rc
3881 extensions considered 'executable' are stored in IPython's rc
3873 structure as win_exec_ext.
3882 structure as win_exec_ext.
3874
3883
3875 * IPython/genutils.py (shell): new function, like system() but
3884 * IPython/genutils.py (shell): new function, like system() but
3876 without return value. Very useful for interactive shell work.
3885 without return value. Very useful for interactive shell work.
3877
3886
3878 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3887 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3879 delete aliases.
3888 delete aliases.
3880
3889
3881 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3890 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3882 sure that the alias table doesn't contain python keywords.
3891 sure that the alias table doesn't contain python keywords.
3883
3892
3884 2004-06-21 Fernando Perez <fperez@colorado.edu>
3893 2004-06-21 Fernando Perez <fperez@colorado.edu>
3885
3894
3886 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3895 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3887 non-existent items are found in $PATH. Reported by Thorsten.
3896 non-existent items are found in $PATH. Reported by Thorsten.
3888
3897
3889 2004-06-20 Fernando Perez <fperez@colorado.edu>
3898 2004-06-20 Fernando Perez <fperez@colorado.edu>
3890
3899
3891 * IPython/iplib.py (complete): modified the completer so that the
3900 * IPython/iplib.py (complete): modified the completer so that the
3892 order of priorities can be easily changed at runtime.
3901 order of priorities can be easily changed at runtime.
3893
3902
3894 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3903 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3895 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3904 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3896
3905
3897 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3906 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3898 expand Python variables prepended with $ in all system calls. The
3907 expand Python variables prepended with $ in all system calls. The
3899 same was done to InteractiveShell.handle_shell_escape. Now all
3908 same was done to InteractiveShell.handle_shell_escape. Now all
3900 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3909 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3901 expansion of python variables and expressions according to the
3910 expansion of python variables and expressions according to the
3902 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3911 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3903
3912
3904 Though PEP-215 has been rejected, a similar (but simpler) one
3913 Though PEP-215 has been rejected, a similar (but simpler) one
3905 seems like it will go into Python 2.4, PEP-292 -
3914 seems like it will go into Python 2.4, PEP-292 -
3906 http://www.python.org/peps/pep-0292.html.
3915 http://www.python.org/peps/pep-0292.html.
3907
3916
3908 I'll keep the full syntax of PEP-215, since IPython has since the
3917 I'll keep the full syntax of PEP-215, since IPython has since the
3909 start used Ka-Ping Yee's reference implementation discussed there
3918 start used Ka-Ping Yee's reference implementation discussed there
3910 (Itpl), and I actually like the powerful semantics it offers.
3919 (Itpl), and I actually like the powerful semantics it offers.
3911
3920
3912 In order to access normal shell variables, the $ has to be escaped
3921 In order to access normal shell variables, the $ has to be escaped
3913 via an extra $. For example:
3922 via an extra $. For example:
3914
3923
3915 In [7]: PATH='a python variable'
3924 In [7]: PATH='a python variable'
3916
3925
3917 In [8]: !echo $PATH
3926 In [8]: !echo $PATH
3918 a python variable
3927 a python variable
3919
3928
3920 In [9]: !echo $$PATH
3929 In [9]: !echo $$PATH
3921 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3930 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3922
3931
3923 (Magic.parse_options): escape $ so the shell doesn't evaluate
3932 (Magic.parse_options): escape $ so the shell doesn't evaluate
3924 things prematurely.
3933 things prematurely.
3925
3934
3926 * IPython/iplib.py (InteractiveShell.call_alias): added the
3935 * IPython/iplib.py (InteractiveShell.call_alias): added the
3927 ability for aliases to expand python variables via $.
3936 ability for aliases to expand python variables via $.
3928
3937
3929 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3938 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3930 system, now there's a @rehash/@rehashx pair of magics. These work
3939 system, now there's a @rehash/@rehashx pair of magics. These work
3931 like the csh rehash command, and can be invoked at any time. They
3940 like the csh rehash command, and can be invoked at any time. They
3932 build a table of aliases to everything in the user's $PATH
3941 build a table of aliases to everything in the user's $PATH
3933 (@rehash uses everything, @rehashx is slower but only adds
3942 (@rehash uses everything, @rehashx is slower but only adds
3934 executable files). With this, the pysh.py-based shell profile can
3943 executable files). With this, the pysh.py-based shell profile can
3935 now simply call rehash upon startup, and full access to all
3944 now simply call rehash upon startup, and full access to all
3936 programs in the user's path is obtained.
3945 programs in the user's path is obtained.
3937
3946
3938 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3947 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3939 functionality is now fully in place. I removed the old dynamic
3948 functionality is now fully in place. I removed the old dynamic
3940 code generation based approach, in favor of a much lighter one
3949 code generation based approach, in favor of a much lighter one
3941 based on a simple dict. The advantage is that this allows me to
3950 based on a simple dict. The advantage is that this allows me to
3942 now have thousands of aliases with negligible cost (unthinkable
3951 now have thousands of aliases with negligible cost (unthinkable
3943 with the old system).
3952 with the old system).
3944
3953
3945 2004-06-19 Fernando Perez <fperez@colorado.edu>
3954 2004-06-19 Fernando Perez <fperez@colorado.edu>
3946
3955
3947 * IPython/iplib.py (__init__): extended MagicCompleter class to
3956 * IPython/iplib.py (__init__): extended MagicCompleter class to
3948 also complete (last in priority) on user aliases.
3957 also complete (last in priority) on user aliases.
3949
3958
3950 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3959 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3951 call to eval.
3960 call to eval.
3952 (ItplNS.__init__): Added a new class which functions like Itpl,
3961 (ItplNS.__init__): Added a new class which functions like Itpl,
3953 but allows configuring the namespace for the evaluation to occur
3962 but allows configuring the namespace for the evaluation to occur
3954 in.
3963 in.
3955
3964
3956 2004-06-18 Fernando Perez <fperez@colorado.edu>
3965 2004-06-18 Fernando Perez <fperez@colorado.edu>
3957
3966
3958 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3967 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3959 better message when 'exit' or 'quit' are typed (a common newbie
3968 better message when 'exit' or 'quit' are typed (a common newbie
3960 confusion).
3969 confusion).
3961
3970
3962 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3971 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3963 check for Windows users.
3972 check for Windows users.
3964
3973
3965 * IPython/iplib.py (InteractiveShell.user_setup): removed
3974 * IPython/iplib.py (InteractiveShell.user_setup): removed
3966 disabling of colors for Windows. I'll test at runtime and issue a
3975 disabling of colors for Windows. I'll test at runtime and issue a
3967 warning if Gary's readline isn't found, as to nudge users to
3976 warning if Gary's readline isn't found, as to nudge users to
3968 download it.
3977 download it.
3969
3978
3970 2004-06-16 Fernando Perez <fperez@colorado.edu>
3979 2004-06-16 Fernando Perez <fperez@colorado.edu>
3971
3980
3972 * IPython/genutils.py (Stream.__init__): changed to print errors
3981 * IPython/genutils.py (Stream.__init__): changed to print errors
3973 to sys.stderr. I had a circular dependency here. Now it's
3982 to sys.stderr. I had a circular dependency here. Now it's
3974 possible to run ipython as IDLE's shell (consider this pre-alpha,
3983 possible to run ipython as IDLE's shell (consider this pre-alpha,
3975 since true stdout things end up in the starting terminal instead
3984 since true stdout things end up in the starting terminal instead
3976 of IDLE's out).
3985 of IDLE's out).
3977
3986
3978 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3987 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3979 users who haven't # updated their prompt_in2 definitions. Remove
3988 users who haven't # updated their prompt_in2 definitions. Remove
3980 eventually.
3989 eventually.
3981 (multiple_replace): added credit to original ASPN recipe.
3990 (multiple_replace): added credit to original ASPN recipe.
3982
3991
3983 2004-06-15 Fernando Perez <fperez@colorado.edu>
3992 2004-06-15 Fernando Perez <fperez@colorado.edu>
3984
3993
3985 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3994 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3986 list of auto-defined aliases.
3995 list of auto-defined aliases.
3987
3996
3988 2004-06-13 Fernando Perez <fperez@colorado.edu>
3997 2004-06-13 Fernando Perez <fperez@colorado.edu>
3989
3998
3990 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3999 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3991 install was really requested (so setup.py can be used for other
4000 install was really requested (so setup.py can be used for other
3992 things under Windows).
4001 things under Windows).
3993
4002
3994 2004-06-10 Fernando Perez <fperez@colorado.edu>
4003 2004-06-10 Fernando Perez <fperez@colorado.edu>
3995
4004
3996 * IPython/Logger.py (Logger.create_log): Manually remove any old
4005 * IPython/Logger.py (Logger.create_log): Manually remove any old
3997 backup, since os.remove may fail under Windows. Fixes bug
4006 backup, since os.remove may fail under Windows. Fixes bug
3998 reported by Thorsten.
4007 reported by Thorsten.
3999
4008
4000 2004-06-09 Fernando Perez <fperez@colorado.edu>
4009 2004-06-09 Fernando Perez <fperez@colorado.edu>
4001
4010
4002 * examples/example-embed.py: fixed all references to %n (replaced
4011 * examples/example-embed.py: fixed all references to %n (replaced
4003 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4012 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4004 for all examples and the manual as well.
4013 for all examples and the manual as well.
4005
4014
4006 2004-06-08 Fernando Perez <fperez@colorado.edu>
4015 2004-06-08 Fernando Perez <fperez@colorado.edu>
4007
4016
4008 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4017 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4009 alignment and color management. All 3 prompt subsystems now
4018 alignment and color management. All 3 prompt subsystems now
4010 inherit from BasePrompt.
4019 inherit from BasePrompt.
4011
4020
4012 * tools/release: updates for windows installer build and tag rpms
4021 * tools/release: updates for windows installer build and tag rpms
4013 with python version (since paths are fixed).
4022 with python version (since paths are fixed).
4014
4023
4015 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4024 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4016 which will become eventually obsolete. Also fixed the default
4025 which will become eventually obsolete. Also fixed the default
4017 prompt_in2 to use \D, so at least new users start with the correct
4026 prompt_in2 to use \D, so at least new users start with the correct
4018 defaults.
4027 defaults.
4019 WARNING: Users with existing ipythonrc files will need to apply
4028 WARNING: Users with existing ipythonrc files will need to apply
4020 this fix manually!
4029 this fix manually!
4021
4030
4022 * setup.py: make windows installer (.exe). This is finally the
4031 * setup.py: make windows installer (.exe). This is finally the
4023 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4032 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4024 which I hadn't included because it required Python 2.3 (or recent
4033 which I hadn't included because it required Python 2.3 (or recent
4025 distutils).
4034 distutils).
4026
4035
4027 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4036 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4028 usage of new '\D' escape.
4037 usage of new '\D' escape.
4029
4038
4030 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4039 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4031 lacks os.getuid())
4040 lacks os.getuid())
4032 (CachedOutput.set_colors): Added the ability to turn coloring
4041 (CachedOutput.set_colors): Added the ability to turn coloring
4033 on/off with @colors even for manually defined prompt colors. It
4042 on/off with @colors even for manually defined prompt colors. It
4034 uses a nasty global, but it works safely and via the generic color
4043 uses a nasty global, but it works safely and via the generic color
4035 handling mechanism.
4044 handling mechanism.
4036 (Prompt2.__init__): Introduced new escape '\D' for continuation
4045 (Prompt2.__init__): Introduced new escape '\D' for continuation
4037 prompts. It represents the counter ('\#') as dots.
4046 prompts. It represents the counter ('\#') as dots.
4038 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4047 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4039 need to update their ipythonrc files and replace '%n' with '\D' in
4048 need to update their ipythonrc files and replace '%n' with '\D' in
4040 their prompt_in2 settings everywhere. Sorry, but there's
4049 their prompt_in2 settings everywhere. Sorry, but there's
4041 otherwise no clean way to get all prompts to properly align. The
4050 otherwise no clean way to get all prompts to properly align. The
4042 ipythonrc shipped with IPython has been updated.
4051 ipythonrc shipped with IPython has been updated.
4043
4052
4044 2004-06-07 Fernando Perez <fperez@colorado.edu>
4053 2004-06-07 Fernando Perez <fperez@colorado.edu>
4045
4054
4046 * setup.py (isfile): Pass local_icons option to latex2html, so the
4055 * setup.py (isfile): Pass local_icons option to latex2html, so the
4047 resulting HTML file is self-contained. Thanks to
4056 resulting HTML file is self-contained. Thanks to
4048 dryice-AT-liu.com.cn for the tip.
4057 dryice-AT-liu.com.cn for the tip.
4049
4058
4050 * pysh.py: I created a new profile 'shell', which implements a
4059 * pysh.py: I created a new profile 'shell', which implements a
4051 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4060 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4052 system shell, nor will it become one anytime soon. It's mainly
4061 system shell, nor will it become one anytime soon. It's mainly
4053 meant to illustrate the use of the new flexible bash-like prompts.
4062 meant to illustrate the use of the new flexible bash-like prompts.
4054 I guess it could be used by hardy souls for true shell management,
4063 I guess it could be used by hardy souls for true shell management,
4055 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4064 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4056 profile. This uses the InterpreterExec extension provided by
4065 profile. This uses the InterpreterExec extension provided by
4057 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4066 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4058
4067
4059 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4068 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4060 auto-align itself with the length of the previous input prompt
4069 auto-align itself with the length of the previous input prompt
4061 (taking into account the invisible color escapes).
4070 (taking into account the invisible color escapes).
4062 (CachedOutput.__init__): Large restructuring of this class. Now
4071 (CachedOutput.__init__): Large restructuring of this class. Now
4063 all three prompts (primary1, primary2, output) are proper objects,
4072 all three prompts (primary1, primary2, output) are proper objects,
4064 managed by the 'parent' CachedOutput class. The code is still a
4073 managed by the 'parent' CachedOutput class. The code is still a
4065 bit hackish (all prompts share state via a pointer to the cache),
4074 bit hackish (all prompts share state via a pointer to the cache),
4066 but it's overall far cleaner than before.
4075 but it's overall far cleaner than before.
4067
4076
4068 * IPython/genutils.py (getoutputerror): modified to add verbose,
4077 * IPython/genutils.py (getoutputerror): modified to add verbose,
4069 debug and header options. This makes the interface of all getout*
4078 debug and header options. This makes the interface of all getout*
4070 functions uniform.
4079 functions uniform.
4071 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4080 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4072
4081
4073 * IPython/Magic.py (Magic.default_option): added a function to
4082 * IPython/Magic.py (Magic.default_option): added a function to
4074 allow registering default options for any magic command. This
4083 allow registering default options for any magic command. This
4075 makes it easy to have profiles which customize the magics globally
4084 makes it easy to have profiles which customize the magics globally
4076 for a certain use. The values set through this function are
4085 for a certain use. The values set through this function are
4077 picked up by the parse_options() method, which all magics should
4086 picked up by the parse_options() method, which all magics should
4078 use to parse their options.
4087 use to parse their options.
4079
4088
4080 * IPython/genutils.py (warn): modified the warnings framework to
4089 * IPython/genutils.py (warn): modified the warnings framework to
4081 use the Term I/O class. I'm trying to slowly unify all of
4090 use the Term I/O class. I'm trying to slowly unify all of
4082 IPython's I/O operations to pass through Term.
4091 IPython's I/O operations to pass through Term.
4083
4092
4084 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4093 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4085 the secondary prompt to correctly match the length of the primary
4094 the secondary prompt to correctly match the length of the primary
4086 one for any prompt. Now multi-line code will properly line up
4095 one for any prompt. Now multi-line code will properly line up
4087 even for path dependent prompts, such as the new ones available
4096 even for path dependent prompts, such as the new ones available
4088 via the prompt_specials.
4097 via the prompt_specials.
4089
4098
4090 2004-06-06 Fernando Perez <fperez@colorado.edu>
4099 2004-06-06 Fernando Perez <fperez@colorado.edu>
4091
4100
4092 * IPython/Prompts.py (prompt_specials): Added the ability to have
4101 * IPython/Prompts.py (prompt_specials): Added the ability to have
4093 bash-like special sequences in the prompts, which get
4102 bash-like special sequences in the prompts, which get
4094 automatically expanded. Things like hostname, current working
4103 automatically expanded. Things like hostname, current working
4095 directory and username are implemented already, but it's easy to
4104 directory and username are implemented already, but it's easy to
4096 add more in the future. Thanks to a patch by W.J. van der Laan
4105 add more in the future. Thanks to a patch by W.J. van der Laan
4097 <gnufnork-AT-hetdigitalegat.nl>
4106 <gnufnork-AT-hetdigitalegat.nl>
4098 (prompt_specials): Added color support for prompt strings, so
4107 (prompt_specials): Added color support for prompt strings, so
4099 users can define arbitrary color setups for their prompts.
4108 users can define arbitrary color setups for their prompts.
4100
4109
4101 2004-06-05 Fernando Perez <fperez@colorado.edu>
4110 2004-06-05 Fernando Perez <fperez@colorado.edu>
4102
4111
4103 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4112 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4104 code to load Gary Bishop's readline and configure it
4113 code to load Gary Bishop's readline and configure it
4105 automatically. Thanks to Gary for help on this.
4114 automatically. Thanks to Gary for help on this.
4106
4115
4107 2004-06-01 Fernando Perez <fperez@colorado.edu>
4116 2004-06-01 Fernando Perez <fperez@colorado.edu>
4108
4117
4109 * IPython/Logger.py (Logger.create_log): fix bug for logging
4118 * IPython/Logger.py (Logger.create_log): fix bug for logging
4110 with no filename (previous fix was incomplete).
4119 with no filename (previous fix was incomplete).
4111
4120
4112 2004-05-25 Fernando Perez <fperez@colorado.edu>
4121 2004-05-25 Fernando Perez <fperez@colorado.edu>
4113
4122
4114 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4123 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4115 parens would get passed to the shell.
4124 parens would get passed to the shell.
4116
4125
4117 2004-05-20 Fernando Perez <fperez@colorado.edu>
4126 2004-05-20 Fernando Perez <fperez@colorado.edu>
4118
4127
4119 * IPython/Magic.py (Magic.magic_prun): changed default profile
4128 * IPython/Magic.py (Magic.magic_prun): changed default profile
4120 sort order to 'time' (the more common profiling need).
4129 sort order to 'time' (the more common profiling need).
4121
4130
4122 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4131 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4123 so that source code shown is guaranteed in sync with the file on
4132 so that source code shown is guaranteed in sync with the file on
4124 disk (also changed in psource). Similar fix to the one for
4133 disk (also changed in psource). Similar fix to the one for
4125 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4134 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4126 <yann.ledu-AT-noos.fr>.
4135 <yann.ledu-AT-noos.fr>.
4127
4136
4128 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4137 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4129 with a single option would not be correctly parsed. Closes
4138 with a single option would not be correctly parsed. Closes
4130 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4139 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4131 introduced in 0.6.0 (on 2004-05-06).
4140 introduced in 0.6.0 (on 2004-05-06).
4132
4141
4133 2004-05-13 *** Released version 0.6.0
4142 2004-05-13 *** Released version 0.6.0
4134
4143
4135 2004-05-13 Fernando Perez <fperez@colorado.edu>
4144 2004-05-13 Fernando Perez <fperez@colorado.edu>
4136
4145
4137 * debian/: Added debian/ directory to CVS, so that debian support
4146 * debian/: Added debian/ directory to CVS, so that debian support
4138 is publicly accessible. The debian package is maintained by Jack
4147 is publicly accessible. The debian package is maintained by Jack
4139 Moffit <jack-AT-xiph.org>.
4148 Moffit <jack-AT-xiph.org>.
4140
4149
4141 * Documentation: included the notes about an ipython-based system
4150 * Documentation: included the notes about an ipython-based system
4142 shell (the hypothetical 'pysh') into the new_design.pdf document,
4151 shell (the hypothetical 'pysh') into the new_design.pdf document,
4143 so that these ideas get distributed to users along with the
4152 so that these ideas get distributed to users along with the
4144 official documentation.
4153 official documentation.
4145
4154
4146 2004-05-10 Fernando Perez <fperez@colorado.edu>
4155 2004-05-10 Fernando Perez <fperez@colorado.edu>
4147
4156
4148 * IPython/Logger.py (Logger.create_log): fix recently introduced
4157 * IPython/Logger.py (Logger.create_log): fix recently introduced
4149 bug (misindented line) where logstart would fail when not given an
4158 bug (misindented line) where logstart would fail when not given an
4150 explicit filename.
4159 explicit filename.
4151
4160
4152 2004-05-09 Fernando Perez <fperez@colorado.edu>
4161 2004-05-09 Fernando Perez <fperez@colorado.edu>
4153
4162
4154 * IPython/Magic.py (Magic.parse_options): skip system call when
4163 * IPython/Magic.py (Magic.parse_options): skip system call when
4155 there are no options to look for. Faster, cleaner for the common
4164 there are no options to look for. Faster, cleaner for the common
4156 case.
4165 case.
4157
4166
4158 * Documentation: many updates to the manual: describing Windows
4167 * Documentation: many updates to the manual: describing Windows
4159 support better, Gnuplot updates, credits, misc small stuff. Also
4168 support better, Gnuplot updates, credits, misc small stuff. Also
4160 updated the new_design doc a bit.
4169 updated the new_design doc a bit.
4161
4170
4162 2004-05-06 *** Released version 0.6.0.rc1
4171 2004-05-06 *** Released version 0.6.0.rc1
4163
4172
4164 2004-05-06 Fernando Perez <fperez@colorado.edu>
4173 2004-05-06 Fernando Perez <fperez@colorado.edu>
4165
4174
4166 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4175 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4167 operations to use the vastly more efficient list/''.join() method.
4176 operations to use the vastly more efficient list/''.join() method.
4168 (FormattedTB.text): Fix
4177 (FormattedTB.text): Fix
4169 http://www.scipy.net/roundup/ipython/issue12 - exception source
4178 http://www.scipy.net/roundup/ipython/issue12 - exception source
4170 extract not updated after reload. Thanks to Mike Salib
4179 extract not updated after reload. Thanks to Mike Salib
4171 <msalib-AT-mit.edu> for pinning the source of the problem.
4180 <msalib-AT-mit.edu> for pinning the source of the problem.
4172 Fortunately, the solution works inside ipython and doesn't require
4181 Fortunately, the solution works inside ipython and doesn't require
4173 any changes to python proper.
4182 any changes to python proper.
4174
4183
4175 * IPython/Magic.py (Magic.parse_options): Improved to process the
4184 * IPython/Magic.py (Magic.parse_options): Improved to process the
4176 argument list as a true shell would (by actually using the
4185 argument list as a true shell would (by actually using the
4177 underlying system shell). This way, all @magics automatically get
4186 underlying system shell). This way, all @magics automatically get
4178 shell expansion for variables. Thanks to a comment by Alex
4187 shell expansion for variables. Thanks to a comment by Alex
4179 Schmolck.
4188 Schmolck.
4180
4189
4181 2004-04-04 Fernando Perez <fperez@colorado.edu>
4190 2004-04-04 Fernando Perez <fperez@colorado.edu>
4182
4191
4183 * IPython/iplib.py (InteractiveShell.interact): Added a special
4192 * IPython/iplib.py (InteractiveShell.interact): Added a special
4184 trap for a debugger quit exception, which is basically impossible
4193 trap for a debugger quit exception, which is basically impossible
4185 to handle by normal mechanisms, given what pdb does to the stack.
4194 to handle by normal mechanisms, given what pdb does to the stack.
4186 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4195 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4187
4196
4188 2004-04-03 Fernando Perez <fperez@colorado.edu>
4197 2004-04-03 Fernando Perez <fperez@colorado.edu>
4189
4198
4190 * IPython/genutils.py (Term): Standardized the names of the Term
4199 * IPython/genutils.py (Term): Standardized the names of the Term
4191 class streams to cin/cout/cerr, following C++ naming conventions
4200 class streams to cin/cout/cerr, following C++ naming conventions
4192 (I can't use in/out/err because 'in' is not a valid attribute
4201 (I can't use in/out/err because 'in' is not a valid attribute
4193 name).
4202 name).
4194
4203
4195 * IPython/iplib.py (InteractiveShell.interact): don't increment
4204 * IPython/iplib.py (InteractiveShell.interact): don't increment
4196 the prompt if there's no user input. By Daniel 'Dang' Griffith
4205 the prompt if there's no user input. By Daniel 'Dang' Griffith
4197 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4206 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4198 Francois Pinard.
4207 Francois Pinard.
4199
4208
4200 2004-04-02 Fernando Perez <fperez@colorado.edu>
4209 2004-04-02 Fernando Perez <fperez@colorado.edu>
4201
4210
4202 * IPython/genutils.py (Stream.__init__): Modified to survive at
4211 * IPython/genutils.py (Stream.__init__): Modified to survive at
4203 least importing in contexts where stdin/out/err aren't true file
4212 least importing in contexts where stdin/out/err aren't true file
4204 objects, such as PyCrust (they lack fileno() and mode). However,
4213 objects, such as PyCrust (they lack fileno() and mode). However,
4205 the recovery facilities which rely on these things existing will
4214 the recovery facilities which rely on these things existing will
4206 not work.
4215 not work.
4207
4216
4208 2004-04-01 Fernando Perez <fperez@colorado.edu>
4217 2004-04-01 Fernando Perez <fperez@colorado.edu>
4209
4218
4210 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4219 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4211 use the new getoutputerror() function, so it properly
4220 use the new getoutputerror() function, so it properly
4212 distinguishes stdout/err.
4221 distinguishes stdout/err.
4213
4222
4214 * IPython/genutils.py (getoutputerror): added a function to
4223 * IPython/genutils.py (getoutputerror): added a function to
4215 capture separately the standard output and error of a command.
4224 capture separately the standard output and error of a command.
4216 After a comment from dang on the mailing lists. This code is
4225 After a comment from dang on the mailing lists. This code is
4217 basically a modified version of commands.getstatusoutput(), from
4226 basically a modified version of commands.getstatusoutput(), from
4218 the standard library.
4227 the standard library.
4219
4228
4220 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4229 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4221 '!!' as a special syntax (shorthand) to access @sx.
4230 '!!' as a special syntax (shorthand) to access @sx.
4222
4231
4223 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4232 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4224 command and return its output as a list split on '\n'.
4233 command and return its output as a list split on '\n'.
4225
4234
4226 2004-03-31 Fernando Perez <fperez@colorado.edu>
4235 2004-03-31 Fernando Perez <fperez@colorado.edu>
4227
4236
4228 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4237 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4229 method to dictionaries used as FakeModule instances if they lack
4238 method to dictionaries used as FakeModule instances if they lack
4230 it. At least pydoc in python2.3 breaks for runtime-defined
4239 it. At least pydoc in python2.3 breaks for runtime-defined
4231 functions without this hack. At some point I need to _really_
4240 functions without this hack. At some point I need to _really_
4232 understand what FakeModule is doing, because it's a gross hack.
4241 understand what FakeModule is doing, because it's a gross hack.
4233 But it solves Arnd's problem for now...
4242 But it solves Arnd's problem for now...
4234
4243
4235 2004-02-27 Fernando Perez <fperez@colorado.edu>
4244 2004-02-27 Fernando Perez <fperez@colorado.edu>
4236
4245
4237 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4246 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4238 mode would behave erratically. Also increased the number of
4247 mode would behave erratically. Also increased the number of
4239 possible logs in rotate mod to 999. Thanks to Rod Holland
4248 possible logs in rotate mod to 999. Thanks to Rod Holland
4240 <rhh@StructureLABS.com> for the report and fixes.
4249 <rhh@StructureLABS.com> for the report and fixes.
4241
4250
4242 2004-02-26 Fernando Perez <fperez@colorado.edu>
4251 2004-02-26 Fernando Perez <fperez@colorado.edu>
4243
4252
4244 * IPython/genutils.py (page): Check that the curses module really
4253 * IPython/genutils.py (page): Check that the curses module really
4245 has the initscr attribute before trying to use it. For some
4254 has the initscr attribute before trying to use it. For some
4246 reason, the Solaris curses module is missing this. I think this
4255 reason, the Solaris curses module is missing this. I think this
4247 should be considered a Solaris python bug, but I'm not sure.
4256 should be considered a Solaris python bug, but I'm not sure.
4248
4257
4249 2004-01-17 Fernando Perez <fperez@colorado.edu>
4258 2004-01-17 Fernando Perez <fperez@colorado.edu>
4250
4259
4251 * IPython/genutils.py (Stream.__init__): Changes to try to make
4260 * IPython/genutils.py (Stream.__init__): Changes to try to make
4252 ipython robust against stdin/out/err being closed by the user.
4261 ipython robust against stdin/out/err being closed by the user.
4253 This is 'user error' (and blocks a normal python session, at least
4262 This is 'user error' (and blocks a normal python session, at least
4254 the stdout case). However, Ipython should be able to survive such
4263 the stdout case). However, Ipython should be able to survive such
4255 instances of abuse as gracefully as possible. To simplify the
4264 instances of abuse as gracefully as possible. To simplify the
4256 coding and maintain compatibility with Gary Bishop's Term
4265 coding and maintain compatibility with Gary Bishop's Term
4257 contributions, I've made use of classmethods for this. I think
4266 contributions, I've made use of classmethods for this. I think
4258 this introduces a dependency on python 2.2.
4267 this introduces a dependency on python 2.2.
4259
4268
4260 2004-01-13 Fernando Perez <fperez@colorado.edu>
4269 2004-01-13 Fernando Perez <fperez@colorado.edu>
4261
4270
4262 * IPython/numutils.py (exp_safe): simplified the code a bit and
4271 * IPython/numutils.py (exp_safe): simplified the code a bit and
4263 removed the need for importing the kinds module altogether.
4272 removed the need for importing the kinds module altogether.
4264
4273
4265 2004-01-06 Fernando Perez <fperez@colorado.edu>
4274 2004-01-06 Fernando Perez <fperez@colorado.edu>
4266
4275
4267 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4276 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4268 a magic function instead, after some community feedback. No
4277 a magic function instead, after some community feedback. No
4269 special syntax will exist for it, but its name is deliberately
4278 special syntax will exist for it, but its name is deliberately
4270 very short.
4279 very short.
4271
4280
4272 2003-12-20 Fernando Perez <fperez@colorado.edu>
4281 2003-12-20 Fernando Perez <fperez@colorado.edu>
4273
4282
4274 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4283 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4275 new functionality, to automagically assign the result of a shell
4284 new functionality, to automagically assign the result of a shell
4276 command to a variable. I'll solicit some community feedback on
4285 command to a variable. I'll solicit some community feedback on
4277 this before making it permanent.
4286 this before making it permanent.
4278
4287
4279 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4288 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4280 requested about callables for which inspect couldn't obtain a
4289 requested about callables for which inspect couldn't obtain a
4281 proper argspec. Thanks to a crash report sent by Etienne
4290 proper argspec. Thanks to a crash report sent by Etienne
4282 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4291 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4283
4292
4284 2003-12-09 Fernando Perez <fperez@colorado.edu>
4293 2003-12-09 Fernando Perez <fperez@colorado.edu>
4285
4294
4286 * IPython/genutils.py (page): patch for the pager to work across
4295 * IPython/genutils.py (page): patch for the pager to work across
4287 various versions of Windows. By Gary Bishop.
4296 various versions of Windows. By Gary Bishop.
4288
4297
4289 2003-12-04 Fernando Perez <fperez@colorado.edu>
4298 2003-12-04 Fernando Perez <fperez@colorado.edu>
4290
4299
4291 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4300 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4292 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4301 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4293 While I tested this and it looks ok, there may still be corner
4302 While I tested this and it looks ok, there may still be corner
4294 cases I've missed.
4303 cases I've missed.
4295
4304
4296 2003-12-01 Fernando Perez <fperez@colorado.edu>
4305 2003-12-01 Fernando Perez <fperez@colorado.edu>
4297
4306
4298 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4307 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4299 where a line like 'p,q=1,2' would fail because the automagic
4308 where a line like 'p,q=1,2' would fail because the automagic
4300 system would be triggered for @p.
4309 system would be triggered for @p.
4301
4310
4302 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4311 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4303 cleanups, code unmodified.
4312 cleanups, code unmodified.
4304
4313
4305 * IPython/genutils.py (Term): added a class for IPython to handle
4314 * IPython/genutils.py (Term): added a class for IPython to handle
4306 output. In most cases it will just be a proxy for stdout/err, but
4315 output. In most cases it will just be a proxy for stdout/err, but
4307 having this allows modifications to be made for some platforms,
4316 having this allows modifications to be made for some platforms,
4308 such as handling color escapes under Windows. All of this code
4317 such as handling color escapes under Windows. All of this code
4309 was contributed by Gary Bishop, with minor modifications by me.
4318 was contributed by Gary Bishop, with minor modifications by me.
4310 The actual changes affect many files.
4319 The actual changes affect many files.
4311
4320
4312 2003-11-30 Fernando Perez <fperez@colorado.edu>
4321 2003-11-30 Fernando Perez <fperez@colorado.edu>
4313
4322
4314 * IPython/iplib.py (file_matches): new completion code, courtesy
4323 * IPython/iplib.py (file_matches): new completion code, courtesy
4315 of Jeff Collins. This enables filename completion again under
4324 of Jeff Collins. This enables filename completion again under
4316 python 2.3, which disabled it at the C level.
4325 python 2.3, which disabled it at the C level.
4317
4326
4318 2003-11-11 Fernando Perez <fperez@colorado.edu>
4327 2003-11-11 Fernando Perez <fperez@colorado.edu>
4319
4328
4320 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4329 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4321 for Numeric.array(map(...)), but often convenient.
4330 for Numeric.array(map(...)), but often convenient.
4322
4331
4323 2003-11-05 Fernando Perez <fperez@colorado.edu>
4332 2003-11-05 Fernando Perez <fperez@colorado.edu>
4324
4333
4325 * IPython/numutils.py (frange): Changed a call from int() to
4334 * IPython/numutils.py (frange): Changed a call from int() to
4326 int(round()) to prevent a problem reported with arange() in the
4335 int(round()) to prevent a problem reported with arange() in the
4327 numpy list.
4336 numpy list.
4328
4337
4329 2003-10-06 Fernando Perez <fperez@colorado.edu>
4338 2003-10-06 Fernando Perez <fperez@colorado.edu>
4330
4339
4331 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4340 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4332 prevent crashes if sys lacks an argv attribute (it happens with
4341 prevent crashes if sys lacks an argv attribute (it happens with
4333 embedded interpreters which build a bare-bones sys module).
4342 embedded interpreters which build a bare-bones sys module).
4334 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4343 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4335
4344
4336 2003-09-24 Fernando Perez <fperez@colorado.edu>
4345 2003-09-24 Fernando Perez <fperez@colorado.edu>
4337
4346
4338 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4347 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4339 to protect against poorly written user objects where __getattr__
4348 to protect against poorly written user objects where __getattr__
4340 raises exceptions other than AttributeError. Thanks to a bug
4349 raises exceptions other than AttributeError. Thanks to a bug
4341 report by Oliver Sander <osander-AT-gmx.de>.
4350 report by Oliver Sander <osander-AT-gmx.de>.
4342
4351
4343 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4352 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4344 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4353 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4345
4354
4346 2003-09-09 Fernando Perez <fperez@colorado.edu>
4355 2003-09-09 Fernando Perez <fperez@colorado.edu>
4347
4356
4348 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4357 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4349 unpacking a list whith a callable as first element would
4358 unpacking a list whith a callable as first element would
4350 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4359 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4351 Collins.
4360 Collins.
4352
4361
4353 2003-08-25 *** Released version 0.5.0
4362 2003-08-25 *** Released version 0.5.0
4354
4363
4355 2003-08-22 Fernando Perez <fperez@colorado.edu>
4364 2003-08-22 Fernando Perez <fperez@colorado.edu>
4356
4365
4357 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4366 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4358 improperly defined user exceptions. Thanks to feedback from Mark
4367 improperly defined user exceptions. Thanks to feedback from Mark
4359 Russell <mrussell-AT-verio.net>.
4368 Russell <mrussell-AT-verio.net>.
4360
4369
4361 2003-08-20 Fernando Perez <fperez@colorado.edu>
4370 2003-08-20 Fernando Perez <fperez@colorado.edu>
4362
4371
4363 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4372 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4364 printing so that it would print multi-line string forms starting
4373 printing so that it would print multi-line string forms starting
4365 with a new line. This way the formatting is better respected for
4374 with a new line. This way the formatting is better respected for
4366 objects which work hard to make nice string forms.
4375 objects which work hard to make nice string forms.
4367
4376
4368 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4377 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4369 autocall would overtake data access for objects with both
4378 autocall would overtake data access for objects with both
4370 __getitem__ and __call__.
4379 __getitem__ and __call__.
4371
4380
4372 2003-08-19 *** Released version 0.5.0-rc1
4381 2003-08-19 *** Released version 0.5.0-rc1
4373
4382
4374 2003-08-19 Fernando Perez <fperez@colorado.edu>
4383 2003-08-19 Fernando Perez <fperez@colorado.edu>
4375
4384
4376 * IPython/deep_reload.py (load_tail): single tiny change here
4385 * IPython/deep_reload.py (load_tail): single tiny change here
4377 seems to fix the long-standing bug of dreload() failing to work
4386 seems to fix the long-standing bug of dreload() failing to work
4378 for dotted names. But this module is pretty tricky, so I may have
4387 for dotted names. But this module is pretty tricky, so I may have
4379 missed some subtlety. Needs more testing!.
4388 missed some subtlety. Needs more testing!.
4380
4389
4381 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4390 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4382 exceptions which have badly implemented __str__ methods.
4391 exceptions which have badly implemented __str__ methods.
4383 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4392 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4384 which I've been getting reports about from Python 2.3 users. I
4393 which I've been getting reports about from Python 2.3 users. I
4385 wish I had a simple test case to reproduce the problem, so I could
4394 wish I had a simple test case to reproduce the problem, so I could
4386 either write a cleaner workaround or file a bug report if
4395 either write a cleaner workaround or file a bug report if
4387 necessary.
4396 necessary.
4388
4397
4389 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4398 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4390 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4399 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4391 a bug report by Tjabo Kloppenburg.
4400 a bug report by Tjabo Kloppenburg.
4392
4401
4393 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4402 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4394 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4403 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4395 seems rather unstable. Thanks to a bug report by Tjabo
4404 seems rather unstable. Thanks to a bug report by Tjabo
4396 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4405 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4397
4406
4398 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4407 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4399 this out soon because of the critical fixes in the inner loop for
4408 this out soon because of the critical fixes in the inner loop for
4400 generators.
4409 generators.
4401
4410
4402 * IPython/Magic.py (Magic.getargspec): removed. This (and
4411 * IPython/Magic.py (Magic.getargspec): removed. This (and
4403 _get_def) have been obsoleted by OInspect for a long time, I
4412 _get_def) have been obsoleted by OInspect for a long time, I
4404 hadn't noticed that they were dead code.
4413 hadn't noticed that they were dead code.
4405 (Magic._ofind): restored _ofind functionality for a few literals
4414 (Magic._ofind): restored _ofind functionality for a few literals
4406 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4415 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4407 for things like "hello".capitalize?, since that would require a
4416 for things like "hello".capitalize?, since that would require a
4408 potentially dangerous eval() again.
4417 potentially dangerous eval() again.
4409
4418
4410 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4419 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4411 logic a bit more to clean up the escapes handling and minimize the
4420 logic a bit more to clean up the escapes handling and minimize the
4412 use of _ofind to only necessary cases. The interactive 'feel' of
4421 use of _ofind to only necessary cases. The interactive 'feel' of
4413 IPython should have improved quite a bit with the changes in
4422 IPython should have improved quite a bit with the changes in
4414 _prefilter and _ofind (besides being far safer than before).
4423 _prefilter and _ofind (besides being far safer than before).
4415
4424
4416 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4425 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4417 obscure, never reported). Edit would fail to find the object to
4426 obscure, never reported). Edit would fail to find the object to
4418 edit under some circumstances.
4427 edit under some circumstances.
4419 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4428 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4420 which were causing double-calling of generators. Those eval calls
4429 which were causing double-calling of generators. Those eval calls
4421 were _very_ dangerous, since code with side effects could be
4430 were _very_ dangerous, since code with side effects could be
4422 triggered. As they say, 'eval is evil'... These were the
4431 triggered. As they say, 'eval is evil'... These were the
4423 nastiest evals in IPython. Besides, _ofind is now far simpler,
4432 nastiest evals in IPython. Besides, _ofind is now far simpler,
4424 and it should also be quite a bit faster. Its use of inspect is
4433 and it should also be quite a bit faster. Its use of inspect is
4425 also safer, so perhaps some of the inspect-related crashes I've
4434 also safer, so perhaps some of the inspect-related crashes I've
4426 seen lately with Python 2.3 might be taken care of. That will
4435 seen lately with Python 2.3 might be taken care of. That will
4427 need more testing.
4436 need more testing.
4428
4437
4429 2003-08-17 Fernando Perez <fperez@colorado.edu>
4438 2003-08-17 Fernando Perez <fperez@colorado.edu>
4430
4439
4431 * IPython/iplib.py (InteractiveShell._prefilter): significant
4440 * IPython/iplib.py (InteractiveShell._prefilter): significant
4432 simplifications to the logic for handling user escapes. Faster
4441 simplifications to the logic for handling user escapes. Faster
4433 and simpler code.
4442 and simpler code.
4434
4443
4435 2003-08-14 Fernando Perez <fperez@colorado.edu>
4444 2003-08-14 Fernando Perez <fperez@colorado.edu>
4436
4445
4437 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4446 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4438 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4447 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4439 but it should be quite a bit faster. And the recursive version
4448 but it should be quite a bit faster. And the recursive version
4440 generated O(log N) intermediate storage for all rank>1 arrays,
4449 generated O(log N) intermediate storage for all rank>1 arrays,
4441 even if they were contiguous.
4450 even if they were contiguous.
4442 (l1norm): Added this function.
4451 (l1norm): Added this function.
4443 (norm): Added this function for arbitrary norms (including
4452 (norm): Added this function for arbitrary norms (including
4444 l-infinity). l1 and l2 are still special cases for convenience
4453 l-infinity). l1 and l2 are still special cases for convenience
4445 and speed.
4454 and speed.
4446
4455
4447 2003-08-03 Fernando Perez <fperez@colorado.edu>
4456 2003-08-03 Fernando Perez <fperez@colorado.edu>
4448
4457
4449 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4458 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4450 exceptions, which now raise PendingDeprecationWarnings in Python
4459 exceptions, which now raise PendingDeprecationWarnings in Python
4451 2.3. There were some in Magic and some in Gnuplot2.
4460 2.3. There were some in Magic and some in Gnuplot2.
4452
4461
4453 2003-06-30 Fernando Perez <fperez@colorado.edu>
4462 2003-06-30 Fernando Perez <fperez@colorado.edu>
4454
4463
4455 * IPython/genutils.py (page): modified to call curses only for
4464 * IPython/genutils.py (page): modified to call curses only for
4456 terminals where TERM=='xterm'. After problems under many other
4465 terminals where TERM=='xterm'. After problems under many other
4457 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4466 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4458
4467
4459 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4468 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4460 would be triggered when readline was absent. This was just an old
4469 would be triggered when readline was absent. This was just an old
4461 debugging statement I'd forgotten to take out.
4470 debugging statement I'd forgotten to take out.
4462
4471
4463 2003-06-20 Fernando Perez <fperez@colorado.edu>
4472 2003-06-20 Fernando Perez <fperez@colorado.edu>
4464
4473
4465 * IPython/genutils.py (clock): modified to return only user time
4474 * IPython/genutils.py (clock): modified to return only user time
4466 (not counting system time), after a discussion on scipy. While
4475 (not counting system time), after a discussion on scipy. While
4467 system time may be a useful quantity occasionally, it may much
4476 system time may be a useful quantity occasionally, it may much
4468 more easily be skewed by occasional swapping or other similar
4477 more easily be skewed by occasional swapping or other similar
4469 activity.
4478 activity.
4470
4479
4471 2003-06-05 Fernando Perez <fperez@colorado.edu>
4480 2003-06-05 Fernando Perez <fperez@colorado.edu>
4472
4481
4473 * IPython/numutils.py (identity): new function, for building
4482 * IPython/numutils.py (identity): new function, for building
4474 arbitrary rank Kronecker deltas (mostly backwards compatible with
4483 arbitrary rank Kronecker deltas (mostly backwards compatible with
4475 Numeric.identity)
4484 Numeric.identity)
4476
4485
4477 2003-06-03 Fernando Perez <fperez@colorado.edu>
4486 2003-06-03 Fernando Perez <fperez@colorado.edu>
4478
4487
4479 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4488 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4480 arguments passed to magics with spaces, to allow trailing '\' to
4489 arguments passed to magics with spaces, to allow trailing '\' to
4481 work normally (mainly for Windows users).
4490 work normally (mainly for Windows users).
4482
4491
4483 2003-05-29 Fernando Perez <fperez@colorado.edu>
4492 2003-05-29 Fernando Perez <fperez@colorado.edu>
4484
4493
4485 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4494 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4486 instead of pydoc.help. This fixes a bizarre behavior where
4495 instead of pydoc.help. This fixes a bizarre behavior where
4487 printing '%s' % locals() would trigger the help system. Now
4496 printing '%s' % locals() would trigger the help system. Now
4488 ipython behaves like normal python does.
4497 ipython behaves like normal python does.
4489
4498
4490 Note that if one does 'from pydoc import help', the bizarre
4499 Note that if one does 'from pydoc import help', the bizarre
4491 behavior returns, but this will also happen in normal python, so
4500 behavior returns, but this will also happen in normal python, so
4492 it's not an ipython bug anymore (it has to do with how pydoc.help
4501 it's not an ipython bug anymore (it has to do with how pydoc.help
4493 is implemented).
4502 is implemented).
4494
4503
4495 2003-05-22 Fernando Perez <fperez@colorado.edu>
4504 2003-05-22 Fernando Perez <fperez@colorado.edu>
4496
4505
4497 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4506 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4498 return [] instead of None when nothing matches, also match to end
4507 return [] instead of None when nothing matches, also match to end
4499 of line. Patch by Gary Bishop.
4508 of line. Patch by Gary Bishop.
4500
4509
4501 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4510 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4502 protection as before, for files passed on the command line. This
4511 protection as before, for files passed on the command line. This
4503 prevents the CrashHandler from kicking in if user files call into
4512 prevents the CrashHandler from kicking in if user files call into
4504 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4513 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4505 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4514 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4506
4515
4507 2003-05-20 *** Released version 0.4.0
4516 2003-05-20 *** Released version 0.4.0
4508
4517
4509 2003-05-20 Fernando Perez <fperez@colorado.edu>
4518 2003-05-20 Fernando Perez <fperez@colorado.edu>
4510
4519
4511 * setup.py: added support for manpages. It's a bit hackish b/c of
4520 * setup.py: added support for manpages. It's a bit hackish b/c of
4512 a bug in the way the bdist_rpm distutils target handles gzipped
4521 a bug in the way the bdist_rpm distutils target handles gzipped
4513 manpages, but it works. After a patch by Jack.
4522 manpages, but it works. After a patch by Jack.
4514
4523
4515 2003-05-19 Fernando Perez <fperez@colorado.edu>
4524 2003-05-19 Fernando Perez <fperez@colorado.edu>
4516
4525
4517 * IPython/numutils.py: added a mockup of the kinds module, since
4526 * IPython/numutils.py: added a mockup of the kinds module, since
4518 it was recently removed from Numeric. This way, numutils will
4527 it was recently removed from Numeric. This way, numutils will
4519 work for all users even if they are missing kinds.
4528 work for all users even if they are missing kinds.
4520
4529
4521 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4530 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4522 failure, which can occur with SWIG-wrapped extensions. After a
4531 failure, which can occur with SWIG-wrapped extensions. After a
4523 crash report from Prabhu.
4532 crash report from Prabhu.
4524
4533
4525 2003-05-16 Fernando Perez <fperez@colorado.edu>
4534 2003-05-16 Fernando Perez <fperez@colorado.edu>
4526
4535
4527 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4536 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4528 protect ipython from user code which may call directly
4537 protect ipython from user code which may call directly
4529 sys.excepthook (this looks like an ipython crash to the user, even
4538 sys.excepthook (this looks like an ipython crash to the user, even
4530 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4539 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4531 This is especially important to help users of WxWindows, but may
4540 This is especially important to help users of WxWindows, but may
4532 also be useful in other cases.
4541 also be useful in other cases.
4533
4542
4534 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4543 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4535 an optional tb_offset to be specified, and to preserve exception
4544 an optional tb_offset to be specified, and to preserve exception
4536 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4545 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4537
4546
4538 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4547 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4539
4548
4540 2003-05-15 Fernando Perez <fperez@colorado.edu>
4549 2003-05-15 Fernando Perez <fperez@colorado.edu>
4541
4550
4542 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4551 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4543 installing for a new user under Windows.
4552 installing for a new user under Windows.
4544
4553
4545 2003-05-12 Fernando Perez <fperez@colorado.edu>
4554 2003-05-12 Fernando Perez <fperez@colorado.edu>
4546
4555
4547 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4556 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4548 handler for Emacs comint-based lines. Currently it doesn't do
4557 handler for Emacs comint-based lines. Currently it doesn't do
4549 much (but importantly, it doesn't update the history cache). In
4558 much (but importantly, it doesn't update the history cache). In
4550 the future it may be expanded if Alex needs more functionality
4559 the future it may be expanded if Alex needs more functionality
4551 there.
4560 there.
4552
4561
4553 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4562 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4554 info to crash reports.
4563 info to crash reports.
4555
4564
4556 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4565 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4557 just like Python's -c. Also fixed crash with invalid -color
4566 just like Python's -c. Also fixed crash with invalid -color
4558 option value at startup. Thanks to Will French
4567 option value at startup. Thanks to Will French
4559 <wfrench-AT-bestweb.net> for the bug report.
4568 <wfrench-AT-bestweb.net> for the bug report.
4560
4569
4561 2003-05-09 Fernando Perez <fperez@colorado.edu>
4570 2003-05-09 Fernando Perez <fperez@colorado.edu>
4562
4571
4563 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4572 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4564 to EvalDict (it's a mapping, after all) and simplified its code
4573 to EvalDict (it's a mapping, after all) and simplified its code
4565 quite a bit, after a nice discussion on c.l.py where Gustavo
4574 quite a bit, after a nice discussion on c.l.py where Gustavo
4566 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4575 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4567
4576
4568 2003-04-30 Fernando Perez <fperez@colorado.edu>
4577 2003-04-30 Fernando Perez <fperez@colorado.edu>
4569
4578
4570 * IPython/genutils.py (timings_out): modified it to reduce its
4579 * IPython/genutils.py (timings_out): modified it to reduce its
4571 overhead in the common reps==1 case.
4580 overhead in the common reps==1 case.
4572
4581
4573 2003-04-29 Fernando Perez <fperez@colorado.edu>
4582 2003-04-29 Fernando Perez <fperez@colorado.edu>
4574
4583
4575 * IPython/genutils.py (timings_out): Modified to use the resource
4584 * IPython/genutils.py (timings_out): Modified to use the resource
4576 module, which avoids the wraparound problems of time.clock().
4585 module, which avoids the wraparound problems of time.clock().
4577
4586
4578 2003-04-17 *** Released version 0.2.15pre4
4587 2003-04-17 *** Released version 0.2.15pre4
4579
4588
4580 2003-04-17 Fernando Perez <fperez@colorado.edu>
4589 2003-04-17 Fernando Perez <fperez@colorado.edu>
4581
4590
4582 * setup.py (scriptfiles): Split windows-specific stuff over to a
4591 * setup.py (scriptfiles): Split windows-specific stuff over to a
4583 separate file, in an attempt to have a Windows GUI installer.
4592 separate file, in an attempt to have a Windows GUI installer.
4584 That didn't work, but part of the groundwork is done.
4593 That didn't work, but part of the groundwork is done.
4585
4594
4586 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4595 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4587 indent/unindent with 4 spaces. Particularly useful in combination
4596 indent/unindent with 4 spaces. Particularly useful in combination
4588 with the new auto-indent option.
4597 with the new auto-indent option.
4589
4598
4590 2003-04-16 Fernando Perez <fperez@colorado.edu>
4599 2003-04-16 Fernando Perez <fperez@colorado.edu>
4591
4600
4592 * IPython/Magic.py: various replacements of self.rc for
4601 * IPython/Magic.py: various replacements of self.rc for
4593 self.shell.rc. A lot more remains to be done to fully disentangle
4602 self.shell.rc. A lot more remains to be done to fully disentangle
4594 this class from the main Shell class.
4603 this class from the main Shell class.
4595
4604
4596 * IPython/GnuplotRuntime.py: added checks for mouse support so
4605 * IPython/GnuplotRuntime.py: added checks for mouse support so
4597 that we don't try to enable it if the current gnuplot doesn't
4606 that we don't try to enable it if the current gnuplot doesn't
4598 really support it. Also added checks so that we don't try to
4607 really support it. Also added checks so that we don't try to
4599 enable persist under Windows (where Gnuplot doesn't recognize the
4608 enable persist under Windows (where Gnuplot doesn't recognize the
4600 option).
4609 option).
4601
4610
4602 * IPython/iplib.py (InteractiveShell.interact): Added optional
4611 * IPython/iplib.py (InteractiveShell.interact): Added optional
4603 auto-indenting code, after a patch by King C. Shu
4612 auto-indenting code, after a patch by King C. Shu
4604 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4613 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4605 get along well with pasting indented code. If I ever figure out
4614 get along well with pasting indented code. If I ever figure out
4606 how to make that part go well, it will become on by default.
4615 how to make that part go well, it will become on by default.
4607
4616
4608 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4617 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4609 crash ipython if there was an unmatched '%' in the user's prompt
4618 crash ipython if there was an unmatched '%' in the user's prompt
4610 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4619 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4611
4620
4612 * IPython/iplib.py (InteractiveShell.interact): removed the
4621 * IPython/iplib.py (InteractiveShell.interact): removed the
4613 ability to ask the user whether he wants to crash or not at the
4622 ability to ask the user whether he wants to crash or not at the
4614 'last line' exception handler. Calling functions at that point
4623 'last line' exception handler. Calling functions at that point
4615 changes the stack, and the error reports would have incorrect
4624 changes the stack, and the error reports would have incorrect
4616 tracebacks.
4625 tracebacks.
4617
4626
4618 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4627 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4619 pass through a peger a pretty-printed form of any object. After a
4628 pass through a peger a pretty-printed form of any object. After a
4620 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4629 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4621
4630
4622 2003-04-14 Fernando Perez <fperez@colorado.edu>
4631 2003-04-14 Fernando Perez <fperez@colorado.edu>
4623
4632
4624 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4633 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4625 all files in ~ would be modified at first install (instead of
4634 all files in ~ would be modified at first install (instead of
4626 ~/.ipython). This could be potentially disastrous, as the
4635 ~/.ipython). This could be potentially disastrous, as the
4627 modification (make line-endings native) could damage binary files.
4636 modification (make line-endings native) could damage binary files.
4628
4637
4629 2003-04-10 Fernando Perez <fperez@colorado.edu>
4638 2003-04-10 Fernando Perez <fperez@colorado.edu>
4630
4639
4631 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4640 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4632 handle only lines which are invalid python. This now means that
4641 handle only lines which are invalid python. This now means that
4633 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4642 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4634 for the bug report.
4643 for the bug report.
4635
4644
4636 2003-04-01 Fernando Perez <fperez@colorado.edu>
4645 2003-04-01 Fernando Perez <fperez@colorado.edu>
4637
4646
4638 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4647 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4639 where failing to set sys.last_traceback would crash pdb.pm().
4648 where failing to set sys.last_traceback would crash pdb.pm().
4640 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4649 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4641 report.
4650 report.
4642
4651
4643 2003-03-25 Fernando Perez <fperez@colorado.edu>
4652 2003-03-25 Fernando Perez <fperez@colorado.edu>
4644
4653
4645 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4654 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4646 before printing it (it had a lot of spurious blank lines at the
4655 before printing it (it had a lot of spurious blank lines at the
4647 end).
4656 end).
4648
4657
4649 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4658 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4650 output would be sent 21 times! Obviously people don't use this
4659 output would be sent 21 times! Obviously people don't use this
4651 too often, or I would have heard about it.
4660 too often, or I would have heard about it.
4652
4661
4653 2003-03-24 Fernando Perez <fperez@colorado.edu>
4662 2003-03-24 Fernando Perez <fperez@colorado.edu>
4654
4663
4655 * setup.py (scriptfiles): renamed the data_files parameter from
4664 * setup.py (scriptfiles): renamed the data_files parameter from
4656 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4665 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4657 for the patch.
4666 for the patch.
4658
4667
4659 2003-03-20 Fernando Perez <fperez@colorado.edu>
4668 2003-03-20 Fernando Perez <fperez@colorado.edu>
4660
4669
4661 * IPython/genutils.py (error): added error() and fatal()
4670 * IPython/genutils.py (error): added error() and fatal()
4662 functions.
4671 functions.
4663
4672
4664 2003-03-18 *** Released version 0.2.15pre3
4673 2003-03-18 *** Released version 0.2.15pre3
4665
4674
4666 2003-03-18 Fernando Perez <fperez@colorado.edu>
4675 2003-03-18 Fernando Perez <fperez@colorado.edu>
4667
4676
4668 * setupext/install_data_ext.py
4677 * setupext/install_data_ext.py
4669 (install_data_ext.initialize_options): Class contributed by Jack
4678 (install_data_ext.initialize_options): Class contributed by Jack
4670 Moffit for fixing the old distutils hack. He is sending this to
4679 Moffit for fixing the old distutils hack. He is sending this to
4671 the distutils folks so in the future we may not need it as a
4680 the distutils folks so in the future we may not need it as a
4672 private fix.
4681 private fix.
4673
4682
4674 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4683 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4675 changes for Debian packaging. See his patch for full details.
4684 changes for Debian packaging. See his patch for full details.
4676 The old distutils hack of making the ipythonrc* files carry a
4685 The old distutils hack of making the ipythonrc* files carry a
4677 bogus .py extension is gone, at last. Examples were moved to a
4686 bogus .py extension is gone, at last. Examples were moved to a
4678 separate subdir under doc/, and the separate executable scripts
4687 separate subdir under doc/, and the separate executable scripts
4679 now live in their own directory. Overall a great cleanup. The
4688 now live in their own directory. Overall a great cleanup. The
4680 manual was updated to use the new files, and setup.py has been
4689 manual was updated to use the new files, and setup.py has been
4681 fixed for this setup.
4690 fixed for this setup.
4682
4691
4683 * IPython/PyColorize.py (Parser.usage): made non-executable and
4692 * IPython/PyColorize.py (Parser.usage): made non-executable and
4684 created a pycolor wrapper around it to be included as a script.
4693 created a pycolor wrapper around it to be included as a script.
4685
4694
4686 2003-03-12 *** Released version 0.2.15pre2
4695 2003-03-12 *** Released version 0.2.15pre2
4687
4696
4688 2003-03-12 Fernando Perez <fperez@colorado.edu>
4697 2003-03-12 Fernando Perez <fperez@colorado.edu>
4689
4698
4690 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4699 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4691 long-standing problem with garbage characters in some terminals.
4700 long-standing problem with garbage characters in some terminals.
4692 The issue was really that the \001 and \002 escapes must _only_ be
4701 The issue was really that the \001 and \002 escapes must _only_ be
4693 passed to input prompts (which call readline), but _never_ to
4702 passed to input prompts (which call readline), but _never_ to
4694 normal text to be printed on screen. I changed ColorANSI to have
4703 normal text to be printed on screen. I changed ColorANSI to have
4695 two classes: TermColors and InputTermColors, each with the
4704 two classes: TermColors and InputTermColors, each with the
4696 appropriate escapes for input prompts or normal text. The code in
4705 appropriate escapes for input prompts or normal text. The code in
4697 Prompts.py got slightly more complicated, but this very old and
4706 Prompts.py got slightly more complicated, but this very old and
4698 annoying bug is finally fixed.
4707 annoying bug is finally fixed.
4699
4708
4700 All the credit for nailing down the real origin of this problem
4709 All the credit for nailing down the real origin of this problem
4701 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4710 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4702 *Many* thanks to him for spending quite a bit of effort on this.
4711 *Many* thanks to him for spending quite a bit of effort on this.
4703
4712
4704 2003-03-05 *** Released version 0.2.15pre1
4713 2003-03-05 *** Released version 0.2.15pre1
4705
4714
4706 2003-03-03 Fernando Perez <fperez@colorado.edu>
4715 2003-03-03 Fernando Perez <fperez@colorado.edu>
4707
4716
4708 * IPython/FakeModule.py: Moved the former _FakeModule to a
4717 * IPython/FakeModule.py: Moved the former _FakeModule to a
4709 separate file, because it's also needed by Magic (to fix a similar
4718 separate file, because it's also needed by Magic (to fix a similar
4710 pickle-related issue in @run).
4719 pickle-related issue in @run).
4711
4720
4712 2003-03-02 Fernando Perez <fperez@colorado.edu>
4721 2003-03-02 Fernando Perez <fperez@colorado.edu>
4713
4722
4714 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4723 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4715 the autocall option at runtime.
4724 the autocall option at runtime.
4716 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4725 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4717 across Magic.py to start separating Magic from InteractiveShell.
4726 across Magic.py to start separating Magic from InteractiveShell.
4718 (Magic._ofind): Fixed to return proper namespace for dotted
4727 (Magic._ofind): Fixed to return proper namespace for dotted
4719 names. Before, a dotted name would always return 'not currently
4728 names. Before, a dotted name would always return 'not currently
4720 defined', because it would find the 'parent'. s.x would be found,
4729 defined', because it would find the 'parent'. s.x would be found,
4721 but since 'x' isn't defined by itself, it would get confused.
4730 but since 'x' isn't defined by itself, it would get confused.
4722 (Magic.magic_run): Fixed pickling problems reported by Ralf
4731 (Magic.magic_run): Fixed pickling problems reported by Ralf
4723 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4732 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4724 that I'd used when Mike Heeter reported similar issues at the
4733 that I'd used when Mike Heeter reported similar issues at the
4725 top-level, but now for @run. It boils down to injecting the
4734 top-level, but now for @run. It boils down to injecting the
4726 namespace where code is being executed with something that looks
4735 namespace where code is being executed with something that looks
4727 enough like a module to fool pickle.dump(). Since a pickle stores
4736 enough like a module to fool pickle.dump(). Since a pickle stores
4728 a named reference to the importing module, we need this for
4737 a named reference to the importing module, we need this for
4729 pickles to save something sensible.
4738 pickles to save something sensible.
4730
4739
4731 * IPython/ipmaker.py (make_IPython): added an autocall option.
4740 * IPython/ipmaker.py (make_IPython): added an autocall option.
4732
4741
4733 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4742 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4734 the auto-eval code. Now autocalling is an option, and the code is
4743 the auto-eval code. Now autocalling is an option, and the code is
4735 also vastly safer. There is no more eval() involved at all.
4744 also vastly safer. There is no more eval() involved at all.
4736
4745
4737 2003-03-01 Fernando Perez <fperez@colorado.edu>
4746 2003-03-01 Fernando Perez <fperez@colorado.edu>
4738
4747
4739 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4748 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4740 dict with named keys instead of a tuple.
4749 dict with named keys instead of a tuple.
4741
4750
4742 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4751 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4743
4752
4744 * setup.py (make_shortcut): Fixed message about directories
4753 * setup.py (make_shortcut): Fixed message about directories
4745 created during Windows installation (the directories were ok, just
4754 created during Windows installation (the directories were ok, just
4746 the printed message was misleading). Thanks to Chris Liechti
4755 the printed message was misleading). Thanks to Chris Liechti
4747 <cliechti-AT-gmx.net> for the heads up.
4756 <cliechti-AT-gmx.net> for the heads up.
4748
4757
4749 2003-02-21 Fernando Perez <fperez@colorado.edu>
4758 2003-02-21 Fernando Perez <fperez@colorado.edu>
4750
4759
4751 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4760 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4752 of ValueError exception when checking for auto-execution. This
4761 of ValueError exception when checking for auto-execution. This
4753 one is raised by things like Numeric arrays arr.flat when the
4762 one is raised by things like Numeric arrays arr.flat when the
4754 array is non-contiguous.
4763 array is non-contiguous.
4755
4764
4756 2003-01-31 Fernando Perez <fperez@colorado.edu>
4765 2003-01-31 Fernando Perez <fperez@colorado.edu>
4757
4766
4758 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4767 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4759 not return any value at all (even though the command would get
4768 not return any value at all (even though the command would get
4760 executed).
4769 executed).
4761 (xsys): Flush stdout right after printing the command to ensure
4770 (xsys): Flush stdout right after printing the command to ensure
4762 proper ordering of commands and command output in the total
4771 proper ordering of commands and command output in the total
4763 output.
4772 output.
4764 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4773 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4765 system/getoutput as defaults. The old ones are kept for
4774 system/getoutput as defaults. The old ones are kept for
4766 compatibility reasons, so no code which uses this library needs
4775 compatibility reasons, so no code which uses this library needs
4767 changing.
4776 changing.
4768
4777
4769 2003-01-27 *** Released version 0.2.14
4778 2003-01-27 *** Released version 0.2.14
4770
4779
4771 2003-01-25 Fernando Perez <fperez@colorado.edu>
4780 2003-01-25 Fernando Perez <fperez@colorado.edu>
4772
4781
4773 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4782 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4774 functions defined in previous edit sessions could not be re-edited
4783 functions defined in previous edit sessions could not be re-edited
4775 (because the temp files were immediately removed). Now temp files
4784 (because the temp files were immediately removed). Now temp files
4776 are removed only at IPython's exit.
4785 are removed only at IPython's exit.
4777 (Magic.magic_run): Improved @run to perform shell-like expansions
4786 (Magic.magic_run): Improved @run to perform shell-like expansions
4778 on its arguments (~users and $VARS). With this, @run becomes more
4787 on its arguments (~users and $VARS). With this, @run becomes more
4779 like a normal command-line.
4788 like a normal command-line.
4780
4789
4781 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4790 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4782 bugs related to embedding and cleaned up that code. A fairly
4791 bugs related to embedding and cleaned up that code. A fairly
4783 important one was the impossibility to access the global namespace
4792 important one was the impossibility to access the global namespace
4784 through the embedded IPython (only local variables were visible).
4793 through the embedded IPython (only local variables were visible).
4785
4794
4786 2003-01-14 Fernando Perez <fperez@colorado.edu>
4795 2003-01-14 Fernando Perez <fperez@colorado.edu>
4787
4796
4788 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4797 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4789 auto-calling to be a bit more conservative. Now it doesn't get
4798 auto-calling to be a bit more conservative. Now it doesn't get
4790 triggered if any of '!=()<>' are in the rest of the input line, to
4799 triggered if any of '!=()<>' are in the rest of the input line, to
4791 allow comparing callables. Thanks to Alex for the heads up.
4800 allow comparing callables. Thanks to Alex for the heads up.
4792
4801
4793 2003-01-07 Fernando Perez <fperez@colorado.edu>
4802 2003-01-07 Fernando Perez <fperez@colorado.edu>
4794
4803
4795 * IPython/genutils.py (page): fixed estimation of the number of
4804 * IPython/genutils.py (page): fixed estimation of the number of
4796 lines in a string to be paged to simply count newlines. This
4805 lines in a string to be paged to simply count newlines. This
4797 prevents over-guessing due to embedded escape sequences. A better
4806 prevents over-guessing due to embedded escape sequences. A better
4798 long-term solution would involve stripping out the control chars
4807 long-term solution would involve stripping out the control chars
4799 for the count, but it's potentially so expensive I just don't
4808 for the count, but it's potentially so expensive I just don't
4800 think it's worth doing.
4809 think it's worth doing.
4801
4810
4802 2002-12-19 *** Released version 0.2.14pre50
4811 2002-12-19 *** Released version 0.2.14pre50
4803
4812
4804 2002-12-19 Fernando Perez <fperez@colorado.edu>
4813 2002-12-19 Fernando Perez <fperez@colorado.edu>
4805
4814
4806 * tools/release (version): Changed release scripts to inform
4815 * tools/release (version): Changed release scripts to inform
4807 Andrea and build a NEWS file with a list of recent changes.
4816 Andrea and build a NEWS file with a list of recent changes.
4808
4817
4809 * IPython/ColorANSI.py (__all__): changed terminal detection
4818 * IPython/ColorANSI.py (__all__): changed terminal detection
4810 code. Seems to work better for xterms without breaking
4819 code. Seems to work better for xterms without breaking
4811 konsole. Will need more testing to determine if WinXP and Mac OSX
4820 konsole. Will need more testing to determine if WinXP and Mac OSX
4812 also work ok.
4821 also work ok.
4813
4822
4814 2002-12-18 *** Released version 0.2.14pre49
4823 2002-12-18 *** Released version 0.2.14pre49
4815
4824
4816 2002-12-18 Fernando Perez <fperez@colorado.edu>
4825 2002-12-18 Fernando Perez <fperez@colorado.edu>
4817
4826
4818 * Docs: added new info about Mac OSX, from Andrea.
4827 * Docs: added new info about Mac OSX, from Andrea.
4819
4828
4820 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4829 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4821 allow direct plotting of python strings whose format is the same
4830 allow direct plotting of python strings whose format is the same
4822 of gnuplot data files.
4831 of gnuplot data files.
4823
4832
4824 2002-12-16 Fernando Perez <fperez@colorado.edu>
4833 2002-12-16 Fernando Perez <fperez@colorado.edu>
4825
4834
4826 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4835 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4827 value of exit question to be acknowledged.
4836 value of exit question to be acknowledged.
4828
4837
4829 2002-12-03 Fernando Perez <fperez@colorado.edu>
4838 2002-12-03 Fernando Perez <fperez@colorado.edu>
4830
4839
4831 * IPython/ipmaker.py: removed generators, which had been added
4840 * IPython/ipmaker.py: removed generators, which had been added
4832 by mistake in an earlier debugging run. This was causing trouble
4841 by mistake in an earlier debugging run. This was causing trouble
4833 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4842 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4834 for pointing this out.
4843 for pointing this out.
4835
4844
4836 2002-11-17 Fernando Perez <fperez@colorado.edu>
4845 2002-11-17 Fernando Perez <fperez@colorado.edu>
4837
4846
4838 * Manual: updated the Gnuplot section.
4847 * Manual: updated the Gnuplot section.
4839
4848
4840 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4849 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4841 a much better split of what goes in Runtime and what goes in
4850 a much better split of what goes in Runtime and what goes in
4842 Interactive.
4851 Interactive.
4843
4852
4844 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4853 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4845 being imported from iplib.
4854 being imported from iplib.
4846
4855
4847 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4856 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4848 for command-passing. Now the global Gnuplot instance is called
4857 for command-passing. Now the global Gnuplot instance is called
4849 'gp' instead of 'g', which was really a far too fragile and
4858 'gp' instead of 'g', which was really a far too fragile and
4850 common name.
4859 common name.
4851
4860
4852 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4861 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4853 bounding boxes generated by Gnuplot for square plots.
4862 bounding boxes generated by Gnuplot for square plots.
4854
4863
4855 * IPython/genutils.py (popkey): new function added. I should
4864 * IPython/genutils.py (popkey): new function added. I should
4856 suggest this on c.l.py as a dict method, it seems useful.
4865 suggest this on c.l.py as a dict method, it seems useful.
4857
4866
4858 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4867 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4859 to transparently handle PostScript generation. MUCH better than
4868 to transparently handle PostScript generation. MUCH better than
4860 the previous plot_eps/replot_eps (which I removed now). The code
4869 the previous plot_eps/replot_eps (which I removed now). The code
4861 is also fairly clean and well documented now (including
4870 is also fairly clean and well documented now (including
4862 docstrings).
4871 docstrings).
4863
4872
4864 2002-11-13 Fernando Perez <fperez@colorado.edu>
4873 2002-11-13 Fernando Perez <fperez@colorado.edu>
4865
4874
4866 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4875 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4867 (inconsistent with options).
4876 (inconsistent with options).
4868
4877
4869 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4878 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4870 manually disabled, I don't know why. Fixed it.
4879 manually disabled, I don't know why. Fixed it.
4871 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4880 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4872 eps output.
4881 eps output.
4873
4882
4874 2002-11-12 Fernando Perez <fperez@colorado.edu>
4883 2002-11-12 Fernando Perez <fperez@colorado.edu>
4875
4884
4876 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4885 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4877 don't propagate up to caller. Fixes crash reported by François
4886 don't propagate up to caller. Fixes crash reported by François
4878 Pinard.
4887 Pinard.
4879
4888
4880 2002-11-09 Fernando Perez <fperez@colorado.edu>
4889 2002-11-09 Fernando Perez <fperez@colorado.edu>
4881
4890
4882 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4891 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4883 history file for new users.
4892 history file for new users.
4884 (make_IPython): fixed bug where initial install would leave the
4893 (make_IPython): fixed bug where initial install would leave the
4885 user running in the .ipython dir.
4894 user running in the .ipython dir.
4886 (make_IPython): fixed bug where config dir .ipython would be
4895 (make_IPython): fixed bug where config dir .ipython would be
4887 created regardless of the given -ipythondir option. Thanks to Cory
4896 created regardless of the given -ipythondir option. Thanks to Cory
4888 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4897 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4889
4898
4890 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4899 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4891 type confirmations. Will need to use it in all of IPython's code
4900 type confirmations. Will need to use it in all of IPython's code
4892 consistently.
4901 consistently.
4893
4902
4894 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4903 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4895 context to print 31 lines instead of the default 5. This will make
4904 context to print 31 lines instead of the default 5. This will make
4896 the crash reports extremely detailed in case the problem is in
4905 the crash reports extremely detailed in case the problem is in
4897 libraries I don't have access to.
4906 libraries I don't have access to.
4898
4907
4899 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4908 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4900 line of defense' code to still crash, but giving users fair
4909 line of defense' code to still crash, but giving users fair
4901 warning. I don't want internal errors to go unreported: if there's
4910 warning. I don't want internal errors to go unreported: if there's
4902 an internal problem, IPython should crash and generate a full
4911 an internal problem, IPython should crash and generate a full
4903 report.
4912 report.
4904
4913
4905 2002-11-08 Fernando Perez <fperez@colorado.edu>
4914 2002-11-08 Fernando Perez <fperez@colorado.edu>
4906
4915
4907 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4916 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4908 otherwise uncaught exceptions which can appear if people set
4917 otherwise uncaught exceptions which can appear if people set
4909 sys.stdout to something badly broken. Thanks to a crash report
4918 sys.stdout to something badly broken. Thanks to a crash report
4910 from henni-AT-mail.brainbot.com.
4919 from henni-AT-mail.brainbot.com.
4911
4920
4912 2002-11-04 Fernando Perez <fperez@colorado.edu>
4921 2002-11-04 Fernando Perez <fperez@colorado.edu>
4913
4922
4914 * IPython/iplib.py (InteractiveShell.interact): added
4923 * IPython/iplib.py (InteractiveShell.interact): added
4915 __IPYTHON__active to the builtins. It's a flag which goes on when
4924 __IPYTHON__active to the builtins. It's a flag which goes on when
4916 the interaction starts and goes off again when it stops. This
4925 the interaction starts and goes off again when it stops. This
4917 allows embedding code to detect being inside IPython. Before this
4926 allows embedding code to detect being inside IPython. Before this
4918 was done via __IPYTHON__, but that only shows that an IPython
4927 was done via __IPYTHON__, but that only shows that an IPython
4919 instance has been created.
4928 instance has been created.
4920
4929
4921 * IPython/Magic.py (Magic.magic_env): I realized that in a
4930 * IPython/Magic.py (Magic.magic_env): I realized that in a
4922 UserDict, instance.data holds the data as a normal dict. So I
4931 UserDict, instance.data holds the data as a normal dict. So I
4923 modified @env to return os.environ.data instead of rebuilding a
4932 modified @env to return os.environ.data instead of rebuilding a
4924 dict by hand.
4933 dict by hand.
4925
4934
4926 2002-11-02 Fernando Perez <fperez@colorado.edu>
4935 2002-11-02 Fernando Perez <fperez@colorado.edu>
4927
4936
4928 * IPython/genutils.py (warn): changed so that level 1 prints no
4937 * IPython/genutils.py (warn): changed so that level 1 prints no
4929 header. Level 2 is now the default (with 'WARNING' header, as
4938 header. Level 2 is now the default (with 'WARNING' header, as
4930 before). I think I tracked all places where changes were needed in
4939 before). I think I tracked all places where changes were needed in
4931 IPython, but outside code using the old level numbering may have
4940 IPython, but outside code using the old level numbering may have
4932 broken.
4941 broken.
4933
4942
4934 * IPython/iplib.py (InteractiveShell.runcode): added this to
4943 * IPython/iplib.py (InteractiveShell.runcode): added this to
4935 handle the tracebacks in SystemExit traps correctly. The previous
4944 handle the tracebacks in SystemExit traps correctly. The previous
4936 code (through interact) was printing more of the stack than
4945 code (through interact) was printing more of the stack than
4937 necessary, showing IPython internal code to the user.
4946 necessary, showing IPython internal code to the user.
4938
4947
4939 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4948 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4940 default. Now that the default at the confirmation prompt is yes,
4949 default. Now that the default at the confirmation prompt is yes,
4941 it's not so intrusive. François' argument that ipython sessions
4950 it's not so intrusive. François' argument that ipython sessions
4942 tend to be complex enough not to lose them from an accidental C-d,
4951 tend to be complex enough not to lose them from an accidental C-d,
4943 is a valid one.
4952 is a valid one.
4944
4953
4945 * IPython/iplib.py (InteractiveShell.interact): added a
4954 * IPython/iplib.py (InteractiveShell.interact): added a
4946 showtraceback() call to the SystemExit trap, and modified the exit
4955 showtraceback() call to the SystemExit trap, and modified the exit
4947 confirmation to have yes as the default.
4956 confirmation to have yes as the default.
4948
4957
4949 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4958 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4950 this file. It's been gone from the code for a long time, this was
4959 this file. It's been gone from the code for a long time, this was
4951 simply leftover junk.
4960 simply leftover junk.
4952
4961
4953 2002-11-01 Fernando Perez <fperez@colorado.edu>
4962 2002-11-01 Fernando Perez <fperez@colorado.edu>
4954
4963
4955 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4964 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4956 added. If set, IPython now traps EOF and asks for
4965 added. If set, IPython now traps EOF and asks for
4957 confirmation. After a request by François Pinard.
4966 confirmation. After a request by François Pinard.
4958
4967
4959 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4968 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4960 of @abort, and with a new (better) mechanism for handling the
4969 of @abort, and with a new (better) mechanism for handling the
4961 exceptions.
4970 exceptions.
4962
4971
4963 2002-10-27 Fernando Perez <fperez@colorado.edu>
4972 2002-10-27 Fernando Perez <fperez@colorado.edu>
4964
4973
4965 * IPython/usage.py (__doc__): updated the --help information and
4974 * IPython/usage.py (__doc__): updated the --help information and
4966 the ipythonrc file to indicate that -log generates
4975 the ipythonrc file to indicate that -log generates
4967 ./ipython.log. Also fixed the corresponding info in @logstart.
4976 ./ipython.log. Also fixed the corresponding info in @logstart.
4968 This and several other fixes in the manuals thanks to reports by
4977 This and several other fixes in the manuals thanks to reports by
4969 François Pinard <pinard-AT-iro.umontreal.ca>.
4978 François Pinard <pinard-AT-iro.umontreal.ca>.
4970
4979
4971 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4980 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4972 refer to @logstart (instead of @log, which doesn't exist).
4981 refer to @logstart (instead of @log, which doesn't exist).
4973
4982
4974 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4983 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4975 AttributeError crash. Thanks to Christopher Armstrong
4984 AttributeError crash. Thanks to Christopher Armstrong
4976 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4985 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4977 introduced recently (in 0.2.14pre37) with the fix to the eval
4986 introduced recently (in 0.2.14pre37) with the fix to the eval
4978 problem mentioned below.
4987 problem mentioned below.
4979
4988
4980 2002-10-17 Fernando Perez <fperez@colorado.edu>
4989 2002-10-17 Fernando Perez <fperez@colorado.edu>
4981
4990
4982 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4991 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4983 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4992 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4984
4993
4985 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4994 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4986 this function to fix a problem reported by Alex Schmolck. He saw
4995 this function to fix a problem reported by Alex Schmolck. He saw
4987 it with list comprehensions and generators, which were getting
4996 it with list comprehensions and generators, which were getting
4988 called twice. The real problem was an 'eval' call in testing for
4997 called twice. The real problem was an 'eval' call in testing for
4989 automagic which was evaluating the input line silently.
4998 automagic which was evaluating the input line silently.
4990
4999
4991 This is a potentially very nasty bug, if the input has side
5000 This is a potentially very nasty bug, if the input has side
4992 effects which must not be repeated. The code is much cleaner now,
5001 effects which must not be repeated. The code is much cleaner now,
4993 without any blanket 'except' left and with a regexp test for
5002 without any blanket 'except' left and with a regexp test for
4994 actual function names.
5003 actual function names.
4995
5004
4996 But an eval remains, which I'm not fully comfortable with. I just
5005 But an eval remains, which I'm not fully comfortable with. I just
4997 don't know how to find out if an expression could be a callable in
5006 don't know how to find out if an expression could be a callable in
4998 the user's namespace without doing an eval on the string. However
5007 the user's namespace without doing an eval on the string. However
4999 that string is now much more strictly checked so that no code
5008 that string is now much more strictly checked so that no code
5000 slips by, so the eval should only happen for things that can
5009 slips by, so the eval should only happen for things that can
5001 really be only function/method names.
5010 really be only function/method names.
5002
5011
5003 2002-10-15 Fernando Perez <fperez@colorado.edu>
5012 2002-10-15 Fernando Perez <fperez@colorado.edu>
5004
5013
5005 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5014 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5006 OSX information to main manual, removed README_Mac_OSX file from
5015 OSX information to main manual, removed README_Mac_OSX file from
5007 distribution. Also updated credits for recent additions.
5016 distribution. Also updated credits for recent additions.
5008
5017
5009 2002-10-10 Fernando Perez <fperez@colorado.edu>
5018 2002-10-10 Fernando Perez <fperez@colorado.edu>
5010
5019
5011 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5020 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5012 terminal-related issues. Many thanks to Andrea Riciputi
5021 terminal-related issues. Many thanks to Andrea Riciputi
5013 <andrea.riciputi-AT-libero.it> for writing it.
5022 <andrea.riciputi-AT-libero.it> for writing it.
5014
5023
5015 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5024 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5016 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5025 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5017
5026
5018 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5027 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5019 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5028 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5020 <syver-en-AT-online.no> who both submitted patches for this problem.
5029 <syver-en-AT-online.no> who both submitted patches for this problem.
5021
5030
5022 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5031 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5023 global embedding to make sure that things don't overwrite user
5032 global embedding to make sure that things don't overwrite user
5024 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5033 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5025
5034
5026 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5035 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5027 compatibility. Thanks to Hayden Callow
5036 compatibility. Thanks to Hayden Callow
5028 <h.callow-AT-elec.canterbury.ac.nz>
5037 <h.callow-AT-elec.canterbury.ac.nz>
5029
5038
5030 2002-10-04 Fernando Perez <fperez@colorado.edu>
5039 2002-10-04 Fernando Perez <fperez@colorado.edu>
5031
5040
5032 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5041 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5033 Gnuplot.File objects.
5042 Gnuplot.File objects.
5034
5043
5035 2002-07-23 Fernando Perez <fperez@colorado.edu>
5044 2002-07-23 Fernando Perez <fperez@colorado.edu>
5036
5045
5037 * IPython/genutils.py (timing): Added timings() and timing() for
5046 * IPython/genutils.py (timing): Added timings() and timing() for
5038 quick access to the most commonly needed data, the execution
5047 quick access to the most commonly needed data, the execution
5039 times. Old timing() renamed to timings_out().
5048 times. Old timing() renamed to timings_out().
5040
5049
5041 2002-07-18 Fernando Perez <fperez@colorado.edu>
5050 2002-07-18 Fernando Perez <fperez@colorado.edu>
5042
5051
5043 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5052 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5044 bug with nested instances disrupting the parent's tab completion.
5053 bug with nested instances disrupting the parent's tab completion.
5045
5054
5046 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5055 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5047 all_completions code to begin the emacs integration.
5056 all_completions code to begin the emacs integration.
5048
5057
5049 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5058 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5050 argument to allow titling individual arrays when plotting.
5059 argument to allow titling individual arrays when plotting.
5051
5060
5052 2002-07-15 Fernando Perez <fperez@colorado.edu>
5061 2002-07-15 Fernando Perez <fperez@colorado.edu>
5053
5062
5054 * setup.py (make_shortcut): changed to retrieve the value of
5063 * setup.py (make_shortcut): changed to retrieve the value of
5055 'Program Files' directory from the registry (this value changes in
5064 'Program Files' directory from the registry (this value changes in
5056 non-english versions of Windows). Thanks to Thomas Fanslau
5065 non-english versions of Windows). Thanks to Thomas Fanslau
5057 <tfanslau-AT-gmx.de> for the report.
5066 <tfanslau-AT-gmx.de> for the report.
5058
5067
5059 2002-07-10 Fernando Perez <fperez@colorado.edu>
5068 2002-07-10 Fernando Perez <fperez@colorado.edu>
5060
5069
5061 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5070 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5062 a bug in pdb, which crashes if a line with only whitespace is
5071 a bug in pdb, which crashes if a line with only whitespace is
5063 entered. Bug report submitted to sourceforge.
5072 entered. Bug report submitted to sourceforge.
5064
5073
5065 2002-07-09 Fernando Perez <fperez@colorado.edu>
5074 2002-07-09 Fernando Perez <fperez@colorado.edu>
5066
5075
5067 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5076 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5068 reporting exceptions (it's a bug in inspect.py, I just set a
5077 reporting exceptions (it's a bug in inspect.py, I just set a
5069 workaround).
5078 workaround).
5070
5079
5071 2002-07-08 Fernando Perez <fperez@colorado.edu>
5080 2002-07-08 Fernando Perez <fperez@colorado.edu>
5072
5081
5073 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5082 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5074 __IPYTHON__ in __builtins__ to show up in user_ns.
5083 __IPYTHON__ in __builtins__ to show up in user_ns.
5075
5084
5076 2002-07-03 Fernando Perez <fperez@colorado.edu>
5085 2002-07-03 Fernando Perez <fperez@colorado.edu>
5077
5086
5078 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5087 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5079 name from @gp_set_instance to @gp_set_default.
5088 name from @gp_set_instance to @gp_set_default.
5080
5089
5081 * IPython/ipmaker.py (make_IPython): default editor value set to
5090 * IPython/ipmaker.py (make_IPython): default editor value set to
5082 '0' (a string), to match the rc file. Otherwise will crash when
5091 '0' (a string), to match the rc file. Otherwise will crash when
5083 .strip() is called on it.
5092 .strip() is called on it.
5084
5093
5085
5094
5086 2002-06-28 Fernando Perez <fperez@colorado.edu>
5095 2002-06-28 Fernando Perez <fperez@colorado.edu>
5087
5096
5088 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5097 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5089 of files in current directory when a file is executed via
5098 of files in current directory when a file is executed via
5090 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5099 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5091
5100
5092 * setup.py (manfiles): fix for rpm builds, submitted by RA
5101 * setup.py (manfiles): fix for rpm builds, submitted by RA
5093 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5102 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5094
5103
5095 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5104 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5096 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5105 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5097 string!). A. Schmolck caught this one.
5106 string!). A. Schmolck caught this one.
5098
5107
5099 2002-06-27 Fernando Perez <fperez@colorado.edu>
5108 2002-06-27 Fernando Perez <fperez@colorado.edu>
5100
5109
5101 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5110 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5102 defined files at the cmd line. __name__ wasn't being set to
5111 defined files at the cmd line. __name__ wasn't being set to
5103 __main__.
5112 __main__.
5104
5113
5105 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5114 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5106 regular lists and tuples besides Numeric arrays.
5115 regular lists and tuples besides Numeric arrays.
5107
5116
5108 * IPython/Prompts.py (CachedOutput.__call__): Added output
5117 * IPython/Prompts.py (CachedOutput.__call__): Added output
5109 supression for input ending with ';'. Similar to Mathematica and
5118 supression for input ending with ';'. Similar to Mathematica and
5110 Matlab. The _* vars and Out[] list are still updated, just like
5119 Matlab. The _* vars and Out[] list are still updated, just like
5111 Mathematica behaves.
5120 Mathematica behaves.
5112
5121
5113 2002-06-25 Fernando Perez <fperez@colorado.edu>
5122 2002-06-25 Fernando Perez <fperez@colorado.edu>
5114
5123
5115 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5124 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5116 .ini extensions for profiels under Windows.
5125 .ini extensions for profiels under Windows.
5117
5126
5118 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5127 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5119 string form. Fix contributed by Alexander Schmolck
5128 string form. Fix contributed by Alexander Schmolck
5120 <a.schmolck-AT-gmx.net>
5129 <a.schmolck-AT-gmx.net>
5121
5130
5122 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5131 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5123 pre-configured Gnuplot instance.
5132 pre-configured Gnuplot instance.
5124
5133
5125 2002-06-21 Fernando Perez <fperez@colorado.edu>
5134 2002-06-21 Fernando Perez <fperez@colorado.edu>
5126
5135
5127 * IPython/numutils.py (exp_safe): new function, works around the
5136 * IPython/numutils.py (exp_safe): new function, works around the
5128 underflow problems in Numeric.
5137 underflow problems in Numeric.
5129 (log2): New fn. Safe log in base 2: returns exact integer answer
5138 (log2): New fn. Safe log in base 2: returns exact integer answer
5130 for exact integer powers of 2.
5139 for exact integer powers of 2.
5131
5140
5132 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5141 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5133 properly.
5142 properly.
5134
5143
5135 2002-06-20 Fernando Perez <fperez@colorado.edu>
5144 2002-06-20 Fernando Perez <fperez@colorado.edu>
5136
5145
5137 * IPython/genutils.py (timing): new function like
5146 * IPython/genutils.py (timing): new function like
5138 Mathematica's. Similar to time_test, but returns more info.
5147 Mathematica's. Similar to time_test, but returns more info.
5139
5148
5140 2002-06-18 Fernando Perez <fperez@colorado.edu>
5149 2002-06-18 Fernando Perez <fperez@colorado.edu>
5141
5150
5142 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5151 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5143 according to Mike Heeter's suggestions.
5152 according to Mike Heeter's suggestions.
5144
5153
5145 2002-06-16 Fernando Perez <fperez@colorado.edu>
5154 2002-06-16 Fernando Perez <fperez@colorado.edu>
5146
5155
5147 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5156 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5148 system. GnuplotMagic is gone as a user-directory option. New files
5157 system. GnuplotMagic is gone as a user-directory option. New files
5149 make it easier to use all the gnuplot stuff both from external
5158 make it easier to use all the gnuplot stuff both from external
5150 programs as well as from IPython. Had to rewrite part of
5159 programs as well as from IPython. Had to rewrite part of
5151 hardcopy() b/c of a strange bug: often the ps files simply don't
5160 hardcopy() b/c of a strange bug: often the ps files simply don't
5152 get created, and require a repeat of the command (often several
5161 get created, and require a repeat of the command (often several
5153 times).
5162 times).
5154
5163
5155 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5164 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5156 resolve output channel at call time, so that if sys.stderr has
5165 resolve output channel at call time, so that if sys.stderr has
5157 been redirected by user this gets honored.
5166 been redirected by user this gets honored.
5158
5167
5159 2002-06-13 Fernando Perez <fperez@colorado.edu>
5168 2002-06-13 Fernando Perez <fperez@colorado.edu>
5160
5169
5161 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5170 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5162 IPShell. Kept a copy with the old names to avoid breaking people's
5171 IPShell. Kept a copy with the old names to avoid breaking people's
5163 embedded code.
5172 embedded code.
5164
5173
5165 * IPython/ipython: simplified it to the bare minimum after
5174 * IPython/ipython: simplified it to the bare minimum after
5166 Holger's suggestions. Added info about how to use it in
5175 Holger's suggestions. Added info about how to use it in
5167 PYTHONSTARTUP.
5176 PYTHONSTARTUP.
5168
5177
5169 * IPython/Shell.py (IPythonShell): changed the options passing
5178 * IPython/Shell.py (IPythonShell): changed the options passing
5170 from a string with funky %s replacements to a straight list. Maybe
5179 from a string with funky %s replacements to a straight list. Maybe
5171 a bit more typing, but it follows sys.argv conventions, so there's
5180 a bit more typing, but it follows sys.argv conventions, so there's
5172 less special-casing to remember.
5181 less special-casing to remember.
5173
5182
5174 2002-06-12 Fernando Perez <fperez@colorado.edu>
5183 2002-06-12 Fernando Perez <fperez@colorado.edu>
5175
5184
5176 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5185 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5177 command. Thanks to a suggestion by Mike Heeter.
5186 command. Thanks to a suggestion by Mike Heeter.
5178 (Magic.magic_pfile): added behavior to look at filenames if given
5187 (Magic.magic_pfile): added behavior to look at filenames if given
5179 arg is not a defined object.
5188 arg is not a defined object.
5180 (Magic.magic_save): New @save function to save code snippets. Also
5189 (Magic.magic_save): New @save function to save code snippets. Also
5181 a Mike Heeter idea.
5190 a Mike Heeter idea.
5182
5191
5183 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5192 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5184 plot() and replot(). Much more convenient now, especially for
5193 plot() and replot(). Much more convenient now, especially for
5185 interactive use.
5194 interactive use.
5186
5195
5187 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5196 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5188 filenames.
5197 filenames.
5189
5198
5190 2002-06-02 Fernando Perez <fperez@colorado.edu>
5199 2002-06-02 Fernando Perez <fperez@colorado.edu>
5191
5200
5192 * IPython/Struct.py (Struct.__init__): modified to admit
5201 * IPython/Struct.py (Struct.__init__): modified to admit
5193 initialization via another struct.
5202 initialization via another struct.
5194
5203
5195 * IPython/genutils.py (SystemExec.__init__): New stateful
5204 * IPython/genutils.py (SystemExec.__init__): New stateful
5196 interface to xsys and bq. Useful for writing system scripts.
5205 interface to xsys and bq. Useful for writing system scripts.
5197
5206
5198 2002-05-30 Fernando Perez <fperez@colorado.edu>
5207 2002-05-30 Fernando Perez <fperez@colorado.edu>
5199
5208
5200 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5209 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5201 documents. This will make the user download smaller (it's getting
5210 documents. This will make the user download smaller (it's getting
5202 too big).
5211 too big).
5203
5212
5204 2002-05-29 Fernando Perez <fperez@colorado.edu>
5213 2002-05-29 Fernando Perez <fperez@colorado.edu>
5205
5214
5206 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5215 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5207 fix problems with shelve and pickle. Seems to work, but I don't
5216 fix problems with shelve and pickle. Seems to work, but I don't
5208 know if corner cases break it. Thanks to Mike Heeter
5217 know if corner cases break it. Thanks to Mike Heeter
5209 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5218 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5210
5219
5211 2002-05-24 Fernando Perez <fperez@colorado.edu>
5220 2002-05-24 Fernando Perez <fperez@colorado.edu>
5212
5221
5213 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5222 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5214 macros having broken.
5223 macros having broken.
5215
5224
5216 2002-05-21 Fernando Perez <fperez@colorado.edu>
5225 2002-05-21 Fernando Perez <fperez@colorado.edu>
5217
5226
5218 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5227 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5219 introduced logging bug: all history before logging started was
5228 introduced logging bug: all history before logging started was
5220 being written one character per line! This came from the redesign
5229 being written one character per line! This came from the redesign
5221 of the input history as a special list which slices to strings,
5230 of the input history as a special list which slices to strings,
5222 not to lists.
5231 not to lists.
5223
5232
5224 2002-05-20 Fernando Perez <fperez@colorado.edu>
5233 2002-05-20 Fernando Perez <fperez@colorado.edu>
5225
5234
5226 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5235 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5227 be an attribute of all classes in this module. The design of these
5236 be an attribute of all classes in this module. The design of these
5228 classes needs some serious overhauling.
5237 classes needs some serious overhauling.
5229
5238
5230 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5239 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5231 which was ignoring '_' in option names.
5240 which was ignoring '_' in option names.
5232
5241
5233 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5242 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5234 'Verbose_novars' to 'Context' and made it the new default. It's a
5243 'Verbose_novars' to 'Context' and made it the new default. It's a
5235 bit more readable and also safer than verbose.
5244 bit more readable and also safer than verbose.
5236
5245
5237 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5246 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5238 triple-quoted strings.
5247 triple-quoted strings.
5239
5248
5240 * IPython/OInspect.py (__all__): new module exposing the object
5249 * IPython/OInspect.py (__all__): new module exposing the object
5241 introspection facilities. Now the corresponding magics are dummy
5250 introspection facilities. Now the corresponding magics are dummy
5242 wrappers around this. Having this module will make it much easier
5251 wrappers around this. Having this module will make it much easier
5243 to put these functions into our modified pdb.
5252 to put these functions into our modified pdb.
5244 This new object inspector system uses the new colorizing module,
5253 This new object inspector system uses the new colorizing module,
5245 so source code and other things are nicely syntax highlighted.
5254 so source code and other things are nicely syntax highlighted.
5246
5255
5247 2002-05-18 Fernando Perez <fperez@colorado.edu>
5256 2002-05-18 Fernando Perez <fperez@colorado.edu>
5248
5257
5249 * IPython/ColorANSI.py: Split the coloring tools into a separate
5258 * IPython/ColorANSI.py: Split the coloring tools into a separate
5250 module so I can use them in other code easier (they were part of
5259 module so I can use them in other code easier (they were part of
5251 ultraTB).
5260 ultraTB).
5252
5261
5253 2002-05-17 Fernando Perez <fperez@colorado.edu>
5262 2002-05-17 Fernando Perez <fperez@colorado.edu>
5254
5263
5255 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5264 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5256 fixed it to set the global 'g' also to the called instance, as
5265 fixed it to set the global 'g' also to the called instance, as
5257 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5266 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5258 user's 'g' variables).
5267 user's 'g' variables).
5259
5268
5260 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5269 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5261 global variables (aliases to _ih,_oh) so that users which expect
5270 global variables (aliases to _ih,_oh) so that users which expect
5262 In[5] or Out[7] to work aren't unpleasantly surprised.
5271 In[5] or Out[7] to work aren't unpleasantly surprised.
5263 (InputList.__getslice__): new class to allow executing slices of
5272 (InputList.__getslice__): new class to allow executing slices of
5264 input history directly. Very simple class, complements the use of
5273 input history directly. Very simple class, complements the use of
5265 macros.
5274 macros.
5266
5275
5267 2002-05-16 Fernando Perez <fperez@colorado.edu>
5276 2002-05-16 Fernando Perez <fperez@colorado.edu>
5268
5277
5269 * setup.py (docdirbase): make doc directory be just doc/IPython
5278 * setup.py (docdirbase): make doc directory be just doc/IPython
5270 without version numbers, it will reduce clutter for users.
5279 without version numbers, it will reduce clutter for users.
5271
5280
5272 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5281 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5273 execfile call to prevent possible memory leak. See for details:
5282 execfile call to prevent possible memory leak. See for details:
5274 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5283 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5275
5284
5276 2002-05-15 Fernando Perez <fperez@colorado.edu>
5285 2002-05-15 Fernando Perez <fperez@colorado.edu>
5277
5286
5278 * IPython/Magic.py (Magic.magic_psource): made the object
5287 * IPython/Magic.py (Magic.magic_psource): made the object
5279 introspection names be more standard: pdoc, pdef, pfile and
5288 introspection names be more standard: pdoc, pdef, pfile and
5280 psource. They all print/page their output, and it makes
5289 psource. They all print/page their output, and it makes
5281 remembering them easier. Kept old names for compatibility as
5290 remembering them easier. Kept old names for compatibility as
5282 aliases.
5291 aliases.
5283
5292
5284 2002-05-14 Fernando Perez <fperez@colorado.edu>
5293 2002-05-14 Fernando Perez <fperez@colorado.edu>
5285
5294
5286 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5295 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5287 what the mouse problem was. The trick is to use gnuplot with temp
5296 what the mouse problem was. The trick is to use gnuplot with temp
5288 files and NOT with pipes (for data communication), because having
5297 files and NOT with pipes (for data communication), because having
5289 both pipes and the mouse on is bad news.
5298 both pipes and the mouse on is bad news.
5290
5299
5291 2002-05-13 Fernando Perez <fperez@colorado.edu>
5300 2002-05-13 Fernando Perez <fperez@colorado.edu>
5292
5301
5293 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5302 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5294 bug. Information would be reported about builtins even when
5303 bug. Information would be reported about builtins even when
5295 user-defined functions overrode them.
5304 user-defined functions overrode them.
5296
5305
5297 2002-05-11 Fernando Perez <fperez@colorado.edu>
5306 2002-05-11 Fernando Perez <fperez@colorado.edu>
5298
5307
5299 * IPython/__init__.py (__all__): removed FlexCompleter from
5308 * IPython/__init__.py (__all__): removed FlexCompleter from
5300 __all__ so that things don't fail in platforms without readline.
5309 __all__ so that things don't fail in platforms without readline.
5301
5310
5302 2002-05-10 Fernando Perez <fperez@colorado.edu>
5311 2002-05-10 Fernando Perez <fperez@colorado.edu>
5303
5312
5304 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5313 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5305 it requires Numeric, effectively making Numeric a dependency for
5314 it requires Numeric, effectively making Numeric a dependency for
5306 IPython.
5315 IPython.
5307
5316
5308 * Released 0.2.13
5317 * Released 0.2.13
5309
5318
5310 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5319 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5311 profiler interface. Now all the major options from the profiler
5320 profiler interface. Now all the major options from the profiler
5312 module are directly supported in IPython, both for single
5321 module are directly supported in IPython, both for single
5313 expressions (@prun) and for full programs (@run -p).
5322 expressions (@prun) and for full programs (@run -p).
5314
5323
5315 2002-05-09 Fernando Perez <fperez@colorado.edu>
5324 2002-05-09 Fernando Perez <fperez@colorado.edu>
5316
5325
5317 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5326 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5318 magic properly formatted for screen.
5327 magic properly formatted for screen.
5319
5328
5320 * setup.py (make_shortcut): Changed things to put pdf version in
5329 * setup.py (make_shortcut): Changed things to put pdf version in
5321 doc/ instead of doc/manual (had to change lyxport a bit).
5330 doc/ instead of doc/manual (had to change lyxport a bit).
5322
5331
5323 * IPython/Magic.py (Profile.string_stats): made profile runs go
5332 * IPython/Magic.py (Profile.string_stats): made profile runs go
5324 through pager (they are long and a pager allows searching, saving,
5333 through pager (they are long and a pager allows searching, saving,
5325 etc.)
5334 etc.)
5326
5335
5327 2002-05-08 Fernando Perez <fperez@colorado.edu>
5336 2002-05-08 Fernando Perez <fperez@colorado.edu>
5328
5337
5329 * Released 0.2.12
5338 * Released 0.2.12
5330
5339
5331 2002-05-06 Fernando Perez <fperez@colorado.edu>
5340 2002-05-06 Fernando Perez <fperez@colorado.edu>
5332
5341
5333 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5342 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5334 introduced); 'hist n1 n2' was broken.
5343 introduced); 'hist n1 n2' was broken.
5335 (Magic.magic_pdb): added optional on/off arguments to @pdb
5344 (Magic.magic_pdb): added optional on/off arguments to @pdb
5336 (Magic.magic_run): added option -i to @run, which executes code in
5345 (Magic.magic_run): added option -i to @run, which executes code in
5337 the IPython namespace instead of a clean one. Also added @irun as
5346 the IPython namespace instead of a clean one. Also added @irun as
5338 an alias to @run -i.
5347 an alias to @run -i.
5339
5348
5340 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5349 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5341 fixed (it didn't really do anything, the namespaces were wrong).
5350 fixed (it didn't really do anything, the namespaces were wrong).
5342
5351
5343 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5352 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5344
5353
5345 * IPython/__init__.py (__all__): Fixed package namespace, now
5354 * IPython/__init__.py (__all__): Fixed package namespace, now
5346 'import IPython' does give access to IPython.<all> as
5355 'import IPython' does give access to IPython.<all> as
5347 expected. Also renamed __release__ to Release.
5356 expected. Also renamed __release__ to Release.
5348
5357
5349 * IPython/Debugger.py (__license__): created new Pdb class which
5358 * IPython/Debugger.py (__license__): created new Pdb class which
5350 functions like a drop-in for the normal pdb.Pdb but does NOT
5359 functions like a drop-in for the normal pdb.Pdb but does NOT
5351 import readline by default. This way it doesn't muck up IPython's
5360 import readline by default. This way it doesn't muck up IPython's
5352 readline handling, and now tab-completion finally works in the
5361 readline handling, and now tab-completion finally works in the
5353 debugger -- sort of. It completes things globally visible, but the
5362 debugger -- sort of. It completes things globally visible, but the
5354 completer doesn't track the stack as pdb walks it. That's a bit
5363 completer doesn't track the stack as pdb walks it. That's a bit
5355 tricky, and I'll have to implement it later.
5364 tricky, and I'll have to implement it later.
5356
5365
5357 2002-05-05 Fernando Perez <fperez@colorado.edu>
5366 2002-05-05 Fernando Perez <fperez@colorado.edu>
5358
5367
5359 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5368 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5360 magic docstrings when printed via ? (explicit \'s were being
5369 magic docstrings when printed via ? (explicit \'s were being
5361 printed).
5370 printed).
5362
5371
5363 * IPython/ipmaker.py (make_IPython): fixed namespace
5372 * IPython/ipmaker.py (make_IPython): fixed namespace
5364 identification bug. Now variables loaded via logs or command-line
5373 identification bug. Now variables loaded via logs or command-line
5365 files are recognized in the interactive namespace by @who.
5374 files are recognized in the interactive namespace by @who.
5366
5375
5367 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5376 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5368 log replay system stemming from the string form of Structs.
5377 log replay system stemming from the string form of Structs.
5369
5378
5370 * IPython/Magic.py (Macro.__init__): improved macros to properly
5379 * IPython/Magic.py (Macro.__init__): improved macros to properly
5371 handle magic commands in them.
5380 handle magic commands in them.
5372 (Magic.magic_logstart): usernames are now expanded so 'logstart
5381 (Magic.magic_logstart): usernames are now expanded so 'logstart
5373 ~/mylog' now works.
5382 ~/mylog' now works.
5374
5383
5375 * IPython/iplib.py (complete): fixed bug where paths starting with
5384 * IPython/iplib.py (complete): fixed bug where paths starting with
5376 '/' would be completed as magic names.
5385 '/' would be completed as magic names.
5377
5386
5378 2002-05-04 Fernando Perez <fperez@colorado.edu>
5387 2002-05-04 Fernando Perez <fperez@colorado.edu>
5379
5388
5380 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5389 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5381 allow running full programs under the profiler's control.
5390 allow running full programs under the profiler's control.
5382
5391
5383 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5392 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5384 mode to report exceptions verbosely but without formatting
5393 mode to report exceptions verbosely but without formatting
5385 variables. This addresses the issue of ipython 'freezing' (it's
5394 variables. This addresses the issue of ipython 'freezing' (it's
5386 not frozen, but caught in an expensive formatting loop) when huge
5395 not frozen, but caught in an expensive formatting loop) when huge
5387 variables are in the context of an exception.
5396 variables are in the context of an exception.
5388 (VerboseTB.text): Added '--->' markers at line where exception was
5397 (VerboseTB.text): Added '--->' markers at line where exception was
5389 triggered. Much clearer to read, especially in NoColor modes.
5398 triggered. Much clearer to read, especially in NoColor modes.
5390
5399
5391 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5400 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5392 implemented in reverse when changing to the new parse_options().
5401 implemented in reverse when changing to the new parse_options().
5393
5402
5394 2002-05-03 Fernando Perez <fperez@colorado.edu>
5403 2002-05-03 Fernando Perez <fperez@colorado.edu>
5395
5404
5396 * IPython/Magic.py (Magic.parse_options): new function so that
5405 * IPython/Magic.py (Magic.parse_options): new function so that
5397 magics can parse options easier.
5406 magics can parse options easier.
5398 (Magic.magic_prun): new function similar to profile.run(),
5407 (Magic.magic_prun): new function similar to profile.run(),
5399 suggested by Chris Hart.
5408 suggested by Chris Hart.
5400 (Magic.magic_cd): fixed behavior so that it only changes if
5409 (Magic.magic_cd): fixed behavior so that it only changes if
5401 directory actually is in history.
5410 directory actually is in history.
5402
5411
5403 * IPython/usage.py (__doc__): added information about potential
5412 * IPython/usage.py (__doc__): added information about potential
5404 slowness of Verbose exception mode when there are huge data
5413 slowness of Verbose exception mode when there are huge data
5405 structures to be formatted (thanks to Archie Paulson).
5414 structures to be formatted (thanks to Archie Paulson).
5406
5415
5407 * IPython/ipmaker.py (make_IPython): Changed default logging
5416 * IPython/ipmaker.py (make_IPython): Changed default logging
5408 (when simply called with -log) to use curr_dir/ipython.log in
5417 (when simply called with -log) to use curr_dir/ipython.log in
5409 rotate mode. Fixed crash which was occuring with -log before
5418 rotate mode. Fixed crash which was occuring with -log before
5410 (thanks to Jim Boyle).
5419 (thanks to Jim Boyle).
5411
5420
5412 2002-05-01 Fernando Perez <fperez@colorado.edu>
5421 2002-05-01 Fernando Perez <fperez@colorado.edu>
5413
5422
5414 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5423 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5415 was nasty -- though somewhat of a corner case).
5424 was nasty -- though somewhat of a corner case).
5416
5425
5417 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5426 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5418 text (was a bug).
5427 text (was a bug).
5419
5428
5420 2002-04-30 Fernando Perez <fperez@colorado.edu>
5429 2002-04-30 Fernando Perez <fperez@colorado.edu>
5421
5430
5422 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5431 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5423 a print after ^D or ^C from the user so that the In[] prompt
5432 a print after ^D or ^C from the user so that the In[] prompt
5424 doesn't over-run the gnuplot one.
5433 doesn't over-run the gnuplot one.
5425
5434
5426 2002-04-29 Fernando Perez <fperez@colorado.edu>
5435 2002-04-29 Fernando Perez <fperez@colorado.edu>
5427
5436
5428 * Released 0.2.10
5437 * Released 0.2.10
5429
5438
5430 * IPython/__release__.py (version): get date dynamically.
5439 * IPython/__release__.py (version): get date dynamically.
5431
5440
5432 * Misc. documentation updates thanks to Arnd's comments. Also ran
5441 * Misc. documentation updates thanks to Arnd's comments. Also ran
5433 a full spellcheck on the manual (hadn't been done in a while).
5442 a full spellcheck on the manual (hadn't been done in a while).
5434
5443
5435 2002-04-27 Fernando Perez <fperez@colorado.edu>
5444 2002-04-27 Fernando Perez <fperez@colorado.edu>
5436
5445
5437 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5446 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5438 starting a log in mid-session would reset the input history list.
5447 starting a log in mid-session would reset the input history list.
5439
5448
5440 2002-04-26 Fernando Perez <fperez@colorado.edu>
5449 2002-04-26 Fernando Perez <fperez@colorado.edu>
5441
5450
5442 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5451 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5443 all files were being included in an update. Now anything in
5452 all files were being included in an update. Now anything in
5444 UserConfig that matches [A-Za-z]*.py will go (this excludes
5453 UserConfig that matches [A-Za-z]*.py will go (this excludes
5445 __init__.py)
5454 __init__.py)
5446
5455
5447 2002-04-25 Fernando Perez <fperez@colorado.edu>
5456 2002-04-25 Fernando Perez <fperez@colorado.edu>
5448
5457
5449 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5458 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5450 to __builtins__ so that any form of embedded or imported code can
5459 to __builtins__ so that any form of embedded or imported code can
5451 test for being inside IPython.
5460 test for being inside IPython.
5452
5461
5453 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5462 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5454 changed to GnuplotMagic because it's now an importable module,
5463 changed to GnuplotMagic because it's now an importable module,
5455 this makes the name follow that of the standard Gnuplot module.
5464 this makes the name follow that of the standard Gnuplot module.
5456 GnuplotMagic can now be loaded at any time in mid-session.
5465 GnuplotMagic can now be loaded at any time in mid-session.
5457
5466
5458 2002-04-24 Fernando Perez <fperez@colorado.edu>
5467 2002-04-24 Fernando Perez <fperez@colorado.edu>
5459
5468
5460 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5469 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5461 the globals (IPython has its own namespace) and the
5470 the globals (IPython has its own namespace) and the
5462 PhysicalQuantity stuff is much better anyway.
5471 PhysicalQuantity stuff is much better anyway.
5463
5472
5464 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5473 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5465 embedding example to standard user directory for
5474 embedding example to standard user directory for
5466 distribution. Also put it in the manual.
5475 distribution. Also put it in the manual.
5467
5476
5468 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5477 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5469 instance as first argument (so it doesn't rely on some obscure
5478 instance as first argument (so it doesn't rely on some obscure
5470 hidden global).
5479 hidden global).
5471
5480
5472 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5481 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5473 delimiters. While it prevents ().TAB from working, it allows
5482 delimiters. While it prevents ().TAB from working, it allows
5474 completions in open (... expressions. This is by far a more common
5483 completions in open (... expressions. This is by far a more common
5475 case.
5484 case.
5476
5485
5477 2002-04-23 Fernando Perez <fperez@colorado.edu>
5486 2002-04-23 Fernando Perez <fperez@colorado.edu>
5478
5487
5479 * IPython/Extensions/InterpreterPasteInput.py: new
5488 * IPython/Extensions/InterpreterPasteInput.py: new
5480 syntax-processing module for pasting lines with >>> or ... at the
5489 syntax-processing module for pasting lines with >>> or ... at the
5481 start.
5490 start.
5482
5491
5483 * IPython/Extensions/PhysicalQ_Interactive.py
5492 * IPython/Extensions/PhysicalQ_Interactive.py
5484 (PhysicalQuantityInteractive.__int__): fixed to work with either
5493 (PhysicalQuantityInteractive.__int__): fixed to work with either
5485 Numeric or math.
5494 Numeric or math.
5486
5495
5487 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5496 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5488 provided profiles. Now we have:
5497 provided profiles. Now we have:
5489 -math -> math module as * and cmath with its own namespace.
5498 -math -> math module as * and cmath with its own namespace.
5490 -numeric -> Numeric as *, plus gnuplot & grace
5499 -numeric -> Numeric as *, plus gnuplot & grace
5491 -physics -> same as before
5500 -physics -> same as before
5492
5501
5493 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5502 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5494 user-defined magics wouldn't be found by @magic if they were
5503 user-defined magics wouldn't be found by @magic if they were
5495 defined as class methods. Also cleaned up the namespace search
5504 defined as class methods. Also cleaned up the namespace search
5496 logic and the string building (to use %s instead of many repeated
5505 logic and the string building (to use %s instead of many repeated
5497 string adds).
5506 string adds).
5498
5507
5499 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5508 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5500 of user-defined magics to operate with class methods (cleaner, in
5509 of user-defined magics to operate with class methods (cleaner, in
5501 line with the gnuplot code).
5510 line with the gnuplot code).
5502
5511
5503 2002-04-22 Fernando Perez <fperez@colorado.edu>
5512 2002-04-22 Fernando Perez <fperez@colorado.edu>
5504
5513
5505 * setup.py: updated dependency list so that manual is updated when
5514 * setup.py: updated dependency list so that manual is updated when
5506 all included files change.
5515 all included files change.
5507
5516
5508 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5517 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5509 the delimiter removal option (the fix is ugly right now).
5518 the delimiter removal option (the fix is ugly right now).
5510
5519
5511 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5520 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5512 all of the math profile (quicker loading, no conflict between
5521 all of the math profile (quicker loading, no conflict between
5513 g-9.8 and g-gnuplot).
5522 g-9.8 and g-gnuplot).
5514
5523
5515 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5524 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5516 name of post-mortem files to IPython_crash_report.txt.
5525 name of post-mortem files to IPython_crash_report.txt.
5517
5526
5518 * Cleanup/update of the docs. Added all the new readline info and
5527 * Cleanup/update of the docs. Added all the new readline info and
5519 formatted all lists as 'real lists'.
5528 formatted all lists as 'real lists'.
5520
5529
5521 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5530 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5522 tab-completion options, since the full readline parse_and_bind is
5531 tab-completion options, since the full readline parse_and_bind is
5523 now accessible.
5532 now accessible.
5524
5533
5525 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5534 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5526 handling of readline options. Now users can specify any string to
5535 handling of readline options. Now users can specify any string to
5527 be passed to parse_and_bind(), as well as the delimiters to be
5536 be passed to parse_and_bind(), as well as the delimiters to be
5528 removed.
5537 removed.
5529 (InteractiveShell.__init__): Added __name__ to the global
5538 (InteractiveShell.__init__): Added __name__ to the global
5530 namespace so that things like Itpl which rely on its existence
5539 namespace so that things like Itpl which rely on its existence
5531 don't crash.
5540 don't crash.
5532 (InteractiveShell._prefilter): Defined the default with a _ so
5541 (InteractiveShell._prefilter): Defined the default with a _ so
5533 that prefilter() is easier to override, while the default one
5542 that prefilter() is easier to override, while the default one
5534 remains available.
5543 remains available.
5535
5544
5536 2002-04-18 Fernando Perez <fperez@colorado.edu>
5545 2002-04-18 Fernando Perez <fperez@colorado.edu>
5537
5546
5538 * Added information about pdb in the docs.
5547 * Added information about pdb in the docs.
5539
5548
5540 2002-04-17 Fernando Perez <fperez@colorado.edu>
5549 2002-04-17 Fernando Perez <fperez@colorado.edu>
5541
5550
5542 * IPython/ipmaker.py (make_IPython): added rc_override option to
5551 * IPython/ipmaker.py (make_IPython): added rc_override option to
5543 allow passing config options at creation time which may override
5552 allow passing config options at creation time which may override
5544 anything set in the config files or command line. This is
5553 anything set in the config files or command line. This is
5545 particularly useful for configuring embedded instances.
5554 particularly useful for configuring embedded instances.
5546
5555
5547 2002-04-15 Fernando Perez <fperez@colorado.edu>
5556 2002-04-15 Fernando Perez <fperez@colorado.edu>
5548
5557
5549 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5558 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5550 crash embedded instances because of the input cache falling out of
5559 crash embedded instances because of the input cache falling out of
5551 sync with the output counter.
5560 sync with the output counter.
5552
5561
5553 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5562 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5554 mode which calls pdb after an uncaught exception in IPython itself.
5563 mode which calls pdb after an uncaught exception in IPython itself.
5555
5564
5556 2002-04-14 Fernando Perez <fperez@colorado.edu>
5565 2002-04-14 Fernando Perez <fperez@colorado.edu>
5557
5566
5558 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5567 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5559 readline, fix it back after each call.
5568 readline, fix it back after each call.
5560
5569
5561 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5570 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5562 method to force all access via __call__(), which guarantees that
5571 method to force all access via __call__(), which guarantees that
5563 traceback references are properly deleted.
5572 traceback references are properly deleted.
5564
5573
5565 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5574 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5566 improve printing when pprint is in use.
5575 improve printing when pprint is in use.
5567
5576
5568 2002-04-13 Fernando Perez <fperez@colorado.edu>
5577 2002-04-13 Fernando Perez <fperez@colorado.edu>
5569
5578
5570 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5579 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5571 exceptions aren't caught anymore. If the user triggers one, he
5580 exceptions aren't caught anymore. If the user triggers one, he
5572 should know why he's doing it and it should go all the way up,
5581 should know why he's doing it and it should go all the way up,
5573 just like any other exception. So now @abort will fully kill the
5582 just like any other exception. So now @abort will fully kill the
5574 embedded interpreter and the embedding code (unless that happens
5583 embedded interpreter and the embedding code (unless that happens
5575 to catch SystemExit).
5584 to catch SystemExit).
5576
5585
5577 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5586 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5578 and a debugger() method to invoke the interactive pdb debugger
5587 and a debugger() method to invoke the interactive pdb debugger
5579 after printing exception information. Also added the corresponding
5588 after printing exception information. Also added the corresponding
5580 -pdb option and @pdb magic to control this feature, and updated
5589 -pdb option and @pdb magic to control this feature, and updated
5581 the docs. After a suggestion from Christopher Hart
5590 the docs. After a suggestion from Christopher Hart
5582 (hart-AT-caltech.edu).
5591 (hart-AT-caltech.edu).
5583
5592
5584 2002-04-12 Fernando Perez <fperez@colorado.edu>
5593 2002-04-12 Fernando Perez <fperez@colorado.edu>
5585
5594
5586 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5595 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5587 the exception handlers defined by the user (not the CrashHandler)
5596 the exception handlers defined by the user (not the CrashHandler)
5588 so that user exceptions don't trigger an ipython bug report.
5597 so that user exceptions don't trigger an ipython bug report.
5589
5598
5590 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5599 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5591 configurable (it should have always been so).
5600 configurable (it should have always been so).
5592
5601
5593 2002-03-26 Fernando Perez <fperez@colorado.edu>
5602 2002-03-26 Fernando Perez <fperez@colorado.edu>
5594
5603
5595 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5604 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5596 and there to fix embedding namespace issues. This should all be
5605 and there to fix embedding namespace issues. This should all be
5597 done in a more elegant way.
5606 done in a more elegant way.
5598
5607
5599 2002-03-25 Fernando Perez <fperez@colorado.edu>
5608 2002-03-25 Fernando Perez <fperez@colorado.edu>
5600
5609
5601 * IPython/genutils.py (get_home_dir): Try to make it work under
5610 * IPython/genutils.py (get_home_dir): Try to make it work under
5602 win9x also.
5611 win9x also.
5603
5612
5604 2002-03-20 Fernando Perez <fperez@colorado.edu>
5613 2002-03-20 Fernando Perez <fperez@colorado.edu>
5605
5614
5606 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5615 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5607 sys.displayhook untouched upon __init__.
5616 sys.displayhook untouched upon __init__.
5608
5617
5609 2002-03-19 Fernando Perez <fperez@colorado.edu>
5618 2002-03-19 Fernando Perez <fperez@colorado.edu>
5610
5619
5611 * Released 0.2.9 (for embedding bug, basically).
5620 * Released 0.2.9 (for embedding bug, basically).
5612
5621
5613 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5622 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5614 exceptions so that enclosing shell's state can be restored.
5623 exceptions so that enclosing shell's state can be restored.
5615
5624
5616 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5625 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5617 naming conventions in the .ipython/ dir.
5626 naming conventions in the .ipython/ dir.
5618
5627
5619 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5628 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5620 from delimiters list so filenames with - in them get expanded.
5629 from delimiters list so filenames with - in them get expanded.
5621
5630
5622 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5631 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5623 sys.displayhook not being properly restored after an embedded call.
5632 sys.displayhook not being properly restored after an embedded call.
5624
5633
5625 2002-03-18 Fernando Perez <fperez@colorado.edu>
5634 2002-03-18 Fernando Perez <fperez@colorado.edu>
5626
5635
5627 * Released 0.2.8
5636 * Released 0.2.8
5628
5637
5629 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5638 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5630 some files weren't being included in a -upgrade.
5639 some files weren't being included in a -upgrade.
5631 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5640 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5632 on' so that the first tab completes.
5641 on' so that the first tab completes.
5633 (InteractiveShell.handle_magic): fixed bug with spaces around
5642 (InteractiveShell.handle_magic): fixed bug with spaces around
5634 quotes breaking many magic commands.
5643 quotes breaking many magic commands.
5635
5644
5636 * setup.py: added note about ignoring the syntax error messages at
5645 * setup.py: added note about ignoring the syntax error messages at
5637 installation.
5646 installation.
5638
5647
5639 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5648 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5640 streamlining the gnuplot interface, now there's only one magic @gp.
5649 streamlining the gnuplot interface, now there's only one magic @gp.
5641
5650
5642 2002-03-17 Fernando Perez <fperez@colorado.edu>
5651 2002-03-17 Fernando Perez <fperez@colorado.edu>
5643
5652
5644 * IPython/UserConfig/magic_gnuplot.py: new name for the
5653 * IPython/UserConfig/magic_gnuplot.py: new name for the
5645 example-magic_pm.py file. Much enhanced system, now with a shell
5654 example-magic_pm.py file. Much enhanced system, now with a shell
5646 for communicating directly with gnuplot, one command at a time.
5655 for communicating directly with gnuplot, one command at a time.
5647
5656
5648 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5657 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5649 setting __name__=='__main__'.
5658 setting __name__=='__main__'.
5650
5659
5651 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5660 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5652 mini-shell for accessing gnuplot from inside ipython. Should
5661 mini-shell for accessing gnuplot from inside ipython. Should
5653 extend it later for grace access too. Inspired by Arnd's
5662 extend it later for grace access too. Inspired by Arnd's
5654 suggestion.
5663 suggestion.
5655
5664
5656 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5665 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5657 calling magic functions with () in their arguments. Thanks to Arnd
5666 calling magic functions with () in their arguments. Thanks to Arnd
5658 Baecker for pointing this to me.
5667 Baecker for pointing this to me.
5659
5668
5660 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5669 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5661 infinitely for integer or complex arrays (only worked with floats).
5670 infinitely for integer or complex arrays (only worked with floats).
5662
5671
5663 2002-03-16 Fernando Perez <fperez@colorado.edu>
5672 2002-03-16 Fernando Perez <fperez@colorado.edu>
5664
5673
5665 * setup.py: Merged setup and setup_windows into a single script
5674 * setup.py: Merged setup and setup_windows into a single script
5666 which properly handles things for windows users.
5675 which properly handles things for windows users.
5667
5676
5668 2002-03-15 Fernando Perez <fperez@colorado.edu>
5677 2002-03-15 Fernando Perez <fperez@colorado.edu>
5669
5678
5670 * Big change to the manual: now the magics are all automatically
5679 * Big change to the manual: now the magics are all automatically
5671 documented. This information is generated from their docstrings
5680 documented. This information is generated from their docstrings
5672 and put in a latex file included by the manual lyx file. This way
5681 and put in a latex file included by the manual lyx file. This way
5673 we get always up to date information for the magics. The manual
5682 we get always up to date information for the magics. The manual
5674 now also has proper version information, also auto-synced.
5683 now also has proper version information, also auto-synced.
5675
5684
5676 For this to work, an undocumented --magic_docstrings option was added.
5685 For this to work, an undocumented --magic_docstrings option was added.
5677
5686
5678 2002-03-13 Fernando Perez <fperez@colorado.edu>
5687 2002-03-13 Fernando Perez <fperez@colorado.edu>
5679
5688
5680 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5689 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5681 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5690 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5682
5691
5683 2002-03-12 Fernando Perez <fperez@colorado.edu>
5692 2002-03-12 Fernando Perez <fperez@colorado.edu>
5684
5693
5685 * IPython/ultraTB.py (TermColors): changed color escapes again to
5694 * IPython/ultraTB.py (TermColors): changed color escapes again to
5686 fix the (old, reintroduced) line-wrapping bug. Basically, if
5695 fix the (old, reintroduced) line-wrapping bug. Basically, if
5687 \001..\002 aren't given in the color escapes, lines get wrapped
5696 \001..\002 aren't given in the color escapes, lines get wrapped
5688 weirdly. But giving those screws up old xterms and emacs terms. So
5697 weirdly. But giving those screws up old xterms and emacs terms. So
5689 I added some logic for emacs terms to be ok, but I can't identify old
5698 I added some logic for emacs terms to be ok, but I can't identify old
5690 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5699 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5691
5700
5692 2002-03-10 Fernando Perez <fperez@colorado.edu>
5701 2002-03-10 Fernando Perez <fperez@colorado.edu>
5693
5702
5694 * IPython/usage.py (__doc__): Various documentation cleanups and
5703 * IPython/usage.py (__doc__): Various documentation cleanups and
5695 updates, both in usage docstrings and in the manual.
5704 updates, both in usage docstrings and in the manual.
5696
5705
5697 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5706 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5698 handling of caching. Set minimum acceptabe value for having a
5707 handling of caching. Set minimum acceptabe value for having a
5699 cache at 20 values.
5708 cache at 20 values.
5700
5709
5701 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5710 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5702 install_first_time function to a method, renamed it and added an
5711 install_first_time function to a method, renamed it and added an
5703 'upgrade' mode. Now people can update their config directory with
5712 'upgrade' mode. Now people can update their config directory with
5704 a simple command line switch (-upgrade, also new).
5713 a simple command line switch (-upgrade, also new).
5705
5714
5706 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5715 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5707 @file (convenient for automagic users under Python >= 2.2).
5716 @file (convenient for automagic users under Python >= 2.2).
5708 Removed @files (it seemed more like a plural than an abbrev. of
5717 Removed @files (it seemed more like a plural than an abbrev. of
5709 'file show').
5718 'file show').
5710
5719
5711 * IPython/iplib.py (install_first_time): Fixed crash if there were
5720 * IPython/iplib.py (install_first_time): Fixed crash if there were
5712 backup files ('~') in .ipython/ install directory.
5721 backup files ('~') in .ipython/ install directory.
5713
5722
5714 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5723 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5715 system. Things look fine, but these changes are fairly
5724 system. Things look fine, but these changes are fairly
5716 intrusive. Test them for a few days.
5725 intrusive. Test them for a few days.
5717
5726
5718 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5727 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5719 the prompts system. Now all in/out prompt strings are user
5728 the prompts system. Now all in/out prompt strings are user
5720 controllable. This is particularly useful for embedding, as one
5729 controllable. This is particularly useful for embedding, as one
5721 can tag embedded instances with particular prompts.
5730 can tag embedded instances with particular prompts.
5722
5731
5723 Also removed global use of sys.ps1/2, which now allows nested
5732 Also removed global use of sys.ps1/2, which now allows nested
5724 embeddings without any problems. Added command-line options for
5733 embeddings without any problems. Added command-line options for
5725 the prompt strings.
5734 the prompt strings.
5726
5735
5727 2002-03-08 Fernando Perez <fperez@colorado.edu>
5736 2002-03-08 Fernando Perez <fperez@colorado.edu>
5728
5737
5729 * IPython/UserConfig/example-embed-short.py (ipshell): added
5738 * IPython/UserConfig/example-embed-short.py (ipshell): added
5730 example file with the bare minimum code for embedding.
5739 example file with the bare minimum code for embedding.
5731
5740
5732 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5741 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5733 functionality for the embeddable shell to be activated/deactivated
5742 functionality for the embeddable shell to be activated/deactivated
5734 either globally or at each call.
5743 either globally or at each call.
5735
5744
5736 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5745 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5737 rewriting the prompt with '--->' for auto-inputs with proper
5746 rewriting the prompt with '--->' for auto-inputs with proper
5738 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5747 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5739 this is handled by the prompts class itself, as it should.
5748 this is handled by the prompts class itself, as it should.
5740
5749
5741 2002-03-05 Fernando Perez <fperez@colorado.edu>
5750 2002-03-05 Fernando Perez <fperez@colorado.edu>
5742
5751
5743 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5752 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5744 @logstart to avoid name clashes with the math log function.
5753 @logstart to avoid name clashes with the math log function.
5745
5754
5746 * Big updates to X/Emacs section of the manual.
5755 * Big updates to X/Emacs section of the manual.
5747
5756
5748 * Removed ipython_emacs. Milan explained to me how to pass
5757 * Removed ipython_emacs. Milan explained to me how to pass
5749 arguments to ipython through Emacs. Some day I'm going to end up
5758 arguments to ipython through Emacs. Some day I'm going to end up
5750 learning some lisp...
5759 learning some lisp...
5751
5760
5752 2002-03-04 Fernando Perez <fperez@colorado.edu>
5761 2002-03-04 Fernando Perez <fperez@colorado.edu>
5753
5762
5754 * IPython/ipython_emacs: Created script to be used as the
5763 * IPython/ipython_emacs: Created script to be used as the
5755 py-python-command Emacs variable so we can pass IPython
5764 py-python-command Emacs variable so we can pass IPython
5756 parameters. I can't figure out how to tell Emacs directly to pass
5765 parameters. I can't figure out how to tell Emacs directly to pass
5757 parameters to IPython, so a dummy shell script will do it.
5766 parameters to IPython, so a dummy shell script will do it.
5758
5767
5759 Other enhancements made for things to work better under Emacs'
5768 Other enhancements made for things to work better under Emacs'
5760 various types of terminals. Many thanks to Milan Zamazal
5769 various types of terminals. Many thanks to Milan Zamazal
5761 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5770 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5762
5771
5763 2002-03-01 Fernando Perez <fperez@colorado.edu>
5772 2002-03-01 Fernando Perez <fperez@colorado.edu>
5764
5773
5765 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5774 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5766 that loading of readline is now optional. This gives better
5775 that loading of readline is now optional. This gives better
5767 control to emacs users.
5776 control to emacs users.
5768
5777
5769 * IPython/ultraTB.py (__date__): Modified color escape sequences
5778 * IPython/ultraTB.py (__date__): Modified color escape sequences
5770 and now things work fine under xterm and in Emacs' term buffers
5779 and now things work fine under xterm and in Emacs' term buffers
5771 (though not shell ones). Well, in emacs you get colors, but all
5780 (though not shell ones). Well, in emacs you get colors, but all
5772 seem to be 'light' colors (no difference between dark and light
5781 seem to be 'light' colors (no difference between dark and light
5773 ones). But the garbage chars are gone, and also in xterms. It
5782 ones). But the garbage chars are gone, and also in xterms. It
5774 seems that now I'm using 'cleaner' ansi sequences.
5783 seems that now I'm using 'cleaner' ansi sequences.
5775
5784
5776 2002-02-21 Fernando Perez <fperez@colorado.edu>
5785 2002-02-21 Fernando Perez <fperez@colorado.edu>
5777
5786
5778 * Released 0.2.7 (mainly to publish the scoping fix).
5787 * Released 0.2.7 (mainly to publish the scoping fix).
5779
5788
5780 * IPython/Logger.py (Logger.logstate): added. A corresponding
5789 * IPython/Logger.py (Logger.logstate): added. A corresponding
5781 @logstate magic was created.
5790 @logstate magic was created.
5782
5791
5783 * IPython/Magic.py: fixed nested scoping problem under Python
5792 * IPython/Magic.py: fixed nested scoping problem under Python
5784 2.1.x (automagic wasn't working).
5793 2.1.x (automagic wasn't working).
5785
5794
5786 2002-02-20 Fernando Perez <fperez@colorado.edu>
5795 2002-02-20 Fernando Perez <fperez@colorado.edu>
5787
5796
5788 * Released 0.2.6.
5797 * Released 0.2.6.
5789
5798
5790 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5799 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5791 option so that logs can come out without any headers at all.
5800 option so that logs can come out without any headers at all.
5792
5801
5793 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5802 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5794 SciPy.
5803 SciPy.
5795
5804
5796 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5805 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5797 that embedded IPython calls don't require vars() to be explicitly
5806 that embedded IPython calls don't require vars() to be explicitly
5798 passed. Now they are extracted from the caller's frame (code
5807 passed. Now they are extracted from the caller's frame (code
5799 snatched from Eric Jones' weave). Added better documentation to
5808 snatched from Eric Jones' weave). Added better documentation to
5800 the section on embedding and the example file.
5809 the section on embedding and the example file.
5801
5810
5802 * IPython/genutils.py (page): Changed so that under emacs, it just
5811 * IPython/genutils.py (page): Changed so that under emacs, it just
5803 prints the string. You can then page up and down in the emacs
5812 prints the string. You can then page up and down in the emacs
5804 buffer itself. This is how the builtin help() works.
5813 buffer itself. This is how the builtin help() works.
5805
5814
5806 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5815 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5807 macro scoping: macros need to be executed in the user's namespace
5816 macro scoping: macros need to be executed in the user's namespace
5808 to work as if they had been typed by the user.
5817 to work as if they had been typed by the user.
5809
5818
5810 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5819 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5811 execute automatically (no need to type 'exec...'). They then
5820 execute automatically (no need to type 'exec...'). They then
5812 behave like 'true macros'. The printing system was also modified
5821 behave like 'true macros'. The printing system was also modified
5813 for this to work.
5822 for this to work.
5814
5823
5815 2002-02-19 Fernando Perez <fperez@colorado.edu>
5824 2002-02-19 Fernando Perez <fperez@colorado.edu>
5816
5825
5817 * IPython/genutils.py (page_file): new function for paging files
5826 * IPython/genutils.py (page_file): new function for paging files
5818 in an OS-independent way. Also necessary for file viewing to work
5827 in an OS-independent way. Also necessary for file viewing to work
5819 well inside Emacs buffers.
5828 well inside Emacs buffers.
5820 (page): Added checks for being in an emacs buffer.
5829 (page): Added checks for being in an emacs buffer.
5821 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5830 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5822 same bug in iplib.
5831 same bug in iplib.
5823
5832
5824 2002-02-18 Fernando Perez <fperez@colorado.edu>
5833 2002-02-18 Fernando Perez <fperez@colorado.edu>
5825
5834
5826 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5835 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5827 of readline so that IPython can work inside an Emacs buffer.
5836 of readline so that IPython can work inside an Emacs buffer.
5828
5837
5829 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5838 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5830 method signatures (they weren't really bugs, but it looks cleaner
5839 method signatures (they weren't really bugs, but it looks cleaner
5831 and keeps PyChecker happy).
5840 and keeps PyChecker happy).
5832
5841
5833 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5842 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5834 for implementing various user-defined hooks. Currently only
5843 for implementing various user-defined hooks. Currently only
5835 display is done.
5844 display is done.
5836
5845
5837 * IPython/Prompts.py (CachedOutput._display): changed display
5846 * IPython/Prompts.py (CachedOutput._display): changed display
5838 functions so that they can be dynamically changed by users easily.
5847 functions so that they can be dynamically changed by users easily.
5839
5848
5840 * IPython/Extensions/numeric_formats.py (num_display): added an
5849 * IPython/Extensions/numeric_formats.py (num_display): added an
5841 extension for printing NumPy arrays in flexible manners. It
5850 extension for printing NumPy arrays in flexible manners. It
5842 doesn't do anything yet, but all the structure is in
5851 doesn't do anything yet, but all the structure is in
5843 place. Ultimately the plan is to implement output format control
5852 place. Ultimately the plan is to implement output format control
5844 like in Octave.
5853 like in Octave.
5845
5854
5846 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5855 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5847 methods are found at run-time by all the automatic machinery.
5856 methods are found at run-time by all the automatic machinery.
5848
5857
5849 2002-02-17 Fernando Perez <fperez@colorado.edu>
5858 2002-02-17 Fernando Perez <fperez@colorado.edu>
5850
5859
5851 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5860 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5852 whole file a little.
5861 whole file a little.
5853
5862
5854 * ToDo: closed this document. Now there's a new_design.lyx
5863 * ToDo: closed this document. Now there's a new_design.lyx
5855 document for all new ideas. Added making a pdf of it for the
5864 document for all new ideas. Added making a pdf of it for the
5856 end-user distro.
5865 end-user distro.
5857
5866
5858 * IPython/Logger.py (Logger.switch_log): Created this to replace
5867 * IPython/Logger.py (Logger.switch_log): Created this to replace
5859 logon() and logoff(). It also fixes a nasty crash reported by
5868 logon() and logoff(). It also fixes a nasty crash reported by
5860 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5869 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5861
5870
5862 * IPython/iplib.py (complete): got auto-completion to work with
5871 * IPython/iplib.py (complete): got auto-completion to work with
5863 automagic (I had wanted this for a long time).
5872 automagic (I had wanted this for a long time).
5864
5873
5865 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5874 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5866 to @file, since file() is now a builtin and clashes with automagic
5875 to @file, since file() is now a builtin and clashes with automagic
5867 for @file.
5876 for @file.
5868
5877
5869 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5878 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5870 of this was previously in iplib, which had grown to more than 2000
5879 of this was previously in iplib, which had grown to more than 2000
5871 lines, way too long. No new functionality, but it makes managing
5880 lines, way too long. No new functionality, but it makes managing
5872 the code a bit easier.
5881 the code a bit easier.
5873
5882
5874 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5883 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5875 information to crash reports.
5884 information to crash reports.
5876
5885
5877 2002-02-12 Fernando Perez <fperez@colorado.edu>
5886 2002-02-12 Fernando Perez <fperez@colorado.edu>
5878
5887
5879 * Released 0.2.5.
5888 * Released 0.2.5.
5880
5889
5881 2002-02-11 Fernando Perez <fperez@colorado.edu>
5890 2002-02-11 Fernando Perez <fperez@colorado.edu>
5882
5891
5883 * Wrote a relatively complete Windows installer. It puts
5892 * Wrote a relatively complete Windows installer. It puts
5884 everything in place, creates Start Menu entries and fixes the
5893 everything in place, creates Start Menu entries and fixes the
5885 color issues. Nothing fancy, but it works.
5894 color issues. Nothing fancy, but it works.
5886
5895
5887 2002-02-10 Fernando Perez <fperez@colorado.edu>
5896 2002-02-10 Fernando Perez <fperez@colorado.edu>
5888
5897
5889 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5898 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5890 os.path.expanduser() call so that we can type @run ~/myfile.py and
5899 os.path.expanduser() call so that we can type @run ~/myfile.py and
5891 have thigs work as expected.
5900 have thigs work as expected.
5892
5901
5893 * IPython/genutils.py (page): fixed exception handling so things
5902 * IPython/genutils.py (page): fixed exception handling so things
5894 work both in Unix and Windows correctly. Quitting a pager triggers
5903 work both in Unix and Windows correctly. Quitting a pager triggers
5895 an IOError/broken pipe in Unix, and in windows not finding a pager
5904 an IOError/broken pipe in Unix, and in windows not finding a pager
5896 is also an IOError, so I had to actually look at the return value
5905 is also an IOError, so I had to actually look at the return value
5897 of the exception, not just the exception itself. Should be ok now.
5906 of the exception, not just the exception itself. Should be ok now.
5898
5907
5899 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5908 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5900 modified to allow case-insensitive color scheme changes.
5909 modified to allow case-insensitive color scheme changes.
5901
5910
5902 2002-02-09 Fernando Perez <fperez@colorado.edu>
5911 2002-02-09 Fernando Perez <fperez@colorado.edu>
5903
5912
5904 * IPython/genutils.py (native_line_ends): new function to leave
5913 * IPython/genutils.py (native_line_ends): new function to leave
5905 user config files with os-native line-endings.
5914 user config files with os-native line-endings.
5906
5915
5907 * README and manual updates.
5916 * README and manual updates.
5908
5917
5909 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5918 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5910 instead of StringType to catch Unicode strings.
5919 instead of StringType to catch Unicode strings.
5911
5920
5912 * IPython/genutils.py (filefind): fixed bug for paths with
5921 * IPython/genutils.py (filefind): fixed bug for paths with
5913 embedded spaces (very common in Windows).
5922 embedded spaces (very common in Windows).
5914
5923
5915 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5924 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5916 files under Windows, so that they get automatically associated
5925 files under Windows, so that they get automatically associated
5917 with a text editor. Windows makes it a pain to handle
5926 with a text editor. Windows makes it a pain to handle
5918 extension-less files.
5927 extension-less files.
5919
5928
5920 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5929 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5921 warning about readline only occur for Posix. In Windows there's no
5930 warning about readline only occur for Posix. In Windows there's no
5922 way to get readline, so why bother with the warning.
5931 way to get readline, so why bother with the warning.
5923
5932
5924 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5933 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5925 for __str__ instead of dir(self), since dir() changed in 2.2.
5934 for __str__ instead of dir(self), since dir() changed in 2.2.
5926
5935
5927 * Ported to Windows! Tested on XP, I suspect it should work fine
5936 * Ported to Windows! Tested on XP, I suspect it should work fine
5928 on NT/2000, but I don't think it will work on 98 et al. That
5937 on NT/2000, but I don't think it will work on 98 et al. That
5929 series of Windows is such a piece of junk anyway that I won't try
5938 series of Windows is such a piece of junk anyway that I won't try
5930 porting it there. The XP port was straightforward, showed a few
5939 porting it there. The XP port was straightforward, showed a few
5931 bugs here and there (fixed all), in particular some string
5940 bugs here and there (fixed all), in particular some string
5932 handling stuff which required considering Unicode strings (which
5941 handling stuff which required considering Unicode strings (which
5933 Windows uses). This is good, but hasn't been too tested :) No
5942 Windows uses). This is good, but hasn't been too tested :) No
5934 fancy installer yet, I'll put a note in the manual so people at
5943 fancy installer yet, I'll put a note in the manual so people at
5935 least make manually a shortcut.
5944 least make manually a shortcut.
5936
5945
5937 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5946 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5938 into a single one, "colors". This now controls both prompt and
5947 into a single one, "colors". This now controls both prompt and
5939 exception color schemes, and can be changed both at startup
5948 exception color schemes, and can be changed both at startup
5940 (either via command-line switches or via ipythonrc files) and at
5949 (either via command-line switches or via ipythonrc files) and at
5941 runtime, with @colors.
5950 runtime, with @colors.
5942 (Magic.magic_run): renamed @prun to @run and removed the old
5951 (Magic.magic_run): renamed @prun to @run and removed the old
5943 @run. The two were too similar to warrant keeping both.
5952 @run. The two were too similar to warrant keeping both.
5944
5953
5945 2002-02-03 Fernando Perez <fperez@colorado.edu>
5954 2002-02-03 Fernando Perez <fperez@colorado.edu>
5946
5955
5947 * IPython/iplib.py (install_first_time): Added comment on how to
5956 * IPython/iplib.py (install_first_time): Added comment on how to
5948 configure the color options for first-time users. Put a <return>
5957 configure the color options for first-time users. Put a <return>
5949 request at the end so that small-terminal users get a chance to
5958 request at the end so that small-terminal users get a chance to
5950 read the startup info.
5959 read the startup info.
5951
5960
5952 2002-01-23 Fernando Perez <fperez@colorado.edu>
5961 2002-01-23 Fernando Perez <fperez@colorado.edu>
5953
5962
5954 * IPython/iplib.py (CachedOutput.update): Changed output memory
5963 * IPython/iplib.py (CachedOutput.update): Changed output memory
5955 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5964 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5956 input history we still use _i. Did this b/c these variable are
5965 input history we still use _i. Did this b/c these variable are
5957 very commonly used in interactive work, so the less we need to
5966 very commonly used in interactive work, so the less we need to
5958 type the better off we are.
5967 type the better off we are.
5959 (Magic.magic_prun): updated @prun to better handle the namespaces
5968 (Magic.magic_prun): updated @prun to better handle the namespaces
5960 the file will run in, including a fix for __name__ not being set
5969 the file will run in, including a fix for __name__ not being set
5961 before.
5970 before.
5962
5971
5963 2002-01-20 Fernando Perez <fperez@colorado.edu>
5972 2002-01-20 Fernando Perez <fperez@colorado.edu>
5964
5973
5965 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5974 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5966 extra garbage for Python 2.2. Need to look more carefully into
5975 extra garbage for Python 2.2. Need to look more carefully into
5967 this later.
5976 this later.
5968
5977
5969 2002-01-19 Fernando Perez <fperez@colorado.edu>
5978 2002-01-19 Fernando Perez <fperez@colorado.edu>
5970
5979
5971 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5980 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5972 display SyntaxError exceptions properly formatted when they occur
5981 display SyntaxError exceptions properly formatted when they occur
5973 (they can be triggered by imported code).
5982 (they can be triggered by imported code).
5974
5983
5975 2002-01-18 Fernando Perez <fperez@colorado.edu>
5984 2002-01-18 Fernando Perez <fperez@colorado.edu>
5976
5985
5977 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5986 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5978 SyntaxError exceptions are reported nicely formatted, instead of
5987 SyntaxError exceptions are reported nicely formatted, instead of
5979 spitting out only offset information as before.
5988 spitting out only offset information as before.
5980 (Magic.magic_prun): Added the @prun function for executing
5989 (Magic.magic_prun): Added the @prun function for executing
5981 programs with command line args inside IPython.
5990 programs with command line args inside IPython.
5982
5991
5983 2002-01-16 Fernando Perez <fperez@colorado.edu>
5992 2002-01-16 Fernando Perez <fperez@colorado.edu>
5984
5993
5985 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5994 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5986 to *not* include the last item given in a range. This brings their
5995 to *not* include the last item given in a range. This brings their
5987 behavior in line with Python's slicing:
5996 behavior in line with Python's slicing:
5988 a[n1:n2] -> a[n1]...a[n2-1]
5997 a[n1:n2] -> a[n1]...a[n2-1]
5989 It may be a bit less convenient, but I prefer to stick to Python's
5998 It may be a bit less convenient, but I prefer to stick to Python's
5990 conventions *everywhere*, so users never have to wonder.
5999 conventions *everywhere*, so users never have to wonder.
5991 (Magic.magic_macro): Added @macro function to ease the creation of
6000 (Magic.magic_macro): Added @macro function to ease the creation of
5992 macros.
6001 macros.
5993
6002
5994 2002-01-05 Fernando Perez <fperez@colorado.edu>
6003 2002-01-05 Fernando Perez <fperez@colorado.edu>
5995
6004
5996 * Released 0.2.4.
6005 * Released 0.2.4.
5997
6006
5998 * IPython/iplib.py (Magic.magic_pdef):
6007 * IPython/iplib.py (Magic.magic_pdef):
5999 (InteractiveShell.safe_execfile): report magic lines and error
6008 (InteractiveShell.safe_execfile): report magic lines and error
6000 lines without line numbers so one can easily copy/paste them for
6009 lines without line numbers so one can easily copy/paste them for
6001 re-execution.
6010 re-execution.
6002
6011
6003 * Updated manual with recent changes.
6012 * Updated manual with recent changes.
6004
6013
6005 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6014 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6006 docstring printing when class? is called. Very handy for knowing
6015 docstring printing when class? is called. Very handy for knowing
6007 how to create class instances (as long as __init__ is well
6016 how to create class instances (as long as __init__ is well
6008 documented, of course :)
6017 documented, of course :)
6009 (Magic.magic_doc): print both class and constructor docstrings.
6018 (Magic.magic_doc): print both class and constructor docstrings.
6010 (Magic.magic_pdef): give constructor info if passed a class and
6019 (Magic.magic_pdef): give constructor info if passed a class and
6011 __call__ info for callable object instances.
6020 __call__ info for callable object instances.
6012
6021
6013 2002-01-04 Fernando Perez <fperez@colorado.edu>
6022 2002-01-04 Fernando Perez <fperez@colorado.edu>
6014
6023
6015 * Made deep_reload() off by default. It doesn't always work
6024 * Made deep_reload() off by default. It doesn't always work
6016 exactly as intended, so it's probably safer to have it off. It's
6025 exactly as intended, so it's probably safer to have it off. It's
6017 still available as dreload() anyway, so nothing is lost.
6026 still available as dreload() anyway, so nothing is lost.
6018
6027
6019 2002-01-02 Fernando Perez <fperez@colorado.edu>
6028 2002-01-02 Fernando Perez <fperez@colorado.edu>
6020
6029
6021 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6030 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6022 so I wanted an updated release).
6031 so I wanted an updated release).
6023
6032
6024 2001-12-27 Fernando Perez <fperez@colorado.edu>
6033 2001-12-27 Fernando Perez <fperez@colorado.edu>
6025
6034
6026 * IPython/iplib.py (InteractiveShell.interact): Added the original
6035 * IPython/iplib.py (InteractiveShell.interact): Added the original
6027 code from 'code.py' for this module in order to change the
6036 code from 'code.py' for this module in order to change the
6028 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6037 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6029 the history cache would break when the user hit Ctrl-C, and
6038 the history cache would break when the user hit Ctrl-C, and
6030 interact() offers no way to add any hooks to it.
6039 interact() offers no way to add any hooks to it.
6031
6040
6032 2001-12-23 Fernando Perez <fperez@colorado.edu>
6041 2001-12-23 Fernando Perez <fperez@colorado.edu>
6033
6042
6034 * setup.py: added check for 'MANIFEST' before trying to remove
6043 * setup.py: added check for 'MANIFEST' before trying to remove
6035 it. Thanks to Sean Reifschneider.
6044 it. Thanks to Sean Reifschneider.
6036
6045
6037 2001-12-22 Fernando Perez <fperez@colorado.edu>
6046 2001-12-22 Fernando Perez <fperez@colorado.edu>
6038
6047
6039 * Released 0.2.2.
6048 * Released 0.2.2.
6040
6049
6041 * Finished (reasonably) writing the manual. Later will add the
6050 * Finished (reasonably) writing the manual. Later will add the
6042 python-standard navigation stylesheets, but for the time being
6051 python-standard navigation stylesheets, but for the time being
6043 it's fairly complete. Distribution will include html and pdf
6052 it's fairly complete. Distribution will include html and pdf
6044 versions.
6053 versions.
6045
6054
6046 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6055 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6047 (MayaVi author).
6056 (MayaVi author).
6048
6057
6049 2001-12-21 Fernando Perez <fperez@colorado.edu>
6058 2001-12-21 Fernando Perez <fperez@colorado.edu>
6050
6059
6051 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6060 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6052 good public release, I think (with the manual and the distutils
6061 good public release, I think (with the manual and the distutils
6053 installer). The manual can use some work, but that can go
6062 installer). The manual can use some work, but that can go
6054 slowly. Otherwise I think it's quite nice for end users. Next
6063 slowly. Otherwise I think it's quite nice for end users. Next
6055 summer, rewrite the guts of it...
6064 summer, rewrite the guts of it...
6056
6065
6057 * Changed format of ipythonrc files to use whitespace as the
6066 * Changed format of ipythonrc files to use whitespace as the
6058 separator instead of an explicit '='. Cleaner.
6067 separator instead of an explicit '='. Cleaner.
6059
6068
6060 2001-12-20 Fernando Perez <fperez@colorado.edu>
6069 2001-12-20 Fernando Perez <fperez@colorado.edu>
6061
6070
6062 * Started a manual in LyX. For now it's just a quick merge of the
6071 * Started a manual in LyX. For now it's just a quick merge of the
6063 various internal docstrings and READMEs. Later it may grow into a
6072 various internal docstrings and READMEs. Later it may grow into a
6064 nice, full-blown manual.
6073 nice, full-blown manual.
6065
6074
6066 * Set up a distutils based installer. Installation should now be
6075 * Set up a distutils based installer. Installation should now be
6067 trivially simple for end-users.
6076 trivially simple for end-users.
6068
6077
6069 2001-12-11 Fernando Perez <fperez@colorado.edu>
6078 2001-12-11 Fernando Perez <fperez@colorado.edu>
6070
6079
6071 * Released 0.2.0. First public release, announced it at
6080 * Released 0.2.0. First public release, announced it at
6072 comp.lang.python. From now on, just bugfixes...
6081 comp.lang.python. From now on, just bugfixes...
6073
6082
6074 * Went through all the files, set copyright/license notices and
6083 * Went through all the files, set copyright/license notices and
6075 cleaned up things. Ready for release.
6084 cleaned up things. Ready for release.
6076
6085
6077 2001-12-10 Fernando Perez <fperez@colorado.edu>
6086 2001-12-10 Fernando Perez <fperez@colorado.edu>
6078
6087
6079 * Changed the first-time installer not to use tarfiles. It's more
6088 * Changed the first-time installer not to use tarfiles. It's more
6080 robust now and less unix-dependent. Also makes it easier for
6089 robust now and less unix-dependent. Also makes it easier for
6081 people to later upgrade versions.
6090 people to later upgrade versions.
6082
6091
6083 * Changed @exit to @abort to reflect the fact that it's pretty
6092 * Changed @exit to @abort to reflect the fact that it's pretty
6084 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6093 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6085 becomes significant only when IPyhton is embedded: in that case,
6094 becomes significant only when IPyhton is embedded: in that case,
6086 C-D closes IPython only, but @abort kills the enclosing program
6095 C-D closes IPython only, but @abort kills the enclosing program
6087 too (unless it had called IPython inside a try catching
6096 too (unless it had called IPython inside a try catching
6088 SystemExit).
6097 SystemExit).
6089
6098
6090 * Created Shell module which exposes the actuall IPython Shell
6099 * Created Shell module which exposes the actuall IPython Shell
6091 classes, currently the normal and the embeddable one. This at
6100 classes, currently the normal and the embeddable one. This at
6092 least offers a stable interface we won't need to change when
6101 least offers a stable interface we won't need to change when
6093 (later) the internals are rewritten. That rewrite will be confined
6102 (later) the internals are rewritten. That rewrite will be confined
6094 to iplib and ipmaker, but the Shell interface should remain as is.
6103 to iplib and ipmaker, but the Shell interface should remain as is.
6095
6104
6096 * Added embed module which offers an embeddable IPShell object,
6105 * Added embed module which offers an embeddable IPShell object,
6097 useful to fire up IPython *inside* a running program. Great for
6106 useful to fire up IPython *inside* a running program. Great for
6098 debugging or dynamical data analysis.
6107 debugging or dynamical data analysis.
6099
6108
6100 2001-12-08 Fernando Perez <fperez@colorado.edu>
6109 2001-12-08 Fernando Perez <fperez@colorado.edu>
6101
6110
6102 * Fixed small bug preventing seeing info from methods of defined
6111 * Fixed small bug preventing seeing info from methods of defined
6103 objects (incorrect namespace in _ofind()).
6112 objects (incorrect namespace in _ofind()).
6104
6113
6105 * Documentation cleanup. Moved the main usage docstrings to a
6114 * Documentation cleanup. Moved the main usage docstrings to a
6106 separate file, usage.py (cleaner to maintain, and hopefully in the
6115 separate file, usage.py (cleaner to maintain, and hopefully in the
6107 future some perlpod-like way of producing interactive, man and
6116 future some perlpod-like way of producing interactive, man and
6108 html docs out of it will be found).
6117 html docs out of it will be found).
6109
6118
6110 * Added @profile to see your profile at any time.
6119 * Added @profile to see your profile at any time.
6111
6120
6112 * Added @p as an alias for 'print'. It's especially convenient if
6121 * Added @p as an alias for 'print'. It's especially convenient if
6113 using automagic ('p x' prints x).
6122 using automagic ('p x' prints x).
6114
6123
6115 * Small cleanups and fixes after a pychecker run.
6124 * Small cleanups and fixes after a pychecker run.
6116
6125
6117 * Changed the @cd command to handle @cd - and @cd -<n> for
6126 * Changed the @cd command to handle @cd - and @cd -<n> for
6118 visiting any directory in _dh.
6127 visiting any directory in _dh.
6119
6128
6120 * Introduced _dh, a history of visited directories. @dhist prints
6129 * Introduced _dh, a history of visited directories. @dhist prints
6121 it out with numbers.
6130 it out with numbers.
6122
6131
6123 2001-12-07 Fernando Perez <fperez@colorado.edu>
6132 2001-12-07 Fernando Perez <fperez@colorado.edu>
6124
6133
6125 * Released 0.1.22
6134 * Released 0.1.22
6126
6135
6127 * Made initialization a bit more robust against invalid color
6136 * Made initialization a bit more robust against invalid color
6128 options in user input (exit, not traceback-crash).
6137 options in user input (exit, not traceback-crash).
6129
6138
6130 * Changed the bug crash reporter to write the report only in the
6139 * Changed the bug crash reporter to write the report only in the
6131 user's .ipython directory. That way IPython won't litter people's
6140 user's .ipython directory. That way IPython won't litter people's
6132 hard disks with crash files all over the place. Also print on
6141 hard disks with crash files all over the place. Also print on
6133 screen the necessary mail command.
6142 screen the necessary mail command.
6134
6143
6135 * With the new ultraTB, implemented LightBG color scheme for light
6144 * With the new ultraTB, implemented LightBG color scheme for light
6136 background terminals. A lot of people like white backgrounds, so I
6145 background terminals. A lot of people like white backgrounds, so I
6137 guess we should at least give them something readable.
6146 guess we should at least give them something readable.
6138
6147
6139 2001-12-06 Fernando Perez <fperez@colorado.edu>
6148 2001-12-06 Fernando Perez <fperez@colorado.edu>
6140
6149
6141 * Modified the structure of ultraTB. Now there's a proper class
6150 * Modified the structure of ultraTB. Now there's a proper class
6142 for tables of color schemes which allow adding schemes easily and
6151 for tables of color schemes which allow adding schemes easily and
6143 switching the active scheme without creating a new instance every
6152 switching the active scheme without creating a new instance every
6144 time (which was ridiculous). The syntax for creating new schemes
6153 time (which was ridiculous). The syntax for creating new schemes
6145 is also cleaner. I think ultraTB is finally done, with a clean
6154 is also cleaner. I think ultraTB is finally done, with a clean
6146 class structure. Names are also much cleaner (now there's proper
6155 class structure. Names are also much cleaner (now there's proper
6147 color tables, no need for every variable to also have 'color' in
6156 color tables, no need for every variable to also have 'color' in
6148 its name).
6157 its name).
6149
6158
6150 * Broke down genutils into separate files. Now genutils only
6159 * Broke down genutils into separate files. Now genutils only
6151 contains utility functions, and classes have been moved to their
6160 contains utility functions, and classes have been moved to their
6152 own files (they had enough independent functionality to warrant
6161 own files (they had enough independent functionality to warrant
6153 it): ConfigLoader, OutputTrap, Struct.
6162 it): ConfigLoader, OutputTrap, Struct.
6154
6163
6155 2001-12-05 Fernando Perez <fperez@colorado.edu>
6164 2001-12-05 Fernando Perez <fperez@colorado.edu>
6156
6165
6157 * IPython turns 21! Released version 0.1.21, as a candidate for
6166 * IPython turns 21! Released version 0.1.21, as a candidate for
6158 public consumption. If all goes well, release in a few days.
6167 public consumption. If all goes well, release in a few days.
6159
6168
6160 * Fixed path bug (files in Extensions/ directory wouldn't be found
6169 * Fixed path bug (files in Extensions/ directory wouldn't be found
6161 unless IPython/ was explicitly in sys.path).
6170 unless IPython/ was explicitly in sys.path).
6162
6171
6163 * Extended the FlexCompleter class as MagicCompleter to allow
6172 * Extended the FlexCompleter class as MagicCompleter to allow
6164 completion of @-starting lines.
6173 completion of @-starting lines.
6165
6174
6166 * Created __release__.py file as a central repository for release
6175 * Created __release__.py file as a central repository for release
6167 info that other files can read from.
6176 info that other files can read from.
6168
6177
6169 * Fixed small bug in logging: when logging was turned on in
6178 * Fixed small bug in logging: when logging was turned on in
6170 mid-session, old lines with special meanings (!@?) were being
6179 mid-session, old lines with special meanings (!@?) were being
6171 logged without the prepended comment, which is necessary since
6180 logged without the prepended comment, which is necessary since
6172 they are not truly valid python syntax. This should make session
6181 they are not truly valid python syntax. This should make session
6173 restores produce less errors.
6182 restores produce less errors.
6174
6183
6175 * The namespace cleanup forced me to make a FlexCompleter class
6184 * The namespace cleanup forced me to make a FlexCompleter class
6176 which is nothing but a ripoff of rlcompleter, but with selectable
6185 which is nothing but a ripoff of rlcompleter, but with selectable
6177 namespace (rlcompleter only works in __main__.__dict__). I'll try
6186 namespace (rlcompleter only works in __main__.__dict__). I'll try
6178 to submit a note to the authors to see if this change can be
6187 to submit a note to the authors to see if this change can be
6179 incorporated in future rlcompleter releases (Dec.6: done)
6188 incorporated in future rlcompleter releases (Dec.6: done)
6180
6189
6181 * More fixes to namespace handling. It was a mess! Now all
6190 * More fixes to namespace handling. It was a mess! Now all
6182 explicit references to __main__.__dict__ are gone (except when
6191 explicit references to __main__.__dict__ are gone (except when
6183 really needed) and everything is handled through the namespace
6192 really needed) and everything is handled through the namespace
6184 dicts in the IPython instance. We seem to be getting somewhere
6193 dicts in the IPython instance. We seem to be getting somewhere
6185 with this, finally...
6194 with this, finally...
6186
6195
6187 * Small documentation updates.
6196 * Small documentation updates.
6188
6197
6189 * Created the Extensions directory under IPython (with an
6198 * Created the Extensions directory under IPython (with an
6190 __init__.py). Put the PhysicalQ stuff there. This directory should
6199 __init__.py). Put the PhysicalQ stuff there. This directory should
6191 be used for all special-purpose extensions.
6200 be used for all special-purpose extensions.
6192
6201
6193 * File renaming:
6202 * File renaming:
6194 ipythonlib --> ipmaker
6203 ipythonlib --> ipmaker
6195 ipplib --> iplib
6204 ipplib --> iplib
6196 This makes a bit more sense in terms of what these files actually do.
6205 This makes a bit more sense in terms of what these files actually do.
6197
6206
6198 * Moved all the classes and functions in ipythonlib to ipplib, so
6207 * Moved all the classes and functions in ipythonlib to ipplib, so
6199 now ipythonlib only has make_IPython(). This will ease up its
6208 now ipythonlib only has make_IPython(). This will ease up its
6200 splitting in smaller functional chunks later.
6209 splitting in smaller functional chunks later.
6201
6210
6202 * Cleaned up (done, I think) output of @whos. Better column
6211 * Cleaned up (done, I think) output of @whos. Better column
6203 formatting, and now shows str(var) for as much as it can, which is
6212 formatting, and now shows str(var) for as much as it can, which is
6204 typically what one gets with a 'print var'.
6213 typically what one gets with a 'print var'.
6205
6214
6206 2001-12-04 Fernando Perez <fperez@colorado.edu>
6215 2001-12-04 Fernando Perez <fperez@colorado.edu>
6207
6216
6208 * Fixed namespace problems. Now builtin/IPyhton/user names get
6217 * Fixed namespace problems. Now builtin/IPyhton/user names get
6209 properly reported in their namespace. Internal namespace handling
6218 properly reported in their namespace. Internal namespace handling
6210 is finally getting decent (not perfect yet, but much better than
6219 is finally getting decent (not perfect yet, but much better than
6211 the ad-hoc mess we had).
6220 the ad-hoc mess we had).
6212
6221
6213 * Removed -exit option. If people just want to run a python
6222 * Removed -exit option. If people just want to run a python
6214 script, that's what the normal interpreter is for. Less
6223 script, that's what the normal interpreter is for. Less
6215 unnecessary options, less chances for bugs.
6224 unnecessary options, less chances for bugs.
6216
6225
6217 * Added a crash handler which generates a complete post-mortem if
6226 * Added a crash handler which generates a complete post-mortem if
6218 IPython crashes. This will help a lot in tracking bugs down the
6227 IPython crashes. This will help a lot in tracking bugs down the
6219 road.
6228 road.
6220
6229
6221 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6230 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6222 which were boud to functions being reassigned would bypass the
6231 which were boud to functions being reassigned would bypass the
6223 logger, breaking the sync of _il with the prompt counter. This
6232 logger, breaking the sync of _il with the prompt counter. This
6224 would then crash IPython later when a new line was logged.
6233 would then crash IPython later when a new line was logged.
6225
6234
6226 2001-12-02 Fernando Perez <fperez@colorado.edu>
6235 2001-12-02 Fernando Perez <fperez@colorado.edu>
6227
6236
6228 * Made IPython a package. This means people don't have to clutter
6237 * Made IPython a package. This means people don't have to clutter
6229 their sys.path with yet another directory. Changed the INSTALL
6238 their sys.path with yet another directory. Changed the INSTALL
6230 file accordingly.
6239 file accordingly.
6231
6240
6232 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6241 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6233 sorts its output (so @who shows it sorted) and @whos formats the
6242 sorts its output (so @who shows it sorted) and @whos formats the
6234 table according to the width of the first column. Nicer, easier to
6243 table according to the width of the first column. Nicer, easier to
6235 read. Todo: write a generic table_format() which takes a list of
6244 read. Todo: write a generic table_format() which takes a list of
6236 lists and prints it nicely formatted, with optional row/column
6245 lists and prints it nicely formatted, with optional row/column
6237 separators and proper padding and justification.
6246 separators and proper padding and justification.
6238
6247
6239 * Released 0.1.20
6248 * Released 0.1.20
6240
6249
6241 * Fixed bug in @log which would reverse the inputcache list (a
6250 * Fixed bug in @log which would reverse the inputcache list (a
6242 copy operation was missing).
6251 copy operation was missing).
6243
6252
6244 * Code cleanup. @config was changed to use page(). Better, since
6253 * Code cleanup. @config was changed to use page(). Better, since
6245 its output is always quite long.
6254 its output is always quite long.
6246
6255
6247 * Itpl is back as a dependency. I was having too many problems
6256 * Itpl is back as a dependency. I was having too many problems
6248 getting the parametric aliases to work reliably, and it's just
6257 getting the parametric aliases to work reliably, and it's just
6249 easier to code weird string operations with it than playing %()s
6258 easier to code weird string operations with it than playing %()s
6250 games. It's only ~6k, so I don't think it's too big a deal.
6259 games. It's only ~6k, so I don't think it's too big a deal.
6251
6260
6252 * Found (and fixed) a very nasty bug with history. !lines weren't
6261 * Found (and fixed) a very nasty bug with history. !lines weren't
6253 getting cached, and the out of sync caches would crash
6262 getting cached, and the out of sync caches would crash
6254 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6263 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6255 division of labor a bit better. Bug fixed, cleaner structure.
6264 division of labor a bit better. Bug fixed, cleaner structure.
6256
6265
6257 2001-12-01 Fernando Perez <fperez@colorado.edu>
6266 2001-12-01 Fernando Perez <fperez@colorado.edu>
6258
6267
6259 * Released 0.1.19
6268 * Released 0.1.19
6260
6269
6261 * Added option -n to @hist to prevent line number printing. Much
6270 * Added option -n to @hist to prevent line number printing. Much
6262 easier to copy/paste code this way.
6271 easier to copy/paste code this way.
6263
6272
6264 * Created global _il to hold the input list. Allows easy
6273 * Created global _il to hold the input list. Allows easy
6265 re-execution of blocks of code by slicing it (inspired by Janko's
6274 re-execution of blocks of code by slicing it (inspired by Janko's
6266 comment on 'macros').
6275 comment on 'macros').
6267
6276
6268 * Small fixes and doc updates.
6277 * Small fixes and doc updates.
6269
6278
6270 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6279 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6271 much too fragile with automagic. Handles properly multi-line
6280 much too fragile with automagic. Handles properly multi-line
6272 statements and takes parameters.
6281 statements and takes parameters.
6273
6282
6274 2001-11-30 Fernando Perez <fperez@colorado.edu>
6283 2001-11-30 Fernando Perez <fperez@colorado.edu>
6275
6284
6276 * Version 0.1.18 released.
6285 * Version 0.1.18 released.
6277
6286
6278 * Fixed nasty namespace bug in initial module imports.
6287 * Fixed nasty namespace bug in initial module imports.
6279
6288
6280 * Added copyright/license notes to all code files (except
6289 * Added copyright/license notes to all code files (except
6281 DPyGetOpt). For the time being, LGPL. That could change.
6290 DPyGetOpt). For the time being, LGPL. That could change.
6282
6291
6283 * Rewrote a much nicer README, updated INSTALL, cleaned up
6292 * Rewrote a much nicer README, updated INSTALL, cleaned up
6284 ipythonrc-* samples.
6293 ipythonrc-* samples.
6285
6294
6286 * Overall code/documentation cleanup. Basically ready for
6295 * Overall code/documentation cleanup. Basically ready for
6287 release. Only remaining thing: licence decision (LGPL?).
6296 release. Only remaining thing: licence decision (LGPL?).
6288
6297
6289 * Converted load_config to a class, ConfigLoader. Now recursion
6298 * Converted load_config to a class, ConfigLoader. Now recursion
6290 control is better organized. Doesn't include the same file twice.
6299 control is better organized. Doesn't include the same file twice.
6291
6300
6292 2001-11-29 Fernando Perez <fperez@colorado.edu>
6301 2001-11-29 Fernando Perez <fperez@colorado.edu>
6293
6302
6294 * Got input history working. Changed output history variables from
6303 * Got input history working. Changed output history variables from
6295 _p to _o so that _i is for input and _o for output. Just cleaner
6304 _p to _o so that _i is for input and _o for output. Just cleaner
6296 convention.
6305 convention.
6297
6306
6298 * Implemented parametric aliases. This pretty much allows the
6307 * Implemented parametric aliases. This pretty much allows the
6299 alias system to offer full-blown shell convenience, I think.
6308 alias system to offer full-blown shell convenience, I think.
6300
6309
6301 * Version 0.1.17 released, 0.1.18 opened.
6310 * Version 0.1.17 released, 0.1.18 opened.
6302
6311
6303 * dot_ipython/ipythonrc (alias): added documentation.
6312 * dot_ipython/ipythonrc (alias): added documentation.
6304 (xcolor): Fixed small bug (xcolors -> xcolor)
6313 (xcolor): Fixed small bug (xcolors -> xcolor)
6305
6314
6306 * Changed the alias system. Now alias is a magic command to define
6315 * Changed the alias system. Now alias is a magic command to define
6307 aliases just like the shell. Rationale: the builtin magics should
6316 aliases just like the shell. Rationale: the builtin magics should
6308 be there for things deeply connected to IPython's
6317 be there for things deeply connected to IPython's
6309 architecture. And this is a much lighter system for what I think
6318 architecture. And this is a much lighter system for what I think
6310 is the really important feature: allowing users to define quickly
6319 is the really important feature: allowing users to define quickly
6311 magics that will do shell things for them, so they can customize
6320 magics that will do shell things for them, so they can customize
6312 IPython easily to match their work habits. If someone is really
6321 IPython easily to match their work habits. If someone is really
6313 desperate to have another name for a builtin alias, they can
6322 desperate to have another name for a builtin alias, they can
6314 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6323 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6315 works.
6324 works.
6316
6325
6317 2001-11-28 Fernando Perez <fperez@colorado.edu>
6326 2001-11-28 Fernando Perez <fperez@colorado.edu>
6318
6327
6319 * Changed @file so that it opens the source file at the proper
6328 * Changed @file so that it opens the source file at the proper
6320 line. Since it uses less, if your EDITOR environment is
6329 line. Since it uses less, if your EDITOR environment is
6321 configured, typing v will immediately open your editor of choice
6330 configured, typing v will immediately open your editor of choice
6322 right at the line where the object is defined. Not as quick as
6331 right at the line where the object is defined. Not as quick as
6323 having a direct @edit command, but for all intents and purposes it
6332 having a direct @edit command, but for all intents and purposes it
6324 works. And I don't have to worry about writing @edit to deal with
6333 works. And I don't have to worry about writing @edit to deal with
6325 all the editors, less does that.
6334 all the editors, less does that.
6326
6335
6327 * Version 0.1.16 released, 0.1.17 opened.
6336 * Version 0.1.16 released, 0.1.17 opened.
6328
6337
6329 * Fixed some nasty bugs in the page/page_dumb combo that could
6338 * Fixed some nasty bugs in the page/page_dumb combo that could
6330 crash IPython.
6339 crash IPython.
6331
6340
6332 2001-11-27 Fernando Perez <fperez@colorado.edu>
6341 2001-11-27 Fernando Perez <fperez@colorado.edu>
6333
6342
6334 * Version 0.1.15 released, 0.1.16 opened.
6343 * Version 0.1.15 released, 0.1.16 opened.
6335
6344
6336 * Finally got ? and ?? to work for undefined things: now it's
6345 * Finally got ? and ?? to work for undefined things: now it's
6337 possible to type {}.get? and get information about the get method
6346 possible to type {}.get? and get information about the get method
6338 of dicts, or os.path? even if only os is defined (so technically
6347 of dicts, or os.path? even if only os is defined (so technically
6339 os.path isn't). Works at any level. For example, after import os,
6348 os.path isn't). Works at any level. For example, after import os,
6340 os?, os.path?, os.path.abspath? all work. This is great, took some
6349 os?, os.path?, os.path.abspath? all work. This is great, took some
6341 work in _ofind.
6350 work in _ofind.
6342
6351
6343 * Fixed more bugs with logging. The sanest way to do it was to add
6352 * Fixed more bugs with logging. The sanest way to do it was to add
6344 to @log a 'mode' parameter. Killed two in one shot (this mode
6353 to @log a 'mode' parameter. Killed two in one shot (this mode
6345 option was a request of Janko's). I think it's finally clean
6354 option was a request of Janko's). I think it's finally clean
6346 (famous last words).
6355 (famous last words).
6347
6356
6348 * Added a page_dumb() pager which does a decent job of paging on
6357 * Added a page_dumb() pager which does a decent job of paging on
6349 screen, if better things (like less) aren't available. One less
6358 screen, if better things (like less) aren't available. One less
6350 unix dependency (someday maybe somebody will port this to
6359 unix dependency (someday maybe somebody will port this to
6351 windows).
6360 windows).
6352
6361
6353 * Fixed problem in magic_log: would lock of logging out if log
6362 * Fixed problem in magic_log: would lock of logging out if log
6354 creation failed (because it would still think it had succeeded).
6363 creation failed (because it would still think it had succeeded).
6355
6364
6356 * Improved the page() function using curses to auto-detect screen
6365 * Improved the page() function using curses to auto-detect screen
6357 size. Now it can make a much better decision on whether to print
6366 size. Now it can make a much better decision on whether to print
6358 or page a string. Option screen_length was modified: a value 0
6367 or page a string. Option screen_length was modified: a value 0
6359 means auto-detect, and that's the default now.
6368 means auto-detect, and that's the default now.
6360
6369
6361 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6370 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6362 go out. I'll test it for a few days, then talk to Janko about
6371 go out. I'll test it for a few days, then talk to Janko about
6363 licences and announce it.
6372 licences and announce it.
6364
6373
6365 * Fixed the length of the auto-generated ---> prompt which appears
6374 * Fixed the length of the auto-generated ---> prompt which appears
6366 for auto-parens and auto-quotes. Getting this right isn't trivial,
6375 for auto-parens and auto-quotes. Getting this right isn't trivial,
6367 with all the color escapes, different prompt types and optional
6376 with all the color escapes, different prompt types and optional
6368 separators. But it seems to be working in all the combinations.
6377 separators. But it seems to be working in all the combinations.
6369
6378
6370 2001-11-26 Fernando Perez <fperez@colorado.edu>
6379 2001-11-26 Fernando Perez <fperez@colorado.edu>
6371
6380
6372 * Wrote a regexp filter to get option types from the option names
6381 * Wrote a regexp filter to get option types from the option names
6373 string. This eliminates the need to manually keep two duplicate
6382 string. This eliminates the need to manually keep two duplicate
6374 lists.
6383 lists.
6375
6384
6376 * Removed the unneeded check_option_names. Now options are handled
6385 * Removed the unneeded check_option_names. Now options are handled
6377 in a much saner manner and it's easy to visually check that things
6386 in a much saner manner and it's easy to visually check that things
6378 are ok.
6387 are ok.
6379
6388
6380 * Updated version numbers on all files I modified to carry a
6389 * Updated version numbers on all files I modified to carry a
6381 notice so Janko and Nathan have clear version markers.
6390 notice so Janko and Nathan have clear version markers.
6382
6391
6383 * Updated docstring for ultraTB with my changes. I should send
6392 * Updated docstring for ultraTB with my changes. I should send
6384 this to Nathan.
6393 this to Nathan.
6385
6394
6386 * Lots of small fixes. Ran everything through pychecker again.
6395 * Lots of small fixes. Ran everything through pychecker again.
6387
6396
6388 * Made loading of deep_reload an cmd line option. If it's not too
6397 * Made loading of deep_reload an cmd line option. If it's not too
6389 kosher, now people can just disable it. With -nodeep_reload it's
6398 kosher, now people can just disable it. With -nodeep_reload it's
6390 still available as dreload(), it just won't overwrite reload().
6399 still available as dreload(), it just won't overwrite reload().
6391
6400
6392 * Moved many options to the no| form (-opt and -noopt
6401 * Moved many options to the no| form (-opt and -noopt
6393 accepted). Cleaner.
6402 accepted). Cleaner.
6394
6403
6395 * Changed magic_log so that if called with no parameters, it uses
6404 * Changed magic_log so that if called with no parameters, it uses
6396 'rotate' mode. That way auto-generated logs aren't automatically
6405 'rotate' mode. That way auto-generated logs aren't automatically
6397 over-written. For normal logs, now a backup is made if it exists
6406 over-written. For normal logs, now a backup is made if it exists
6398 (only 1 level of backups). A new 'backup' mode was added to the
6407 (only 1 level of backups). A new 'backup' mode was added to the
6399 Logger class to support this. This was a request by Janko.
6408 Logger class to support this. This was a request by Janko.
6400
6409
6401 * Added @logoff/@logon to stop/restart an active log.
6410 * Added @logoff/@logon to stop/restart an active log.
6402
6411
6403 * Fixed a lot of bugs in log saving/replay. It was pretty
6412 * Fixed a lot of bugs in log saving/replay. It was pretty
6404 broken. Now special lines (!@,/) appear properly in the command
6413 broken. Now special lines (!@,/) appear properly in the command
6405 history after a log replay.
6414 history after a log replay.
6406
6415
6407 * Tried and failed to implement full session saving via pickle. My
6416 * Tried and failed to implement full session saving via pickle. My
6408 idea was to pickle __main__.__dict__, but modules can't be
6417 idea was to pickle __main__.__dict__, but modules can't be
6409 pickled. This would be a better alternative to replaying logs, but
6418 pickled. This would be a better alternative to replaying logs, but
6410 seems quite tricky to get to work. Changed -session to be called
6419 seems quite tricky to get to work. Changed -session to be called
6411 -logplay, which more accurately reflects what it does. And if we
6420 -logplay, which more accurately reflects what it does. And if we
6412 ever get real session saving working, -session is now available.
6421 ever get real session saving working, -session is now available.
6413
6422
6414 * Implemented color schemes for prompts also. As for tracebacks,
6423 * Implemented color schemes for prompts also. As for tracebacks,
6415 currently only NoColor and Linux are supported. But now the
6424 currently only NoColor and Linux are supported. But now the
6416 infrastructure is in place, based on a generic ColorScheme
6425 infrastructure is in place, based on a generic ColorScheme
6417 class. So writing and activating new schemes both for the prompts
6426 class. So writing and activating new schemes both for the prompts
6418 and the tracebacks should be straightforward.
6427 and the tracebacks should be straightforward.
6419
6428
6420 * Version 0.1.13 released, 0.1.14 opened.
6429 * Version 0.1.13 released, 0.1.14 opened.
6421
6430
6422 * Changed handling of options for output cache. Now counter is
6431 * Changed handling of options for output cache. Now counter is
6423 hardwired starting at 1 and one specifies the maximum number of
6432 hardwired starting at 1 and one specifies the maximum number of
6424 entries *in the outcache* (not the max prompt counter). This is
6433 entries *in the outcache* (not the max prompt counter). This is
6425 much better, since many statements won't increase the cache
6434 much better, since many statements won't increase the cache
6426 count. It also eliminated some confusing options, now there's only
6435 count. It also eliminated some confusing options, now there's only
6427 one: cache_size.
6436 one: cache_size.
6428
6437
6429 * Added 'alias' magic function and magic_alias option in the
6438 * Added 'alias' magic function and magic_alias option in the
6430 ipythonrc file. Now the user can easily define whatever names he
6439 ipythonrc file. Now the user can easily define whatever names he
6431 wants for the magic functions without having to play weird
6440 wants for the magic functions without having to play weird
6432 namespace games. This gives IPython a real shell-like feel.
6441 namespace games. This gives IPython a real shell-like feel.
6433
6442
6434 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6443 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6435 @ or not).
6444 @ or not).
6436
6445
6437 This was one of the last remaining 'visible' bugs (that I know
6446 This was one of the last remaining 'visible' bugs (that I know
6438 of). I think if I can clean up the session loading so it works
6447 of). I think if I can clean up the session loading so it works
6439 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6448 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6440 about licensing).
6449 about licensing).
6441
6450
6442 2001-11-25 Fernando Perez <fperez@colorado.edu>
6451 2001-11-25 Fernando Perez <fperez@colorado.edu>
6443
6452
6444 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6453 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6445 there's a cleaner distinction between what ? and ?? show.
6454 there's a cleaner distinction between what ? and ?? show.
6446
6455
6447 * Added screen_length option. Now the user can define his own
6456 * Added screen_length option. Now the user can define his own
6448 screen size for page() operations.
6457 screen size for page() operations.
6449
6458
6450 * Implemented magic shell-like functions with automatic code
6459 * Implemented magic shell-like functions with automatic code
6451 generation. Now adding another function is just a matter of adding
6460 generation. Now adding another function is just a matter of adding
6452 an entry to a dict, and the function is dynamically generated at
6461 an entry to a dict, and the function is dynamically generated at
6453 run-time. Python has some really cool features!
6462 run-time. Python has some really cool features!
6454
6463
6455 * Renamed many options to cleanup conventions a little. Now all
6464 * Renamed many options to cleanup conventions a little. Now all
6456 are lowercase, and only underscores where needed. Also in the code
6465 are lowercase, and only underscores where needed. Also in the code
6457 option name tables are clearer.
6466 option name tables are clearer.
6458
6467
6459 * Changed prompts a little. Now input is 'In [n]:' instead of
6468 * Changed prompts a little. Now input is 'In [n]:' instead of
6460 'In[n]:='. This allows it the numbers to be aligned with the
6469 'In[n]:='. This allows it the numbers to be aligned with the
6461 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6470 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6462 Python (it was a Mathematica thing). The '...' continuation prompt
6471 Python (it was a Mathematica thing). The '...' continuation prompt
6463 was also changed a little to align better.
6472 was also changed a little to align better.
6464
6473
6465 * Fixed bug when flushing output cache. Not all _p<n> variables
6474 * Fixed bug when flushing output cache. Not all _p<n> variables
6466 exist, so their deletion needs to be wrapped in a try:
6475 exist, so their deletion needs to be wrapped in a try:
6467
6476
6468 * Figured out how to properly use inspect.formatargspec() (it
6477 * Figured out how to properly use inspect.formatargspec() (it
6469 requires the args preceded by *). So I removed all the code from
6478 requires the args preceded by *). So I removed all the code from
6470 _get_pdef in Magic, which was just replicating that.
6479 _get_pdef in Magic, which was just replicating that.
6471
6480
6472 * Added test to prefilter to allow redefining magic function names
6481 * Added test to prefilter to allow redefining magic function names
6473 as variables. This is ok, since the @ form is always available,
6482 as variables. This is ok, since the @ form is always available,
6474 but whe should allow the user to define a variable called 'ls' if
6483 but whe should allow the user to define a variable called 'ls' if
6475 he needs it.
6484 he needs it.
6476
6485
6477 * Moved the ToDo information from README into a separate ToDo.
6486 * Moved the ToDo information from README into a separate ToDo.
6478
6487
6479 * General code cleanup and small bugfixes. I think it's close to a
6488 * General code cleanup and small bugfixes. I think it's close to a
6480 state where it can be released, obviously with a big 'beta'
6489 state where it can be released, obviously with a big 'beta'
6481 warning on it.
6490 warning on it.
6482
6491
6483 * Got the magic function split to work. Now all magics are defined
6492 * Got the magic function split to work. Now all magics are defined
6484 in a separate class. It just organizes things a bit, and now
6493 in a separate class. It just organizes things a bit, and now
6485 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6494 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6486 was too long).
6495 was too long).
6487
6496
6488 * Changed @clear to @reset to avoid potential confusions with
6497 * Changed @clear to @reset to avoid potential confusions with
6489 the shell command clear. Also renamed @cl to @clear, which does
6498 the shell command clear. Also renamed @cl to @clear, which does
6490 exactly what people expect it to from their shell experience.
6499 exactly what people expect it to from their shell experience.
6491
6500
6492 Added a check to the @reset command (since it's so
6501 Added a check to the @reset command (since it's so
6493 destructive, it's probably a good idea to ask for confirmation).
6502 destructive, it's probably a good idea to ask for confirmation).
6494 But now reset only works for full namespace resetting. Since the
6503 But now reset only works for full namespace resetting. Since the
6495 del keyword is already there for deleting a few specific
6504 del keyword is already there for deleting a few specific
6496 variables, I don't see the point of having a redundant magic
6505 variables, I don't see the point of having a redundant magic
6497 function for the same task.
6506 function for the same task.
6498
6507
6499 2001-11-24 Fernando Perez <fperez@colorado.edu>
6508 2001-11-24 Fernando Perez <fperez@colorado.edu>
6500
6509
6501 * Updated the builtin docs (esp. the ? ones).
6510 * Updated the builtin docs (esp. the ? ones).
6502
6511
6503 * Ran all the code through pychecker. Not terribly impressed with
6512 * Ran all the code through pychecker. Not terribly impressed with
6504 it: lots of spurious warnings and didn't really find anything of
6513 it: lots of spurious warnings and didn't really find anything of
6505 substance (just a few modules being imported and not used).
6514 substance (just a few modules being imported and not used).
6506
6515
6507 * Implemented the new ultraTB functionality into IPython. New
6516 * Implemented the new ultraTB functionality into IPython. New
6508 option: xcolors. This chooses color scheme. xmode now only selects
6517 option: xcolors. This chooses color scheme. xmode now only selects
6509 between Plain and Verbose. Better orthogonality.
6518 between Plain and Verbose. Better orthogonality.
6510
6519
6511 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6520 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6512 mode and color scheme for the exception handlers. Now it's
6521 mode and color scheme for the exception handlers. Now it's
6513 possible to have the verbose traceback with no coloring.
6522 possible to have the verbose traceback with no coloring.
6514
6523
6515 2001-11-23 Fernando Perez <fperez@colorado.edu>
6524 2001-11-23 Fernando Perez <fperez@colorado.edu>
6516
6525
6517 * Version 0.1.12 released, 0.1.13 opened.
6526 * Version 0.1.12 released, 0.1.13 opened.
6518
6527
6519 * Removed option to set auto-quote and auto-paren escapes by
6528 * Removed option to set auto-quote and auto-paren escapes by
6520 user. The chances of breaking valid syntax are just too high. If
6529 user. The chances of breaking valid syntax are just too high. If
6521 someone *really* wants, they can always dig into the code.
6530 someone *really* wants, they can always dig into the code.
6522
6531
6523 * Made prompt separators configurable.
6532 * Made prompt separators configurable.
6524
6533
6525 2001-11-22 Fernando Perez <fperez@colorado.edu>
6534 2001-11-22 Fernando Perez <fperez@colorado.edu>
6526
6535
6527 * Small bugfixes in many places.
6536 * Small bugfixes in many places.
6528
6537
6529 * Removed the MyCompleter class from ipplib. It seemed redundant
6538 * Removed the MyCompleter class from ipplib. It seemed redundant
6530 with the C-p,C-n history search functionality. Less code to
6539 with the C-p,C-n history search functionality. Less code to
6531 maintain.
6540 maintain.
6532
6541
6533 * Moved all the original ipython.py code into ipythonlib.py. Right
6542 * Moved all the original ipython.py code into ipythonlib.py. Right
6534 now it's just one big dump into a function called make_IPython, so
6543 now it's just one big dump into a function called make_IPython, so
6535 no real modularity has been gained. But at least it makes the
6544 no real modularity has been gained. But at least it makes the
6536 wrapper script tiny, and since ipythonlib is a module, it gets
6545 wrapper script tiny, and since ipythonlib is a module, it gets
6537 compiled and startup is much faster.
6546 compiled and startup is much faster.
6538
6547
6539 This is a reasobably 'deep' change, so we should test it for a
6548 This is a reasobably 'deep' change, so we should test it for a
6540 while without messing too much more with the code.
6549 while without messing too much more with the code.
6541
6550
6542 2001-11-21 Fernando Perez <fperez@colorado.edu>
6551 2001-11-21 Fernando Perez <fperez@colorado.edu>
6543
6552
6544 * Version 0.1.11 released, 0.1.12 opened for further work.
6553 * Version 0.1.11 released, 0.1.12 opened for further work.
6545
6554
6546 * Removed dependency on Itpl. It was only needed in one place. It
6555 * Removed dependency on Itpl. It was only needed in one place. It
6547 would be nice if this became part of python, though. It makes life
6556 would be nice if this became part of python, though. It makes life
6548 *a lot* easier in some cases.
6557 *a lot* easier in some cases.
6549
6558
6550 * Simplified the prefilter code a bit. Now all handlers are
6559 * Simplified the prefilter code a bit. Now all handlers are
6551 expected to explicitly return a value (at least a blank string).
6560 expected to explicitly return a value (at least a blank string).
6552
6561
6553 * Heavy edits in ipplib. Removed the help system altogether. Now
6562 * Heavy edits in ipplib. Removed the help system altogether. Now
6554 obj?/?? is used for inspecting objects, a magic @doc prints
6563 obj?/?? is used for inspecting objects, a magic @doc prints
6555 docstrings, and full-blown Python help is accessed via the 'help'
6564 docstrings, and full-blown Python help is accessed via the 'help'
6556 keyword. This cleans up a lot of code (less to maintain) and does
6565 keyword. This cleans up a lot of code (less to maintain) and does
6557 the job. Since 'help' is now a standard Python component, might as
6566 the job. Since 'help' is now a standard Python component, might as
6558 well use it and remove duplicate functionality.
6567 well use it and remove duplicate functionality.
6559
6568
6560 Also removed the option to use ipplib as a standalone program. By
6569 Also removed the option to use ipplib as a standalone program. By
6561 now it's too dependent on other parts of IPython to function alone.
6570 now it's too dependent on other parts of IPython to function alone.
6562
6571
6563 * Fixed bug in genutils.pager. It would crash if the pager was
6572 * Fixed bug in genutils.pager. It would crash if the pager was
6564 exited immediately after opening (broken pipe).
6573 exited immediately after opening (broken pipe).
6565
6574
6566 * Trimmed down the VerboseTB reporting a little. The header is
6575 * Trimmed down the VerboseTB reporting a little. The header is
6567 much shorter now and the repeated exception arguments at the end
6576 much shorter now and the repeated exception arguments at the end
6568 have been removed. For interactive use the old header seemed a bit
6577 have been removed. For interactive use the old header seemed a bit
6569 excessive.
6578 excessive.
6570
6579
6571 * Fixed small bug in output of @whos for variables with multi-word
6580 * Fixed small bug in output of @whos for variables with multi-word
6572 types (only first word was displayed).
6581 types (only first word was displayed).
6573
6582
6574 2001-11-17 Fernando Perez <fperez@colorado.edu>
6583 2001-11-17 Fernando Perez <fperez@colorado.edu>
6575
6584
6576 * Version 0.1.10 released, 0.1.11 opened for further work.
6585 * Version 0.1.10 released, 0.1.11 opened for further work.
6577
6586
6578 * Modified dirs and friends. dirs now *returns* the stack (not
6587 * Modified dirs and friends. dirs now *returns* the stack (not
6579 prints), so one can manipulate it as a variable. Convenient to
6588 prints), so one can manipulate it as a variable. Convenient to
6580 travel along many directories.
6589 travel along many directories.
6581
6590
6582 * Fixed bug in magic_pdef: would only work with functions with
6591 * Fixed bug in magic_pdef: would only work with functions with
6583 arguments with default values.
6592 arguments with default values.
6584
6593
6585 2001-11-14 Fernando Perez <fperez@colorado.edu>
6594 2001-11-14 Fernando Perez <fperez@colorado.edu>
6586
6595
6587 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6596 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6588 example with IPython. Various other minor fixes and cleanups.
6597 example with IPython. Various other minor fixes and cleanups.
6589
6598
6590 * Version 0.1.9 released, 0.1.10 opened for further work.
6599 * Version 0.1.9 released, 0.1.10 opened for further work.
6591
6600
6592 * Added sys.path to the list of directories searched in the
6601 * Added sys.path to the list of directories searched in the
6593 execfile= option. It used to be the current directory and the
6602 execfile= option. It used to be the current directory and the
6594 user's IPYTHONDIR only.
6603 user's IPYTHONDIR only.
6595
6604
6596 2001-11-13 Fernando Perez <fperez@colorado.edu>
6605 2001-11-13 Fernando Perez <fperez@colorado.edu>
6597
6606
6598 * Reinstated the raw_input/prefilter separation that Janko had
6607 * Reinstated the raw_input/prefilter separation that Janko had
6599 initially. This gives a more convenient setup for extending the
6608 initially. This gives a more convenient setup for extending the
6600 pre-processor from the outside: raw_input always gets a string,
6609 pre-processor from the outside: raw_input always gets a string,
6601 and prefilter has to process it. We can then redefine prefilter
6610 and prefilter has to process it. We can then redefine prefilter
6602 from the outside and implement extensions for special
6611 from the outside and implement extensions for special
6603 purposes.
6612 purposes.
6604
6613
6605 Today I got one for inputting PhysicalQuantity objects
6614 Today I got one for inputting PhysicalQuantity objects
6606 (from Scientific) without needing any function calls at
6615 (from Scientific) without needing any function calls at
6607 all. Extremely convenient, and it's all done as a user-level
6616 all. Extremely convenient, and it's all done as a user-level
6608 extension (no IPython code was touched). Now instead of:
6617 extension (no IPython code was touched). Now instead of:
6609 a = PhysicalQuantity(4.2,'m/s**2')
6618 a = PhysicalQuantity(4.2,'m/s**2')
6610 one can simply say
6619 one can simply say
6611 a = 4.2 m/s**2
6620 a = 4.2 m/s**2
6612 or even
6621 or even
6613 a = 4.2 m/s^2
6622 a = 4.2 m/s^2
6614
6623
6615 I use this, but it's also a proof of concept: IPython really is
6624 I use this, but it's also a proof of concept: IPython really is
6616 fully user-extensible, even at the level of the parsing of the
6625 fully user-extensible, even at the level of the parsing of the
6617 command line. It's not trivial, but it's perfectly doable.
6626 command line. It's not trivial, but it's perfectly doable.
6618
6627
6619 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6628 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6620 the problem of modules being loaded in the inverse order in which
6629 the problem of modules being loaded in the inverse order in which
6621 they were defined in
6630 they were defined in
6622
6631
6623 * Version 0.1.8 released, 0.1.9 opened for further work.
6632 * Version 0.1.8 released, 0.1.9 opened for further work.
6624
6633
6625 * Added magics pdef, source and file. They respectively show the
6634 * Added magics pdef, source and file. They respectively show the
6626 definition line ('prototype' in C), source code and full python
6635 definition line ('prototype' in C), source code and full python
6627 file for any callable object. The object inspector oinfo uses
6636 file for any callable object. The object inspector oinfo uses
6628 these to show the same information.
6637 these to show the same information.
6629
6638
6630 * Version 0.1.7 released, 0.1.8 opened for further work.
6639 * Version 0.1.7 released, 0.1.8 opened for further work.
6631
6640
6632 * Separated all the magic functions into a class called Magic. The
6641 * Separated all the magic functions into a class called Magic. The
6633 InteractiveShell class was becoming too big for Xemacs to handle
6642 InteractiveShell class was becoming too big for Xemacs to handle
6634 (de-indenting a line would lock it up for 10 seconds while it
6643 (de-indenting a line would lock it up for 10 seconds while it
6635 backtracked on the whole class!)
6644 backtracked on the whole class!)
6636
6645
6637 FIXME: didn't work. It can be done, but right now namespaces are
6646 FIXME: didn't work. It can be done, but right now namespaces are
6638 all messed up. Do it later (reverted it for now, so at least
6647 all messed up. Do it later (reverted it for now, so at least
6639 everything works as before).
6648 everything works as before).
6640
6649
6641 * Got the object introspection system (magic_oinfo) working! I
6650 * Got the object introspection system (magic_oinfo) working! I
6642 think this is pretty much ready for release to Janko, so he can
6651 think this is pretty much ready for release to Janko, so he can
6643 test it for a while and then announce it. Pretty much 100% of what
6652 test it for a while and then announce it. Pretty much 100% of what
6644 I wanted for the 'phase 1' release is ready. Happy, tired.
6653 I wanted for the 'phase 1' release is ready. Happy, tired.
6645
6654
6646 2001-11-12 Fernando Perez <fperez@colorado.edu>
6655 2001-11-12 Fernando Perez <fperez@colorado.edu>
6647
6656
6648 * Version 0.1.6 released, 0.1.7 opened for further work.
6657 * Version 0.1.6 released, 0.1.7 opened for further work.
6649
6658
6650 * Fixed bug in printing: it used to test for truth before
6659 * Fixed bug in printing: it used to test for truth before
6651 printing, so 0 wouldn't print. Now checks for None.
6660 printing, so 0 wouldn't print. Now checks for None.
6652
6661
6653 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6662 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6654 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6663 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6655 reaches by hand into the outputcache. Think of a better way to do
6664 reaches by hand into the outputcache. Think of a better way to do
6656 this later.
6665 this later.
6657
6666
6658 * Various small fixes thanks to Nathan's comments.
6667 * Various small fixes thanks to Nathan's comments.
6659
6668
6660 * Changed magic_pprint to magic_Pprint. This way it doesn't
6669 * Changed magic_pprint to magic_Pprint. This way it doesn't
6661 collide with pprint() and the name is consistent with the command
6670 collide with pprint() and the name is consistent with the command
6662 line option.
6671 line option.
6663
6672
6664 * Changed prompt counter behavior to be fully like
6673 * Changed prompt counter behavior to be fully like
6665 Mathematica's. That is, even input that doesn't return a result
6674 Mathematica's. That is, even input that doesn't return a result
6666 raises the prompt counter. The old behavior was kind of confusing
6675 raises the prompt counter. The old behavior was kind of confusing
6667 (getting the same prompt number several times if the operation
6676 (getting the same prompt number several times if the operation
6668 didn't return a result).
6677 didn't return a result).
6669
6678
6670 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6679 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6671
6680
6672 * Fixed -Classic mode (wasn't working anymore).
6681 * Fixed -Classic mode (wasn't working anymore).
6673
6682
6674 * Added colored prompts using Nathan's new code. Colors are
6683 * Added colored prompts using Nathan's new code. Colors are
6675 currently hardwired, they can be user-configurable. For
6684 currently hardwired, they can be user-configurable. For
6676 developers, they can be chosen in file ipythonlib.py, at the
6685 developers, they can be chosen in file ipythonlib.py, at the
6677 beginning of the CachedOutput class def.
6686 beginning of the CachedOutput class def.
6678
6687
6679 2001-11-11 Fernando Perez <fperez@colorado.edu>
6688 2001-11-11 Fernando Perez <fperez@colorado.edu>
6680
6689
6681 * Version 0.1.5 released, 0.1.6 opened for further work.
6690 * Version 0.1.5 released, 0.1.6 opened for further work.
6682
6691
6683 * Changed magic_env to *return* the environment as a dict (not to
6692 * Changed magic_env to *return* the environment as a dict (not to
6684 print it). This way it prints, but it can also be processed.
6693 print it). This way it prints, but it can also be processed.
6685
6694
6686 * Added Verbose exception reporting to interactive
6695 * Added Verbose exception reporting to interactive
6687 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6696 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6688 traceback. Had to make some changes to the ultraTB file. This is
6697 traceback. Had to make some changes to the ultraTB file. This is
6689 probably the last 'big' thing in my mental todo list. This ties
6698 probably the last 'big' thing in my mental todo list. This ties
6690 in with the next entry:
6699 in with the next entry:
6691
6700
6692 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6701 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6693 has to specify is Plain, Color or Verbose for all exception
6702 has to specify is Plain, Color or Verbose for all exception
6694 handling.
6703 handling.
6695
6704
6696 * Removed ShellServices option. All this can really be done via
6705 * Removed ShellServices option. All this can really be done via
6697 the magic system. It's easier to extend, cleaner and has automatic
6706 the magic system. It's easier to extend, cleaner and has automatic
6698 namespace protection and documentation.
6707 namespace protection and documentation.
6699
6708
6700 2001-11-09 Fernando Perez <fperez@colorado.edu>
6709 2001-11-09 Fernando Perez <fperez@colorado.edu>
6701
6710
6702 * Fixed bug in output cache flushing (missing parameter to
6711 * Fixed bug in output cache flushing (missing parameter to
6703 __init__). Other small bugs fixed (found using pychecker).
6712 __init__). Other small bugs fixed (found using pychecker).
6704
6713
6705 * Version 0.1.4 opened for bugfixing.
6714 * Version 0.1.4 opened for bugfixing.
6706
6715
6707 2001-11-07 Fernando Perez <fperez@colorado.edu>
6716 2001-11-07 Fernando Perez <fperez@colorado.edu>
6708
6717
6709 * Version 0.1.3 released, mainly because of the raw_input bug.
6718 * Version 0.1.3 released, mainly because of the raw_input bug.
6710
6719
6711 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6720 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6712 and when testing for whether things were callable, a call could
6721 and when testing for whether things were callable, a call could
6713 actually be made to certain functions. They would get called again
6722 actually be made to certain functions. They would get called again
6714 once 'really' executed, with a resulting double call. A disaster
6723 once 'really' executed, with a resulting double call. A disaster
6715 in many cases (list.reverse() would never work!).
6724 in many cases (list.reverse() would never work!).
6716
6725
6717 * Removed prefilter() function, moved its code to raw_input (which
6726 * Removed prefilter() function, moved its code to raw_input (which
6718 after all was just a near-empty caller for prefilter). This saves
6727 after all was just a near-empty caller for prefilter). This saves
6719 a function call on every prompt, and simplifies the class a tiny bit.
6728 a function call on every prompt, and simplifies the class a tiny bit.
6720
6729
6721 * Fix _ip to __ip name in magic example file.
6730 * Fix _ip to __ip name in magic example file.
6722
6731
6723 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6732 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6724 work with non-gnu versions of tar.
6733 work with non-gnu versions of tar.
6725
6734
6726 2001-11-06 Fernando Perez <fperez@colorado.edu>
6735 2001-11-06 Fernando Perez <fperez@colorado.edu>
6727
6736
6728 * Version 0.1.2. Just to keep track of the recent changes.
6737 * Version 0.1.2. Just to keep track of the recent changes.
6729
6738
6730 * Fixed nasty bug in output prompt routine. It used to check 'if
6739 * Fixed nasty bug in output prompt routine. It used to check 'if
6731 arg != None...'. Problem is, this fails if arg implements a
6740 arg != None...'. Problem is, this fails if arg implements a
6732 special comparison (__cmp__) which disallows comparing to
6741 special comparison (__cmp__) which disallows comparing to
6733 None. Found it when trying to use the PhysicalQuantity module from
6742 None. Found it when trying to use the PhysicalQuantity module from
6734 ScientificPython.
6743 ScientificPython.
6735
6744
6736 2001-11-05 Fernando Perez <fperez@colorado.edu>
6745 2001-11-05 Fernando Perez <fperez@colorado.edu>
6737
6746
6738 * Also added dirs. Now the pushd/popd/dirs family functions
6747 * Also added dirs. Now the pushd/popd/dirs family functions
6739 basically like the shell, with the added convenience of going home
6748 basically like the shell, with the added convenience of going home
6740 when called with no args.
6749 when called with no args.
6741
6750
6742 * pushd/popd slightly modified to mimic shell behavior more
6751 * pushd/popd slightly modified to mimic shell behavior more
6743 closely.
6752 closely.
6744
6753
6745 * Added env,pushd,popd from ShellServices as magic functions. I
6754 * Added env,pushd,popd from ShellServices as magic functions. I
6746 think the cleanest will be to port all desired functions from
6755 think the cleanest will be to port all desired functions from
6747 ShellServices as magics and remove ShellServices altogether. This
6756 ShellServices as magics and remove ShellServices altogether. This
6748 will provide a single, clean way of adding functionality
6757 will provide a single, clean way of adding functionality
6749 (shell-type or otherwise) to IP.
6758 (shell-type or otherwise) to IP.
6750
6759
6751 2001-11-04 Fernando Perez <fperez@colorado.edu>
6760 2001-11-04 Fernando Perez <fperez@colorado.edu>
6752
6761
6753 * Added .ipython/ directory to sys.path. This way users can keep
6762 * Added .ipython/ directory to sys.path. This way users can keep
6754 customizations there and access them via import.
6763 customizations there and access them via import.
6755
6764
6756 2001-11-03 Fernando Perez <fperez@colorado.edu>
6765 2001-11-03 Fernando Perez <fperez@colorado.edu>
6757
6766
6758 * Opened version 0.1.1 for new changes.
6767 * Opened version 0.1.1 for new changes.
6759
6768
6760 * Changed version number to 0.1.0: first 'public' release, sent to
6769 * Changed version number to 0.1.0: first 'public' release, sent to
6761 Nathan and Janko.
6770 Nathan and Janko.
6762
6771
6763 * Lots of small fixes and tweaks.
6772 * Lots of small fixes and tweaks.
6764
6773
6765 * Minor changes to whos format. Now strings are shown, snipped if
6774 * Minor changes to whos format. Now strings are shown, snipped if
6766 too long.
6775 too long.
6767
6776
6768 * Changed ShellServices to work on __main__ so they show up in @who
6777 * Changed ShellServices to work on __main__ so they show up in @who
6769
6778
6770 * Help also works with ? at the end of a line:
6779 * Help also works with ? at the end of a line:
6771 ?sin and sin?
6780 ?sin and sin?
6772 both produce the same effect. This is nice, as often I use the
6781 both produce the same effect. This is nice, as often I use the
6773 tab-complete to find the name of a method, but I used to then have
6782 tab-complete to find the name of a method, but I used to then have
6774 to go to the beginning of the line to put a ? if I wanted more
6783 to go to the beginning of the line to put a ? if I wanted more
6775 info. Now I can just add the ? and hit return. Convenient.
6784 info. Now I can just add the ? and hit return. Convenient.
6776
6785
6777 2001-11-02 Fernando Perez <fperez@colorado.edu>
6786 2001-11-02 Fernando Perez <fperez@colorado.edu>
6778
6787
6779 * Python version check (>=2.1) added.
6788 * Python version check (>=2.1) added.
6780
6789
6781 * Added LazyPython documentation. At this point the docs are quite
6790 * Added LazyPython documentation. At this point the docs are quite
6782 a mess. A cleanup is in order.
6791 a mess. A cleanup is in order.
6783
6792
6784 * Auto-installer created. For some bizarre reason, the zipfiles
6793 * Auto-installer created. For some bizarre reason, the zipfiles
6785 module isn't working on my system. So I made a tar version
6794 module isn't working on my system. So I made a tar version
6786 (hopefully the command line options in various systems won't kill
6795 (hopefully the command line options in various systems won't kill
6787 me).
6796 me).
6788
6797
6789 * Fixes to Struct in genutils. Now all dictionary-like methods are
6798 * Fixes to Struct in genutils. Now all dictionary-like methods are
6790 protected (reasonably).
6799 protected (reasonably).
6791
6800
6792 * Added pager function to genutils and changed ? to print usage
6801 * Added pager function to genutils and changed ? to print usage
6793 note through it (it was too long).
6802 note through it (it was too long).
6794
6803
6795 * Added the LazyPython functionality. Works great! I changed the
6804 * Added the LazyPython functionality. Works great! I changed the
6796 auto-quote escape to ';', it's on home row and next to '. But
6805 auto-quote escape to ';', it's on home row and next to '. But
6797 both auto-quote and auto-paren (still /) escapes are command-line
6806 both auto-quote and auto-paren (still /) escapes are command-line
6798 parameters.
6807 parameters.
6799
6808
6800
6809
6801 2001-11-01 Fernando Perez <fperez@colorado.edu>
6810 2001-11-01 Fernando Perez <fperez@colorado.edu>
6802
6811
6803 * Version changed to 0.0.7. Fairly large change: configuration now
6812 * Version changed to 0.0.7. Fairly large change: configuration now
6804 is all stored in a directory, by default .ipython. There, all
6813 is all stored in a directory, by default .ipython. There, all
6805 config files have normal looking names (not .names)
6814 config files have normal looking names (not .names)
6806
6815
6807 * Version 0.0.6 Released first to Lucas and Archie as a test
6816 * Version 0.0.6 Released first to Lucas and Archie as a test
6808 run. Since it's the first 'semi-public' release, change version to
6817 run. Since it's the first 'semi-public' release, change version to
6809 > 0.0.6 for any changes now.
6818 > 0.0.6 for any changes now.
6810
6819
6811 * Stuff I had put in the ipplib.py changelog:
6820 * Stuff I had put in the ipplib.py changelog:
6812
6821
6813 Changes to InteractiveShell:
6822 Changes to InteractiveShell:
6814
6823
6815 - Made the usage message a parameter.
6824 - Made the usage message a parameter.
6816
6825
6817 - Require the name of the shell variable to be given. It's a bit
6826 - Require the name of the shell variable to be given. It's a bit
6818 of a hack, but allows the name 'shell' not to be hardwired in the
6827 of a hack, but allows the name 'shell' not to be hardwired in the
6819 magic (@) handler, which is problematic b/c it requires
6828 magic (@) handler, which is problematic b/c it requires
6820 polluting the global namespace with 'shell'. This in turn is
6829 polluting the global namespace with 'shell'. This in turn is
6821 fragile: if a user redefines a variable called shell, things
6830 fragile: if a user redefines a variable called shell, things
6822 break.
6831 break.
6823
6832
6824 - magic @: all functions available through @ need to be defined
6833 - magic @: all functions available through @ need to be defined
6825 as magic_<name>, even though they can be called simply as
6834 as magic_<name>, even though they can be called simply as
6826 @<name>. This allows the special command @magic to gather
6835 @<name>. This allows the special command @magic to gather
6827 information automatically about all existing magic functions,
6836 information automatically about all existing magic functions,
6828 even if they are run-time user extensions, by parsing the shell
6837 even if they are run-time user extensions, by parsing the shell
6829 instance __dict__ looking for special magic_ names.
6838 instance __dict__ looking for special magic_ names.
6830
6839
6831 - mainloop: added *two* local namespace parameters. This allows
6840 - mainloop: added *two* local namespace parameters. This allows
6832 the class to differentiate between parameters which were there
6841 the class to differentiate between parameters which were there
6833 before and after command line initialization was processed. This
6842 before and after command line initialization was processed. This
6834 way, later @who can show things loaded at startup by the
6843 way, later @who can show things loaded at startup by the
6835 user. This trick was necessary to make session saving/reloading
6844 user. This trick was necessary to make session saving/reloading
6836 really work: ideally after saving/exiting/reloading a session,
6845 really work: ideally after saving/exiting/reloading a session,
6837 *everything* should look the same, including the output of @who. I
6846 *everything* should look the same, including the output of @who. I
6838 was only able to make this work with this double namespace
6847 was only able to make this work with this double namespace
6839 trick.
6848 trick.
6840
6849
6841 - added a header to the logfile which allows (almost) full
6850 - added a header to the logfile which allows (almost) full
6842 session restoring.
6851 session restoring.
6843
6852
6844 - prepend lines beginning with @ or !, with a and log
6853 - prepend lines beginning with @ or !, with a and log
6845 them. Why? !lines: may be useful to know what you did @lines:
6854 them. Why? !lines: may be useful to know what you did @lines:
6846 they may affect session state. So when restoring a session, at
6855 they may affect session state. So when restoring a session, at
6847 least inform the user of their presence. I couldn't quite get
6856 least inform the user of their presence. I couldn't quite get
6848 them to properly re-execute, but at least the user is warned.
6857 them to properly re-execute, but at least the user is warned.
6849
6858
6850 * Started ChangeLog.
6859 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now