##// END OF EJS Templates
for modules which define __all__, complete only on those. After a patch by...
fperez -
Show More
@@ -1,526 +1,534 b''
1 """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-2005 Fernando Perez. <fperez@colorado.edu>
59 # Copyright (C) 2001-2005 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 readline
72 import readline
73 import sys
73 import sys
74 import types
74 import types
75
75
76 from IPython.genutils import shlex_split
76 from IPython.genutils import shlex_split
77
77
78 __all__ = ['Completer','IPCompleter']
78 __all__ = ['Completer','IPCompleter']
79
79
80 def get_class_members(cls):
80 def get_class_members(cls):
81 ret = dir(cls)
81 ret = dir(cls)
82 if hasattr(cls,'__bases__'):
82 if hasattr(cls,'__bases__'):
83 for base in cls.__bases__:
83 for base in cls.__bases__:
84 ret.extend(get_class_members(base))
84 ret.extend(get_class_members(base))
85 return ret
85 return ret
86
86
87 class Completer:
87 class Completer:
88 def __init__(self,namespace=None,global_namespace=None):
88 def __init__(self,namespace=None,global_namespace=None):
89 """Create a new completer for the command line.
89 """Create a new completer for the command line.
90
90
91 Completer([namespace,global_namespace]) -> completer instance.
91 Completer([namespace,global_namespace]) -> completer instance.
92
92
93 If unspecified, the default namespace where completions are performed
93 If unspecified, the default namespace where completions are performed
94 is __main__ (technically, __main__.__dict__). Namespaces should be
94 is __main__ (technically, __main__.__dict__). Namespaces should be
95 given as dictionaries.
95 given as dictionaries.
96
96
97 An optional second namespace can be given. This allows the completer
97 An optional second namespace can be given. This allows the completer
98 to handle cases where both the local and global scopes need to be
98 to handle cases where both the local and global scopes need to be
99 distinguished.
99 distinguished.
100
100
101 Completer instances should be used as the completion mechanism of
101 Completer instances should be used as the completion mechanism of
102 readline via the set_completer() call:
102 readline via the set_completer() call:
103
103
104 readline.set_completer(Completer(my_namespace).complete)
104 readline.set_completer(Completer(my_namespace).complete)
105 """
105 """
106
106
107 # some minimal strict typechecks. For some core data structures, I
107 # some minimal strict typechecks. For some core data structures, I
108 # want actual basic python types, not just anything that looks like
108 # want actual basic python types, not just anything that looks like
109 # one. This is especially true for namespaces.
109 # one. This is especially true for namespaces.
110 for ns in (namespace,global_namespace):
110 for ns in (namespace,global_namespace):
111 if ns is not None and type(ns) != types.DictType:
111 if ns is not None and type(ns) != types.DictType:
112 raise TypeError,'namespace must be a dictionary'
112 raise TypeError,'namespace must be a dictionary'
113
113
114 # Don't bind to namespace quite yet, but flag whether the user wants a
114 # Don't bind to namespace quite yet, but flag whether the user wants a
115 # specific namespace or to use __main__.__dict__. This will allow us
115 # specific namespace or to use __main__.__dict__. This will allow us
116 # to bind to __main__.__dict__ at completion time, not now.
116 # to bind to __main__.__dict__ at completion time, not now.
117 if namespace is None:
117 if namespace is None:
118 self.use_main_ns = 1
118 self.use_main_ns = 1
119 else:
119 else:
120 self.use_main_ns = 0
120 self.use_main_ns = 0
121 self.namespace = namespace
121 self.namespace = namespace
122
122
123 # The global namespace, if given, can be bound directly
123 # The global namespace, if given, can be bound directly
124 if global_namespace is None:
124 if global_namespace is None:
125 self.global_namespace = {}
125 self.global_namespace = {}
126 else:
126 else:
127 self.global_namespace = global_namespace
127 self.global_namespace = global_namespace
128
128
129 def complete(self, text, state):
129 def complete(self, text, state):
130 """Return the next possible completion for 'text'.
130 """Return the next possible completion for 'text'.
131
131
132 This is called successively with state == 0, 1, 2, ... until it
132 This is called successively with state == 0, 1, 2, ... until it
133 returns None. The completion should begin with 'text'.
133 returns None. The completion should begin with 'text'.
134
134
135 """
135 """
136 if self.use_main_ns:
136 if self.use_main_ns:
137 self.namespace = __main__.__dict__
137 self.namespace = __main__.__dict__
138
138
139 if state == 0:
139 if state == 0:
140 if "." in text:
140 if "." in text:
141 self.matches = self.attr_matches(text)
141 self.matches = self.attr_matches(text)
142 else:
142 else:
143 self.matches = self.global_matches(text)
143 self.matches = self.global_matches(text)
144 try:
144 try:
145 return self.matches[state]
145 return self.matches[state]
146 except IndexError:
146 except IndexError:
147 return None
147 return None
148
148
149 def global_matches(self, text):
149 def global_matches(self, text):
150 """Compute matches when text is a simple name.
150 """Compute matches when text is a simple name.
151
151
152 Return a list of all keywords, built-in functions and names currently
152 Return a list of all keywords, built-in functions and names currently
153 defined in self.namespace or self.global_namespace that match.
153 defined in self.namespace or self.global_namespace that match.
154
154
155 """
155 """
156 matches = []
156 matches = []
157 match_append = matches.append
157 match_append = matches.append
158 n = len(text)
158 n = len(text)
159 for lst in [keyword.kwlist,
159 for lst in [keyword.kwlist,
160 __builtin__.__dict__.keys(),
160 __builtin__.__dict__.keys(),
161 self.namespace.keys(),
161 self.namespace.keys(),
162 self.global_namespace.keys()]:
162 self.global_namespace.keys()]:
163 for word in lst:
163 for word in lst:
164 if word[:n] == text and word != "__builtins__":
164 if word[:n] == text and word != "__builtins__":
165 match_append(word)
165 match_append(word)
166 return matches
166 return matches
167
167
168 def attr_matches(self, text):
168 def attr_matches(self, text):
169 """Compute matches when text contains a dot.
169 """Compute matches when text contains a dot.
170
170
171 Assuming the text is of the form NAME.NAME....[NAME], and is
171 Assuming the text is of the form NAME.NAME....[NAME], and is
172 evaluatable in self.namespace or self.global_namespace, it will be
172 evaluatable in self.namespace or self.global_namespace, it will be
173 evaluated and its attributes (as revealed by dir()) are used as
173 evaluated and its attributes (as revealed by dir()) are used as
174 possible completions. (For class instances, class members are are
174 possible completions. (For class instances, class members are are
175 also considered.)
175 also considered.)
176
176
177 WARNING: this can still invoke arbitrary C code, if an object
177 WARNING: this can still invoke arbitrary C code, if an object
178 with a __getattr__ hook is evaluated.
178 with a __getattr__ hook is evaluated.
179
179
180 """
180 """
181 import re
181 import re
182
182
183 # Another option, seems to work great. Catches things like ''.<tab>
183 # Another option, seems to work great. Catches things like ''.<tab>
184 m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)
184 m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)
185
185
186 if not m:
186 if not m:
187 return []
187 return []
188
188 expr, attr = m.group(1, 3)
189 expr, attr = m.group(1, 3)
189 try:
190 try:
190 object = eval(expr, self.namespace)
191 object = eval(expr, self.namespace)
191 except:
192 except:
192 object = eval(expr, self.global_namespace)
193 object = eval(expr, self.global_namespace)
193 words = [w for w in dir(object) if isinstance(w, basestring)]
194
194 if hasattr(object,'__class__'):
195 # for modules which define __all__, complete only on those.
195 words.append('__class__')
196 if type(object) == types.ModuleType and hasattr(object, '__all__'):
196 words.extend(get_class_members(object.__class__))
197 words = getattr(object, '__all__')
198 else:
199 words = dir(object)
200 if hasattr(object,'__class__'):
201 words.append('__class__')
202 words.extend(get_class_members(object.__class__))
203
204 # filter out non-string attributes which may be stuffed by dir() calls
205 # and poor coding in third-party modules
206 words = [w for w in words
207 if isinstance(w, basestring) and w != "__builtins__"]
208 # Build match list to return
197 n = len(attr)
209 n = len(attr)
198 matches = []
210 return ["%s.%s" % (expr, w) for w in words if w[:n] == attr ]
199 for word in words:
200 if word[:n] == attr and word != "__builtins__":
201 matches.append("%s.%s" % (expr, word))
202 return matches
203
211
204 class IPCompleter(Completer):
212 class IPCompleter(Completer):
205 """Extension of the completer class with IPython-specific features"""
213 """Extension of the completer class with IPython-specific features"""
206
214
207 def __init__(self,shell,namespace=None,global_namespace=None,
215 def __init__(self,shell,namespace=None,global_namespace=None,
208 omit__names=0,alias_table=None):
216 omit__names=0,alias_table=None):
209 """IPCompleter() -> completer
217 """IPCompleter() -> completer
210
218
211 Return a completer object suitable for use by the readline library
219 Return a completer object suitable for use by the readline library
212 via readline.set_completer().
220 via readline.set_completer().
213
221
214 Inputs:
222 Inputs:
215
223
216 - shell: a pointer to the ipython shell itself. This is needed
224 - shell: a pointer to the ipython shell itself. This is needed
217 because this completer knows about magic functions, and those can
225 because this completer knows about magic functions, and those can
218 only be accessed via the ipython instance.
226 only be accessed via the ipython instance.
219
227
220 - namespace: an optional dict where completions are performed.
228 - namespace: an optional dict where completions are performed.
221
229
222 - global_namespace: secondary optional dict for completions, to
230 - global_namespace: secondary optional dict for completions, to
223 handle cases (such as IPython embedded inside functions) where
231 handle cases (such as IPython embedded inside functions) where
224 both Python scopes are visible.
232 both Python scopes are visible.
225
233
226 - The optional omit__names parameter sets the completer to omit the
234 - The optional omit__names parameter sets the completer to omit the
227 'magic' names (__magicname__) for python objects unless the text
235 'magic' names (__magicname__) for python objects unless the text
228 to be completed explicitly starts with one or more underscores.
236 to be completed explicitly starts with one or more underscores.
229
237
230 - If alias_table is supplied, it should be a dictionary of aliases
238 - If alias_table is supplied, it should be a dictionary of aliases
231 to complete. """
239 to complete. """
232
240
233 Completer.__init__(self,namespace,global_namespace)
241 Completer.__init__(self,namespace,global_namespace)
234 self.magic_prefix = shell.name+'.magic_'
242 self.magic_prefix = shell.name+'.magic_'
235 self.magic_escape = shell.ESC_MAGIC
243 self.magic_escape = shell.ESC_MAGIC
236 self.readline = readline
244 self.readline = readline
237 delims = self.readline.get_completer_delims()
245 delims = self.readline.get_completer_delims()
238 delims = delims.replace(self.magic_escape,'')
246 delims = delims.replace(self.magic_escape,'')
239 self.readline.set_completer_delims(delims)
247 self.readline.set_completer_delims(delims)
240 self.get_line_buffer = self.readline.get_line_buffer
248 self.get_line_buffer = self.readline.get_line_buffer
241 self.omit__names = omit__names
249 self.omit__names = omit__names
242 self.merge_completions = shell.rc.readline_merge_completions
250 self.merge_completions = shell.rc.readline_merge_completions
243
251
244 if alias_table is None:
252 if alias_table is None:
245 alias_table = {}
253 alias_table = {}
246 self.alias_table = alias_table
254 self.alias_table = alias_table
247 # Regexp to split filenames with spaces in them
255 # Regexp to split filenames with spaces in them
248 self.space_name_re = re.compile(r'([^\\] )')
256 self.space_name_re = re.compile(r'([^\\] )')
249 # Hold a local ref. to glob.glob for speed
257 # Hold a local ref. to glob.glob for speed
250 self.glob = glob.glob
258 self.glob = glob.glob
251 # Special handling of backslashes needed in win32 platforms
259 # Special handling of backslashes needed in win32 platforms
252 if sys.platform == "win32":
260 if sys.platform == "win32":
253 self.clean_glob = self._clean_glob_win32
261 self.clean_glob = self._clean_glob_win32
254 else:
262 else:
255 self.clean_glob = self._clean_glob
263 self.clean_glob = self._clean_glob
256 self.matchers = [self.python_matches,
264 self.matchers = [self.python_matches,
257 self.file_matches,
265 self.file_matches,
258 self.alias_matches,
266 self.alias_matches,
259 self.python_func_kw_matches]
267 self.python_func_kw_matches]
260
268
261 # Code contributed by Alex Schmolck, for ipython/emacs integration
269 # Code contributed by Alex Schmolck, for ipython/emacs integration
262 def all_completions(self, text):
270 def all_completions(self, text):
263 """Return all possible completions for the benefit of emacs."""
271 """Return all possible completions for the benefit of emacs."""
264
272
265 completions = []
273 completions = []
266 comp_append = completions.append
274 comp_append = completions.append
267 try:
275 try:
268 for i in xrange(sys.maxint):
276 for i in xrange(sys.maxint):
269 res = self.complete(text, i)
277 res = self.complete(text, i)
270
278
271 if not res: break
279 if not res: break
272
280
273 comp_append(res)
281 comp_append(res)
274 #XXX workaround for ``notDefined.<tab>``
282 #XXX workaround for ``notDefined.<tab>``
275 except NameError:
283 except NameError:
276 pass
284 pass
277 return completions
285 return completions
278 # /end Alex Schmolck code.
286 # /end Alex Schmolck code.
279
287
280 def _clean_glob(self,text):
288 def _clean_glob(self,text):
281 return self.glob("%s*" % text)
289 return self.glob("%s*" % text)
282
290
283 def _clean_glob_win32(self,text):
291 def _clean_glob_win32(self,text):
284 return [f.replace("\\","/")
292 return [f.replace("\\","/")
285 for f in self.glob("%s*" % text)]
293 for f in self.glob("%s*" % text)]
286
294
287 def file_matches(self, text):
295 def file_matches(self, text):
288 """Match filneames, expanding ~USER type strings.
296 """Match filneames, expanding ~USER type strings.
289
297
290 Most of the seemingly convoluted logic in this completer is an
298 Most of the seemingly convoluted logic in this completer is an
291 attempt to handle filenames with spaces in them. And yet it's not
299 attempt to handle filenames with spaces in them. And yet it's not
292 quite perfect, because Python's readline doesn't expose all of the
300 quite perfect, because Python's readline doesn't expose all of the
293 GNU readline details needed for this to be done correctly.
301 GNU readline details needed for this to be done correctly.
294
302
295 For a filename with a space in it, the printed completions will be
303 For a filename with a space in it, the printed completions will be
296 only the parts after what's already been typed (instead of the
304 only the parts after what's already been typed (instead of the
297 full completions, as is normally done). I don't think with the
305 full completions, as is normally done). I don't think with the
298 current (as of Python 2.3) Python readline it's possible to do
306 current (as of Python 2.3) Python readline it's possible to do
299 better."""
307 better."""
300
308
301 #print 'Completer->file_matches: <%s>' % text # dbg
309 #print 'Completer->file_matches: <%s>' % text # dbg
302
310
303 # chars that require escaping with backslash - i.e. chars
311 # chars that require escaping with backslash - i.e. chars
304 # that readline treats incorrectly as delimiters, but we
312 # that readline treats incorrectly as delimiters, but we
305 # don't want to treat as delimiters in filename matching
313 # don't want to treat as delimiters in filename matching
306 # when escaped with backslash
314 # when escaped with backslash
307
315
308 protectables = ' ()[]{}'
316 protectables = ' ()[]{}'
309
317
310 def protect_filename(s):
318 def protect_filename(s):
311 return "".join([(ch in protectables and '\\' + ch or ch)
319 return "".join([(ch in protectables and '\\' + ch or ch)
312 for ch in s])
320 for ch in s])
313
321
314 lbuf = self.get_line_buffer()[:self.readline.get_endidx()]
322 lbuf = self.get_line_buffer()[:self.readline.get_endidx()]
315 open_quotes = 0 # track strings with open quotes
323 open_quotes = 0 # track strings with open quotes
316 try:
324 try:
317 lsplit = shlex_split(lbuf)[-1]
325 lsplit = shlex_split(lbuf)[-1]
318 except ValueError:
326 except ValueError:
319 # typically an unmatched ", or backslash without escaped char.
327 # typically an unmatched ", or backslash without escaped char.
320 if lbuf.count('"')==1:
328 if lbuf.count('"')==1:
321 open_quotes = 1
329 open_quotes = 1
322 lsplit = lbuf.split('"')[-1]
330 lsplit = lbuf.split('"')[-1]
323 elif lbuf.count("'")==1:
331 elif lbuf.count("'")==1:
324 open_quotes = 1
332 open_quotes = 1
325 lsplit = lbuf.split("'")[-1]
333 lsplit = lbuf.split("'")[-1]
326 else:
334 else:
327 return None
335 return None
328 except IndexError:
336 except IndexError:
329 # tab pressed on empty line
337 # tab pressed on empty line
330 lsplit = ""
338 lsplit = ""
331
339
332 if lsplit != protect_filename(lsplit):
340 if lsplit != protect_filename(lsplit):
333 # if protectables are found, do matching on the whole escaped
341 # if protectables are found, do matching on the whole escaped
334 # name
342 # name
335 has_protectables = 1
343 has_protectables = 1
336 text0,text = text,lsplit
344 text0,text = text,lsplit
337 else:
345 else:
338 has_protectables = 0
346 has_protectables = 0
339 text = os.path.expanduser(text)
347 text = os.path.expanduser(text)
340
348
341 if text == "":
349 if text == "":
342 return [protect_filename(f) for f in self.glob("*")]
350 return [protect_filename(f) for f in self.glob("*")]
343
351
344 m0 = self.clean_glob(text.replace('\\',''))
352 m0 = self.clean_glob(text.replace('\\',''))
345 if has_protectables:
353 if has_protectables:
346 # If we had protectables, we need to revert our changes to the
354 # If we had protectables, we need to revert our changes to the
347 # beginning of filename so that we don't double-write the part
355 # beginning of filename so that we don't double-write the part
348 # of the filename we have so far
356 # of the filename we have so far
349 len_lsplit = len(lsplit)
357 len_lsplit = len(lsplit)
350 matches = [text0 + protect_filename(f[len_lsplit:]) for f in m0]
358 matches = [text0 + protect_filename(f[len_lsplit:]) for f in m0]
351 else:
359 else:
352 if open_quotes:
360 if open_quotes:
353 # if we have a string with an open quote, we don't need to
361 # if we have a string with an open quote, we don't need to
354 # protect the names at all (and we _shouldn't_, as it
362 # protect the names at all (and we _shouldn't_, as it
355 # would cause bugs when the filesystem call is made).
363 # would cause bugs when the filesystem call is made).
356 matches = m0
364 matches = m0
357 else:
365 else:
358 matches = [protect_filename(f) for f in m0]
366 matches = [protect_filename(f) for f in m0]
359 if len(matches) == 1 and os.path.isdir(matches[0]):
367 if len(matches) == 1 and os.path.isdir(matches[0]):
360 # Takes care of links to directories also. Use '/'
368 # Takes care of links to directories also. Use '/'
361 # explicitly, even under Windows, so that name completions
369 # explicitly, even under Windows, so that name completions
362 # don't end up escaped.
370 # don't end up escaped.
363 matches[0] += '/'
371 matches[0] += '/'
364 return matches
372 return matches
365
373
366 def alias_matches(self, text):
374 def alias_matches(self, text):
367 """Match internal system aliases"""
375 """Match internal system aliases"""
368 #print 'Completer->alias_matches:',text # dbg
376 #print 'Completer->alias_matches:',text # dbg
369 text = os.path.expanduser(text)
377 text = os.path.expanduser(text)
370 aliases = self.alias_table.keys()
378 aliases = self.alias_table.keys()
371 if text == "":
379 if text == "":
372 return aliases
380 return aliases
373 else:
381 else:
374 return [alias for alias in aliases if alias.startswith(text)]
382 return [alias for alias in aliases if alias.startswith(text)]
375
383
376 def python_matches(self,text):
384 def python_matches(self,text):
377 """Match attributes or global python names"""
385 """Match attributes or global python names"""
378 #print 'Completer->python_matches' # dbg
386 #print 'Completer->python_matches' # dbg
379 if "." in text:
387 if "." in text:
380 try:
388 try:
381 matches = self.attr_matches(text)
389 matches = self.attr_matches(text)
382 if text.endswith('.') and self.omit__names:
390 if text.endswith('.') and self.omit__names:
383 if self.omit__names == 1:
391 if self.omit__names == 1:
384 # true if txt is _not_ a __ name, false otherwise:
392 # true if txt is _not_ a __ name, false otherwise:
385 no__name = (lambda txt:
393 no__name = (lambda txt:
386 re.match(r'.*\.__.*?__',txt) is None)
394 re.match(r'.*\.__.*?__',txt) is None)
387 else:
395 else:
388 # true if txt is _not_ a _ name, false otherwise:
396 # true if txt is _not_ a _ name, false otherwise:
389 no__name = (lambda txt:
397 no__name = (lambda txt:
390 re.match(r'.*\._.*?',txt) is None)
398 re.match(r'.*\._.*?',txt) is None)
391 matches = filter(no__name, matches)
399 matches = filter(no__name, matches)
392 except NameError:
400 except NameError:
393 # catches <undefined attributes>.<tab>
401 # catches <undefined attributes>.<tab>
394 matches = []
402 matches = []
395 else:
403 else:
396 matches = self.global_matches(text)
404 matches = self.global_matches(text)
397 # this is so completion finds magics when automagic is on:
405 # this is so completion finds magics when automagic is on:
398 if matches == [] and not text.startswith(os.sep):
406 if matches == [] and not text.startswith(os.sep):
399 matches = self.attr_matches(self.magic_prefix+text)
407 matches = self.attr_matches(self.magic_prefix+text)
400 return matches
408 return matches
401
409
402 def _default_arguments(self, obj):
410 def _default_arguments(self, obj):
403 """Return the list of default arguments of obj if it is callable,
411 """Return the list of default arguments of obj if it is callable,
404 or empty list otherwise."""
412 or empty list otherwise."""
405
413
406 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
414 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
407 # for classes, check for __init__,__new__
415 # for classes, check for __init__,__new__
408 if inspect.isclass(obj):
416 if inspect.isclass(obj):
409 obj = (getattr(obj,'__init__',None) or
417 obj = (getattr(obj,'__init__',None) or
410 getattr(obj,'__new__',None))
418 getattr(obj,'__new__',None))
411 # for all others, check if they are __call__able
419 # for all others, check if they are __call__able
412 elif hasattr(obj, '__call__'):
420 elif hasattr(obj, '__call__'):
413 obj = obj.__call__
421 obj = obj.__call__
414 # XXX: is there a way to handle the builtins ?
422 # XXX: is there a way to handle the builtins ?
415 try:
423 try:
416 args,_,_1,defaults = inspect.getargspec(obj)
424 args,_,_1,defaults = inspect.getargspec(obj)
417 if defaults:
425 if defaults:
418 return args[-len(defaults):]
426 return args[-len(defaults):]
419 except TypeError: pass
427 except TypeError: pass
420 return []
428 return []
421
429
422 def python_func_kw_matches(self,text):
430 def python_func_kw_matches(self,text):
423 """Match named parameters (kwargs) of the last open function"""
431 """Match named parameters (kwargs) of the last open function"""
424
432
425 if "." in text: # a parameter cannot be dotted
433 if "." in text: # a parameter cannot be dotted
426 return []
434 return []
427 try: regexp = self.__funcParamsRegex
435 try: regexp = self.__funcParamsRegex
428 except AttributeError:
436 except AttributeError:
429 regexp = self.__funcParamsRegex = re.compile(r'''
437 regexp = self.__funcParamsRegex = re.compile(r'''
430 '.*?' | # single quoted strings or
438 '.*?' | # single quoted strings or
431 ".*?" | # double quoted strings or
439 ".*?" | # double quoted strings or
432 \w+ | # identifier
440 \w+ | # identifier
433 \S # other characters
441 \S # other characters
434 ''', re.VERBOSE | re.DOTALL)
442 ''', re.VERBOSE | re.DOTALL)
435 # 1. find the nearest identifier that comes before an unclosed
443 # 1. find the nearest identifier that comes before an unclosed
436 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
444 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
437 tokens = regexp.findall(self.get_line_buffer())
445 tokens = regexp.findall(self.get_line_buffer())
438 tokens.reverse()
446 tokens.reverse()
439 iterTokens = iter(tokens); openPar = 0
447 iterTokens = iter(tokens); openPar = 0
440 for token in iterTokens:
448 for token in iterTokens:
441 if token == ')':
449 if token == ')':
442 openPar -= 1
450 openPar -= 1
443 elif token == '(':
451 elif token == '(':
444 openPar += 1
452 openPar += 1
445 if openPar > 0:
453 if openPar > 0:
446 # found the last unclosed parenthesis
454 # found the last unclosed parenthesis
447 break
455 break
448 else:
456 else:
449 return []
457 return []
450 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
458 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
451 ids = []
459 ids = []
452 isId = re.compile(r'\w+$').match
460 isId = re.compile(r'\w+$').match
453 while True:
461 while True:
454 try:
462 try:
455 ids.append(iterTokens.next())
463 ids.append(iterTokens.next())
456 if not isId(ids[-1]):
464 if not isId(ids[-1]):
457 ids.pop(); break
465 ids.pop(); break
458 if not iterTokens.next() == '.':
466 if not iterTokens.next() == '.':
459 break
467 break
460 except StopIteration:
468 except StopIteration:
461 break
469 break
462 # lookup the candidate callable matches either using global_matches
470 # lookup the candidate callable matches either using global_matches
463 # or attr_matches for dotted names
471 # or attr_matches for dotted names
464 if len(ids) == 1:
472 if len(ids) == 1:
465 callableMatches = self.global_matches(ids[0])
473 callableMatches = self.global_matches(ids[0])
466 else:
474 else:
467 callableMatches = self.attr_matches('.'.join(ids[::-1]))
475 callableMatches = self.attr_matches('.'.join(ids[::-1]))
468 argMatches = []
476 argMatches = []
469 for callableMatch in callableMatches:
477 for callableMatch in callableMatches:
470 try: namedArgs = self._default_arguments(eval(callableMatch,
478 try: namedArgs = self._default_arguments(eval(callableMatch,
471 self.namespace))
479 self.namespace))
472 except: continue
480 except: continue
473 for namedArg in namedArgs:
481 for namedArg in namedArgs:
474 if namedArg.startswith(text):
482 if namedArg.startswith(text):
475 argMatches.append("%s=" %namedArg)
483 argMatches.append("%s=" %namedArg)
476 return argMatches
484 return argMatches
477
485
478 def complete(self, text, state):
486 def complete(self, text, state):
479 """Return the next possible completion for 'text'.
487 """Return the next possible completion for 'text'.
480
488
481 This is called successively with state == 0, 1, 2, ... until it
489 This is called successively with state == 0, 1, 2, ... until it
482 returns None. The completion should begin with 'text'. """
490 returns None. The completion should begin with 'text'. """
483
491
484 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
492 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
485
493
486 # if there is only a tab on a line with only whitespace, instead
494 # if there is only a tab on a line with only whitespace, instead
487 # of the mostly useless 'do you want to see all million
495 # of the mostly useless 'do you want to see all million
488 # completions' message, just do the right thing and give the user
496 # completions' message, just do the right thing and give the user
489 # his tab! Incidentally, this enables pasting of tabbed text from
497 # his tab! Incidentally, this enables pasting of tabbed text from
490 # an editor (as long as autoindent is off).
498 # an editor (as long as autoindent is off).
491 if not self.get_line_buffer().strip():
499 if not self.get_line_buffer().strip():
492 self.readline.insert_text('\t')
500 self.readline.insert_text('\t')
493 return None
501 return None
494
502
495 magic_escape = self.magic_escape
503 magic_escape = self.magic_escape
496 magic_prefix = self.magic_prefix
504 magic_prefix = self.magic_prefix
497
505
498 try:
506 try:
499 if text.startswith(magic_escape):
507 if text.startswith(magic_escape):
500 text = text.replace(magic_escape,magic_prefix)
508 text = text.replace(magic_escape,magic_prefix)
501 elif text.startswith('~'):
509 elif text.startswith('~'):
502 text = os.path.expanduser(text)
510 text = os.path.expanduser(text)
503 if state == 0:
511 if state == 0:
504 # Extend the list of completions with the results of each
512 # Extend the list of completions with the results of each
505 # matcher, so we return results to the user from all
513 # matcher, so we return results to the user from all
506 # namespaces.
514 # namespaces.
507 if self.merge_completions:
515 if self.merge_completions:
508 self.matches = []
516 self.matches = []
509 for matcher in self.matchers:
517 for matcher in self.matchers:
510 self.matches.extend(matcher(text))
518 self.matches.extend(matcher(text))
511 else:
519 else:
512 for matcher in self.matchers:
520 for matcher in self.matchers:
513 self.matches = matcher(text)
521 self.matches = matcher(text)
514 if self.matches:
522 if self.matches:
515 break
523 break
516
524
517 try:
525 try:
518 return self.matches[state].replace(magic_prefix,magic_escape)
526 return self.matches[state].replace(magic_prefix,magic_escape)
519 except IndexError:
527 except IndexError:
520 return None
528 return None
521 except:
529 except:
522 #from IPython.ultraTB import AutoFormattedTB; # dbg
530 #from IPython.ultraTB import AutoFormattedTB; # dbg
523 #tb=AutoFormattedTB('Verbose');tb() #dbg
531 #tb=AutoFormattedTB('Verbose');tb() #dbg
524
532
525 # If completion fails, don't annoy the user.
533 # If completion fails, don't annoy the user.
526 return None
534 return None
@@ -1,4708 +1,4713 b''
1 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2
2
3 * IPython/completer.py (Completer.attr_matches): for modules which
4 define __all__, complete only on those. After a patch by Jeffrey
5 Collins <jcollins-AT-boulder.net>. Also, clean up and speed up
6 this routine.
7
3 * IPython/Logger.py (Logger.log): fix a history handling bug. I
8 * IPython/Logger.py (Logger.log): fix a history handling bug. I
4 don't know if this is the end of it, but the behavior now is
9 don't know if this is the end of it, but the behavior now is
5 certainly much more correct. Note that coupled with macros,
10 certainly much more correct. Note that coupled with macros,
6 slightly surprising (at first) behavior may occur: a macro will in
11 slightly surprising (at first) behavior may occur: a macro will in
7 general expand to multiple lines of input, so upon exiting, the
12 general expand to multiple lines of input, so upon exiting, the
8 in/out counters will both be bumped by the corresponding amount
13 in/out counters will both be bumped by the corresponding amount
9 (as if the macro's contents had been typed interactively). Typing
14 (as if the macro's contents had been typed interactively). Typing
10 %hist will reveal the intermediate (silently processed) lines.
15 %hist will reveal the intermediate (silently processed) lines.
11
16
12 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
17 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
13 pickle to fail (%run was overwriting __main__ and not restoring
18 pickle to fail (%run was overwriting __main__ and not restoring
14 it, but pickle relies on __main__ to operate).
19 it, but pickle relies on __main__ to operate).
15
20
16 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
21 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
17 using properties, but forgot to make the main InteractiveShell
22 using properties, but forgot to make the main InteractiveShell
18 class a new-style class. Properties fail silently, and
23 class a new-style class. Properties fail silently, and
19 misteriously, with old-style class (getters work, but
24 misteriously, with old-style class (getters work, but
20 setters don't do anything).
25 setters don't do anything).
21
26
22 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
27 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
23
28
24 * IPython/Magic.py (magic_history): fix history reporting bug (I
29 * IPython/Magic.py (magic_history): fix history reporting bug (I
25 know some nasties are still there, I just can't seem to find a
30 know some nasties are still there, I just can't seem to find a
26 reproducible test case to track them down; the input history is
31 reproducible test case to track them down; the input history is
27 falling out of sync...)
32 falling out of sync...)
28
33
29 * IPython/iplib.py (handle_shell_escape): fix bug where both
34 * IPython/iplib.py (handle_shell_escape): fix bug where both
30 aliases and system accesses where broken for indented code (such
35 aliases and system accesses where broken for indented code (such
31 as loops).
36 as loops).
32
37
33 * IPython/genutils.py (shell): fix small but critical bug for
38 * IPython/genutils.py (shell): fix small but critical bug for
34 win32 system access.
39 win32 system access.
35
40
36 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
41 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
37
42
38 * IPython/iplib.py (showtraceback): remove use of the
43 * IPython/iplib.py (showtraceback): remove use of the
39 sys.last_{type/value/traceback} structures, which are non
44 sys.last_{type/value/traceback} structures, which are non
40 thread-safe.
45 thread-safe.
41 (_prefilter): change control flow to ensure that we NEVER
46 (_prefilter): change control flow to ensure that we NEVER
42 introspect objects when autocall is off. This will guarantee that
47 introspect objects when autocall is off. This will guarantee that
43 having an input line of the form 'x.y', where access to attribute
48 having an input line of the form 'x.y', where access to attribute
44 'y' has side effects, doesn't trigger the side effect TWICE. It
49 'y' has side effects, doesn't trigger the side effect TWICE. It
45 is important to note that, with autocall on, these side effects
50 is important to note that, with autocall on, these side effects
46 can still happen.
51 can still happen.
47 (ipsystem): new builtin, to complete the ip{magic/alias/system}
52 (ipsystem): new builtin, to complete the ip{magic/alias/system}
48 trio. IPython offers these three kinds of special calls which are
53 trio. IPython offers these three kinds of special calls which are
49 not python code, and it's a good thing to have their call method
54 not python code, and it's a good thing to have their call method
50 be accessible as pure python functions (not just special syntax at
55 be accessible as pure python functions (not just special syntax at
51 the command line). It gives us a better internal implementation
56 the command line). It gives us a better internal implementation
52 structure, as well as exposing these for user scripting more
57 structure, as well as exposing these for user scripting more
53 cleanly.
58 cleanly.
54
59
55 * IPython/macro.py (Macro.__init__): moved macros to a standalone
60 * IPython/macro.py (Macro.__init__): moved macros to a standalone
56 file. Now that they'll be more likely to be used with the
61 file. Now that they'll be more likely to be used with the
57 persistance system (%store), I want to make sure their module path
62 persistance system (%store), I want to make sure their module path
58 doesn't change in the future, so that we don't break things for
63 doesn't change in the future, so that we don't break things for
59 users' persisted data.
64 users' persisted data.
60
65
61 * IPython/iplib.py (autoindent_update): move indentation
66 * IPython/iplib.py (autoindent_update): move indentation
62 management into the _text_ processing loop, not the keyboard
67 management into the _text_ processing loop, not the keyboard
63 interactive one. This is necessary to correctly process non-typed
68 interactive one. This is necessary to correctly process non-typed
64 multiline input (such as macros).
69 multiline input (such as macros).
65
70
66 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
71 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
67 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
72 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
68 which was producing problems in the resulting manual.
73 which was producing problems in the resulting manual.
69 (magic_whos): improve reporting of instances (show their class,
74 (magic_whos): improve reporting of instances (show their class,
70 instead of simply printing 'instance' which isn't terribly
75 instead of simply printing 'instance' which isn't terribly
71 informative).
76 informative).
72
77
73 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
78 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
74 (minor mods) to support network shares under win32.
79 (minor mods) to support network shares under win32.
75
80
76 * IPython/winconsole.py (get_console_size): add new winconsole
81 * IPython/winconsole.py (get_console_size): add new winconsole
77 module and fixes to page_dumb() to improve its behavior under
82 module and fixes to page_dumb() to improve its behavior under
78 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
83 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
79
84
80 * IPython/Magic.py (Macro): simplified Macro class to just
85 * IPython/Magic.py (Macro): simplified Macro class to just
81 subclass list. We've had only 2.2 compatibility for a very long
86 subclass list. We've had only 2.2 compatibility for a very long
82 time, yet I was still avoiding subclassing the builtin types. No
87 time, yet I was still avoiding subclassing the builtin types. No
83 more (I'm also starting to use properties, though I won't shift to
88 more (I'm also starting to use properties, though I won't shift to
84 2.3-specific features quite yet).
89 2.3-specific features quite yet).
85 (magic_store): added Ville's patch for lightweight variable
90 (magic_store): added Ville's patch for lightweight variable
86 persistence, after a request on the user list by Matt Wilkie
91 persistence, after a request on the user list by Matt Wilkie
87 <maphew-AT-gmail.com>. The new %store magic's docstring has full
92 <maphew-AT-gmail.com>. The new %store magic's docstring has full
88 details.
93 details.
89
94
90 * IPython/iplib.py (InteractiveShell.post_config_initialization):
95 * IPython/iplib.py (InteractiveShell.post_config_initialization):
91 changed the default logfile name from 'ipython.log' to
96 changed the default logfile name from 'ipython.log' to
92 'ipython_log.py'. These logs are real python files, and now that
97 'ipython_log.py'. These logs are real python files, and now that
93 we have much better multiline support, people are more likely to
98 we have much better multiline support, people are more likely to
94 want to use them as such. Might as well name them correctly.
99 want to use them as such. Might as well name them correctly.
95
100
96 * IPython/Magic.py: substantial cleanup. While we can't stop
101 * IPython/Magic.py: substantial cleanup. While we can't stop
97 using magics as mixins, due to the existing customizations 'out
102 using magics as mixins, due to the existing customizations 'out
98 there' which rely on the mixin naming conventions, at least I
103 there' which rely on the mixin naming conventions, at least I
99 cleaned out all cross-class name usage. So once we are OK with
104 cleaned out all cross-class name usage. So once we are OK with
100 breaking compatibility, the two systems can be separated.
105 breaking compatibility, the two systems can be separated.
101
106
102 * IPython/Logger.py: major cleanup. This one is NOT a mixin
107 * IPython/Logger.py: major cleanup. This one is NOT a mixin
103 anymore, and the class is a fair bit less hideous as well. New
108 anymore, and the class is a fair bit less hideous as well. New
104 features were also introduced: timestamping of input, and logging
109 features were also introduced: timestamping of input, and logging
105 of output results. These are user-visible with the -t and -o
110 of output results. These are user-visible with the -t and -o
106 options to %logstart. Closes
111 options to %logstart. Closes
107 http://www.scipy.net/roundup/ipython/issue11 and a request by
112 http://www.scipy.net/roundup/ipython/issue11 and a request by
108 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
113 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
109
114
110 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
115 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
111
116
112 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
117 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
113 better hadnle backslashes in paths. See the thread 'More Windows
118 better hadnle backslashes in paths. See the thread 'More Windows
114 questions part 2 - \/ characters revisited' on the iypthon user
119 questions part 2 - \/ characters revisited' on the iypthon user
115 list:
120 list:
116 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
121 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
117
122
118 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
123 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
119
124
120 (InteractiveShell.__init__): change threaded shells to not use the
125 (InteractiveShell.__init__): change threaded shells to not use the
121 ipython crash handler. This was causing more problems than not,
126 ipython crash handler. This was causing more problems than not,
122 as exceptions in the main thread (GUI code, typically) would
127 as exceptions in the main thread (GUI code, typically) would
123 always show up as a 'crash', when they really weren't.
128 always show up as a 'crash', when they really weren't.
124
129
125 The colors and exception mode commands (%colors/%xmode) have been
130 The colors and exception mode commands (%colors/%xmode) have been
126 synchronized to also take this into account, so users can get
131 synchronized to also take this into account, so users can get
127 verbose exceptions for their threaded code as well. I also added
132 verbose exceptions for their threaded code as well. I also added
128 support for activating pdb inside this exception handler as well,
133 support for activating pdb inside this exception handler as well,
129 so now GUI authors can use IPython's enhanced pdb at runtime.
134 so now GUI authors can use IPython's enhanced pdb at runtime.
130
135
131 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
136 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
132 true by default, and add it to the shipped ipythonrc file. Since
137 true by default, and add it to the shipped ipythonrc file. Since
133 this asks the user before proceeding, I think it's OK to make it
138 this asks the user before proceeding, I think it's OK to make it
134 true by default.
139 true by default.
135
140
136 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
141 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
137 of the previous special-casing of input in the eval loop. I think
142 of the previous special-casing of input in the eval loop. I think
138 this is cleaner, as they really are commands and shouldn't have
143 this is cleaner, as they really are commands and shouldn't have
139 a special role in the middle of the core code.
144 a special role in the middle of the core code.
140
145
141 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
146 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
142
147
143 * IPython/iplib.py (edit_syntax_error): added support for
148 * IPython/iplib.py (edit_syntax_error): added support for
144 automatically reopening the editor if the file had a syntax error
149 automatically reopening the editor if the file had a syntax error
145 in it. Thanks to scottt who provided the patch at:
150 in it. Thanks to scottt who provided the patch at:
146 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
151 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
147 version committed).
152 version committed).
148
153
149 * IPython/iplib.py (handle_normal): add suport for multi-line
154 * IPython/iplib.py (handle_normal): add suport for multi-line
150 input with emtpy lines. This fixes
155 input with emtpy lines. This fixes
151 http://www.scipy.net/roundup/ipython/issue43 and a similar
156 http://www.scipy.net/roundup/ipython/issue43 and a similar
152 discussion on the user list.
157 discussion on the user list.
153
158
154 WARNING: a behavior change is necessarily introduced to support
159 WARNING: a behavior change is necessarily introduced to support
155 blank lines: now a single blank line with whitespace does NOT
160 blank lines: now a single blank line with whitespace does NOT
156 break the input loop, which means that when autoindent is on, by
161 break the input loop, which means that when autoindent is on, by
157 default hitting return on the next (indented) line does NOT exit.
162 default hitting return on the next (indented) line does NOT exit.
158
163
159 Instead, to exit a multiline input you can either have:
164 Instead, to exit a multiline input you can either have:
160
165
161 - TWO whitespace lines (just hit return again), or
166 - TWO whitespace lines (just hit return again), or
162 - a single whitespace line of a different length than provided
167 - a single whitespace line of a different length than provided
163 by the autoindent (add or remove a space).
168 by the autoindent (add or remove a space).
164
169
165 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
170 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
166 module to better organize all readline-related functionality.
171 module to better organize all readline-related functionality.
167 I've deleted FlexCompleter and put all completion clases here.
172 I've deleted FlexCompleter and put all completion clases here.
168
173
169 * IPython/iplib.py (raw_input): improve indentation management.
174 * IPython/iplib.py (raw_input): improve indentation management.
170 It is now possible to paste indented code with autoindent on, and
175 It is now possible to paste indented code with autoindent on, and
171 the code is interpreted correctly (though it still looks bad on
176 the code is interpreted correctly (though it still looks bad on
172 screen, due to the line-oriented nature of ipython).
177 screen, due to the line-oriented nature of ipython).
173 (MagicCompleter.complete): change behavior so that a TAB key on an
178 (MagicCompleter.complete): change behavior so that a TAB key on an
174 otherwise empty line actually inserts a tab, instead of completing
179 otherwise empty line actually inserts a tab, instead of completing
175 on the entire global namespace. This makes it easier to use the
180 on the entire global namespace. This makes it easier to use the
176 TAB key for indentation. After a request by Hans Meine
181 TAB key for indentation. After a request by Hans Meine
177 <hans_meine-AT-gmx.net>
182 <hans_meine-AT-gmx.net>
178 (_prefilter): add support so that typing plain 'exit' or 'quit'
183 (_prefilter): add support so that typing plain 'exit' or 'quit'
179 does a sensible thing. Originally I tried to deviate as little as
184 does a sensible thing. Originally I tried to deviate as little as
180 possible from the default python behavior, but even that one may
185 possible from the default python behavior, but even that one may
181 change in this direction (thread on python-dev to that effect).
186 change in this direction (thread on python-dev to that effect).
182 Regardless, ipython should do the right thing even if CPython's
187 Regardless, ipython should do the right thing even if CPython's
183 '>>>' prompt doesn't.
188 '>>>' prompt doesn't.
184 (InteractiveShell): removed subclassing code.InteractiveConsole
189 (InteractiveShell): removed subclassing code.InteractiveConsole
185 class. By now we'd overridden just about all of its methods: I've
190 class. By now we'd overridden just about all of its methods: I've
186 copied the remaining two over, and now ipython is a standalone
191 copied the remaining two over, and now ipython is a standalone
187 class. This will provide a clearer picture for the chainsaw
192 class. This will provide a clearer picture for the chainsaw
188 branch refactoring.
193 branch refactoring.
189
194
190 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
195 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
191
196
192 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
197 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
193 failures for objects which break when dir() is called on them.
198 failures for objects which break when dir() is called on them.
194
199
195 * IPython/FlexCompleter.py (Completer.__init__): Added support for
200 * IPython/FlexCompleter.py (Completer.__init__): Added support for
196 distinct local and global namespaces in the completer API. This
201 distinct local and global namespaces in the completer API. This
197 change allows us top properly handle completion with distinct
202 change allows us top properly handle completion with distinct
198 scopes, including in embedded instances (this had never really
203 scopes, including in embedded instances (this had never really
199 worked correctly).
204 worked correctly).
200
205
201 Note: this introduces a change in the constructor for
206 Note: this introduces a change in the constructor for
202 MagicCompleter, as a new global_namespace parameter is now the
207 MagicCompleter, as a new global_namespace parameter is now the
203 second argument (the others were bumped one position).
208 second argument (the others were bumped one position).
204
209
205 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
210 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
206
211
207 * IPython/iplib.py (embed_mainloop): fix tab-completion in
212 * IPython/iplib.py (embed_mainloop): fix tab-completion in
208 embedded instances (which can be done now thanks to Vivian's
213 embedded instances (which can be done now thanks to Vivian's
209 frame-handling fixes for pdb).
214 frame-handling fixes for pdb).
210 (InteractiveShell.__init__): Fix namespace handling problem in
215 (InteractiveShell.__init__): Fix namespace handling problem in
211 embedded instances. We were overwriting __main__ unconditionally,
216 embedded instances. We were overwriting __main__ unconditionally,
212 and this should only be done for 'full' (non-embedded) IPython;
217 and this should only be done for 'full' (non-embedded) IPython;
213 embedded instances must respect the caller's __main__. Thanks to
218 embedded instances must respect the caller's __main__. Thanks to
214 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
219 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
215
220
216 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
221 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
217
222
218 * setup.py: added download_url to setup(). This registers the
223 * setup.py: added download_url to setup(). This registers the
219 download address at PyPI, which is not only useful to humans
224 download address at PyPI, which is not only useful to humans
220 browsing the site, but is also picked up by setuptools (the Eggs
225 browsing the site, but is also picked up by setuptools (the Eggs
221 machinery). Thanks to Ville and R. Kern for the info/discussion
226 machinery). Thanks to Ville and R. Kern for the info/discussion
222 on this.
227 on this.
223
228
224 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
229 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
225
230
226 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
231 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
227 This brings a lot of nice functionality to the pdb mode, which now
232 This brings a lot of nice functionality to the pdb mode, which now
228 has tab-completion, syntax highlighting, and better stack handling
233 has tab-completion, syntax highlighting, and better stack handling
229 than before. Many thanks to Vivian De Smedt
234 than before. Many thanks to Vivian De Smedt
230 <vivian-AT-vdesmedt.com> for the original patches.
235 <vivian-AT-vdesmedt.com> for the original patches.
231
236
232 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
237 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
233
238
234 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
239 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
235 sequence to consistently accept the banner argument. The
240 sequence to consistently accept the banner argument. The
236 inconsistency was tripping SAGE, thanks to Gary Zablackis
241 inconsistency was tripping SAGE, thanks to Gary Zablackis
237 <gzabl-AT-yahoo.com> for the report.
242 <gzabl-AT-yahoo.com> for the report.
238
243
239 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
244 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
240
245
241 * IPython/iplib.py (InteractiveShell.post_config_initialization):
246 * IPython/iplib.py (InteractiveShell.post_config_initialization):
242 Fix bug where a naked 'alias' call in the ipythonrc file would
247 Fix bug where a naked 'alias' call in the ipythonrc file would
243 cause a crash. Bug reported by Jorgen Stenarson.
248 cause a crash. Bug reported by Jorgen Stenarson.
244
249
245 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
250 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
246
251
247 * IPython/ipmaker.py (make_IPython): cleanups which should improve
252 * IPython/ipmaker.py (make_IPython): cleanups which should improve
248 startup time.
253 startup time.
249
254
250 * IPython/iplib.py (runcode): my globals 'fix' for embedded
255 * IPython/iplib.py (runcode): my globals 'fix' for embedded
251 instances had introduced a bug with globals in normal code. Now
256 instances had introduced a bug with globals in normal code. Now
252 it's working in all cases.
257 it's working in all cases.
253
258
254 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
259 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
255 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
260 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
256 has been introduced to set the default case sensitivity of the
261 has been introduced to set the default case sensitivity of the
257 searches. Users can still select either mode at runtime on a
262 searches. Users can still select either mode at runtime on a
258 per-search basis.
263 per-search basis.
259
264
260 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
265 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
261
266
262 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
267 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
263 attributes in wildcard searches for subclasses. Modified version
268 attributes in wildcard searches for subclasses. Modified version
264 of a patch by Jorgen.
269 of a patch by Jorgen.
265
270
266 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
271 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
267
272
268 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
273 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
269 embedded instances. I added a user_global_ns attribute to the
274 embedded instances. I added a user_global_ns attribute to the
270 InteractiveShell class to handle this.
275 InteractiveShell class to handle this.
271
276
272 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
277 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
273
278
274 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
279 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
275 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
280 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
276 (reported under win32, but may happen also in other platforms).
281 (reported under win32, but may happen also in other platforms).
277 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
282 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
278
283
279 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
284 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
280
285
281 * IPython/Magic.py (magic_psearch): new support for wildcard
286 * IPython/Magic.py (magic_psearch): new support for wildcard
282 patterns. Now, typing ?a*b will list all names which begin with a
287 patterns. Now, typing ?a*b will list all names which begin with a
283 and end in b, for example. The %psearch magic has full
288 and end in b, for example. The %psearch magic has full
284 docstrings. Many thanks to JΓΆrgen Stenarson
289 docstrings. Many thanks to JΓΆrgen Stenarson
285 <jorgen.stenarson-AT-bostream.nu>, author of the patches
290 <jorgen.stenarson-AT-bostream.nu>, author of the patches
286 implementing this functionality.
291 implementing this functionality.
287
292
288 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
293 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
289
294
290 * Manual: fixed long-standing annoyance of double-dashes (as in
295 * Manual: fixed long-standing annoyance of double-dashes (as in
291 --prefix=~, for example) being stripped in the HTML version. This
296 --prefix=~, for example) being stripped in the HTML version. This
292 is a latex2html bug, but a workaround was provided. Many thanks
297 is a latex2html bug, but a workaround was provided. Many thanks
293 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
298 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
294 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
299 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
295 rolling. This seemingly small issue had tripped a number of users
300 rolling. This seemingly small issue had tripped a number of users
296 when first installing, so I'm glad to see it gone.
301 when first installing, so I'm glad to see it gone.
297
302
298 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
303 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
299
304
300 * IPython/Extensions/numeric_formats.py: fix missing import,
305 * IPython/Extensions/numeric_formats.py: fix missing import,
301 reported by Stephen Walton.
306 reported by Stephen Walton.
302
307
303 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
308 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
304
309
305 * IPython/demo.py: finish demo module, fully documented now.
310 * IPython/demo.py: finish demo module, fully documented now.
306
311
307 * IPython/genutils.py (file_read): simple little utility to read a
312 * IPython/genutils.py (file_read): simple little utility to read a
308 file and ensure it's closed afterwards.
313 file and ensure it's closed afterwards.
309
314
310 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
315 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
311
316
312 * IPython/demo.py (Demo.__init__): added support for individually
317 * IPython/demo.py (Demo.__init__): added support for individually
313 tagging blocks for automatic execution.
318 tagging blocks for automatic execution.
314
319
315 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
320 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
316 syntax-highlighted python sources, requested by John.
321 syntax-highlighted python sources, requested by John.
317
322
318 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
323 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
319
324
320 * IPython/demo.py (Demo.again): fix bug where again() blocks after
325 * IPython/demo.py (Demo.again): fix bug where again() blocks after
321 finishing.
326 finishing.
322
327
323 * IPython/genutils.py (shlex_split): moved from Magic to here,
328 * IPython/genutils.py (shlex_split): moved from Magic to here,
324 where all 2.2 compatibility stuff lives. I needed it for demo.py.
329 where all 2.2 compatibility stuff lives. I needed it for demo.py.
325
330
326 * IPython/demo.py (Demo.__init__): added support for silent
331 * IPython/demo.py (Demo.__init__): added support for silent
327 blocks, improved marks as regexps, docstrings written.
332 blocks, improved marks as regexps, docstrings written.
328 (Demo.__init__): better docstring, added support for sys.argv.
333 (Demo.__init__): better docstring, added support for sys.argv.
329
334
330 * IPython/genutils.py (marquee): little utility used by the demo
335 * IPython/genutils.py (marquee): little utility used by the demo
331 code, handy in general.
336 code, handy in general.
332
337
333 * IPython/demo.py (Demo.__init__): new class for interactive
338 * IPython/demo.py (Demo.__init__): new class for interactive
334 demos. Not documented yet, I just wrote it in a hurry for
339 demos. Not documented yet, I just wrote it in a hurry for
335 scipy'05. Will docstring later.
340 scipy'05. Will docstring later.
336
341
337 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
342 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
338
343
339 * IPython/Shell.py (sigint_handler): Drastic simplification which
344 * IPython/Shell.py (sigint_handler): Drastic simplification which
340 also seems to make Ctrl-C work correctly across threads! This is
345 also seems to make Ctrl-C work correctly across threads! This is
341 so simple, that I can't beleive I'd missed it before. Needs more
346 so simple, that I can't beleive I'd missed it before. Needs more
342 testing, though.
347 testing, though.
343 (KBINT): Never mind, revert changes. I'm sure I'd tried something
348 (KBINT): Never mind, revert changes. I'm sure I'd tried something
344 like this before...
349 like this before...
345
350
346 * IPython/genutils.py (get_home_dir): add protection against
351 * IPython/genutils.py (get_home_dir): add protection against
347 non-dirs in win32 registry.
352 non-dirs in win32 registry.
348
353
349 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
354 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
350 bug where dict was mutated while iterating (pysh crash).
355 bug where dict was mutated while iterating (pysh crash).
351
356
352 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
357 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
353
358
354 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
359 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
355 spurious newlines added by this routine. After a report by
360 spurious newlines added by this routine. After a report by
356 F. Mantegazza.
361 F. Mantegazza.
357
362
358 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
363 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
359
364
360 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
365 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
361 calls. These were a leftover from the GTK 1.x days, and can cause
366 calls. These were a leftover from the GTK 1.x days, and can cause
362 problems in certain cases (after a report by John Hunter).
367 problems in certain cases (after a report by John Hunter).
363
368
364 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
369 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
365 os.getcwd() fails at init time. Thanks to patch from David Remahl
370 os.getcwd() fails at init time. Thanks to patch from David Remahl
366 <chmod007-AT-mac.com>.
371 <chmod007-AT-mac.com>.
367 (InteractiveShell.__init__): prevent certain special magics from
372 (InteractiveShell.__init__): prevent certain special magics from
368 being shadowed by aliases. Closes
373 being shadowed by aliases. Closes
369 http://www.scipy.net/roundup/ipython/issue41.
374 http://www.scipy.net/roundup/ipython/issue41.
370
375
371 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
376 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
372
377
373 * IPython/iplib.py (InteractiveShell.complete): Added new
378 * IPython/iplib.py (InteractiveShell.complete): Added new
374 top-level completion method to expose the completion mechanism
379 top-level completion method to expose the completion mechanism
375 beyond readline-based environments.
380 beyond readline-based environments.
376
381
377 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
382 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
378
383
379 * tools/ipsvnc (svnversion): fix svnversion capture.
384 * tools/ipsvnc (svnversion): fix svnversion capture.
380
385
381 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
386 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
382 attribute to self, which was missing. Before, it was set by a
387 attribute to self, which was missing. Before, it was set by a
383 routine which in certain cases wasn't being called, so the
388 routine which in certain cases wasn't being called, so the
384 instance could end up missing the attribute. This caused a crash.
389 instance could end up missing the attribute. This caused a crash.
385 Closes http://www.scipy.net/roundup/ipython/issue40.
390 Closes http://www.scipy.net/roundup/ipython/issue40.
386
391
387 2005-08-16 Fernando Perez <fperez@colorado.edu>
392 2005-08-16 Fernando Perez <fperez@colorado.edu>
388
393
389 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
394 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
390 contains non-string attribute. Closes
395 contains non-string attribute. Closes
391 http://www.scipy.net/roundup/ipython/issue38.
396 http://www.scipy.net/roundup/ipython/issue38.
392
397
393 2005-08-14 Fernando Perez <fperez@colorado.edu>
398 2005-08-14 Fernando Perez <fperez@colorado.edu>
394
399
395 * tools/ipsvnc: Minor improvements, to add changeset info.
400 * tools/ipsvnc: Minor improvements, to add changeset info.
396
401
397 2005-08-12 Fernando Perez <fperez@colorado.edu>
402 2005-08-12 Fernando Perez <fperez@colorado.edu>
398
403
399 * IPython/iplib.py (runsource): remove self.code_to_run_src
404 * IPython/iplib.py (runsource): remove self.code_to_run_src
400 attribute. I realized this is nothing more than
405 attribute. I realized this is nothing more than
401 '\n'.join(self.buffer), and having the same data in two different
406 '\n'.join(self.buffer), and having the same data in two different
402 places is just asking for synchronization bugs. This may impact
407 places is just asking for synchronization bugs. This may impact
403 people who have custom exception handlers, so I need to warn
408 people who have custom exception handlers, so I need to warn
404 ipython-dev about it (F. Mantegazza may use them).
409 ipython-dev about it (F. Mantegazza may use them).
405
410
406 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
411 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
407
412
408 * IPython/genutils.py: fix 2.2 compatibility (generators)
413 * IPython/genutils.py: fix 2.2 compatibility (generators)
409
414
410 2005-07-18 Fernando Perez <fperez@colorado.edu>
415 2005-07-18 Fernando Perez <fperez@colorado.edu>
411
416
412 * IPython/genutils.py (get_home_dir): fix to help users with
417 * IPython/genutils.py (get_home_dir): fix to help users with
413 invalid $HOME under win32.
418 invalid $HOME under win32.
414
419
415 2005-07-17 Fernando Perez <fperez@colorado.edu>
420 2005-07-17 Fernando Perez <fperez@colorado.edu>
416
421
417 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
422 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
418 some old hacks and clean up a bit other routines; code should be
423 some old hacks and clean up a bit other routines; code should be
419 simpler and a bit faster.
424 simpler and a bit faster.
420
425
421 * IPython/iplib.py (interact): removed some last-resort attempts
426 * IPython/iplib.py (interact): removed some last-resort attempts
422 to survive broken stdout/stderr. That code was only making it
427 to survive broken stdout/stderr. That code was only making it
423 harder to abstract out the i/o (necessary for gui integration),
428 harder to abstract out the i/o (necessary for gui integration),
424 and the crashes it could prevent were extremely rare in practice
429 and the crashes it could prevent were extremely rare in practice
425 (besides being fully user-induced in a pretty violent manner).
430 (besides being fully user-induced in a pretty violent manner).
426
431
427 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
432 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
428 Nothing major yet, but the code is simpler to read; this should
433 Nothing major yet, but the code is simpler to read; this should
429 make it easier to do more serious modifications in the future.
434 make it easier to do more serious modifications in the future.
430
435
431 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
436 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
432 which broke in .15 (thanks to a report by Ville).
437 which broke in .15 (thanks to a report by Ville).
433
438
434 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
439 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
435 be quite correct, I know next to nothing about unicode). This
440 be quite correct, I know next to nothing about unicode). This
436 will allow unicode strings to be used in prompts, amongst other
441 will allow unicode strings to be used in prompts, amongst other
437 cases. It also will prevent ipython from crashing when unicode
442 cases. It also will prevent ipython from crashing when unicode
438 shows up unexpectedly in many places. If ascii encoding fails, we
443 shows up unexpectedly in many places. If ascii encoding fails, we
439 assume utf_8. Currently the encoding is not a user-visible
444 assume utf_8. Currently the encoding is not a user-visible
440 setting, though it could be made so if there is demand for it.
445 setting, though it could be made so if there is demand for it.
441
446
442 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
447 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
443
448
444 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
449 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
445
450
446 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
451 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
447
452
448 * IPython/genutils.py: Add 2.2 compatibility here, so all other
453 * IPython/genutils.py: Add 2.2 compatibility here, so all other
449 code can work transparently for 2.2/2.3.
454 code can work transparently for 2.2/2.3.
450
455
451 2005-07-16 Fernando Perez <fperez@colorado.edu>
456 2005-07-16 Fernando Perez <fperez@colorado.edu>
452
457
453 * IPython/ultraTB.py (ExceptionColors): Make a global variable
458 * IPython/ultraTB.py (ExceptionColors): Make a global variable
454 out of the color scheme table used for coloring exception
459 out of the color scheme table used for coloring exception
455 tracebacks. This allows user code to add new schemes at runtime.
460 tracebacks. This allows user code to add new schemes at runtime.
456 This is a minimally modified version of the patch at
461 This is a minimally modified version of the patch at
457 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
462 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
458 for the contribution.
463 for the contribution.
459
464
460 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
465 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
461 slightly modified version of the patch in
466 slightly modified version of the patch in
462 http://www.scipy.net/roundup/ipython/issue34, which also allows me
467 http://www.scipy.net/roundup/ipython/issue34, which also allows me
463 to remove the previous try/except solution (which was costlier).
468 to remove the previous try/except solution (which was costlier).
464 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
469 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
465
470
466 2005-06-08 Fernando Perez <fperez@colorado.edu>
471 2005-06-08 Fernando Perez <fperez@colorado.edu>
467
472
468 * IPython/iplib.py (write/write_err): Add methods to abstract all
473 * IPython/iplib.py (write/write_err): Add methods to abstract all
469 I/O a bit more.
474 I/O a bit more.
470
475
471 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
476 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
472 warning, reported by Aric Hagberg, fix by JD Hunter.
477 warning, reported by Aric Hagberg, fix by JD Hunter.
473
478
474 2005-06-02 *** Released version 0.6.15
479 2005-06-02 *** Released version 0.6.15
475
480
476 2005-06-01 Fernando Perez <fperez@colorado.edu>
481 2005-06-01 Fernando Perez <fperez@colorado.edu>
477
482
478 * IPython/iplib.py (MagicCompleter.file_matches): Fix
483 * IPython/iplib.py (MagicCompleter.file_matches): Fix
479 tab-completion of filenames within open-quoted strings. Note that
484 tab-completion of filenames within open-quoted strings. Note that
480 this requires that in ~/.ipython/ipythonrc, users change the
485 this requires that in ~/.ipython/ipythonrc, users change the
481 readline delimiters configuration to read:
486 readline delimiters configuration to read:
482
487
483 readline_remove_delims -/~
488 readline_remove_delims -/~
484
489
485
490
486 2005-05-31 *** Released version 0.6.14
491 2005-05-31 *** Released version 0.6.14
487
492
488 2005-05-29 Fernando Perez <fperez@colorado.edu>
493 2005-05-29 Fernando Perez <fperez@colorado.edu>
489
494
490 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
495 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
491 with files not on the filesystem. Reported by Eliyahu Sandler
496 with files not on the filesystem. Reported by Eliyahu Sandler
492 <eli@gondolin.net>
497 <eli@gondolin.net>
493
498
494 2005-05-22 Fernando Perez <fperez@colorado.edu>
499 2005-05-22 Fernando Perez <fperez@colorado.edu>
495
500
496 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
501 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
497 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
502 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
498
503
499 2005-05-19 Fernando Perez <fperez@colorado.edu>
504 2005-05-19 Fernando Perez <fperez@colorado.edu>
500
505
501 * IPython/iplib.py (safe_execfile): close a file which could be
506 * IPython/iplib.py (safe_execfile): close a file which could be
502 left open (causing problems in win32, which locks open files).
507 left open (causing problems in win32, which locks open files).
503 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
508 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
504
509
505 2005-05-18 Fernando Perez <fperez@colorado.edu>
510 2005-05-18 Fernando Perez <fperez@colorado.edu>
506
511
507 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
512 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
508 keyword arguments correctly to safe_execfile().
513 keyword arguments correctly to safe_execfile().
509
514
510 2005-05-13 Fernando Perez <fperez@colorado.edu>
515 2005-05-13 Fernando Perez <fperez@colorado.edu>
511
516
512 * ipython.1: Added info about Qt to manpage, and threads warning
517 * ipython.1: Added info about Qt to manpage, and threads warning
513 to usage page (invoked with --help).
518 to usage page (invoked with --help).
514
519
515 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
520 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
516 new matcher (it goes at the end of the priority list) to do
521 new matcher (it goes at the end of the priority list) to do
517 tab-completion on named function arguments. Submitted by George
522 tab-completion on named function arguments. Submitted by George
518 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
523 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
519 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
524 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
520 for more details.
525 for more details.
521
526
522 * IPython/Magic.py (magic_run): Added new -e flag to ignore
527 * IPython/Magic.py (magic_run): Added new -e flag to ignore
523 SystemExit exceptions in the script being run. Thanks to a report
528 SystemExit exceptions in the script being run. Thanks to a report
524 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
529 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
525 producing very annoying behavior when running unit tests.
530 producing very annoying behavior when running unit tests.
526
531
527 2005-05-12 Fernando Perez <fperez@colorado.edu>
532 2005-05-12 Fernando Perez <fperez@colorado.edu>
528
533
529 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
534 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
530 which I'd broken (again) due to a changed regexp. In the process,
535 which I'd broken (again) due to a changed regexp. In the process,
531 added ';' as an escape to auto-quote the whole line without
536 added ';' as an escape to auto-quote the whole line without
532 splitting its arguments. Thanks to a report by Jerry McRae
537 splitting its arguments. Thanks to a report by Jerry McRae
533 <qrs0xyc02-AT-sneakemail.com>.
538 <qrs0xyc02-AT-sneakemail.com>.
534
539
535 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
540 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
536 possible crashes caused by a TokenError. Reported by Ed Schofield
541 possible crashes caused by a TokenError. Reported by Ed Schofield
537 <schofield-AT-ftw.at>.
542 <schofield-AT-ftw.at>.
538
543
539 2005-05-06 Fernando Perez <fperez@colorado.edu>
544 2005-05-06 Fernando Perez <fperez@colorado.edu>
540
545
541 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
546 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
542
547
543 2005-04-29 Fernando Perez <fperez@colorado.edu>
548 2005-04-29 Fernando Perez <fperez@colorado.edu>
544
549
545 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
550 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
546 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
551 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
547 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
552 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
548 which provides support for Qt interactive usage (similar to the
553 which provides support for Qt interactive usage (similar to the
549 existing one for WX and GTK). This had been often requested.
554 existing one for WX and GTK). This had been often requested.
550
555
551 2005-04-14 *** Released version 0.6.13
556 2005-04-14 *** Released version 0.6.13
552
557
553 2005-04-08 Fernando Perez <fperez@colorado.edu>
558 2005-04-08 Fernando Perez <fperez@colorado.edu>
554
559
555 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
560 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
556 from _ofind, which gets called on almost every input line. Now,
561 from _ofind, which gets called on almost every input line. Now,
557 we only try to get docstrings if they are actually going to be
562 we only try to get docstrings if they are actually going to be
558 used (the overhead of fetching unnecessary docstrings can be
563 used (the overhead of fetching unnecessary docstrings can be
559 noticeable for certain objects, such as Pyro proxies).
564 noticeable for certain objects, such as Pyro proxies).
560
565
561 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
566 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
562 for completers. For some reason I had been passing them the state
567 for completers. For some reason I had been passing them the state
563 variable, which completers never actually need, and was in
568 variable, which completers never actually need, and was in
564 conflict with the rlcompleter API. Custom completers ONLY need to
569 conflict with the rlcompleter API. Custom completers ONLY need to
565 take the text parameter.
570 take the text parameter.
566
571
567 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
572 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
568 work correctly in pysh. I've also moved all the logic which used
573 work correctly in pysh. I've also moved all the logic which used
569 to be in pysh.py here, which will prevent problems with future
574 to be in pysh.py here, which will prevent problems with future
570 upgrades. However, this time I must warn users to update their
575 upgrades. However, this time I must warn users to update their
571 pysh profile to include the line
576 pysh profile to include the line
572
577
573 import_all IPython.Extensions.InterpreterExec
578 import_all IPython.Extensions.InterpreterExec
574
579
575 because otherwise things won't work for them. They MUST also
580 because otherwise things won't work for them. They MUST also
576 delete pysh.py and the line
581 delete pysh.py and the line
577
582
578 execfile pysh.py
583 execfile pysh.py
579
584
580 from their ipythonrc-pysh.
585 from their ipythonrc-pysh.
581
586
582 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
587 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
583 robust in the face of objects whose dir() returns non-strings
588 robust in the face of objects whose dir() returns non-strings
584 (which it shouldn't, but some broken libs like ITK do). Thanks to
589 (which it shouldn't, but some broken libs like ITK do). Thanks to
585 a patch by John Hunter (implemented differently, though). Also
590 a patch by John Hunter (implemented differently, though). Also
586 minor improvements by using .extend instead of + on lists.
591 minor improvements by using .extend instead of + on lists.
587
592
588 * pysh.py:
593 * pysh.py:
589
594
590 2005-04-06 Fernando Perez <fperez@colorado.edu>
595 2005-04-06 Fernando Perez <fperez@colorado.edu>
591
596
592 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
597 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
593 by default, so that all users benefit from it. Those who don't
598 by default, so that all users benefit from it. Those who don't
594 want it can still turn it off.
599 want it can still turn it off.
595
600
596 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
601 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
597 config file, I'd forgotten about this, so users were getting it
602 config file, I'd forgotten about this, so users were getting it
598 off by default.
603 off by default.
599
604
600 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
605 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
601 consistency. Now magics can be called in multiline statements,
606 consistency. Now magics can be called in multiline statements,
602 and python variables can be expanded in magic calls via $var.
607 and python variables can be expanded in magic calls via $var.
603 This makes the magic system behave just like aliases or !system
608 This makes the magic system behave just like aliases or !system
604 calls.
609 calls.
605
610
606 2005-03-28 Fernando Perez <fperez@colorado.edu>
611 2005-03-28 Fernando Perez <fperez@colorado.edu>
607
612
608 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
613 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
609 expensive string additions for building command. Add support for
614 expensive string additions for building command. Add support for
610 trailing ';' when autocall is used.
615 trailing ';' when autocall is used.
611
616
612 2005-03-26 Fernando Perez <fperez@colorado.edu>
617 2005-03-26 Fernando Perez <fperez@colorado.edu>
613
618
614 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
619 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
615 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
620 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
616 ipython.el robust against prompts with any number of spaces
621 ipython.el robust against prompts with any number of spaces
617 (including 0) after the ':' character.
622 (including 0) after the ':' character.
618
623
619 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
624 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
620 continuation prompt, which misled users to think the line was
625 continuation prompt, which misled users to think the line was
621 already indented. Closes debian Bug#300847, reported to me by
626 already indented. Closes debian Bug#300847, reported to me by
622 Norbert Tretkowski <tretkowski-AT-inittab.de>.
627 Norbert Tretkowski <tretkowski-AT-inittab.de>.
623
628
624 2005-03-23 Fernando Perez <fperez@colorado.edu>
629 2005-03-23 Fernando Perez <fperez@colorado.edu>
625
630
626 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
631 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
627 properly aligned if they have embedded newlines.
632 properly aligned if they have embedded newlines.
628
633
629 * IPython/iplib.py (runlines): Add a public method to expose
634 * IPython/iplib.py (runlines): Add a public method to expose
630 IPython's code execution machinery, so that users can run strings
635 IPython's code execution machinery, so that users can run strings
631 as if they had been typed at the prompt interactively.
636 as if they had been typed at the prompt interactively.
632 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
637 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
633 methods which can call the system shell, but with python variable
638 methods which can call the system shell, but with python variable
634 expansion. The three such methods are: __IPYTHON__.system,
639 expansion. The three such methods are: __IPYTHON__.system,
635 .getoutput and .getoutputerror. These need to be documented in a
640 .getoutput and .getoutputerror. These need to be documented in a
636 'public API' section (to be written) of the manual.
641 'public API' section (to be written) of the manual.
637
642
638 2005-03-20 Fernando Perez <fperez@colorado.edu>
643 2005-03-20 Fernando Perez <fperez@colorado.edu>
639
644
640 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
645 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
641 for custom exception handling. This is quite powerful, and it
646 for custom exception handling. This is quite powerful, and it
642 allows for user-installable exception handlers which can trap
647 allows for user-installable exception handlers which can trap
643 custom exceptions at runtime and treat them separately from
648 custom exceptions at runtime and treat them separately from
644 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
649 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
645 Mantegazza <mantegazza-AT-ill.fr>.
650 Mantegazza <mantegazza-AT-ill.fr>.
646 (InteractiveShell.set_custom_completer): public API function to
651 (InteractiveShell.set_custom_completer): public API function to
647 add new completers at runtime.
652 add new completers at runtime.
648
653
649 2005-03-19 Fernando Perez <fperez@colorado.edu>
654 2005-03-19 Fernando Perez <fperez@colorado.edu>
650
655
651 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
656 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
652 allow objects which provide their docstrings via non-standard
657 allow objects which provide their docstrings via non-standard
653 mechanisms (like Pyro proxies) to still be inspected by ipython's
658 mechanisms (like Pyro proxies) to still be inspected by ipython's
654 ? system.
659 ? system.
655
660
656 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
661 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
657 automatic capture system. I tried quite hard to make it work
662 automatic capture system. I tried quite hard to make it work
658 reliably, and simply failed. I tried many combinations with the
663 reliably, and simply failed. I tried many combinations with the
659 subprocess module, but eventually nothing worked in all needed
664 subprocess module, but eventually nothing worked in all needed
660 cases (not blocking stdin for the child, duplicating stdout
665 cases (not blocking stdin for the child, duplicating stdout
661 without blocking, etc). The new %sc/%sx still do capture to these
666 without blocking, etc). The new %sc/%sx still do capture to these
662 magical list/string objects which make shell use much more
667 magical list/string objects which make shell use much more
663 conveninent, so not all is lost.
668 conveninent, so not all is lost.
664
669
665 XXX - FIX MANUAL for the change above!
670 XXX - FIX MANUAL for the change above!
666
671
667 (runsource): I copied code.py's runsource() into ipython to modify
672 (runsource): I copied code.py's runsource() into ipython to modify
668 it a bit. Now the code object and source to be executed are
673 it a bit. Now the code object and source to be executed are
669 stored in ipython. This makes this info accessible to third-party
674 stored in ipython. This makes this info accessible to third-party
670 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
675 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
671 Mantegazza <mantegazza-AT-ill.fr>.
676 Mantegazza <mantegazza-AT-ill.fr>.
672
677
673 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
678 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
674 history-search via readline (like C-p/C-n). I'd wanted this for a
679 history-search via readline (like C-p/C-n). I'd wanted this for a
675 long time, but only recently found out how to do it. For users
680 long time, but only recently found out how to do it. For users
676 who already have their ipythonrc files made and want this, just
681 who already have their ipythonrc files made and want this, just
677 add:
682 add:
678
683
679 readline_parse_and_bind "\e[A": history-search-backward
684 readline_parse_and_bind "\e[A": history-search-backward
680 readline_parse_and_bind "\e[B": history-search-forward
685 readline_parse_and_bind "\e[B": history-search-forward
681
686
682 2005-03-18 Fernando Perez <fperez@colorado.edu>
687 2005-03-18 Fernando Perez <fperez@colorado.edu>
683
688
684 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
689 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
685 LSString and SList classes which allow transparent conversions
690 LSString and SList classes which allow transparent conversions
686 between list mode and whitespace-separated string.
691 between list mode and whitespace-separated string.
687 (magic_r): Fix recursion problem in %r.
692 (magic_r): Fix recursion problem in %r.
688
693
689 * IPython/genutils.py (LSString): New class to be used for
694 * IPython/genutils.py (LSString): New class to be used for
690 automatic storage of the results of all alias/system calls in _o
695 automatic storage of the results of all alias/system calls in _o
691 and _e (stdout/err). These provide a .l/.list attribute which
696 and _e (stdout/err). These provide a .l/.list attribute which
692 does automatic splitting on newlines. This means that for most
697 does automatic splitting on newlines. This means that for most
693 uses, you'll never need to do capturing of output with %sc/%sx
698 uses, you'll never need to do capturing of output with %sc/%sx
694 anymore, since ipython keeps this always done for you. Note that
699 anymore, since ipython keeps this always done for you. Note that
695 only the LAST results are stored, the _o/e variables are
700 only the LAST results are stored, the _o/e variables are
696 overwritten on each call. If you need to save their contents
701 overwritten on each call. If you need to save their contents
697 further, simply bind them to any other name.
702 further, simply bind them to any other name.
698
703
699 2005-03-17 Fernando Perez <fperez@colorado.edu>
704 2005-03-17 Fernando Perez <fperez@colorado.edu>
700
705
701 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
706 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
702 prompt namespace handling.
707 prompt namespace handling.
703
708
704 2005-03-16 Fernando Perez <fperez@colorado.edu>
709 2005-03-16 Fernando Perez <fperez@colorado.edu>
705
710
706 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
711 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
707 classic prompts to be '>>> ' (final space was missing, and it
712 classic prompts to be '>>> ' (final space was missing, and it
708 trips the emacs python mode).
713 trips the emacs python mode).
709 (BasePrompt.__str__): Added safe support for dynamic prompt
714 (BasePrompt.__str__): Added safe support for dynamic prompt
710 strings. Now you can set your prompt string to be '$x', and the
715 strings. Now you can set your prompt string to be '$x', and the
711 value of x will be printed from your interactive namespace. The
716 value of x will be printed from your interactive namespace. The
712 interpolation syntax includes the full Itpl support, so
717 interpolation syntax includes the full Itpl support, so
713 ${foo()+x+bar()} is a valid prompt string now, and the function
718 ${foo()+x+bar()} is a valid prompt string now, and the function
714 calls will be made at runtime.
719 calls will be made at runtime.
715
720
716 2005-03-15 Fernando Perez <fperez@colorado.edu>
721 2005-03-15 Fernando Perez <fperez@colorado.edu>
717
722
718 * IPython/Magic.py (magic_history): renamed %hist to %history, to
723 * IPython/Magic.py (magic_history): renamed %hist to %history, to
719 avoid name clashes in pylab. %hist still works, it just forwards
724 avoid name clashes in pylab. %hist still works, it just forwards
720 the call to %history.
725 the call to %history.
721
726
722 2005-03-02 *** Released version 0.6.12
727 2005-03-02 *** Released version 0.6.12
723
728
724 2005-03-02 Fernando Perez <fperez@colorado.edu>
729 2005-03-02 Fernando Perez <fperez@colorado.edu>
725
730
726 * IPython/iplib.py (handle_magic): log magic calls properly as
731 * IPython/iplib.py (handle_magic): log magic calls properly as
727 ipmagic() function calls.
732 ipmagic() function calls.
728
733
729 * IPython/Magic.py (magic_time): Improved %time to support
734 * IPython/Magic.py (magic_time): Improved %time to support
730 statements and provide wall-clock as well as CPU time.
735 statements and provide wall-clock as well as CPU time.
731
736
732 2005-02-27 Fernando Perez <fperez@colorado.edu>
737 2005-02-27 Fernando Perez <fperez@colorado.edu>
733
738
734 * IPython/hooks.py: New hooks module, to expose user-modifiable
739 * IPython/hooks.py: New hooks module, to expose user-modifiable
735 IPython functionality in a clean manner. For now only the editor
740 IPython functionality in a clean manner. For now only the editor
736 hook is actually written, and other thigns which I intend to turn
741 hook is actually written, and other thigns which I intend to turn
737 into proper hooks aren't yet there. The display and prefilter
742 into proper hooks aren't yet there. The display and prefilter
738 stuff, for example, should be hooks. But at least now the
743 stuff, for example, should be hooks. But at least now the
739 framework is in place, and the rest can be moved here with more
744 framework is in place, and the rest can be moved here with more
740 time later. IPython had had a .hooks variable for a long time for
745 time later. IPython had had a .hooks variable for a long time for
741 this purpose, but I'd never actually used it for anything.
746 this purpose, but I'd never actually used it for anything.
742
747
743 2005-02-26 Fernando Perez <fperez@colorado.edu>
748 2005-02-26 Fernando Perez <fperez@colorado.edu>
744
749
745 * IPython/ipmaker.py (make_IPython): make the default ipython
750 * IPython/ipmaker.py (make_IPython): make the default ipython
746 directory be called _ipython under win32, to follow more the
751 directory be called _ipython under win32, to follow more the
747 naming peculiarities of that platform (where buggy software like
752 naming peculiarities of that platform (where buggy software like
748 Visual Sourcesafe breaks with .named directories). Reported by
753 Visual Sourcesafe breaks with .named directories). Reported by
749 Ville Vainio.
754 Ville Vainio.
750
755
751 2005-02-23 Fernando Perez <fperez@colorado.edu>
756 2005-02-23 Fernando Perez <fperez@colorado.edu>
752
757
753 * IPython/iplib.py (InteractiveShell.__init__): removed a few
758 * IPython/iplib.py (InteractiveShell.__init__): removed a few
754 auto_aliases for win32 which were causing problems. Users can
759 auto_aliases for win32 which were causing problems. Users can
755 define the ones they personally like.
760 define the ones they personally like.
756
761
757 2005-02-21 Fernando Perez <fperez@colorado.edu>
762 2005-02-21 Fernando Perez <fperez@colorado.edu>
758
763
759 * IPython/Magic.py (magic_time): new magic to time execution of
764 * IPython/Magic.py (magic_time): new magic to time execution of
760 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
765 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
761
766
762 2005-02-19 Fernando Perez <fperez@colorado.edu>
767 2005-02-19 Fernando Perez <fperez@colorado.edu>
763
768
764 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
769 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
765 into keys (for prompts, for example).
770 into keys (for prompts, for example).
766
771
767 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
772 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
768 prompts in case users want them. This introduces a small behavior
773 prompts in case users want them. This introduces a small behavior
769 change: ipython does not automatically add a space to all prompts
774 change: ipython does not automatically add a space to all prompts
770 anymore. To get the old prompts with a space, users should add it
775 anymore. To get the old prompts with a space, users should add it
771 manually to their ipythonrc file, so for example prompt_in1 should
776 manually to their ipythonrc file, so for example prompt_in1 should
772 now read 'In [\#]: ' instead of 'In [\#]:'.
777 now read 'In [\#]: ' instead of 'In [\#]:'.
773 (BasePrompt.__init__): New option prompts_pad_left (only in rc
778 (BasePrompt.__init__): New option prompts_pad_left (only in rc
774 file) to control left-padding of secondary prompts.
779 file) to control left-padding of secondary prompts.
775
780
776 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
781 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
777 the profiler can't be imported. Fix for Debian, which removed
782 the profiler can't be imported. Fix for Debian, which removed
778 profile.py because of License issues. I applied a slightly
783 profile.py because of License issues. I applied a slightly
779 modified version of the original Debian patch at
784 modified version of the original Debian patch at
780 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
785 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
781
786
782 2005-02-17 Fernando Perez <fperez@colorado.edu>
787 2005-02-17 Fernando Perez <fperez@colorado.edu>
783
788
784 * IPython/genutils.py (native_line_ends): Fix bug which would
789 * IPython/genutils.py (native_line_ends): Fix bug which would
785 cause improper line-ends under win32 b/c I was not opening files
790 cause improper line-ends under win32 b/c I was not opening files
786 in binary mode. Bug report and fix thanks to Ville.
791 in binary mode. Bug report and fix thanks to Ville.
787
792
788 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
793 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
789 trying to catch spurious foo[1] autocalls. My fix actually broke
794 trying to catch spurious foo[1] autocalls. My fix actually broke
790 ',/' autoquote/call with explicit escape (bad regexp).
795 ',/' autoquote/call with explicit escape (bad regexp).
791
796
792 2005-02-15 *** Released version 0.6.11
797 2005-02-15 *** Released version 0.6.11
793
798
794 2005-02-14 Fernando Perez <fperez@colorado.edu>
799 2005-02-14 Fernando Perez <fperez@colorado.edu>
795
800
796 * IPython/background_jobs.py: New background job management
801 * IPython/background_jobs.py: New background job management
797 subsystem. This is implemented via a new set of classes, and
802 subsystem. This is implemented via a new set of classes, and
798 IPython now provides a builtin 'jobs' object for background job
803 IPython now provides a builtin 'jobs' object for background job
799 execution. A convenience %bg magic serves as a lightweight
804 execution. A convenience %bg magic serves as a lightweight
800 frontend for starting the more common type of calls. This was
805 frontend for starting the more common type of calls. This was
801 inspired by discussions with B. Granger and the BackgroundCommand
806 inspired by discussions with B. Granger and the BackgroundCommand
802 class described in the book Python Scripting for Computational
807 class described in the book Python Scripting for Computational
803 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
808 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
804 (although ultimately no code from this text was used, as IPython's
809 (although ultimately no code from this text was used, as IPython's
805 system is a separate implementation).
810 system is a separate implementation).
806
811
807 * IPython/iplib.py (MagicCompleter.python_matches): add new option
812 * IPython/iplib.py (MagicCompleter.python_matches): add new option
808 to control the completion of single/double underscore names
813 to control the completion of single/double underscore names
809 separately. As documented in the example ipytonrc file, the
814 separately. As documented in the example ipytonrc file, the
810 readline_omit__names variable can now be set to 2, to omit even
815 readline_omit__names variable can now be set to 2, to omit even
811 single underscore names. Thanks to a patch by Brian Wong
816 single underscore names. Thanks to a patch by Brian Wong
812 <BrianWong-AT-AirgoNetworks.Com>.
817 <BrianWong-AT-AirgoNetworks.Com>.
813 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
818 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
814 be autocalled as foo([1]) if foo were callable. A problem for
819 be autocalled as foo([1]) if foo were callable. A problem for
815 things which are both callable and implement __getitem__.
820 things which are both callable and implement __getitem__.
816 (init_readline): Fix autoindentation for win32. Thanks to a patch
821 (init_readline): Fix autoindentation for win32. Thanks to a patch
817 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
822 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
818
823
819 2005-02-12 Fernando Perez <fperez@colorado.edu>
824 2005-02-12 Fernando Perez <fperez@colorado.edu>
820
825
821 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
826 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
822 which I had written long ago to sort out user error messages which
827 which I had written long ago to sort out user error messages which
823 may occur during startup. This seemed like a good idea initially,
828 may occur during startup. This seemed like a good idea initially,
824 but it has proven a disaster in retrospect. I don't want to
829 but it has proven a disaster in retrospect. I don't want to
825 change much code for now, so my fix is to set the internal 'debug'
830 change much code for now, so my fix is to set the internal 'debug'
826 flag to true everywhere, whose only job was precisely to control
831 flag to true everywhere, whose only job was precisely to control
827 this subsystem. This closes issue 28 (as well as avoiding all
832 this subsystem. This closes issue 28 (as well as avoiding all
828 sorts of strange hangups which occur from time to time).
833 sorts of strange hangups which occur from time to time).
829
834
830 2005-02-07 Fernando Perez <fperez@colorado.edu>
835 2005-02-07 Fernando Perez <fperez@colorado.edu>
831
836
832 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
837 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
833 previous call produced a syntax error.
838 previous call produced a syntax error.
834
839
835 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
840 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
836 classes without constructor.
841 classes without constructor.
837
842
838 2005-02-06 Fernando Perez <fperez@colorado.edu>
843 2005-02-06 Fernando Perez <fperez@colorado.edu>
839
844
840 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
845 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
841 completions with the results of each matcher, so we return results
846 completions with the results of each matcher, so we return results
842 to the user from all namespaces. This breaks with ipython
847 to the user from all namespaces. This breaks with ipython
843 tradition, but I think it's a nicer behavior. Now you get all
848 tradition, but I think it's a nicer behavior. Now you get all
844 possible completions listed, from all possible namespaces (python,
849 possible completions listed, from all possible namespaces (python,
845 filesystem, magics...) After a request by John Hunter
850 filesystem, magics...) After a request by John Hunter
846 <jdhunter-AT-nitace.bsd.uchicago.edu>.
851 <jdhunter-AT-nitace.bsd.uchicago.edu>.
847
852
848 2005-02-05 Fernando Perez <fperez@colorado.edu>
853 2005-02-05 Fernando Perez <fperez@colorado.edu>
849
854
850 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
855 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
851 the call had quote characters in it (the quotes were stripped).
856 the call had quote characters in it (the quotes were stripped).
852
857
853 2005-01-31 Fernando Perez <fperez@colorado.edu>
858 2005-01-31 Fernando Perez <fperez@colorado.edu>
854
859
855 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
860 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
856 Itpl.itpl() to make the code more robust against psyco
861 Itpl.itpl() to make the code more robust against psyco
857 optimizations.
862 optimizations.
858
863
859 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
864 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
860 of causing an exception. Quicker, cleaner.
865 of causing an exception. Quicker, cleaner.
861
866
862 2005-01-28 Fernando Perez <fperez@colorado.edu>
867 2005-01-28 Fernando Perez <fperez@colorado.edu>
863
868
864 * scripts/ipython_win_post_install.py (install): hardcode
869 * scripts/ipython_win_post_install.py (install): hardcode
865 sys.prefix+'python.exe' as the executable path. It turns out that
870 sys.prefix+'python.exe' as the executable path. It turns out that
866 during the post-installation run, sys.executable resolves to the
871 during the post-installation run, sys.executable resolves to the
867 name of the binary installer! I should report this as a distutils
872 name of the binary installer! I should report this as a distutils
868 bug, I think. I updated the .10 release with this tiny fix, to
873 bug, I think. I updated the .10 release with this tiny fix, to
869 avoid annoying the lists further.
874 avoid annoying the lists further.
870
875
871 2005-01-27 *** Released version 0.6.10
876 2005-01-27 *** Released version 0.6.10
872
877
873 2005-01-27 Fernando Perez <fperez@colorado.edu>
878 2005-01-27 Fernando Perez <fperez@colorado.edu>
874
879
875 * IPython/numutils.py (norm): Added 'inf' as optional name for
880 * IPython/numutils.py (norm): Added 'inf' as optional name for
876 L-infinity norm, included references to mathworld.com for vector
881 L-infinity norm, included references to mathworld.com for vector
877 norm definitions.
882 norm definitions.
878 (amin/amax): added amin/amax for array min/max. Similar to what
883 (amin/amax): added amin/amax for array min/max. Similar to what
879 pylab ships with after the recent reorganization of names.
884 pylab ships with after the recent reorganization of names.
880 (spike/spike_odd): removed deprecated spike/spike_odd functions.
885 (spike/spike_odd): removed deprecated spike/spike_odd functions.
881
886
882 * ipython.el: committed Alex's recent fixes and improvements.
887 * ipython.el: committed Alex's recent fixes and improvements.
883 Tested with python-mode from CVS, and it looks excellent. Since
888 Tested with python-mode from CVS, and it looks excellent. Since
884 python-mode hasn't released anything in a while, I'm temporarily
889 python-mode hasn't released anything in a while, I'm temporarily
885 putting a copy of today's CVS (v 4.70) of python-mode in:
890 putting a copy of today's CVS (v 4.70) of python-mode in:
886 http://ipython.scipy.org/tmp/python-mode.el
891 http://ipython.scipy.org/tmp/python-mode.el
887
892
888 * scripts/ipython_win_post_install.py (install): Win32 fix to use
893 * scripts/ipython_win_post_install.py (install): Win32 fix to use
889 sys.executable for the executable name, instead of assuming it's
894 sys.executable for the executable name, instead of assuming it's
890 called 'python.exe' (the post-installer would have produced broken
895 called 'python.exe' (the post-installer would have produced broken
891 setups on systems with a differently named python binary).
896 setups on systems with a differently named python binary).
892
897
893 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
898 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
894 references to os.linesep, to make the code more
899 references to os.linesep, to make the code more
895 platform-independent. This is also part of the win32 coloring
900 platform-independent. This is also part of the win32 coloring
896 fixes.
901 fixes.
897
902
898 * IPython/genutils.py (page_dumb): Remove attempts to chop long
903 * IPython/genutils.py (page_dumb): Remove attempts to chop long
899 lines, which actually cause coloring bugs because the length of
904 lines, which actually cause coloring bugs because the length of
900 the line is very difficult to correctly compute with embedded
905 the line is very difficult to correctly compute with embedded
901 escapes. This was the source of all the coloring problems under
906 escapes. This was the source of all the coloring problems under
902 Win32. I think that _finally_, Win32 users have a properly
907 Win32. I think that _finally_, Win32 users have a properly
903 working ipython in all respects. This would never have happened
908 working ipython in all respects. This would never have happened
904 if not for Gary Bishop and Viktor Ransmayr's great help and work.
909 if not for Gary Bishop and Viktor Ransmayr's great help and work.
905
910
906 2005-01-26 *** Released version 0.6.9
911 2005-01-26 *** Released version 0.6.9
907
912
908 2005-01-25 Fernando Perez <fperez@colorado.edu>
913 2005-01-25 Fernando Perez <fperez@colorado.edu>
909
914
910 * setup.py: finally, we have a true Windows installer, thanks to
915 * setup.py: finally, we have a true Windows installer, thanks to
911 the excellent work of Viktor Ransmayr
916 the excellent work of Viktor Ransmayr
912 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
917 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
913 Windows users. The setup routine is quite a bit cleaner thanks to
918 Windows users. The setup routine is quite a bit cleaner thanks to
914 this, and the post-install script uses the proper functions to
919 this, and the post-install script uses the proper functions to
915 allow a clean de-installation using the standard Windows Control
920 allow a clean de-installation using the standard Windows Control
916 Panel.
921 Panel.
917
922
918 * IPython/genutils.py (get_home_dir): changed to use the $HOME
923 * IPython/genutils.py (get_home_dir): changed to use the $HOME
919 environment variable under all OSes (including win32) if
924 environment variable under all OSes (including win32) if
920 available. This will give consistency to win32 users who have set
925 available. This will give consistency to win32 users who have set
921 this variable for any reason. If os.environ['HOME'] fails, the
926 this variable for any reason. If os.environ['HOME'] fails, the
922 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
927 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
923
928
924 2005-01-24 Fernando Perez <fperez@colorado.edu>
929 2005-01-24 Fernando Perez <fperez@colorado.edu>
925
930
926 * IPython/numutils.py (empty_like): add empty_like(), similar to
931 * IPython/numutils.py (empty_like): add empty_like(), similar to
927 zeros_like() but taking advantage of the new empty() Numeric routine.
932 zeros_like() but taking advantage of the new empty() Numeric routine.
928
933
929 2005-01-23 *** Released version 0.6.8
934 2005-01-23 *** Released version 0.6.8
930
935
931 2005-01-22 Fernando Perez <fperez@colorado.edu>
936 2005-01-22 Fernando Perez <fperez@colorado.edu>
932
937
933 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
938 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
934 automatic show() calls. After discussing things with JDH, it
939 automatic show() calls. After discussing things with JDH, it
935 turns out there are too many corner cases where this can go wrong.
940 turns out there are too many corner cases where this can go wrong.
936 It's best not to try to be 'too smart', and simply have ipython
941 It's best not to try to be 'too smart', and simply have ipython
937 reproduce as much as possible the default behavior of a normal
942 reproduce as much as possible the default behavior of a normal
938 python shell.
943 python shell.
939
944
940 * IPython/iplib.py (InteractiveShell.__init__): Modified the
945 * IPython/iplib.py (InteractiveShell.__init__): Modified the
941 line-splitting regexp and _prefilter() to avoid calling getattr()
946 line-splitting regexp and _prefilter() to avoid calling getattr()
942 on assignments. This closes
947 on assignments. This closes
943 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
948 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
944 readline uses getattr(), so a simple <TAB> keypress is still
949 readline uses getattr(), so a simple <TAB> keypress is still
945 enough to trigger getattr() calls on an object.
950 enough to trigger getattr() calls on an object.
946
951
947 2005-01-21 Fernando Perez <fperez@colorado.edu>
952 2005-01-21 Fernando Perez <fperez@colorado.edu>
948
953
949 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
954 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
950 docstring under pylab so it doesn't mask the original.
955 docstring under pylab so it doesn't mask the original.
951
956
952 2005-01-21 *** Released version 0.6.7
957 2005-01-21 *** Released version 0.6.7
953
958
954 2005-01-21 Fernando Perez <fperez@colorado.edu>
959 2005-01-21 Fernando Perez <fperez@colorado.edu>
955
960
956 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
961 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
957 signal handling for win32 users in multithreaded mode.
962 signal handling for win32 users in multithreaded mode.
958
963
959 2005-01-17 Fernando Perez <fperez@colorado.edu>
964 2005-01-17 Fernando Perez <fperez@colorado.edu>
960
965
961 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
966 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
962 instances with no __init__. After a crash report by Norbert Nemec
967 instances with no __init__. After a crash report by Norbert Nemec
963 <Norbert-AT-nemec-online.de>.
968 <Norbert-AT-nemec-online.de>.
964
969
965 2005-01-14 Fernando Perez <fperez@colorado.edu>
970 2005-01-14 Fernando Perez <fperez@colorado.edu>
966
971
967 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
972 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
968 names for verbose exceptions, when multiple dotted names and the
973 names for verbose exceptions, when multiple dotted names and the
969 'parent' object were present on the same line.
974 'parent' object were present on the same line.
970
975
971 2005-01-11 Fernando Perez <fperez@colorado.edu>
976 2005-01-11 Fernando Perez <fperez@colorado.edu>
972
977
973 * IPython/genutils.py (flag_calls): new utility to trap and flag
978 * IPython/genutils.py (flag_calls): new utility to trap and flag
974 calls in functions. I need it to clean up matplotlib support.
979 calls in functions. I need it to clean up matplotlib support.
975 Also removed some deprecated code in genutils.
980 Also removed some deprecated code in genutils.
976
981
977 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
982 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
978 that matplotlib scripts called with %run, which don't call show()
983 that matplotlib scripts called with %run, which don't call show()
979 themselves, still have their plotting windows open.
984 themselves, still have their plotting windows open.
980
985
981 2005-01-05 Fernando Perez <fperez@colorado.edu>
986 2005-01-05 Fernando Perez <fperez@colorado.edu>
982
987
983 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
988 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
984 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
989 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
985
990
986 2004-12-19 Fernando Perez <fperez@colorado.edu>
991 2004-12-19 Fernando Perez <fperez@colorado.edu>
987
992
988 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
993 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
989 parent_runcode, which was an eyesore. The same result can be
994 parent_runcode, which was an eyesore. The same result can be
990 obtained with Python's regular superclass mechanisms.
995 obtained with Python's regular superclass mechanisms.
991
996
992 2004-12-17 Fernando Perez <fperez@colorado.edu>
997 2004-12-17 Fernando Perez <fperez@colorado.edu>
993
998
994 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
999 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
995 reported by Prabhu.
1000 reported by Prabhu.
996 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1001 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
997 sys.stderr) instead of explicitly calling sys.stderr. This helps
1002 sys.stderr) instead of explicitly calling sys.stderr. This helps
998 maintain our I/O abstractions clean, for future GUI embeddings.
1003 maintain our I/O abstractions clean, for future GUI embeddings.
999
1004
1000 * IPython/genutils.py (info): added new utility for sys.stderr
1005 * IPython/genutils.py (info): added new utility for sys.stderr
1001 unified info message handling (thin wrapper around warn()).
1006 unified info message handling (thin wrapper around warn()).
1002
1007
1003 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1008 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1004 composite (dotted) names on verbose exceptions.
1009 composite (dotted) names on verbose exceptions.
1005 (VerboseTB.nullrepr): harden against another kind of errors which
1010 (VerboseTB.nullrepr): harden against another kind of errors which
1006 Python's inspect module can trigger, and which were crashing
1011 Python's inspect module can trigger, and which were crashing
1007 IPython. Thanks to a report by Marco Lombardi
1012 IPython. Thanks to a report by Marco Lombardi
1008 <mlombard-AT-ma010192.hq.eso.org>.
1013 <mlombard-AT-ma010192.hq.eso.org>.
1009
1014
1010 2004-12-13 *** Released version 0.6.6
1015 2004-12-13 *** Released version 0.6.6
1011
1016
1012 2004-12-12 Fernando Perez <fperez@colorado.edu>
1017 2004-12-12 Fernando Perez <fperez@colorado.edu>
1013
1018
1014 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1019 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1015 generated by pygtk upon initialization if it was built without
1020 generated by pygtk upon initialization if it was built without
1016 threads (for matplotlib users). After a crash reported by
1021 threads (for matplotlib users). After a crash reported by
1017 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1022 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1018
1023
1019 * IPython/ipmaker.py (make_IPython): fix small bug in the
1024 * IPython/ipmaker.py (make_IPython): fix small bug in the
1020 import_some parameter for multiple imports.
1025 import_some parameter for multiple imports.
1021
1026
1022 * IPython/iplib.py (ipmagic): simplified the interface of
1027 * IPython/iplib.py (ipmagic): simplified the interface of
1023 ipmagic() to take a single string argument, just as it would be
1028 ipmagic() to take a single string argument, just as it would be
1024 typed at the IPython cmd line.
1029 typed at the IPython cmd line.
1025 (ipalias): Added new ipalias() with an interface identical to
1030 (ipalias): Added new ipalias() with an interface identical to
1026 ipmagic(). This completes exposing a pure python interface to the
1031 ipmagic(). This completes exposing a pure python interface to the
1027 alias and magic system, which can be used in loops or more complex
1032 alias and magic system, which can be used in loops or more complex
1028 code where IPython's automatic line mangling is not active.
1033 code where IPython's automatic line mangling is not active.
1029
1034
1030 * IPython/genutils.py (timing): changed interface of timing to
1035 * IPython/genutils.py (timing): changed interface of timing to
1031 simply run code once, which is the most common case. timings()
1036 simply run code once, which is the most common case. timings()
1032 remains unchanged, for the cases where you want multiple runs.
1037 remains unchanged, for the cases where you want multiple runs.
1033
1038
1034 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1039 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1035 bug where Python2.2 crashes with exec'ing code which does not end
1040 bug where Python2.2 crashes with exec'ing code which does not end
1036 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1041 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1037 before.
1042 before.
1038
1043
1039 2004-12-10 Fernando Perez <fperez@colorado.edu>
1044 2004-12-10 Fernando Perez <fperez@colorado.edu>
1040
1045
1041 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1046 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1042 -t to -T, to accomodate the new -t flag in %run (the %run and
1047 -t to -T, to accomodate the new -t flag in %run (the %run and
1043 %prun options are kind of intermixed, and it's not easy to change
1048 %prun options are kind of intermixed, and it's not easy to change
1044 this with the limitations of python's getopt).
1049 this with the limitations of python's getopt).
1045
1050
1046 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1051 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1047 the execution of scripts. It's not as fine-tuned as timeit.py,
1052 the execution of scripts. It's not as fine-tuned as timeit.py,
1048 but it works from inside ipython (and under 2.2, which lacks
1053 but it works from inside ipython (and under 2.2, which lacks
1049 timeit.py). Optionally a number of runs > 1 can be given for
1054 timeit.py). Optionally a number of runs > 1 can be given for
1050 timing very short-running code.
1055 timing very short-running code.
1051
1056
1052 * IPython/genutils.py (uniq_stable): new routine which returns a
1057 * IPython/genutils.py (uniq_stable): new routine which returns a
1053 list of unique elements in any iterable, but in stable order of
1058 list of unique elements in any iterable, but in stable order of
1054 appearance. I needed this for the ultraTB fixes, and it's a handy
1059 appearance. I needed this for the ultraTB fixes, and it's a handy
1055 utility.
1060 utility.
1056
1061
1057 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1062 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1058 dotted names in Verbose exceptions. This had been broken since
1063 dotted names in Verbose exceptions. This had been broken since
1059 the very start, now x.y will properly be printed in a Verbose
1064 the very start, now x.y will properly be printed in a Verbose
1060 traceback, instead of x being shown and y appearing always as an
1065 traceback, instead of x being shown and y appearing always as an
1061 'undefined global'. Getting this to work was a bit tricky,
1066 'undefined global'. Getting this to work was a bit tricky,
1062 because by default python tokenizers are stateless. Saved by
1067 because by default python tokenizers are stateless. Saved by
1063 python's ability to easily add a bit of state to an arbitrary
1068 python's ability to easily add a bit of state to an arbitrary
1064 function (without needing to build a full-blown callable object).
1069 function (without needing to build a full-blown callable object).
1065
1070
1066 Also big cleanup of this code, which had horrendous runtime
1071 Also big cleanup of this code, which had horrendous runtime
1067 lookups of zillions of attributes for colorization. Moved all
1072 lookups of zillions of attributes for colorization. Moved all
1068 this code into a few templates, which make it cleaner and quicker.
1073 this code into a few templates, which make it cleaner and quicker.
1069
1074
1070 Printout quality was also improved for Verbose exceptions: one
1075 Printout quality was also improved for Verbose exceptions: one
1071 variable per line, and memory addresses are printed (this can be
1076 variable per line, and memory addresses are printed (this can be
1072 quite handy in nasty debugging situations, which is what Verbose
1077 quite handy in nasty debugging situations, which is what Verbose
1073 is for).
1078 is for).
1074
1079
1075 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1080 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1076 the command line as scripts to be loaded by embedded instances.
1081 the command line as scripts to be loaded by embedded instances.
1077 Doing so has the potential for an infinite recursion if there are
1082 Doing so has the potential for an infinite recursion if there are
1078 exceptions thrown in the process. This fixes a strange crash
1083 exceptions thrown in the process. This fixes a strange crash
1079 reported by Philippe MULLER <muller-AT-irit.fr>.
1084 reported by Philippe MULLER <muller-AT-irit.fr>.
1080
1085
1081 2004-12-09 Fernando Perez <fperez@colorado.edu>
1086 2004-12-09 Fernando Perez <fperez@colorado.edu>
1082
1087
1083 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1088 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1084 to reflect new names in matplotlib, which now expose the
1089 to reflect new names in matplotlib, which now expose the
1085 matlab-compatible interface via a pylab module instead of the
1090 matlab-compatible interface via a pylab module instead of the
1086 'matlab' name. The new code is backwards compatible, so users of
1091 'matlab' name. The new code is backwards compatible, so users of
1087 all matplotlib versions are OK. Patch by J. Hunter.
1092 all matplotlib versions are OK. Patch by J. Hunter.
1088
1093
1089 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1094 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1090 of __init__ docstrings for instances (class docstrings are already
1095 of __init__ docstrings for instances (class docstrings are already
1091 automatically printed). Instances with customized docstrings
1096 automatically printed). Instances with customized docstrings
1092 (indep. of the class) are also recognized and all 3 separate
1097 (indep. of the class) are also recognized and all 3 separate
1093 docstrings are printed (instance, class, constructor). After some
1098 docstrings are printed (instance, class, constructor). After some
1094 comments/suggestions by J. Hunter.
1099 comments/suggestions by J. Hunter.
1095
1100
1096 2004-12-05 Fernando Perez <fperez@colorado.edu>
1101 2004-12-05 Fernando Perez <fperez@colorado.edu>
1097
1102
1098 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1103 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1099 warnings when tab-completion fails and triggers an exception.
1104 warnings when tab-completion fails and triggers an exception.
1100
1105
1101 2004-12-03 Fernando Perez <fperez@colorado.edu>
1106 2004-12-03 Fernando Perez <fperez@colorado.edu>
1102
1107
1103 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1108 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1104 be triggered when using 'run -p'. An incorrect option flag was
1109 be triggered when using 'run -p'. An incorrect option flag was
1105 being set ('d' instead of 'D').
1110 being set ('d' instead of 'D').
1106 (manpage): fix missing escaped \- sign.
1111 (manpage): fix missing escaped \- sign.
1107
1112
1108 2004-11-30 *** Released version 0.6.5
1113 2004-11-30 *** Released version 0.6.5
1109
1114
1110 2004-11-30 Fernando Perez <fperez@colorado.edu>
1115 2004-11-30 Fernando Perez <fperez@colorado.edu>
1111
1116
1112 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1117 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1113 setting with -d option.
1118 setting with -d option.
1114
1119
1115 * setup.py (docfiles): Fix problem where the doc glob I was using
1120 * setup.py (docfiles): Fix problem where the doc glob I was using
1116 was COMPLETELY BROKEN. It was giving the right files by pure
1121 was COMPLETELY BROKEN. It was giving the right files by pure
1117 accident, but failed once I tried to include ipython.el. Note:
1122 accident, but failed once I tried to include ipython.el. Note:
1118 glob() does NOT allow you to do exclusion on multiple endings!
1123 glob() does NOT allow you to do exclusion on multiple endings!
1119
1124
1120 2004-11-29 Fernando Perez <fperez@colorado.edu>
1125 2004-11-29 Fernando Perez <fperez@colorado.edu>
1121
1126
1122 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1127 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1123 the manpage as the source. Better formatting & consistency.
1128 the manpage as the source. Better formatting & consistency.
1124
1129
1125 * IPython/Magic.py (magic_run): Added new -d option, to run
1130 * IPython/Magic.py (magic_run): Added new -d option, to run
1126 scripts under the control of the python pdb debugger. Note that
1131 scripts under the control of the python pdb debugger. Note that
1127 this required changing the %prun option -d to -D, to avoid a clash
1132 this required changing the %prun option -d to -D, to avoid a clash
1128 (since %run must pass options to %prun, and getopt is too dumb to
1133 (since %run must pass options to %prun, and getopt is too dumb to
1129 handle options with string values with embedded spaces). Thanks
1134 handle options with string values with embedded spaces). Thanks
1130 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1135 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1131 (magic_who_ls): added type matching to %who and %whos, so that one
1136 (magic_who_ls): added type matching to %who and %whos, so that one
1132 can filter their output to only include variables of certain
1137 can filter their output to only include variables of certain
1133 types. Another suggestion by Matthew.
1138 types. Another suggestion by Matthew.
1134 (magic_whos): Added memory summaries in kb and Mb for arrays.
1139 (magic_whos): Added memory summaries in kb and Mb for arrays.
1135 (magic_who): Improve formatting (break lines every 9 vars).
1140 (magic_who): Improve formatting (break lines every 9 vars).
1136
1141
1137 2004-11-28 Fernando Perez <fperez@colorado.edu>
1142 2004-11-28 Fernando Perez <fperez@colorado.edu>
1138
1143
1139 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1144 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1140 cache when empty lines were present.
1145 cache when empty lines were present.
1141
1146
1142 2004-11-24 Fernando Perez <fperez@colorado.edu>
1147 2004-11-24 Fernando Perez <fperez@colorado.edu>
1143
1148
1144 * IPython/usage.py (__doc__): document the re-activated threading
1149 * IPython/usage.py (__doc__): document the re-activated threading
1145 options for WX and GTK.
1150 options for WX and GTK.
1146
1151
1147 2004-11-23 Fernando Perez <fperez@colorado.edu>
1152 2004-11-23 Fernando Perez <fperez@colorado.edu>
1148
1153
1149 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1154 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1150 the -wthread and -gthread options, along with a new -tk one to try
1155 the -wthread and -gthread options, along with a new -tk one to try
1151 and coordinate Tk threading with wx/gtk. The tk support is very
1156 and coordinate Tk threading with wx/gtk. The tk support is very
1152 platform dependent, since it seems to require Tcl and Tk to be
1157 platform dependent, since it seems to require Tcl and Tk to be
1153 built with threads (Fedora1/2 appears NOT to have it, but in
1158 built with threads (Fedora1/2 appears NOT to have it, but in
1154 Prabhu's Debian boxes it works OK). But even with some Tk
1159 Prabhu's Debian boxes it works OK). But even with some Tk
1155 limitations, this is a great improvement.
1160 limitations, this is a great improvement.
1156
1161
1157 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1162 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1158 info in user prompts. Patch by Prabhu.
1163 info in user prompts. Patch by Prabhu.
1159
1164
1160 2004-11-18 Fernando Perez <fperez@colorado.edu>
1165 2004-11-18 Fernando Perez <fperez@colorado.edu>
1161
1166
1162 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1167 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1163 EOFErrors and bail, to avoid infinite loops if a non-terminating
1168 EOFErrors and bail, to avoid infinite loops if a non-terminating
1164 file is fed into ipython. Patch submitted in issue 19 by user,
1169 file is fed into ipython. Patch submitted in issue 19 by user,
1165 many thanks.
1170 many thanks.
1166
1171
1167 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1172 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1168 autoquote/parens in continuation prompts, which can cause lots of
1173 autoquote/parens in continuation prompts, which can cause lots of
1169 problems. Closes roundup issue 20.
1174 problems. Closes roundup issue 20.
1170
1175
1171 2004-11-17 Fernando Perez <fperez@colorado.edu>
1176 2004-11-17 Fernando Perez <fperez@colorado.edu>
1172
1177
1173 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1178 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1174 reported as debian bug #280505. I'm not sure my local changelog
1179 reported as debian bug #280505. I'm not sure my local changelog
1175 entry has the proper debian format (Jack?).
1180 entry has the proper debian format (Jack?).
1176
1181
1177 2004-11-08 *** Released version 0.6.4
1182 2004-11-08 *** Released version 0.6.4
1178
1183
1179 2004-11-08 Fernando Perez <fperez@colorado.edu>
1184 2004-11-08 Fernando Perez <fperez@colorado.edu>
1180
1185
1181 * IPython/iplib.py (init_readline): Fix exit message for Windows
1186 * IPython/iplib.py (init_readline): Fix exit message for Windows
1182 when readline is active. Thanks to a report by Eric Jones
1187 when readline is active. Thanks to a report by Eric Jones
1183 <eric-AT-enthought.com>.
1188 <eric-AT-enthought.com>.
1184
1189
1185 2004-11-07 Fernando Perez <fperez@colorado.edu>
1190 2004-11-07 Fernando Perez <fperez@colorado.edu>
1186
1191
1187 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1192 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1188 sometimes seen by win2k/cygwin users.
1193 sometimes seen by win2k/cygwin users.
1189
1194
1190 2004-11-06 Fernando Perez <fperez@colorado.edu>
1195 2004-11-06 Fernando Perez <fperez@colorado.edu>
1191
1196
1192 * IPython/iplib.py (interact): Change the handling of %Exit from
1197 * IPython/iplib.py (interact): Change the handling of %Exit from
1193 trying to propagate a SystemExit to an internal ipython flag.
1198 trying to propagate a SystemExit to an internal ipython flag.
1194 This is less elegant than using Python's exception mechanism, but
1199 This is less elegant than using Python's exception mechanism, but
1195 I can't get that to work reliably with threads, so under -pylab
1200 I can't get that to work reliably with threads, so under -pylab
1196 %Exit was hanging IPython. Cross-thread exception handling is
1201 %Exit was hanging IPython. Cross-thread exception handling is
1197 really a bitch. Thaks to a bug report by Stephen Walton
1202 really a bitch. Thaks to a bug report by Stephen Walton
1198 <stephen.walton-AT-csun.edu>.
1203 <stephen.walton-AT-csun.edu>.
1199
1204
1200 2004-11-04 Fernando Perez <fperez@colorado.edu>
1205 2004-11-04 Fernando Perez <fperez@colorado.edu>
1201
1206
1202 * IPython/iplib.py (raw_input_original): store a pointer to the
1207 * IPython/iplib.py (raw_input_original): store a pointer to the
1203 true raw_input to harden against code which can modify it
1208 true raw_input to harden against code which can modify it
1204 (wx.py.PyShell does this and would otherwise crash ipython).
1209 (wx.py.PyShell does this and would otherwise crash ipython).
1205 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1210 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1206
1211
1207 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1212 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1208 Ctrl-C problem, which does not mess up the input line.
1213 Ctrl-C problem, which does not mess up the input line.
1209
1214
1210 2004-11-03 Fernando Perez <fperez@colorado.edu>
1215 2004-11-03 Fernando Perez <fperez@colorado.edu>
1211
1216
1212 * IPython/Release.py: Changed licensing to BSD, in all files.
1217 * IPython/Release.py: Changed licensing to BSD, in all files.
1213 (name): lowercase name for tarball/RPM release.
1218 (name): lowercase name for tarball/RPM release.
1214
1219
1215 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1220 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1216 use throughout ipython.
1221 use throughout ipython.
1217
1222
1218 * IPython/Magic.py (Magic._ofind): Switch to using the new
1223 * IPython/Magic.py (Magic._ofind): Switch to using the new
1219 OInspect.getdoc() function.
1224 OInspect.getdoc() function.
1220
1225
1221 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1226 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1222 of the line currently being canceled via Ctrl-C. It's extremely
1227 of the line currently being canceled via Ctrl-C. It's extremely
1223 ugly, but I don't know how to do it better (the problem is one of
1228 ugly, but I don't know how to do it better (the problem is one of
1224 handling cross-thread exceptions).
1229 handling cross-thread exceptions).
1225
1230
1226 2004-10-28 Fernando Perez <fperez@colorado.edu>
1231 2004-10-28 Fernando Perez <fperez@colorado.edu>
1227
1232
1228 * IPython/Shell.py (signal_handler): add signal handlers to trap
1233 * IPython/Shell.py (signal_handler): add signal handlers to trap
1229 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1234 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1230 report by Francesc Alted.
1235 report by Francesc Alted.
1231
1236
1232 2004-10-21 Fernando Perez <fperez@colorado.edu>
1237 2004-10-21 Fernando Perez <fperez@colorado.edu>
1233
1238
1234 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1239 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1235 to % for pysh syntax extensions.
1240 to % for pysh syntax extensions.
1236
1241
1237 2004-10-09 Fernando Perez <fperez@colorado.edu>
1242 2004-10-09 Fernando Perez <fperez@colorado.edu>
1238
1243
1239 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1244 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1240 arrays to print a more useful summary, without calling str(arr).
1245 arrays to print a more useful summary, without calling str(arr).
1241 This avoids the problem of extremely lengthy computations which
1246 This avoids the problem of extremely lengthy computations which
1242 occur if arr is large, and appear to the user as a system lockup
1247 occur if arr is large, and appear to the user as a system lockup
1243 with 100% cpu activity. After a suggestion by Kristian Sandberg
1248 with 100% cpu activity. After a suggestion by Kristian Sandberg
1244 <Kristian.Sandberg@colorado.edu>.
1249 <Kristian.Sandberg@colorado.edu>.
1245 (Magic.__init__): fix bug in global magic escapes not being
1250 (Magic.__init__): fix bug in global magic escapes not being
1246 correctly set.
1251 correctly set.
1247
1252
1248 2004-10-08 Fernando Perez <fperez@colorado.edu>
1253 2004-10-08 Fernando Perez <fperez@colorado.edu>
1249
1254
1250 * IPython/Magic.py (__license__): change to absolute imports of
1255 * IPython/Magic.py (__license__): change to absolute imports of
1251 ipython's own internal packages, to start adapting to the absolute
1256 ipython's own internal packages, to start adapting to the absolute
1252 import requirement of PEP-328.
1257 import requirement of PEP-328.
1253
1258
1254 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1259 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1255 files, and standardize author/license marks through the Release
1260 files, and standardize author/license marks through the Release
1256 module instead of having per/file stuff (except for files with
1261 module instead of having per/file stuff (except for files with
1257 particular licenses, like the MIT/PSF-licensed codes).
1262 particular licenses, like the MIT/PSF-licensed codes).
1258
1263
1259 * IPython/Debugger.py: remove dead code for python 2.1
1264 * IPython/Debugger.py: remove dead code for python 2.1
1260
1265
1261 2004-10-04 Fernando Perez <fperez@colorado.edu>
1266 2004-10-04 Fernando Perez <fperez@colorado.edu>
1262
1267
1263 * IPython/iplib.py (ipmagic): New function for accessing magics
1268 * IPython/iplib.py (ipmagic): New function for accessing magics
1264 via a normal python function call.
1269 via a normal python function call.
1265
1270
1266 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1271 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1267 from '@' to '%', to accomodate the new @decorator syntax of python
1272 from '@' to '%', to accomodate the new @decorator syntax of python
1268 2.4.
1273 2.4.
1269
1274
1270 2004-09-29 Fernando Perez <fperez@colorado.edu>
1275 2004-09-29 Fernando Perez <fperez@colorado.edu>
1271
1276
1272 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1277 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1273 matplotlib.use to prevent running scripts which try to switch
1278 matplotlib.use to prevent running scripts which try to switch
1274 interactive backends from within ipython. This will just crash
1279 interactive backends from within ipython. This will just crash
1275 the python interpreter, so we can't allow it (but a detailed error
1280 the python interpreter, so we can't allow it (but a detailed error
1276 is given to the user).
1281 is given to the user).
1277
1282
1278 2004-09-28 Fernando Perez <fperez@colorado.edu>
1283 2004-09-28 Fernando Perez <fperez@colorado.edu>
1279
1284
1280 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1285 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1281 matplotlib-related fixes so that using @run with non-matplotlib
1286 matplotlib-related fixes so that using @run with non-matplotlib
1282 scripts doesn't pop up spurious plot windows. This requires
1287 scripts doesn't pop up spurious plot windows. This requires
1283 matplotlib >= 0.63, where I had to make some changes as well.
1288 matplotlib >= 0.63, where I had to make some changes as well.
1284
1289
1285 * IPython/ipmaker.py (make_IPython): update version requirement to
1290 * IPython/ipmaker.py (make_IPython): update version requirement to
1286 python 2.2.
1291 python 2.2.
1287
1292
1288 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1293 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1289 banner arg for embedded customization.
1294 banner arg for embedded customization.
1290
1295
1291 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1296 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1292 explicit uses of __IP as the IPython's instance name. Now things
1297 explicit uses of __IP as the IPython's instance name. Now things
1293 are properly handled via the shell.name value. The actual code
1298 are properly handled via the shell.name value. The actual code
1294 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1299 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1295 is much better than before. I'll clean things completely when the
1300 is much better than before. I'll clean things completely when the
1296 magic stuff gets a real overhaul.
1301 magic stuff gets a real overhaul.
1297
1302
1298 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1303 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1299 minor changes to debian dir.
1304 minor changes to debian dir.
1300
1305
1301 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1306 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1302 pointer to the shell itself in the interactive namespace even when
1307 pointer to the shell itself in the interactive namespace even when
1303 a user-supplied dict is provided. This is needed for embedding
1308 a user-supplied dict is provided. This is needed for embedding
1304 purposes (found by tests with Michel Sanner).
1309 purposes (found by tests with Michel Sanner).
1305
1310
1306 2004-09-27 Fernando Perez <fperez@colorado.edu>
1311 2004-09-27 Fernando Perez <fperez@colorado.edu>
1307
1312
1308 * IPython/UserConfig/ipythonrc: remove []{} from
1313 * IPython/UserConfig/ipythonrc: remove []{} from
1309 readline_remove_delims, so that things like [modname.<TAB> do
1314 readline_remove_delims, so that things like [modname.<TAB> do
1310 proper completion. This disables [].TAB, but that's a less common
1315 proper completion. This disables [].TAB, but that's a less common
1311 case than module names in list comprehensions, for example.
1316 case than module names in list comprehensions, for example.
1312 Thanks to a report by Andrea Riciputi.
1317 Thanks to a report by Andrea Riciputi.
1313
1318
1314 2004-09-09 Fernando Perez <fperez@colorado.edu>
1319 2004-09-09 Fernando Perez <fperez@colorado.edu>
1315
1320
1316 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1321 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1317 blocking problems in win32 and osx. Fix by John.
1322 blocking problems in win32 and osx. Fix by John.
1318
1323
1319 2004-09-08 Fernando Perez <fperez@colorado.edu>
1324 2004-09-08 Fernando Perez <fperez@colorado.edu>
1320
1325
1321 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1326 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1322 for Win32 and OSX. Fix by John Hunter.
1327 for Win32 and OSX. Fix by John Hunter.
1323
1328
1324 2004-08-30 *** Released version 0.6.3
1329 2004-08-30 *** Released version 0.6.3
1325
1330
1326 2004-08-30 Fernando Perez <fperez@colorado.edu>
1331 2004-08-30 Fernando Perez <fperez@colorado.edu>
1327
1332
1328 * setup.py (isfile): Add manpages to list of dependent files to be
1333 * setup.py (isfile): Add manpages to list of dependent files to be
1329 updated.
1334 updated.
1330
1335
1331 2004-08-27 Fernando Perez <fperez@colorado.edu>
1336 2004-08-27 Fernando Perez <fperez@colorado.edu>
1332
1337
1333 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1338 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1334 for now. They don't really work with standalone WX/GTK code
1339 for now. They don't really work with standalone WX/GTK code
1335 (though matplotlib IS working fine with both of those backends).
1340 (though matplotlib IS working fine with both of those backends).
1336 This will neeed much more testing. I disabled most things with
1341 This will neeed much more testing. I disabled most things with
1337 comments, so turning it back on later should be pretty easy.
1342 comments, so turning it back on later should be pretty easy.
1338
1343
1339 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1344 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1340 autocalling of expressions like r'foo', by modifying the line
1345 autocalling of expressions like r'foo', by modifying the line
1341 split regexp. Closes
1346 split regexp. Closes
1342 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1347 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1343 Riley <ipythonbugs-AT-sabi.net>.
1348 Riley <ipythonbugs-AT-sabi.net>.
1344 (InteractiveShell.mainloop): honor --nobanner with banner
1349 (InteractiveShell.mainloop): honor --nobanner with banner
1345 extensions.
1350 extensions.
1346
1351
1347 * IPython/Shell.py: Significant refactoring of all classes, so
1352 * IPython/Shell.py: Significant refactoring of all classes, so
1348 that we can really support ALL matplotlib backends and threading
1353 that we can really support ALL matplotlib backends and threading
1349 models (John spotted a bug with Tk which required this). Now we
1354 models (John spotted a bug with Tk which required this). Now we
1350 should support single-threaded, WX-threads and GTK-threads, both
1355 should support single-threaded, WX-threads and GTK-threads, both
1351 for generic code and for matplotlib.
1356 for generic code and for matplotlib.
1352
1357
1353 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1358 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1354 -pylab, to simplify things for users. Will also remove the pylab
1359 -pylab, to simplify things for users. Will also remove the pylab
1355 profile, since now all of matplotlib configuration is directly
1360 profile, since now all of matplotlib configuration is directly
1356 handled here. This also reduces startup time.
1361 handled here. This also reduces startup time.
1357
1362
1358 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1363 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1359 shell wasn't being correctly called. Also in IPShellWX.
1364 shell wasn't being correctly called. Also in IPShellWX.
1360
1365
1361 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1366 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1362 fine-tune banner.
1367 fine-tune banner.
1363
1368
1364 * IPython/numutils.py (spike): Deprecate these spike functions,
1369 * IPython/numutils.py (spike): Deprecate these spike functions,
1365 delete (long deprecated) gnuplot_exec handler.
1370 delete (long deprecated) gnuplot_exec handler.
1366
1371
1367 2004-08-26 Fernando Perez <fperez@colorado.edu>
1372 2004-08-26 Fernando Perez <fperez@colorado.edu>
1368
1373
1369 * ipython.1: Update for threading options, plus some others which
1374 * ipython.1: Update for threading options, plus some others which
1370 were missing.
1375 were missing.
1371
1376
1372 * IPython/ipmaker.py (__call__): Added -wthread option for
1377 * IPython/ipmaker.py (__call__): Added -wthread option for
1373 wxpython thread handling. Make sure threading options are only
1378 wxpython thread handling. Make sure threading options are only
1374 valid at the command line.
1379 valid at the command line.
1375
1380
1376 * scripts/ipython: moved shell selection into a factory function
1381 * scripts/ipython: moved shell selection into a factory function
1377 in Shell.py, to keep the starter script to a minimum.
1382 in Shell.py, to keep the starter script to a minimum.
1378
1383
1379 2004-08-25 Fernando Perez <fperez@colorado.edu>
1384 2004-08-25 Fernando Perez <fperez@colorado.edu>
1380
1385
1381 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1386 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1382 John. Along with some recent changes he made to matplotlib, the
1387 John. Along with some recent changes he made to matplotlib, the
1383 next versions of both systems should work very well together.
1388 next versions of both systems should work very well together.
1384
1389
1385 2004-08-24 Fernando Perez <fperez@colorado.edu>
1390 2004-08-24 Fernando Perez <fperez@colorado.edu>
1386
1391
1387 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1392 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1388 tried to switch the profiling to using hotshot, but I'm getting
1393 tried to switch the profiling to using hotshot, but I'm getting
1389 strange errors from prof.runctx() there. I may be misreading the
1394 strange errors from prof.runctx() there. I may be misreading the
1390 docs, but it looks weird. For now the profiling code will
1395 docs, but it looks weird. For now the profiling code will
1391 continue to use the standard profiler.
1396 continue to use the standard profiler.
1392
1397
1393 2004-08-23 Fernando Perez <fperez@colorado.edu>
1398 2004-08-23 Fernando Perez <fperez@colorado.edu>
1394
1399
1395 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1400 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1396 threaded shell, by John Hunter. It's not quite ready yet, but
1401 threaded shell, by John Hunter. It's not quite ready yet, but
1397 close.
1402 close.
1398
1403
1399 2004-08-22 Fernando Perez <fperez@colorado.edu>
1404 2004-08-22 Fernando Perez <fperez@colorado.edu>
1400
1405
1401 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1406 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1402 in Magic and ultraTB.
1407 in Magic and ultraTB.
1403
1408
1404 * ipython.1: document threading options in manpage.
1409 * ipython.1: document threading options in manpage.
1405
1410
1406 * scripts/ipython: Changed name of -thread option to -gthread,
1411 * scripts/ipython: Changed name of -thread option to -gthread,
1407 since this is GTK specific. I want to leave the door open for a
1412 since this is GTK specific. I want to leave the door open for a
1408 -wthread option for WX, which will most likely be necessary. This
1413 -wthread option for WX, which will most likely be necessary. This
1409 change affects usage and ipmaker as well.
1414 change affects usage and ipmaker as well.
1410
1415
1411 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1416 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1412 handle the matplotlib shell issues. Code by John Hunter
1417 handle the matplotlib shell issues. Code by John Hunter
1413 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1418 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1414 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1419 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1415 broken (and disabled for end users) for now, but it puts the
1420 broken (and disabled for end users) for now, but it puts the
1416 infrastructure in place.
1421 infrastructure in place.
1417
1422
1418 2004-08-21 Fernando Perez <fperez@colorado.edu>
1423 2004-08-21 Fernando Perez <fperez@colorado.edu>
1419
1424
1420 * ipythonrc-pylab: Add matplotlib support.
1425 * ipythonrc-pylab: Add matplotlib support.
1421
1426
1422 * matplotlib_config.py: new files for matplotlib support, part of
1427 * matplotlib_config.py: new files for matplotlib support, part of
1423 the pylab profile.
1428 the pylab profile.
1424
1429
1425 * IPython/usage.py (__doc__): documented the threading options.
1430 * IPython/usage.py (__doc__): documented the threading options.
1426
1431
1427 2004-08-20 Fernando Perez <fperez@colorado.edu>
1432 2004-08-20 Fernando Perez <fperez@colorado.edu>
1428
1433
1429 * ipython: Modified the main calling routine to handle the -thread
1434 * ipython: Modified the main calling routine to handle the -thread
1430 and -mpthread options. This needs to be done as a top-level hack,
1435 and -mpthread options. This needs to be done as a top-level hack,
1431 because it determines which class to instantiate for IPython
1436 because it determines which class to instantiate for IPython
1432 itself.
1437 itself.
1433
1438
1434 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1439 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1435 classes to support multithreaded GTK operation without blocking,
1440 classes to support multithreaded GTK operation without blocking,
1436 and matplotlib with all backends. This is a lot of still very
1441 and matplotlib with all backends. This is a lot of still very
1437 experimental code, and threads are tricky. So it may still have a
1442 experimental code, and threads are tricky. So it may still have a
1438 few rough edges... This code owes a lot to
1443 few rough edges... This code owes a lot to
1439 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1444 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1440 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1445 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1441 to John Hunter for all the matplotlib work.
1446 to John Hunter for all the matplotlib work.
1442
1447
1443 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1448 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1444 options for gtk thread and matplotlib support.
1449 options for gtk thread and matplotlib support.
1445
1450
1446 2004-08-16 Fernando Perez <fperez@colorado.edu>
1451 2004-08-16 Fernando Perez <fperez@colorado.edu>
1447
1452
1448 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1453 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1449 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1454 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1450 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1455 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1451
1456
1452 2004-08-11 Fernando Perez <fperez@colorado.edu>
1457 2004-08-11 Fernando Perez <fperez@colorado.edu>
1453
1458
1454 * setup.py (isfile): Fix build so documentation gets updated for
1459 * setup.py (isfile): Fix build so documentation gets updated for
1455 rpms (it was only done for .tgz builds).
1460 rpms (it was only done for .tgz builds).
1456
1461
1457 2004-08-10 Fernando Perez <fperez@colorado.edu>
1462 2004-08-10 Fernando Perez <fperez@colorado.edu>
1458
1463
1459 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1464 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1460
1465
1461 * iplib.py : Silence syntax error exceptions in tab-completion.
1466 * iplib.py : Silence syntax error exceptions in tab-completion.
1462
1467
1463 2004-08-05 Fernando Perez <fperez@colorado.edu>
1468 2004-08-05 Fernando Perez <fperez@colorado.edu>
1464
1469
1465 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1470 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1466 'color off' mark for continuation prompts. This was causing long
1471 'color off' mark for continuation prompts. This was causing long
1467 continuation lines to mis-wrap.
1472 continuation lines to mis-wrap.
1468
1473
1469 2004-08-01 Fernando Perez <fperez@colorado.edu>
1474 2004-08-01 Fernando Perez <fperez@colorado.edu>
1470
1475
1471 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1476 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1472 for building ipython to be a parameter. All this is necessary
1477 for building ipython to be a parameter. All this is necessary
1473 right now to have a multithreaded version, but this insane
1478 right now to have a multithreaded version, but this insane
1474 non-design will be cleaned up soon. For now, it's a hack that
1479 non-design will be cleaned up soon. For now, it's a hack that
1475 works.
1480 works.
1476
1481
1477 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1482 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1478 args in various places. No bugs so far, but it's a dangerous
1483 args in various places. No bugs so far, but it's a dangerous
1479 practice.
1484 practice.
1480
1485
1481 2004-07-31 Fernando Perez <fperez@colorado.edu>
1486 2004-07-31 Fernando Perez <fperez@colorado.edu>
1482
1487
1483 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1488 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1484 fix completion of files with dots in their names under most
1489 fix completion of files with dots in their names under most
1485 profiles (pysh was OK because the completion order is different).
1490 profiles (pysh was OK because the completion order is different).
1486
1491
1487 2004-07-27 Fernando Perez <fperez@colorado.edu>
1492 2004-07-27 Fernando Perez <fperez@colorado.edu>
1488
1493
1489 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1494 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1490 keywords manually, b/c the one in keyword.py was removed in python
1495 keywords manually, b/c the one in keyword.py was removed in python
1491 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1496 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1492 This is NOT a bug under python 2.3 and earlier.
1497 This is NOT a bug under python 2.3 and earlier.
1493
1498
1494 2004-07-26 Fernando Perez <fperez@colorado.edu>
1499 2004-07-26 Fernando Perez <fperez@colorado.edu>
1495
1500
1496 * IPython/ultraTB.py (VerboseTB.text): Add another
1501 * IPython/ultraTB.py (VerboseTB.text): Add another
1497 linecache.checkcache() call to try to prevent inspect.py from
1502 linecache.checkcache() call to try to prevent inspect.py from
1498 crashing under python 2.3. I think this fixes
1503 crashing under python 2.3. I think this fixes
1499 http://www.scipy.net/roundup/ipython/issue17.
1504 http://www.scipy.net/roundup/ipython/issue17.
1500
1505
1501 2004-07-26 *** Released version 0.6.2
1506 2004-07-26 *** Released version 0.6.2
1502
1507
1503 2004-07-26 Fernando Perez <fperez@colorado.edu>
1508 2004-07-26 Fernando Perez <fperez@colorado.edu>
1504
1509
1505 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1510 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1506 fail for any number.
1511 fail for any number.
1507 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1512 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1508 empty bookmarks.
1513 empty bookmarks.
1509
1514
1510 2004-07-26 *** Released version 0.6.1
1515 2004-07-26 *** Released version 0.6.1
1511
1516
1512 2004-07-26 Fernando Perez <fperez@colorado.edu>
1517 2004-07-26 Fernando Perez <fperez@colorado.edu>
1513
1518
1514 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
1519 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
1515
1520
1516 * IPython/iplib.py (protect_filename): Applied Ville's patch for
1521 * IPython/iplib.py (protect_filename): Applied Ville's patch for
1517 escaping '()[]{}' in filenames.
1522 escaping '()[]{}' in filenames.
1518
1523
1519 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
1524 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
1520 Python 2.2 users who lack a proper shlex.split.
1525 Python 2.2 users who lack a proper shlex.split.
1521
1526
1522 2004-07-19 Fernando Perez <fperez@colorado.edu>
1527 2004-07-19 Fernando Perez <fperez@colorado.edu>
1523
1528
1524 * IPython/iplib.py (InteractiveShell.init_readline): Add support
1529 * IPython/iplib.py (InteractiveShell.init_readline): Add support
1525 for reading readline's init file. I follow the normal chain:
1530 for reading readline's init file. I follow the normal chain:
1526 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
1531 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
1527 report by Mike Heeter. This closes
1532 report by Mike Heeter. This closes
1528 http://www.scipy.net/roundup/ipython/issue16.
1533 http://www.scipy.net/roundup/ipython/issue16.
1529
1534
1530 2004-07-18 Fernando Perez <fperez@colorado.edu>
1535 2004-07-18 Fernando Perez <fperez@colorado.edu>
1531
1536
1532 * IPython/iplib.py (__init__): Add better handling of '\' under
1537 * IPython/iplib.py (__init__): Add better handling of '\' under
1533 Win32 for filenames. After a patch by Ville.
1538 Win32 for filenames. After a patch by Ville.
1534
1539
1535 2004-07-17 Fernando Perez <fperez@colorado.edu>
1540 2004-07-17 Fernando Perez <fperez@colorado.edu>
1536
1541
1537 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
1542 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
1538 autocalling would be triggered for 'foo is bar' if foo is
1543 autocalling would be triggered for 'foo is bar' if foo is
1539 callable. I also cleaned up the autocall detection code to use a
1544 callable. I also cleaned up the autocall detection code to use a
1540 regexp, which is faster. Bug reported by Alexander Schmolck.
1545 regexp, which is faster. Bug reported by Alexander Schmolck.
1541
1546
1542 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
1547 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
1543 '?' in them would confuse the help system. Reported by Alex
1548 '?' in them would confuse the help system. Reported by Alex
1544 Schmolck.
1549 Schmolck.
1545
1550
1546 2004-07-16 Fernando Perez <fperez@colorado.edu>
1551 2004-07-16 Fernando Perez <fperez@colorado.edu>
1547
1552
1548 * IPython/GnuplotInteractive.py (__all__): added plot2.
1553 * IPython/GnuplotInteractive.py (__all__): added plot2.
1549
1554
1550 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
1555 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
1551 plotting dictionaries, lists or tuples of 1d arrays.
1556 plotting dictionaries, lists or tuples of 1d arrays.
1552
1557
1553 * IPython/Magic.py (Magic.magic_hist): small clenaups and
1558 * IPython/Magic.py (Magic.magic_hist): small clenaups and
1554 optimizations.
1559 optimizations.
1555
1560
1556 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
1561 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
1557 the information which was there from Janko's original IPP code:
1562 the information which was there from Janko's original IPP code:
1558
1563
1559 03.05.99 20:53 porto.ifm.uni-kiel.de
1564 03.05.99 20:53 porto.ifm.uni-kiel.de
1560 --Started changelog.
1565 --Started changelog.
1561 --make clear do what it say it does
1566 --make clear do what it say it does
1562 --added pretty output of lines from inputcache
1567 --added pretty output of lines from inputcache
1563 --Made Logger a mixin class, simplifies handling of switches
1568 --Made Logger a mixin class, simplifies handling of switches
1564 --Added own completer class. .string<TAB> expands to last history
1569 --Added own completer class. .string<TAB> expands to last history
1565 line which starts with string. The new expansion is also present
1570 line which starts with string. The new expansion is also present
1566 with Ctrl-r from the readline library. But this shows, who this
1571 with Ctrl-r from the readline library. But this shows, who this
1567 can be done for other cases.
1572 can be done for other cases.
1568 --Added convention that all shell functions should accept a
1573 --Added convention that all shell functions should accept a
1569 parameter_string This opens the door for different behaviour for
1574 parameter_string This opens the door for different behaviour for
1570 each function. @cd is a good example of this.
1575 each function. @cd is a good example of this.
1571
1576
1572 04.05.99 12:12 porto.ifm.uni-kiel.de
1577 04.05.99 12:12 porto.ifm.uni-kiel.de
1573 --added logfile rotation
1578 --added logfile rotation
1574 --added new mainloop method which freezes first the namespace
1579 --added new mainloop method which freezes first the namespace
1575
1580
1576 07.05.99 21:24 porto.ifm.uni-kiel.de
1581 07.05.99 21:24 porto.ifm.uni-kiel.de
1577 --added the docreader classes. Now there is a help system.
1582 --added the docreader classes. Now there is a help system.
1578 -This is only a first try. Currently it's not easy to put new
1583 -This is only a first try. Currently it's not easy to put new
1579 stuff in the indices. But this is the way to go. Info would be
1584 stuff in the indices. But this is the way to go. Info would be
1580 better, but HTML is every where and not everybody has an info
1585 better, but HTML is every where and not everybody has an info
1581 system installed and it's not so easy to change html-docs to info.
1586 system installed and it's not so easy to change html-docs to info.
1582 --added global logfile option
1587 --added global logfile option
1583 --there is now a hook for object inspection method pinfo needs to
1588 --there is now a hook for object inspection method pinfo needs to
1584 be provided for this. Can be reached by two '??'.
1589 be provided for this. Can be reached by two '??'.
1585
1590
1586 08.05.99 20:51 porto.ifm.uni-kiel.de
1591 08.05.99 20:51 porto.ifm.uni-kiel.de
1587 --added a README
1592 --added a README
1588 --bug in rc file. Something has changed so functions in the rc
1593 --bug in rc file. Something has changed so functions in the rc
1589 file need to reference the shell and not self. Not clear if it's a
1594 file need to reference the shell and not self. Not clear if it's a
1590 bug or feature.
1595 bug or feature.
1591 --changed rc file for new behavior
1596 --changed rc file for new behavior
1592
1597
1593 2004-07-15 Fernando Perez <fperez@colorado.edu>
1598 2004-07-15 Fernando Perez <fperez@colorado.edu>
1594
1599
1595 * IPython/Logger.py (Logger.log): fixed recent bug where the input
1600 * IPython/Logger.py (Logger.log): fixed recent bug where the input
1596 cache was falling out of sync in bizarre manners when multi-line
1601 cache was falling out of sync in bizarre manners when multi-line
1597 input was present. Minor optimizations and cleanup.
1602 input was present. Minor optimizations and cleanup.
1598
1603
1599 (Logger): Remove old Changelog info for cleanup. This is the
1604 (Logger): Remove old Changelog info for cleanup. This is the
1600 information which was there from Janko's original code:
1605 information which was there from Janko's original code:
1601
1606
1602 Changes to Logger: - made the default log filename a parameter
1607 Changes to Logger: - made the default log filename a parameter
1603
1608
1604 - put a check for lines beginning with !@? in log(). Needed
1609 - put a check for lines beginning with !@? in log(). Needed
1605 (even if the handlers properly log their lines) for mid-session
1610 (even if the handlers properly log their lines) for mid-session
1606 logging activation to work properly. Without this, lines logged
1611 logging activation to work properly. Without this, lines logged
1607 in mid session, which get read from the cache, would end up
1612 in mid session, which get read from the cache, would end up
1608 'bare' (with !@? in the open) in the log. Now they are caught
1613 'bare' (with !@? in the open) in the log. Now they are caught
1609 and prepended with a #.
1614 and prepended with a #.
1610
1615
1611 * IPython/iplib.py (InteractiveShell.init_readline): added check
1616 * IPython/iplib.py (InteractiveShell.init_readline): added check
1612 in case MagicCompleter fails to be defined, so we don't crash.
1617 in case MagicCompleter fails to be defined, so we don't crash.
1613
1618
1614 2004-07-13 Fernando Perez <fperez@colorado.edu>
1619 2004-07-13 Fernando Perez <fperez@colorado.edu>
1615
1620
1616 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
1621 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
1617 of EPS if the requested filename ends in '.eps'.
1622 of EPS if the requested filename ends in '.eps'.
1618
1623
1619 2004-07-04 Fernando Perez <fperez@colorado.edu>
1624 2004-07-04 Fernando Perez <fperez@colorado.edu>
1620
1625
1621 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
1626 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
1622 escaping of quotes when calling the shell.
1627 escaping of quotes when calling the shell.
1623
1628
1624 2004-07-02 Fernando Perez <fperez@colorado.edu>
1629 2004-07-02 Fernando Perez <fperez@colorado.edu>
1625
1630
1626 * IPython/Prompts.py (CachedOutput.update): Fix problem with
1631 * IPython/Prompts.py (CachedOutput.update): Fix problem with
1627 gettext not working because we were clobbering '_'. Fixes
1632 gettext not working because we were clobbering '_'. Fixes
1628 http://www.scipy.net/roundup/ipython/issue6.
1633 http://www.scipy.net/roundup/ipython/issue6.
1629
1634
1630 2004-07-01 Fernando Perez <fperez@colorado.edu>
1635 2004-07-01 Fernando Perez <fperez@colorado.edu>
1631
1636
1632 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
1637 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
1633 into @cd. Patch by Ville.
1638 into @cd. Patch by Ville.
1634
1639
1635 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1640 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1636 new function to store things after ipmaker runs. Patch by Ville.
1641 new function to store things after ipmaker runs. Patch by Ville.
1637 Eventually this will go away once ipmaker is removed and the class
1642 Eventually this will go away once ipmaker is removed and the class
1638 gets cleaned up, but for now it's ok. Key functionality here is
1643 gets cleaned up, but for now it's ok. Key functionality here is
1639 the addition of the persistent storage mechanism, a dict for
1644 the addition of the persistent storage mechanism, a dict for
1640 keeping data across sessions (for now just bookmarks, but more can
1645 keeping data across sessions (for now just bookmarks, but more can
1641 be implemented later).
1646 be implemented later).
1642
1647
1643 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
1648 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
1644 persistent across sections. Patch by Ville, I modified it
1649 persistent across sections. Patch by Ville, I modified it
1645 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
1650 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
1646 added a '-l' option to list all bookmarks.
1651 added a '-l' option to list all bookmarks.
1647
1652
1648 * IPython/iplib.py (InteractiveShell.atexit_operations): new
1653 * IPython/iplib.py (InteractiveShell.atexit_operations): new
1649 center for cleanup. Registered with atexit.register(). I moved
1654 center for cleanup. Registered with atexit.register(). I moved
1650 here the old exit_cleanup(). After a patch by Ville.
1655 here the old exit_cleanup(). After a patch by Ville.
1651
1656
1652 * IPython/Magic.py (get_py_filename): added '~' to the accepted
1657 * IPython/Magic.py (get_py_filename): added '~' to the accepted
1653 characters in the hacked shlex_split for python 2.2.
1658 characters in the hacked shlex_split for python 2.2.
1654
1659
1655 * IPython/iplib.py (file_matches): more fixes to filenames with
1660 * IPython/iplib.py (file_matches): more fixes to filenames with
1656 whitespace in them. It's not perfect, but limitations in python's
1661 whitespace in them. It's not perfect, but limitations in python's
1657 readline make it impossible to go further.
1662 readline make it impossible to go further.
1658
1663
1659 2004-06-29 Fernando Perez <fperez@colorado.edu>
1664 2004-06-29 Fernando Perez <fperez@colorado.edu>
1660
1665
1661 * IPython/iplib.py (file_matches): escape whitespace correctly in
1666 * IPython/iplib.py (file_matches): escape whitespace correctly in
1662 filename completions. Bug reported by Ville.
1667 filename completions. Bug reported by Ville.
1663
1668
1664 2004-06-28 Fernando Perez <fperez@colorado.edu>
1669 2004-06-28 Fernando Perez <fperez@colorado.edu>
1665
1670
1666 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
1671 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
1667 the history file will be called 'history-PROFNAME' (or just
1672 the history file will be called 'history-PROFNAME' (or just
1668 'history' if no profile is loaded). I was getting annoyed at
1673 'history' if no profile is loaded). I was getting annoyed at
1669 getting my Numerical work history clobbered by pysh sessions.
1674 getting my Numerical work history clobbered by pysh sessions.
1670
1675
1671 * IPython/iplib.py (InteractiveShell.__init__): Internal
1676 * IPython/iplib.py (InteractiveShell.__init__): Internal
1672 getoutputerror() function so that we can honor the system_verbose
1677 getoutputerror() function so that we can honor the system_verbose
1673 flag for _all_ system calls. I also added escaping of #
1678 flag for _all_ system calls. I also added escaping of #
1674 characters here to avoid confusing Itpl.
1679 characters here to avoid confusing Itpl.
1675
1680
1676 * IPython/Magic.py (shlex_split): removed call to shell in
1681 * IPython/Magic.py (shlex_split): removed call to shell in
1677 parse_options and replaced it with shlex.split(). The annoying
1682 parse_options and replaced it with shlex.split(). The annoying
1678 part was that in Python 2.2, shlex.split() doesn't exist, so I had
1683 part was that in Python 2.2, shlex.split() doesn't exist, so I had
1679 to backport it from 2.3, with several frail hacks (the shlex
1684 to backport it from 2.3, with several frail hacks (the shlex
1680 module is rather limited in 2.2). Thanks to a suggestion by Ville
1685 module is rather limited in 2.2). Thanks to a suggestion by Ville
1681 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
1686 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
1682 problem.
1687 problem.
1683
1688
1684 (Magic.magic_system_verbose): new toggle to print the actual
1689 (Magic.magic_system_verbose): new toggle to print the actual
1685 system calls made by ipython. Mainly for debugging purposes.
1690 system calls made by ipython. Mainly for debugging purposes.
1686
1691
1687 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
1692 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
1688 doesn't support persistence. Reported (and fix suggested) by
1693 doesn't support persistence. Reported (and fix suggested) by
1689 Travis Caldwell <travis_caldwell2000@yahoo.com>.
1694 Travis Caldwell <travis_caldwell2000@yahoo.com>.
1690
1695
1691 2004-06-26 Fernando Perez <fperez@colorado.edu>
1696 2004-06-26 Fernando Perez <fperez@colorado.edu>
1692
1697
1693 * IPython/Logger.py (Logger.log): fix to handle correctly empty
1698 * IPython/Logger.py (Logger.log): fix to handle correctly empty
1694 continue prompts.
1699 continue prompts.
1695
1700
1696 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
1701 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
1697 function (basically a big docstring) and a few more things here to
1702 function (basically a big docstring) and a few more things here to
1698 speedup startup. pysh.py is now very lightweight. We want because
1703 speedup startup. pysh.py is now very lightweight. We want because
1699 it gets execfile'd, while InterpreterExec gets imported, so
1704 it gets execfile'd, while InterpreterExec gets imported, so
1700 byte-compilation saves time.
1705 byte-compilation saves time.
1701
1706
1702 2004-06-25 Fernando Perez <fperez@colorado.edu>
1707 2004-06-25 Fernando Perez <fperez@colorado.edu>
1703
1708
1704 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
1709 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
1705 -NUM', which was recently broken.
1710 -NUM', which was recently broken.
1706
1711
1707 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
1712 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
1708 in multi-line input (but not !!, which doesn't make sense there).
1713 in multi-line input (but not !!, which doesn't make sense there).
1709
1714
1710 * IPython/UserConfig/ipythonrc: made autoindent on by default.
1715 * IPython/UserConfig/ipythonrc: made autoindent on by default.
1711 It's just too useful, and people can turn it off in the less
1716 It's just too useful, and people can turn it off in the less
1712 common cases where it's a problem.
1717 common cases where it's a problem.
1713
1718
1714 2004-06-24 Fernando Perez <fperez@colorado.edu>
1719 2004-06-24 Fernando Perez <fperez@colorado.edu>
1715
1720
1716 * IPython/iplib.py (InteractiveShell._prefilter): big change -
1721 * IPython/iplib.py (InteractiveShell._prefilter): big change -
1717 special syntaxes (like alias calling) is now allied in multi-line
1722 special syntaxes (like alias calling) is now allied in multi-line
1718 input. This is still _very_ experimental, but it's necessary for
1723 input. This is still _very_ experimental, but it's necessary for
1719 efficient shell usage combining python looping syntax with system
1724 efficient shell usage combining python looping syntax with system
1720 calls. For now it's restricted to aliases, I don't think it
1725 calls. For now it's restricted to aliases, I don't think it
1721 really even makes sense to have this for magics.
1726 really even makes sense to have this for magics.
1722
1727
1723 2004-06-23 Fernando Perez <fperez@colorado.edu>
1728 2004-06-23 Fernando Perez <fperez@colorado.edu>
1724
1729
1725 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
1730 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
1726 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
1731 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
1727
1732
1728 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
1733 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
1729 extensions under Windows (after code sent by Gary Bishop). The
1734 extensions under Windows (after code sent by Gary Bishop). The
1730 extensions considered 'executable' are stored in IPython's rc
1735 extensions considered 'executable' are stored in IPython's rc
1731 structure as win_exec_ext.
1736 structure as win_exec_ext.
1732
1737
1733 * IPython/genutils.py (shell): new function, like system() but
1738 * IPython/genutils.py (shell): new function, like system() but
1734 without return value. Very useful for interactive shell work.
1739 without return value. Very useful for interactive shell work.
1735
1740
1736 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
1741 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
1737 delete aliases.
1742 delete aliases.
1738
1743
1739 * IPython/iplib.py (InteractiveShell.alias_table_update): make
1744 * IPython/iplib.py (InteractiveShell.alias_table_update): make
1740 sure that the alias table doesn't contain python keywords.
1745 sure that the alias table doesn't contain python keywords.
1741
1746
1742 2004-06-21 Fernando Perez <fperez@colorado.edu>
1747 2004-06-21 Fernando Perez <fperez@colorado.edu>
1743
1748
1744 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
1749 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
1745 non-existent items are found in $PATH. Reported by Thorsten.
1750 non-existent items are found in $PATH. Reported by Thorsten.
1746
1751
1747 2004-06-20 Fernando Perez <fperez@colorado.edu>
1752 2004-06-20 Fernando Perez <fperez@colorado.edu>
1748
1753
1749 * IPython/iplib.py (complete): modified the completer so that the
1754 * IPython/iplib.py (complete): modified the completer so that the
1750 order of priorities can be easily changed at runtime.
1755 order of priorities can be easily changed at runtime.
1751
1756
1752 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
1757 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
1753 Modified to auto-execute all lines beginning with '~', '/' or '.'.
1758 Modified to auto-execute all lines beginning with '~', '/' or '.'.
1754
1759
1755 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
1760 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
1756 expand Python variables prepended with $ in all system calls. The
1761 expand Python variables prepended with $ in all system calls. The
1757 same was done to InteractiveShell.handle_shell_escape. Now all
1762 same was done to InteractiveShell.handle_shell_escape. Now all
1758 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
1763 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
1759 expansion of python variables and expressions according to the
1764 expansion of python variables and expressions according to the
1760 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
1765 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
1761
1766
1762 Though PEP-215 has been rejected, a similar (but simpler) one
1767 Though PEP-215 has been rejected, a similar (but simpler) one
1763 seems like it will go into Python 2.4, PEP-292 -
1768 seems like it will go into Python 2.4, PEP-292 -
1764 http://www.python.org/peps/pep-0292.html.
1769 http://www.python.org/peps/pep-0292.html.
1765
1770
1766 I'll keep the full syntax of PEP-215, since IPython has since the
1771 I'll keep the full syntax of PEP-215, since IPython has since the
1767 start used Ka-Ping Yee's reference implementation discussed there
1772 start used Ka-Ping Yee's reference implementation discussed there
1768 (Itpl), and I actually like the powerful semantics it offers.
1773 (Itpl), and I actually like the powerful semantics it offers.
1769
1774
1770 In order to access normal shell variables, the $ has to be escaped
1775 In order to access normal shell variables, the $ has to be escaped
1771 via an extra $. For example:
1776 via an extra $. For example:
1772
1777
1773 In [7]: PATH='a python variable'
1778 In [7]: PATH='a python variable'
1774
1779
1775 In [8]: !echo $PATH
1780 In [8]: !echo $PATH
1776 a python variable
1781 a python variable
1777
1782
1778 In [9]: !echo $$PATH
1783 In [9]: !echo $$PATH
1779 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
1784 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
1780
1785
1781 (Magic.parse_options): escape $ so the shell doesn't evaluate
1786 (Magic.parse_options): escape $ so the shell doesn't evaluate
1782 things prematurely.
1787 things prematurely.
1783
1788
1784 * IPython/iplib.py (InteractiveShell.call_alias): added the
1789 * IPython/iplib.py (InteractiveShell.call_alias): added the
1785 ability for aliases to expand python variables via $.
1790 ability for aliases to expand python variables via $.
1786
1791
1787 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
1792 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
1788 system, now there's a @rehash/@rehashx pair of magics. These work
1793 system, now there's a @rehash/@rehashx pair of magics. These work
1789 like the csh rehash command, and can be invoked at any time. They
1794 like the csh rehash command, and can be invoked at any time. They
1790 build a table of aliases to everything in the user's $PATH
1795 build a table of aliases to everything in the user's $PATH
1791 (@rehash uses everything, @rehashx is slower but only adds
1796 (@rehash uses everything, @rehashx is slower but only adds
1792 executable files). With this, the pysh.py-based shell profile can
1797 executable files). With this, the pysh.py-based shell profile can
1793 now simply call rehash upon startup, and full access to all
1798 now simply call rehash upon startup, and full access to all
1794 programs in the user's path is obtained.
1799 programs in the user's path is obtained.
1795
1800
1796 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
1801 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
1797 functionality is now fully in place. I removed the old dynamic
1802 functionality is now fully in place. I removed the old dynamic
1798 code generation based approach, in favor of a much lighter one
1803 code generation based approach, in favor of a much lighter one
1799 based on a simple dict. The advantage is that this allows me to
1804 based on a simple dict. The advantage is that this allows me to
1800 now have thousands of aliases with negligible cost (unthinkable
1805 now have thousands of aliases with negligible cost (unthinkable
1801 with the old system).
1806 with the old system).
1802
1807
1803 2004-06-19 Fernando Perez <fperez@colorado.edu>
1808 2004-06-19 Fernando Perez <fperez@colorado.edu>
1804
1809
1805 * IPython/iplib.py (__init__): extended MagicCompleter class to
1810 * IPython/iplib.py (__init__): extended MagicCompleter class to
1806 also complete (last in priority) on user aliases.
1811 also complete (last in priority) on user aliases.
1807
1812
1808 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
1813 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
1809 call to eval.
1814 call to eval.
1810 (ItplNS.__init__): Added a new class which functions like Itpl,
1815 (ItplNS.__init__): Added a new class which functions like Itpl,
1811 but allows configuring the namespace for the evaluation to occur
1816 but allows configuring the namespace for the evaluation to occur
1812 in.
1817 in.
1813
1818
1814 2004-06-18 Fernando Perez <fperez@colorado.edu>
1819 2004-06-18 Fernando Perez <fperez@colorado.edu>
1815
1820
1816 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
1821 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
1817 better message when 'exit' or 'quit' are typed (a common newbie
1822 better message when 'exit' or 'quit' are typed (a common newbie
1818 confusion).
1823 confusion).
1819
1824
1820 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
1825 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
1821 check for Windows users.
1826 check for Windows users.
1822
1827
1823 * IPython/iplib.py (InteractiveShell.user_setup): removed
1828 * IPython/iplib.py (InteractiveShell.user_setup): removed
1824 disabling of colors for Windows. I'll test at runtime and issue a
1829 disabling of colors for Windows. I'll test at runtime and issue a
1825 warning if Gary's readline isn't found, as to nudge users to
1830 warning if Gary's readline isn't found, as to nudge users to
1826 download it.
1831 download it.
1827
1832
1828 2004-06-16 Fernando Perez <fperez@colorado.edu>
1833 2004-06-16 Fernando Perez <fperez@colorado.edu>
1829
1834
1830 * IPython/genutils.py (Stream.__init__): changed to print errors
1835 * IPython/genutils.py (Stream.__init__): changed to print errors
1831 to sys.stderr. I had a circular dependency here. Now it's
1836 to sys.stderr. I had a circular dependency here. Now it's
1832 possible to run ipython as IDLE's shell (consider this pre-alpha,
1837 possible to run ipython as IDLE's shell (consider this pre-alpha,
1833 since true stdout things end up in the starting terminal instead
1838 since true stdout things end up in the starting terminal instead
1834 of IDLE's out).
1839 of IDLE's out).
1835
1840
1836 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
1841 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
1837 users who haven't # updated their prompt_in2 definitions. Remove
1842 users who haven't # updated their prompt_in2 definitions. Remove
1838 eventually.
1843 eventually.
1839 (multiple_replace): added credit to original ASPN recipe.
1844 (multiple_replace): added credit to original ASPN recipe.
1840
1845
1841 2004-06-15 Fernando Perez <fperez@colorado.edu>
1846 2004-06-15 Fernando Perez <fperez@colorado.edu>
1842
1847
1843 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
1848 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
1844 list of auto-defined aliases.
1849 list of auto-defined aliases.
1845
1850
1846 2004-06-13 Fernando Perez <fperez@colorado.edu>
1851 2004-06-13 Fernando Perez <fperez@colorado.edu>
1847
1852
1848 * setup.py (scriptfiles): Don't trigger win_post_install unless an
1853 * setup.py (scriptfiles): Don't trigger win_post_install unless an
1849 install was really requested (so setup.py can be used for other
1854 install was really requested (so setup.py can be used for other
1850 things under Windows).
1855 things under Windows).
1851
1856
1852 2004-06-10 Fernando Perez <fperez@colorado.edu>
1857 2004-06-10 Fernando Perez <fperez@colorado.edu>
1853
1858
1854 * IPython/Logger.py (Logger.create_log): Manually remove any old
1859 * IPython/Logger.py (Logger.create_log): Manually remove any old
1855 backup, since os.remove may fail under Windows. Fixes bug
1860 backup, since os.remove may fail under Windows. Fixes bug
1856 reported by Thorsten.
1861 reported by Thorsten.
1857
1862
1858 2004-06-09 Fernando Perez <fperez@colorado.edu>
1863 2004-06-09 Fernando Perez <fperez@colorado.edu>
1859
1864
1860 * examples/example-embed.py: fixed all references to %n (replaced
1865 * examples/example-embed.py: fixed all references to %n (replaced
1861 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
1866 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
1862 for all examples and the manual as well.
1867 for all examples and the manual as well.
1863
1868
1864 2004-06-08 Fernando Perez <fperez@colorado.edu>
1869 2004-06-08 Fernando Perez <fperez@colorado.edu>
1865
1870
1866 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
1871 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
1867 alignment and color management. All 3 prompt subsystems now
1872 alignment and color management. All 3 prompt subsystems now
1868 inherit from BasePrompt.
1873 inherit from BasePrompt.
1869
1874
1870 * tools/release: updates for windows installer build and tag rpms
1875 * tools/release: updates for windows installer build and tag rpms
1871 with python version (since paths are fixed).
1876 with python version (since paths are fixed).
1872
1877
1873 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
1878 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
1874 which will become eventually obsolete. Also fixed the default
1879 which will become eventually obsolete. Also fixed the default
1875 prompt_in2 to use \D, so at least new users start with the correct
1880 prompt_in2 to use \D, so at least new users start with the correct
1876 defaults.
1881 defaults.
1877 WARNING: Users with existing ipythonrc files will need to apply
1882 WARNING: Users with existing ipythonrc files will need to apply
1878 this fix manually!
1883 this fix manually!
1879
1884
1880 * setup.py: make windows installer (.exe). This is finally the
1885 * setup.py: make windows installer (.exe). This is finally the
1881 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
1886 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
1882 which I hadn't included because it required Python 2.3 (or recent
1887 which I hadn't included because it required Python 2.3 (or recent
1883 distutils).
1888 distutils).
1884
1889
1885 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
1890 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
1886 usage of new '\D' escape.
1891 usage of new '\D' escape.
1887
1892
1888 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
1893 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
1889 lacks os.getuid())
1894 lacks os.getuid())
1890 (CachedOutput.set_colors): Added the ability to turn coloring
1895 (CachedOutput.set_colors): Added the ability to turn coloring
1891 on/off with @colors even for manually defined prompt colors. It
1896 on/off with @colors even for manually defined prompt colors. It
1892 uses a nasty global, but it works safely and via the generic color
1897 uses a nasty global, but it works safely and via the generic color
1893 handling mechanism.
1898 handling mechanism.
1894 (Prompt2.__init__): Introduced new escape '\D' for continuation
1899 (Prompt2.__init__): Introduced new escape '\D' for continuation
1895 prompts. It represents the counter ('\#') as dots.
1900 prompts. It represents the counter ('\#') as dots.
1896 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
1901 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
1897 need to update their ipythonrc files and replace '%n' with '\D' in
1902 need to update their ipythonrc files and replace '%n' with '\D' in
1898 their prompt_in2 settings everywhere. Sorry, but there's
1903 their prompt_in2 settings everywhere. Sorry, but there's
1899 otherwise no clean way to get all prompts to properly align. The
1904 otherwise no clean way to get all prompts to properly align. The
1900 ipythonrc shipped with IPython has been updated.
1905 ipythonrc shipped with IPython has been updated.
1901
1906
1902 2004-06-07 Fernando Perez <fperez@colorado.edu>
1907 2004-06-07 Fernando Perez <fperez@colorado.edu>
1903
1908
1904 * setup.py (isfile): Pass local_icons option to latex2html, so the
1909 * setup.py (isfile): Pass local_icons option to latex2html, so the
1905 resulting HTML file is self-contained. Thanks to
1910 resulting HTML file is self-contained. Thanks to
1906 dryice-AT-liu.com.cn for the tip.
1911 dryice-AT-liu.com.cn for the tip.
1907
1912
1908 * pysh.py: I created a new profile 'shell', which implements a
1913 * pysh.py: I created a new profile 'shell', which implements a
1909 _rudimentary_ IPython-based shell. This is in NO WAY a realy
1914 _rudimentary_ IPython-based shell. This is in NO WAY a realy
1910 system shell, nor will it become one anytime soon. It's mainly
1915 system shell, nor will it become one anytime soon. It's mainly
1911 meant to illustrate the use of the new flexible bash-like prompts.
1916 meant to illustrate the use of the new flexible bash-like prompts.
1912 I guess it could be used by hardy souls for true shell management,
1917 I guess it could be used by hardy souls for true shell management,
1913 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
1918 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
1914 profile. This uses the InterpreterExec extension provided by
1919 profile. This uses the InterpreterExec extension provided by
1915 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
1920 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
1916
1921
1917 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
1922 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
1918 auto-align itself with the length of the previous input prompt
1923 auto-align itself with the length of the previous input prompt
1919 (taking into account the invisible color escapes).
1924 (taking into account the invisible color escapes).
1920 (CachedOutput.__init__): Large restructuring of this class. Now
1925 (CachedOutput.__init__): Large restructuring of this class. Now
1921 all three prompts (primary1, primary2, output) are proper objects,
1926 all three prompts (primary1, primary2, output) are proper objects,
1922 managed by the 'parent' CachedOutput class. The code is still a
1927 managed by the 'parent' CachedOutput class. The code is still a
1923 bit hackish (all prompts share state via a pointer to the cache),
1928 bit hackish (all prompts share state via a pointer to the cache),
1924 but it's overall far cleaner than before.
1929 but it's overall far cleaner than before.
1925
1930
1926 * IPython/genutils.py (getoutputerror): modified to add verbose,
1931 * IPython/genutils.py (getoutputerror): modified to add verbose,
1927 debug and header options. This makes the interface of all getout*
1932 debug and header options. This makes the interface of all getout*
1928 functions uniform.
1933 functions uniform.
1929 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
1934 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
1930
1935
1931 * IPython/Magic.py (Magic.default_option): added a function to
1936 * IPython/Magic.py (Magic.default_option): added a function to
1932 allow registering default options for any magic command. This
1937 allow registering default options for any magic command. This
1933 makes it easy to have profiles which customize the magics globally
1938 makes it easy to have profiles which customize the magics globally
1934 for a certain use. The values set through this function are
1939 for a certain use. The values set through this function are
1935 picked up by the parse_options() method, which all magics should
1940 picked up by the parse_options() method, which all magics should
1936 use to parse their options.
1941 use to parse their options.
1937
1942
1938 * IPython/genutils.py (warn): modified the warnings framework to
1943 * IPython/genutils.py (warn): modified the warnings framework to
1939 use the Term I/O class. I'm trying to slowly unify all of
1944 use the Term I/O class. I'm trying to slowly unify all of
1940 IPython's I/O operations to pass through Term.
1945 IPython's I/O operations to pass through Term.
1941
1946
1942 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
1947 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
1943 the secondary prompt to correctly match the length of the primary
1948 the secondary prompt to correctly match the length of the primary
1944 one for any prompt. Now multi-line code will properly line up
1949 one for any prompt. Now multi-line code will properly line up
1945 even for path dependent prompts, such as the new ones available
1950 even for path dependent prompts, such as the new ones available
1946 via the prompt_specials.
1951 via the prompt_specials.
1947
1952
1948 2004-06-06 Fernando Perez <fperez@colorado.edu>
1953 2004-06-06 Fernando Perez <fperez@colorado.edu>
1949
1954
1950 * IPython/Prompts.py (prompt_specials): Added the ability to have
1955 * IPython/Prompts.py (prompt_specials): Added the ability to have
1951 bash-like special sequences in the prompts, which get
1956 bash-like special sequences in the prompts, which get
1952 automatically expanded. Things like hostname, current working
1957 automatically expanded. Things like hostname, current working
1953 directory and username are implemented already, but it's easy to
1958 directory and username are implemented already, but it's easy to
1954 add more in the future. Thanks to a patch by W.J. van der Laan
1959 add more in the future. Thanks to a patch by W.J. van der Laan
1955 <gnufnork-AT-hetdigitalegat.nl>
1960 <gnufnork-AT-hetdigitalegat.nl>
1956 (prompt_specials): Added color support for prompt strings, so
1961 (prompt_specials): Added color support for prompt strings, so
1957 users can define arbitrary color setups for their prompts.
1962 users can define arbitrary color setups for their prompts.
1958
1963
1959 2004-06-05 Fernando Perez <fperez@colorado.edu>
1964 2004-06-05 Fernando Perez <fperez@colorado.edu>
1960
1965
1961 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
1966 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
1962 code to load Gary Bishop's readline and configure it
1967 code to load Gary Bishop's readline and configure it
1963 automatically. Thanks to Gary for help on this.
1968 automatically. Thanks to Gary for help on this.
1964
1969
1965 2004-06-01 Fernando Perez <fperez@colorado.edu>
1970 2004-06-01 Fernando Perez <fperez@colorado.edu>
1966
1971
1967 * IPython/Logger.py (Logger.create_log): fix bug for logging
1972 * IPython/Logger.py (Logger.create_log): fix bug for logging
1968 with no filename (previous fix was incomplete).
1973 with no filename (previous fix was incomplete).
1969
1974
1970 2004-05-25 Fernando Perez <fperez@colorado.edu>
1975 2004-05-25 Fernando Perez <fperez@colorado.edu>
1971
1976
1972 * IPython/Magic.py (Magic.parse_options): fix bug where naked
1977 * IPython/Magic.py (Magic.parse_options): fix bug where naked
1973 parens would get passed to the shell.
1978 parens would get passed to the shell.
1974
1979
1975 2004-05-20 Fernando Perez <fperez@colorado.edu>
1980 2004-05-20 Fernando Perez <fperez@colorado.edu>
1976
1981
1977 * IPython/Magic.py (Magic.magic_prun): changed default profile
1982 * IPython/Magic.py (Magic.magic_prun): changed default profile
1978 sort order to 'time' (the more common profiling need).
1983 sort order to 'time' (the more common profiling need).
1979
1984
1980 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
1985 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
1981 so that source code shown is guaranteed in sync with the file on
1986 so that source code shown is guaranteed in sync with the file on
1982 disk (also changed in psource). Similar fix to the one for
1987 disk (also changed in psource). Similar fix to the one for
1983 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
1988 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
1984 <yann.ledu-AT-noos.fr>.
1989 <yann.ledu-AT-noos.fr>.
1985
1990
1986 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
1991 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
1987 with a single option would not be correctly parsed. Closes
1992 with a single option would not be correctly parsed. Closes
1988 http://www.scipy.net/roundup/ipython/issue14. This bug had been
1993 http://www.scipy.net/roundup/ipython/issue14. This bug had been
1989 introduced in 0.6.0 (on 2004-05-06).
1994 introduced in 0.6.0 (on 2004-05-06).
1990
1995
1991 2004-05-13 *** Released version 0.6.0
1996 2004-05-13 *** Released version 0.6.0
1992
1997
1993 2004-05-13 Fernando Perez <fperez@colorado.edu>
1998 2004-05-13 Fernando Perez <fperez@colorado.edu>
1994
1999
1995 * debian/: Added debian/ directory to CVS, so that debian support
2000 * debian/: Added debian/ directory to CVS, so that debian support
1996 is publicly accessible. The debian package is maintained by Jack
2001 is publicly accessible. The debian package is maintained by Jack
1997 Moffit <jack-AT-xiph.org>.
2002 Moffit <jack-AT-xiph.org>.
1998
2003
1999 * Documentation: included the notes about an ipython-based system
2004 * Documentation: included the notes about an ipython-based system
2000 shell (the hypothetical 'pysh') into the new_design.pdf document,
2005 shell (the hypothetical 'pysh') into the new_design.pdf document,
2001 so that these ideas get distributed to users along with the
2006 so that these ideas get distributed to users along with the
2002 official documentation.
2007 official documentation.
2003
2008
2004 2004-05-10 Fernando Perez <fperez@colorado.edu>
2009 2004-05-10 Fernando Perez <fperez@colorado.edu>
2005
2010
2006 * IPython/Logger.py (Logger.create_log): fix recently introduced
2011 * IPython/Logger.py (Logger.create_log): fix recently introduced
2007 bug (misindented line) where logstart would fail when not given an
2012 bug (misindented line) where logstart would fail when not given an
2008 explicit filename.
2013 explicit filename.
2009
2014
2010 2004-05-09 Fernando Perez <fperez@colorado.edu>
2015 2004-05-09 Fernando Perez <fperez@colorado.edu>
2011
2016
2012 * IPython/Magic.py (Magic.parse_options): skip system call when
2017 * IPython/Magic.py (Magic.parse_options): skip system call when
2013 there are no options to look for. Faster, cleaner for the common
2018 there are no options to look for. Faster, cleaner for the common
2014 case.
2019 case.
2015
2020
2016 * Documentation: many updates to the manual: describing Windows
2021 * Documentation: many updates to the manual: describing Windows
2017 support better, Gnuplot updates, credits, misc small stuff. Also
2022 support better, Gnuplot updates, credits, misc small stuff. Also
2018 updated the new_design doc a bit.
2023 updated the new_design doc a bit.
2019
2024
2020 2004-05-06 *** Released version 0.6.0.rc1
2025 2004-05-06 *** Released version 0.6.0.rc1
2021
2026
2022 2004-05-06 Fernando Perez <fperez@colorado.edu>
2027 2004-05-06 Fernando Perez <fperez@colorado.edu>
2023
2028
2024 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2029 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2025 operations to use the vastly more efficient list/''.join() method.
2030 operations to use the vastly more efficient list/''.join() method.
2026 (FormattedTB.text): Fix
2031 (FormattedTB.text): Fix
2027 http://www.scipy.net/roundup/ipython/issue12 - exception source
2032 http://www.scipy.net/roundup/ipython/issue12 - exception source
2028 extract not updated after reload. Thanks to Mike Salib
2033 extract not updated after reload. Thanks to Mike Salib
2029 <msalib-AT-mit.edu> for pinning the source of the problem.
2034 <msalib-AT-mit.edu> for pinning the source of the problem.
2030 Fortunately, the solution works inside ipython and doesn't require
2035 Fortunately, the solution works inside ipython and doesn't require
2031 any changes to python proper.
2036 any changes to python proper.
2032
2037
2033 * IPython/Magic.py (Magic.parse_options): Improved to process the
2038 * IPython/Magic.py (Magic.parse_options): Improved to process the
2034 argument list as a true shell would (by actually using the
2039 argument list as a true shell would (by actually using the
2035 underlying system shell). This way, all @magics automatically get
2040 underlying system shell). This way, all @magics automatically get
2036 shell expansion for variables. Thanks to a comment by Alex
2041 shell expansion for variables. Thanks to a comment by Alex
2037 Schmolck.
2042 Schmolck.
2038
2043
2039 2004-04-04 Fernando Perez <fperez@colorado.edu>
2044 2004-04-04 Fernando Perez <fperez@colorado.edu>
2040
2045
2041 * IPython/iplib.py (InteractiveShell.interact): Added a special
2046 * IPython/iplib.py (InteractiveShell.interact): Added a special
2042 trap for a debugger quit exception, which is basically impossible
2047 trap for a debugger quit exception, which is basically impossible
2043 to handle by normal mechanisms, given what pdb does to the stack.
2048 to handle by normal mechanisms, given what pdb does to the stack.
2044 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2049 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2045
2050
2046 2004-04-03 Fernando Perez <fperez@colorado.edu>
2051 2004-04-03 Fernando Perez <fperez@colorado.edu>
2047
2052
2048 * IPython/genutils.py (Term): Standardized the names of the Term
2053 * IPython/genutils.py (Term): Standardized the names of the Term
2049 class streams to cin/cout/cerr, following C++ naming conventions
2054 class streams to cin/cout/cerr, following C++ naming conventions
2050 (I can't use in/out/err because 'in' is not a valid attribute
2055 (I can't use in/out/err because 'in' is not a valid attribute
2051 name).
2056 name).
2052
2057
2053 * IPython/iplib.py (InteractiveShell.interact): don't increment
2058 * IPython/iplib.py (InteractiveShell.interact): don't increment
2054 the prompt if there's no user input. By Daniel 'Dang' Griffith
2059 the prompt if there's no user input. By Daniel 'Dang' Griffith
2055 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2060 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2056 Francois Pinard.
2061 Francois Pinard.
2057
2062
2058 2004-04-02 Fernando Perez <fperez@colorado.edu>
2063 2004-04-02 Fernando Perez <fperez@colorado.edu>
2059
2064
2060 * IPython/genutils.py (Stream.__init__): Modified to survive at
2065 * IPython/genutils.py (Stream.__init__): Modified to survive at
2061 least importing in contexts where stdin/out/err aren't true file
2066 least importing in contexts where stdin/out/err aren't true file
2062 objects, such as PyCrust (they lack fileno() and mode). However,
2067 objects, such as PyCrust (they lack fileno() and mode). However,
2063 the recovery facilities which rely on these things existing will
2068 the recovery facilities which rely on these things existing will
2064 not work.
2069 not work.
2065
2070
2066 2004-04-01 Fernando Perez <fperez@colorado.edu>
2071 2004-04-01 Fernando Perez <fperez@colorado.edu>
2067
2072
2068 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2073 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2069 use the new getoutputerror() function, so it properly
2074 use the new getoutputerror() function, so it properly
2070 distinguishes stdout/err.
2075 distinguishes stdout/err.
2071
2076
2072 * IPython/genutils.py (getoutputerror): added a function to
2077 * IPython/genutils.py (getoutputerror): added a function to
2073 capture separately the standard output and error of a command.
2078 capture separately the standard output and error of a command.
2074 After a comment from dang on the mailing lists. This code is
2079 After a comment from dang on the mailing lists. This code is
2075 basically a modified version of commands.getstatusoutput(), from
2080 basically a modified version of commands.getstatusoutput(), from
2076 the standard library.
2081 the standard library.
2077
2082
2078 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2083 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2079 '!!' as a special syntax (shorthand) to access @sx.
2084 '!!' as a special syntax (shorthand) to access @sx.
2080
2085
2081 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2086 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2082 command and return its output as a list split on '\n'.
2087 command and return its output as a list split on '\n'.
2083
2088
2084 2004-03-31 Fernando Perez <fperez@colorado.edu>
2089 2004-03-31 Fernando Perez <fperez@colorado.edu>
2085
2090
2086 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2091 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2087 method to dictionaries used as FakeModule instances if they lack
2092 method to dictionaries used as FakeModule instances if they lack
2088 it. At least pydoc in python2.3 breaks for runtime-defined
2093 it. At least pydoc in python2.3 breaks for runtime-defined
2089 functions without this hack. At some point I need to _really_
2094 functions without this hack. At some point I need to _really_
2090 understand what FakeModule is doing, because it's a gross hack.
2095 understand what FakeModule is doing, because it's a gross hack.
2091 But it solves Arnd's problem for now...
2096 But it solves Arnd's problem for now...
2092
2097
2093 2004-02-27 Fernando Perez <fperez@colorado.edu>
2098 2004-02-27 Fernando Perez <fperez@colorado.edu>
2094
2099
2095 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2100 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2096 mode would behave erratically. Also increased the number of
2101 mode would behave erratically. Also increased the number of
2097 possible logs in rotate mod to 999. Thanks to Rod Holland
2102 possible logs in rotate mod to 999. Thanks to Rod Holland
2098 <rhh@StructureLABS.com> for the report and fixes.
2103 <rhh@StructureLABS.com> for the report and fixes.
2099
2104
2100 2004-02-26 Fernando Perez <fperez@colorado.edu>
2105 2004-02-26 Fernando Perez <fperez@colorado.edu>
2101
2106
2102 * IPython/genutils.py (page): Check that the curses module really
2107 * IPython/genutils.py (page): Check that the curses module really
2103 has the initscr attribute before trying to use it. For some
2108 has the initscr attribute before trying to use it. For some
2104 reason, the Solaris curses module is missing this. I think this
2109 reason, the Solaris curses module is missing this. I think this
2105 should be considered a Solaris python bug, but I'm not sure.
2110 should be considered a Solaris python bug, but I'm not sure.
2106
2111
2107 2004-01-17 Fernando Perez <fperez@colorado.edu>
2112 2004-01-17 Fernando Perez <fperez@colorado.edu>
2108
2113
2109 * IPython/genutils.py (Stream.__init__): Changes to try to make
2114 * IPython/genutils.py (Stream.__init__): Changes to try to make
2110 ipython robust against stdin/out/err being closed by the user.
2115 ipython robust against stdin/out/err being closed by the user.
2111 This is 'user error' (and blocks a normal python session, at least
2116 This is 'user error' (and blocks a normal python session, at least
2112 the stdout case). However, Ipython should be able to survive such
2117 the stdout case). However, Ipython should be able to survive such
2113 instances of abuse as gracefully as possible. To simplify the
2118 instances of abuse as gracefully as possible. To simplify the
2114 coding and maintain compatibility with Gary Bishop's Term
2119 coding and maintain compatibility with Gary Bishop's Term
2115 contributions, I've made use of classmethods for this. I think
2120 contributions, I've made use of classmethods for this. I think
2116 this introduces a dependency on python 2.2.
2121 this introduces a dependency on python 2.2.
2117
2122
2118 2004-01-13 Fernando Perez <fperez@colorado.edu>
2123 2004-01-13 Fernando Perez <fperez@colorado.edu>
2119
2124
2120 * IPython/numutils.py (exp_safe): simplified the code a bit and
2125 * IPython/numutils.py (exp_safe): simplified the code a bit and
2121 removed the need for importing the kinds module altogether.
2126 removed the need for importing the kinds module altogether.
2122
2127
2123 2004-01-06 Fernando Perez <fperez@colorado.edu>
2128 2004-01-06 Fernando Perez <fperez@colorado.edu>
2124
2129
2125 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2130 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2126 a magic function instead, after some community feedback. No
2131 a magic function instead, after some community feedback. No
2127 special syntax will exist for it, but its name is deliberately
2132 special syntax will exist for it, but its name is deliberately
2128 very short.
2133 very short.
2129
2134
2130 2003-12-20 Fernando Perez <fperez@colorado.edu>
2135 2003-12-20 Fernando Perez <fperez@colorado.edu>
2131
2136
2132 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2137 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2133 new functionality, to automagically assign the result of a shell
2138 new functionality, to automagically assign the result of a shell
2134 command to a variable. I'll solicit some community feedback on
2139 command to a variable. I'll solicit some community feedback on
2135 this before making it permanent.
2140 this before making it permanent.
2136
2141
2137 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2142 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2138 requested about callables for which inspect couldn't obtain a
2143 requested about callables for which inspect couldn't obtain a
2139 proper argspec. Thanks to a crash report sent by Etienne
2144 proper argspec. Thanks to a crash report sent by Etienne
2140 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2145 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2141
2146
2142 2003-12-09 Fernando Perez <fperez@colorado.edu>
2147 2003-12-09 Fernando Perez <fperez@colorado.edu>
2143
2148
2144 * IPython/genutils.py (page): patch for the pager to work across
2149 * IPython/genutils.py (page): patch for the pager to work across
2145 various versions of Windows. By Gary Bishop.
2150 various versions of Windows. By Gary Bishop.
2146
2151
2147 2003-12-04 Fernando Perez <fperez@colorado.edu>
2152 2003-12-04 Fernando Perez <fperez@colorado.edu>
2148
2153
2149 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2154 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2150 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2155 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2151 While I tested this and it looks ok, there may still be corner
2156 While I tested this and it looks ok, there may still be corner
2152 cases I've missed.
2157 cases I've missed.
2153
2158
2154 2003-12-01 Fernando Perez <fperez@colorado.edu>
2159 2003-12-01 Fernando Perez <fperez@colorado.edu>
2155
2160
2156 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2161 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2157 where a line like 'p,q=1,2' would fail because the automagic
2162 where a line like 'p,q=1,2' would fail because the automagic
2158 system would be triggered for @p.
2163 system would be triggered for @p.
2159
2164
2160 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2165 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2161 cleanups, code unmodified.
2166 cleanups, code unmodified.
2162
2167
2163 * IPython/genutils.py (Term): added a class for IPython to handle
2168 * IPython/genutils.py (Term): added a class for IPython to handle
2164 output. In most cases it will just be a proxy for stdout/err, but
2169 output. In most cases it will just be a proxy for stdout/err, but
2165 having this allows modifications to be made for some platforms,
2170 having this allows modifications to be made for some platforms,
2166 such as handling color escapes under Windows. All of this code
2171 such as handling color escapes under Windows. All of this code
2167 was contributed by Gary Bishop, with minor modifications by me.
2172 was contributed by Gary Bishop, with minor modifications by me.
2168 The actual changes affect many files.
2173 The actual changes affect many files.
2169
2174
2170 2003-11-30 Fernando Perez <fperez@colorado.edu>
2175 2003-11-30 Fernando Perez <fperez@colorado.edu>
2171
2176
2172 * IPython/iplib.py (file_matches): new completion code, courtesy
2177 * IPython/iplib.py (file_matches): new completion code, courtesy
2173 of Jeff Collins. This enables filename completion again under
2178 of Jeff Collins. This enables filename completion again under
2174 python 2.3, which disabled it at the C level.
2179 python 2.3, which disabled it at the C level.
2175
2180
2176 2003-11-11 Fernando Perez <fperez@colorado.edu>
2181 2003-11-11 Fernando Perez <fperez@colorado.edu>
2177
2182
2178 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2183 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2179 for Numeric.array(map(...)), but often convenient.
2184 for Numeric.array(map(...)), but often convenient.
2180
2185
2181 2003-11-05 Fernando Perez <fperez@colorado.edu>
2186 2003-11-05 Fernando Perez <fperez@colorado.edu>
2182
2187
2183 * IPython/numutils.py (frange): Changed a call from int() to
2188 * IPython/numutils.py (frange): Changed a call from int() to
2184 int(round()) to prevent a problem reported with arange() in the
2189 int(round()) to prevent a problem reported with arange() in the
2185 numpy list.
2190 numpy list.
2186
2191
2187 2003-10-06 Fernando Perez <fperez@colorado.edu>
2192 2003-10-06 Fernando Perez <fperez@colorado.edu>
2188
2193
2189 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2194 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2190 prevent crashes if sys lacks an argv attribute (it happens with
2195 prevent crashes if sys lacks an argv attribute (it happens with
2191 embedded interpreters which build a bare-bones sys module).
2196 embedded interpreters which build a bare-bones sys module).
2192 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2197 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2193
2198
2194 2003-09-24 Fernando Perez <fperez@colorado.edu>
2199 2003-09-24 Fernando Perez <fperez@colorado.edu>
2195
2200
2196 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2201 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2197 to protect against poorly written user objects where __getattr__
2202 to protect against poorly written user objects where __getattr__
2198 raises exceptions other than AttributeError. Thanks to a bug
2203 raises exceptions other than AttributeError. Thanks to a bug
2199 report by Oliver Sander <osander-AT-gmx.de>.
2204 report by Oliver Sander <osander-AT-gmx.de>.
2200
2205
2201 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2206 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2202 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2207 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2203
2208
2204 2003-09-09 Fernando Perez <fperez@colorado.edu>
2209 2003-09-09 Fernando Perez <fperez@colorado.edu>
2205
2210
2206 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2211 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2207 unpacking a list whith a callable as first element would
2212 unpacking a list whith a callable as first element would
2208 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2213 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2209 Collins.
2214 Collins.
2210
2215
2211 2003-08-25 *** Released version 0.5.0
2216 2003-08-25 *** Released version 0.5.0
2212
2217
2213 2003-08-22 Fernando Perez <fperez@colorado.edu>
2218 2003-08-22 Fernando Perez <fperez@colorado.edu>
2214
2219
2215 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2220 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2216 improperly defined user exceptions. Thanks to feedback from Mark
2221 improperly defined user exceptions. Thanks to feedback from Mark
2217 Russell <mrussell-AT-verio.net>.
2222 Russell <mrussell-AT-verio.net>.
2218
2223
2219 2003-08-20 Fernando Perez <fperez@colorado.edu>
2224 2003-08-20 Fernando Perez <fperez@colorado.edu>
2220
2225
2221 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2226 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2222 printing so that it would print multi-line string forms starting
2227 printing so that it would print multi-line string forms starting
2223 with a new line. This way the formatting is better respected for
2228 with a new line. This way the formatting is better respected for
2224 objects which work hard to make nice string forms.
2229 objects which work hard to make nice string forms.
2225
2230
2226 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2231 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2227 autocall would overtake data access for objects with both
2232 autocall would overtake data access for objects with both
2228 __getitem__ and __call__.
2233 __getitem__ and __call__.
2229
2234
2230 2003-08-19 *** Released version 0.5.0-rc1
2235 2003-08-19 *** Released version 0.5.0-rc1
2231
2236
2232 2003-08-19 Fernando Perez <fperez@colorado.edu>
2237 2003-08-19 Fernando Perez <fperez@colorado.edu>
2233
2238
2234 * IPython/deep_reload.py (load_tail): single tiny change here
2239 * IPython/deep_reload.py (load_tail): single tiny change here
2235 seems to fix the long-standing bug of dreload() failing to work
2240 seems to fix the long-standing bug of dreload() failing to work
2236 for dotted names. But this module is pretty tricky, so I may have
2241 for dotted names. But this module is pretty tricky, so I may have
2237 missed some subtlety. Needs more testing!.
2242 missed some subtlety. Needs more testing!.
2238
2243
2239 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2244 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2240 exceptions which have badly implemented __str__ methods.
2245 exceptions which have badly implemented __str__ methods.
2241 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2246 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2242 which I've been getting reports about from Python 2.3 users. I
2247 which I've been getting reports about from Python 2.3 users. I
2243 wish I had a simple test case to reproduce the problem, so I could
2248 wish I had a simple test case to reproduce the problem, so I could
2244 either write a cleaner workaround or file a bug report if
2249 either write a cleaner workaround or file a bug report if
2245 necessary.
2250 necessary.
2246
2251
2247 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2252 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2248 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2253 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2249 a bug report by Tjabo Kloppenburg.
2254 a bug report by Tjabo Kloppenburg.
2250
2255
2251 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2256 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2252 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2257 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2253 seems rather unstable. Thanks to a bug report by Tjabo
2258 seems rather unstable. Thanks to a bug report by Tjabo
2254 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2259 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2255
2260
2256 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2261 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2257 this out soon because of the critical fixes in the inner loop for
2262 this out soon because of the critical fixes in the inner loop for
2258 generators.
2263 generators.
2259
2264
2260 * IPython/Magic.py (Magic.getargspec): removed. This (and
2265 * IPython/Magic.py (Magic.getargspec): removed. This (and
2261 _get_def) have been obsoleted by OInspect for a long time, I
2266 _get_def) have been obsoleted by OInspect for a long time, I
2262 hadn't noticed that they were dead code.
2267 hadn't noticed that they were dead code.
2263 (Magic._ofind): restored _ofind functionality for a few literals
2268 (Magic._ofind): restored _ofind functionality for a few literals
2264 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2269 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2265 for things like "hello".capitalize?, since that would require a
2270 for things like "hello".capitalize?, since that would require a
2266 potentially dangerous eval() again.
2271 potentially dangerous eval() again.
2267
2272
2268 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2273 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2269 logic a bit more to clean up the escapes handling and minimize the
2274 logic a bit more to clean up the escapes handling and minimize the
2270 use of _ofind to only necessary cases. The interactive 'feel' of
2275 use of _ofind to only necessary cases. The interactive 'feel' of
2271 IPython should have improved quite a bit with the changes in
2276 IPython should have improved quite a bit with the changes in
2272 _prefilter and _ofind (besides being far safer than before).
2277 _prefilter and _ofind (besides being far safer than before).
2273
2278
2274 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2279 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2275 obscure, never reported). Edit would fail to find the object to
2280 obscure, never reported). Edit would fail to find the object to
2276 edit under some circumstances.
2281 edit under some circumstances.
2277 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2282 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2278 which were causing double-calling of generators. Those eval calls
2283 which were causing double-calling of generators. Those eval calls
2279 were _very_ dangerous, since code with side effects could be
2284 were _very_ dangerous, since code with side effects could be
2280 triggered. As they say, 'eval is evil'... These were the
2285 triggered. As they say, 'eval is evil'... These were the
2281 nastiest evals in IPython. Besides, _ofind is now far simpler,
2286 nastiest evals in IPython. Besides, _ofind is now far simpler,
2282 and it should also be quite a bit faster. Its use of inspect is
2287 and it should also be quite a bit faster. Its use of inspect is
2283 also safer, so perhaps some of the inspect-related crashes I've
2288 also safer, so perhaps some of the inspect-related crashes I've
2284 seen lately with Python 2.3 might be taken care of. That will
2289 seen lately with Python 2.3 might be taken care of. That will
2285 need more testing.
2290 need more testing.
2286
2291
2287 2003-08-17 Fernando Perez <fperez@colorado.edu>
2292 2003-08-17 Fernando Perez <fperez@colorado.edu>
2288
2293
2289 * IPython/iplib.py (InteractiveShell._prefilter): significant
2294 * IPython/iplib.py (InteractiveShell._prefilter): significant
2290 simplifications to the logic for handling user escapes. Faster
2295 simplifications to the logic for handling user escapes. Faster
2291 and simpler code.
2296 and simpler code.
2292
2297
2293 2003-08-14 Fernando Perez <fperez@colorado.edu>
2298 2003-08-14 Fernando Perez <fperez@colorado.edu>
2294
2299
2295 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2300 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2296 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2301 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2297 but it should be quite a bit faster. And the recursive version
2302 but it should be quite a bit faster. And the recursive version
2298 generated O(log N) intermediate storage for all rank>1 arrays,
2303 generated O(log N) intermediate storage for all rank>1 arrays,
2299 even if they were contiguous.
2304 even if they were contiguous.
2300 (l1norm): Added this function.
2305 (l1norm): Added this function.
2301 (norm): Added this function for arbitrary norms (including
2306 (norm): Added this function for arbitrary norms (including
2302 l-infinity). l1 and l2 are still special cases for convenience
2307 l-infinity). l1 and l2 are still special cases for convenience
2303 and speed.
2308 and speed.
2304
2309
2305 2003-08-03 Fernando Perez <fperez@colorado.edu>
2310 2003-08-03 Fernando Perez <fperez@colorado.edu>
2306
2311
2307 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2312 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2308 exceptions, which now raise PendingDeprecationWarnings in Python
2313 exceptions, which now raise PendingDeprecationWarnings in Python
2309 2.3. There were some in Magic and some in Gnuplot2.
2314 2.3. There were some in Magic and some in Gnuplot2.
2310
2315
2311 2003-06-30 Fernando Perez <fperez@colorado.edu>
2316 2003-06-30 Fernando Perez <fperez@colorado.edu>
2312
2317
2313 * IPython/genutils.py (page): modified to call curses only for
2318 * IPython/genutils.py (page): modified to call curses only for
2314 terminals where TERM=='xterm'. After problems under many other
2319 terminals where TERM=='xterm'. After problems under many other
2315 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2320 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2316
2321
2317 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2322 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2318 would be triggered when readline was absent. This was just an old
2323 would be triggered when readline was absent. This was just an old
2319 debugging statement I'd forgotten to take out.
2324 debugging statement I'd forgotten to take out.
2320
2325
2321 2003-06-20 Fernando Perez <fperez@colorado.edu>
2326 2003-06-20 Fernando Perez <fperez@colorado.edu>
2322
2327
2323 * IPython/genutils.py (clock): modified to return only user time
2328 * IPython/genutils.py (clock): modified to return only user time
2324 (not counting system time), after a discussion on scipy. While
2329 (not counting system time), after a discussion on scipy. While
2325 system time may be a useful quantity occasionally, it may much
2330 system time may be a useful quantity occasionally, it may much
2326 more easily be skewed by occasional swapping or other similar
2331 more easily be skewed by occasional swapping or other similar
2327 activity.
2332 activity.
2328
2333
2329 2003-06-05 Fernando Perez <fperez@colorado.edu>
2334 2003-06-05 Fernando Perez <fperez@colorado.edu>
2330
2335
2331 * IPython/numutils.py (identity): new function, for building
2336 * IPython/numutils.py (identity): new function, for building
2332 arbitrary rank Kronecker deltas (mostly backwards compatible with
2337 arbitrary rank Kronecker deltas (mostly backwards compatible with
2333 Numeric.identity)
2338 Numeric.identity)
2334
2339
2335 2003-06-03 Fernando Perez <fperez@colorado.edu>
2340 2003-06-03 Fernando Perez <fperez@colorado.edu>
2336
2341
2337 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2342 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2338 arguments passed to magics with spaces, to allow trailing '\' to
2343 arguments passed to magics with spaces, to allow trailing '\' to
2339 work normally (mainly for Windows users).
2344 work normally (mainly for Windows users).
2340
2345
2341 2003-05-29 Fernando Perez <fperez@colorado.edu>
2346 2003-05-29 Fernando Perez <fperez@colorado.edu>
2342
2347
2343 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2348 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2344 instead of pydoc.help. This fixes a bizarre behavior where
2349 instead of pydoc.help. This fixes a bizarre behavior where
2345 printing '%s' % locals() would trigger the help system. Now
2350 printing '%s' % locals() would trigger the help system. Now
2346 ipython behaves like normal python does.
2351 ipython behaves like normal python does.
2347
2352
2348 Note that if one does 'from pydoc import help', the bizarre
2353 Note that if one does 'from pydoc import help', the bizarre
2349 behavior returns, but this will also happen in normal python, so
2354 behavior returns, but this will also happen in normal python, so
2350 it's not an ipython bug anymore (it has to do with how pydoc.help
2355 it's not an ipython bug anymore (it has to do with how pydoc.help
2351 is implemented).
2356 is implemented).
2352
2357
2353 2003-05-22 Fernando Perez <fperez@colorado.edu>
2358 2003-05-22 Fernando Perez <fperez@colorado.edu>
2354
2359
2355 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2360 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2356 return [] instead of None when nothing matches, also match to end
2361 return [] instead of None when nothing matches, also match to end
2357 of line. Patch by Gary Bishop.
2362 of line. Patch by Gary Bishop.
2358
2363
2359 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2364 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2360 protection as before, for files passed on the command line. This
2365 protection as before, for files passed on the command line. This
2361 prevents the CrashHandler from kicking in if user files call into
2366 prevents the CrashHandler from kicking in if user files call into
2362 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2367 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2363 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2368 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2364
2369
2365 2003-05-20 *** Released version 0.4.0
2370 2003-05-20 *** Released version 0.4.0
2366
2371
2367 2003-05-20 Fernando Perez <fperez@colorado.edu>
2372 2003-05-20 Fernando Perez <fperez@colorado.edu>
2368
2373
2369 * setup.py: added support for manpages. It's a bit hackish b/c of
2374 * setup.py: added support for manpages. It's a bit hackish b/c of
2370 a bug in the way the bdist_rpm distutils target handles gzipped
2375 a bug in the way the bdist_rpm distutils target handles gzipped
2371 manpages, but it works. After a patch by Jack.
2376 manpages, but it works. After a patch by Jack.
2372
2377
2373 2003-05-19 Fernando Perez <fperez@colorado.edu>
2378 2003-05-19 Fernando Perez <fperez@colorado.edu>
2374
2379
2375 * IPython/numutils.py: added a mockup of the kinds module, since
2380 * IPython/numutils.py: added a mockup of the kinds module, since
2376 it was recently removed from Numeric. This way, numutils will
2381 it was recently removed from Numeric. This way, numutils will
2377 work for all users even if they are missing kinds.
2382 work for all users even if they are missing kinds.
2378
2383
2379 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2384 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2380 failure, which can occur with SWIG-wrapped extensions. After a
2385 failure, which can occur with SWIG-wrapped extensions. After a
2381 crash report from Prabhu.
2386 crash report from Prabhu.
2382
2387
2383 2003-05-16 Fernando Perez <fperez@colorado.edu>
2388 2003-05-16 Fernando Perez <fperez@colorado.edu>
2384
2389
2385 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2390 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2386 protect ipython from user code which may call directly
2391 protect ipython from user code which may call directly
2387 sys.excepthook (this looks like an ipython crash to the user, even
2392 sys.excepthook (this looks like an ipython crash to the user, even
2388 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2393 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2389 This is especially important to help users of WxWindows, but may
2394 This is especially important to help users of WxWindows, but may
2390 also be useful in other cases.
2395 also be useful in other cases.
2391
2396
2392 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2397 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2393 an optional tb_offset to be specified, and to preserve exception
2398 an optional tb_offset to be specified, and to preserve exception
2394 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2399 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2395
2400
2396 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2401 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2397
2402
2398 2003-05-15 Fernando Perez <fperez@colorado.edu>
2403 2003-05-15 Fernando Perez <fperez@colorado.edu>
2399
2404
2400 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2405 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2401 installing for a new user under Windows.
2406 installing for a new user under Windows.
2402
2407
2403 2003-05-12 Fernando Perez <fperez@colorado.edu>
2408 2003-05-12 Fernando Perez <fperez@colorado.edu>
2404
2409
2405 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2410 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2406 handler for Emacs comint-based lines. Currently it doesn't do
2411 handler for Emacs comint-based lines. Currently it doesn't do
2407 much (but importantly, it doesn't update the history cache). In
2412 much (but importantly, it doesn't update the history cache). In
2408 the future it may be expanded if Alex needs more functionality
2413 the future it may be expanded if Alex needs more functionality
2409 there.
2414 there.
2410
2415
2411 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2416 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2412 info to crash reports.
2417 info to crash reports.
2413
2418
2414 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2419 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2415 just like Python's -c. Also fixed crash with invalid -color
2420 just like Python's -c. Also fixed crash with invalid -color
2416 option value at startup. Thanks to Will French
2421 option value at startup. Thanks to Will French
2417 <wfrench-AT-bestweb.net> for the bug report.
2422 <wfrench-AT-bestweb.net> for the bug report.
2418
2423
2419 2003-05-09 Fernando Perez <fperez@colorado.edu>
2424 2003-05-09 Fernando Perez <fperez@colorado.edu>
2420
2425
2421 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2426 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2422 to EvalDict (it's a mapping, after all) and simplified its code
2427 to EvalDict (it's a mapping, after all) and simplified its code
2423 quite a bit, after a nice discussion on c.l.py where Gustavo
2428 quite a bit, after a nice discussion on c.l.py where Gustavo
2424 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2429 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2425
2430
2426 2003-04-30 Fernando Perez <fperez@colorado.edu>
2431 2003-04-30 Fernando Perez <fperez@colorado.edu>
2427
2432
2428 * IPython/genutils.py (timings_out): modified it to reduce its
2433 * IPython/genutils.py (timings_out): modified it to reduce its
2429 overhead in the common reps==1 case.
2434 overhead in the common reps==1 case.
2430
2435
2431 2003-04-29 Fernando Perez <fperez@colorado.edu>
2436 2003-04-29 Fernando Perez <fperez@colorado.edu>
2432
2437
2433 * IPython/genutils.py (timings_out): Modified to use the resource
2438 * IPython/genutils.py (timings_out): Modified to use the resource
2434 module, which avoids the wraparound problems of time.clock().
2439 module, which avoids the wraparound problems of time.clock().
2435
2440
2436 2003-04-17 *** Released version 0.2.15pre4
2441 2003-04-17 *** Released version 0.2.15pre4
2437
2442
2438 2003-04-17 Fernando Perez <fperez@colorado.edu>
2443 2003-04-17 Fernando Perez <fperez@colorado.edu>
2439
2444
2440 * setup.py (scriptfiles): Split windows-specific stuff over to a
2445 * setup.py (scriptfiles): Split windows-specific stuff over to a
2441 separate file, in an attempt to have a Windows GUI installer.
2446 separate file, in an attempt to have a Windows GUI installer.
2442 That didn't work, but part of the groundwork is done.
2447 That didn't work, but part of the groundwork is done.
2443
2448
2444 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2449 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2445 indent/unindent with 4 spaces. Particularly useful in combination
2450 indent/unindent with 4 spaces. Particularly useful in combination
2446 with the new auto-indent option.
2451 with the new auto-indent option.
2447
2452
2448 2003-04-16 Fernando Perez <fperez@colorado.edu>
2453 2003-04-16 Fernando Perez <fperez@colorado.edu>
2449
2454
2450 * IPython/Magic.py: various replacements of self.rc for
2455 * IPython/Magic.py: various replacements of self.rc for
2451 self.shell.rc. A lot more remains to be done to fully disentangle
2456 self.shell.rc. A lot more remains to be done to fully disentangle
2452 this class from the main Shell class.
2457 this class from the main Shell class.
2453
2458
2454 * IPython/GnuplotRuntime.py: added checks for mouse support so
2459 * IPython/GnuplotRuntime.py: added checks for mouse support so
2455 that we don't try to enable it if the current gnuplot doesn't
2460 that we don't try to enable it if the current gnuplot doesn't
2456 really support it. Also added checks so that we don't try to
2461 really support it. Also added checks so that we don't try to
2457 enable persist under Windows (where Gnuplot doesn't recognize the
2462 enable persist under Windows (where Gnuplot doesn't recognize the
2458 option).
2463 option).
2459
2464
2460 * IPython/iplib.py (InteractiveShell.interact): Added optional
2465 * IPython/iplib.py (InteractiveShell.interact): Added optional
2461 auto-indenting code, after a patch by King C. Shu
2466 auto-indenting code, after a patch by King C. Shu
2462 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2467 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2463 get along well with pasting indented code. If I ever figure out
2468 get along well with pasting indented code. If I ever figure out
2464 how to make that part go well, it will become on by default.
2469 how to make that part go well, it will become on by default.
2465
2470
2466 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2471 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2467 crash ipython if there was an unmatched '%' in the user's prompt
2472 crash ipython if there was an unmatched '%' in the user's prompt
2468 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2473 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2469
2474
2470 * IPython/iplib.py (InteractiveShell.interact): removed the
2475 * IPython/iplib.py (InteractiveShell.interact): removed the
2471 ability to ask the user whether he wants to crash or not at the
2476 ability to ask the user whether he wants to crash or not at the
2472 'last line' exception handler. Calling functions at that point
2477 'last line' exception handler. Calling functions at that point
2473 changes the stack, and the error reports would have incorrect
2478 changes the stack, and the error reports would have incorrect
2474 tracebacks.
2479 tracebacks.
2475
2480
2476 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2481 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2477 pass through a peger a pretty-printed form of any object. After a
2482 pass through a peger a pretty-printed form of any object. After a
2478 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2483 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2479
2484
2480 2003-04-14 Fernando Perez <fperez@colorado.edu>
2485 2003-04-14 Fernando Perez <fperez@colorado.edu>
2481
2486
2482 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2487 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2483 all files in ~ would be modified at first install (instead of
2488 all files in ~ would be modified at first install (instead of
2484 ~/.ipython). This could be potentially disastrous, as the
2489 ~/.ipython). This could be potentially disastrous, as the
2485 modification (make line-endings native) could damage binary files.
2490 modification (make line-endings native) could damage binary files.
2486
2491
2487 2003-04-10 Fernando Perez <fperez@colorado.edu>
2492 2003-04-10 Fernando Perez <fperez@colorado.edu>
2488
2493
2489 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2494 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2490 handle only lines which are invalid python. This now means that
2495 handle only lines which are invalid python. This now means that
2491 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2496 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2492 for the bug report.
2497 for the bug report.
2493
2498
2494 2003-04-01 Fernando Perez <fperez@colorado.edu>
2499 2003-04-01 Fernando Perez <fperez@colorado.edu>
2495
2500
2496 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2501 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2497 where failing to set sys.last_traceback would crash pdb.pm().
2502 where failing to set sys.last_traceback would crash pdb.pm().
2498 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2503 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2499 report.
2504 report.
2500
2505
2501 2003-03-25 Fernando Perez <fperez@colorado.edu>
2506 2003-03-25 Fernando Perez <fperez@colorado.edu>
2502
2507
2503 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2508 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2504 before printing it (it had a lot of spurious blank lines at the
2509 before printing it (it had a lot of spurious blank lines at the
2505 end).
2510 end).
2506
2511
2507 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2512 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2508 output would be sent 21 times! Obviously people don't use this
2513 output would be sent 21 times! Obviously people don't use this
2509 too often, or I would have heard about it.
2514 too often, or I would have heard about it.
2510
2515
2511 2003-03-24 Fernando Perez <fperez@colorado.edu>
2516 2003-03-24 Fernando Perez <fperez@colorado.edu>
2512
2517
2513 * setup.py (scriptfiles): renamed the data_files parameter from
2518 * setup.py (scriptfiles): renamed the data_files parameter from
2514 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
2519 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
2515 for the patch.
2520 for the patch.
2516
2521
2517 2003-03-20 Fernando Perez <fperez@colorado.edu>
2522 2003-03-20 Fernando Perez <fperez@colorado.edu>
2518
2523
2519 * IPython/genutils.py (error): added error() and fatal()
2524 * IPython/genutils.py (error): added error() and fatal()
2520 functions.
2525 functions.
2521
2526
2522 2003-03-18 *** Released version 0.2.15pre3
2527 2003-03-18 *** Released version 0.2.15pre3
2523
2528
2524 2003-03-18 Fernando Perez <fperez@colorado.edu>
2529 2003-03-18 Fernando Perez <fperez@colorado.edu>
2525
2530
2526 * setupext/install_data_ext.py
2531 * setupext/install_data_ext.py
2527 (install_data_ext.initialize_options): Class contributed by Jack
2532 (install_data_ext.initialize_options): Class contributed by Jack
2528 Moffit for fixing the old distutils hack. He is sending this to
2533 Moffit for fixing the old distutils hack. He is sending this to
2529 the distutils folks so in the future we may not need it as a
2534 the distutils folks so in the future we may not need it as a
2530 private fix.
2535 private fix.
2531
2536
2532 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
2537 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
2533 changes for Debian packaging. See his patch for full details.
2538 changes for Debian packaging. See his patch for full details.
2534 The old distutils hack of making the ipythonrc* files carry a
2539 The old distutils hack of making the ipythonrc* files carry a
2535 bogus .py extension is gone, at last. Examples were moved to a
2540 bogus .py extension is gone, at last. Examples were moved to a
2536 separate subdir under doc/, and the separate executable scripts
2541 separate subdir under doc/, and the separate executable scripts
2537 now live in their own directory. Overall a great cleanup. The
2542 now live in their own directory. Overall a great cleanup. The
2538 manual was updated to use the new files, and setup.py has been
2543 manual was updated to use the new files, and setup.py has been
2539 fixed for this setup.
2544 fixed for this setup.
2540
2545
2541 * IPython/PyColorize.py (Parser.usage): made non-executable and
2546 * IPython/PyColorize.py (Parser.usage): made non-executable and
2542 created a pycolor wrapper around it to be included as a script.
2547 created a pycolor wrapper around it to be included as a script.
2543
2548
2544 2003-03-12 *** Released version 0.2.15pre2
2549 2003-03-12 *** Released version 0.2.15pre2
2545
2550
2546 2003-03-12 Fernando Perez <fperez@colorado.edu>
2551 2003-03-12 Fernando Perez <fperez@colorado.edu>
2547
2552
2548 * IPython/ColorANSI.py (make_color_table): Finally fixed the
2553 * IPython/ColorANSI.py (make_color_table): Finally fixed the
2549 long-standing problem with garbage characters in some terminals.
2554 long-standing problem with garbage characters in some terminals.
2550 The issue was really that the \001 and \002 escapes must _only_ be
2555 The issue was really that the \001 and \002 escapes must _only_ be
2551 passed to input prompts (which call readline), but _never_ to
2556 passed to input prompts (which call readline), but _never_ to
2552 normal text to be printed on screen. I changed ColorANSI to have
2557 normal text to be printed on screen. I changed ColorANSI to have
2553 two classes: TermColors and InputTermColors, each with the
2558 two classes: TermColors and InputTermColors, each with the
2554 appropriate escapes for input prompts or normal text. The code in
2559 appropriate escapes for input prompts or normal text. The code in
2555 Prompts.py got slightly more complicated, but this very old and
2560 Prompts.py got slightly more complicated, but this very old and
2556 annoying bug is finally fixed.
2561 annoying bug is finally fixed.
2557
2562
2558 All the credit for nailing down the real origin of this problem
2563 All the credit for nailing down the real origin of this problem
2559 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
2564 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
2560 *Many* thanks to him for spending quite a bit of effort on this.
2565 *Many* thanks to him for spending quite a bit of effort on this.
2561
2566
2562 2003-03-05 *** Released version 0.2.15pre1
2567 2003-03-05 *** Released version 0.2.15pre1
2563
2568
2564 2003-03-03 Fernando Perez <fperez@colorado.edu>
2569 2003-03-03 Fernando Perez <fperez@colorado.edu>
2565
2570
2566 * IPython/FakeModule.py: Moved the former _FakeModule to a
2571 * IPython/FakeModule.py: Moved the former _FakeModule to a
2567 separate file, because it's also needed by Magic (to fix a similar
2572 separate file, because it's also needed by Magic (to fix a similar
2568 pickle-related issue in @run).
2573 pickle-related issue in @run).
2569
2574
2570 2003-03-02 Fernando Perez <fperez@colorado.edu>
2575 2003-03-02 Fernando Perez <fperez@colorado.edu>
2571
2576
2572 * IPython/Magic.py (Magic.magic_autocall): new magic to control
2577 * IPython/Magic.py (Magic.magic_autocall): new magic to control
2573 the autocall option at runtime.
2578 the autocall option at runtime.
2574 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
2579 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
2575 across Magic.py to start separating Magic from InteractiveShell.
2580 across Magic.py to start separating Magic from InteractiveShell.
2576 (Magic._ofind): Fixed to return proper namespace for dotted
2581 (Magic._ofind): Fixed to return proper namespace for dotted
2577 names. Before, a dotted name would always return 'not currently
2582 names. Before, a dotted name would always return 'not currently
2578 defined', because it would find the 'parent'. s.x would be found,
2583 defined', because it would find the 'parent'. s.x would be found,
2579 but since 'x' isn't defined by itself, it would get confused.
2584 but since 'x' isn't defined by itself, it would get confused.
2580 (Magic.magic_run): Fixed pickling problems reported by Ralf
2585 (Magic.magic_run): Fixed pickling problems reported by Ralf
2581 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
2586 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
2582 that I'd used when Mike Heeter reported similar issues at the
2587 that I'd used when Mike Heeter reported similar issues at the
2583 top-level, but now for @run. It boils down to injecting the
2588 top-level, but now for @run. It boils down to injecting the
2584 namespace where code is being executed with something that looks
2589 namespace where code is being executed with something that looks
2585 enough like a module to fool pickle.dump(). Since a pickle stores
2590 enough like a module to fool pickle.dump(). Since a pickle stores
2586 a named reference to the importing module, we need this for
2591 a named reference to the importing module, we need this for
2587 pickles to save something sensible.
2592 pickles to save something sensible.
2588
2593
2589 * IPython/ipmaker.py (make_IPython): added an autocall option.
2594 * IPython/ipmaker.py (make_IPython): added an autocall option.
2590
2595
2591 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
2596 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
2592 the auto-eval code. Now autocalling is an option, and the code is
2597 the auto-eval code. Now autocalling is an option, and the code is
2593 also vastly safer. There is no more eval() involved at all.
2598 also vastly safer. There is no more eval() involved at all.
2594
2599
2595 2003-03-01 Fernando Perez <fperez@colorado.edu>
2600 2003-03-01 Fernando Perez <fperez@colorado.edu>
2596
2601
2597 * IPython/Magic.py (Magic._ofind): Changed interface to return a
2602 * IPython/Magic.py (Magic._ofind): Changed interface to return a
2598 dict with named keys instead of a tuple.
2603 dict with named keys instead of a tuple.
2599
2604
2600 * IPython: Started using CVS for IPython as of 0.2.15pre1.
2605 * IPython: Started using CVS for IPython as of 0.2.15pre1.
2601
2606
2602 * setup.py (make_shortcut): Fixed message about directories
2607 * setup.py (make_shortcut): Fixed message about directories
2603 created during Windows installation (the directories were ok, just
2608 created during Windows installation (the directories were ok, just
2604 the printed message was misleading). Thanks to Chris Liechti
2609 the printed message was misleading). Thanks to Chris Liechti
2605 <cliechti-AT-gmx.net> for the heads up.
2610 <cliechti-AT-gmx.net> for the heads up.
2606
2611
2607 2003-02-21 Fernando Perez <fperez@colorado.edu>
2612 2003-02-21 Fernando Perez <fperez@colorado.edu>
2608
2613
2609 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
2614 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
2610 of ValueError exception when checking for auto-execution. This
2615 of ValueError exception when checking for auto-execution. This
2611 one is raised by things like Numeric arrays arr.flat when the
2616 one is raised by things like Numeric arrays arr.flat when the
2612 array is non-contiguous.
2617 array is non-contiguous.
2613
2618
2614 2003-01-31 Fernando Perez <fperez@colorado.edu>
2619 2003-01-31 Fernando Perez <fperez@colorado.edu>
2615
2620
2616 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
2621 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
2617 not return any value at all (even though the command would get
2622 not return any value at all (even though the command would get
2618 executed).
2623 executed).
2619 (xsys): Flush stdout right after printing the command to ensure
2624 (xsys): Flush stdout right after printing the command to ensure
2620 proper ordering of commands and command output in the total
2625 proper ordering of commands and command output in the total
2621 output.
2626 output.
2622 (SystemExec/xsys/bq): Switched the names of xsys/bq and
2627 (SystemExec/xsys/bq): Switched the names of xsys/bq and
2623 system/getoutput as defaults. The old ones are kept for
2628 system/getoutput as defaults. The old ones are kept for
2624 compatibility reasons, so no code which uses this library needs
2629 compatibility reasons, so no code which uses this library needs
2625 changing.
2630 changing.
2626
2631
2627 2003-01-27 *** Released version 0.2.14
2632 2003-01-27 *** Released version 0.2.14
2628
2633
2629 2003-01-25 Fernando Perez <fperez@colorado.edu>
2634 2003-01-25 Fernando Perez <fperez@colorado.edu>
2630
2635
2631 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
2636 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
2632 functions defined in previous edit sessions could not be re-edited
2637 functions defined in previous edit sessions could not be re-edited
2633 (because the temp files were immediately removed). Now temp files
2638 (because the temp files were immediately removed). Now temp files
2634 are removed only at IPython's exit.
2639 are removed only at IPython's exit.
2635 (Magic.magic_run): Improved @run to perform shell-like expansions
2640 (Magic.magic_run): Improved @run to perform shell-like expansions
2636 on its arguments (~users and $VARS). With this, @run becomes more
2641 on its arguments (~users and $VARS). With this, @run becomes more
2637 like a normal command-line.
2642 like a normal command-line.
2638
2643
2639 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
2644 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
2640 bugs related to embedding and cleaned up that code. A fairly
2645 bugs related to embedding and cleaned up that code. A fairly
2641 important one was the impossibility to access the global namespace
2646 important one was the impossibility to access the global namespace
2642 through the embedded IPython (only local variables were visible).
2647 through the embedded IPython (only local variables were visible).
2643
2648
2644 2003-01-14 Fernando Perez <fperez@colorado.edu>
2649 2003-01-14 Fernando Perez <fperez@colorado.edu>
2645
2650
2646 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
2651 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
2647 auto-calling to be a bit more conservative. Now it doesn't get
2652 auto-calling to be a bit more conservative. Now it doesn't get
2648 triggered if any of '!=()<>' are in the rest of the input line, to
2653 triggered if any of '!=()<>' are in the rest of the input line, to
2649 allow comparing callables. Thanks to Alex for the heads up.
2654 allow comparing callables. Thanks to Alex for the heads up.
2650
2655
2651 2003-01-07 Fernando Perez <fperez@colorado.edu>
2656 2003-01-07 Fernando Perez <fperez@colorado.edu>
2652
2657
2653 * IPython/genutils.py (page): fixed estimation of the number of
2658 * IPython/genutils.py (page): fixed estimation of the number of
2654 lines in a string to be paged to simply count newlines. This
2659 lines in a string to be paged to simply count newlines. This
2655 prevents over-guessing due to embedded escape sequences. A better
2660 prevents over-guessing due to embedded escape sequences. A better
2656 long-term solution would involve stripping out the control chars
2661 long-term solution would involve stripping out the control chars
2657 for the count, but it's potentially so expensive I just don't
2662 for the count, but it's potentially so expensive I just don't
2658 think it's worth doing.
2663 think it's worth doing.
2659
2664
2660 2002-12-19 *** Released version 0.2.14pre50
2665 2002-12-19 *** Released version 0.2.14pre50
2661
2666
2662 2002-12-19 Fernando Perez <fperez@colorado.edu>
2667 2002-12-19 Fernando Perez <fperez@colorado.edu>
2663
2668
2664 * tools/release (version): Changed release scripts to inform
2669 * tools/release (version): Changed release scripts to inform
2665 Andrea and build a NEWS file with a list of recent changes.
2670 Andrea and build a NEWS file with a list of recent changes.
2666
2671
2667 * IPython/ColorANSI.py (__all__): changed terminal detection
2672 * IPython/ColorANSI.py (__all__): changed terminal detection
2668 code. Seems to work better for xterms without breaking
2673 code. Seems to work better for xterms without breaking
2669 konsole. Will need more testing to determine if WinXP and Mac OSX
2674 konsole. Will need more testing to determine if WinXP and Mac OSX
2670 also work ok.
2675 also work ok.
2671
2676
2672 2002-12-18 *** Released version 0.2.14pre49
2677 2002-12-18 *** Released version 0.2.14pre49
2673
2678
2674 2002-12-18 Fernando Perez <fperez@colorado.edu>
2679 2002-12-18 Fernando Perez <fperez@colorado.edu>
2675
2680
2676 * Docs: added new info about Mac OSX, from Andrea.
2681 * Docs: added new info about Mac OSX, from Andrea.
2677
2682
2678 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
2683 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
2679 allow direct plotting of python strings whose format is the same
2684 allow direct plotting of python strings whose format is the same
2680 of gnuplot data files.
2685 of gnuplot data files.
2681
2686
2682 2002-12-16 Fernando Perez <fperez@colorado.edu>
2687 2002-12-16 Fernando Perez <fperez@colorado.edu>
2683
2688
2684 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
2689 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
2685 value of exit question to be acknowledged.
2690 value of exit question to be acknowledged.
2686
2691
2687 2002-12-03 Fernando Perez <fperez@colorado.edu>
2692 2002-12-03 Fernando Perez <fperez@colorado.edu>
2688
2693
2689 * IPython/ipmaker.py: removed generators, which had been added
2694 * IPython/ipmaker.py: removed generators, which had been added
2690 by mistake in an earlier debugging run. This was causing trouble
2695 by mistake in an earlier debugging run. This was causing trouble
2691 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
2696 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
2692 for pointing this out.
2697 for pointing this out.
2693
2698
2694 2002-11-17 Fernando Perez <fperez@colorado.edu>
2699 2002-11-17 Fernando Perez <fperez@colorado.edu>
2695
2700
2696 * Manual: updated the Gnuplot section.
2701 * Manual: updated the Gnuplot section.
2697
2702
2698 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
2703 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
2699 a much better split of what goes in Runtime and what goes in
2704 a much better split of what goes in Runtime and what goes in
2700 Interactive.
2705 Interactive.
2701
2706
2702 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
2707 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
2703 being imported from iplib.
2708 being imported from iplib.
2704
2709
2705 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
2710 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
2706 for command-passing. Now the global Gnuplot instance is called
2711 for command-passing. Now the global Gnuplot instance is called
2707 'gp' instead of 'g', which was really a far too fragile and
2712 'gp' instead of 'g', which was really a far too fragile and
2708 common name.
2713 common name.
2709
2714
2710 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
2715 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
2711 bounding boxes generated by Gnuplot for square plots.
2716 bounding boxes generated by Gnuplot for square plots.
2712
2717
2713 * IPython/genutils.py (popkey): new function added. I should
2718 * IPython/genutils.py (popkey): new function added. I should
2714 suggest this on c.l.py as a dict method, it seems useful.
2719 suggest this on c.l.py as a dict method, it seems useful.
2715
2720
2716 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
2721 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
2717 to transparently handle PostScript generation. MUCH better than
2722 to transparently handle PostScript generation. MUCH better than
2718 the previous plot_eps/replot_eps (which I removed now). The code
2723 the previous plot_eps/replot_eps (which I removed now). The code
2719 is also fairly clean and well documented now (including
2724 is also fairly clean and well documented now (including
2720 docstrings).
2725 docstrings).
2721
2726
2722 2002-11-13 Fernando Perez <fperez@colorado.edu>
2727 2002-11-13 Fernando Perez <fperez@colorado.edu>
2723
2728
2724 * IPython/Magic.py (Magic.magic_edit): fixed docstring
2729 * IPython/Magic.py (Magic.magic_edit): fixed docstring
2725 (inconsistent with options).
2730 (inconsistent with options).
2726
2731
2727 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
2732 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
2728 manually disabled, I don't know why. Fixed it.
2733 manually disabled, I don't know why. Fixed it.
2729 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
2734 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
2730 eps output.
2735 eps output.
2731
2736
2732 2002-11-12 Fernando Perez <fperez@colorado.edu>
2737 2002-11-12 Fernando Perez <fperez@colorado.edu>
2733
2738
2734 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
2739 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
2735 don't propagate up to caller. Fixes crash reported by François
2740 don't propagate up to caller. Fixes crash reported by François
2736 Pinard.
2741 Pinard.
2737
2742
2738 2002-11-09 Fernando Perez <fperez@colorado.edu>
2743 2002-11-09 Fernando Perez <fperez@colorado.edu>
2739
2744
2740 * IPython/ipmaker.py (make_IPython): fixed problem with writing
2745 * IPython/ipmaker.py (make_IPython): fixed problem with writing
2741 history file for new users.
2746 history file for new users.
2742 (make_IPython): fixed bug where initial install would leave the
2747 (make_IPython): fixed bug where initial install would leave the
2743 user running in the .ipython dir.
2748 user running in the .ipython dir.
2744 (make_IPython): fixed bug where config dir .ipython would be
2749 (make_IPython): fixed bug where config dir .ipython would be
2745 created regardless of the given -ipythondir option. Thanks to Cory
2750 created regardless of the given -ipythondir option. Thanks to Cory
2746 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
2751 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
2747
2752
2748 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
2753 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
2749 type confirmations. Will need to use it in all of IPython's code
2754 type confirmations. Will need to use it in all of IPython's code
2750 consistently.
2755 consistently.
2751
2756
2752 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
2757 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
2753 context to print 31 lines instead of the default 5. This will make
2758 context to print 31 lines instead of the default 5. This will make
2754 the crash reports extremely detailed in case the problem is in
2759 the crash reports extremely detailed in case the problem is in
2755 libraries I don't have access to.
2760 libraries I don't have access to.
2756
2761
2757 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
2762 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
2758 line of defense' code to still crash, but giving users fair
2763 line of defense' code to still crash, but giving users fair
2759 warning. I don't want internal errors to go unreported: if there's
2764 warning. I don't want internal errors to go unreported: if there's
2760 an internal problem, IPython should crash and generate a full
2765 an internal problem, IPython should crash and generate a full
2761 report.
2766 report.
2762
2767
2763 2002-11-08 Fernando Perez <fperez@colorado.edu>
2768 2002-11-08 Fernando Perez <fperez@colorado.edu>
2764
2769
2765 * IPython/iplib.py (InteractiveShell.interact): added code to trap
2770 * IPython/iplib.py (InteractiveShell.interact): added code to trap
2766 otherwise uncaught exceptions which can appear if people set
2771 otherwise uncaught exceptions which can appear if people set
2767 sys.stdout to something badly broken. Thanks to a crash report
2772 sys.stdout to something badly broken. Thanks to a crash report
2768 from henni-AT-mail.brainbot.com.
2773 from henni-AT-mail.brainbot.com.
2769
2774
2770 2002-11-04 Fernando Perez <fperez@colorado.edu>
2775 2002-11-04 Fernando Perez <fperez@colorado.edu>
2771
2776
2772 * IPython/iplib.py (InteractiveShell.interact): added
2777 * IPython/iplib.py (InteractiveShell.interact): added
2773 __IPYTHON__active to the builtins. It's a flag which goes on when
2778 __IPYTHON__active to the builtins. It's a flag which goes on when
2774 the interaction starts and goes off again when it stops. This
2779 the interaction starts and goes off again when it stops. This
2775 allows embedding code to detect being inside IPython. Before this
2780 allows embedding code to detect being inside IPython. Before this
2776 was done via __IPYTHON__, but that only shows that an IPython
2781 was done via __IPYTHON__, but that only shows that an IPython
2777 instance has been created.
2782 instance has been created.
2778
2783
2779 * IPython/Magic.py (Magic.magic_env): I realized that in a
2784 * IPython/Magic.py (Magic.magic_env): I realized that in a
2780 UserDict, instance.data holds the data as a normal dict. So I
2785 UserDict, instance.data holds the data as a normal dict. So I
2781 modified @env to return os.environ.data instead of rebuilding a
2786 modified @env to return os.environ.data instead of rebuilding a
2782 dict by hand.
2787 dict by hand.
2783
2788
2784 2002-11-02 Fernando Perez <fperez@colorado.edu>
2789 2002-11-02 Fernando Perez <fperez@colorado.edu>
2785
2790
2786 * IPython/genutils.py (warn): changed so that level 1 prints no
2791 * IPython/genutils.py (warn): changed so that level 1 prints no
2787 header. Level 2 is now the default (with 'WARNING' header, as
2792 header. Level 2 is now the default (with 'WARNING' header, as
2788 before). I think I tracked all places where changes were needed in
2793 before). I think I tracked all places where changes were needed in
2789 IPython, but outside code using the old level numbering may have
2794 IPython, but outside code using the old level numbering may have
2790 broken.
2795 broken.
2791
2796
2792 * IPython/iplib.py (InteractiveShell.runcode): added this to
2797 * IPython/iplib.py (InteractiveShell.runcode): added this to
2793 handle the tracebacks in SystemExit traps correctly. The previous
2798 handle the tracebacks in SystemExit traps correctly. The previous
2794 code (through interact) was printing more of the stack than
2799 code (through interact) was printing more of the stack than
2795 necessary, showing IPython internal code to the user.
2800 necessary, showing IPython internal code to the user.
2796
2801
2797 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
2802 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
2798 default. Now that the default at the confirmation prompt is yes,
2803 default. Now that the default at the confirmation prompt is yes,
2799 it's not so intrusive. François' argument that ipython sessions
2804 it's not so intrusive. François' argument that ipython sessions
2800 tend to be complex enough not to lose them from an accidental C-d,
2805 tend to be complex enough not to lose them from an accidental C-d,
2801 is a valid one.
2806 is a valid one.
2802
2807
2803 * IPython/iplib.py (InteractiveShell.interact): added a
2808 * IPython/iplib.py (InteractiveShell.interact): added a
2804 showtraceback() call to the SystemExit trap, and modified the exit
2809 showtraceback() call to the SystemExit trap, and modified the exit
2805 confirmation to have yes as the default.
2810 confirmation to have yes as the default.
2806
2811
2807 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
2812 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
2808 this file. It's been gone from the code for a long time, this was
2813 this file. It's been gone from the code for a long time, this was
2809 simply leftover junk.
2814 simply leftover junk.
2810
2815
2811 2002-11-01 Fernando Perez <fperez@colorado.edu>
2816 2002-11-01 Fernando Perez <fperez@colorado.edu>
2812
2817
2813 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
2818 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
2814 added. If set, IPython now traps EOF and asks for
2819 added. If set, IPython now traps EOF and asks for
2815 confirmation. After a request by François Pinard.
2820 confirmation. After a request by François Pinard.
2816
2821
2817 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
2822 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
2818 of @abort, and with a new (better) mechanism for handling the
2823 of @abort, and with a new (better) mechanism for handling the
2819 exceptions.
2824 exceptions.
2820
2825
2821 2002-10-27 Fernando Perez <fperez@colorado.edu>
2826 2002-10-27 Fernando Perez <fperez@colorado.edu>
2822
2827
2823 * IPython/usage.py (__doc__): updated the --help information and
2828 * IPython/usage.py (__doc__): updated the --help information and
2824 the ipythonrc file to indicate that -log generates
2829 the ipythonrc file to indicate that -log generates
2825 ./ipython.log. Also fixed the corresponding info in @logstart.
2830 ./ipython.log. Also fixed the corresponding info in @logstart.
2826 This and several other fixes in the manuals thanks to reports by
2831 This and several other fixes in the manuals thanks to reports by
2827 François Pinard <pinard-AT-iro.umontreal.ca>.
2832 François Pinard <pinard-AT-iro.umontreal.ca>.
2828
2833
2829 * IPython/Logger.py (Logger.switch_log): Fixed error message to
2834 * IPython/Logger.py (Logger.switch_log): Fixed error message to
2830 refer to @logstart (instead of @log, which doesn't exist).
2835 refer to @logstart (instead of @log, which doesn't exist).
2831
2836
2832 * IPython/iplib.py (InteractiveShell._prefilter): fixed
2837 * IPython/iplib.py (InteractiveShell._prefilter): fixed
2833 AttributeError crash. Thanks to Christopher Armstrong
2838 AttributeError crash. Thanks to Christopher Armstrong
2834 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
2839 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
2835 introduced recently (in 0.2.14pre37) with the fix to the eval
2840 introduced recently (in 0.2.14pre37) with the fix to the eval
2836 problem mentioned below.
2841 problem mentioned below.
2837
2842
2838 2002-10-17 Fernando Perez <fperez@colorado.edu>
2843 2002-10-17 Fernando Perez <fperez@colorado.edu>
2839
2844
2840 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
2845 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
2841 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
2846 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
2842
2847
2843 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
2848 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
2844 this function to fix a problem reported by Alex Schmolck. He saw
2849 this function to fix a problem reported by Alex Schmolck. He saw
2845 it with list comprehensions and generators, which were getting
2850 it with list comprehensions and generators, which were getting
2846 called twice. The real problem was an 'eval' call in testing for
2851 called twice. The real problem was an 'eval' call in testing for
2847 automagic which was evaluating the input line silently.
2852 automagic which was evaluating the input line silently.
2848
2853
2849 This is a potentially very nasty bug, if the input has side
2854 This is a potentially very nasty bug, if the input has side
2850 effects which must not be repeated. The code is much cleaner now,
2855 effects which must not be repeated. The code is much cleaner now,
2851 without any blanket 'except' left and with a regexp test for
2856 without any blanket 'except' left and with a regexp test for
2852 actual function names.
2857 actual function names.
2853
2858
2854 But an eval remains, which I'm not fully comfortable with. I just
2859 But an eval remains, which I'm not fully comfortable with. I just
2855 don't know how to find out if an expression could be a callable in
2860 don't know how to find out if an expression could be a callable in
2856 the user's namespace without doing an eval on the string. However
2861 the user's namespace without doing an eval on the string. However
2857 that string is now much more strictly checked so that no code
2862 that string is now much more strictly checked so that no code
2858 slips by, so the eval should only happen for things that can
2863 slips by, so the eval should only happen for things that can
2859 really be only function/method names.
2864 really be only function/method names.
2860
2865
2861 2002-10-15 Fernando Perez <fperez@colorado.edu>
2866 2002-10-15 Fernando Perez <fperez@colorado.edu>
2862
2867
2863 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
2868 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
2864 OSX information to main manual, removed README_Mac_OSX file from
2869 OSX information to main manual, removed README_Mac_OSX file from
2865 distribution. Also updated credits for recent additions.
2870 distribution. Also updated credits for recent additions.
2866
2871
2867 2002-10-10 Fernando Perez <fperez@colorado.edu>
2872 2002-10-10 Fernando Perez <fperez@colorado.edu>
2868
2873
2869 * README_Mac_OSX: Added a README for Mac OSX users for fixing
2874 * README_Mac_OSX: Added a README for Mac OSX users for fixing
2870 terminal-related issues. Many thanks to Andrea Riciputi
2875 terminal-related issues. Many thanks to Andrea Riciputi
2871 <andrea.riciputi-AT-libero.it> for writing it.
2876 <andrea.riciputi-AT-libero.it> for writing it.
2872
2877
2873 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
2878 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
2874 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2879 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2875
2880
2876 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
2881 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
2877 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
2882 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
2878 <syver-en-AT-online.no> who both submitted patches for this problem.
2883 <syver-en-AT-online.no> who both submitted patches for this problem.
2879
2884
2880 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
2885 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
2881 global embedding to make sure that things don't overwrite user
2886 global embedding to make sure that things don't overwrite user
2882 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
2887 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
2883
2888
2884 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
2889 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
2885 compatibility. Thanks to Hayden Callow
2890 compatibility. Thanks to Hayden Callow
2886 <h.callow-AT-elec.canterbury.ac.nz>
2891 <h.callow-AT-elec.canterbury.ac.nz>
2887
2892
2888 2002-10-04 Fernando Perez <fperez@colorado.edu>
2893 2002-10-04 Fernando Perez <fperez@colorado.edu>
2889
2894
2890 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
2895 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
2891 Gnuplot.File objects.
2896 Gnuplot.File objects.
2892
2897
2893 2002-07-23 Fernando Perez <fperez@colorado.edu>
2898 2002-07-23 Fernando Perez <fperez@colorado.edu>
2894
2899
2895 * IPython/genutils.py (timing): Added timings() and timing() for
2900 * IPython/genutils.py (timing): Added timings() and timing() for
2896 quick access to the most commonly needed data, the execution
2901 quick access to the most commonly needed data, the execution
2897 times. Old timing() renamed to timings_out().
2902 times. Old timing() renamed to timings_out().
2898
2903
2899 2002-07-18 Fernando Perez <fperez@colorado.edu>
2904 2002-07-18 Fernando Perez <fperez@colorado.edu>
2900
2905
2901 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
2906 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
2902 bug with nested instances disrupting the parent's tab completion.
2907 bug with nested instances disrupting the parent's tab completion.
2903
2908
2904 * IPython/iplib.py (all_completions): Added Alex Schmolck's
2909 * IPython/iplib.py (all_completions): Added Alex Schmolck's
2905 all_completions code to begin the emacs integration.
2910 all_completions code to begin the emacs integration.
2906
2911
2907 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
2912 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
2908 argument to allow titling individual arrays when plotting.
2913 argument to allow titling individual arrays when plotting.
2909
2914
2910 2002-07-15 Fernando Perez <fperez@colorado.edu>
2915 2002-07-15 Fernando Perez <fperez@colorado.edu>
2911
2916
2912 * setup.py (make_shortcut): changed to retrieve the value of
2917 * setup.py (make_shortcut): changed to retrieve the value of
2913 'Program Files' directory from the registry (this value changes in
2918 'Program Files' directory from the registry (this value changes in
2914 non-english versions of Windows). Thanks to Thomas Fanslau
2919 non-english versions of Windows). Thanks to Thomas Fanslau
2915 <tfanslau-AT-gmx.de> for the report.
2920 <tfanslau-AT-gmx.de> for the report.
2916
2921
2917 2002-07-10 Fernando Perez <fperez@colorado.edu>
2922 2002-07-10 Fernando Perez <fperez@colorado.edu>
2918
2923
2919 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
2924 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
2920 a bug in pdb, which crashes if a line with only whitespace is
2925 a bug in pdb, which crashes if a line with only whitespace is
2921 entered. Bug report submitted to sourceforge.
2926 entered. Bug report submitted to sourceforge.
2922
2927
2923 2002-07-09 Fernando Perez <fperez@colorado.edu>
2928 2002-07-09 Fernando Perez <fperez@colorado.edu>
2924
2929
2925 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
2930 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
2926 reporting exceptions (it's a bug in inspect.py, I just set a
2931 reporting exceptions (it's a bug in inspect.py, I just set a
2927 workaround).
2932 workaround).
2928
2933
2929 2002-07-08 Fernando Perez <fperez@colorado.edu>
2934 2002-07-08 Fernando Perez <fperez@colorado.edu>
2930
2935
2931 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
2936 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
2932 __IPYTHON__ in __builtins__ to show up in user_ns.
2937 __IPYTHON__ in __builtins__ to show up in user_ns.
2933
2938
2934 2002-07-03 Fernando Perez <fperez@colorado.edu>
2939 2002-07-03 Fernando Perez <fperez@colorado.edu>
2935
2940
2936 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
2941 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
2937 name from @gp_set_instance to @gp_set_default.
2942 name from @gp_set_instance to @gp_set_default.
2938
2943
2939 * IPython/ipmaker.py (make_IPython): default editor value set to
2944 * IPython/ipmaker.py (make_IPython): default editor value set to
2940 '0' (a string), to match the rc file. Otherwise will crash when
2945 '0' (a string), to match the rc file. Otherwise will crash when
2941 .strip() is called on it.
2946 .strip() is called on it.
2942
2947
2943
2948
2944 2002-06-28 Fernando Perez <fperez@colorado.edu>
2949 2002-06-28 Fernando Perez <fperez@colorado.edu>
2945
2950
2946 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
2951 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
2947 of files in current directory when a file is executed via
2952 of files in current directory when a file is executed via
2948 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
2953 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
2949
2954
2950 * setup.py (manfiles): fix for rpm builds, submitted by RA
2955 * setup.py (manfiles): fix for rpm builds, submitted by RA
2951 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
2956 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
2952
2957
2953 * IPython/ipmaker.py (make_IPython): fixed lookup of default
2958 * IPython/ipmaker.py (make_IPython): fixed lookup of default
2954 editor when set to '0'. Problem was, '0' evaluates to True (it's a
2959 editor when set to '0'. Problem was, '0' evaluates to True (it's a
2955 string!). A. Schmolck caught this one.
2960 string!). A. Schmolck caught this one.
2956
2961
2957 2002-06-27 Fernando Perez <fperez@colorado.edu>
2962 2002-06-27 Fernando Perez <fperez@colorado.edu>
2958
2963
2959 * IPython/ipmaker.py (make_IPython): fixed bug when running user
2964 * IPython/ipmaker.py (make_IPython): fixed bug when running user
2960 defined files at the cmd line. __name__ wasn't being set to
2965 defined files at the cmd line. __name__ wasn't being set to
2961 __main__.
2966 __main__.
2962
2967
2963 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
2968 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
2964 regular lists and tuples besides Numeric arrays.
2969 regular lists and tuples besides Numeric arrays.
2965
2970
2966 * IPython/Prompts.py (CachedOutput.__call__): Added output
2971 * IPython/Prompts.py (CachedOutput.__call__): Added output
2967 supression for input ending with ';'. Similar to Mathematica and
2972 supression for input ending with ';'. Similar to Mathematica and
2968 Matlab. The _* vars and Out[] list are still updated, just like
2973 Matlab. The _* vars and Out[] list are still updated, just like
2969 Mathematica behaves.
2974 Mathematica behaves.
2970
2975
2971 2002-06-25 Fernando Perez <fperez@colorado.edu>
2976 2002-06-25 Fernando Perez <fperez@colorado.edu>
2972
2977
2973 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
2978 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
2974 .ini extensions for profiels under Windows.
2979 .ini extensions for profiels under Windows.
2975
2980
2976 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
2981 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
2977 string form. Fix contributed by Alexander Schmolck
2982 string form. Fix contributed by Alexander Schmolck
2978 <a.schmolck-AT-gmx.net>
2983 <a.schmolck-AT-gmx.net>
2979
2984
2980 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
2985 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
2981 pre-configured Gnuplot instance.
2986 pre-configured Gnuplot instance.
2982
2987
2983 2002-06-21 Fernando Perez <fperez@colorado.edu>
2988 2002-06-21 Fernando Perez <fperez@colorado.edu>
2984
2989
2985 * IPython/numutils.py (exp_safe): new function, works around the
2990 * IPython/numutils.py (exp_safe): new function, works around the
2986 underflow problems in Numeric.
2991 underflow problems in Numeric.
2987 (log2): New fn. Safe log in base 2: returns exact integer answer
2992 (log2): New fn. Safe log in base 2: returns exact integer answer
2988 for exact integer powers of 2.
2993 for exact integer powers of 2.
2989
2994
2990 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
2995 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
2991 properly.
2996 properly.
2992
2997
2993 2002-06-20 Fernando Perez <fperez@colorado.edu>
2998 2002-06-20 Fernando Perez <fperez@colorado.edu>
2994
2999
2995 * IPython/genutils.py (timing): new function like
3000 * IPython/genutils.py (timing): new function like
2996 Mathematica's. Similar to time_test, but returns more info.
3001 Mathematica's. Similar to time_test, but returns more info.
2997
3002
2998 2002-06-18 Fernando Perez <fperez@colorado.edu>
3003 2002-06-18 Fernando Perez <fperez@colorado.edu>
2999
3004
3000 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3005 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3001 according to Mike Heeter's suggestions.
3006 according to Mike Heeter's suggestions.
3002
3007
3003 2002-06-16 Fernando Perez <fperez@colorado.edu>
3008 2002-06-16 Fernando Perez <fperez@colorado.edu>
3004
3009
3005 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3010 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3006 system. GnuplotMagic is gone as a user-directory option. New files
3011 system. GnuplotMagic is gone as a user-directory option. New files
3007 make it easier to use all the gnuplot stuff both from external
3012 make it easier to use all the gnuplot stuff both from external
3008 programs as well as from IPython. Had to rewrite part of
3013 programs as well as from IPython. Had to rewrite part of
3009 hardcopy() b/c of a strange bug: often the ps files simply don't
3014 hardcopy() b/c of a strange bug: often the ps files simply don't
3010 get created, and require a repeat of the command (often several
3015 get created, and require a repeat of the command (often several
3011 times).
3016 times).
3012
3017
3013 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3018 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3014 resolve output channel at call time, so that if sys.stderr has
3019 resolve output channel at call time, so that if sys.stderr has
3015 been redirected by user this gets honored.
3020 been redirected by user this gets honored.
3016
3021
3017 2002-06-13 Fernando Perez <fperez@colorado.edu>
3022 2002-06-13 Fernando Perez <fperez@colorado.edu>
3018
3023
3019 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3024 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3020 IPShell. Kept a copy with the old names to avoid breaking people's
3025 IPShell. Kept a copy with the old names to avoid breaking people's
3021 embedded code.
3026 embedded code.
3022
3027
3023 * IPython/ipython: simplified it to the bare minimum after
3028 * IPython/ipython: simplified it to the bare minimum after
3024 Holger's suggestions. Added info about how to use it in
3029 Holger's suggestions. Added info about how to use it in
3025 PYTHONSTARTUP.
3030 PYTHONSTARTUP.
3026
3031
3027 * IPython/Shell.py (IPythonShell): changed the options passing
3032 * IPython/Shell.py (IPythonShell): changed the options passing
3028 from a string with funky %s replacements to a straight list. Maybe
3033 from a string with funky %s replacements to a straight list. Maybe
3029 a bit more typing, but it follows sys.argv conventions, so there's
3034 a bit more typing, but it follows sys.argv conventions, so there's
3030 less special-casing to remember.
3035 less special-casing to remember.
3031
3036
3032 2002-06-12 Fernando Perez <fperez@colorado.edu>
3037 2002-06-12 Fernando Perez <fperez@colorado.edu>
3033
3038
3034 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3039 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3035 command. Thanks to a suggestion by Mike Heeter.
3040 command. Thanks to a suggestion by Mike Heeter.
3036 (Magic.magic_pfile): added behavior to look at filenames if given
3041 (Magic.magic_pfile): added behavior to look at filenames if given
3037 arg is not a defined object.
3042 arg is not a defined object.
3038 (Magic.magic_save): New @save function to save code snippets. Also
3043 (Magic.magic_save): New @save function to save code snippets. Also
3039 a Mike Heeter idea.
3044 a Mike Heeter idea.
3040
3045
3041 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3046 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3042 plot() and replot(). Much more convenient now, especially for
3047 plot() and replot(). Much more convenient now, especially for
3043 interactive use.
3048 interactive use.
3044
3049
3045 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3050 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3046 filenames.
3051 filenames.
3047
3052
3048 2002-06-02 Fernando Perez <fperez@colorado.edu>
3053 2002-06-02 Fernando Perez <fperez@colorado.edu>
3049
3054
3050 * IPython/Struct.py (Struct.__init__): modified to admit
3055 * IPython/Struct.py (Struct.__init__): modified to admit
3051 initialization via another struct.
3056 initialization via another struct.
3052
3057
3053 * IPython/genutils.py (SystemExec.__init__): New stateful
3058 * IPython/genutils.py (SystemExec.__init__): New stateful
3054 interface to xsys and bq. Useful for writing system scripts.
3059 interface to xsys and bq. Useful for writing system scripts.
3055
3060
3056 2002-05-30 Fernando Perez <fperez@colorado.edu>
3061 2002-05-30 Fernando Perez <fperez@colorado.edu>
3057
3062
3058 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3063 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3059 documents. This will make the user download smaller (it's getting
3064 documents. This will make the user download smaller (it's getting
3060 too big).
3065 too big).
3061
3066
3062 2002-05-29 Fernando Perez <fperez@colorado.edu>
3067 2002-05-29 Fernando Perez <fperez@colorado.edu>
3063
3068
3064 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3069 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3065 fix problems with shelve and pickle. Seems to work, but I don't
3070 fix problems with shelve and pickle. Seems to work, but I don't
3066 know if corner cases break it. Thanks to Mike Heeter
3071 know if corner cases break it. Thanks to Mike Heeter
3067 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3072 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3068
3073
3069 2002-05-24 Fernando Perez <fperez@colorado.edu>
3074 2002-05-24 Fernando Perez <fperez@colorado.edu>
3070
3075
3071 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3076 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3072 macros having broken.
3077 macros having broken.
3073
3078
3074 2002-05-21 Fernando Perez <fperez@colorado.edu>
3079 2002-05-21 Fernando Perez <fperez@colorado.edu>
3075
3080
3076 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3081 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3077 introduced logging bug: all history before logging started was
3082 introduced logging bug: all history before logging started was
3078 being written one character per line! This came from the redesign
3083 being written one character per line! This came from the redesign
3079 of the input history as a special list which slices to strings,
3084 of the input history as a special list which slices to strings,
3080 not to lists.
3085 not to lists.
3081
3086
3082 2002-05-20 Fernando Perez <fperez@colorado.edu>
3087 2002-05-20 Fernando Perez <fperez@colorado.edu>
3083
3088
3084 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3089 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3085 be an attribute of all classes in this module. The design of these
3090 be an attribute of all classes in this module. The design of these
3086 classes needs some serious overhauling.
3091 classes needs some serious overhauling.
3087
3092
3088 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3093 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3089 which was ignoring '_' in option names.
3094 which was ignoring '_' in option names.
3090
3095
3091 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3096 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3092 'Verbose_novars' to 'Context' and made it the new default. It's a
3097 'Verbose_novars' to 'Context' and made it the new default. It's a
3093 bit more readable and also safer than verbose.
3098 bit more readable and also safer than verbose.
3094
3099
3095 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3100 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3096 triple-quoted strings.
3101 triple-quoted strings.
3097
3102
3098 * IPython/OInspect.py (__all__): new module exposing the object
3103 * IPython/OInspect.py (__all__): new module exposing the object
3099 introspection facilities. Now the corresponding magics are dummy
3104 introspection facilities. Now the corresponding magics are dummy
3100 wrappers around this. Having this module will make it much easier
3105 wrappers around this. Having this module will make it much easier
3101 to put these functions into our modified pdb.
3106 to put these functions into our modified pdb.
3102 This new object inspector system uses the new colorizing module,
3107 This new object inspector system uses the new colorizing module,
3103 so source code and other things are nicely syntax highlighted.
3108 so source code and other things are nicely syntax highlighted.
3104
3109
3105 2002-05-18 Fernando Perez <fperez@colorado.edu>
3110 2002-05-18 Fernando Perez <fperez@colorado.edu>
3106
3111
3107 * IPython/ColorANSI.py: Split the coloring tools into a separate
3112 * IPython/ColorANSI.py: Split the coloring tools into a separate
3108 module so I can use them in other code easier (they were part of
3113 module so I can use them in other code easier (they were part of
3109 ultraTB).
3114 ultraTB).
3110
3115
3111 2002-05-17 Fernando Perez <fperez@colorado.edu>
3116 2002-05-17 Fernando Perez <fperez@colorado.edu>
3112
3117
3113 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3118 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3114 fixed it to set the global 'g' also to the called instance, as
3119 fixed it to set the global 'g' also to the called instance, as
3115 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3120 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3116 user's 'g' variables).
3121 user's 'g' variables).
3117
3122
3118 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3123 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3119 global variables (aliases to _ih,_oh) so that users which expect
3124 global variables (aliases to _ih,_oh) so that users which expect
3120 In[5] or Out[7] to work aren't unpleasantly surprised.
3125 In[5] or Out[7] to work aren't unpleasantly surprised.
3121 (InputList.__getslice__): new class to allow executing slices of
3126 (InputList.__getslice__): new class to allow executing slices of
3122 input history directly. Very simple class, complements the use of
3127 input history directly. Very simple class, complements the use of
3123 macros.
3128 macros.
3124
3129
3125 2002-05-16 Fernando Perez <fperez@colorado.edu>
3130 2002-05-16 Fernando Perez <fperez@colorado.edu>
3126
3131
3127 * setup.py (docdirbase): make doc directory be just doc/IPython
3132 * setup.py (docdirbase): make doc directory be just doc/IPython
3128 without version numbers, it will reduce clutter for users.
3133 without version numbers, it will reduce clutter for users.
3129
3134
3130 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3135 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3131 execfile call to prevent possible memory leak. See for details:
3136 execfile call to prevent possible memory leak. See for details:
3132 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3137 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3133
3138
3134 2002-05-15 Fernando Perez <fperez@colorado.edu>
3139 2002-05-15 Fernando Perez <fperez@colorado.edu>
3135
3140
3136 * IPython/Magic.py (Magic.magic_psource): made the object
3141 * IPython/Magic.py (Magic.magic_psource): made the object
3137 introspection names be more standard: pdoc, pdef, pfile and
3142 introspection names be more standard: pdoc, pdef, pfile and
3138 psource. They all print/page their output, and it makes
3143 psource. They all print/page their output, and it makes
3139 remembering them easier. Kept old names for compatibility as
3144 remembering them easier. Kept old names for compatibility as
3140 aliases.
3145 aliases.
3141
3146
3142 2002-05-14 Fernando Perez <fperez@colorado.edu>
3147 2002-05-14 Fernando Perez <fperez@colorado.edu>
3143
3148
3144 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3149 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3145 what the mouse problem was. The trick is to use gnuplot with temp
3150 what the mouse problem was. The trick is to use gnuplot with temp
3146 files and NOT with pipes (for data communication), because having
3151 files and NOT with pipes (for data communication), because having
3147 both pipes and the mouse on is bad news.
3152 both pipes and the mouse on is bad news.
3148
3153
3149 2002-05-13 Fernando Perez <fperez@colorado.edu>
3154 2002-05-13 Fernando Perez <fperez@colorado.edu>
3150
3155
3151 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3156 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3152 bug. Information would be reported about builtins even when
3157 bug. Information would be reported about builtins even when
3153 user-defined functions overrode them.
3158 user-defined functions overrode them.
3154
3159
3155 2002-05-11 Fernando Perez <fperez@colorado.edu>
3160 2002-05-11 Fernando Perez <fperez@colorado.edu>
3156
3161
3157 * IPython/__init__.py (__all__): removed FlexCompleter from
3162 * IPython/__init__.py (__all__): removed FlexCompleter from
3158 __all__ so that things don't fail in platforms without readline.
3163 __all__ so that things don't fail in platforms without readline.
3159
3164
3160 2002-05-10 Fernando Perez <fperez@colorado.edu>
3165 2002-05-10 Fernando Perez <fperez@colorado.edu>
3161
3166
3162 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3167 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3163 it requires Numeric, effectively making Numeric a dependency for
3168 it requires Numeric, effectively making Numeric a dependency for
3164 IPython.
3169 IPython.
3165
3170
3166 * Released 0.2.13
3171 * Released 0.2.13
3167
3172
3168 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3173 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3169 profiler interface. Now all the major options from the profiler
3174 profiler interface. Now all the major options from the profiler
3170 module are directly supported in IPython, both for single
3175 module are directly supported in IPython, both for single
3171 expressions (@prun) and for full programs (@run -p).
3176 expressions (@prun) and for full programs (@run -p).
3172
3177
3173 2002-05-09 Fernando Perez <fperez@colorado.edu>
3178 2002-05-09 Fernando Perez <fperez@colorado.edu>
3174
3179
3175 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3180 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3176 magic properly formatted for screen.
3181 magic properly formatted for screen.
3177
3182
3178 * setup.py (make_shortcut): Changed things to put pdf version in
3183 * setup.py (make_shortcut): Changed things to put pdf version in
3179 doc/ instead of doc/manual (had to change lyxport a bit).
3184 doc/ instead of doc/manual (had to change lyxport a bit).
3180
3185
3181 * IPython/Magic.py (Profile.string_stats): made profile runs go
3186 * IPython/Magic.py (Profile.string_stats): made profile runs go
3182 through pager (they are long and a pager allows searching, saving,
3187 through pager (they are long and a pager allows searching, saving,
3183 etc.)
3188 etc.)
3184
3189
3185 2002-05-08 Fernando Perez <fperez@colorado.edu>
3190 2002-05-08 Fernando Perez <fperez@colorado.edu>
3186
3191
3187 * Released 0.2.12
3192 * Released 0.2.12
3188
3193
3189 2002-05-06 Fernando Perez <fperez@colorado.edu>
3194 2002-05-06 Fernando Perez <fperez@colorado.edu>
3190
3195
3191 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3196 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3192 introduced); 'hist n1 n2' was broken.
3197 introduced); 'hist n1 n2' was broken.
3193 (Magic.magic_pdb): added optional on/off arguments to @pdb
3198 (Magic.magic_pdb): added optional on/off arguments to @pdb
3194 (Magic.magic_run): added option -i to @run, which executes code in
3199 (Magic.magic_run): added option -i to @run, which executes code in
3195 the IPython namespace instead of a clean one. Also added @irun as
3200 the IPython namespace instead of a clean one. Also added @irun as
3196 an alias to @run -i.
3201 an alias to @run -i.
3197
3202
3198 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3203 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3199 fixed (it didn't really do anything, the namespaces were wrong).
3204 fixed (it didn't really do anything, the namespaces were wrong).
3200
3205
3201 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3206 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3202
3207
3203 * IPython/__init__.py (__all__): Fixed package namespace, now
3208 * IPython/__init__.py (__all__): Fixed package namespace, now
3204 'import IPython' does give access to IPython.<all> as
3209 'import IPython' does give access to IPython.<all> as
3205 expected. Also renamed __release__ to Release.
3210 expected. Also renamed __release__ to Release.
3206
3211
3207 * IPython/Debugger.py (__license__): created new Pdb class which
3212 * IPython/Debugger.py (__license__): created new Pdb class which
3208 functions like a drop-in for the normal pdb.Pdb but does NOT
3213 functions like a drop-in for the normal pdb.Pdb but does NOT
3209 import readline by default. This way it doesn't muck up IPython's
3214 import readline by default. This way it doesn't muck up IPython's
3210 readline handling, and now tab-completion finally works in the
3215 readline handling, and now tab-completion finally works in the
3211 debugger -- sort of. It completes things globally visible, but the
3216 debugger -- sort of. It completes things globally visible, but the
3212 completer doesn't track the stack as pdb walks it. That's a bit
3217 completer doesn't track the stack as pdb walks it. That's a bit
3213 tricky, and I'll have to implement it later.
3218 tricky, and I'll have to implement it later.
3214
3219
3215 2002-05-05 Fernando Perez <fperez@colorado.edu>
3220 2002-05-05 Fernando Perez <fperez@colorado.edu>
3216
3221
3217 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3222 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3218 magic docstrings when printed via ? (explicit \'s were being
3223 magic docstrings when printed via ? (explicit \'s were being
3219 printed).
3224 printed).
3220
3225
3221 * IPython/ipmaker.py (make_IPython): fixed namespace
3226 * IPython/ipmaker.py (make_IPython): fixed namespace
3222 identification bug. Now variables loaded via logs or command-line
3227 identification bug. Now variables loaded via logs or command-line
3223 files are recognized in the interactive namespace by @who.
3228 files are recognized in the interactive namespace by @who.
3224
3229
3225 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3230 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3226 log replay system stemming from the string form of Structs.
3231 log replay system stemming from the string form of Structs.
3227
3232
3228 * IPython/Magic.py (Macro.__init__): improved macros to properly
3233 * IPython/Magic.py (Macro.__init__): improved macros to properly
3229 handle magic commands in them.
3234 handle magic commands in them.
3230 (Magic.magic_logstart): usernames are now expanded so 'logstart
3235 (Magic.magic_logstart): usernames are now expanded so 'logstart
3231 ~/mylog' now works.
3236 ~/mylog' now works.
3232
3237
3233 * IPython/iplib.py (complete): fixed bug where paths starting with
3238 * IPython/iplib.py (complete): fixed bug where paths starting with
3234 '/' would be completed as magic names.
3239 '/' would be completed as magic names.
3235
3240
3236 2002-05-04 Fernando Perez <fperez@colorado.edu>
3241 2002-05-04 Fernando Perez <fperez@colorado.edu>
3237
3242
3238 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3243 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3239 allow running full programs under the profiler's control.
3244 allow running full programs under the profiler's control.
3240
3245
3241 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3246 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3242 mode to report exceptions verbosely but without formatting
3247 mode to report exceptions verbosely but without formatting
3243 variables. This addresses the issue of ipython 'freezing' (it's
3248 variables. This addresses the issue of ipython 'freezing' (it's
3244 not frozen, but caught in an expensive formatting loop) when huge
3249 not frozen, but caught in an expensive formatting loop) when huge
3245 variables are in the context of an exception.
3250 variables are in the context of an exception.
3246 (VerboseTB.text): Added '--->' markers at line where exception was
3251 (VerboseTB.text): Added '--->' markers at line where exception was
3247 triggered. Much clearer to read, especially in NoColor modes.
3252 triggered. Much clearer to read, especially in NoColor modes.
3248
3253
3249 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3254 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3250 implemented in reverse when changing to the new parse_options().
3255 implemented in reverse when changing to the new parse_options().
3251
3256
3252 2002-05-03 Fernando Perez <fperez@colorado.edu>
3257 2002-05-03 Fernando Perez <fperez@colorado.edu>
3253
3258
3254 * IPython/Magic.py (Magic.parse_options): new function so that
3259 * IPython/Magic.py (Magic.parse_options): new function so that
3255 magics can parse options easier.
3260 magics can parse options easier.
3256 (Magic.magic_prun): new function similar to profile.run(),
3261 (Magic.magic_prun): new function similar to profile.run(),
3257 suggested by Chris Hart.
3262 suggested by Chris Hart.
3258 (Magic.magic_cd): fixed behavior so that it only changes if
3263 (Magic.magic_cd): fixed behavior so that it only changes if
3259 directory actually is in history.
3264 directory actually is in history.
3260
3265
3261 * IPython/usage.py (__doc__): added information about potential
3266 * IPython/usage.py (__doc__): added information about potential
3262 slowness of Verbose exception mode when there are huge data
3267 slowness of Verbose exception mode when there are huge data
3263 structures to be formatted (thanks to Archie Paulson).
3268 structures to be formatted (thanks to Archie Paulson).
3264
3269
3265 * IPython/ipmaker.py (make_IPython): Changed default logging
3270 * IPython/ipmaker.py (make_IPython): Changed default logging
3266 (when simply called with -log) to use curr_dir/ipython.log in
3271 (when simply called with -log) to use curr_dir/ipython.log in
3267 rotate mode. Fixed crash which was occuring with -log before
3272 rotate mode. Fixed crash which was occuring with -log before
3268 (thanks to Jim Boyle).
3273 (thanks to Jim Boyle).
3269
3274
3270 2002-05-01 Fernando Perez <fperez@colorado.edu>
3275 2002-05-01 Fernando Perez <fperez@colorado.edu>
3271
3276
3272 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3277 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3273 was nasty -- though somewhat of a corner case).
3278 was nasty -- though somewhat of a corner case).
3274
3279
3275 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3280 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3276 text (was a bug).
3281 text (was a bug).
3277
3282
3278 2002-04-30 Fernando Perez <fperez@colorado.edu>
3283 2002-04-30 Fernando Perez <fperez@colorado.edu>
3279
3284
3280 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3285 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3281 a print after ^D or ^C from the user so that the In[] prompt
3286 a print after ^D or ^C from the user so that the In[] prompt
3282 doesn't over-run the gnuplot one.
3287 doesn't over-run the gnuplot one.
3283
3288
3284 2002-04-29 Fernando Perez <fperez@colorado.edu>
3289 2002-04-29 Fernando Perez <fperez@colorado.edu>
3285
3290
3286 * Released 0.2.10
3291 * Released 0.2.10
3287
3292
3288 * IPython/__release__.py (version): get date dynamically.
3293 * IPython/__release__.py (version): get date dynamically.
3289
3294
3290 * Misc. documentation updates thanks to Arnd's comments. Also ran
3295 * Misc. documentation updates thanks to Arnd's comments. Also ran
3291 a full spellcheck on the manual (hadn't been done in a while).
3296 a full spellcheck on the manual (hadn't been done in a while).
3292
3297
3293 2002-04-27 Fernando Perez <fperez@colorado.edu>
3298 2002-04-27 Fernando Perez <fperez@colorado.edu>
3294
3299
3295 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3300 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3296 starting a log in mid-session would reset the input history list.
3301 starting a log in mid-session would reset the input history list.
3297
3302
3298 2002-04-26 Fernando Perez <fperez@colorado.edu>
3303 2002-04-26 Fernando Perez <fperez@colorado.edu>
3299
3304
3300 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3305 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3301 all files were being included in an update. Now anything in
3306 all files were being included in an update. Now anything in
3302 UserConfig that matches [A-Za-z]*.py will go (this excludes
3307 UserConfig that matches [A-Za-z]*.py will go (this excludes
3303 __init__.py)
3308 __init__.py)
3304
3309
3305 2002-04-25 Fernando Perez <fperez@colorado.edu>
3310 2002-04-25 Fernando Perez <fperez@colorado.edu>
3306
3311
3307 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3312 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3308 to __builtins__ so that any form of embedded or imported code can
3313 to __builtins__ so that any form of embedded or imported code can
3309 test for being inside IPython.
3314 test for being inside IPython.
3310
3315
3311 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3316 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3312 changed to GnuplotMagic because it's now an importable module,
3317 changed to GnuplotMagic because it's now an importable module,
3313 this makes the name follow that of the standard Gnuplot module.
3318 this makes the name follow that of the standard Gnuplot module.
3314 GnuplotMagic can now be loaded at any time in mid-session.
3319 GnuplotMagic can now be loaded at any time in mid-session.
3315
3320
3316 2002-04-24 Fernando Perez <fperez@colorado.edu>
3321 2002-04-24 Fernando Perez <fperez@colorado.edu>
3317
3322
3318 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3323 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3319 the globals (IPython has its own namespace) and the
3324 the globals (IPython has its own namespace) and the
3320 PhysicalQuantity stuff is much better anyway.
3325 PhysicalQuantity stuff is much better anyway.
3321
3326
3322 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3327 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3323 embedding example to standard user directory for
3328 embedding example to standard user directory for
3324 distribution. Also put it in the manual.
3329 distribution. Also put it in the manual.
3325
3330
3326 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3331 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3327 instance as first argument (so it doesn't rely on some obscure
3332 instance as first argument (so it doesn't rely on some obscure
3328 hidden global).
3333 hidden global).
3329
3334
3330 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3335 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3331 delimiters. While it prevents ().TAB from working, it allows
3336 delimiters. While it prevents ().TAB from working, it allows
3332 completions in open (... expressions. This is by far a more common
3337 completions in open (... expressions. This is by far a more common
3333 case.
3338 case.
3334
3339
3335 2002-04-23 Fernando Perez <fperez@colorado.edu>
3340 2002-04-23 Fernando Perez <fperez@colorado.edu>
3336
3341
3337 * IPython/Extensions/InterpreterPasteInput.py: new
3342 * IPython/Extensions/InterpreterPasteInput.py: new
3338 syntax-processing module for pasting lines with >>> or ... at the
3343 syntax-processing module for pasting lines with >>> or ... at the
3339 start.
3344 start.
3340
3345
3341 * IPython/Extensions/PhysicalQ_Interactive.py
3346 * IPython/Extensions/PhysicalQ_Interactive.py
3342 (PhysicalQuantityInteractive.__int__): fixed to work with either
3347 (PhysicalQuantityInteractive.__int__): fixed to work with either
3343 Numeric or math.
3348 Numeric or math.
3344
3349
3345 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3350 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3346 provided profiles. Now we have:
3351 provided profiles. Now we have:
3347 -math -> math module as * and cmath with its own namespace.
3352 -math -> math module as * and cmath with its own namespace.
3348 -numeric -> Numeric as *, plus gnuplot & grace
3353 -numeric -> Numeric as *, plus gnuplot & grace
3349 -physics -> same as before
3354 -physics -> same as before
3350
3355
3351 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3356 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3352 user-defined magics wouldn't be found by @magic if they were
3357 user-defined magics wouldn't be found by @magic if they were
3353 defined as class methods. Also cleaned up the namespace search
3358 defined as class methods. Also cleaned up the namespace search
3354 logic and the string building (to use %s instead of many repeated
3359 logic and the string building (to use %s instead of many repeated
3355 string adds).
3360 string adds).
3356
3361
3357 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3362 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3358 of user-defined magics to operate with class methods (cleaner, in
3363 of user-defined magics to operate with class methods (cleaner, in
3359 line with the gnuplot code).
3364 line with the gnuplot code).
3360
3365
3361 2002-04-22 Fernando Perez <fperez@colorado.edu>
3366 2002-04-22 Fernando Perez <fperez@colorado.edu>
3362
3367
3363 * setup.py: updated dependency list so that manual is updated when
3368 * setup.py: updated dependency list so that manual is updated when
3364 all included files change.
3369 all included files change.
3365
3370
3366 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3371 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3367 the delimiter removal option (the fix is ugly right now).
3372 the delimiter removal option (the fix is ugly right now).
3368
3373
3369 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3374 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3370 all of the math profile (quicker loading, no conflict between
3375 all of the math profile (quicker loading, no conflict between
3371 g-9.8 and g-gnuplot).
3376 g-9.8 and g-gnuplot).
3372
3377
3373 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3378 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3374 name of post-mortem files to IPython_crash_report.txt.
3379 name of post-mortem files to IPython_crash_report.txt.
3375
3380
3376 * Cleanup/update of the docs. Added all the new readline info and
3381 * Cleanup/update of the docs. Added all the new readline info and
3377 formatted all lists as 'real lists'.
3382 formatted all lists as 'real lists'.
3378
3383
3379 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3384 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3380 tab-completion options, since the full readline parse_and_bind is
3385 tab-completion options, since the full readline parse_and_bind is
3381 now accessible.
3386 now accessible.
3382
3387
3383 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3388 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3384 handling of readline options. Now users can specify any string to
3389 handling of readline options. Now users can specify any string to
3385 be passed to parse_and_bind(), as well as the delimiters to be
3390 be passed to parse_and_bind(), as well as the delimiters to be
3386 removed.
3391 removed.
3387 (InteractiveShell.__init__): Added __name__ to the global
3392 (InteractiveShell.__init__): Added __name__ to the global
3388 namespace so that things like Itpl which rely on its existence
3393 namespace so that things like Itpl which rely on its existence
3389 don't crash.
3394 don't crash.
3390 (InteractiveShell._prefilter): Defined the default with a _ so
3395 (InteractiveShell._prefilter): Defined the default with a _ so
3391 that prefilter() is easier to override, while the default one
3396 that prefilter() is easier to override, while the default one
3392 remains available.
3397 remains available.
3393
3398
3394 2002-04-18 Fernando Perez <fperez@colorado.edu>
3399 2002-04-18 Fernando Perez <fperez@colorado.edu>
3395
3400
3396 * Added information about pdb in the docs.
3401 * Added information about pdb in the docs.
3397
3402
3398 2002-04-17 Fernando Perez <fperez@colorado.edu>
3403 2002-04-17 Fernando Perez <fperez@colorado.edu>
3399
3404
3400 * IPython/ipmaker.py (make_IPython): added rc_override option to
3405 * IPython/ipmaker.py (make_IPython): added rc_override option to
3401 allow passing config options at creation time which may override
3406 allow passing config options at creation time which may override
3402 anything set in the config files or command line. This is
3407 anything set in the config files or command line. This is
3403 particularly useful for configuring embedded instances.
3408 particularly useful for configuring embedded instances.
3404
3409
3405 2002-04-15 Fernando Perez <fperez@colorado.edu>
3410 2002-04-15 Fernando Perez <fperez@colorado.edu>
3406
3411
3407 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3412 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3408 crash embedded instances because of the input cache falling out of
3413 crash embedded instances because of the input cache falling out of
3409 sync with the output counter.
3414 sync with the output counter.
3410
3415
3411 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3416 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3412 mode which calls pdb after an uncaught exception in IPython itself.
3417 mode which calls pdb after an uncaught exception in IPython itself.
3413
3418
3414 2002-04-14 Fernando Perez <fperez@colorado.edu>
3419 2002-04-14 Fernando Perez <fperez@colorado.edu>
3415
3420
3416 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3421 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3417 readline, fix it back after each call.
3422 readline, fix it back after each call.
3418
3423
3419 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3424 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3420 method to force all access via __call__(), which guarantees that
3425 method to force all access via __call__(), which guarantees that
3421 traceback references are properly deleted.
3426 traceback references are properly deleted.
3422
3427
3423 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3428 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3424 improve printing when pprint is in use.
3429 improve printing when pprint is in use.
3425
3430
3426 2002-04-13 Fernando Perez <fperez@colorado.edu>
3431 2002-04-13 Fernando Perez <fperez@colorado.edu>
3427
3432
3428 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3433 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3429 exceptions aren't caught anymore. If the user triggers one, he
3434 exceptions aren't caught anymore. If the user triggers one, he
3430 should know why he's doing it and it should go all the way up,
3435 should know why he's doing it and it should go all the way up,
3431 just like any other exception. So now @abort will fully kill the
3436 just like any other exception. So now @abort will fully kill the
3432 embedded interpreter and the embedding code (unless that happens
3437 embedded interpreter and the embedding code (unless that happens
3433 to catch SystemExit).
3438 to catch SystemExit).
3434
3439
3435 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3440 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3436 and a debugger() method to invoke the interactive pdb debugger
3441 and a debugger() method to invoke the interactive pdb debugger
3437 after printing exception information. Also added the corresponding
3442 after printing exception information. Also added the corresponding
3438 -pdb option and @pdb magic to control this feature, and updated
3443 -pdb option and @pdb magic to control this feature, and updated
3439 the docs. After a suggestion from Christopher Hart
3444 the docs. After a suggestion from Christopher Hart
3440 (hart-AT-caltech.edu).
3445 (hart-AT-caltech.edu).
3441
3446
3442 2002-04-12 Fernando Perez <fperez@colorado.edu>
3447 2002-04-12 Fernando Perez <fperez@colorado.edu>
3443
3448
3444 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3449 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3445 the exception handlers defined by the user (not the CrashHandler)
3450 the exception handlers defined by the user (not the CrashHandler)
3446 so that user exceptions don't trigger an ipython bug report.
3451 so that user exceptions don't trigger an ipython bug report.
3447
3452
3448 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3453 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3449 configurable (it should have always been so).
3454 configurable (it should have always been so).
3450
3455
3451 2002-03-26 Fernando Perez <fperez@colorado.edu>
3456 2002-03-26 Fernando Perez <fperez@colorado.edu>
3452
3457
3453 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3458 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3454 and there to fix embedding namespace issues. This should all be
3459 and there to fix embedding namespace issues. This should all be
3455 done in a more elegant way.
3460 done in a more elegant way.
3456
3461
3457 2002-03-25 Fernando Perez <fperez@colorado.edu>
3462 2002-03-25 Fernando Perez <fperez@colorado.edu>
3458
3463
3459 * IPython/genutils.py (get_home_dir): Try to make it work under
3464 * IPython/genutils.py (get_home_dir): Try to make it work under
3460 win9x also.
3465 win9x also.
3461
3466
3462 2002-03-20 Fernando Perez <fperez@colorado.edu>
3467 2002-03-20 Fernando Perez <fperez@colorado.edu>
3463
3468
3464 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3469 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3465 sys.displayhook untouched upon __init__.
3470 sys.displayhook untouched upon __init__.
3466
3471
3467 2002-03-19 Fernando Perez <fperez@colorado.edu>
3472 2002-03-19 Fernando Perez <fperez@colorado.edu>
3468
3473
3469 * Released 0.2.9 (for embedding bug, basically).
3474 * Released 0.2.9 (for embedding bug, basically).
3470
3475
3471 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3476 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3472 exceptions so that enclosing shell's state can be restored.
3477 exceptions so that enclosing shell's state can be restored.
3473
3478
3474 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3479 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3475 naming conventions in the .ipython/ dir.
3480 naming conventions in the .ipython/ dir.
3476
3481
3477 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3482 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3478 from delimiters list so filenames with - in them get expanded.
3483 from delimiters list so filenames with - in them get expanded.
3479
3484
3480 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3485 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3481 sys.displayhook not being properly restored after an embedded call.
3486 sys.displayhook not being properly restored after an embedded call.
3482
3487
3483 2002-03-18 Fernando Perez <fperez@colorado.edu>
3488 2002-03-18 Fernando Perez <fperez@colorado.edu>
3484
3489
3485 * Released 0.2.8
3490 * Released 0.2.8
3486
3491
3487 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3492 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3488 some files weren't being included in a -upgrade.
3493 some files weren't being included in a -upgrade.
3489 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3494 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3490 on' so that the first tab completes.
3495 on' so that the first tab completes.
3491 (InteractiveShell.handle_magic): fixed bug with spaces around
3496 (InteractiveShell.handle_magic): fixed bug with spaces around
3492 quotes breaking many magic commands.
3497 quotes breaking many magic commands.
3493
3498
3494 * setup.py: added note about ignoring the syntax error messages at
3499 * setup.py: added note about ignoring the syntax error messages at
3495 installation.
3500 installation.
3496
3501
3497 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3502 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3498 streamlining the gnuplot interface, now there's only one magic @gp.
3503 streamlining the gnuplot interface, now there's only one magic @gp.
3499
3504
3500 2002-03-17 Fernando Perez <fperez@colorado.edu>
3505 2002-03-17 Fernando Perez <fperez@colorado.edu>
3501
3506
3502 * IPython/UserConfig/magic_gnuplot.py: new name for the
3507 * IPython/UserConfig/magic_gnuplot.py: new name for the
3503 example-magic_pm.py file. Much enhanced system, now with a shell
3508 example-magic_pm.py file. Much enhanced system, now with a shell
3504 for communicating directly with gnuplot, one command at a time.
3509 for communicating directly with gnuplot, one command at a time.
3505
3510
3506 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3511 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3507 setting __name__=='__main__'.
3512 setting __name__=='__main__'.
3508
3513
3509 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
3514 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
3510 mini-shell for accessing gnuplot from inside ipython. Should
3515 mini-shell for accessing gnuplot from inside ipython. Should
3511 extend it later for grace access too. Inspired by Arnd's
3516 extend it later for grace access too. Inspired by Arnd's
3512 suggestion.
3517 suggestion.
3513
3518
3514 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
3519 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
3515 calling magic functions with () in their arguments. Thanks to Arnd
3520 calling magic functions with () in their arguments. Thanks to Arnd
3516 Baecker for pointing this to me.
3521 Baecker for pointing this to me.
3517
3522
3518 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
3523 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
3519 infinitely for integer or complex arrays (only worked with floats).
3524 infinitely for integer or complex arrays (only worked with floats).
3520
3525
3521 2002-03-16 Fernando Perez <fperez@colorado.edu>
3526 2002-03-16 Fernando Perez <fperez@colorado.edu>
3522
3527
3523 * setup.py: Merged setup and setup_windows into a single script
3528 * setup.py: Merged setup and setup_windows into a single script
3524 which properly handles things for windows users.
3529 which properly handles things for windows users.
3525
3530
3526 2002-03-15 Fernando Perez <fperez@colorado.edu>
3531 2002-03-15 Fernando Perez <fperez@colorado.edu>
3527
3532
3528 * Big change to the manual: now the magics are all automatically
3533 * Big change to the manual: now the magics are all automatically
3529 documented. This information is generated from their docstrings
3534 documented. This information is generated from their docstrings
3530 and put in a latex file included by the manual lyx file. This way
3535 and put in a latex file included by the manual lyx file. This way
3531 we get always up to date information for the magics. The manual
3536 we get always up to date information for the magics. The manual
3532 now also has proper version information, also auto-synced.
3537 now also has proper version information, also auto-synced.
3533
3538
3534 For this to work, an undocumented --magic_docstrings option was added.
3539 For this to work, an undocumented --magic_docstrings option was added.
3535
3540
3536 2002-03-13 Fernando Perez <fperez@colorado.edu>
3541 2002-03-13 Fernando Perez <fperez@colorado.edu>
3537
3542
3538 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
3543 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
3539 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
3544 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
3540
3545
3541 2002-03-12 Fernando Perez <fperez@colorado.edu>
3546 2002-03-12 Fernando Perez <fperez@colorado.edu>
3542
3547
3543 * IPython/ultraTB.py (TermColors): changed color escapes again to
3548 * IPython/ultraTB.py (TermColors): changed color escapes again to
3544 fix the (old, reintroduced) line-wrapping bug. Basically, if
3549 fix the (old, reintroduced) line-wrapping bug. Basically, if
3545 \001..\002 aren't given in the color escapes, lines get wrapped
3550 \001..\002 aren't given in the color escapes, lines get wrapped
3546 weirdly. But giving those screws up old xterms and emacs terms. So
3551 weirdly. But giving those screws up old xterms and emacs terms. So
3547 I added some logic for emacs terms to be ok, but I can't identify old
3552 I added some logic for emacs terms to be ok, but I can't identify old
3548 xterms separately ($TERM=='xterm' for many terminals, like konsole).
3553 xterms separately ($TERM=='xterm' for many terminals, like konsole).
3549
3554
3550 2002-03-10 Fernando Perez <fperez@colorado.edu>
3555 2002-03-10 Fernando Perez <fperez@colorado.edu>
3551
3556
3552 * IPython/usage.py (__doc__): Various documentation cleanups and
3557 * IPython/usage.py (__doc__): Various documentation cleanups and
3553 updates, both in usage docstrings and in the manual.
3558 updates, both in usage docstrings and in the manual.
3554
3559
3555 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
3560 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
3556 handling of caching. Set minimum acceptabe value for having a
3561 handling of caching. Set minimum acceptabe value for having a
3557 cache at 20 values.
3562 cache at 20 values.
3558
3563
3559 * IPython/iplib.py (InteractiveShell.user_setup): moved the
3564 * IPython/iplib.py (InteractiveShell.user_setup): moved the
3560 install_first_time function to a method, renamed it and added an
3565 install_first_time function to a method, renamed it and added an
3561 'upgrade' mode. Now people can update their config directory with
3566 'upgrade' mode. Now people can update their config directory with
3562 a simple command line switch (-upgrade, also new).
3567 a simple command line switch (-upgrade, also new).
3563
3568
3564 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
3569 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
3565 @file (convenient for automagic users under Python >= 2.2).
3570 @file (convenient for automagic users under Python >= 2.2).
3566 Removed @files (it seemed more like a plural than an abbrev. of
3571 Removed @files (it seemed more like a plural than an abbrev. of
3567 'file show').
3572 'file show').
3568
3573
3569 * IPython/iplib.py (install_first_time): Fixed crash if there were
3574 * IPython/iplib.py (install_first_time): Fixed crash if there were
3570 backup files ('~') in .ipython/ install directory.
3575 backup files ('~') in .ipython/ install directory.
3571
3576
3572 * IPython/ipmaker.py (make_IPython): fixes for new prompt
3577 * IPython/ipmaker.py (make_IPython): fixes for new prompt
3573 system. Things look fine, but these changes are fairly
3578 system. Things look fine, but these changes are fairly
3574 intrusive. Test them for a few days.
3579 intrusive. Test them for a few days.
3575
3580
3576 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
3581 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
3577 the prompts system. Now all in/out prompt strings are user
3582 the prompts system. Now all in/out prompt strings are user
3578 controllable. This is particularly useful for embedding, as one
3583 controllable. This is particularly useful for embedding, as one
3579 can tag embedded instances with particular prompts.
3584 can tag embedded instances with particular prompts.
3580
3585
3581 Also removed global use of sys.ps1/2, which now allows nested
3586 Also removed global use of sys.ps1/2, which now allows nested
3582 embeddings without any problems. Added command-line options for
3587 embeddings without any problems. Added command-line options for
3583 the prompt strings.
3588 the prompt strings.
3584
3589
3585 2002-03-08 Fernando Perez <fperez@colorado.edu>
3590 2002-03-08 Fernando Perez <fperez@colorado.edu>
3586
3591
3587 * IPython/UserConfig/example-embed-short.py (ipshell): added
3592 * IPython/UserConfig/example-embed-short.py (ipshell): added
3588 example file with the bare minimum code for embedding.
3593 example file with the bare minimum code for embedding.
3589
3594
3590 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
3595 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
3591 functionality for the embeddable shell to be activated/deactivated
3596 functionality for the embeddable shell to be activated/deactivated
3592 either globally or at each call.
3597 either globally or at each call.
3593
3598
3594 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
3599 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
3595 rewriting the prompt with '--->' for auto-inputs with proper
3600 rewriting the prompt with '--->' for auto-inputs with proper
3596 coloring. Now the previous UGLY hack in handle_auto() is gone, and
3601 coloring. Now the previous UGLY hack in handle_auto() is gone, and
3597 this is handled by the prompts class itself, as it should.
3602 this is handled by the prompts class itself, as it should.
3598
3603
3599 2002-03-05 Fernando Perez <fperez@colorado.edu>
3604 2002-03-05 Fernando Perez <fperez@colorado.edu>
3600
3605
3601 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
3606 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
3602 @logstart to avoid name clashes with the math log function.
3607 @logstart to avoid name clashes with the math log function.
3603
3608
3604 * Big updates to X/Emacs section of the manual.
3609 * Big updates to X/Emacs section of the manual.
3605
3610
3606 * Removed ipython_emacs. Milan explained to me how to pass
3611 * Removed ipython_emacs. Milan explained to me how to pass
3607 arguments to ipython through Emacs. Some day I'm going to end up
3612 arguments to ipython through Emacs. Some day I'm going to end up
3608 learning some lisp...
3613 learning some lisp...
3609
3614
3610 2002-03-04 Fernando Perez <fperez@colorado.edu>
3615 2002-03-04 Fernando Perez <fperez@colorado.edu>
3611
3616
3612 * IPython/ipython_emacs: Created script to be used as the
3617 * IPython/ipython_emacs: Created script to be used as the
3613 py-python-command Emacs variable so we can pass IPython
3618 py-python-command Emacs variable so we can pass IPython
3614 parameters. I can't figure out how to tell Emacs directly to pass
3619 parameters. I can't figure out how to tell Emacs directly to pass
3615 parameters to IPython, so a dummy shell script will do it.
3620 parameters to IPython, so a dummy shell script will do it.
3616
3621
3617 Other enhancements made for things to work better under Emacs'
3622 Other enhancements made for things to work better under Emacs'
3618 various types of terminals. Many thanks to Milan Zamazal
3623 various types of terminals. Many thanks to Milan Zamazal
3619 <pdm-AT-zamazal.org> for all the suggestions and pointers.
3624 <pdm-AT-zamazal.org> for all the suggestions and pointers.
3620
3625
3621 2002-03-01 Fernando Perez <fperez@colorado.edu>
3626 2002-03-01 Fernando Perez <fperez@colorado.edu>
3622
3627
3623 * IPython/ipmaker.py (make_IPython): added a --readline! option so
3628 * IPython/ipmaker.py (make_IPython): added a --readline! option so
3624 that loading of readline is now optional. This gives better
3629 that loading of readline is now optional. This gives better
3625 control to emacs users.
3630 control to emacs users.
3626
3631
3627 * IPython/ultraTB.py (__date__): Modified color escape sequences
3632 * IPython/ultraTB.py (__date__): Modified color escape sequences
3628 and now things work fine under xterm and in Emacs' term buffers
3633 and now things work fine under xterm and in Emacs' term buffers
3629 (though not shell ones). Well, in emacs you get colors, but all
3634 (though not shell ones). Well, in emacs you get colors, but all
3630 seem to be 'light' colors (no difference between dark and light
3635 seem to be 'light' colors (no difference between dark and light
3631 ones). But the garbage chars are gone, and also in xterms. It
3636 ones). But the garbage chars are gone, and also in xterms. It
3632 seems that now I'm using 'cleaner' ansi sequences.
3637 seems that now I'm using 'cleaner' ansi sequences.
3633
3638
3634 2002-02-21 Fernando Perez <fperez@colorado.edu>
3639 2002-02-21 Fernando Perez <fperez@colorado.edu>
3635
3640
3636 * Released 0.2.7 (mainly to publish the scoping fix).
3641 * Released 0.2.7 (mainly to publish the scoping fix).
3637
3642
3638 * IPython/Logger.py (Logger.logstate): added. A corresponding
3643 * IPython/Logger.py (Logger.logstate): added. A corresponding
3639 @logstate magic was created.
3644 @logstate magic was created.
3640
3645
3641 * IPython/Magic.py: fixed nested scoping problem under Python
3646 * IPython/Magic.py: fixed nested scoping problem under Python
3642 2.1.x (automagic wasn't working).
3647 2.1.x (automagic wasn't working).
3643
3648
3644 2002-02-20 Fernando Perez <fperez@colorado.edu>
3649 2002-02-20 Fernando Perez <fperez@colorado.edu>
3645
3650
3646 * Released 0.2.6.
3651 * Released 0.2.6.
3647
3652
3648 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
3653 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
3649 option so that logs can come out without any headers at all.
3654 option so that logs can come out without any headers at all.
3650
3655
3651 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
3656 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
3652 SciPy.
3657 SciPy.
3653
3658
3654 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
3659 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
3655 that embedded IPython calls don't require vars() to be explicitly
3660 that embedded IPython calls don't require vars() to be explicitly
3656 passed. Now they are extracted from the caller's frame (code
3661 passed. Now they are extracted from the caller's frame (code
3657 snatched from Eric Jones' weave). Added better documentation to
3662 snatched from Eric Jones' weave). Added better documentation to
3658 the section on embedding and the example file.
3663 the section on embedding and the example file.
3659
3664
3660 * IPython/genutils.py (page): Changed so that under emacs, it just
3665 * IPython/genutils.py (page): Changed so that under emacs, it just
3661 prints the string. You can then page up and down in the emacs
3666 prints the string. You can then page up and down in the emacs
3662 buffer itself. This is how the builtin help() works.
3667 buffer itself. This is how the builtin help() works.
3663
3668
3664 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
3669 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
3665 macro scoping: macros need to be executed in the user's namespace
3670 macro scoping: macros need to be executed in the user's namespace
3666 to work as if they had been typed by the user.
3671 to work as if they had been typed by the user.
3667
3672
3668 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
3673 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
3669 execute automatically (no need to type 'exec...'). They then
3674 execute automatically (no need to type 'exec...'). They then
3670 behave like 'true macros'. The printing system was also modified
3675 behave like 'true macros'. The printing system was also modified
3671 for this to work.
3676 for this to work.
3672
3677
3673 2002-02-19 Fernando Perez <fperez@colorado.edu>
3678 2002-02-19 Fernando Perez <fperez@colorado.edu>
3674
3679
3675 * IPython/genutils.py (page_file): new function for paging files
3680 * IPython/genutils.py (page_file): new function for paging files
3676 in an OS-independent way. Also necessary for file viewing to work
3681 in an OS-independent way. Also necessary for file viewing to work
3677 well inside Emacs buffers.
3682 well inside Emacs buffers.
3678 (page): Added checks for being in an emacs buffer.
3683 (page): Added checks for being in an emacs buffer.
3679 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
3684 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
3680 same bug in iplib.
3685 same bug in iplib.
3681
3686
3682 2002-02-18 Fernando Perez <fperez@colorado.edu>
3687 2002-02-18 Fernando Perez <fperez@colorado.edu>
3683
3688
3684 * IPython/iplib.py (InteractiveShell.init_readline): modified use
3689 * IPython/iplib.py (InteractiveShell.init_readline): modified use
3685 of readline so that IPython can work inside an Emacs buffer.
3690 of readline so that IPython can work inside an Emacs buffer.
3686
3691
3687 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
3692 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
3688 method signatures (they weren't really bugs, but it looks cleaner
3693 method signatures (they weren't really bugs, but it looks cleaner
3689 and keeps PyChecker happy).
3694 and keeps PyChecker happy).
3690
3695
3691 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
3696 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
3692 for implementing various user-defined hooks. Currently only
3697 for implementing various user-defined hooks. Currently only
3693 display is done.
3698 display is done.
3694
3699
3695 * IPython/Prompts.py (CachedOutput._display): changed display
3700 * IPython/Prompts.py (CachedOutput._display): changed display
3696 functions so that they can be dynamically changed by users easily.
3701 functions so that they can be dynamically changed by users easily.
3697
3702
3698 * IPython/Extensions/numeric_formats.py (num_display): added an
3703 * IPython/Extensions/numeric_formats.py (num_display): added an
3699 extension for printing NumPy arrays in flexible manners. It
3704 extension for printing NumPy arrays in flexible manners. It
3700 doesn't do anything yet, but all the structure is in
3705 doesn't do anything yet, but all the structure is in
3701 place. Ultimately the plan is to implement output format control
3706 place. Ultimately the plan is to implement output format control
3702 like in Octave.
3707 like in Octave.
3703
3708
3704 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
3709 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
3705 methods are found at run-time by all the automatic machinery.
3710 methods are found at run-time by all the automatic machinery.
3706
3711
3707 2002-02-17 Fernando Perez <fperez@colorado.edu>
3712 2002-02-17 Fernando Perez <fperez@colorado.edu>
3708
3713
3709 * setup_Windows.py (make_shortcut): documented. Cleaned up the
3714 * setup_Windows.py (make_shortcut): documented. Cleaned up the
3710 whole file a little.
3715 whole file a little.
3711
3716
3712 * ToDo: closed this document. Now there's a new_design.lyx
3717 * ToDo: closed this document. Now there's a new_design.lyx
3713 document for all new ideas. Added making a pdf of it for the
3718 document for all new ideas. Added making a pdf of it for the
3714 end-user distro.
3719 end-user distro.
3715
3720
3716 * IPython/Logger.py (Logger.switch_log): Created this to replace
3721 * IPython/Logger.py (Logger.switch_log): Created this to replace
3717 logon() and logoff(). It also fixes a nasty crash reported by
3722 logon() and logoff(). It also fixes a nasty crash reported by
3718 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
3723 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
3719
3724
3720 * IPython/iplib.py (complete): got auto-completion to work with
3725 * IPython/iplib.py (complete): got auto-completion to work with
3721 automagic (I had wanted this for a long time).
3726 automagic (I had wanted this for a long time).
3722
3727
3723 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
3728 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
3724 to @file, since file() is now a builtin and clashes with automagic
3729 to @file, since file() is now a builtin and clashes with automagic
3725 for @file.
3730 for @file.
3726
3731
3727 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
3732 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
3728 of this was previously in iplib, which had grown to more than 2000
3733 of this was previously in iplib, which had grown to more than 2000
3729 lines, way too long. No new functionality, but it makes managing
3734 lines, way too long. No new functionality, but it makes managing
3730 the code a bit easier.
3735 the code a bit easier.
3731
3736
3732 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
3737 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
3733 information to crash reports.
3738 information to crash reports.
3734
3739
3735 2002-02-12 Fernando Perez <fperez@colorado.edu>
3740 2002-02-12 Fernando Perez <fperez@colorado.edu>
3736
3741
3737 * Released 0.2.5.
3742 * Released 0.2.5.
3738
3743
3739 2002-02-11 Fernando Perez <fperez@colorado.edu>
3744 2002-02-11 Fernando Perez <fperez@colorado.edu>
3740
3745
3741 * Wrote a relatively complete Windows installer. It puts
3746 * Wrote a relatively complete Windows installer. It puts
3742 everything in place, creates Start Menu entries and fixes the
3747 everything in place, creates Start Menu entries and fixes the
3743 color issues. Nothing fancy, but it works.
3748 color issues. Nothing fancy, but it works.
3744
3749
3745 2002-02-10 Fernando Perez <fperez@colorado.edu>
3750 2002-02-10 Fernando Perez <fperez@colorado.edu>
3746
3751
3747 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
3752 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
3748 os.path.expanduser() call so that we can type @run ~/myfile.py and
3753 os.path.expanduser() call so that we can type @run ~/myfile.py and
3749 have thigs work as expected.
3754 have thigs work as expected.
3750
3755
3751 * IPython/genutils.py (page): fixed exception handling so things
3756 * IPython/genutils.py (page): fixed exception handling so things
3752 work both in Unix and Windows correctly. Quitting a pager triggers
3757 work both in Unix and Windows correctly. Quitting a pager triggers
3753 an IOError/broken pipe in Unix, and in windows not finding a pager
3758 an IOError/broken pipe in Unix, and in windows not finding a pager
3754 is also an IOError, so I had to actually look at the return value
3759 is also an IOError, so I had to actually look at the return value
3755 of the exception, not just the exception itself. Should be ok now.
3760 of the exception, not just the exception itself. Should be ok now.
3756
3761
3757 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
3762 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
3758 modified to allow case-insensitive color scheme changes.
3763 modified to allow case-insensitive color scheme changes.
3759
3764
3760 2002-02-09 Fernando Perez <fperez@colorado.edu>
3765 2002-02-09 Fernando Perez <fperez@colorado.edu>
3761
3766
3762 * IPython/genutils.py (native_line_ends): new function to leave
3767 * IPython/genutils.py (native_line_ends): new function to leave
3763 user config files with os-native line-endings.
3768 user config files with os-native line-endings.
3764
3769
3765 * README and manual updates.
3770 * README and manual updates.
3766
3771
3767 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
3772 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
3768 instead of StringType to catch Unicode strings.
3773 instead of StringType to catch Unicode strings.
3769
3774
3770 * IPython/genutils.py (filefind): fixed bug for paths with
3775 * IPython/genutils.py (filefind): fixed bug for paths with
3771 embedded spaces (very common in Windows).
3776 embedded spaces (very common in Windows).
3772
3777
3773 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
3778 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
3774 files under Windows, so that they get automatically associated
3779 files under Windows, so that they get automatically associated
3775 with a text editor. Windows makes it a pain to handle
3780 with a text editor. Windows makes it a pain to handle
3776 extension-less files.
3781 extension-less files.
3777
3782
3778 * IPython/iplib.py (InteractiveShell.init_readline): Made the
3783 * IPython/iplib.py (InteractiveShell.init_readline): Made the
3779 warning about readline only occur for Posix. In Windows there's no
3784 warning about readline only occur for Posix. In Windows there's no
3780 way to get readline, so why bother with the warning.
3785 way to get readline, so why bother with the warning.
3781
3786
3782 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
3787 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
3783 for __str__ instead of dir(self), since dir() changed in 2.2.
3788 for __str__ instead of dir(self), since dir() changed in 2.2.
3784
3789
3785 * Ported to Windows! Tested on XP, I suspect it should work fine
3790 * Ported to Windows! Tested on XP, I suspect it should work fine
3786 on NT/2000, but I don't think it will work on 98 et al. That
3791 on NT/2000, but I don't think it will work on 98 et al. That
3787 series of Windows is such a piece of junk anyway that I won't try
3792 series of Windows is such a piece of junk anyway that I won't try
3788 porting it there. The XP port was straightforward, showed a few
3793 porting it there. The XP port was straightforward, showed a few
3789 bugs here and there (fixed all), in particular some string
3794 bugs here and there (fixed all), in particular some string
3790 handling stuff which required considering Unicode strings (which
3795 handling stuff which required considering Unicode strings (which
3791 Windows uses). This is good, but hasn't been too tested :) No
3796 Windows uses). This is good, but hasn't been too tested :) No
3792 fancy installer yet, I'll put a note in the manual so people at
3797 fancy installer yet, I'll put a note in the manual so people at
3793 least make manually a shortcut.
3798 least make manually a shortcut.
3794
3799
3795 * IPython/iplib.py (Magic.magic_colors): Unified the color options
3800 * IPython/iplib.py (Magic.magic_colors): Unified the color options
3796 into a single one, "colors". This now controls both prompt and
3801 into a single one, "colors". This now controls both prompt and
3797 exception color schemes, and can be changed both at startup
3802 exception color schemes, and can be changed both at startup
3798 (either via command-line switches or via ipythonrc files) and at
3803 (either via command-line switches or via ipythonrc files) and at
3799 runtime, with @colors.
3804 runtime, with @colors.
3800 (Magic.magic_run): renamed @prun to @run and removed the old
3805 (Magic.magic_run): renamed @prun to @run and removed the old
3801 @run. The two were too similar to warrant keeping both.
3806 @run. The two were too similar to warrant keeping both.
3802
3807
3803 2002-02-03 Fernando Perez <fperez@colorado.edu>
3808 2002-02-03 Fernando Perez <fperez@colorado.edu>
3804
3809
3805 * IPython/iplib.py (install_first_time): Added comment on how to
3810 * IPython/iplib.py (install_first_time): Added comment on how to
3806 configure the color options for first-time users. Put a <return>
3811 configure the color options for first-time users. Put a <return>
3807 request at the end so that small-terminal users get a chance to
3812 request at the end so that small-terminal users get a chance to
3808 read the startup info.
3813 read the startup info.
3809
3814
3810 2002-01-23 Fernando Perez <fperez@colorado.edu>
3815 2002-01-23 Fernando Perez <fperez@colorado.edu>
3811
3816
3812 * IPython/iplib.py (CachedOutput.update): Changed output memory
3817 * IPython/iplib.py (CachedOutput.update): Changed output memory
3813 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
3818 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
3814 input history we still use _i. Did this b/c these variable are
3819 input history we still use _i. Did this b/c these variable are
3815 very commonly used in interactive work, so the less we need to
3820 very commonly used in interactive work, so the less we need to
3816 type the better off we are.
3821 type the better off we are.
3817 (Magic.magic_prun): updated @prun to better handle the namespaces
3822 (Magic.magic_prun): updated @prun to better handle the namespaces
3818 the file will run in, including a fix for __name__ not being set
3823 the file will run in, including a fix for __name__ not being set
3819 before.
3824 before.
3820
3825
3821 2002-01-20 Fernando Perez <fperez@colorado.edu>
3826 2002-01-20 Fernando Perez <fperez@colorado.edu>
3822
3827
3823 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
3828 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
3824 extra garbage for Python 2.2. Need to look more carefully into
3829 extra garbage for Python 2.2. Need to look more carefully into
3825 this later.
3830 this later.
3826
3831
3827 2002-01-19 Fernando Perez <fperez@colorado.edu>
3832 2002-01-19 Fernando Perez <fperez@colorado.edu>
3828
3833
3829 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
3834 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
3830 display SyntaxError exceptions properly formatted when they occur
3835 display SyntaxError exceptions properly formatted when they occur
3831 (they can be triggered by imported code).
3836 (they can be triggered by imported code).
3832
3837
3833 2002-01-18 Fernando Perez <fperez@colorado.edu>
3838 2002-01-18 Fernando Perez <fperez@colorado.edu>
3834
3839
3835 * IPython/iplib.py (InteractiveShell.safe_execfile): now
3840 * IPython/iplib.py (InteractiveShell.safe_execfile): now
3836 SyntaxError exceptions are reported nicely formatted, instead of
3841 SyntaxError exceptions are reported nicely formatted, instead of
3837 spitting out only offset information as before.
3842 spitting out only offset information as before.
3838 (Magic.magic_prun): Added the @prun function for executing
3843 (Magic.magic_prun): Added the @prun function for executing
3839 programs with command line args inside IPython.
3844 programs with command line args inside IPython.
3840
3845
3841 2002-01-16 Fernando Perez <fperez@colorado.edu>
3846 2002-01-16 Fernando Perez <fperez@colorado.edu>
3842
3847
3843 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
3848 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
3844 to *not* include the last item given in a range. This brings their
3849 to *not* include the last item given in a range. This brings their
3845 behavior in line with Python's slicing:
3850 behavior in line with Python's slicing:
3846 a[n1:n2] -> a[n1]...a[n2-1]
3851 a[n1:n2] -> a[n1]...a[n2-1]
3847 It may be a bit less convenient, but I prefer to stick to Python's
3852 It may be a bit less convenient, but I prefer to stick to Python's
3848 conventions *everywhere*, so users never have to wonder.
3853 conventions *everywhere*, so users never have to wonder.
3849 (Magic.magic_macro): Added @macro function to ease the creation of
3854 (Magic.magic_macro): Added @macro function to ease the creation of
3850 macros.
3855 macros.
3851
3856
3852 2002-01-05 Fernando Perez <fperez@colorado.edu>
3857 2002-01-05 Fernando Perez <fperez@colorado.edu>
3853
3858
3854 * Released 0.2.4.
3859 * Released 0.2.4.
3855
3860
3856 * IPython/iplib.py (Magic.magic_pdef):
3861 * IPython/iplib.py (Magic.magic_pdef):
3857 (InteractiveShell.safe_execfile): report magic lines and error
3862 (InteractiveShell.safe_execfile): report magic lines and error
3858 lines without line numbers so one can easily copy/paste them for
3863 lines without line numbers so one can easily copy/paste them for
3859 re-execution.
3864 re-execution.
3860
3865
3861 * Updated manual with recent changes.
3866 * Updated manual with recent changes.
3862
3867
3863 * IPython/iplib.py (Magic.magic_oinfo): added constructor
3868 * IPython/iplib.py (Magic.magic_oinfo): added constructor
3864 docstring printing when class? is called. Very handy for knowing
3869 docstring printing when class? is called. Very handy for knowing
3865 how to create class instances (as long as __init__ is well
3870 how to create class instances (as long as __init__ is well
3866 documented, of course :)
3871 documented, of course :)
3867 (Magic.magic_doc): print both class and constructor docstrings.
3872 (Magic.magic_doc): print both class and constructor docstrings.
3868 (Magic.magic_pdef): give constructor info if passed a class and
3873 (Magic.magic_pdef): give constructor info if passed a class and
3869 __call__ info for callable object instances.
3874 __call__ info for callable object instances.
3870
3875
3871 2002-01-04 Fernando Perez <fperez@colorado.edu>
3876 2002-01-04 Fernando Perez <fperez@colorado.edu>
3872
3877
3873 * Made deep_reload() off by default. It doesn't always work
3878 * Made deep_reload() off by default. It doesn't always work
3874 exactly as intended, so it's probably safer to have it off. It's
3879 exactly as intended, so it's probably safer to have it off. It's
3875 still available as dreload() anyway, so nothing is lost.
3880 still available as dreload() anyway, so nothing is lost.
3876
3881
3877 2002-01-02 Fernando Perez <fperez@colorado.edu>
3882 2002-01-02 Fernando Perez <fperez@colorado.edu>
3878
3883
3879 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
3884 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
3880 so I wanted an updated release).
3885 so I wanted an updated release).
3881
3886
3882 2001-12-27 Fernando Perez <fperez@colorado.edu>
3887 2001-12-27 Fernando Perez <fperez@colorado.edu>
3883
3888
3884 * IPython/iplib.py (InteractiveShell.interact): Added the original
3889 * IPython/iplib.py (InteractiveShell.interact): Added the original
3885 code from 'code.py' for this module in order to change the
3890 code from 'code.py' for this module in order to change the
3886 handling of a KeyboardInterrupt. This was necessary b/c otherwise
3891 handling of a KeyboardInterrupt. This was necessary b/c otherwise
3887 the history cache would break when the user hit Ctrl-C, and
3892 the history cache would break when the user hit Ctrl-C, and
3888 interact() offers no way to add any hooks to it.
3893 interact() offers no way to add any hooks to it.
3889
3894
3890 2001-12-23 Fernando Perez <fperez@colorado.edu>
3895 2001-12-23 Fernando Perez <fperez@colorado.edu>
3891
3896
3892 * setup.py: added check for 'MANIFEST' before trying to remove
3897 * setup.py: added check for 'MANIFEST' before trying to remove
3893 it. Thanks to Sean Reifschneider.
3898 it. Thanks to Sean Reifschneider.
3894
3899
3895 2001-12-22 Fernando Perez <fperez@colorado.edu>
3900 2001-12-22 Fernando Perez <fperez@colorado.edu>
3896
3901
3897 * Released 0.2.2.
3902 * Released 0.2.2.
3898
3903
3899 * Finished (reasonably) writing the manual. Later will add the
3904 * Finished (reasonably) writing the manual. Later will add the
3900 python-standard navigation stylesheets, but for the time being
3905 python-standard navigation stylesheets, but for the time being
3901 it's fairly complete. Distribution will include html and pdf
3906 it's fairly complete. Distribution will include html and pdf
3902 versions.
3907 versions.
3903
3908
3904 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
3909 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
3905 (MayaVi author).
3910 (MayaVi author).
3906
3911
3907 2001-12-21 Fernando Perez <fperez@colorado.edu>
3912 2001-12-21 Fernando Perez <fperez@colorado.edu>
3908
3913
3909 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
3914 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
3910 good public release, I think (with the manual and the distutils
3915 good public release, I think (with the manual and the distutils
3911 installer). The manual can use some work, but that can go
3916 installer). The manual can use some work, but that can go
3912 slowly. Otherwise I think it's quite nice for end users. Next
3917 slowly. Otherwise I think it's quite nice for end users. Next
3913 summer, rewrite the guts of it...
3918 summer, rewrite the guts of it...
3914
3919
3915 * Changed format of ipythonrc files to use whitespace as the
3920 * Changed format of ipythonrc files to use whitespace as the
3916 separator instead of an explicit '='. Cleaner.
3921 separator instead of an explicit '='. Cleaner.
3917
3922
3918 2001-12-20 Fernando Perez <fperez@colorado.edu>
3923 2001-12-20 Fernando Perez <fperez@colorado.edu>
3919
3924
3920 * Started a manual in LyX. For now it's just a quick merge of the
3925 * Started a manual in LyX. For now it's just a quick merge of the
3921 various internal docstrings and READMEs. Later it may grow into a
3926 various internal docstrings and READMEs. Later it may grow into a
3922 nice, full-blown manual.
3927 nice, full-blown manual.
3923
3928
3924 * Set up a distutils based installer. Installation should now be
3929 * Set up a distutils based installer. Installation should now be
3925 trivially simple for end-users.
3930 trivially simple for end-users.
3926
3931
3927 2001-12-11 Fernando Perez <fperez@colorado.edu>
3932 2001-12-11 Fernando Perez <fperez@colorado.edu>
3928
3933
3929 * Released 0.2.0. First public release, announced it at
3934 * Released 0.2.0. First public release, announced it at
3930 comp.lang.python. From now on, just bugfixes...
3935 comp.lang.python. From now on, just bugfixes...
3931
3936
3932 * Went through all the files, set copyright/license notices and
3937 * Went through all the files, set copyright/license notices and
3933 cleaned up things. Ready for release.
3938 cleaned up things. Ready for release.
3934
3939
3935 2001-12-10 Fernando Perez <fperez@colorado.edu>
3940 2001-12-10 Fernando Perez <fperez@colorado.edu>
3936
3941
3937 * Changed the first-time installer not to use tarfiles. It's more
3942 * Changed the first-time installer not to use tarfiles. It's more
3938 robust now and less unix-dependent. Also makes it easier for
3943 robust now and less unix-dependent. Also makes it easier for
3939 people to later upgrade versions.
3944 people to later upgrade versions.
3940
3945
3941 * Changed @exit to @abort to reflect the fact that it's pretty
3946 * Changed @exit to @abort to reflect the fact that it's pretty
3942 brutal (a sys.exit()). The difference between @abort and Ctrl-D
3947 brutal (a sys.exit()). The difference between @abort and Ctrl-D
3943 becomes significant only when IPyhton is embedded: in that case,
3948 becomes significant only when IPyhton is embedded: in that case,
3944 C-D closes IPython only, but @abort kills the enclosing program
3949 C-D closes IPython only, but @abort kills the enclosing program
3945 too (unless it had called IPython inside a try catching
3950 too (unless it had called IPython inside a try catching
3946 SystemExit).
3951 SystemExit).
3947
3952
3948 * Created Shell module which exposes the actuall IPython Shell
3953 * Created Shell module which exposes the actuall IPython Shell
3949 classes, currently the normal and the embeddable one. This at
3954 classes, currently the normal and the embeddable one. This at
3950 least offers a stable interface we won't need to change when
3955 least offers a stable interface we won't need to change when
3951 (later) the internals are rewritten. That rewrite will be confined
3956 (later) the internals are rewritten. That rewrite will be confined
3952 to iplib and ipmaker, but the Shell interface should remain as is.
3957 to iplib and ipmaker, but the Shell interface should remain as is.
3953
3958
3954 * Added embed module which offers an embeddable IPShell object,
3959 * Added embed module which offers an embeddable IPShell object,
3955 useful to fire up IPython *inside* a running program. Great for
3960 useful to fire up IPython *inside* a running program. Great for
3956 debugging or dynamical data analysis.
3961 debugging or dynamical data analysis.
3957
3962
3958 2001-12-08 Fernando Perez <fperez@colorado.edu>
3963 2001-12-08 Fernando Perez <fperez@colorado.edu>
3959
3964
3960 * Fixed small bug preventing seeing info from methods of defined
3965 * Fixed small bug preventing seeing info from methods of defined
3961 objects (incorrect namespace in _ofind()).
3966 objects (incorrect namespace in _ofind()).
3962
3967
3963 * Documentation cleanup. Moved the main usage docstrings to a
3968 * Documentation cleanup. Moved the main usage docstrings to a
3964 separate file, usage.py (cleaner to maintain, and hopefully in the
3969 separate file, usage.py (cleaner to maintain, and hopefully in the
3965 future some perlpod-like way of producing interactive, man and
3970 future some perlpod-like way of producing interactive, man and
3966 html docs out of it will be found).
3971 html docs out of it will be found).
3967
3972
3968 * Added @profile to see your profile at any time.
3973 * Added @profile to see your profile at any time.
3969
3974
3970 * Added @p as an alias for 'print'. It's especially convenient if
3975 * Added @p as an alias for 'print'. It's especially convenient if
3971 using automagic ('p x' prints x).
3976 using automagic ('p x' prints x).
3972
3977
3973 * Small cleanups and fixes after a pychecker run.
3978 * Small cleanups and fixes after a pychecker run.
3974
3979
3975 * Changed the @cd command to handle @cd - and @cd -<n> for
3980 * Changed the @cd command to handle @cd - and @cd -<n> for
3976 visiting any directory in _dh.
3981 visiting any directory in _dh.
3977
3982
3978 * Introduced _dh, a history of visited directories. @dhist prints
3983 * Introduced _dh, a history of visited directories. @dhist prints
3979 it out with numbers.
3984 it out with numbers.
3980
3985
3981 2001-12-07 Fernando Perez <fperez@colorado.edu>
3986 2001-12-07 Fernando Perez <fperez@colorado.edu>
3982
3987
3983 * Released 0.1.22
3988 * Released 0.1.22
3984
3989
3985 * Made initialization a bit more robust against invalid color
3990 * Made initialization a bit more robust against invalid color
3986 options in user input (exit, not traceback-crash).
3991 options in user input (exit, not traceback-crash).
3987
3992
3988 * Changed the bug crash reporter to write the report only in the
3993 * Changed the bug crash reporter to write the report only in the
3989 user's .ipython directory. That way IPython won't litter people's
3994 user's .ipython directory. That way IPython won't litter people's
3990 hard disks with crash files all over the place. Also print on
3995 hard disks with crash files all over the place. Also print on
3991 screen the necessary mail command.
3996 screen the necessary mail command.
3992
3997
3993 * With the new ultraTB, implemented LightBG color scheme for light
3998 * With the new ultraTB, implemented LightBG color scheme for light
3994 background terminals. A lot of people like white backgrounds, so I
3999 background terminals. A lot of people like white backgrounds, so I
3995 guess we should at least give them something readable.
4000 guess we should at least give them something readable.
3996
4001
3997 2001-12-06 Fernando Perez <fperez@colorado.edu>
4002 2001-12-06 Fernando Perez <fperez@colorado.edu>
3998
4003
3999 * Modified the structure of ultraTB. Now there's a proper class
4004 * Modified the structure of ultraTB. Now there's a proper class
4000 for tables of color schemes which allow adding schemes easily and
4005 for tables of color schemes which allow adding schemes easily and
4001 switching the active scheme without creating a new instance every
4006 switching the active scheme without creating a new instance every
4002 time (which was ridiculous). The syntax for creating new schemes
4007 time (which was ridiculous). The syntax for creating new schemes
4003 is also cleaner. I think ultraTB is finally done, with a clean
4008 is also cleaner. I think ultraTB is finally done, with a clean
4004 class structure. Names are also much cleaner (now there's proper
4009 class structure. Names are also much cleaner (now there's proper
4005 color tables, no need for every variable to also have 'color' in
4010 color tables, no need for every variable to also have 'color' in
4006 its name).
4011 its name).
4007
4012
4008 * Broke down genutils into separate files. Now genutils only
4013 * Broke down genutils into separate files. Now genutils only
4009 contains utility functions, and classes have been moved to their
4014 contains utility functions, and classes have been moved to their
4010 own files (they had enough independent functionality to warrant
4015 own files (they had enough independent functionality to warrant
4011 it): ConfigLoader, OutputTrap, Struct.
4016 it): ConfigLoader, OutputTrap, Struct.
4012
4017
4013 2001-12-05 Fernando Perez <fperez@colorado.edu>
4018 2001-12-05 Fernando Perez <fperez@colorado.edu>
4014
4019
4015 * IPython turns 21! Released version 0.1.21, as a candidate for
4020 * IPython turns 21! Released version 0.1.21, as a candidate for
4016 public consumption. If all goes well, release in a few days.
4021 public consumption. If all goes well, release in a few days.
4017
4022
4018 * Fixed path bug (files in Extensions/ directory wouldn't be found
4023 * Fixed path bug (files in Extensions/ directory wouldn't be found
4019 unless IPython/ was explicitly in sys.path).
4024 unless IPython/ was explicitly in sys.path).
4020
4025
4021 * Extended the FlexCompleter class as MagicCompleter to allow
4026 * Extended the FlexCompleter class as MagicCompleter to allow
4022 completion of @-starting lines.
4027 completion of @-starting lines.
4023
4028
4024 * Created __release__.py file as a central repository for release
4029 * Created __release__.py file as a central repository for release
4025 info that other files can read from.
4030 info that other files can read from.
4026
4031
4027 * Fixed small bug in logging: when logging was turned on in
4032 * Fixed small bug in logging: when logging was turned on in
4028 mid-session, old lines with special meanings (!@?) were being
4033 mid-session, old lines with special meanings (!@?) were being
4029 logged without the prepended comment, which is necessary since
4034 logged without the prepended comment, which is necessary since
4030 they are not truly valid python syntax. This should make session
4035 they are not truly valid python syntax. This should make session
4031 restores produce less errors.
4036 restores produce less errors.
4032
4037
4033 * The namespace cleanup forced me to make a FlexCompleter class
4038 * The namespace cleanup forced me to make a FlexCompleter class
4034 which is nothing but a ripoff of rlcompleter, but with selectable
4039 which is nothing but a ripoff of rlcompleter, but with selectable
4035 namespace (rlcompleter only works in __main__.__dict__). I'll try
4040 namespace (rlcompleter only works in __main__.__dict__). I'll try
4036 to submit a note to the authors to see if this change can be
4041 to submit a note to the authors to see if this change can be
4037 incorporated in future rlcompleter releases (Dec.6: done)
4042 incorporated in future rlcompleter releases (Dec.6: done)
4038
4043
4039 * More fixes to namespace handling. It was a mess! Now all
4044 * More fixes to namespace handling. It was a mess! Now all
4040 explicit references to __main__.__dict__ are gone (except when
4045 explicit references to __main__.__dict__ are gone (except when
4041 really needed) and everything is handled through the namespace
4046 really needed) and everything is handled through the namespace
4042 dicts in the IPython instance. We seem to be getting somewhere
4047 dicts in the IPython instance. We seem to be getting somewhere
4043 with this, finally...
4048 with this, finally...
4044
4049
4045 * Small documentation updates.
4050 * Small documentation updates.
4046
4051
4047 * Created the Extensions directory under IPython (with an
4052 * Created the Extensions directory under IPython (with an
4048 __init__.py). Put the PhysicalQ stuff there. This directory should
4053 __init__.py). Put the PhysicalQ stuff there. This directory should
4049 be used for all special-purpose extensions.
4054 be used for all special-purpose extensions.
4050
4055
4051 * File renaming:
4056 * File renaming:
4052 ipythonlib --> ipmaker
4057 ipythonlib --> ipmaker
4053 ipplib --> iplib
4058 ipplib --> iplib
4054 This makes a bit more sense in terms of what these files actually do.
4059 This makes a bit more sense in terms of what these files actually do.
4055
4060
4056 * Moved all the classes and functions in ipythonlib to ipplib, so
4061 * Moved all the classes and functions in ipythonlib to ipplib, so
4057 now ipythonlib only has make_IPython(). This will ease up its
4062 now ipythonlib only has make_IPython(). This will ease up its
4058 splitting in smaller functional chunks later.
4063 splitting in smaller functional chunks later.
4059
4064
4060 * Cleaned up (done, I think) output of @whos. Better column
4065 * Cleaned up (done, I think) output of @whos. Better column
4061 formatting, and now shows str(var) for as much as it can, which is
4066 formatting, and now shows str(var) for as much as it can, which is
4062 typically what one gets with a 'print var'.
4067 typically what one gets with a 'print var'.
4063
4068
4064 2001-12-04 Fernando Perez <fperez@colorado.edu>
4069 2001-12-04 Fernando Perez <fperez@colorado.edu>
4065
4070
4066 * Fixed namespace problems. Now builtin/IPyhton/user names get
4071 * Fixed namespace problems. Now builtin/IPyhton/user names get
4067 properly reported in their namespace. Internal namespace handling
4072 properly reported in their namespace. Internal namespace handling
4068 is finally getting decent (not perfect yet, but much better than
4073 is finally getting decent (not perfect yet, but much better than
4069 the ad-hoc mess we had).
4074 the ad-hoc mess we had).
4070
4075
4071 * Removed -exit option. If people just want to run a python
4076 * Removed -exit option. If people just want to run a python
4072 script, that's what the normal interpreter is for. Less
4077 script, that's what the normal interpreter is for. Less
4073 unnecessary options, less chances for bugs.
4078 unnecessary options, less chances for bugs.
4074
4079
4075 * Added a crash handler which generates a complete post-mortem if
4080 * Added a crash handler which generates a complete post-mortem if
4076 IPython crashes. This will help a lot in tracking bugs down the
4081 IPython crashes. This will help a lot in tracking bugs down the
4077 road.
4082 road.
4078
4083
4079 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4084 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4080 which were boud to functions being reassigned would bypass the
4085 which were boud to functions being reassigned would bypass the
4081 logger, breaking the sync of _il with the prompt counter. This
4086 logger, breaking the sync of _il with the prompt counter. This
4082 would then crash IPython later when a new line was logged.
4087 would then crash IPython later when a new line was logged.
4083
4088
4084 2001-12-02 Fernando Perez <fperez@colorado.edu>
4089 2001-12-02 Fernando Perez <fperez@colorado.edu>
4085
4090
4086 * Made IPython a package. This means people don't have to clutter
4091 * Made IPython a package. This means people don't have to clutter
4087 their sys.path with yet another directory. Changed the INSTALL
4092 their sys.path with yet another directory. Changed the INSTALL
4088 file accordingly.
4093 file accordingly.
4089
4094
4090 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4095 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4091 sorts its output (so @who shows it sorted) and @whos formats the
4096 sorts its output (so @who shows it sorted) and @whos formats the
4092 table according to the width of the first column. Nicer, easier to
4097 table according to the width of the first column. Nicer, easier to
4093 read. Todo: write a generic table_format() which takes a list of
4098 read. Todo: write a generic table_format() which takes a list of
4094 lists and prints it nicely formatted, with optional row/column
4099 lists and prints it nicely formatted, with optional row/column
4095 separators and proper padding and justification.
4100 separators and proper padding and justification.
4096
4101
4097 * Released 0.1.20
4102 * Released 0.1.20
4098
4103
4099 * Fixed bug in @log which would reverse the inputcache list (a
4104 * Fixed bug in @log which would reverse the inputcache list (a
4100 copy operation was missing).
4105 copy operation was missing).
4101
4106
4102 * Code cleanup. @config was changed to use page(). Better, since
4107 * Code cleanup. @config was changed to use page(). Better, since
4103 its output is always quite long.
4108 its output is always quite long.
4104
4109
4105 * Itpl is back as a dependency. I was having too many problems
4110 * Itpl is back as a dependency. I was having too many problems
4106 getting the parametric aliases to work reliably, and it's just
4111 getting the parametric aliases to work reliably, and it's just
4107 easier to code weird string operations with it than playing %()s
4112 easier to code weird string operations with it than playing %()s
4108 games. It's only ~6k, so I don't think it's too big a deal.
4113 games. It's only ~6k, so I don't think it's too big a deal.
4109
4114
4110 * Found (and fixed) a very nasty bug with history. !lines weren't
4115 * Found (and fixed) a very nasty bug with history. !lines weren't
4111 getting cached, and the out of sync caches would crash
4116 getting cached, and the out of sync caches would crash
4112 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4117 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4113 division of labor a bit better. Bug fixed, cleaner structure.
4118 division of labor a bit better. Bug fixed, cleaner structure.
4114
4119
4115 2001-12-01 Fernando Perez <fperez@colorado.edu>
4120 2001-12-01 Fernando Perez <fperez@colorado.edu>
4116
4121
4117 * Released 0.1.19
4122 * Released 0.1.19
4118
4123
4119 * Added option -n to @hist to prevent line number printing. Much
4124 * Added option -n to @hist to prevent line number printing. Much
4120 easier to copy/paste code this way.
4125 easier to copy/paste code this way.
4121
4126
4122 * Created global _il to hold the input list. Allows easy
4127 * Created global _il to hold the input list. Allows easy
4123 re-execution of blocks of code by slicing it (inspired by Janko's
4128 re-execution of blocks of code by slicing it (inspired by Janko's
4124 comment on 'macros').
4129 comment on 'macros').
4125
4130
4126 * Small fixes and doc updates.
4131 * Small fixes and doc updates.
4127
4132
4128 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4133 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4129 much too fragile with automagic. Handles properly multi-line
4134 much too fragile with automagic. Handles properly multi-line
4130 statements and takes parameters.
4135 statements and takes parameters.
4131
4136
4132 2001-11-30 Fernando Perez <fperez@colorado.edu>
4137 2001-11-30 Fernando Perez <fperez@colorado.edu>
4133
4138
4134 * Version 0.1.18 released.
4139 * Version 0.1.18 released.
4135
4140
4136 * Fixed nasty namespace bug in initial module imports.
4141 * Fixed nasty namespace bug in initial module imports.
4137
4142
4138 * Added copyright/license notes to all code files (except
4143 * Added copyright/license notes to all code files (except
4139 DPyGetOpt). For the time being, LGPL. That could change.
4144 DPyGetOpt). For the time being, LGPL. That could change.
4140
4145
4141 * Rewrote a much nicer README, updated INSTALL, cleaned up
4146 * Rewrote a much nicer README, updated INSTALL, cleaned up
4142 ipythonrc-* samples.
4147 ipythonrc-* samples.
4143
4148
4144 * Overall code/documentation cleanup. Basically ready for
4149 * Overall code/documentation cleanup. Basically ready for
4145 release. Only remaining thing: licence decision (LGPL?).
4150 release. Only remaining thing: licence decision (LGPL?).
4146
4151
4147 * Converted load_config to a class, ConfigLoader. Now recursion
4152 * Converted load_config to a class, ConfigLoader. Now recursion
4148 control is better organized. Doesn't include the same file twice.
4153 control is better organized. Doesn't include the same file twice.
4149
4154
4150 2001-11-29 Fernando Perez <fperez@colorado.edu>
4155 2001-11-29 Fernando Perez <fperez@colorado.edu>
4151
4156
4152 * Got input history working. Changed output history variables from
4157 * Got input history working. Changed output history variables from
4153 _p to _o so that _i is for input and _o for output. Just cleaner
4158 _p to _o so that _i is for input and _o for output. Just cleaner
4154 convention.
4159 convention.
4155
4160
4156 * Implemented parametric aliases. This pretty much allows the
4161 * Implemented parametric aliases. This pretty much allows the
4157 alias system to offer full-blown shell convenience, I think.
4162 alias system to offer full-blown shell convenience, I think.
4158
4163
4159 * Version 0.1.17 released, 0.1.18 opened.
4164 * Version 0.1.17 released, 0.1.18 opened.
4160
4165
4161 * dot_ipython/ipythonrc (alias): added documentation.
4166 * dot_ipython/ipythonrc (alias): added documentation.
4162 (xcolor): Fixed small bug (xcolors -> xcolor)
4167 (xcolor): Fixed small bug (xcolors -> xcolor)
4163
4168
4164 * Changed the alias system. Now alias is a magic command to define
4169 * Changed the alias system. Now alias is a magic command to define
4165 aliases just like the shell. Rationale: the builtin magics should
4170 aliases just like the shell. Rationale: the builtin magics should
4166 be there for things deeply connected to IPython's
4171 be there for things deeply connected to IPython's
4167 architecture. And this is a much lighter system for what I think
4172 architecture. And this is a much lighter system for what I think
4168 is the really important feature: allowing users to define quickly
4173 is the really important feature: allowing users to define quickly
4169 magics that will do shell things for them, so they can customize
4174 magics that will do shell things for them, so they can customize
4170 IPython easily to match their work habits. If someone is really
4175 IPython easily to match their work habits. If someone is really
4171 desperate to have another name for a builtin alias, they can
4176 desperate to have another name for a builtin alias, they can
4172 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4177 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4173 works.
4178 works.
4174
4179
4175 2001-11-28 Fernando Perez <fperez@colorado.edu>
4180 2001-11-28 Fernando Perez <fperez@colorado.edu>
4176
4181
4177 * Changed @file so that it opens the source file at the proper
4182 * Changed @file so that it opens the source file at the proper
4178 line. Since it uses less, if your EDITOR environment is
4183 line. Since it uses less, if your EDITOR environment is
4179 configured, typing v will immediately open your editor of choice
4184 configured, typing v will immediately open your editor of choice
4180 right at the line where the object is defined. Not as quick as
4185 right at the line where the object is defined. Not as quick as
4181 having a direct @edit command, but for all intents and purposes it
4186 having a direct @edit command, but for all intents and purposes it
4182 works. And I don't have to worry about writing @edit to deal with
4187 works. And I don't have to worry about writing @edit to deal with
4183 all the editors, less does that.
4188 all the editors, less does that.
4184
4189
4185 * Version 0.1.16 released, 0.1.17 opened.
4190 * Version 0.1.16 released, 0.1.17 opened.
4186
4191
4187 * Fixed some nasty bugs in the page/page_dumb combo that could
4192 * Fixed some nasty bugs in the page/page_dumb combo that could
4188 crash IPython.
4193 crash IPython.
4189
4194
4190 2001-11-27 Fernando Perez <fperez@colorado.edu>
4195 2001-11-27 Fernando Perez <fperez@colorado.edu>
4191
4196
4192 * Version 0.1.15 released, 0.1.16 opened.
4197 * Version 0.1.15 released, 0.1.16 opened.
4193
4198
4194 * Finally got ? and ?? to work for undefined things: now it's
4199 * Finally got ? and ?? to work for undefined things: now it's
4195 possible to type {}.get? and get information about the get method
4200 possible to type {}.get? and get information about the get method
4196 of dicts, or os.path? even if only os is defined (so technically
4201 of dicts, or os.path? even if only os is defined (so technically
4197 os.path isn't). Works at any level. For example, after import os,
4202 os.path isn't). Works at any level. For example, after import os,
4198 os?, os.path?, os.path.abspath? all work. This is great, took some
4203 os?, os.path?, os.path.abspath? all work. This is great, took some
4199 work in _ofind.
4204 work in _ofind.
4200
4205
4201 * Fixed more bugs with logging. The sanest way to do it was to add
4206 * Fixed more bugs with logging. The sanest way to do it was to add
4202 to @log a 'mode' parameter. Killed two in one shot (this mode
4207 to @log a 'mode' parameter. Killed two in one shot (this mode
4203 option was a request of Janko's). I think it's finally clean
4208 option was a request of Janko's). I think it's finally clean
4204 (famous last words).
4209 (famous last words).
4205
4210
4206 * Added a page_dumb() pager which does a decent job of paging on
4211 * Added a page_dumb() pager which does a decent job of paging on
4207 screen, if better things (like less) aren't available. One less
4212 screen, if better things (like less) aren't available. One less
4208 unix dependency (someday maybe somebody will port this to
4213 unix dependency (someday maybe somebody will port this to
4209 windows).
4214 windows).
4210
4215
4211 * Fixed problem in magic_log: would lock of logging out if log
4216 * Fixed problem in magic_log: would lock of logging out if log
4212 creation failed (because it would still think it had succeeded).
4217 creation failed (because it would still think it had succeeded).
4213
4218
4214 * Improved the page() function using curses to auto-detect screen
4219 * Improved the page() function using curses to auto-detect screen
4215 size. Now it can make a much better decision on whether to print
4220 size. Now it can make a much better decision on whether to print
4216 or page a string. Option screen_length was modified: a value 0
4221 or page a string. Option screen_length was modified: a value 0
4217 means auto-detect, and that's the default now.
4222 means auto-detect, and that's the default now.
4218
4223
4219 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4224 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4220 go out. I'll test it for a few days, then talk to Janko about
4225 go out. I'll test it for a few days, then talk to Janko about
4221 licences and announce it.
4226 licences and announce it.
4222
4227
4223 * Fixed the length of the auto-generated ---> prompt which appears
4228 * Fixed the length of the auto-generated ---> prompt which appears
4224 for auto-parens and auto-quotes. Getting this right isn't trivial,
4229 for auto-parens and auto-quotes. Getting this right isn't trivial,
4225 with all the color escapes, different prompt types and optional
4230 with all the color escapes, different prompt types and optional
4226 separators. But it seems to be working in all the combinations.
4231 separators. But it seems to be working in all the combinations.
4227
4232
4228 2001-11-26 Fernando Perez <fperez@colorado.edu>
4233 2001-11-26 Fernando Perez <fperez@colorado.edu>
4229
4234
4230 * Wrote a regexp filter to get option types from the option names
4235 * Wrote a regexp filter to get option types from the option names
4231 string. This eliminates the need to manually keep two duplicate
4236 string. This eliminates the need to manually keep two duplicate
4232 lists.
4237 lists.
4233
4238
4234 * Removed the unneeded check_option_names. Now options are handled
4239 * Removed the unneeded check_option_names. Now options are handled
4235 in a much saner manner and it's easy to visually check that things
4240 in a much saner manner and it's easy to visually check that things
4236 are ok.
4241 are ok.
4237
4242
4238 * Updated version numbers on all files I modified to carry a
4243 * Updated version numbers on all files I modified to carry a
4239 notice so Janko and Nathan have clear version markers.
4244 notice so Janko and Nathan have clear version markers.
4240
4245
4241 * Updated docstring for ultraTB with my changes. I should send
4246 * Updated docstring for ultraTB with my changes. I should send
4242 this to Nathan.
4247 this to Nathan.
4243
4248
4244 * Lots of small fixes. Ran everything through pychecker again.
4249 * Lots of small fixes. Ran everything through pychecker again.
4245
4250
4246 * Made loading of deep_reload an cmd line option. If it's not too
4251 * Made loading of deep_reload an cmd line option. If it's not too
4247 kosher, now people can just disable it. With -nodeep_reload it's
4252 kosher, now people can just disable it. With -nodeep_reload it's
4248 still available as dreload(), it just won't overwrite reload().
4253 still available as dreload(), it just won't overwrite reload().
4249
4254
4250 * Moved many options to the no| form (-opt and -noopt
4255 * Moved many options to the no| form (-opt and -noopt
4251 accepted). Cleaner.
4256 accepted). Cleaner.
4252
4257
4253 * Changed magic_log so that if called with no parameters, it uses
4258 * Changed magic_log so that if called with no parameters, it uses
4254 'rotate' mode. That way auto-generated logs aren't automatically
4259 'rotate' mode. That way auto-generated logs aren't automatically
4255 over-written. For normal logs, now a backup is made if it exists
4260 over-written. For normal logs, now a backup is made if it exists
4256 (only 1 level of backups). A new 'backup' mode was added to the
4261 (only 1 level of backups). A new 'backup' mode was added to the
4257 Logger class to support this. This was a request by Janko.
4262 Logger class to support this. This was a request by Janko.
4258
4263
4259 * Added @logoff/@logon to stop/restart an active log.
4264 * Added @logoff/@logon to stop/restart an active log.
4260
4265
4261 * Fixed a lot of bugs in log saving/replay. It was pretty
4266 * Fixed a lot of bugs in log saving/replay. It was pretty
4262 broken. Now special lines (!@,/) appear properly in the command
4267 broken. Now special lines (!@,/) appear properly in the command
4263 history after a log replay.
4268 history after a log replay.
4264
4269
4265 * Tried and failed to implement full session saving via pickle. My
4270 * Tried and failed to implement full session saving via pickle. My
4266 idea was to pickle __main__.__dict__, but modules can't be
4271 idea was to pickle __main__.__dict__, but modules can't be
4267 pickled. This would be a better alternative to replaying logs, but
4272 pickled. This would be a better alternative to replaying logs, but
4268 seems quite tricky to get to work. Changed -session to be called
4273 seems quite tricky to get to work. Changed -session to be called
4269 -logplay, which more accurately reflects what it does. And if we
4274 -logplay, which more accurately reflects what it does. And if we
4270 ever get real session saving working, -session is now available.
4275 ever get real session saving working, -session is now available.
4271
4276
4272 * Implemented color schemes for prompts also. As for tracebacks,
4277 * Implemented color schemes for prompts also. As for tracebacks,
4273 currently only NoColor and Linux are supported. But now the
4278 currently only NoColor and Linux are supported. But now the
4274 infrastructure is in place, based on a generic ColorScheme
4279 infrastructure is in place, based on a generic ColorScheme
4275 class. So writing and activating new schemes both for the prompts
4280 class. So writing and activating new schemes both for the prompts
4276 and the tracebacks should be straightforward.
4281 and the tracebacks should be straightforward.
4277
4282
4278 * Version 0.1.13 released, 0.1.14 opened.
4283 * Version 0.1.13 released, 0.1.14 opened.
4279
4284
4280 * Changed handling of options for output cache. Now counter is
4285 * Changed handling of options for output cache. Now counter is
4281 hardwired starting at 1 and one specifies the maximum number of
4286 hardwired starting at 1 and one specifies the maximum number of
4282 entries *in the outcache* (not the max prompt counter). This is
4287 entries *in the outcache* (not the max prompt counter). This is
4283 much better, since many statements won't increase the cache
4288 much better, since many statements won't increase the cache
4284 count. It also eliminated some confusing options, now there's only
4289 count. It also eliminated some confusing options, now there's only
4285 one: cache_size.
4290 one: cache_size.
4286
4291
4287 * Added 'alias' magic function and magic_alias option in the
4292 * Added 'alias' magic function and magic_alias option in the
4288 ipythonrc file. Now the user can easily define whatever names he
4293 ipythonrc file. Now the user can easily define whatever names he
4289 wants for the magic functions without having to play weird
4294 wants for the magic functions without having to play weird
4290 namespace games. This gives IPython a real shell-like feel.
4295 namespace games. This gives IPython a real shell-like feel.
4291
4296
4292 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4297 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4293 @ or not).
4298 @ or not).
4294
4299
4295 This was one of the last remaining 'visible' bugs (that I know
4300 This was one of the last remaining 'visible' bugs (that I know
4296 of). I think if I can clean up the session loading so it works
4301 of). I think if I can clean up the session loading so it works
4297 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4302 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4298 about licensing).
4303 about licensing).
4299
4304
4300 2001-11-25 Fernando Perez <fperez@colorado.edu>
4305 2001-11-25 Fernando Perez <fperez@colorado.edu>
4301
4306
4302 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4307 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4303 there's a cleaner distinction between what ? and ?? show.
4308 there's a cleaner distinction between what ? and ?? show.
4304
4309
4305 * Added screen_length option. Now the user can define his own
4310 * Added screen_length option. Now the user can define his own
4306 screen size for page() operations.
4311 screen size for page() operations.
4307
4312
4308 * Implemented magic shell-like functions with automatic code
4313 * Implemented magic shell-like functions with automatic code
4309 generation. Now adding another function is just a matter of adding
4314 generation. Now adding another function is just a matter of adding
4310 an entry to a dict, and the function is dynamically generated at
4315 an entry to a dict, and the function is dynamically generated at
4311 run-time. Python has some really cool features!
4316 run-time. Python has some really cool features!
4312
4317
4313 * Renamed many options to cleanup conventions a little. Now all
4318 * Renamed many options to cleanup conventions a little. Now all
4314 are lowercase, and only underscores where needed. Also in the code
4319 are lowercase, and only underscores where needed. Also in the code
4315 option name tables are clearer.
4320 option name tables are clearer.
4316
4321
4317 * Changed prompts a little. Now input is 'In [n]:' instead of
4322 * Changed prompts a little. Now input is 'In [n]:' instead of
4318 'In[n]:='. This allows it the numbers to be aligned with the
4323 'In[n]:='. This allows it the numbers to be aligned with the
4319 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4324 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4320 Python (it was a Mathematica thing). The '...' continuation prompt
4325 Python (it was a Mathematica thing). The '...' continuation prompt
4321 was also changed a little to align better.
4326 was also changed a little to align better.
4322
4327
4323 * Fixed bug when flushing output cache. Not all _p<n> variables
4328 * Fixed bug when flushing output cache. Not all _p<n> variables
4324 exist, so their deletion needs to be wrapped in a try:
4329 exist, so their deletion needs to be wrapped in a try:
4325
4330
4326 * Figured out how to properly use inspect.formatargspec() (it
4331 * Figured out how to properly use inspect.formatargspec() (it
4327 requires the args preceded by *). So I removed all the code from
4332 requires the args preceded by *). So I removed all the code from
4328 _get_pdef in Magic, which was just replicating that.
4333 _get_pdef in Magic, which was just replicating that.
4329
4334
4330 * Added test to prefilter to allow redefining magic function names
4335 * Added test to prefilter to allow redefining magic function names
4331 as variables. This is ok, since the @ form is always available,
4336 as variables. This is ok, since the @ form is always available,
4332 but whe should allow the user to define a variable called 'ls' if
4337 but whe should allow the user to define a variable called 'ls' if
4333 he needs it.
4338 he needs it.
4334
4339
4335 * Moved the ToDo information from README into a separate ToDo.
4340 * Moved the ToDo information from README into a separate ToDo.
4336
4341
4337 * General code cleanup and small bugfixes. I think it's close to a
4342 * General code cleanup and small bugfixes. I think it's close to a
4338 state where it can be released, obviously with a big 'beta'
4343 state where it can be released, obviously with a big 'beta'
4339 warning on it.
4344 warning on it.
4340
4345
4341 * Got the magic function split to work. Now all magics are defined
4346 * Got the magic function split to work. Now all magics are defined
4342 in a separate class. It just organizes things a bit, and now
4347 in a separate class. It just organizes things a bit, and now
4343 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4348 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4344 was too long).
4349 was too long).
4345
4350
4346 * Changed @clear to @reset to avoid potential confusions with
4351 * Changed @clear to @reset to avoid potential confusions with
4347 the shell command clear. Also renamed @cl to @clear, which does
4352 the shell command clear. Also renamed @cl to @clear, which does
4348 exactly what people expect it to from their shell experience.
4353 exactly what people expect it to from their shell experience.
4349
4354
4350 Added a check to the @reset command (since it's so
4355 Added a check to the @reset command (since it's so
4351 destructive, it's probably a good idea to ask for confirmation).
4356 destructive, it's probably a good idea to ask for confirmation).
4352 But now reset only works for full namespace resetting. Since the
4357 But now reset only works for full namespace resetting. Since the
4353 del keyword is already there for deleting a few specific
4358 del keyword is already there for deleting a few specific
4354 variables, I don't see the point of having a redundant magic
4359 variables, I don't see the point of having a redundant magic
4355 function for the same task.
4360 function for the same task.
4356
4361
4357 2001-11-24 Fernando Perez <fperez@colorado.edu>
4362 2001-11-24 Fernando Perez <fperez@colorado.edu>
4358
4363
4359 * Updated the builtin docs (esp. the ? ones).
4364 * Updated the builtin docs (esp. the ? ones).
4360
4365
4361 * Ran all the code through pychecker. Not terribly impressed with
4366 * Ran all the code through pychecker. Not terribly impressed with
4362 it: lots of spurious warnings and didn't really find anything of
4367 it: lots of spurious warnings and didn't really find anything of
4363 substance (just a few modules being imported and not used).
4368 substance (just a few modules being imported and not used).
4364
4369
4365 * Implemented the new ultraTB functionality into IPython. New
4370 * Implemented the new ultraTB functionality into IPython. New
4366 option: xcolors. This chooses color scheme. xmode now only selects
4371 option: xcolors. This chooses color scheme. xmode now only selects
4367 between Plain and Verbose. Better orthogonality.
4372 between Plain and Verbose. Better orthogonality.
4368
4373
4369 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4374 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4370 mode and color scheme for the exception handlers. Now it's
4375 mode and color scheme for the exception handlers. Now it's
4371 possible to have the verbose traceback with no coloring.
4376 possible to have the verbose traceback with no coloring.
4372
4377
4373 2001-11-23 Fernando Perez <fperez@colorado.edu>
4378 2001-11-23 Fernando Perez <fperez@colorado.edu>
4374
4379
4375 * Version 0.1.12 released, 0.1.13 opened.
4380 * Version 0.1.12 released, 0.1.13 opened.
4376
4381
4377 * Removed option to set auto-quote and auto-paren escapes by
4382 * Removed option to set auto-quote and auto-paren escapes by
4378 user. The chances of breaking valid syntax are just too high. If
4383 user. The chances of breaking valid syntax are just too high. If
4379 someone *really* wants, they can always dig into the code.
4384 someone *really* wants, they can always dig into the code.
4380
4385
4381 * Made prompt separators configurable.
4386 * Made prompt separators configurable.
4382
4387
4383 2001-11-22 Fernando Perez <fperez@colorado.edu>
4388 2001-11-22 Fernando Perez <fperez@colorado.edu>
4384
4389
4385 * Small bugfixes in many places.
4390 * Small bugfixes in many places.
4386
4391
4387 * Removed the MyCompleter class from ipplib. It seemed redundant
4392 * Removed the MyCompleter class from ipplib. It seemed redundant
4388 with the C-p,C-n history search functionality. Less code to
4393 with the C-p,C-n history search functionality. Less code to
4389 maintain.
4394 maintain.
4390
4395
4391 * Moved all the original ipython.py code into ipythonlib.py. Right
4396 * Moved all the original ipython.py code into ipythonlib.py. Right
4392 now it's just one big dump into a function called make_IPython, so
4397 now it's just one big dump into a function called make_IPython, so
4393 no real modularity has been gained. But at least it makes the
4398 no real modularity has been gained. But at least it makes the
4394 wrapper script tiny, and since ipythonlib is a module, it gets
4399 wrapper script tiny, and since ipythonlib is a module, it gets
4395 compiled and startup is much faster.
4400 compiled and startup is much faster.
4396
4401
4397 This is a reasobably 'deep' change, so we should test it for a
4402 This is a reasobably 'deep' change, so we should test it for a
4398 while without messing too much more with the code.
4403 while without messing too much more with the code.
4399
4404
4400 2001-11-21 Fernando Perez <fperez@colorado.edu>
4405 2001-11-21 Fernando Perez <fperez@colorado.edu>
4401
4406
4402 * Version 0.1.11 released, 0.1.12 opened for further work.
4407 * Version 0.1.11 released, 0.1.12 opened for further work.
4403
4408
4404 * Removed dependency on Itpl. It was only needed in one place. It
4409 * Removed dependency on Itpl. It was only needed in one place. It
4405 would be nice if this became part of python, though. It makes life
4410 would be nice if this became part of python, though. It makes life
4406 *a lot* easier in some cases.
4411 *a lot* easier in some cases.
4407
4412
4408 * Simplified the prefilter code a bit. Now all handlers are
4413 * Simplified the prefilter code a bit. Now all handlers are
4409 expected to explicitly return a value (at least a blank string).
4414 expected to explicitly return a value (at least a blank string).
4410
4415
4411 * Heavy edits in ipplib. Removed the help system altogether. Now
4416 * Heavy edits in ipplib. Removed the help system altogether. Now
4412 obj?/?? is used for inspecting objects, a magic @doc prints
4417 obj?/?? is used for inspecting objects, a magic @doc prints
4413 docstrings, and full-blown Python help is accessed via the 'help'
4418 docstrings, and full-blown Python help is accessed via the 'help'
4414 keyword. This cleans up a lot of code (less to maintain) and does
4419 keyword. This cleans up a lot of code (less to maintain) and does
4415 the job. Since 'help' is now a standard Python component, might as
4420 the job. Since 'help' is now a standard Python component, might as
4416 well use it and remove duplicate functionality.
4421 well use it and remove duplicate functionality.
4417
4422
4418 Also removed the option to use ipplib as a standalone program. By
4423 Also removed the option to use ipplib as a standalone program. By
4419 now it's too dependent on other parts of IPython to function alone.
4424 now it's too dependent on other parts of IPython to function alone.
4420
4425
4421 * Fixed bug in genutils.pager. It would crash if the pager was
4426 * Fixed bug in genutils.pager. It would crash if the pager was
4422 exited immediately after opening (broken pipe).
4427 exited immediately after opening (broken pipe).
4423
4428
4424 * Trimmed down the VerboseTB reporting a little. The header is
4429 * Trimmed down the VerboseTB reporting a little. The header is
4425 much shorter now and the repeated exception arguments at the end
4430 much shorter now and the repeated exception arguments at the end
4426 have been removed. For interactive use the old header seemed a bit
4431 have been removed. For interactive use the old header seemed a bit
4427 excessive.
4432 excessive.
4428
4433
4429 * Fixed small bug in output of @whos for variables with multi-word
4434 * Fixed small bug in output of @whos for variables with multi-word
4430 types (only first word was displayed).
4435 types (only first word was displayed).
4431
4436
4432 2001-11-17 Fernando Perez <fperez@colorado.edu>
4437 2001-11-17 Fernando Perez <fperez@colorado.edu>
4433
4438
4434 * Version 0.1.10 released, 0.1.11 opened for further work.
4439 * Version 0.1.10 released, 0.1.11 opened for further work.
4435
4440
4436 * Modified dirs and friends. dirs now *returns* the stack (not
4441 * Modified dirs and friends. dirs now *returns* the stack (not
4437 prints), so one can manipulate it as a variable. Convenient to
4442 prints), so one can manipulate it as a variable. Convenient to
4438 travel along many directories.
4443 travel along many directories.
4439
4444
4440 * Fixed bug in magic_pdef: would only work with functions with
4445 * Fixed bug in magic_pdef: would only work with functions with
4441 arguments with default values.
4446 arguments with default values.
4442
4447
4443 2001-11-14 Fernando Perez <fperez@colorado.edu>
4448 2001-11-14 Fernando Perez <fperez@colorado.edu>
4444
4449
4445 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4450 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4446 example with IPython. Various other minor fixes and cleanups.
4451 example with IPython. Various other minor fixes and cleanups.
4447
4452
4448 * Version 0.1.9 released, 0.1.10 opened for further work.
4453 * Version 0.1.9 released, 0.1.10 opened for further work.
4449
4454
4450 * Added sys.path to the list of directories searched in the
4455 * Added sys.path to the list of directories searched in the
4451 execfile= option. It used to be the current directory and the
4456 execfile= option. It used to be the current directory and the
4452 user's IPYTHONDIR only.
4457 user's IPYTHONDIR only.
4453
4458
4454 2001-11-13 Fernando Perez <fperez@colorado.edu>
4459 2001-11-13 Fernando Perez <fperez@colorado.edu>
4455
4460
4456 * Reinstated the raw_input/prefilter separation that Janko had
4461 * Reinstated the raw_input/prefilter separation that Janko had
4457 initially. This gives a more convenient setup for extending the
4462 initially. This gives a more convenient setup for extending the
4458 pre-processor from the outside: raw_input always gets a string,
4463 pre-processor from the outside: raw_input always gets a string,
4459 and prefilter has to process it. We can then redefine prefilter
4464 and prefilter has to process it. We can then redefine prefilter
4460 from the outside and implement extensions for special
4465 from the outside and implement extensions for special
4461 purposes.
4466 purposes.
4462
4467
4463 Today I got one for inputting PhysicalQuantity objects
4468 Today I got one for inputting PhysicalQuantity objects
4464 (from Scientific) without needing any function calls at
4469 (from Scientific) without needing any function calls at
4465 all. Extremely convenient, and it's all done as a user-level
4470 all. Extremely convenient, and it's all done as a user-level
4466 extension (no IPython code was touched). Now instead of:
4471 extension (no IPython code was touched). Now instead of:
4467 a = PhysicalQuantity(4.2,'m/s**2')
4472 a = PhysicalQuantity(4.2,'m/s**2')
4468 one can simply say
4473 one can simply say
4469 a = 4.2 m/s**2
4474 a = 4.2 m/s**2
4470 or even
4475 or even
4471 a = 4.2 m/s^2
4476 a = 4.2 m/s^2
4472
4477
4473 I use this, but it's also a proof of concept: IPython really is
4478 I use this, but it's also a proof of concept: IPython really is
4474 fully user-extensible, even at the level of the parsing of the
4479 fully user-extensible, even at the level of the parsing of the
4475 command line. It's not trivial, but it's perfectly doable.
4480 command line. It's not trivial, but it's perfectly doable.
4476
4481
4477 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4482 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4478 the problem of modules being loaded in the inverse order in which
4483 the problem of modules being loaded in the inverse order in which
4479 they were defined in
4484 they were defined in
4480
4485
4481 * Version 0.1.8 released, 0.1.9 opened for further work.
4486 * Version 0.1.8 released, 0.1.9 opened for further work.
4482
4487
4483 * Added magics pdef, source and file. They respectively show the
4488 * Added magics pdef, source and file. They respectively show the
4484 definition line ('prototype' in C), source code and full python
4489 definition line ('prototype' in C), source code and full python
4485 file for any callable object. The object inspector oinfo uses
4490 file for any callable object. The object inspector oinfo uses
4486 these to show the same information.
4491 these to show the same information.
4487
4492
4488 * Version 0.1.7 released, 0.1.8 opened for further work.
4493 * Version 0.1.7 released, 0.1.8 opened for further work.
4489
4494
4490 * Separated all the magic functions into a class called Magic. The
4495 * Separated all the magic functions into a class called Magic. The
4491 InteractiveShell class was becoming too big for Xemacs to handle
4496 InteractiveShell class was becoming too big for Xemacs to handle
4492 (de-indenting a line would lock it up for 10 seconds while it
4497 (de-indenting a line would lock it up for 10 seconds while it
4493 backtracked on the whole class!)
4498 backtracked on the whole class!)
4494
4499
4495 FIXME: didn't work. It can be done, but right now namespaces are
4500 FIXME: didn't work. It can be done, but right now namespaces are
4496 all messed up. Do it later (reverted it for now, so at least
4501 all messed up. Do it later (reverted it for now, so at least
4497 everything works as before).
4502 everything works as before).
4498
4503
4499 * Got the object introspection system (magic_oinfo) working! I
4504 * Got the object introspection system (magic_oinfo) working! I
4500 think this is pretty much ready for release to Janko, so he can
4505 think this is pretty much ready for release to Janko, so he can
4501 test it for a while and then announce it. Pretty much 100% of what
4506 test it for a while and then announce it. Pretty much 100% of what
4502 I wanted for the 'phase 1' release is ready. Happy, tired.
4507 I wanted for the 'phase 1' release is ready. Happy, tired.
4503
4508
4504 2001-11-12 Fernando Perez <fperez@colorado.edu>
4509 2001-11-12 Fernando Perez <fperez@colorado.edu>
4505
4510
4506 * Version 0.1.6 released, 0.1.7 opened for further work.
4511 * Version 0.1.6 released, 0.1.7 opened for further work.
4507
4512
4508 * Fixed bug in printing: it used to test for truth before
4513 * Fixed bug in printing: it used to test for truth before
4509 printing, so 0 wouldn't print. Now checks for None.
4514 printing, so 0 wouldn't print. Now checks for None.
4510
4515
4511 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
4516 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
4512 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
4517 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
4513 reaches by hand into the outputcache. Think of a better way to do
4518 reaches by hand into the outputcache. Think of a better way to do
4514 this later.
4519 this later.
4515
4520
4516 * Various small fixes thanks to Nathan's comments.
4521 * Various small fixes thanks to Nathan's comments.
4517
4522
4518 * Changed magic_pprint to magic_Pprint. This way it doesn't
4523 * Changed magic_pprint to magic_Pprint. This way it doesn't
4519 collide with pprint() and the name is consistent with the command
4524 collide with pprint() and the name is consistent with the command
4520 line option.
4525 line option.
4521
4526
4522 * Changed prompt counter behavior to be fully like
4527 * Changed prompt counter behavior to be fully like
4523 Mathematica's. That is, even input that doesn't return a result
4528 Mathematica's. That is, even input that doesn't return a result
4524 raises the prompt counter. The old behavior was kind of confusing
4529 raises the prompt counter. The old behavior was kind of confusing
4525 (getting the same prompt number several times if the operation
4530 (getting the same prompt number several times if the operation
4526 didn't return a result).
4531 didn't return a result).
4527
4532
4528 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
4533 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
4529
4534
4530 * Fixed -Classic mode (wasn't working anymore).
4535 * Fixed -Classic mode (wasn't working anymore).
4531
4536
4532 * Added colored prompts using Nathan's new code. Colors are
4537 * Added colored prompts using Nathan's new code. Colors are
4533 currently hardwired, they can be user-configurable. For
4538 currently hardwired, they can be user-configurable. For
4534 developers, they can be chosen in file ipythonlib.py, at the
4539 developers, they can be chosen in file ipythonlib.py, at the
4535 beginning of the CachedOutput class def.
4540 beginning of the CachedOutput class def.
4536
4541
4537 2001-11-11 Fernando Perez <fperez@colorado.edu>
4542 2001-11-11 Fernando Perez <fperez@colorado.edu>
4538
4543
4539 * Version 0.1.5 released, 0.1.6 opened for further work.
4544 * Version 0.1.5 released, 0.1.6 opened for further work.
4540
4545
4541 * Changed magic_env to *return* the environment as a dict (not to
4546 * Changed magic_env to *return* the environment as a dict (not to
4542 print it). This way it prints, but it can also be processed.
4547 print it). This way it prints, but it can also be processed.
4543
4548
4544 * Added Verbose exception reporting to interactive
4549 * Added Verbose exception reporting to interactive
4545 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
4550 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
4546 traceback. Had to make some changes to the ultraTB file. This is
4551 traceback. Had to make some changes to the ultraTB file. This is
4547 probably the last 'big' thing in my mental todo list. This ties
4552 probably the last 'big' thing in my mental todo list. This ties
4548 in with the next entry:
4553 in with the next entry:
4549
4554
4550 * Changed -Xi and -Xf to a single -xmode option. Now all the user
4555 * Changed -Xi and -Xf to a single -xmode option. Now all the user
4551 has to specify is Plain, Color or Verbose for all exception
4556 has to specify is Plain, Color or Verbose for all exception
4552 handling.
4557 handling.
4553
4558
4554 * Removed ShellServices option. All this can really be done via
4559 * Removed ShellServices option. All this can really be done via
4555 the magic system. It's easier to extend, cleaner and has automatic
4560 the magic system. It's easier to extend, cleaner and has automatic
4556 namespace protection and documentation.
4561 namespace protection and documentation.
4557
4562
4558 2001-11-09 Fernando Perez <fperez@colorado.edu>
4563 2001-11-09 Fernando Perez <fperez@colorado.edu>
4559
4564
4560 * Fixed bug in output cache flushing (missing parameter to
4565 * Fixed bug in output cache flushing (missing parameter to
4561 __init__). Other small bugs fixed (found using pychecker).
4566 __init__). Other small bugs fixed (found using pychecker).
4562
4567
4563 * Version 0.1.4 opened for bugfixing.
4568 * Version 0.1.4 opened for bugfixing.
4564
4569
4565 2001-11-07 Fernando Perez <fperez@colorado.edu>
4570 2001-11-07 Fernando Perez <fperez@colorado.edu>
4566
4571
4567 * Version 0.1.3 released, mainly because of the raw_input bug.
4572 * Version 0.1.3 released, mainly because of the raw_input bug.
4568
4573
4569 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
4574 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
4570 and when testing for whether things were callable, a call could
4575 and when testing for whether things were callable, a call could
4571 actually be made to certain functions. They would get called again
4576 actually be made to certain functions. They would get called again
4572 once 'really' executed, with a resulting double call. A disaster
4577 once 'really' executed, with a resulting double call. A disaster
4573 in many cases (list.reverse() would never work!).
4578 in many cases (list.reverse() would never work!).
4574
4579
4575 * Removed prefilter() function, moved its code to raw_input (which
4580 * Removed prefilter() function, moved its code to raw_input (which
4576 after all was just a near-empty caller for prefilter). This saves
4581 after all was just a near-empty caller for prefilter). This saves
4577 a function call on every prompt, and simplifies the class a tiny bit.
4582 a function call on every prompt, and simplifies the class a tiny bit.
4578
4583
4579 * Fix _ip to __ip name in magic example file.
4584 * Fix _ip to __ip name in magic example file.
4580
4585
4581 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
4586 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
4582 work with non-gnu versions of tar.
4587 work with non-gnu versions of tar.
4583
4588
4584 2001-11-06 Fernando Perez <fperez@colorado.edu>
4589 2001-11-06 Fernando Perez <fperez@colorado.edu>
4585
4590
4586 * Version 0.1.2. Just to keep track of the recent changes.
4591 * Version 0.1.2. Just to keep track of the recent changes.
4587
4592
4588 * Fixed nasty bug in output prompt routine. It used to check 'if
4593 * Fixed nasty bug in output prompt routine. It used to check 'if
4589 arg != None...'. Problem is, this fails if arg implements a
4594 arg != None...'. Problem is, this fails if arg implements a
4590 special comparison (__cmp__) which disallows comparing to
4595 special comparison (__cmp__) which disallows comparing to
4591 None. Found it when trying to use the PhysicalQuantity module from
4596 None. Found it when trying to use the PhysicalQuantity module from
4592 ScientificPython.
4597 ScientificPython.
4593
4598
4594 2001-11-05 Fernando Perez <fperez@colorado.edu>
4599 2001-11-05 Fernando Perez <fperez@colorado.edu>
4595
4600
4596 * Also added dirs. Now the pushd/popd/dirs family functions
4601 * Also added dirs. Now the pushd/popd/dirs family functions
4597 basically like the shell, with the added convenience of going home
4602 basically like the shell, with the added convenience of going home
4598 when called with no args.
4603 when called with no args.
4599
4604
4600 * pushd/popd slightly modified to mimic shell behavior more
4605 * pushd/popd slightly modified to mimic shell behavior more
4601 closely.
4606 closely.
4602
4607
4603 * Added env,pushd,popd from ShellServices as magic functions. I
4608 * Added env,pushd,popd from ShellServices as magic functions. I
4604 think the cleanest will be to port all desired functions from
4609 think the cleanest will be to port all desired functions from
4605 ShellServices as magics and remove ShellServices altogether. This
4610 ShellServices as magics and remove ShellServices altogether. This
4606 will provide a single, clean way of adding functionality
4611 will provide a single, clean way of adding functionality
4607 (shell-type or otherwise) to IP.
4612 (shell-type or otherwise) to IP.
4608
4613
4609 2001-11-04 Fernando Perez <fperez@colorado.edu>
4614 2001-11-04 Fernando Perez <fperez@colorado.edu>
4610
4615
4611 * Added .ipython/ directory to sys.path. This way users can keep
4616 * Added .ipython/ directory to sys.path. This way users can keep
4612 customizations there and access them via import.
4617 customizations there and access them via import.
4613
4618
4614 2001-11-03 Fernando Perez <fperez@colorado.edu>
4619 2001-11-03 Fernando Perez <fperez@colorado.edu>
4615
4620
4616 * Opened version 0.1.1 for new changes.
4621 * Opened version 0.1.1 for new changes.
4617
4622
4618 * Changed version number to 0.1.0: first 'public' release, sent to
4623 * Changed version number to 0.1.0: first 'public' release, sent to
4619 Nathan and Janko.
4624 Nathan and Janko.
4620
4625
4621 * Lots of small fixes and tweaks.
4626 * Lots of small fixes and tweaks.
4622
4627
4623 * Minor changes to whos format. Now strings are shown, snipped if
4628 * Minor changes to whos format. Now strings are shown, snipped if
4624 too long.
4629 too long.
4625
4630
4626 * Changed ShellServices to work on __main__ so they show up in @who
4631 * Changed ShellServices to work on __main__ so they show up in @who
4627
4632
4628 * Help also works with ? at the end of a line:
4633 * Help also works with ? at the end of a line:
4629 ?sin and sin?
4634 ?sin and sin?
4630 both produce the same effect. This is nice, as often I use the
4635 both produce the same effect. This is nice, as often I use the
4631 tab-complete to find the name of a method, but I used to then have
4636 tab-complete to find the name of a method, but I used to then have
4632 to go to the beginning of the line to put a ? if I wanted more
4637 to go to the beginning of the line to put a ? if I wanted more
4633 info. Now I can just add the ? and hit return. Convenient.
4638 info. Now I can just add the ? and hit return. Convenient.
4634
4639
4635 2001-11-02 Fernando Perez <fperez@colorado.edu>
4640 2001-11-02 Fernando Perez <fperez@colorado.edu>
4636
4641
4637 * Python version check (>=2.1) added.
4642 * Python version check (>=2.1) added.
4638
4643
4639 * Added LazyPython documentation. At this point the docs are quite
4644 * Added LazyPython documentation. At this point the docs are quite
4640 a mess. A cleanup is in order.
4645 a mess. A cleanup is in order.
4641
4646
4642 * Auto-installer created. For some bizarre reason, the zipfiles
4647 * Auto-installer created. For some bizarre reason, the zipfiles
4643 module isn't working on my system. So I made a tar version
4648 module isn't working on my system. So I made a tar version
4644 (hopefully the command line options in various systems won't kill
4649 (hopefully the command line options in various systems won't kill
4645 me).
4650 me).
4646
4651
4647 * Fixes to Struct in genutils. Now all dictionary-like methods are
4652 * Fixes to Struct in genutils. Now all dictionary-like methods are
4648 protected (reasonably).
4653 protected (reasonably).
4649
4654
4650 * Added pager function to genutils and changed ? to print usage
4655 * Added pager function to genutils and changed ? to print usage
4651 note through it (it was too long).
4656 note through it (it was too long).
4652
4657
4653 * Added the LazyPython functionality. Works great! I changed the
4658 * Added the LazyPython functionality. Works great! I changed the
4654 auto-quote escape to ';', it's on home row and next to '. But
4659 auto-quote escape to ';', it's on home row and next to '. But
4655 both auto-quote and auto-paren (still /) escapes are command-line
4660 both auto-quote and auto-paren (still /) escapes are command-line
4656 parameters.
4661 parameters.
4657
4662
4658
4663
4659 2001-11-01 Fernando Perez <fperez@colorado.edu>
4664 2001-11-01 Fernando Perez <fperez@colorado.edu>
4660
4665
4661 * Version changed to 0.0.7. Fairly large change: configuration now
4666 * Version changed to 0.0.7. Fairly large change: configuration now
4662 is all stored in a directory, by default .ipython. There, all
4667 is all stored in a directory, by default .ipython. There, all
4663 config files have normal looking names (not .names)
4668 config files have normal looking names (not .names)
4664
4669
4665 * Version 0.0.6 Released first to Lucas and Archie as a test
4670 * Version 0.0.6 Released first to Lucas and Archie as a test
4666 run. Since it's the first 'semi-public' release, change version to
4671 run. Since it's the first 'semi-public' release, change version to
4667 > 0.0.6 for any changes now.
4672 > 0.0.6 for any changes now.
4668
4673
4669 * Stuff I had put in the ipplib.py changelog:
4674 * Stuff I had put in the ipplib.py changelog:
4670
4675
4671 Changes to InteractiveShell:
4676 Changes to InteractiveShell:
4672
4677
4673 - Made the usage message a parameter.
4678 - Made the usage message a parameter.
4674
4679
4675 - Require the name of the shell variable to be given. It's a bit
4680 - Require the name of the shell variable to be given. It's a bit
4676 of a hack, but allows the name 'shell' not to be hardwire in the
4681 of a hack, but allows the name 'shell' not to be hardwire in the
4677 magic (@) handler, which is problematic b/c it requires
4682 magic (@) handler, which is problematic b/c it requires
4678 polluting the global namespace with 'shell'. This in turn is
4683 polluting the global namespace with 'shell'. This in turn is
4679 fragile: if a user redefines a variable called shell, things
4684 fragile: if a user redefines a variable called shell, things
4680 break.
4685 break.
4681
4686
4682 - magic @: all functions available through @ need to be defined
4687 - magic @: all functions available through @ need to be defined
4683 as magic_<name>, even though they can be called simply as
4688 as magic_<name>, even though they can be called simply as
4684 @<name>. This allows the special command @magic to gather
4689 @<name>. This allows the special command @magic to gather
4685 information automatically about all existing magic functions,
4690 information automatically about all existing magic functions,
4686 even if they are run-time user extensions, by parsing the shell
4691 even if they are run-time user extensions, by parsing the shell
4687 instance __dict__ looking for special magic_ names.
4692 instance __dict__ looking for special magic_ names.
4688
4693
4689 - mainloop: added *two* local namespace parameters. This allows
4694 - mainloop: added *two* local namespace parameters. This allows
4690 the class to differentiate between parameters which were there
4695 the class to differentiate between parameters which were there
4691 before and after command line initialization was processed. This
4696 before and after command line initialization was processed. This
4692 way, later @who can show things loaded at startup by the
4697 way, later @who can show things loaded at startup by the
4693 user. This trick was necessary to make session saving/reloading
4698 user. This trick was necessary to make session saving/reloading
4694 really work: ideally after saving/exiting/reloading a session,
4699 really work: ideally after saving/exiting/reloading a session,
4695 *everythin* should look the same, including the output of @who. I
4700 *everythin* should look the same, including the output of @who. I
4696 was only able to make this work with this double namespace
4701 was only able to make this work with this double namespace
4697 trick.
4702 trick.
4698
4703
4699 - added a header to the logfile which allows (almost) full
4704 - added a header to the logfile which allows (almost) full
4700 session restoring.
4705 session restoring.
4701
4706
4702 - prepend lines beginning with @ or !, with a and log
4707 - prepend lines beginning with @ or !, with a and log
4703 them. Why? !lines: may be useful to know what you did @lines:
4708 them. Why? !lines: may be useful to know what you did @lines:
4704 they may affect session state. So when restoring a session, at
4709 they may affect session state. So when restoring a session, at
4705 least inform the user of their presence. I couldn't quite get
4710 least inform the user of their presence. I couldn't quite get
4706 them to properly re-execute, but at least the user is warned.
4711 them to properly re-execute, but at least the user is warned.
4707
4712
4708 * Started ChangeLog.
4713 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now