##// END OF EJS Templates
()[]{} are not protectables in filename extension anymore. Closes #233.
Ville M. Vainio -
Show More
@@ -1,1 +1,3 b''
1 link doc/ChangeLog No newline at end of file
1 This file used to be symlink in SVN, but now it serves as a *warning* so that
2 nobody creates symlinks to the bzr repository
3
@@ -1,644 +1,644 b''
1 """Word completion for IPython.
1 """Word completion for IPython.
2
2
3 This module is a fork of the rlcompleter module in the Python standard
3 This module is a fork of the rlcompleter module in the Python standard
4 library. The original enhancements made to rlcompleter have been sent
4 library. The original enhancements made to rlcompleter have been sent
5 upstream and were accepted as of Python 2.3, but we need a lot more
5 upstream and were accepted as of Python 2.3, but we need a lot more
6 functionality specific to IPython, so this module will continue to live as an
6 functionality specific to IPython, so this module will continue to live as an
7 IPython-specific utility.
7 IPython-specific utility.
8
8
9 ---------------------------------------------------------------------------
9 ---------------------------------------------------------------------------
10 Original rlcompleter documentation:
10 Original rlcompleter documentation:
11
11
12 This requires the latest extension to the readline module (the
12 This requires the latest extension to the readline module (the
13 completes keywords, built-ins and globals in __main__; when completing
13 completes keywords, built-ins and globals in __main__; when completing
14 NAME.NAME..., it evaluates (!) the expression up to the last dot and
14 NAME.NAME..., it evaluates (!) the expression up to the last dot and
15 completes its attributes.
15 completes its attributes.
16
16
17 It's very cool to do "import string" type "string.", hit the
17 It's very cool to do "import string" type "string.", hit the
18 completion key (twice), and see the list of names defined by the
18 completion key (twice), and see the list of names defined by the
19 string module!
19 string module!
20
20
21 Tip: to use the tab key as the completion key, call
21 Tip: to use the tab key as the completion key, call
22
22
23 readline.parse_and_bind("tab: complete")
23 readline.parse_and_bind("tab: complete")
24
24
25 Notes:
25 Notes:
26
26
27 - Exceptions raised by the completer function are *ignored* (and
27 - Exceptions raised by the completer function are *ignored* (and
28 generally cause the completion to fail). This is a feature -- since
28 generally cause the completion to fail). This is a feature -- since
29 readline sets the tty device in raw (or cbreak) mode, printing a
29 readline sets the tty device in raw (or cbreak) mode, printing a
30 traceback wouldn't work well without some complicated hoopla to save,
30 traceback wouldn't work well without some complicated hoopla to save,
31 reset and restore the tty state.
31 reset and restore the tty state.
32
32
33 - The evaluation of the NAME.NAME... form may cause arbitrary
33 - The evaluation of the NAME.NAME... form may cause arbitrary
34 application defined code to be executed if an object with a
34 application defined code to be executed if an object with a
35 __getattr__ hook is found. Since it is the responsibility of the
35 __getattr__ hook is found. Since it is the responsibility of the
36 application (or the user) to enable this feature, I consider this an
36 application (or the user) to enable this feature, I consider this an
37 acceptable risk. More complicated expressions (e.g. function calls or
37 acceptable risk. More complicated expressions (e.g. function calls or
38 indexing operations) are *not* evaluated.
38 indexing operations) are *not* evaluated.
39
39
40 - GNU readline is also used by the built-in functions input() and
40 - GNU readline is also used by the built-in functions input() and
41 raw_input(), and thus these also benefit/suffer from the completer
41 raw_input(), and thus these also benefit/suffer from the completer
42 features. Clearly an interactive application can benefit by
42 features. Clearly an interactive application can benefit by
43 specifying its own completer function and using raw_input() for all
43 specifying its own completer function and using raw_input() for all
44 its input.
44 its input.
45
45
46 - When the original stdin is not a tty device, GNU readline is never
46 - When the original stdin is not a tty device, GNU readline is never
47 used, and this module (and the readline module) are silently inactive.
47 used, and this module (and the readline module) are silently inactive.
48
48
49 """
49 """
50
50
51 #*****************************************************************************
51 #*****************************************************************************
52 #
52 #
53 # Since this file is essentially a minimally modified copy of the rlcompleter
53 # Since this file is essentially a minimally modified copy of the rlcompleter
54 # module which is part of the standard Python distribution, I assume that the
54 # module which is part of the standard Python distribution, I assume that the
55 # proper procedure is to maintain its copyright as belonging to the Python
55 # proper procedure is to maintain its copyright as belonging to the Python
56 # Software Foundation (in addition to my own, for all new code).
56 # Software Foundation (in addition to my own, for all new code).
57 #
57 #
58 # Copyright (C) 2001 Python Software Foundation, www.python.org
58 # Copyright (C) 2001 Python Software Foundation, www.python.org
59 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
59 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
60 #
60 #
61 # Distributed under the terms of the BSD License. The full license is in
61 # Distributed under the terms of the BSD License. The full license is in
62 # the file COPYING, distributed as part of this software.
62 # the file COPYING, distributed as part of this software.
63 #
63 #
64 #*****************************************************************************
64 #*****************************************************************************
65
65
66 import __builtin__
66 import __builtin__
67 import __main__
67 import __main__
68 import glob
68 import glob
69 import keyword
69 import keyword
70 import os
70 import os
71 import re
71 import re
72 import shlex
72 import shlex
73 import sys
73 import sys
74 import IPython.rlineimpl as readline
74 import IPython.rlineimpl as readline
75 import itertools
75 import itertools
76 from IPython.ipstruct import Struct
76 from IPython.ipstruct import Struct
77 from IPython import ipapi
77 from IPython import ipapi
78 from IPython import generics
78 from IPython import generics
79 import types
79 import types
80
80
81 # Python 2.4 offers sets as a builtin
81 # Python 2.4 offers sets as a builtin
82 try:
82 try:
83 set()
83 set()
84 except NameError:
84 except NameError:
85 from sets import Set as set
85 from sets import Set as set
86
86
87 from IPython.genutils import debugx, dir2
87 from IPython.genutils import debugx, dir2
88
88
89 __all__ = ['Completer','IPCompleter']
89 __all__ = ['Completer','IPCompleter']
90
90
91 class Completer:
91 class Completer:
92 def __init__(self,namespace=None,global_namespace=None):
92 def __init__(self,namespace=None,global_namespace=None):
93 """Create a new completer for the command line.
93 """Create a new completer for the command line.
94
94
95 Completer([namespace,global_namespace]) -> completer instance.
95 Completer([namespace,global_namespace]) -> completer instance.
96
96
97 If unspecified, the default namespace where completions are performed
97 If unspecified, the default namespace where completions are performed
98 is __main__ (technically, __main__.__dict__). Namespaces should be
98 is __main__ (technically, __main__.__dict__). Namespaces should be
99 given as dictionaries.
99 given as dictionaries.
100
100
101 An optional second namespace can be given. This allows the completer
101 An optional second namespace can be given. This allows the completer
102 to handle cases where both the local and global scopes need to be
102 to handle cases where both the local and global scopes need to be
103 distinguished.
103 distinguished.
104
104
105 Completer instances should be used as the completion mechanism of
105 Completer instances should be used as the completion mechanism of
106 readline via the set_completer() call:
106 readline via the set_completer() call:
107
107
108 readline.set_completer(Completer(my_namespace).complete)
108 readline.set_completer(Completer(my_namespace).complete)
109 """
109 """
110
110
111 # some minimal strict typechecks. For some core data structures, I
111 # some minimal strict typechecks. For some core data structures, I
112 # want actual basic python types, not just anything that looks like
112 # want actual basic python types, not just anything that looks like
113 # one. This is especially true for namespaces.
113 # one. This is especially true for namespaces.
114 for ns in (namespace,global_namespace):
114 for ns in (namespace,global_namespace):
115 if ns is not None and type(ns) != types.DictType:
115 if ns is not None and type(ns) != types.DictType:
116 raise TypeError,'namespace must be a dictionary'
116 raise TypeError,'namespace must be a dictionary'
117
117
118 # Don't bind to namespace quite yet, but flag whether the user wants a
118 # Don't bind to namespace quite yet, but flag whether the user wants a
119 # specific namespace or to use __main__.__dict__. This will allow us
119 # specific namespace or to use __main__.__dict__. This will allow us
120 # to bind to __main__.__dict__ at completion time, not now.
120 # to bind to __main__.__dict__ at completion time, not now.
121 if namespace is None:
121 if namespace is None:
122 self.use_main_ns = 1
122 self.use_main_ns = 1
123 else:
123 else:
124 self.use_main_ns = 0
124 self.use_main_ns = 0
125 self.namespace = namespace
125 self.namespace = namespace
126
126
127 # The global namespace, if given, can be bound directly
127 # The global namespace, if given, can be bound directly
128 if global_namespace is None:
128 if global_namespace is None:
129 self.global_namespace = {}
129 self.global_namespace = {}
130 else:
130 else:
131 self.global_namespace = global_namespace
131 self.global_namespace = global_namespace
132
132
133 def complete(self, text, state):
133 def complete(self, text, state):
134 """Return the next possible completion for 'text'.
134 """Return the next possible completion for 'text'.
135
135
136 This is called successively with state == 0, 1, 2, ... until it
136 This is called successively with state == 0, 1, 2, ... until it
137 returns None. The completion should begin with 'text'.
137 returns None. The completion should begin with 'text'.
138
138
139 """
139 """
140 if self.use_main_ns:
140 if self.use_main_ns:
141 self.namespace = __main__.__dict__
141 self.namespace = __main__.__dict__
142
142
143 if state == 0:
143 if state == 0:
144 if "." in text:
144 if "." in text:
145 self.matches = self.attr_matches(text)
145 self.matches = self.attr_matches(text)
146 else:
146 else:
147 self.matches = self.global_matches(text)
147 self.matches = self.global_matches(text)
148 try:
148 try:
149 return self.matches[state]
149 return self.matches[state]
150 except IndexError:
150 except IndexError:
151 return None
151 return None
152
152
153 def global_matches(self, text):
153 def global_matches(self, text):
154 """Compute matches when text is a simple name.
154 """Compute matches when text is a simple name.
155
155
156 Return a list of all keywords, built-in functions and names currently
156 Return a list of all keywords, built-in functions and names currently
157 defined in self.namespace or self.global_namespace that match.
157 defined in self.namespace or self.global_namespace that match.
158
158
159 """
159 """
160 matches = []
160 matches = []
161 match_append = matches.append
161 match_append = matches.append
162 n = len(text)
162 n = len(text)
163 for lst in [keyword.kwlist,
163 for lst in [keyword.kwlist,
164 __builtin__.__dict__.keys(),
164 __builtin__.__dict__.keys(),
165 self.namespace.keys(),
165 self.namespace.keys(),
166 self.global_namespace.keys()]:
166 self.global_namespace.keys()]:
167 for word in lst:
167 for word in lst:
168 if word[:n] == text and word != "__builtins__":
168 if word[:n] == text and word != "__builtins__":
169 match_append(word)
169 match_append(word)
170 return matches
170 return matches
171
171
172 def attr_matches(self, text):
172 def attr_matches(self, text):
173 """Compute matches when text contains a dot.
173 """Compute matches when text contains a dot.
174
174
175 Assuming the text is of the form NAME.NAME....[NAME], and is
175 Assuming the text is of the form NAME.NAME....[NAME], and is
176 evaluatable in self.namespace or self.global_namespace, it will be
176 evaluatable in self.namespace or self.global_namespace, it will be
177 evaluated and its attributes (as revealed by dir()) are used as
177 evaluated and its attributes (as revealed by dir()) are used as
178 possible completions. (For class instances, class members are are
178 possible completions. (For class instances, class members are are
179 also considered.)
179 also considered.)
180
180
181 WARNING: this can still invoke arbitrary C code, if an object
181 WARNING: this can still invoke arbitrary C code, if an object
182 with a __getattr__ hook is evaluated.
182 with a __getattr__ hook is evaluated.
183
183
184 """
184 """
185 import re
185 import re
186
186
187 # Another option, seems to work great. Catches things like ''.<tab>
187 # Another option, seems to work great. Catches things like ''.<tab>
188 m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)
188 m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)
189
189
190 if not m:
190 if not m:
191 return []
191 return []
192
192
193 expr, attr = m.group(1, 3)
193 expr, attr = m.group(1, 3)
194 try:
194 try:
195 obj = eval(expr, self.namespace)
195 obj = eval(expr, self.namespace)
196 except:
196 except:
197 try:
197 try:
198 obj = eval(expr, self.global_namespace)
198 obj = eval(expr, self.global_namespace)
199 except:
199 except:
200 return []
200 return []
201
201
202 words = dir2(obj)
202 words = dir2(obj)
203
203
204 try:
204 try:
205 words = generics.complete_object(obj, words)
205 words = generics.complete_object(obj, words)
206 except ipapi.TryNext:
206 except ipapi.TryNext:
207 pass
207 pass
208 # Build match list to return
208 # Build match list to return
209 n = len(attr)
209 n = len(attr)
210 res = ["%s.%s" % (expr, w) for w in words if w[:n] == attr ]
210 res = ["%s.%s" % (expr, w) for w in words if w[:n] == attr ]
211 return res
211 return res
212
212
213 class IPCompleter(Completer):
213 class IPCompleter(Completer):
214 """Extension of the completer class with IPython-specific features"""
214 """Extension of the completer class with IPython-specific features"""
215
215
216 def __init__(self,shell,namespace=None,global_namespace=None,
216 def __init__(self,shell,namespace=None,global_namespace=None,
217 omit__names=0,alias_table=None):
217 omit__names=0,alias_table=None):
218 """IPCompleter() -> completer
218 """IPCompleter() -> completer
219
219
220 Return a completer object suitable for use by the readline library
220 Return a completer object suitable for use by the readline library
221 via readline.set_completer().
221 via readline.set_completer().
222
222
223 Inputs:
223 Inputs:
224
224
225 - shell: a pointer to the ipython shell itself. This is needed
225 - shell: a pointer to the ipython shell itself. This is needed
226 because this completer knows about magic functions, and those can
226 because this completer knows about magic functions, and those can
227 only be accessed via the ipython instance.
227 only be accessed via the ipython instance.
228
228
229 - namespace: an optional dict where completions are performed.
229 - namespace: an optional dict where completions are performed.
230
230
231 - global_namespace: secondary optional dict for completions, to
231 - global_namespace: secondary optional dict for completions, to
232 handle cases (such as IPython embedded inside functions) where
232 handle cases (such as IPython embedded inside functions) where
233 both Python scopes are visible.
233 both Python scopes are visible.
234
234
235 - The optional omit__names parameter sets the completer to omit the
235 - The optional omit__names parameter sets the completer to omit the
236 'magic' names (__magicname__) for python objects unless the text
236 'magic' names (__magicname__) for python objects unless the text
237 to be completed explicitly starts with one or more underscores.
237 to be completed explicitly starts with one or more underscores.
238
238
239 - If alias_table is supplied, it should be a dictionary of aliases
239 - If alias_table is supplied, it should be a dictionary of aliases
240 to complete. """
240 to complete. """
241
241
242 Completer.__init__(self,namespace,global_namespace)
242 Completer.__init__(self,namespace,global_namespace)
243 self.magic_prefix = shell.name+'.magic_'
243 self.magic_prefix = shell.name+'.magic_'
244 self.magic_escape = shell.ESC_MAGIC
244 self.magic_escape = shell.ESC_MAGIC
245 self.readline = readline
245 self.readline = readline
246 delims = self.readline.get_completer_delims()
246 delims = self.readline.get_completer_delims()
247 delims = delims.replace(self.magic_escape,'')
247 delims = delims.replace(self.magic_escape,'')
248 self.readline.set_completer_delims(delims)
248 self.readline.set_completer_delims(delims)
249 self.get_line_buffer = self.readline.get_line_buffer
249 self.get_line_buffer = self.readline.get_line_buffer
250 self.get_endidx = self.readline.get_endidx
250 self.get_endidx = self.readline.get_endidx
251 self.omit__names = omit__names
251 self.omit__names = omit__names
252 self.merge_completions = shell.rc.readline_merge_completions
252 self.merge_completions = shell.rc.readline_merge_completions
253 if alias_table is None:
253 if alias_table is None:
254 alias_table = {}
254 alias_table = {}
255 self.alias_table = alias_table
255 self.alias_table = alias_table
256 # Regexp to split filenames with spaces in them
256 # Regexp to split filenames with spaces in them
257 self.space_name_re = re.compile(r'([^\\] )')
257 self.space_name_re = re.compile(r'([^\\] )')
258 # Hold a local ref. to glob.glob for speed
258 # Hold a local ref. to glob.glob for speed
259 self.glob = glob.glob
259 self.glob = glob.glob
260
260
261 # Determine if we are running on 'dumb' terminals, like (X)Emacs
261 # Determine if we are running on 'dumb' terminals, like (X)Emacs
262 # buffers, to avoid completion problems.
262 # buffers, to avoid completion problems.
263 term = os.environ.get('TERM','xterm')
263 term = os.environ.get('TERM','xterm')
264 self.dumb_terminal = term in ['dumb','emacs']
264 self.dumb_terminal = term in ['dumb','emacs']
265
265
266 # Special handling of backslashes needed in win32 platforms
266 # Special handling of backslashes needed in win32 platforms
267 if sys.platform == "win32":
267 if sys.platform == "win32":
268 self.clean_glob = self._clean_glob_win32
268 self.clean_glob = self._clean_glob_win32
269 else:
269 else:
270 self.clean_glob = self._clean_glob
270 self.clean_glob = self._clean_glob
271 self.matchers = [self.python_matches,
271 self.matchers = [self.python_matches,
272 self.file_matches,
272 self.file_matches,
273 self.alias_matches,
273 self.alias_matches,
274 self.python_func_kw_matches]
274 self.python_func_kw_matches]
275
275
276
276
277 # Code contributed by Alex Schmolck, for ipython/emacs integration
277 # Code contributed by Alex Schmolck, for ipython/emacs integration
278 def all_completions(self, text):
278 def all_completions(self, text):
279 """Return all possible completions for the benefit of emacs."""
279 """Return all possible completions for the benefit of emacs."""
280
280
281 completions = []
281 completions = []
282 comp_append = completions.append
282 comp_append = completions.append
283 try:
283 try:
284 for i in xrange(sys.maxint):
284 for i in xrange(sys.maxint):
285 res = self.complete(text, i)
285 res = self.complete(text, i)
286
286
287 if not res: break
287 if not res: break
288
288
289 comp_append(res)
289 comp_append(res)
290 #XXX workaround for ``notDefined.<tab>``
290 #XXX workaround for ``notDefined.<tab>``
291 except NameError:
291 except NameError:
292 pass
292 pass
293 return completions
293 return completions
294 # /end Alex Schmolck code.
294 # /end Alex Schmolck code.
295
295
296 def _clean_glob(self,text):
296 def _clean_glob(self,text):
297 return self.glob("%s*" % text)
297 return self.glob("%s*" % text)
298
298
299 def _clean_glob_win32(self,text):
299 def _clean_glob_win32(self,text):
300 return [f.replace("\\","/")
300 return [f.replace("\\","/")
301 for f in self.glob("%s*" % text)]
301 for f in self.glob("%s*" % text)]
302
302
303 def file_matches(self, text):
303 def file_matches(self, text):
304 """Match filenames, expanding ~USER type strings.
304 """Match filenames, expanding ~USER type strings.
305
305
306 Most of the seemingly convoluted logic in this completer is an
306 Most of the seemingly convoluted logic in this completer is an
307 attempt to handle filenames with spaces in them. And yet it's not
307 attempt to handle filenames with spaces in them. And yet it's not
308 quite perfect, because Python's readline doesn't expose all of the
308 quite perfect, because Python's readline doesn't expose all of the
309 GNU readline details needed for this to be done correctly.
309 GNU readline details needed for this to be done correctly.
310
310
311 For a filename with a space in it, the printed completions will be
311 For a filename with a space in it, the printed completions will be
312 only the parts after what's already been typed (instead of the
312 only the parts after what's already been typed (instead of the
313 full completions, as is normally done). I don't think with the
313 full completions, as is normally done). I don't think with the
314 current (as of Python 2.3) Python readline it's possible to do
314 current (as of Python 2.3) Python readline it's possible to do
315 better."""
315 better."""
316
316
317 #print 'Completer->file_matches: <%s>' % text # dbg
317 #print 'Completer->file_matches: <%s>' % text # dbg
318
318
319 # chars that require escaping with backslash - i.e. chars
319 # chars that require escaping with backslash - i.e. chars
320 # that readline treats incorrectly as delimiters, but we
320 # that readline treats incorrectly as delimiters, but we
321 # don't want to treat as delimiters in filename matching
321 # don't want to treat as delimiters in filename matching
322 # when escaped with backslash
322 # when escaped with backslash
323
323
324 protectables = ' ()[]{}'
324 protectables = ' '
325
325
326 if text.startswith('!'):
326 if text.startswith('!'):
327 text = text[1:]
327 text = text[1:]
328 text_prefix = '!'
328 text_prefix = '!'
329 else:
329 else:
330 text_prefix = ''
330 text_prefix = ''
331
331
332 def protect_filename(s):
332 def protect_filename(s):
333 return "".join([(ch in protectables and '\\' + ch or ch)
333 return "".join([(ch in protectables and '\\' + ch or ch)
334 for ch in s])
334 for ch in s])
335
335
336 def single_dir_expand(matches):
336 def single_dir_expand(matches):
337 "Recursively expand match lists containing a single dir."
337 "Recursively expand match lists containing a single dir."
338
338
339 if len(matches) == 1 and os.path.isdir(matches[0]):
339 if len(matches) == 1 and os.path.isdir(matches[0]):
340 # Takes care of links to directories also. Use '/'
340 # Takes care of links to directories also. Use '/'
341 # explicitly, even under Windows, so that name completions
341 # explicitly, even under Windows, so that name completions
342 # don't end up escaped.
342 # don't end up escaped.
343 d = matches[0]
343 d = matches[0]
344 if d[-1] in ['/','\\']:
344 if d[-1] in ['/','\\']:
345 d = d[:-1]
345 d = d[:-1]
346
346
347 subdirs = os.listdir(d)
347 subdirs = os.listdir(d)
348 if subdirs:
348 if subdirs:
349 matches = [ (d + '/' + p) for p in subdirs]
349 matches = [ (d + '/' + p) for p in subdirs]
350 return single_dir_expand(matches)
350 return single_dir_expand(matches)
351 else:
351 else:
352 return matches
352 return matches
353 else:
353 else:
354 return matches
354 return matches
355
355
356 lbuf = self.lbuf
356 lbuf = self.lbuf
357 open_quotes = 0 # track strings with open quotes
357 open_quotes = 0 # track strings with open quotes
358 try:
358 try:
359 lsplit = shlex.split(lbuf)[-1]
359 lsplit = shlex.split(lbuf)[-1]
360 except ValueError:
360 except ValueError:
361 # typically an unmatched ", or backslash without escaped char.
361 # typically an unmatched ", or backslash without escaped char.
362 if lbuf.count('"')==1:
362 if lbuf.count('"')==1:
363 open_quotes = 1
363 open_quotes = 1
364 lsplit = lbuf.split('"')[-1]
364 lsplit = lbuf.split('"')[-1]
365 elif lbuf.count("'")==1:
365 elif lbuf.count("'")==1:
366 open_quotes = 1
366 open_quotes = 1
367 lsplit = lbuf.split("'")[-1]
367 lsplit = lbuf.split("'")[-1]
368 else:
368 else:
369 return []
369 return []
370 except IndexError:
370 except IndexError:
371 # tab pressed on empty line
371 # tab pressed on empty line
372 lsplit = ""
372 lsplit = ""
373
373
374 if lsplit != protect_filename(lsplit):
374 if lsplit != protect_filename(lsplit):
375 # if protectables are found, do matching on the whole escaped
375 # if protectables are found, do matching on the whole escaped
376 # name
376 # name
377 has_protectables = 1
377 has_protectables = 1
378 text0,text = text,lsplit
378 text0,text = text,lsplit
379 else:
379 else:
380 has_protectables = 0
380 has_protectables = 0
381 text = os.path.expanduser(text)
381 text = os.path.expanduser(text)
382
382
383 if text == "":
383 if text == "":
384 return [text_prefix + protect_filename(f) for f in self.glob("*")]
384 return [text_prefix + protect_filename(f) for f in self.glob("*")]
385
385
386 m0 = self.clean_glob(text.replace('\\',''))
386 m0 = self.clean_glob(text.replace('\\',''))
387 if has_protectables:
387 if has_protectables:
388 # If we had protectables, we need to revert our changes to the
388 # If we had protectables, we need to revert our changes to the
389 # beginning of filename so that we don't double-write the part
389 # beginning of filename so that we don't double-write the part
390 # of the filename we have so far
390 # of the filename we have so far
391 len_lsplit = len(lsplit)
391 len_lsplit = len(lsplit)
392 matches = [text_prefix + text0 +
392 matches = [text_prefix + text0 +
393 protect_filename(f[len_lsplit:]) for f in m0]
393 protect_filename(f[len_lsplit:]) for f in m0]
394 else:
394 else:
395 if open_quotes:
395 if open_quotes:
396 # if we have a string with an open quote, we don't need to
396 # if we have a string with an open quote, we don't need to
397 # protect the names at all (and we _shouldn't_, as it
397 # protect the names at all (and we _shouldn't_, as it
398 # would cause bugs when the filesystem call is made).
398 # would cause bugs when the filesystem call is made).
399 matches = m0
399 matches = m0
400 else:
400 else:
401 matches = [text_prefix +
401 matches = [text_prefix +
402 protect_filename(f) for f in m0]
402 protect_filename(f) for f in m0]
403
403
404 #print 'mm',matches # dbg
404 #print 'mm',matches # dbg
405 return single_dir_expand(matches)
405 return single_dir_expand(matches)
406
406
407 def alias_matches(self, text):
407 def alias_matches(self, text):
408 """Match internal system aliases"""
408 """Match internal system aliases"""
409 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
409 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
410
410
411 # if we are not in the first 'item', alias matching
411 # if we are not in the first 'item', alias matching
412 # doesn't make sense - unless we are starting with 'sudo' command.
412 # doesn't make sense - unless we are starting with 'sudo' command.
413 if ' ' in self.lbuf.lstrip() and not self.lbuf.lstrip().startswith('sudo'):
413 if ' ' in self.lbuf.lstrip() and not self.lbuf.lstrip().startswith('sudo'):
414 return []
414 return []
415 text = os.path.expanduser(text)
415 text = os.path.expanduser(text)
416 aliases = self.alias_table.keys()
416 aliases = self.alias_table.keys()
417 if text == "":
417 if text == "":
418 return aliases
418 return aliases
419 else:
419 else:
420 return [alias for alias in aliases if alias.startswith(text)]
420 return [alias for alias in aliases if alias.startswith(text)]
421
421
422 def python_matches(self,text):
422 def python_matches(self,text):
423 """Match attributes or global python names"""
423 """Match attributes or global python names"""
424
424
425 #print 'Completer->python_matches, txt=<%s>' % text # dbg
425 #print 'Completer->python_matches, txt=<%s>' % text # dbg
426 if "." in text:
426 if "." in text:
427 try:
427 try:
428 matches = self.attr_matches(text)
428 matches = self.attr_matches(text)
429 if text.endswith('.') and self.omit__names:
429 if text.endswith('.') and self.omit__names:
430 if self.omit__names == 1:
430 if self.omit__names == 1:
431 # true if txt is _not_ a __ name, false otherwise:
431 # true if txt is _not_ a __ name, false otherwise:
432 no__name = (lambda txt:
432 no__name = (lambda txt:
433 re.match(r'.*\.__.*?__',txt) is None)
433 re.match(r'.*\.__.*?__',txt) is None)
434 else:
434 else:
435 # true if txt is _not_ a _ name, false otherwise:
435 # true if txt is _not_ a _ name, false otherwise:
436 no__name = (lambda txt:
436 no__name = (lambda txt:
437 re.match(r'.*\._.*?',txt) is None)
437 re.match(r'.*\._.*?',txt) is None)
438 matches = filter(no__name, matches)
438 matches = filter(no__name, matches)
439 except NameError:
439 except NameError:
440 # catches <undefined attributes>.<tab>
440 # catches <undefined attributes>.<tab>
441 matches = []
441 matches = []
442 else:
442 else:
443 matches = self.global_matches(text)
443 matches = self.global_matches(text)
444 # this is so completion finds magics when automagic is on:
444 # this is so completion finds magics when automagic is on:
445 if (matches == [] and
445 if (matches == [] and
446 not text.startswith(os.sep) and
446 not text.startswith(os.sep) and
447 not ' ' in self.lbuf):
447 not ' ' in self.lbuf):
448 matches = self.attr_matches(self.magic_prefix+text)
448 matches = self.attr_matches(self.magic_prefix+text)
449 return matches
449 return matches
450
450
451 def _default_arguments(self, obj):
451 def _default_arguments(self, obj):
452 """Return the list of default arguments of obj if it is callable,
452 """Return the list of default arguments of obj if it is callable,
453 or empty list otherwise."""
453 or empty list otherwise."""
454
454
455 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
455 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
456 # for classes, check for __init__,__new__
456 # for classes, check for __init__,__new__
457 if inspect.isclass(obj):
457 if inspect.isclass(obj):
458 obj = (getattr(obj,'__init__',None) or
458 obj = (getattr(obj,'__init__',None) or
459 getattr(obj,'__new__',None))
459 getattr(obj,'__new__',None))
460 # for all others, check if they are __call__able
460 # for all others, check if they are __call__able
461 elif hasattr(obj, '__call__'):
461 elif hasattr(obj, '__call__'):
462 obj = obj.__call__
462 obj = obj.__call__
463 # XXX: is there a way to handle the builtins ?
463 # XXX: is there a way to handle the builtins ?
464 try:
464 try:
465 args,_,_1,defaults = inspect.getargspec(obj)
465 args,_,_1,defaults = inspect.getargspec(obj)
466 if defaults:
466 if defaults:
467 return args[-len(defaults):]
467 return args[-len(defaults):]
468 except TypeError: pass
468 except TypeError: pass
469 return []
469 return []
470
470
471 def python_func_kw_matches(self,text):
471 def python_func_kw_matches(self,text):
472 """Match named parameters (kwargs) of the last open function"""
472 """Match named parameters (kwargs) of the last open function"""
473
473
474 if "." in text: # a parameter cannot be dotted
474 if "." in text: # a parameter cannot be dotted
475 return []
475 return []
476 try: regexp = self.__funcParamsRegex
476 try: regexp = self.__funcParamsRegex
477 except AttributeError:
477 except AttributeError:
478 regexp = self.__funcParamsRegex = re.compile(r'''
478 regexp = self.__funcParamsRegex = re.compile(r'''
479 '.*?' | # single quoted strings or
479 '.*?' | # single quoted strings or
480 ".*?" | # double quoted strings or
480 ".*?" | # double quoted strings or
481 \w+ | # identifier
481 \w+ | # identifier
482 \S # other characters
482 \S # other characters
483 ''', re.VERBOSE | re.DOTALL)
483 ''', re.VERBOSE | re.DOTALL)
484 # 1. find the nearest identifier that comes before an unclosed
484 # 1. find the nearest identifier that comes before an unclosed
485 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
485 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
486 tokens = regexp.findall(self.get_line_buffer())
486 tokens = regexp.findall(self.get_line_buffer())
487 tokens.reverse()
487 tokens.reverse()
488 iterTokens = iter(tokens); openPar = 0
488 iterTokens = iter(tokens); openPar = 0
489 for token in iterTokens:
489 for token in iterTokens:
490 if token == ')':
490 if token == ')':
491 openPar -= 1
491 openPar -= 1
492 elif token == '(':
492 elif token == '(':
493 openPar += 1
493 openPar += 1
494 if openPar > 0:
494 if openPar > 0:
495 # found the last unclosed parenthesis
495 # found the last unclosed parenthesis
496 break
496 break
497 else:
497 else:
498 return []
498 return []
499 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
499 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
500 ids = []
500 ids = []
501 isId = re.compile(r'\w+$').match
501 isId = re.compile(r'\w+$').match
502 while True:
502 while True:
503 try:
503 try:
504 ids.append(iterTokens.next())
504 ids.append(iterTokens.next())
505 if not isId(ids[-1]):
505 if not isId(ids[-1]):
506 ids.pop(); break
506 ids.pop(); break
507 if not iterTokens.next() == '.':
507 if not iterTokens.next() == '.':
508 break
508 break
509 except StopIteration:
509 except StopIteration:
510 break
510 break
511 # lookup the candidate callable matches either using global_matches
511 # lookup the candidate callable matches either using global_matches
512 # or attr_matches for dotted names
512 # or attr_matches for dotted names
513 if len(ids) == 1:
513 if len(ids) == 1:
514 callableMatches = self.global_matches(ids[0])
514 callableMatches = self.global_matches(ids[0])
515 else:
515 else:
516 callableMatches = self.attr_matches('.'.join(ids[::-1]))
516 callableMatches = self.attr_matches('.'.join(ids[::-1]))
517 argMatches = []
517 argMatches = []
518 for callableMatch in callableMatches:
518 for callableMatch in callableMatches:
519 try: namedArgs = self._default_arguments(eval(callableMatch,
519 try: namedArgs = self._default_arguments(eval(callableMatch,
520 self.namespace))
520 self.namespace))
521 except: continue
521 except: continue
522 for namedArg in namedArgs:
522 for namedArg in namedArgs:
523 if namedArg.startswith(text):
523 if namedArg.startswith(text):
524 argMatches.append("%s=" %namedArg)
524 argMatches.append("%s=" %namedArg)
525 return argMatches
525 return argMatches
526
526
527 def dispatch_custom_completer(self,text):
527 def dispatch_custom_completer(self,text):
528 #print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
528 #print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
529 line = self.full_lbuf
529 line = self.full_lbuf
530 if not line.strip():
530 if not line.strip():
531 return None
531 return None
532
532
533 event = Struct()
533 event = Struct()
534 event.line = line
534 event.line = line
535 event.symbol = text
535 event.symbol = text
536 cmd = line.split(None,1)[0]
536 cmd = line.split(None,1)[0]
537 event.command = cmd
537 event.command = cmd
538 #print "\ncustom:{%s]\n" % event # dbg
538 #print "\ncustom:{%s]\n" % event # dbg
539
539
540 # for foo etc, try also to find completer for %foo
540 # for foo etc, try also to find completer for %foo
541 if not cmd.startswith(self.magic_escape):
541 if not cmd.startswith(self.magic_escape):
542 try_magic = self.custom_completers.s_matches(
542 try_magic = self.custom_completers.s_matches(
543 self.magic_escape + cmd)
543 self.magic_escape + cmd)
544 else:
544 else:
545 try_magic = []
545 try_magic = []
546
546
547
547
548 for c in itertools.chain(
548 for c in itertools.chain(
549 self.custom_completers.s_matches(cmd),
549 self.custom_completers.s_matches(cmd),
550 try_magic,
550 try_magic,
551 self.custom_completers.flat_matches(self.lbuf)):
551 self.custom_completers.flat_matches(self.lbuf)):
552 #print "try",c # dbg
552 #print "try",c # dbg
553 try:
553 try:
554 res = c(event)
554 res = c(event)
555 # first, try case sensitive match
555 # first, try case sensitive match
556 withcase = [r for r in res if r.startswith(text)]
556 withcase = [r for r in res if r.startswith(text)]
557 if withcase:
557 if withcase:
558 return withcase
558 return withcase
559 # if none, then case insensitive ones are ok too
559 # if none, then case insensitive ones are ok too
560 return [r for r in res if r.lower().startswith(text.lower())]
560 return [r for r in res if r.lower().startswith(text.lower())]
561 except ipapi.TryNext:
561 except ipapi.TryNext:
562 pass
562 pass
563
563
564 return None
564 return None
565
565
566 def complete(self, text, state,line_buffer=None):
566 def complete(self, text, state,line_buffer=None):
567 """Return the next possible completion for 'text'.
567 """Return the next possible completion for 'text'.
568
568
569 This is called successively with state == 0, 1, 2, ... until it
569 This is called successively with state == 0, 1, 2, ... until it
570 returns None. The completion should begin with 'text'.
570 returns None. The completion should begin with 'text'.
571
571
572 :Keywords:
572 :Keywords:
573 - line_buffer: string
573 - line_buffer: string
574 If not given, the completer attempts to obtain the current line buffer
574 If not given, the completer attempts to obtain the current line buffer
575 via readline. This keyword allows clients which are requesting for
575 via readline. This keyword allows clients which are requesting for
576 text completions in non-readline contexts to inform the completer of
576 text completions in non-readline contexts to inform the completer of
577 the entire text.
577 the entire text.
578 """
578 """
579
579
580 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
580 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
581
581
582 # if there is only a tab on a line with only whitespace, instead
582 # if there is only a tab on a line with only whitespace, instead
583 # of the mostly useless 'do you want to see all million
583 # of the mostly useless 'do you want to see all million
584 # completions' message, just do the right thing and give the user
584 # completions' message, just do the right thing and give the user
585 # his tab! Incidentally, this enables pasting of tabbed text from
585 # his tab! Incidentally, this enables pasting of tabbed text from
586 # an editor (as long as autoindent is off).
586 # an editor (as long as autoindent is off).
587
587
588 # It should be noted that at least pyreadline still shows
588 # It should be noted that at least pyreadline still shows
589 # file completions - is there a way around it?
589 # file completions - is there a way around it?
590
590
591 # don't apply this on 'dumb' terminals, such as emacs buffers, so we
591 # don't apply this on 'dumb' terminals, such as emacs buffers, so we
592 # don't interfere with their own tab-completion mechanism.
592 # don't interfere with their own tab-completion mechanism.
593 if line_buffer is None:
593 if line_buffer is None:
594 self.full_lbuf = self.get_line_buffer()
594 self.full_lbuf = self.get_line_buffer()
595 else:
595 else:
596 self.full_lbuf = line_buffer
596 self.full_lbuf = line_buffer
597
597
598 if not (self.dumb_terminal or self.full_lbuf.strip()):
598 if not (self.dumb_terminal or self.full_lbuf.strip()):
599 self.readline.insert_text('\t')
599 self.readline.insert_text('\t')
600 return None
600 return None
601
601
602 magic_escape = self.magic_escape
602 magic_escape = self.magic_escape
603 magic_prefix = self.magic_prefix
603 magic_prefix = self.magic_prefix
604
604
605 self.lbuf = self.full_lbuf[:self.get_endidx()]
605 self.lbuf = self.full_lbuf[:self.get_endidx()]
606
606
607 try:
607 try:
608 if text.startswith(magic_escape):
608 if text.startswith(magic_escape):
609 text = text.replace(magic_escape,magic_prefix)
609 text = text.replace(magic_escape,magic_prefix)
610 elif text.startswith('~'):
610 elif text.startswith('~'):
611 text = os.path.expanduser(text)
611 text = os.path.expanduser(text)
612 if state == 0:
612 if state == 0:
613 custom_res = self.dispatch_custom_completer(text)
613 custom_res = self.dispatch_custom_completer(text)
614 if custom_res is not None:
614 if custom_res is not None:
615 # did custom completers produce something?
615 # did custom completers produce something?
616 self.matches = custom_res
616 self.matches = custom_res
617 else:
617 else:
618 # Extend the list of completions with the results of each
618 # Extend the list of completions with the results of each
619 # matcher, so we return results to the user from all
619 # matcher, so we return results to the user from all
620 # namespaces.
620 # namespaces.
621 if self.merge_completions:
621 if self.merge_completions:
622 self.matches = []
622 self.matches = []
623 for matcher in self.matchers:
623 for matcher in self.matchers:
624 self.matches.extend(matcher(text))
624 self.matches.extend(matcher(text))
625 else:
625 else:
626 for matcher in self.matchers:
626 for matcher in self.matchers:
627 self.matches = matcher(text)
627 self.matches = matcher(text)
628 if self.matches:
628 if self.matches:
629 break
629 break
630 def uniq(alist):
630 def uniq(alist):
631 set = {}
631 set = {}
632 return [set.setdefault(e,e) for e in alist if e not in set]
632 return [set.setdefault(e,e) for e in alist if e not in set]
633 self.matches = uniq(self.matches)
633 self.matches = uniq(self.matches)
634 try:
634 try:
635 ret = self.matches[state].replace(magic_prefix,magic_escape)
635 ret = self.matches[state].replace(magic_prefix,magic_escape)
636 return ret
636 return ret
637 except IndexError:
637 except IndexError:
638 return None
638 return None
639 except:
639 except:
640 #from IPython.ultraTB import AutoFormattedTB; # dbg
640 #from IPython.ultraTB import AutoFormattedTB; # dbg
641 #tb=AutoFormattedTB('Verbose');tb() #dbg
641 #tb=AutoFormattedTB('Verbose');tb() #dbg
642
642
643 # If completion fails, don't annoy the user.
643 # If completion fails, don't annoy the user.
644 return None
644 return None
@@ -1,7433 +1,7452 b''
1 2008-02-20 Ville Vainio <vivainio@gmail.com>
2
3 * completer.py: do not treat [](){} as protectable chars anymore
4
5 2008-02-17 Ville Vainio <vivainio@gmail.com>
6
7 * Switched over to Launchpad/bzr as primary VCS.
8
9 2008-02-14 Ville Vainio <vivainio@gmail.com>
10
11 * ipapi.py: _ip.runlines() is now much more liberal about
12 indentation - it cleans up the scripts it gets
13
14 2008-02-14 Ville Vainio <vivainio@gmail.com>
15
16 * Extensions/ipy_leo.py: created 'ILeo' IPython-Leo bridge.
17 Changes to it (later on) are too numerous to list in ChangeLog
18 until it stabilizes
19
1 2008-02-07 Darren Dale <darren.dale@cornell.edu>
20 2008-02-07 Darren Dale <darren.dale@cornell.edu>
2
21
3 * IPython/Shell.py: Call QtCore.pyqtRemoveInputHook() when creating
22 * IPython/Shell.py: Call QtCore.pyqtRemoveInputHook() when creating
4 an IPShellQt4. PyQt4-4.2.1 and later uses PyOS_InputHook to improve
23 an IPShellQt4. PyQt4-4.2.1 and later uses PyOS_InputHook to improve
5 interaction in the interpreter (like Tkinter does), but it seems to
24 interaction in the interpreter (like Tkinter does), but it seems to
6 partially interfere with the IPython implementation and exec_()
25 partially interfere with the IPython implementation and exec_()
7 still seems to block. So we disable the PyQt implementation and
26 still seems to block. So we disable the PyQt implementation and
8 stick with the IPython one for now.
27 stick with the IPython one for now.
9
28
10 2008-02-02 Walter Doerwald <walter@livinglogic.de>
29 2008-02-02 Walter Doerwald <walter@livinglogic.de>
11
30
12 * ipipe.py: A new ipipe table has been added: ialias produces all
31 * ipipe.py: A new ipipe table has been added: ialias produces all
13 entries from IPython's alias table.
32 entries from IPython's alias table.
14
33
15 2008-02-01 Fernando Perez <Fernando.Perez@colorado.edu>
34 2008-02-01 Fernando Perez <Fernando.Perez@colorado.edu>
16
35
17 * IPython/Shell.py (MTInteractiveShell.runcode): Improve handling
36 * IPython/Shell.py (MTInteractiveShell.runcode): Improve handling
18 of KBINT in threaded shells. After code provided by Marc in #212.
37 of KBINT in threaded shells. After code provided by Marc in #212.
19
38
20 2008-01-30 Fernando Perez <Fernando.Perez@colorado.edu>
39 2008-01-30 Fernando Perez <Fernando.Perez@colorado.edu>
21
40
22 * IPython/Shell.py (MTInteractiveShell.__init__): Fixed deadlock
41 * IPython/Shell.py (MTInteractiveShell.__init__): Fixed deadlock
23 that could occur due to a race condition in threaded shells.
42 that could occur due to a race condition in threaded shells.
24 Thanks to code provided by Marc, as #210.
43 Thanks to code provided by Marc, as #210.
25
44
26 2008-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
45 2008-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
27
46
28 * IPython/Magic.py (magic_doctest_mode): respect the user's
47 * IPython/Magic.py (magic_doctest_mode): respect the user's
29 settings for input separators rather than overriding them. After
48 settings for input separators rather than overriding them. After
30 a report by Jeff Kowalczyk <jtk-AT-yahoo.com>
49 a report by Jeff Kowalczyk <jtk-AT-yahoo.com>
31
50
32 * IPython/history.py (magic_history): Add support for declaring an
51 * IPython/history.py (magic_history): Add support for declaring an
33 output file directly from the history command.
52 output file directly from the history command.
34
53
35 2008-01-21 Walter Doerwald <walter@livinglogic.de>
54 2008-01-21 Walter Doerwald <walter@livinglogic.de>
36
55
37 * ipipe.py: Register ipipe's displayhooks via the generic function
56 * ipipe.py: Register ipipe's displayhooks via the generic function
38 generics.result_display() instead of using ipapi.set_hook().
57 generics.result_display() instead of using ipapi.set_hook().
39
58
40 2008-01-19 Walter Doerwald <walter@livinglogic.de>
59 2008-01-19 Walter Doerwald <walter@livinglogic.de>
41
60
42 * ibrowse.py, igrid.py, ipipe.py:
61 * ibrowse.py, igrid.py, ipipe.py:
43 The input object can now be passed to the constructor of the display classes.
62 The input object can now be passed to the constructor of the display classes.
44 This makes it possible to use them with objects that implement __or__.
63 This makes it possible to use them with objects that implement __or__.
45 Use this constructor in the displayhook instead of piping.
64 Use this constructor in the displayhook instead of piping.
46
65
47 * ipipe.py: Importing astyle.py is done as late as possible to
66 * ipipe.py: Importing astyle.py is done as late as possible to
48 avoid problems with circular imports.
67 avoid problems with circular imports.
49
68
50 2008-01-19 Ville Vainio <vivainio@gmail.com>
69 2008-01-19 Ville Vainio <vivainio@gmail.com>
51
70
52 * hooks.py, iplib.py: Added 'shell_hook' to customize how
71 * hooks.py, iplib.py: Added 'shell_hook' to customize how
53 IPython calls shell.
72 IPython calls shell.
54
73
55 * hooks.py, iplib.py: Added 'show_in_pager' hook to specify
74 * hooks.py, iplib.py: Added 'show_in_pager' hook to specify
56 how IPython pages text (%page, %pycat, %pdoc etc.)
75 how IPython pages text (%page, %pycat, %pdoc etc.)
57
76
58 * Extensions/jobctrl.py: Use shell_hook. New magics: '%tasks'
77 * Extensions/jobctrl.py: Use shell_hook. New magics: '%tasks'
59 and '%kill' to kill hanging processes that won't obey ctrl+C.
78 and '%kill' to kill hanging processes that won't obey ctrl+C.
60
79
61 2008-01-16 Ville Vainio <vivainio@gmail.com>
80 2008-01-16 Ville Vainio <vivainio@gmail.com>
62
81
63 * ipy_completers.py: pyw extension support for %run completer.
82 * ipy_completers.py: pyw extension support for %run completer.
64
83
65 2008-01-11 Ville Vainio <vivainio@gmail.com>
84 2008-01-11 Ville Vainio <vivainio@gmail.com>
66
85
67 * iplib.py, ipmaker.py: new rc option - autoexec. It's a list
86 * iplib.py, ipmaker.py: new rc option - autoexec. It's a list
68 of ipython commands to be run when IPython has started up
87 of ipython commands to be run when IPython has started up
69 (just before running the scripts and -c arg on command line).
88 (just before running the scripts and -c arg on command line).
70
89
71 * ipy_user_conf.py: Added an example on how to change term
90 * ipy_user_conf.py: Added an example on how to change term
72 colors in config file (through using autoexec).
91 colors in config file (through using autoexec).
73
92
74 * completer.py, test_completer.py: Ability to specify custom
93 * completer.py, test_completer.py: Ability to specify custom
75 get_endidx to replace readline.get_endidx. For emacs users.
94 get_endidx to replace readline.get_endidx. For emacs users.
76
95
77 2008-01-10 Ville Vainio <vivainio@gmail.com>
96 2008-01-10 Ville Vainio <vivainio@gmail.com>
78
97
79 * Prompts.py (set_p_str): do not crash on illegal prompt strings
98 * Prompts.py (set_p_str): do not crash on illegal prompt strings
80
99
81 2008-01-08 Ville Vainio <vivainio@gmail.com>
100 2008-01-08 Ville Vainio <vivainio@gmail.com>
82
101
83 * '%macro -r' (raw mode) is now default in sh profile.
102 * '%macro -r' (raw mode) is now default in sh profile.
84
103
85 2007-12-31 Ville Vainio <vivainio@gmail.com>
104 2007-12-31 Ville Vainio <vivainio@gmail.com>
86
105
87 * completer.py: custom completer matching is now case sensitive
106 * completer.py: custom completer matching is now case sensitive
88 (#207).
107 (#207).
89
108
90 * ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in
109 * ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in
91 an attempt to prevent occasional crashes.
110 an attempt to prevent occasional crashes.
92
111
93 * CrashHandler.py: Crash log dump now asks user to press enter
112 * CrashHandler.py: Crash log dump now asks user to press enter
94 before exiting.
113 before exiting.
95
114
96 * Store _ip in user_ns instead of __builtin__, enabling safer
115 * Store _ip in user_ns instead of __builtin__, enabling safer
97 coexistence of multiple IPython instances in the same python
116 coexistence of multiple IPython instances in the same python
98 interpreter (#197).
117 interpreter (#197).
99
118
100 * Debugger.py, ipmaker.py: Need to add '-pydb' command line
119 * Debugger.py, ipmaker.py: Need to add '-pydb' command line
101 switch to enable pydb in post-mortem debugging and %run -d.
120 switch to enable pydb in post-mortem debugging and %run -d.
102
121
103 2007-12-28 Ville Vainio <vivainio@gmail.com>
122 2007-12-28 Ville Vainio <vivainio@gmail.com>
104
123
105 * ipy_server.py: TCP socket server for "remote control" of an IPython
124 * ipy_server.py: TCP socket server for "remote control" of an IPython
106 instance.
125 instance.
107
126
108 * Debugger.py: Change to PSF license
127 * Debugger.py: Change to PSF license
109
128
110 * simplegeneric.py: Add license & author notes.
129 * simplegeneric.py: Add license & author notes.
111
130
112 * ipy_fsops.py: Added PathObj and FileObj, an object-oriented way
131 * ipy_fsops.py: Added PathObj and FileObj, an object-oriented way
113 to navigate file system with a custom completer. Run
132 to navigate file system with a custom completer. Run
114 ipy_fsops.test_pathobj() to play with it.
133 ipy_fsops.test_pathobj() to play with it.
115
134
116 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
135 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
117
136
118 * IPython/dtutils.py: Add utilities for interactively running
137 * IPython/dtutils.py: Add utilities for interactively running
119 doctests. Still needs work to more easily handle the namespace of
138 doctests. Still needs work to more easily handle the namespace of
120 the package one may be working on, but the basics are in place.
139 the package one may be working on, but the basics are in place.
121
140
122 2007-12-27 Ville Vainio <vivainio@gmail.com>
141 2007-12-27 Ville Vainio <vivainio@gmail.com>
123
142
124 * ipy_completers.py: Applied arno's patch to get proper list of
143 * ipy_completers.py: Applied arno's patch to get proper list of
125 packages in import completer. Closes #196.
144 packages in import completer. Closes #196.
126
145
127 2007-12-20 Ville Vainio <vivainio@gmail.com>
146 2007-12-20 Ville Vainio <vivainio@gmail.com>
128
147
129 * completer.py, generics.py(complete_object): Allow
148 * completer.py, generics.py(complete_object): Allow
130 custom complers based on python objects via simplegeneric.
149 custom complers based on python objects via simplegeneric.
131 See generics.py / my_demo_complete_object
150 See generics.py / my_demo_complete_object
132
151
133 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
152 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
134
153
135 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
154 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
136 behavior to prompt objects, useful for display hooks to adjust
155 behavior to prompt objects, useful for display hooks to adjust
137 themselves depending on whether prompts will be there or not.
156 themselves depending on whether prompts will be there or not.
138
157
139 2007-12-13 Ville Vainio <vivainio@gmail.com>
158 2007-12-13 Ville Vainio <vivainio@gmail.com>
140
159
141 * iplib.py(raw_input): unix readline does not allow unicode in
160 * iplib.py(raw_input): unix readline does not allow unicode in
142 history, encode to normal string. After patch by Tiago.
161 history, encode to normal string. After patch by Tiago.
143 Close #201
162 Close #201
144
163
145 2007-12-12 Ville Vainio <vivainio@gmail.com>
164 2007-12-12 Ville Vainio <vivainio@gmail.com>
146
165
147 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
166 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
148 current directory.
167 current directory.
149
168
150 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
169 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
151
170
152 * IPython/Shell.py (_select_shell): add support for controlling
171 * IPython/Shell.py (_select_shell): add support for controlling
153 the pylab threading mode directly at the command line, without
172 the pylab threading mode directly at the command line, without
154 having to modify MPL config files. Added unit tests for this
173 having to modify MPL config files. Added unit tests for this
155 feature, though manual/docs update is still pending, will do later.
174 feature, though manual/docs update is still pending, will do later.
156
175
157 2007-12-11 Ville Vainio <vivainio@gmail.com>
176 2007-12-11 Ville Vainio <vivainio@gmail.com>
158
177
159 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
178 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
160 use in scripts)
179 use in scripts)
161
180
162 2007-12-07 Ville Vainio <vivainio@gmail.com>
181 2007-12-07 Ville Vainio <vivainio@gmail.com>
163
182
164 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
183 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
165 anymore (to \#) - even if it is a comment char that is implicitly
184 anymore (to \#) - even if it is a comment char that is implicitly
166 escaped in some unix shells in interactive mode, it is ok to leave
185 escaped in some unix shells in interactive mode, it is ok to leave
167 it in IPython as such.
186 it in IPython as such.
168
187
169
188
170 2007-12-01 Robert Kern <robert.kern@gmail.com>
189 2007-12-01 Robert Kern <robert.kern@gmail.com>
171
190
172 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
191 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
173 inspect.findsource(). It can now find source lines inside zipped
192 inspect.findsource(). It can now find source lines inside zipped
174 packages.
193 packages.
175
194
176 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
195 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
177 in the frame's namespace before trusting the filename in the code object
196 in the frame's namespace before trusting the filename in the code object
178 which created the frame.
197 which created the frame.
179
198
180 2007-11-29 *** Released version 0.8.2
199 2007-11-29 *** Released version 0.8.2
181
200
182 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
201 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
183
202
184 * IPython/Logger.py (Logger.logstop): add a proper logstop()
203 * IPython/Logger.py (Logger.logstop): add a proper logstop()
185 method to fully stop the logger, along with a corresponding
204 method to fully stop the logger, along with a corresponding
186 %logstop magic for interactive use.
205 %logstop magic for interactive use.
187
206
188 * IPython/Extensions/ipy_host_completers.py: added new host
207 * IPython/Extensions/ipy_host_completers.py: added new host
189 completers functionality, contributed by Gael Pasgrimaud
208 completers functionality, contributed by Gael Pasgrimaud
190 <gawel-AT-afpy.org>.
209 <gawel-AT-afpy.org>.
191
210
192 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
211 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
193
212
194 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
213 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
195 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
214 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
196 options handling. Unicode fix in %whos (committed a while ago)
215 options handling. Unicode fix in %whos (committed a while ago)
197 was also contributed by Paul.
216 was also contributed by Paul.
198
217
199 2007-11-23 Darren Dale <darren.dale@cornell.edu>
218 2007-11-23 Darren Dale <darren.dale@cornell.edu>
200 * ipy_traits_completer.py: let traits_completer respect the user's
219 * ipy_traits_completer.py: let traits_completer respect the user's
201 readline_omit__names setting.
220 readline_omit__names setting.
202
221
203 2007-11-08 Ville Vainio <vivainio@gmail.com>
222 2007-11-08 Ville Vainio <vivainio@gmail.com>
204
223
205 * ipy_completers.py (import completer): assume 'xml' module exists.
224 * ipy_completers.py (import completer): assume 'xml' module exists.
206 Do not add every module twice anymore. Closes #196.
225 Do not add every module twice anymore. Closes #196.
207
226
208 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
227 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
209 completer that uses apt-cache to search for existing packages.
228 completer that uses apt-cache to search for existing packages.
210
229
211 2007-11-06 Ville Vainio <vivainio@gmail.com>
230 2007-11-06 Ville Vainio <vivainio@gmail.com>
212
231
213 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
232 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
214 true. Closes #194.
233 true. Closes #194.
215
234
216 2007-11-01 Brian Granger <ellisonbg@gmail.com>
235 2007-11-01 Brian Granger <ellisonbg@gmail.com>
217
236
218 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
237 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
219 working with OS X 10.5 libedit implementation of readline.
238 working with OS X 10.5 libedit implementation of readline.
220
239
221 2007-10-24 Ville Vainio <vivainio@gmail.com>
240 2007-10-24 Ville Vainio <vivainio@gmail.com>
222
241
223 * iplib.py(user_setup): To route around buggy installations where
242 * iplib.py(user_setup): To route around buggy installations where
224 UserConfig is not available, create a minimal _ipython.
243 UserConfig is not available, create a minimal _ipython.
225
244
226 * iplib.py: Unicode fixes from Jorgen.
245 * iplib.py: Unicode fixes from Jorgen.
227
246
228 * genutils.py: Slist now has new method 'fields()' for extraction of
247 * genutils.py: Slist now has new method 'fields()' for extraction of
229 whitespace-separated fields from line-oriented data.
248 whitespace-separated fields from line-oriented data.
230
249
231 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
250 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
232
251
233 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
252 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
234 when querying objects with no __class__ attribute (such as
253 when querying objects with no __class__ attribute (such as
235 f2py-generated modules).
254 f2py-generated modules).
236
255
237 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
256 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
238
257
239 * IPython/Magic.py (magic_time): track compilation time and report
258 * IPython/Magic.py (magic_time): track compilation time and report
240 it if longer than 0.1s (fix done to %time and %timeit). After a
259 it if longer than 0.1s (fix done to %time and %timeit). After a
241 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
260 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
242
261
243 2007-09-18 Ville Vainio <vivainio@gmail.com>
262 2007-09-18 Ville Vainio <vivainio@gmail.com>
244
263
245 * genutils.py(make_quoted_expr): Do not use Itpl, it does
264 * genutils.py(make_quoted_expr): Do not use Itpl, it does
246 not support unicode at the moment. Fixes (many) magic calls with
265 not support unicode at the moment. Fixes (many) magic calls with
247 special characters.
266 special characters.
248
267
249 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
268 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
250
269
251 * IPython/genutils.py (doctest_reload): expose the doctest
270 * IPython/genutils.py (doctest_reload): expose the doctest
252 reloader to the user so that people can easily reset doctest while
271 reloader to the user so that people can easily reset doctest while
253 using it interactively. Fixes a problem reported by Jorgen.
272 using it interactively. Fixes a problem reported by Jorgen.
254
273
255 * IPython/iplib.py (InteractiveShell.__init__): protect the
274 * IPython/iplib.py (InteractiveShell.__init__): protect the
256 FakeModule instances used for __main__ in %run calls from
275 FakeModule instances used for __main__ in %run calls from
257 deletion, so that user code defined in them isn't left with
276 deletion, so that user code defined in them isn't left with
258 dangling references due to the Python module deletion machinery.
277 dangling references due to the Python module deletion machinery.
259 This should fix the problems reported by Darren.
278 This should fix the problems reported by Darren.
260
279
261 2007-09-10 Darren Dale <dd55@cornell.edu>
280 2007-09-10 Darren Dale <dd55@cornell.edu>
262
281
263 * Cleanup of IPShellQt and IPShellQt4
282 * Cleanup of IPShellQt and IPShellQt4
264
283
265 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
284 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
266
285
267 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
286 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
268 doctest support.
287 doctest support.
269
288
270 * IPython/iplib.py (safe_execfile): minor docstring improvements.
289 * IPython/iplib.py (safe_execfile): minor docstring improvements.
271
290
272 2007-09-08 Ville Vainio <vivainio@gmail.com>
291 2007-09-08 Ville Vainio <vivainio@gmail.com>
273
292
274 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
293 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
275 directory, not the target directory.
294 directory, not the target directory.
276
295
277 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
296 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
278 exception that won't print the tracebacks. Switched many magics to
297 exception that won't print the tracebacks. Switched many magics to
279 raise them on error situations, also GetoptError is not printed
298 raise them on error situations, also GetoptError is not printed
280 anymore.
299 anymore.
281
300
282 2007-09-07 Ville Vainio <vivainio@gmail.com>
301 2007-09-07 Ville Vainio <vivainio@gmail.com>
283
302
284 * iplib.py: do not auto-alias "dir", it screws up other dir auto
303 * iplib.py: do not auto-alias "dir", it screws up other dir auto
285 aliases.
304 aliases.
286
305
287 * genutils.py: SList.grep() implemented.
306 * genutils.py: SList.grep() implemented.
288
307
289 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
308 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
290 for easy "out of the box" setup of several common editors, so that
309 for easy "out of the box" setup of several common editors, so that
291 e.g. '%edit os.path.isfile' will jump to the correct line
310 e.g. '%edit os.path.isfile' will jump to the correct line
292 automatically. Contributions for command lines of your favourite
311 automatically. Contributions for command lines of your favourite
293 editors welcome.
312 editors welcome.
294
313
295 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
314 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
296
315
297 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
316 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
298 preventing source display in certain cases. In reality I think
317 preventing source display in certain cases. In reality I think
299 the problem is with Ubuntu's Python build, but this change works
318 the problem is with Ubuntu's Python build, but this change works
300 around the issue in some cases (not in all, unfortunately). I'd
319 around the issue in some cases (not in all, unfortunately). I'd
301 filed a Python bug on this with more details, but in the change of
320 filed a Python bug on this with more details, but in the change of
302 bug trackers it seems to have been lost.
321 bug trackers it seems to have been lost.
303
322
304 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
323 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
305 not the same, it's not self-documenting, doesn't allow range
324 not the same, it's not self-documenting, doesn't allow range
306 selection, and sorts alphabetically instead of numerically.
325 selection, and sorts alphabetically instead of numerically.
307 (magic_r): restore %r. No, "up + enter. One char magic" is not
326 (magic_r): restore %r. No, "up + enter. One char magic" is not
308 the same thing, since %r takes parameters to allow fast retrieval
327 the same thing, since %r takes parameters to allow fast retrieval
309 of old commands. I've received emails from users who use this a
328 of old commands. I've received emails from users who use this a
310 LOT, so it stays.
329 LOT, so it stays.
311 (magic_automagic): restore %automagic. "use _ip.option.automagic"
330 (magic_automagic): restore %automagic. "use _ip.option.automagic"
312 is not a valid replacement b/c it doesn't provide an complete
331 is not a valid replacement b/c it doesn't provide an complete
313 explanation (which the automagic docstring does).
332 explanation (which the automagic docstring does).
314 (magic_autocall): restore %autocall, with improved docstring.
333 (magic_autocall): restore %autocall, with improved docstring.
315 Same argument as for others, "use _ip.options.autocall" is not a
334 Same argument as for others, "use _ip.options.autocall" is not a
316 valid replacement.
335 valid replacement.
317 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
336 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
318 tutorials and online docs.
337 tutorials and online docs.
319
338
320 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
339 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
321
340
322 * IPython/usage.py (quick_reference): mention magics in quickref,
341 * IPython/usage.py (quick_reference): mention magics in quickref,
323 modified main banner to mention %quickref.
342 modified main banner to mention %quickref.
324
343
325 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
344 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
326
345
327 2007-09-06 Ville Vainio <vivainio@gmail.com>
346 2007-09-06 Ville Vainio <vivainio@gmail.com>
328
347
329 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
348 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
330 Callable aliases now pass the _ip as first arg. This breaks
349 Callable aliases now pass the _ip as first arg. This breaks
331 compatibility with earlier 0.8.2.svn series! (though they should
350 compatibility with earlier 0.8.2.svn series! (though they should
332 not have been in use yet outside these few extensions)
351 not have been in use yet outside these few extensions)
333
352
334 2007-09-05 Ville Vainio <vivainio@gmail.com>
353 2007-09-05 Ville Vainio <vivainio@gmail.com>
335
354
336 * external/mglob.py: expand('dirname') => ['dirname'], instead
355 * external/mglob.py: expand('dirname') => ['dirname'], instead
337 of ['dirname/foo','dirname/bar', ...].
356 of ['dirname/foo','dirname/bar', ...].
338
357
339 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
358 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
340 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
359 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
341 is useful for others as well).
360 is useful for others as well).
342
361
343 * iplib.py: on callable aliases (as opposed to old style aliases),
362 * iplib.py: on callable aliases (as opposed to old style aliases),
344 do var_expand() immediately, and use make_quoted_expr instead
363 do var_expand() immediately, and use make_quoted_expr instead
345 of hardcoded r"""
364 of hardcoded r"""
346
365
347 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
366 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
348 if not available load ipy_fsops.py for cp, mv, etc. replacements
367 if not available load ipy_fsops.py for cp, mv, etc. replacements
349
368
350 * OInspect.py, ipy_which.py: improve %which and obj? for callable
369 * OInspect.py, ipy_which.py: improve %which and obj? for callable
351 aliases
370 aliases
352
371
353 2007-09-04 Ville Vainio <vivainio@gmail.com>
372 2007-09-04 Ville Vainio <vivainio@gmail.com>
354
373
355 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
374 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
356 Relicensed under BSD with the authors approval.
375 Relicensed under BSD with the authors approval.
357
376
358 * ipmaker.py, usage.py: Remove %magic from default banner, improve
377 * ipmaker.py, usage.py: Remove %magic from default banner, improve
359 %quickref
378 %quickref
360
379
361 2007-09-03 Ville Vainio <vivainio@gmail.com>
380 2007-09-03 Ville Vainio <vivainio@gmail.com>
362
381
363 * Magic.py: %time now passes expression through prefilter,
382 * Magic.py: %time now passes expression through prefilter,
364 allowing IPython syntax.
383 allowing IPython syntax.
365
384
366 2007-09-01 Ville Vainio <vivainio@gmail.com>
385 2007-09-01 Ville Vainio <vivainio@gmail.com>
367
386
368 * ipmaker.py: Always show full traceback when newstyle config fails
387 * ipmaker.py: Always show full traceback when newstyle config fails
369
388
370 2007-08-27 Ville Vainio <vivainio@gmail.com>
389 2007-08-27 Ville Vainio <vivainio@gmail.com>
371
390
372 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
391 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
373
392
374 2007-08-26 Ville Vainio <vivainio@gmail.com>
393 2007-08-26 Ville Vainio <vivainio@gmail.com>
375
394
376 * ipmaker.py: Command line args have the highest priority again
395 * ipmaker.py: Command line args have the highest priority again
377
396
378 * iplib.py, ipmaker.py: -i command line argument now behaves as in
397 * iplib.py, ipmaker.py: -i command line argument now behaves as in
379 normal python, i.e. leaves the IPython session running after -c
398 normal python, i.e. leaves the IPython session running after -c
380 command or running a batch file from command line.
399 command or running a batch file from command line.
381
400
382 2007-08-22 Ville Vainio <vivainio@gmail.com>
401 2007-08-22 Ville Vainio <vivainio@gmail.com>
383
402
384 * iplib.py: no extra empty (last) line in raw hist w/ multiline
403 * iplib.py: no extra empty (last) line in raw hist w/ multiline
385 statements
404 statements
386
405
387 * logger.py: Fix bug where blank lines in history were not
406 * logger.py: Fix bug where blank lines in history were not
388 added until AFTER adding the current line; translated and raw
407 added until AFTER adding the current line; translated and raw
389 history should finally be in sync with prompt now.
408 history should finally be in sync with prompt now.
390
409
391 * ipy_completers.py: quick_completer now makes it easy to create
410 * ipy_completers.py: quick_completer now makes it easy to create
392 trivial custom completers
411 trivial custom completers
393
412
394 * clearcmd.py: shadow history compression & erasing, fixed input hist
413 * clearcmd.py: shadow history compression & erasing, fixed input hist
395 clearing.
414 clearing.
396
415
397 * envpersist.py, history.py: %env (sh profile only), %hist completers
416 * envpersist.py, history.py: %env (sh profile only), %hist completers
398
417
399 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
418 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
400 term title now include the drive letter, and always use / instead of
419 term title now include the drive letter, and always use / instead of
401 os.sep (as per recommended approach for win32 ipython in general).
420 os.sep (as per recommended approach for win32 ipython in general).
402
421
403 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
422 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
404 plain python scripts from ipykit command line by running
423 plain python scripts from ipykit command line by running
405 "py myscript.py", even w/o installed python.
424 "py myscript.py", even w/o installed python.
406
425
407 2007-08-21 Ville Vainio <vivainio@gmail.com>
426 2007-08-21 Ville Vainio <vivainio@gmail.com>
408
427
409 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
428 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
410 (for backwards compatibility)
429 (for backwards compatibility)
411
430
412 * history.py: switch back to %hist -t from %hist -r as default.
431 * history.py: switch back to %hist -t from %hist -r as default.
413 At least until raw history is fixed for good.
432 At least until raw history is fixed for good.
414
433
415 2007-08-20 Ville Vainio <vivainio@gmail.com>
434 2007-08-20 Ville Vainio <vivainio@gmail.com>
416
435
417 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
436 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
418 locate alias redeclarations etc. Also, avoid handling
437 locate alias redeclarations etc. Also, avoid handling
419 _ip.IP.alias_table directly, prefer using _ip.defalias.
438 _ip.IP.alias_table directly, prefer using _ip.defalias.
420
439
421
440
422 2007-08-15 Ville Vainio <vivainio@gmail.com>
441 2007-08-15 Ville Vainio <vivainio@gmail.com>
423
442
424 * prefilter.py: ! is now always served first
443 * prefilter.py: ! is now always served first
425
444
426 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
445 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
427
446
428 * IPython/iplib.py (safe_execfile): fix the SystemExit
447 * IPython/iplib.py (safe_execfile): fix the SystemExit
429 auto-suppression code to work in Python2.4 (the internal structure
448 auto-suppression code to work in Python2.4 (the internal structure
430 of that exception changed and I'd only tested the code with 2.5).
449 of that exception changed and I'd only tested the code with 2.5).
431 Bug reported by a SciPy attendee.
450 Bug reported by a SciPy attendee.
432
451
433 2007-08-13 Ville Vainio <vivainio@gmail.com>
452 2007-08-13 Ville Vainio <vivainio@gmail.com>
434
453
435 * prefilter.py: reverted !c:/bin/foo fix, made % in
454 * prefilter.py: reverted !c:/bin/foo fix, made % in
436 multiline specials work again
455 multiline specials work again
437
456
438 2007-08-13 Ville Vainio <vivainio@gmail.com>
457 2007-08-13 Ville Vainio <vivainio@gmail.com>
439
458
440 * prefilter.py: Take more care to special-case !, so that
459 * prefilter.py: Take more care to special-case !, so that
441 !c:/bin/foo.exe works.
460 !c:/bin/foo.exe works.
442
461
443 * setup.py: if we are building eggs, strip all docs and
462 * setup.py: if we are building eggs, strip all docs and
444 examples (it doesn't make sense to bytecompile examples,
463 examples (it doesn't make sense to bytecompile examples,
445 and docs would be in an awkward place anyway).
464 and docs would be in an awkward place anyway).
446
465
447 * Ryan Krauss' patch fixes start menu shortcuts when IPython
466 * Ryan Krauss' patch fixes start menu shortcuts when IPython
448 is installed into a directory that has spaces in the name.
467 is installed into a directory that has spaces in the name.
449
468
450 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
469 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
451
470
452 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
471 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
453 doctest profile and %doctest_mode, so they actually generate the
472 doctest profile and %doctest_mode, so they actually generate the
454 blank lines needed by doctest to separate individual tests.
473 blank lines needed by doctest to separate individual tests.
455
474
456 * IPython/iplib.py (safe_execfile): modify so that running code
475 * IPython/iplib.py (safe_execfile): modify so that running code
457 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
476 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
458 doesn't get a printed traceback. Any other value in sys.exit(),
477 doesn't get a printed traceback. Any other value in sys.exit(),
459 including the empty call, still generates a traceback. This
478 including the empty call, still generates a traceback. This
460 enables use of %run without having to pass '-e' for codes that
479 enables use of %run without having to pass '-e' for codes that
461 correctly set the exit status flag.
480 correctly set the exit status flag.
462
481
463 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
482 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
464
483
465 * IPython/iplib.py (InteractiveShell.post_config_initialization):
484 * IPython/iplib.py (InteractiveShell.post_config_initialization):
466 fix problems with doctests failing when run inside IPython due to
485 fix problems with doctests failing when run inside IPython due to
467 IPython's modifications of sys.displayhook.
486 IPython's modifications of sys.displayhook.
468
487
469 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
488 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
470
489
471 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
490 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
472 a string with names.
491 a string with names.
473
492
474 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
493 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
475
494
476 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
495 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
477 magic to toggle on/off the doctest pasting support without having
496 magic to toggle on/off the doctest pasting support without having
478 to leave a session to switch to a separate profile.
497 to leave a session to switch to a separate profile.
479
498
480 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
499 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
481
500
482 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
501 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
483 introduce a blank line between inputs, to conform to doctest
502 introduce a blank line between inputs, to conform to doctest
484 requirements.
503 requirements.
485
504
486 * IPython/OInspect.py (Inspector.pinfo): fix another part where
505 * IPython/OInspect.py (Inspector.pinfo): fix another part where
487 auto-generated docstrings for new-style classes were showing up.
506 auto-generated docstrings for new-style classes were showing up.
488
507
489 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
508 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
490
509
491 * api_changes: Add new file to track backward-incompatible
510 * api_changes: Add new file to track backward-incompatible
492 user-visible changes.
511 user-visible changes.
493
512
494 2007-08-06 Ville Vainio <vivainio@gmail.com>
513 2007-08-06 Ville Vainio <vivainio@gmail.com>
495
514
496 * ipmaker.py: fix bug where user_config_ns didn't exist at all
515 * ipmaker.py: fix bug where user_config_ns didn't exist at all
497 before all the config files were handled.
516 before all the config files were handled.
498
517
499 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
518 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
500
519
501 * IPython/irunner.py (RunnerFactory): Add new factory class for
520 * IPython/irunner.py (RunnerFactory): Add new factory class for
502 creating reusable runners based on filenames.
521 creating reusable runners based on filenames.
503
522
504 * IPython/Extensions/ipy_profile_doctest.py: New profile for
523 * IPython/Extensions/ipy_profile_doctest.py: New profile for
505 doctest support. It sets prompts/exceptions as similar to
524 doctest support. It sets prompts/exceptions as similar to
506 standard Python as possible, so that ipython sessions in this
525 standard Python as possible, so that ipython sessions in this
507 profile can be easily pasted as doctests with minimal
526 profile can be easily pasted as doctests with minimal
508 modifications. It also enables pasting of doctests from external
527 modifications. It also enables pasting of doctests from external
509 sources (even if they have leading whitespace), so that you can
528 sources (even if they have leading whitespace), so that you can
510 rerun doctests from existing sources.
529 rerun doctests from existing sources.
511
530
512 * IPython/iplib.py (_prefilter): fix a buglet where after entering
531 * IPython/iplib.py (_prefilter): fix a buglet where after entering
513 some whitespace, the prompt would become a continuation prompt
532 some whitespace, the prompt would become a continuation prompt
514 with no way of exiting it other than Ctrl-C. This fix brings us
533 with no way of exiting it other than Ctrl-C. This fix brings us
515 into conformity with how the default python prompt works.
534 into conformity with how the default python prompt works.
516
535
517 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
536 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
518 Add support for pasting not only lines that start with '>>>', but
537 Add support for pasting not only lines that start with '>>>', but
519 also with ' >>>'. That is, arbitrary whitespace can now precede
538 also with ' >>>'. That is, arbitrary whitespace can now precede
520 the prompts. This makes the system useful for pasting doctests
539 the prompts. This makes the system useful for pasting doctests
521 from docstrings back into a normal session.
540 from docstrings back into a normal session.
522
541
523 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
542 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
524
543
525 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
544 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
526 r1357, which had killed multiple invocations of an embedded
545 r1357, which had killed multiple invocations of an embedded
527 ipython (this means that example-embed has been broken for over 1
546 ipython (this means that example-embed has been broken for over 1
528 year!!!). Rather than possibly breaking the batch stuff for which
547 year!!!). Rather than possibly breaking the batch stuff for which
529 the code in iplib.py/interact was introduced, I worked around the
548 the code in iplib.py/interact was introduced, I worked around the
530 problem in the embedding class in Shell.py. We really need a
549 problem in the embedding class in Shell.py. We really need a
531 bloody test suite for this code, I'm sick of finding stuff that
550 bloody test suite for this code, I'm sick of finding stuff that
532 used to work breaking left and right every time I use an old
551 used to work breaking left and right every time I use an old
533 feature I hadn't touched in a few months.
552 feature I hadn't touched in a few months.
534 (kill_embedded): Add a new magic that only shows up in embedded
553 (kill_embedded): Add a new magic that only shows up in embedded
535 mode, to allow users to permanently deactivate an embedded instance.
554 mode, to allow users to permanently deactivate an embedded instance.
536
555
537 2007-08-01 Ville Vainio <vivainio@gmail.com>
556 2007-08-01 Ville Vainio <vivainio@gmail.com>
538
557
539 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
558 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
540 history gets out of sync on runlines (e.g. when running macros).
559 history gets out of sync on runlines (e.g. when running macros).
541
560
542 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
561 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
543
562
544 * IPython/Magic.py (magic_colors): fix win32-related error message
563 * IPython/Magic.py (magic_colors): fix win32-related error message
545 that could appear under *nix when readline was missing. Patch by
564 that could appear under *nix when readline was missing. Patch by
546 Scott Jackson, closes #175.
565 Scott Jackson, closes #175.
547
566
548 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
567 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
549
568
550 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
569 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
551 completer that it traits-aware, so that traits objects don't show
570 completer that it traits-aware, so that traits objects don't show
552 all of their internal attributes all the time.
571 all of their internal attributes all the time.
553
572
554 * IPython/genutils.py (dir2): moved this code from inside
573 * IPython/genutils.py (dir2): moved this code from inside
555 completer.py to expose it publicly, so I could use it in the
574 completer.py to expose it publicly, so I could use it in the
556 wildcards bugfix.
575 wildcards bugfix.
557
576
558 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
577 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
559 Stefan with Traits.
578 Stefan with Traits.
560
579
561 * IPython/completer.py (Completer.attr_matches): change internal
580 * IPython/completer.py (Completer.attr_matches): change internal
562 var name from 'object' to 'obj', since 'object' is now a builtin
581 var name from 'object' to 'obj', since 'object' is now a builtin
563 and this can lead to weird bugs if reusing this code elsewhere.
582 and this can lead to weird bugs if reusing this code elsewhere.
564
583
565 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
584 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
566
585
567 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
586 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
568 'foo?' and update the code to prevent printing of default
587 'foo?' and update the code to prevent printing of default
569 docstrings that started appearing after I added support for
588 docstrings that started appearing after I added support for
570 new-style classes. The approach I'm using isn't ideal (I just
589 new-style classes. The approach I'm using isn't ideal (I just
571 special-case those strings) but I'm not sure how to more robustly
590 special-case those strings) but I'm not sure how to more robustly
572 differentiate between truly user-written strings and Python's
591 differentiate between truly user-written strings and Python's
573 automatic ones.
592 automatic ones.
574
593
575 2007-07-09 Ville Vainio <vivainio@gmail.com>
594 2007-07-09 Ville Vainio <vivainio@gmail.com>
576
595
577 * completer.py: Applied Matthew Neeley's patch:
596 * completer.py: Applied Matthew Neeley's patch:
578 Dynamic attributes from trait_names and _getAttributeNames are added
597 Dynamic attributes from trait_names and _getAttributeNames are added
579 to the list of tab completions, but when this happens, the attribute
598 to the list of tab completions, but when this happens, the attribute
580 list is turned into a set, so the attributes are unordered when
599 list is turned into a set, so the attributes are unordered when
581 printed, which makes it hard to find the right completion. This patch
600 printed, which makes it hard to find the right completion. This patch
582 turns this set back into a list and sort it.
601 turns this set back into a list and sort it.
583
602
584 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
603 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
585
604
586 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
605 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
587 classes in various inspector functions.
606 classes in various inspector functions.
588
607
589 2007-06-28 Ville Vainio <vivainio@gmail.com>
608 2007-06-28 Ville Vainio <vivainio@gmail.com>
590
609
591 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
610 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
592 Implement "shadow" namespace, and callable aliases that reside there.
611 Implement "shadow" namespace, and callable aliases that reside there.
593 Use them by:
612 Use them by:
594
613
595 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
614 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
596
615
597 foo hello world
616 foo hello world
598 (gets translated to:)
617 (gets translated to:)
599 _sh.foo(r"""hello world""")
618 _sh.foo(r"""hello world""")
600
619
601 In practice, this kind of alias can take the role of a magic function
620 In practice, this kind of alias can take the role of a magic function
602
621
603 * New generic inspect_object, called on obj? and obj??
622 * New generic inspect_object, called on obj? and obj??
604
623
605 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
624 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
606
625
607 * IPython/ultraTB.py (findsource): fix a problem with
626 * IPython/ultraTB.py (findsource): fix a problem with
608 inspect.getfile that can cause crashes during traceback construction.
627 inspect.getfile that can cause crashes during traceback construction.
609
628
610 2007-06-14 Ville Vainio <vivainio@gmail.com>
629 2007-06-14 Ville Vainio <vivainio@gmail.com>
611
630
612 * iplib.py (handle_auto): Try to use ascii for printing "--->"
631 * iplib.py (handle_auto): Try to use ascii for printing "--->"
613 autocall rewrite indication, becausesometimes unicode fails to print
632 autocall rewrite indication, becausesometimes unicode fails to print
614 properly (and you get ' - - - '). Use plain uncoloured ---> for
633 properly (and you get ' - - - '). Use plain uncoloured ---> for
615 unicode.
634 unicode.
616
635
617 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
636 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
618
637
619 . pickleshare 'hash' commands (hget, hset, hcompress,
638 . pickleshare 'hash' commands (hget, hset, hcompress,
620 hdict) for efficient shadow history storage.
639 hdict) for efficient shadow history storage.
621
640
622 2007-06-13 Ville Vainio <vivainio@gmail.com>
641 2007-06-13 Ville Vainio <vivainio@gmail.com>
623
642
624 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
643 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
625 Added kw arg 'interactive', tell whether vars should be visible
644 Added kw arg 'interactive', tell whether vars should be visible
626 with %whos.
645 with %whos.
627
646
628 2007-06-11 Ville Vainio <vivainio@gmail.com>
647 2007-06-11 Ville Vainio <vivainio@gmail.com>
629
648
630 * pspersistence.py, Magic.py, iplib.py: directory history now saved
649 * pspersistence.py, Magic.py, iplib.py: directory history now saved
631 to db
650 to db
632
651
633 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
652 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
634 Also, it exits IPython immediately after evaluating the command (just like
653 Also, it exits IPython immediately after evaluating the command (just like
635 std python)
654 std python)
636
655
637 2007-06-05 Walter Doerwald <walter@livinglogic.de>
656 2007-06-05 Walter Doerwald <walter@livinglogic.de>
638
657
639 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
658 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
640 Python string and captures the output. (Idea and original patch by
659 Python string and captures the output. (Idea and original patch by
641 Stefan van der Walt)
660 Stefan van der Walt)
642
661
643 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
662 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
644
663
645 * IPython/ultraTB.py (VerboseTB.text): update printing of
664 * IPython/ultraTB.py (VerboseTB.text): update printing of
646 exception types for Python 2.5 (now all exceptions in the stdlib
665 exception types for Python 2.5 (now all exceptions in the stdlib
647 are new-style classes).
666 are new-style classes).
648
667
649 2007-05-31 Walter Doerwald <walter@livinglogic.de>
668 2007-05-31 Walter Doerwald <walter@livinglogic.de>
650
669
651 * IPython/Extensions/igrid.py: Add new commands refresh and
670 * IPython/Extensions/igrid.py: Add new commands refresh and
652 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
671 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
653 the iterator once (refresh) or after every x seconds (refresh_timer).
672 the iterator once (refresh) or after every x seconds (refresh_timer).
654 Add a working implementation of "searchexpression", where the text
673 Add a working implementation of "searchexpression", where the text
655 entered is not the text to search for, but an expression that must
674 entered is not the text to search for, but an expression that must
656 be true. Added display of shortcuts to the menu. Added commands "pickinput"
675 be true. Added display of shortcuts to the menu. Added commands "pickinput"
657 and "pickinputattr" that put the object or attribute under the cursor
676 and "pickinputattr" that put the object or attribute under the cursor
658 in the input line. Split the statusbar to be able to display the currently
677 in the input line. Split the statusbar to be able to display the currently
659 active refresh interval. (Patch by Nik Tautenhahn)
678 active refresh interval. (Patch by Nik Tautenhahn)
660
679
661 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
680 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
662
681
663 * fixing set_term_title to use ctypes as default
682 * fixing set_term_title to use ctypes as default
664
683
665 * fixing set_term_title fallback to work when curent dir
684 * fixing set_term_title fallback to work when curent dir
666 is on a windows network share
685 is on a windows network share
667
686
668 2007-05-28 Ville Vainio <vivainio@gmail.com>
687 2007-05-28 Ville Vainio <vivainio@gmail.com>
669
688
670 * %cpaste: strip + with > from left (diffs).
689 * %cpaste: strip + with > from left (diffs).
671
690
672 * iplib.py: Fix crash when readline not installed
691 * iplib.py: Fix crash when readline not installed
673
692
674 2007-05-26 Ville Vainio <vivainio@gmail.com>
693 2007-05-26 Ville Vainio <vivainio@gmail.com>
675
694
676 * generics.py: introduce easy to extend result_display generic
695 * generics.py: introduce easy to extend result_display generic
677 function (using simplegeneric.py).
696 function (using simplegeneric.py).
678
697
679 * Fixed the append functionality of %set.
698 * Fixed the append functionality of %set.
680
699
681 2007-05-25 Ville Vainio <vivainio@gmail.com>
700 2007-05-25 Ville Vainio <vivainio@gmail.com>
682
701
683 * New magic: %rep (fetch / run old commands from history)
702 * New magic: %rep (fetch / run old commands from history)
684
703
685 * New extension: mglob (%mglob magic), for powerful glob / find /filter
704 * New extension: mglob (%mglob magic), for powerful glob / find /filter
686 like functionality
705 like functionality
687
706
688 % maghistory.py: %hist -g PATTERM greps the history for pattern
707 % maghistory.py: %hist -g PATTERM greps the history for pattern
689
708
690 2007-05-24 Walter Doerwald <walter@livinglogic.de>
709 2007-05-24 Walter Doerwald <walter@livinglogic.de>
691
710
692 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
711 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
693 browse the IPython input history
712 browse the IPython input history
694
713
695 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
714 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
696 (mapped to "i") can be used to put the object under the curser in the input
715 (mapped to "i") can be used to put the object under the curser in the input
697 line. pickinputattr (mapped to "I") does the same for the attribute under
716 line. pickinputattr (mapped to "I") does the same for the attribute under
698 the cursor.
717 the cursor.
699
718
700 2007-05-24 Ville Vainio <vivainio@gmail.com>
719 2007-05-24 Ville Vainio <vivainio@gmail.com>
701
720
702 * Grand magic cleansing (changeset [2380]):
721 * Grand magic cleansing (changeset [2380]):
703
722
704 * Introduce ipy_legacy.py where the following magics were
723 * Introduce ipy_legacy.py where the following magics were
705 moved:
724 moved:
706
725
707 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
726 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
708
727
709 If you need them, either use default profile or "import ipy_legacy"
728 If you need them, either use default profile or "import ipy_legacy"
710 in your ipy_user_conf.py
729 in your ipy_user_conf.py
711
730
712 * Move sh and scipy profile to Extensions from UserConfig. this implies
731 * Move sh and scipy profile to Extensions from UserConfig. this implies
713 you should not edit them, but you don't need to run %upgrade when
732 you should not edit them, but you don't need to run %upgrade when
714 upgrading IPython anymore.
733 upgrading IPython anymore.
715
734
716 * %hist/%history now operates in "raw" mode by default. To get the old
735 * %hist/%history now operates in "raw" mode by default. To get the old
717 behaviour, run '%hist -n' (native mode).
736 behaviour, run '%hist -n' (native mode).
718
737
719 * split ipy_stock_completers.py to ipy_stock_completers.py and
738 * split ipy_stock_completers.py to ipy_stock_completers.py and
720 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
739 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
721 installed as default.
740 installed as default.
722
741
723 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
742 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
724 handling.
743 handling.
725
744
726 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
745 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
727 input if readline is available.
746 input if readline is available.
728
747
729 2007-05-23 Ville Vainio <vivainio@gmail.com>
748 2007-05-23 Ville Vainio <vivainio@gmail.com>
730
749
731 * macro.py: %store uses __getstate__ properly
750 * macro.py: %store uses __getstate__ properly
732
751
733 * exesetup.py: added new setup script for creating
752 * exesetup.py: added new setup script for creating
734 standalone IPython executables with py2exe (i.e.
753 standalone IPython executables with py2exe (i.e.
735 no python installation required).
754 no python installation required).
736
755
737 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
756 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
738 its place.
757 its place.
739
758
740 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
759 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
741
760
742 2007-05-21 Ville Vainio <vivainio@gmail.com>
761 2007-05-21 Ville Vainio <vivainio@gmail.com>
743
762
744 * platutil_win32.py (set_term_title): handle
763 * platutil_win32.py (set_term_title): handle
745 failure of 'title' system call properly.
764 failure of 'title' system call properly.
746
765
747 2007-05-17 Walter Doerwald <walter@livinglogic.de>
766 2007-05-17 Walter Doerwald <walter@livinglogic.de>
748
767
749 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
768 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
750 (Bug detected by Paul Mueller).
769 (Bug detected by Paul Mueller).
751
770
752 2007-05-16 Ville Vainio <vivainio@gmail.com>
771 2007-05-16 Ville Vainio <vivainio@gmail.com>
753
772
754 * ipy_profile_sci.py, ipython_win_post_install.py: Create
773 * ipy_profile_sci.py, ipython_win_post_install.py: Create
755 new "sci" profile, effectively a modern version of the old
774 new "sci" profile, effectively a modern version of the old
756 "scipy" profile (which is now slated for deprecation).
775 "scipy" profile (which is now slated for deprecation).
757
776
758 2007-05-15 Ville Vainio <vivainio@gmail.com>
777 2007-05-15 Ville Vainio <vivainio@gmail.com>
759
778
760 * pycolorize.py, pycolor.1: Paul Mueller's patches that
779 * pycolorize.py, pycolor.1: Paul Mueller's patches that
761 make pycolorize read input from stdin when run without arguments.
780 make pycolorize read input from stdin when run without arguments.
762
781
763 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
782 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
764
783
765 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
784 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
766 it in sh profile (instead of ipy_system_conf.py).
785 it in sh profile (instead of ipy_system_conf.py).
767
786
768 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
787 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
769 aliases are now lower case on windows (MyCommand.exe => mycommand).
788 aliases are now lower case on windows (MyCommand.exe => mycommand).
770
789
771 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
790 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
772 Macros are now callable objects that inherit from ipapi.IPyAutocall,
791 Macros are now callable objects that inherit from ipapi.IPyAutocall,
773 i.e. get autocalled regardless of system autocall setting.
792 i.e. get autocalled regardless of system autocall setting.
774
793
775 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
794 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
776
795
777 * IPython/rlineimpl.py: check for clear_history in readline and
796 * IPython/rlineimpl.py: check for clear_history in readline and
778 make it a dummy no-op if not available. This function isn't
797 make it a dummy no-op if not available. This function isn't
779 guaranteed to be in the API and appeared in Python 2.4, so we need
798 guaranteed to be in the API and appeared in Python 2.4, so we need
780 to check it ourselves. Also, clean up this file quite a bit.
799 to check it ourselves. Also, clean up this file quite a bit.
781
800
782 * ipython.1: update man page and full manual with information
801 * ipython.1: update man page and full manual with information
783 about threads (remove outdated warning). Closes #151.
802 about threads (remove outdated warning). Closes #151.
784
803
785 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
804 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
786
805
787 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
806 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
788 in trunk (note that this made it into the 0.8.1 release already,
807 in trunk (note that this made it into the 0.8.1 release already,
789 but the changelogs didn't get coordinated). Many thanks to Gael
808 but the changelogs didn't get coordinated). Many thanks to Gael
790 Varoquaux <gael.varoquaux-AT-normalesup.org>
809 Varoquaux <gael.varoquaux-AT-normalesup.org>
791
810
792 2007-05-09 *** Released version 0.8.1
811 2007-05-09 *** Released version 0.8.1
793
812
794 2007-05-10 Walter Doerwald <walter@livinglogic.de>
813 2007-05-10 Walter Doerwald <walter@livinglogic.de>
795
814
796 * IPython/Extensions/igrid.py: Incorporate html help into
815 * IPython/Extensions/igrid.py: Incorporate html help into
797 the module, so we don't have to search for the file.
816 the module, so we don't have to search for the file.
798
817
799 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
818 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
800
819
801 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
820 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
802
821
803 2007-04-30 Ville Vainio <vivainio@gmail.com>
822 2007-04-30 Ville Vainio <vivainio@gmail.com>
804
823
805 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
824 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
806 user has illegal (non-ascii) home directory name
825 user has illegal (non-ascii) home directory name
807
826
808 2007-04-27 Ville Vainio <vivainio@gmail.com>
827 2007-04-27 Ville Vainio <vivainio@gmail.com>
809
828
810 * platutils_win32.py: implement set_term_title for windows
829 * platutils_win32.py: implement set_term_title for windows
811
830
812 * Update version number
831 * Update version number
813
832
814 * ipy_profile_sh.py: more informative prompt (2 dir levels)
833 * ipy_profile_sh.py: more informative prompt (2 dir levels)
815
834
816 2007-04-26 Walter Doerwald <walter@livinglogic.de>
835 2007-04-26 Walter Doerwald <walter@livinglogic.de>
817
836
818 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
837 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
819 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
838 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
820 bug discovered by Ville).
839 bug discovered by Ville).
821
840
822 2007-04-26 Ville Vainio <vivainio@gmail.com>
841 2007-04-26 Ville Vainio <vivainio@gmail.com>
823
842
824 * Extensions/ipy_completers.py: Olivier's module completer now
843 * Extensions/ipy_completers.py: Olivier's module completer now
825 saves the list of root modules if it takes > 4 secs on the first run.
844 saves the list of root modules if it takes > 4 secs on the first run.
826
845
827 * Magic.py (%rehashx): %rehashx now clears the completer cache
846 * Magic.py (%rehashx): %rehashx now clears the completer cache
828
847
829
848
830 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
849 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
831
850
832 * ipython.el: fix incorrect color scheme, reported by Stefan.
851 * ipython.el: fix incorrect color scheme, reported by Stefan.
833 Closes #149.
852 Closes #149.
834
853
835 * IPython/PyColorize.py (Parser.format2): fix state-handling
854 * IPython/PyColorize.py (Parser.format2): fix state-handling
836 logic. I still don't like how that code handles state, but at
855 logic. I still don't like how that code handles state, but at
837 least now it should be correct, if inelegant. Closes #146.
856 least now it should be correct, if inelegant. Closes #146.
838
857
839 2007-04-25 Ville Vainio <vivainio@gmail.com>
858 2007-04-25 Ville Vainio <vivainio@gmail.com>
840
859
841 * Extensions/ipy_which.py: added extension for %which magic, works
860 * Extensions/ipy_which.py: added extension for %which magic, works
842 a lot like unix 'which' but also finds and expands aliases, and
861 a lot like unix 'which' but also finds and expands aliases, and
843 allows wildcards.
862 allows wildcards.
844
863
845 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
864 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
846 as opposed to returning nothing.
865 as opposed to returning nothing.
847
866
848 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
867 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
849 ipy_stock_completers on default profile, do import on sh profile.
868 ipy_stock_completers on default profile, do import on sh profile.
850
869
851 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
870 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
852
871
853 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
872 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
854 like ipython.py foo.py which raised a IndexError.
873 like ipython.py foo.py which raised a IndexError.
855
874
856 2007-04-21 Ville Vainio <vivainio@gmail.com>
875 2007-04-21 Ville Vainio <vivainio@gmail.com>
857
876
858 * Extensions/ipy_extutil.py: added extension to manage other ipython
877 * Extensions/ipy_extutil.py: added extension to manage other ipython
859 extensions. Now only supports 'ls' == list extensions.
878 extensions. Now only supports 'ls' == list extensions.
860
879
861 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
880 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
862
881
863 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
882 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
864 would prevent use of the exception system outside of a running
883 would prevent use of the exception system outside of a running
865 IPython instance.
884 IPython instance.
866
885
867 2007-04-20 Ville Vainio <vivainio@gmail.com>
886 2007-04-20 Ville Vainio <vivainio@gmail.com>
868
887
869 * Extensions/ipy_render.py: added extension for easy
888 * Extensions/ipy_render.py: added extension for easy
870 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
889 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
871 'Iptl' template notation,
890 'Iptl' template notation,
872
891
873 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
892 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
874 safer & faster 'import' completer.
893 safer & faster 'import' completer.
875
894
876 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
895 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
877 and _ip.defalias(name, command).
896 and _ip.defalias(name, command).
878
897
879 * Extensions/ipy_exportdb.py: New extension for exporting all the
898 * Extensions/ipy_exportdb.py: New extension for exporting all the
880 %store'd data in a portable format (normal ipapi calls like
899 %store'd data in a portable format (normal ipapi calls like
881 defmacro() etc.)
900 defmacro() etc.)
882
901
883 2007-04-19 Ville Vainio <vivainio@gmail.com>
902 2007-04-19 Ville Vainio <vivainio@gmail.com>
884
903
885 * upgrade_dir.py: skip junk files like *.pyc
904 * upgrade_dir.py: skip junk files like *.pyc
886
905
887 * Release.py: version number to 0.8.1
906 * Release.py: version number to 0.8.1
888
907
889 2007-04-18 Ville Vainio <vivainio@gmail.com>
908 2007-04-18 Ville Vainio <vivainio@gmail.com>
890
909
891 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
910 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
892 and later on win32.
911 and later on win32.
893
912
894 2007-04-16 Ville Vainio <vivainio@gmail.com>
913 2007-04-16 Ville Vainio <vivainio@gmail.com>
895
914
896 * iplib.py (showtraceback): Do not crash when running w/o readline.
915 * iplib.py (showtraceback): Do not crash when running w/o readline.
897
916
898 2007-04-12 Walter Doerwald <walter@livinglogic.de>
917 2007-04-12 Walter Doerwald <walter@livinglogic.de>
899
918
900 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
919 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
901 sorted (case sensitive with files and dirs mixed).
920 sorted (case sensitive with files and dirs mixed).
902
921
903 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
922 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
904
923
905 * IPython/Release.py (version): Open trunk for 0.8.1 development.
924 * IPython/Release.py (version): Open trunk for 0.8.1 development.
906
925
907 2007-04-10 *** Released version 0.8.0
926 2007-04-10 *** Released version 0.8.0
908
927
909 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
928 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
910
929
911 * Tag 0.8.0 for release.
930 * Tag 0.8.0 for release.
912
931
913 * IPython/iplib.py (reloadhist): add API function to cleanly
932 * IPython/iplib.py (reloadhist): add API function to cleanly
914 reload the readline history, which was growing inappropriately on
933 reload the readline history, which was growing inappropriately on
915 every %run call.
934 every %run call.
916
935
917 * win32_manual_post_install.py (run): apply last part of Nicolas
936 * win32_manual_post_install.py (run): apply last part of Nicolas
918 Pernetty's patch (I'd accidentally applied it in a different
937 Pernetty's patch (I'd accidentally applied it in a different
919 directory and this particular file didn't get patched).
938 directory and this particular file didn't get patched).
920
939
921 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
940 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
922
941
923 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
942 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
924 find the main thread id and use the proper API call. Thanks to
943 find the main thread id and use the proper API call. Thanks to
925 Stefan for the fix.
944 Stefan for the fix.
926
945
927 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
946 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
928 unit tests to reflect fixed ticket #52, and add more tests sent by
947 unit tests to reflect fixed ticket #52, and add more tests sent by
929 him.
948 him.
930
949
931 * IPython/iplib.py (raw_input): restore the readline completer
950 * IPython/iplib.py (raw_input): restore the readline completer
932 state on every input, in case third-party code messed it up.
951 state on every input, in case third-party code messed it up.
933 (_prefilter): revert recent addition of early-escape checks which
952 (_prefilter): revert recent addition of early-escape checks which
934 prevent many valid alias calls from working.
953 prevent many valid alias calls from working.
935
954
936 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
955 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
937 flag for sigint handler so we don't run a full signal() call on
956 flag for sigint handler so we don't run a full signal() call on
938 each runcode access.
957 each runcode access.
939
958
940 * IPython/Magic.py (magic_whos): small improvement to diagnostic
959 * IPython/Magic.py (magic_whos): small improvement to diagnostic
941 message.
960 message.
942
961
943 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
962 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
944
963
945 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
964 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
946 asynchronous exceptions working, i.e., Ctrl-C can actually
965 asynchronous exceptions working, i.e., Ctrl-C can actually
947 interrupt long-running code in the multithreaded shells.
966 interrupt long-running code in the multithreaded shells.
948
967
949 This is using Tomer Filiba's great ctypes-based trick:
968 This is using Tomer Filiba's great ctypes-based trick:
950 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
969 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
951 this in the past, but hadn't been able to make it work before. So
970 this in the past, but hadn't been able to make it work before. So
952 far it looks like it's actually running, but this needs more
971 far it looks like it's actually running, but this needs more
953 testing. If it really works, I'll be *very* happy, and we'll owe
972 testing. If it really works, I'll be *very* happy, and we'll owe
954 a huge thank you to Tomer. My current implementation is ugly,
973 a huge thank you to Tomer. My current implementation is ugly,
955 hackish and uses nasty globals, but I don't want to try and clean
974 hackish and uses nasty globals, but I don't want to try and clean
956 anything up until we know if it actually works.
975 anything up until we know if it actually works.
957
976
958 NOTE: this feature needs ctypes to work. ctypes is included in
977 NOTE: this feature needs ctypes to work. ctypes is included in
959 Python2.5, but 2.4 users will need to manually install it. This
978 Python2.5, but 2.4 users will need to manually install it. This
960 feature makes multi-threaded shells so much more usable that it's
979 feature makes multi-threaded shells so much more usable that it's
961 a minor price to pay (ctypes is very easy to install, already a
980 a minor price to pay (ctypes is very easy to install, already a
962 requirement for win32 and available in major linux distros).
981 requirement for win32 and available in major linux distros).
963
982
964 2007-04-04 Ville Vainio <vivainio@gmail.com>
983 2007-04-04 Ville Vainio <vivainio@gmail.com>
965
984
966 * Extensions/ipy_completers.py, ipy_stock_completers.py:
985 * Extensions/ipy_completers.py, ipy_stock_completers.py:
967 Moved implementations of 'bundled' completers to ipy_completers.py,
986 Moved implementations of 'bundled' completers to ipy_completers.py,
968 they are only enabled in ipy_stock_completers.py.
987 they are only enabled in ipy_stock_completers.py.
969
988
970 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
989 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
971
990
972 * IPython/PyColorize.py (Parser.format2): Fix identation of
991 * IPython/PyColorize.py (Parser.format2): Fix identation of
973 colorzied output and return early if color scheme is NoColor, to
992 colorzied output and return early if color scheme is NoColor, to
974 avoid unnecessary and expensive tokenization. Closes #131.
993 avoid unnecessary and expensive tokenization. Closes #131.
975
994
976 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
995 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
977
996
978 * IPython/Debugger.py: disable the use of pydb version 1.17. It
997 * IPython/Debugger.py: disable the use of pydb version 1.17. It
979 has a critical bug (a missing import that makes post-mortem not
998 has a critical bug (a missing import that makes post-mortem not
980 work at all). Unfortunately as of this time, this is the version
999 work at all). Unfortunately as of this time, this is the version
981 shipped with Ubuntu Edgy, so quite a few people have this one. I
1000 shipped with Ubuntu Edgy, so quite a few people have this one. I
982 hope Edgy will update to a more recent package.
1001 hope Edgy will update to a more recent package.
983
1002
984 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
1003 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
985
1004
986 * IPython/iplib.py (_prefilter): close #52, second part of a patch
1005 * IPython/iplib.py (_prefilter): close #52, second part of a patch
987 set by Stefan (only the first part had been applied before).
1006 set by Stefan (only the first part had been applied before).
988
1007
989 * IPython/Extensions/ipy_stock_completers.py (module_completer):
1008 * IPython/Extensions/ipy_stock_completers.py (module_completer):
990 remove usage of the dangerous pkgutil.walk_packages(). See
1009 remove usage of the dangerous pkgutil.walk_packages(). See
991 details in comments left in the code.
1010 details in comments left in the code.
992
1011
993 * IPython/Magic.py (magic_whos): add support for numpy arrays
1012 * IPython/Magic.py (magic_whos): add support for numpy arrays
994 similar to what we had for Numeric.
1013 similar to what we had for Numeric.
995
1014
996 * IPython/completer.py (IPCompleter.complete): extend the
1015 * IPython/completer.py (IPCompleter.complete): extend the
997 complete() call API to support completions by other mechanisms
1016 complete() call API to support completions by other mechanisms
998 than readline. Closes #109.
1017 than readline. Closes #109.
999
1018
1000 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
1019 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
1001 protect against a bug in Python's execfile(). Closes #123.
1020 protect against a bug in Python's execfile(). Closes #123.
1002
1021
1003 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
1022 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
1004
1023
1005 * IPython/iplib.py (split_user_input): ensure that when splitting
1024 * IPython/iplib.py (split_user_input): ensure that when splitting
1006 user input, the part that can be treated as a python name is pure
1025 user input, the part that can be treated as a python name is pure
1007 ascii (Python identifiers MUST be pure ascii). Part of the
1026 ascii (Python identifiers MUST be pure ascii). Part of the
1008 ongoing Unicode support work.
1027 ongoing Unicode support work.
1009
1028
1010 * IPython/Prompts.py (prompt_specials_color): Add \N for the
1029 * IPython/Prompts.py (prompt_specials_color): Add \N for the
1011 actual prompt number, without any coloring. This allows users to
1030 actual prompt number, without any coloring. This allows users to
1012 produce numbered prompts with their own colors. Added after a
1031 produce numbered prompts with their own colors. Added after a
1013 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
1032 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
1014
1033
1015 2007-03-31 Walter Doerwald <walter@livinglogic.de>
1034 2007-03-31 Walter Doerwald <walter@livinglogic.de>
1016
1035
1017 * IPython/Extensions/igrid.py: Map the return key
1036 * IPython/Extensions/igrid.py: Map the return key
1018 to enter() and shift-return to enterattr().
1037 to enter() and shift-return to enterattr().
1019
1038
1020 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
1039 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
1021
1040
1022 * IPython/Magic.py (magic_psearch): add unicode support by
1041 * IPython/Magic.py (magic_psearch): add unicode support by
1023 encoding to ascii the input, since this routine also only deals
1042 encoding to ascii the input, since this routine also only deals
1024 with valid Python names. Fixes a bug reported by Stefan.
1043 with valid Python names. Fixes a bug reported by Stefan.
1025
1044
1026 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
1045 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
1027
1046
1028 * IPython/Magic.py (_inspect): convert unicode input into ascii
1047 * IPython/Magic.py (_inspect): convert unicode input into ascii
1029 before trying to evaluate it as a Python identifier. This fixes a
1048 before trying to evaluate it as a Python identifier. This fixes a
1030 problem that the new unicode support had introduced when analyzing
1049 problem that the new unicode support had introduced when analyzing
1031 long definition lines for functions.
1050 long definition lines for functions.
1032
1051
1033 2007-03-24 Walter Doerwald <walter@livinglogic.de>
1052 2007-03-24 Walter Doerwald <walter@livinglogic.de>
1034
1053
1035 * IPython/Extensions/igrid.py: Fix picking. Using
1054 * IPython/Extensions/igrid.py: Fix picking. Using
1036 igrid with wxPython 2.6 and -wthread should work now.
1055 igrid with wxPython 2.6 and -wthread should work now.
1037 igrid.display() simply tries to create a frame without
1056 igrid.display() simply tries to create a frame without
1038 an application. Only if this fails an application is created.
1057 an application. Only if this fails an application is created.
1039
1058
1040 2007-03-23 Walter Doerwald <walter@livinglogic.de>
1059 2007-03-23 Walter Doerwald <walter@livinglogic.de>
1041
1060
1042 * IPython/Extensions/path.py: Updated to version 2.2.
1061 * IPython/Extensions/path.py: Updated to version 2.2.
1043
1062
1044 2007-03-23 Ville Vainio <vivainio@gmail.com>
1063 2007-03-23 Ville Vainio <vivainio@gmail.com>
1045
1064
1046 * iplib.py: recursive alias expansion now works better, so that
1065 * iplib.py: recursive alias expansion now works better, so that
1047 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
1066 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
1048 doesn't trip up the process, if 'd' has been aliased to 'ls'.
1067 doesn't trip up the process, if 'd' has been aliased to 'ls'.
1049
1068
1050 * Extensions/ipy_gnuglobal.py added, provides %global magic
1069 * Extensions/ipy_gnuglobal.py added, provides %global magic
1051 for users of http://www.gnu.org/software/global
1070 for users of http://www.gnu.org/software/global
1052
1071
1053 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
1072 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
1054 Closes #52. Patch by Stefan van der Walt.
1073 Closes #52. Patch by Stefan van der Walt.
1055
1074
1056 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
1075 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
1057
1076
1058 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
1077 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
1059 respect the __file__ attribute when using %run. Thanks to a bug
1078 respect the __file__ attribute when using %run. Thanks to a bug
1060 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
1079 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
1061
1080
1062 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
1081 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
1063
1082
1064 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
1083 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
1065 input. Patch sent by Stefan.
1084 input. Patch sent by Stefan.
1066
1085
1067 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1086 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1068 * IPython/Extensions/ipy_stock_completer.py
1087 * IPython/Extensions/ipy_stock_completer.py
1069 shlex_split, fix bug in shlex_split. len function
1088 shlex_split, fix bug in shlex_split. len function
1070 call was missing an if statement. Caused shlex_split to
1089 call was missing an if statement. Caused shlex_split to
1071 sometimes return "" as last element.
1090 sometimes return "" as last element.
1072
1091
1073 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
1092 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
1074
1093
1075 * IPython/completer.py
1094 * IPython/completer.py
1076 (IPCompleter.file_matches.single_dir_expand): fix a problem
1095 (IPCompleter.file_matches.single_dir_expand): fix a problem
1077 reported by Stefan, where directories containign a single subdir
1096 reported by Stefan, where directories containign a single subdir
1078 would be completed too early.
1097 would be completed too early.
1079
1098
1080 * IPython/Shell.py (_load_pylab): Make the execution of 'from
1099 * IPython/Shell.py (_load_pylab): Make the execution of 'from
1081 pylab import *' when -pylab is given be optional. A new flag,
1100 pylab import *' when -pylab is given be optional. A new flag,
1082 pylab_import_all controls this behavior, the default is True for
1101 pylab_import_all controls this behavior, the default is True for
1083 backwards compatibility.
1102 backwards compatibility.
1084
1103
1085 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
1104 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
1086 modified) R. Bernstein's patch for fully syntax highlighted
1105 modified) R. Bernstein's patch for fully syntax highlighted
1087 tracebacks. The functionality is also available under ultraTB for
1106 tracebacks. The functionality is also available under ultraTB for
1088 non-ipython users (someone using ultraTB but outside an ipython
1107 non-ipython users (someone using ultraTB but outside an ipython
1089 session). They can select the color scheme by setting the
1108 session). They can select the color scheme by setting the
1090 module-level global DEFAULT_SCHEME. The highlight functionality
1109 module-level global DEFAULT_SCHEME. The highlight functionality
1091 also works when debugging.
1110 also works when debugging.
1092
1111
1093 * IPython/genutils.py (IOStream.close): small patch by
1112 * IPython/genutils.py (IOStream.close): small patch by
1094 R. Bernstein for improved pydb support.
1113 R. Bernstein for improved pydb support.
1095
1114
1096 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
1115 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
1097 DaveS <davls@telus.net> to improve support of debugging under
1116 DaveS <davls@telus.net> to improve support of debugging under
1098 NTEmacs, including improved pydb behavior.
1117 NTEmacs, including improved pydb behavior.
1099
1118
1100 * IPython/Magic.py (magic_prun): Fix saving of profile info for
1119 * IPython/Magic.py (magic_prun): Fix saving of profile info for
1101 Python 2.5, where the stats object API changed a little. Thanks
1120 Python 2.5, where the stats object API changed a little. Thanks
1102 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
1121 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
1103
1122
1104 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
1123 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
1105 Pernetty's patch to improve support for (X)Emacs under Win32.
1124 Pernetty's patch to improve support for (X)Emacs under Win32.
1106
1125
1107 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
1126 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
1108
1127
1109 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1128 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1110 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1129 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1111 a report by Nik Tautenhahn.
1130 a report by Nik Tautenhahn.
1112
1131
1113 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1132 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1114
1133
1115 * setup.py: Add the igrid help files to the list of data files
1134 * setup.py: Add the igrid help files to the list of data files
1116 to be installed alongside igrid.
1135 to be installed alongside igrid.
1117 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1136 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1118 Show the input object of the igrid browser as the window tile.
1137 Show the input object of the igrid browser as the window tile.
1119 Show the object the cursor is on in the statusbar.
1138 Show the object the cursor is on in the statusbar.
1120
1139
1121 2007-03-15 Ville Vainio <vivainio@gmail.com>
1140 2007-03-15 Ville Vainio <vivainio@gmail.com>
1122
1141
1123 * Extensions/ipy_stock_completers.py: Fixed exception
1142 * Extensions/ipy_stock_completers.py: Fixed exception
1124 on mismatching quotes in %run completer. Patch by
1143 on mismatching quotes in %run completer. Patch by
1125 Jorgen Stenarson. Closes #127.
1144 Jorgen Stenarson. Closes #127.
1126
1145
1127 2007-03-14 Ville Vainio <vivainio@gmail.com>
1146 2007-03-14 Ville Vainio <vivainio@gmail.com>
1128
1147
1129 * Extensions/ext_rehashdir.py: Do not do auto_alias
1148 * Extensions/ext_rehashdir.py: Do not do auto_alias
1130 in %rehashdir, it clobbers %store'd aliases.
1149 in %rehashdir, it clobbers %store'd aliases.
1131
1150
1132 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1151 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1133 (beefed up %env) imported for sh profile.
1152 (beefed up %env) imported for sh profile.
1134
1153
1135 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1154 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1136
1155
1137 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1156 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1138 as the default browser.
1157 as the default browser.
1139 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1158 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1140 As igrid displays all attributes it ever encounters, fetch() (which has
1159 As igrid displays all attributes it ever encounters, fetch() (which has
1141 been renamed to _fetch()) doesn't have to recalculate the display attributes
1160 been renamed to _fetch()) doesn't have to recalculate the display attributes
1142 every time a new item is fetched. This should speed up scrolling.
1161 every time a new item is fetched. This should speed up scrolling.
1143
1162
1144 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1163 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1145
1164
1146 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1165 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1147 Schmolck's recently reported tab-completion bug (my previous one
1166 Schmolck's recently reported tab-completion bug (my previous one
1148 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1167 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1149
1168
1150 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1169 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1151
1170
1152 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1171 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1153 Close help window if exiting igrid.
1172 Close help window if exiting igrid.
1154
1173
1155 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1174 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1156
1175
1157 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1176 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1158 before calling functions from readline.
1177 before calling functions from readline.
1159
1178
1160 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1179 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1161
1180
1162 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1181 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1163 igrid is a wxPython-based display object for ipipe. If your system has
1182 igrid is a wxPython-based display object for ipipe. If your system has
1164 wx installed igrid will be the default display. Without wx ipipe falls
1183 wx installed igrid will be the default display. Without wx ipipe falls
1165 back to ibrowse (which needs curses). If no curses is installed ipipe
1184 back to ibrowse (which needs curses). If no curses is installed ipipe
1166 falls back to idump.
1185 falls back to idump.
1167
1186
1168 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1187 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1169
1188
1170 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1189 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1171 my changes from yesterday, they introduced bugs. Will reactivate
1190 my changes from yesterday, they introduced bugs. Will reactivate
1172 once I get a correct solution, which will be much easier thanks to
1191 once I get a correct solution, which will be much easier thanks to
1173 Dan Milstein's new prefilter test suite.
1192 Dan Milstein's new prefilter test suite.
1174
1193
1175 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1194 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1176
1195
1177 * IPython/iplib.py (split_user_input): fix input splitting so we
1196 * IPython/iplib.py (split_user_input): fix input splitting so we
1178 don't attempt attribute accesses on things that can't possibly be
1197 don't attempt attribute accesses on things that can't possibly be
1179 valid Python attributes. After a bug report by Alex Schmolck.
1198 valid Python attributes. After a bug report by Alex Schmolck.
1180 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1199 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1181 %magic with explicit % prefix.
1200 %magic with explicit % prefix.
1182
1201
1183 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1202 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1184
1203
1185 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1204 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1186 avoid a DeprecationWarning from GTK.
1205 avoid a DeprecationWarning from GTK.
1187
1206
1188 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1207 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1189
1208
1190 * IPython/genutils.py (clock): I modified clock() to return total
1209 * IPython/genutils.py (clock): I modified clock() to return total
1191 time, user+system. This is a more commonly needed metric. I also
1210 time, user+system. This is a more commonly needed metric. I also
1192 introduced the new clocku/clocks to get only user/system time if
1211 introduced the new clocku/clocks to get only user/system time if
1193 one wants those instead.
1212 one wants those instead.
1194
1213
1195 ***WARNING: API CHANGE*** clock() used to return only user time,
1214 ***WARNING: API CHANGE*** clock() used to return only user time,
1196 so if you want exactly the same results as before, use clocku
1215 so if you want exactly the same results as before, use clocku
1197 instead.
1216 instead.
1198
1217
1199 2007-02-22 Ville Vainio <vivainio@gmail.com>
1218 2007-02-22 Ville Vainio <vivainio@gmail.com>
1200
1219
1201 * IPython/Extensions/ipy_p4.py: Extension for improved
1220 * IPython/Extensions/ipy_p4.py: Extension for improved
1202 p4 (perforce version control system) experience.
1221 p4 (perforce version control system) experience.
1203 Adds %p4 magic with p4 command completion and
1222 Adds %p4 magic with p4 command completion and
1204 automatic -G argument (marshall output as python dict)
1223 automatic -G argument (marshall output as python dict)
1205
1224
1206 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1225 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1207
1226
1208 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1227 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1209 stop marks.
1228 stop marks.
1210 (ClearingMixin): a simple mixin to easily make a Demo class clear
1229 (ClearingMixin): a simple mixin to easily make a Demo class clear
1211 the screen in between blocks and have empty marquees. The
1230 the screen in between blocks and have empty marquees. The
1212 ClearDemo and ClearIPDemo classes that use it are included.
1231 ClearDemo and ClearIPDemo classes that use it are included.
1213
1232
1214 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1233 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1215
1234
1216 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1235 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1217 protect against exceptions at Python shutdown time. Patch
1236 protect against exceptions at Python shutdown time. Patch
1218 sumbmitted to upstream.
1237 sumbmitted to upstream.
1219
1238
1220 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1239 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1221
1240
1222 * IPython/Extensions/ibrowse.py: If entering the first object level
1241 * IPython/Extensions/ibrowse.py: If entering the first object level
1223 (i.e. the object for which the browser has been started) fails,
1242 (i.e. the object for which the browser has been started) fails,
1224 now the error is raised directly (aborting the browser) instead of
1243 now the error is raised directly (aborting the browser) instead of
1225 running into an empty levels list later.
1244 running into an empty levels list later.
1226
1245
1227 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1246 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1228
1247
1229 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1248 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1230 for the noitem object.
1249 for the noitem object.
1231
1250
1232 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1251 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1233
1252
1234 * IPython/completer.py (Completer.attr_matches): Fix small
1253 * IPython/completer.py (Completer.attr_matches): Fix small
1235 tab-completion bug with Enthought Traits objects with units.
1254 tab-completion bug with Enthought Traits objects with units.
1236 Thanks to a bug report by Tom Denniston
1255 Thanks to a bug report by Tom Denniston
1237 <tom.denniston-AT-alum.dartmouth.org>.
1256 <tom.denniston-AT-alum.dartmouth.org>.
1238
1257
1239 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1258 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1240
1259
1241 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1260 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1242 bug where only .ipy or .py would be completed. Once the first
1261 bug where only .ipy or .py would be completed. Once the first
1243 argument to %run has been given, all completions are valid because
1262 argument to %run has been given, all completions are valid because
1244 they are the arguments to the script, which may well be non-python
1263 they are the arguments to the script, which may well be non-python
1245 filenames.
1264 filenames.
1246
1265
1247 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1266 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1248 to irunner to allow it to correctly support real doctesting of
1267 to irunner to allow it to correctly support real doctesting of
1249 out-of-process ipython code.
1268 out-of-process ipython code.
1250
1269
1251 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1270 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1252 title an option (-noterm_title) because it completely breaks
1271 title an option (-noterm_title) because it completely breaks
1253 doctesting.
1272 doctesting.
1254
1273
1255 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1274 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1256
1275
1257 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1276 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1258
1277
1259 * IPython/irunner.py (main): fix small bug where extensions were
1278 * IPython/irunner.py (main): fix small bug where extensions were
1260 not being correctly recognized.
1279 not being correctly recognized.
1261
1280
1262 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1281 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1263
1282
1264 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1283 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1265 a string containing a single line yields the string itself as the
1284 a string containing a single line yields the string itself as the
1266 only item.
1285 only item.
1267
1286
1268 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1287 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1269 object if it's the same as the one on the last level (This avoids
1288 object if it's the same as the one on the last level (This avoids
1270 infinite recursion for one line strings).
1289 infinite recursion for one line strings).
1271
1290
1272 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1291 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1273
1292
1274 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1293 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1275 all output streams before printing tracebacks. This ensures that
1294 all output streams before printing tracebacks. This ensures that
1276 user output doesn't end up interleaved with traceback output.
1295 user output doesn't end up interleaved with traceback output.
1277
1296
1278 2007-01-10 Ville Vainio <vivainio@gmail.com>
1297 2007-01-10 Ville Vainio <vivainio@gmail.com>
1279
1298
1280 * Extensions/envpersist.py: Turbocharged %env that remembers
1299 * Extensions/envpersist.py: Turbocharged %env that remembers
1281 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1300 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1282 "%env VISUAL=jed".
1301 "%env VISUAL=jed".
1283
1302
1284 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1303 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1285
1304
1286 * IPython/iplib.py (showtraceback): ensure that we correctly call
1305 * IPython/iplib.py (showtraceback): ensure that we correctly call
1287 custom handlers in all cases (some with pdb were slipping through,
1306 custom handlers in all cases (some with pdb were slipping through,
1288 but I'm not exactly sure why).
1307 but I'm not exactly sure why).
1289
1308
1290 * IPython/Debugger.py (Tracer.__init__): added new class to
1309 * IPython/Debugger.py (Tracer.__init__): added new class to
1291 support set_trace-like usage of IPython's enhanced debugger.
1310 support set_trace-like usage of IPython's enhanced debugger.
1292
1311
1293 2006-12-24 Ville Vainio <vivainio@gmail.com>
1312 2006-12-24 Ville Vainio <vivainio@gmail.com>
1294
1313
1295 * ipmaker.py: more informative message when ipy_user_conf
1314 * ipmaker.py: more informative message when ipy_user_conf
1296 import fails (suggest running %upgrade).
1315 import fails (suggest running %upgrade).
1297
1316
1298 * tools/run_ipy_in_profiler.py: Utility to see where
1317 * tools/run_ipy_in_profiler.py: Utility to see where
1299 the time during IPython startup is spent.
1318 the time during IPython startup is spent.
1300
1319
1301 2006-12-20 Ville Vainio <vivainio@gmail.com>
1320 2006-12-20 Ville Vainio <vivainio@gmail.com>
1302
1321
1303 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1322 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1304
1323
1305 * ipapi.py: Add new ipapi method, expand_alias.
1324 * ipapi.py: Add new ipapi method, expand_alias.
1306
1325
1307 * Release.py: Bump up version to 0.7.4.svn
1326 * Release.py: Bump up version to 0.7.4.svn
1308
1327
1309 2006-12-17 Ville Vainio <vivainio@gmail.com>
1328 2006-12-17 Ville Vainio <vivainio@gmail.com>
1310
1329
1311 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1330 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1312 to work properly on posix too
1331 to work properly on posix too
1313
1332
1314 * Release.py: Update revnum (version is still just 0.7.3).
1333 * Release.py: Update revnum (version is still just 0.7.3).
1315
1334
1316 2006-12-15 Ville Vainio <vivainio@gmail.com>
1335 2006-12-15 Ville Vainio <vivainio@gmail.com>
1317
1336
1318 * scripts/ipython_win_post_install: create ipython.py in
1337 * scripts/ipython_win_post_install: create ipython.py in
1319 prefix + "/scripts".
1338 prefix + "/scripts".
1320
1339
1321 * Release.py: Update version to 0.7.3.
1340 * Release.py: Update version to 0.7.3.
1322
1341
1323 2006-12-14 Ville Vainio <vivainio@gmail.com>
1342 2006-12-14 Ville Vainio <vivainio@gmail.com>
1324
1343
1325 * scripts/ipython_win_post_install: Overwrite old shortcuts
1344 * scripts/ipython_win_post_install: Overwrite old shortcuts
1326 if they already exist
1345 if they already exist
1327
1346
1328 * Release.py: release 0.7.3rc2
1347 * Release.py: release 0.7.3rc2
1329
1348
1330 2006-12-13 Ville Vainio <vivainio@gmail.com>
1349 2006-12-13 Ville Vainio <vivainio@gmail.com>
1331
1350
1332 * Branch and update Release.py for 0.7.3rc1
1351 * Branch and update Release.py for 0.7.3rc1
1333
1352
1334 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1353 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1335
1354
1336 * IPython/Shell.py (IPShellWX): update for current WX naming
1355 * IPython/Shell.py (IPShellWX): update for current WX naming
1337 conventions, to avoid a deprecation warning with current WX
1356 conventions, to avoid a deprecation warning with current WX
1338 versions. Thanks to a report by Danny Shevitz.
1357 versions. Thanks to a report by Danny Shevitz.
1339
1358
1340 2006-12-12 Ville Vainio <vivainio@gmail.com>
1359 2006-12-12 Ville Vainio <vivainio@gmail.com>
1341
1360
1342 * ipmaker.py: apply david cournapeau's patch to make
1361 * ipmaker.py: apply david cournapeau's patch to make
1343 import_some work properly even when ipythonrc does
1362 import_some work properly even when ipythonrc does
1344 import_some on empty list (it was an old bug!).
1363 import_some on empty list (it was an old bug!).
1345
1364
1346 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1365 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1347 Add deprecation note to ipythonrc and a url to wiki
1366 Add deprecation note to ipythonrc and a url to wiki
1348 in ipy_user_conf.py
1367 in ipy_user_conf.py
1349
1368
1350
1369
1351 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1370 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1352 as if it was typed on IPython command prompt, i.e.
1371 as if it was typed on IPython command prompt, i.e.
1353 as IPython script.
1372 as IPython script.
1354
1373
1355 * example-magic.py, magic_grepl.py: remove outdated examples
1374 * example-magic.py, magic_grepl.py: remove outdated examples
1356
1375
1357 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1376 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1358
1377
1359 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1378 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1360 is called before any exception has occurred.
1379 is called before any exception has occurred.
1361
1380
1362 2006-12-08 Ville Vainio <vivainio@gmail.com>
1381 2006-12-08 Ville Vainio <vivainio@gmail.com>
1363
1382
1364 * Extensions/ipy_stock_completers.py: fix cd completer
1383 * Extensions/ipy_stock_completers.py: fix cd completer
1365 to translate /'s to \'s again.
1384 to translate /'s to \'s again.
1366
1385
1367 * completer.py: prevent traceback on file completions w/
1386 * completer.py: prevent traceback on file completions w/
1368 backslash.
1387 backslash.
1369
1388
1370 * Release.py: Update release number to 0.7.3b3 for release
1389 * Release.py: Update release number to 0.7.3b3 for release
1371
1390
1372 2006-12-07 Ville Vainio <vivainio@gmail.com>
1391 2006-12-07 Ville Vainio <vivainio@gmail.com>
1373
1392
1374 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1393 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1375 while executing external code. Provides more shell-like behaviour
1394 while executing external code. Provides more shell-like behaviour
1376 and overall better response to ctrl + C / ctrl + break.
1395 and overall better response to ctrl + C / ctrl + break.
1377
1396
1378 * tools/make_tarball.py: new script to create tarball straight from svn
1397 * tools/make_tarball.py: new script to create tarball straight from svn
1379 (setup.py sdist doesn't work on win32).
1398 (setup.py sdist doesn't work on win32).
1380
1399
1381 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1400 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1382 on dirnames with spaces and use the default completer instead.
1401 on dirnames with spaces and use the default completer instead.
1383
1402
1384 * Revision.py: Change version to 0.7.3b2 for release.
1403 * Revision.py: Change version to 0.7.3b2 for release.
1385
1404
1386 2006-12-05 Ville Vainio <vivainio@gmail.com>
1405 2006-12-05 Ville Vainio <vivainio@gmail.com>
1387
1406
1388 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1407 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1389 pydb patch 4 (rm debug printing, py 2.5 checking)
1408 pydb patch 4 (rm debug printing, py 2.5 checking)
1390
1409
1391 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1410 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1392 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1411 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1393 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1412 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1394 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1413 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1395 object the cursor was on before the refresh. The command "markrange" is
1414 object the cursor was on before the refresh. The command "markrange" is
1396 mapped to "%" now.
1415 mapped to "%" now.
1397 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1416 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1398
1417
1399 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1418 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1400
1419
1401 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1420 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1402 interactive debugger on the last traceback, without having to call
1421 interactive debugger on the last traceback, without having to call
1403 %pdb and rerun your code. Made minor changes in various modules,
1422 %pdb and rerun your code. Made minor changes in various modules,
1404 should automatically recognize pydb if available.
1423 should automatically recognize pydb if available.
1405
1424
1406 2006-11-28 Ville Vainio <vivainio@gmail.com>
1425 2006-11-28 Ville Vainio <vivainio@gmail.com>
1407
1426
1408 * completer.py: If the text start with !, show file completions
1427 * completer.py: If the text start with !, show file completions
1409 properly. This helps when trying to complete command name
1428 properly. This helps when trying to complete command name
1410 for shell escapes.
1429 for shell escapes.
1411
1430
1412 2006-11-27 Ville Vainio <vivainio@gmail.com>
1431 2006-11-27 Ville Vainio <vivainio@gmail.com>
1413
1432
1414 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1433 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1415 der Walt. Clean up svn and hg completers by using a common
1434 der Walt. Clean up svn and hg completers by using a common
1416 vcs_completer.
1435 vcs_completer.
1417
1436
1418 2006-11-26 Ville Vainio <vivainio@gmail.com>
1437 2006-11-26 Ville Vainio <vivainio@gmail.com>
1419
1438
1420 * Remove ipconfig and %config; you should use _ip.options structure
1439 * Remove ipconfig and %config; you should use _ip.options structure
1421 directly instead!
1440 directly instead!
1422
1441
1423 * genutils.py: add wrap_deprecated function for deprecating callables
1442 * genutils.py: add wrap_deprecated function for deprecating callables
1424
1443
1425 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1444 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1426 _ip.system instead. ipalias is redundant.
1445 _ip.system instead. ipalias is redundant.
1427
1446
1428 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1447 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1429 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1448 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1430 explicit.
1449 explicit.
1431
1450
1432 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1451 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1433 completer. Try it by entering 'hg ' and pressing tab.
1452 completer. Try it by entering 'hg ' and pressing tab.
1434
1453
1435 * macro.py: Give Macro a useful __repr__ method
1454 * macro.py: Give Macro a useful __repr__ method
1436
1455
1437 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1456 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1438
1457
1439 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1458 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1440 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1459 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1441 we don't get a duplicate ipipe module, where registration of the xrepr
1460 we don't get a duplicate ipipe module, where registration of the xrepr
1442 implementation for Text is useless.
1461 implementation for Text is useless.
1443
1462
1444 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1463 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1445
1464
1446 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1465 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1447
1466
1448 2006-11-24 Ville Vainio <vivainio@gmail.com>
1467 2006-11-24 Ville Vainio <vivainio@gmail.com>
1449
1468
1450 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1469 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1451 try to use "cProfile" instead of the slower pure python
1470 try to use "cProfile" instead of the slower pure python
1452 "profile"
1471 "profile"
1453
1472
1454 2006-11-23 Ville Vainio <vivainio@gmail.com>
1473 2006-11-23 Ville Vainio <vivainio@gmail.com>
1455
1474
1456 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1475 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1457 Qt+IPython+Designer link in documentation.
1476 Qt+IPython+Designer link in documentation.
1458
1477
1459 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1478 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1460 correct Pdb object to %pydb.
1479 correct Pdb object to %pydb.
1461
1480
1462
1481
1463 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1482 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1464 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1483 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1465 generic xrepr(), otherwise the list implementation would kick in.
1484 generic xrepr(), otherwise the list implementation would kick in.
1466
1485
1467 2006-11-21 Ville Vainio <vivainio@gmail.com>
1486 2006-11-21 Ville Vainio <vivainio@gmail.com>
1468
1487
1469 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1488 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1470 with one from UserConfig.
1489 with one from UserConfig.
1471
1490
1472 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1491 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1473 it was missing which broke the sh profile.
1492 it was missing which broke the sh profile.
1474
1493
1475 * completer.py: file completer now uses explicit '/' instead
1494 * completer.py: file completer now uses explicit '/' instead
1476 of os.path.join, expansion of 'foo' was broken on win32
1495 of os.path.join, expansion of 'foo' was broken on win32
1477 if there was one directory with name 'foobar'.
1496 if there was one directory with name 'foobar'.
1478
1497
1479 * A bunch of patches from Kirill Smelkov:
1498 * A bunch of patches from Kirill Smelkov:
1480
1499
1481 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1500 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1482
1501
1483 * [patch 7/9] Implement %page -r (page in raw mode) -
1502 * [patch 7/9] Implement %page -r (page in raw mode) -
1484
1503
1485 * [patch 5/9] ScientificPython webpage has moved
1504 * [patch 5/9] ScientificPython webpage has moved
1486
1505
1487 * [patch 4/9] The manual mentions %ds, should be %dhist
1506 * [patch 4/9] The manual mentions %ds, should be %dhist
1488
1507
1489 * [patch 3/9] Kill old bits from %prun doc.
1508 * [patch 3/9] Kill old bits from %prun doc.
1490
1509
1491 * [patch 1/9] Fix typos here and there.
1510 * [patch 1/9] Fix typos here and there.
1492
1511
1493 2006-11-08 Ville Vainio <vivainio@gmail.com>
1512 2006-11-08 Ville Vainio <vivainio@gmail.com>
1494
1513
1495 * completer.py (attr_matches): catch all exceptions raised
1514 * completer.py (attr_matches): catch all exceptions raised
1496 by eval of expr with dots.
1515 by eval of expr with dots.
1497
1516
1498 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1517 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1499
1518
1500 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1519 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1501 input if it starts with whitespace. This allows you to paste
1520 input if it starts with whitespace. This allows you to paste
1502 indented input from any editor without manually having to type in
1521 indented input from any editor without manually having to type in
1503 the 'if 1:', which is convenient when working interactively.
1522 the 'if 1:', which is convenient when working interactively.
1504 Slightly modifed version of a patch by Bo Peng
1523 Slightly modifed version of a patch by Bo Peng
1505 <bpeng-AT-rice.edu>.
1524 <bpeng-AT-rice.edu>.
1506
1525
1507 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1526 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1508
1527
1509 * IPython/irunner.py (main): modified irunner so it automatically
1528 * IPython/irunner.py (main): modified irunner so it automatically
1510 recognizes the right runner to use based on the extension (.py for
1529 recognizes the right runner to use based on the extension (.py for
1511 python, .ipy for ipython and .sage for sage).
1530 python, .ipy for ipython and .sage for sage).
1512
1531
1513 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1532 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1514 visible in ipapi as ip.config(), to programatically control the
1533 visible in ipapi as ip.config(), to programatically control the
1515 internal rc object. There's an accompanying %config magic for
1534 internal rc object. There's an accompanying %config magic for
1516 interactive use, which has been enhanced to match the
1535 interactive use, which has been enhanced to match the
1517 funtionality in ipconfig.
1536 funtionality in ipconfig.
1518
1537
1519 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1538 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1520 so it's not just a toggle, it now takes an argument. Add support
1539 so it's not just a toggle, it now takes an argument. Add support
1521 for a customizable header when making system calls, as the new
1540 for a customizable header when making system calls, as the new
1522 system_header variable in the ipythonrc file.
1541 system_header variable in the ipythonrc file.
1523
1542
1524 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1543 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1525
1544
1526 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1545 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1527 generic functions (using Philip J. Eby's simplegeneric package).
1546 generic functions (using Philip J. Eby's simplegeneric package).
1528 This makes it possible to customize the display of third-party classes
1547 This makes it possible to customize the display of third-party classes
1529 without having to monkeypatch them. xiter() no longer supports a mode
1548 without having to monkeypatch them. xiter() no longer supports a mode
1530 argument and the XMode class has been removed. The same functionality can
1549 argument and the XMode class has been removed. The same functionality can
1531 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1550 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1532 One consequence of the switch to generic functions is that xrepr() and
1551 One consequence of the switch to generic functions is that xrepr() and
1533 xattrs() implementation must define the default value for the mode
1552 xattrs() implementation must define the default value for the mode
1534 argument themselves and xattrs() implementations must return real
1553 argument themselves and xattrs() implementations must return real
1535 descriptors.
1554 descriptors.
1536
1555
1537 * IPython/external: This new subpackage will contain all third-party
1556 * IPython/external: This new subpackage will contain all third-party
1538 packages that are bundled with IPython. (The first one is simplegeneric).
1557 packages that are bundled with IPython. (The first one is simplegeneric).
1539
1558
1540 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1559 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1541 directory which as been dropped in r1703.
1560 directory which as been dropped in r1703.
1542
1561
1543 * IPython/Extensions/ipipe.py (iless): Fixed.
1562 * IPython/Extensions/ipipe.py (iless): Fixed.
1544
1563
1545 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1564 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1546
1565
1547 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1566 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1548
1567
1549 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1568 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1550 handling in variable expansion so that shells and magics recognize
1569 handling in variable expansion so that shells and magics recognize
1551 function local scopes correctly. Bug reported by Brian.
1570 function local scopes correctly. Bug reported by Brian.
1552
1571
1553 * scripts/ipython: remove the very first entry in sys.path which
1572 * scripts/ipython: remove the very first entry in sys.path which
1554 Python auto-inserts for scripts, so that sys.path under IPython is
1573 Python auto-inserts for scripts, so that sys.path under IPython is
1555 as similar as possible to that under plain Python.
1574 as similar as possible to that under plain Python.
1556
1575
1557 * IPython/completer.py (IPCompleter.file_matches): Fix
1576 * IPython/completer.py (IPCompleter.file_matches): Fix
1558 tab-completion so that quotes are not closed unless the completion
1577 tab-completion so that quotes are not closed unless the completion
1559 is unambiguous. After a request by Stefan. Minor cleanups in
1578 is unambiguous. After a request by Stefan. Minor cleanups in
1560 ipy_stock_completers.
1579 ipy_stock_completers.
1561
1580
1562 2006-11-02 Ville Vainio <vivainio@gmail.com>
1581 2006-11-02 Ville Vainio <vivainio@gmail.com>
1563
1582
1564 * ipy_stock_completers.py: Add %run and %cd completers.
1583 * ipy_stock_completers.py: Add %run and %cd completers.
1565
1584
1566 * completer.py: Try running custom completer for both
1585 * completer.py: Try running custom completer for both
1567 "foo" and "%foo" if the command is just "foo". Ignore case
1586 "foo" and "%foo" if the command is just "foo". Ignore case
1568 when filtering possible completions.
1587 when filtering possible completions.
1569
1588
1570 * UserConfig/ipy_user_conf.py: install stock completers as default
1589 * UserConfig/ipy_user_conf.py: install stock completers as default
1571
1590
1572 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1591 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1573 simplified readline history save / restore through a wrapper
1592 simplified readline history save / restore through a wrapper
1574 function
1593 function
1575
1594
1576
1595
1577 2006-10-31 Ville Vainio <vivainio@gmail.com>
1596 2006-10-31 Ville Vainio <vivainio@gmail.com>
1578
1597
1579 * strdispatch.py, completer.py, ipy_stock_completers.py:
1598 * strdispatch.py, completer.py, ipy_stock_completers.py:
1580 Allow str_key ("command") in completer hooks. Implement
1599 Allow str_key ("command") in completer hooks. Implement
1581 trivial completer for 'import' (stdlib modules only). Rename
1600 trivial completer for 'import' (stdlib modules only). Rename
1582 ipy_linux_package_managers.py to ipy_stock_completers.py.
1601 ipy_linux_package_managers.py to ipy_stock_completers.py.
1583 SVN completer.
1602 SVN completer.
1584
1603
1585 * Extensions/ledit.py: %magic line editor for easily and
1604 * Extensions/ledit.py: %magic line editor for easily and
1586 incrementally manipulating lists of strings. The magic command
1605 incrementally manipulating lists of strings. The magic command
1587 name is %led.
1606 name is %led.
1588
1607
1589 2006-10-30 Ville Vainio <vivainio@gmail.com>
1608 2006-10-30 Ville Vainio <vivainio@gmail.com>
1590
1609
1591 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1610 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1592 Bernsteins's patches for pydb integration.
1611 Bernsteins's patches for pydb integration.
1593 http://bashdb.sourceforge.net/pydb/
1612 http://bashdb.sourceforge.net/pydb/
1594
1613
1595 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1614 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1596 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1615 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1597 custom completer hook to allow the users to implement their own
1616 custom completer hook to allow the users to implement their own
1598 completers. See ipy_linux_package_managers.py for example. The
1617 completers. See ipy_linux_package_managers.py for example. The
1599 hook name is 'complete_command'.
1618 hook name is 'complete_command'.
1600
1619
1601 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1620 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1602
1621
1603 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1622 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1604 Numeric leftovers.
1623 Numeric leftovers.
1605
1624
1606 * ipython.el (py-execute-region): apply Stefan's patch to fix
1625 * ipython.el (py-execute-region): apply Stefan's patch to fix
1607 garbled results if the python shell hasn't been previously started.
1626 garbled results if the python shell hasn't been previously started.
1608
1627
1609 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1628 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1610 pretty generic function and useful for other things.
1629 pretty generic function and useful for other things.
1611
1630
1612 * IPython/OInspect.py (getsource): Add customizable source
1631 * IPython/OInspect.py (getsource): Add customizable source
1613 extractor. After a request/patch form W. Stein (SAGE).
1632 extractor. After a request/patch form W. Stein (SAGE).
1614
1633
1615 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1634 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1616 window size to a more reasonable value from what pexpect does,
1635 window size to a more reasonable value from what pexpect does,
1617 since their choice causes wrapping bugs with long input lines.
1636 since their choice causes wrapping bugs with long input lines.
1618
1637
1619 2006-10-28 Ville Vainio <vivainio@gmail.com>
1638 2006-10-28 Ville Vainio <vivainio@gmail.com>
1620
1639
1621 * Magic.py (%run): Save and restore the readline history from
1640 * Magic.py (%run): Save and restore the readline history from
1622 file around %run commands to prevent side effects from
1641 file around %run commands to prevent side effects from
1623 %runned programs that might use readline (e.g. pydb).
1642 %runned programs that might use readline (e.g. pydb).
1624
1643
1625 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1644 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1626 invoking the pydb enhanced debugger.
1645 invoking the pydb enhanced debugger.
1627
1646
1628 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1647 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1629
1648
1630 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1649 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1631 call the base class method and propagate the return value to
1650 call the base class method and propagate the return value to
1632 ifile. This is now done by path itself.
1651 ifile. This is now done by path itself.
1633
1652
1634 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1653 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1635
1654
1636 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1655 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1637 api: set_crash_handler(), to expose the ability to change the
1656 api: set_crash_handler(), to expose the ability to change the
1638 internal crash handler.
1657 internal crash handler.
1639
1658
1640 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1659 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1641 the various parameters of the crash handler so that apps using
1660 the various parameters of the crash handler so that apps using
1642 IPython as their engine can customize crash handling. Ipmlemented
1661 IPython as their engine can customize crash handling. Ipmlemented
1643 at the request of SAGE.
1662 at the request of SAGE.
1644
1663
1645 2006-10-14 Ville Vainio <vivainio@gmail.com>
1664 2006-10-14 Ville Vainio <vivainio@gmail.com>
1646
1665
1647 * Magic.py, ipython.el: applied first "safe" part of Rocky
1666 * Magic.py, ipython.el: applied first "safe" part of Rocky
1648 Bernstein's patch set for pydb integration.
1667 Bernstein's patch set for pydb integration.
1649
1668
1650 * Magic.py (%unalias, %alias): %store'd aliases can now be
1669 * Magic.py (%unalias, %alias): %store'd aliases can now be
1651 removed with '%unalias'. %alias w/o args now shows most
1670 removed with '%unalias'. %alias w/o args now shows most
1652 interesting (stored / manually defined) aliases last
1671 interesting (stored / manually defined) aliases last
1653 where they catch the eye w/o scrolling.
1672 where they catch the eye w/o scrolling.
1654
1673
1655 * Magic.py (%rehashx), ext_rehashdir.py: files with
1674 * Magic.py (%rehashx), ext_rehashdir.py: files with
1656 'py' extension are always considered executable, even
1675 'py' extension are always considered executable, even
1657 when not in PATHEXT environment variable.
1676 when not in PATHEXT environment variable.
1658
1677
1659 2006-10-12 Ville Vainio <vivainio@gmail.com>
1678 2006-10-12 Ville Vainio <vivainio@gmail.com>
1660
1679
1661 * jobctrl.py: Add new "jobctrl" extension for spawning background
1680 * jobctrl.py: Add new "jobctrl" extension for spawning background
1662 processes with "&find /". 'import jobctrl' to try it out. Requires
1681 processes with "&find /". 'import jobctrl' to try it out. Requires
1663 'subprocess' module, standard in python 2.4+.
1682 'subprocess' module, standard in python 2.4+.
1664
1683
1665 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1684 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1666 so if foo -> bar and bar -> baz, then foo -> baz.
1685 so if foo -> bar and bar -> baz, then foo -> baz.
1667
1686
1668 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1687 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1669
1688
1670 * IPython/Magic.py (Magic.parse_options): add a new posix option
1689 * IPython/Magic.py (Magic.parse_options): add a new posix option
1671 to allow parsing of input args in magics that doesn't strip quotes
1690 to allow parsing of input args in magics that doesn't strip quotes
1672 (if posix=False). This also closes %timeit bug reported by
1691 (if posix=False). This also closes %timeit bug reported by
1673 Stefan.
1692 Stefan.
1674
1693
1675 2006-10-03 Ville Vainio <vivainio@gmail.com>
1694 2006-10-03 Ville Vainio <vivainio@gmail.com>
1676
1695
1677 * iplib.py (raw_input, interact): Return ValueError catching for
1696 * iplib.py (raw_input, interact): Return ValueError catching for
1678 raw_input. Fixes infinite loop for sys.stdin.close() or
1697 raw_input. Fixes infinite loop for sys.stdin.close() or
1679 sys.stdout.close().
1698 sys.stdout.close().
1680
1699
1681 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1700 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1682
1701
1683 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1702 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1684 to help in handling doctests. irunner is now pretty useful for
1703 to help in handling doctests. irunner is now pretty useful for
1685 running standalone scripts and simulate a full interactive session
1704 running standalone scripts and simulate a full interactive session
1686 in a format that can be then pasted as a doctest.
1705 in a format that can be then pasted as a doctest.
1687
1706
1688 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1707 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1689 on top of the default (useless) ones. This also fixes the nasty
1708 on top of the default (useless) ones. This also fixes the nasty
1690 way in which 2.5's Quitter() exits (reverted [1785]).
1709 way in which 2.5's Quitter() exits (reverted [1785]).
1691
1710
1692 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1711 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1693 2.5.
1712 2.5.
1694
1713
1695 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1714 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1696 color scheme is updated as well when color scheme is changed
1715 color scheme is updated as well when color scheme is changed
1697 interactively.
1716 interactively.
1698
1717
1699 2006-09-27 Ville Vainio <vivainio@gmail.com>
1718 2006-09-27 Ville Vainio <vivainio@gmail.com>
1700
1719
1701 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1720 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1702 infinite loop and just exit. It's a hack, but will do for a while.
1721 infinite loop and just exit. It's a hack, but will do for a while.
1703
1722
1704 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1723 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1705
1724
1706 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1725 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1707 the constructor, this makes it possible to get a list of only directories
1726 the constructor, this makes it possible to get a list of only directories
1708 or only files.
1727 or only files.
1709
1728
1710 2006-08-12 Ville Vainio <vivainio@gmail.com>
1729 2006-08-12 Ville Vainio <vivainio@gmail.com>
1711
1730
1712 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1731 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1713 they broke unittest
1732 they broke unittest
1714
1733
1715 2006-08-11 Ville Vainio <vivainio@gmail.com>
1734 2006-08-11 Ville Vainio <vivainio@gmail.com>
1716
1735
1717 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1736 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1718 by resolving issue properly, i.e. by inheriting FakeModule
1737 by resolving issue properly, i.e. by inheriting FakeModule
1719 from types.ModuleType. Pickling ipython interactive data
1738 from types.ModuleType. Pickling ipython interactive data
1720 should still work as usual (testing appreciated).
1739 should still work as usual (testing appreciated).
1721
1740
1722 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1741 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1723
1742
1724 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1743 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1725 running under python 2.3 with code from 2.4 to fix a bug with
1744 running under python 2.3 with code from 2.4 to fix a bug with
1726 help(). Reported by the Debian maintainers, Norbert Tretkowski
1745 help(). Reported by the Debian maintainers, Norbert Tretkowski
1727 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1746 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1728 <afayolle-AT-debian.org>.
1747 <afayolle-AT-debian.org>.
1729
1748
1730 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1749 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1731
1750
1732 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1751 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1733 (which was displaying "quit" twice).
1752 (which was displaying "quit" twice).
1734
1753
1735 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1754 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1736
1755
1737 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1756 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1738 the mode argument).
1757 the mode argument).
1739
1758
1740 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1759 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1741
1760
1742 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1761 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1743 not running under IPython.
1762 not running under IPython.
1744
1763
1745 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1764 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1746 and make it iterable (iterating over the attribute itself). Add two new
1765 and make it iterable (iterating over the attribute itself). Add two new
1747 magic strings for __xattrs__(): If the string starts with "-", the attribute
1766 magic strings for __xattrs__(): If the string starts with "-", the attribute
1748 will not be displayed in ibrowse's detail view (but it can still be
1767 will not be displayed in ibrowse's detail view (but it can still be
1749 iterated over). This makes it possible to add attributes that are large
1768 iterated over). This makes it possible to add attributes that are large
1750 lists or generator methods to the detail view. Replace magic attribute names
1769 lists or generator methods to the detail view. Replace magic attribute names
1751 and _attrname() and _getattr() with "descriptors": For each type of magic
1770 and _attrname() and _getattr() with "descriptors": For each type of magic
1752 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1771 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1753 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1772 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1754 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1773 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1755 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1774 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1756 are still supported.
1775 are still supported.
1757
1776
1758 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1777 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1759 fails in ibrowse.fetch(), the exception object is added as the last item
1778 fails in ibrowse.fetch(), the exception object is added as the last item
1760 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1779 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1761 a generator throws an exception midway through execution.
1780 a generator throws an exception midway through execution.
1762
1781
1763 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1782 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1764 encoding into methods.
1783 encoding into methods.
1765
1784
1766 2006-07-26 Ville Vainio <vivainio@gmail.com>
1785 2006-07-26 Ville Vainio <vivainio@gmail.com>
1767
1786
1768 * iplib.py: history now stores multiline input as single
1787 * iplib.py: history now stores multiline input as single
1769 history entries. Patch by Jorgen Cederlof.
1788 history entries. Patch by Jorgen Cederlof.
1770
1789
1771 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1790 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1772
1791
1773 * IPython/Extensions/ibrowse.py: Make cursor visible over
1792 * IPython/Extensions/ibrowse.py: Make cursor visible over
1774 non existing attributes.
1793 non existing attributes.
1775
1794
1776 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1795 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1777
1796
1778 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1797 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1779 error output of the running command doesn't mess up the screen.
1798 error output of the running command doesn't mess up the screen.
1780
1799
1781 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1800 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1782
1801
1783 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1802 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1784 argument. This sorts the items themselves.
1803 argument. This sorts the items themselves.
1785
1804
1786 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1805 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1787
1806
1788 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1807 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1789 Compile expression strings into code objects. This should speed
1808 Compile expression strings into code objects. This should speed
1790 up ifilter and friends somewhat.
1809 up ifilter and friends somewhat.
1791
1810
1792 2006-07-08 Ville Vainio <vivainio@gmail.com>
1811 2006-07-08 Ville Vainio <vivainio@gmail.com>
1793
1812
1794 * Magic.py: %cpaste now strips > from the beginning of lines
1813 * Magic.py: %cpaste now strips > from the beginning of lines
1795 to ease pasting quoted code from emails. Contributed by
1814 to ease pasting quoted code from emails. Contributed by
1796 Stefan van der Walt.
1815 Stefan van der Walt.
1797
1816
1798 2006-06-29 Ville Vainio <vivainio@gmail.com>
1817 2006-06-29 Ville Vainio <vivainio@gmail.com>
1799
1818
1800 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1819 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1801 mode, patch contributed by Darren Dale. NEEDS TESTING!
1820 mode, patch contributed by Darren Dale. NEEDS TESTING!
1802
1821
1803 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1822 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1804
1823
1805 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1824 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1806 a blue background. Fix fetching new display rows when the browser
1825 a blue background. Fix fetching new display rows when the browser
1807 scrolls more than a screenful (e.g. by using the goto command).
1826 scrolls more than a screenful (e.g. by using the goto command).
1808
1827
1809 2006-06-27 Ville Vainio <vivainio@gmail.com>
1828 2006-06-27 Ville Vainio <vivainio@gmail.com>
1810
1829
1811 * Magic.py (_inspect, _ofind) Apply David Huard's
1830 * Magic.py (_inspect, _ofind) Apply David Huard's
1812 patch for displaying the correct docstring for 'property'
1831 patch for displaying the correct docstring for 'property'
1813 attributes.
1832 attributes.
1814
1833
1815 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1834 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1816
1835
1817 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1836 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1818 commands into the methods implementing them.
1837 commands into the methods implementing them.
1819
1838
1820 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1839 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1821
1840
1822 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1841 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1823 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1842 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1824 autoindent support was authored by Jin Liu.
1843 autoindent support was authored by Jin Liu.
1825
1844
1826 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1845 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1827
1846
1828 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1847 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1829 for keymaps with a custom class that simplifies handling.
1848 for keymaps with a custom class that simplifies handling.
1830
1849
1831 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1850 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1832
1851
1833 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1852 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1834 resizing. This requires Python 2.5 to work.
1853 resizing. This requires Python 2.5 to work.
1835
1854
1836 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1855 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1837
1856
1838 * IPython/Extensions/ibrowse.py: Add two new commands to
1857 * IPython/Extensions/ibrowse.py: Add two new commands to
1839 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1858 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1840 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1859 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1841 attributes again. Remapped the help command to "?". Display
1860 attributes again. Remapped the help command to "?". Display
1842 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1861 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1843 as keys for the "home" and "end" commands. Add three new commands
1862 as keys for the "home" and "end" commands. Add three new commands
1844 to the input mode for "find" and friends: "delend" (CTRL-K)
1863 to the input mode for "find" and friends: "delend" (CTRL-K)
1845 deletes to the end of line. "incsearchup" searches upwards in the
1864 deletes to the end of line. "incsearchup" searches upwards in the
1846 command history for an input that starts with the text before the cursor.
1865 command history for an input that starts with the text before the cursor.
1847 "incsearchdown" does the same downwards. Removed a bogus mapping of
1866 "incsearchdown" does the same downwards. Removed a bogus mapping of
1848 the x key to "delete".
1867 the x key to "delete".
1849
1868
1850 2006-06-15 Ville Vainio <vivainio@gmail.com>
1869 2006-06-15 Ville Vainio <vivainio@gmail.com>
1851
1870
1852 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1871 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1853 used to create prompts dynamically, instead of the "old" way of
1872 used to create prompts dynamically, instead of the "old" way of
1854 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1873 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1855 way still works (it's invoked by the default hook), of course.
1874 way still works (it's invoked by the default hook), of course.
1856
1875
1857 * Prompts.py: added generate_output_prompt hook for altering output
1876 * Prompts.py: added generate_output_prompt hook for altering output
1858 prompt
1877 prompt
1859
1878
1860 * Release.py: Changed version string to 0.7.3.svn.
1879 * Release.py: Changed version string to 0.7.3.svn.
1861
1880
1862 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1881 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1863
1882
1864 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1883 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1865 the call to fetch() always tries to fetch enough data for at least one
1884 the call to fetch() always tries to fetch enough data for at least one
1866 full screen. This makes it possible to simply call moveto(0,0,True) in
1885 full screen. This makes it possible to simply call moveto(0,0,True) in
1867 the constructor. Fix typos and removed the obsolete goto attribute.
1886 the constructor. Fix typos and removed the obsolete goto attribute.
1868
1887
1869 2006-06-12 Ville Vainio <vivainio@gmail.com>
1888 2006-06-12 Ville Vainio <vivainio@gmail.com>
1870
1889
1871 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1890 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1872 allowing $variable interpolation within multiline statements,
1891 allowing $variable interpolation within multiline statements,
1873 though so far only with "sh" profile for a testing period.
1892 though so far only with "sh" profile for a testing period.
1874 The patch also enables splitting long commands with \ but it
1893 The patch also enables splitting long commands with \ but it
1875 doesn't work properly yet.
1894 doesn't work properly yet.
1876
1895
1877 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1896 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1878
1897
1879 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1898 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1880 input history and the position of the cursor in the input history for
1899 input history and the position of the cursor in the input history for
1881 the find, findbackwards and goto command.
1900 the find, findbackwards and goto command.
1882
1901
1883 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1902 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1884
1903
1885 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1904 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1886 implements the basic functionality of browser commands that require
1905 implements the basic functionality of browser commands that require
1887 input. Reimplement the goto, find and findbackwards commands as
1906 input. Reimplement the goto, find and findbackwards commands as
1888 subclasses of _CommandInput. Add an input history and keymaps to those
1907 subclasses of _CommandInput. Add an input history and keymaps to those
1889 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1908 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1890 execute commands.
1909 execute commands.
1891
1910
1892 2006-06-07 Ville Vainio <vivainio@gmail.com>
1911 2006-06-07 Ville Vainio <vivainio@gmail.com>
1893
1912
1894 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1913 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1895 running the batch files instead of leaving the session open.
1914 running the batch files instead of leaving the session open.
1896
1915
1897 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1916 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1898
1917
1899 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1918 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1900 the original fix was incomplete. Patch submitted by W. Maier.
1919 the original fix was incomplete. Patch submitted by W. Maier.
1901
1920
1902 2006-06-07 Ville Vainio <vivainio@gmail.com>
1921 2006-06-07 Ville Vainio <vivainio@gmail.com>
1903
1922
1904 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1923 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1905 Confirmation prompts can be supressed by 'quiet' option.
1924 Confirmation prompts can be supressed by 'quiet' option.
1906 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1925 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1907
1926
1908 2006-06-06 *** Released version 0.7.2
1927 2006-06-06 *** Released version 0.7.2
1909
1928
1910 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1929 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1911
1930
1912 * IPython/Release.py (version): Made 0.7.2 final for release.
1931 * IPython/Release.py (version): Made 0.7.2 final for release.
1913 Repo tagged and release cut.
1932 Repo tagged and release cut.
1914
1933
1915 2006-06-05 Ville Vainio <vivainio@gmail.com>
1934 2006-06-05 Ville Vainio <vivainio@gmail.com>
1916
1935
1917 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1936 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1918 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1937 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1919
1938
1920 * upgrade_dir.py: try import 'path' module a bit harder
1939 * upgrade_dir.py: try import 'path' module a bit harder
1921 (for %upgrade)
1940 (for %upgrade)
1922
1941
1923 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1942 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1924
1943
1925 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1944 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1926 instead of looping 20 times.
1945 instead of looping 20 times.
1927
1946
1928 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1947 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1929 correctly at initialization time. Bug reported by Krishna Mohan
1948 correctly at initialization time. Bug reported by Krishna Mohan
1930 Gundu <gkmohan-AT-gmail.com> on the user list.
1949 Gundu <gkmohan-AT-gmail.com> on the user list.
1931
1950
1932 * IPython/Release.py (version): Mark 0.7.2 version to start
1951 * IPython/Release.py (version): Mark 0.7.2 version to start
1933 testing for release on 06/06.
1952 testing for release on 06/06.
1934
1953
1935 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1954 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1936
1955
1937 * scripts/irunner: thin script interface so users don't have to
1956 * scripts/irunner: thin script interface so users don't have to
1938 find the module and call it as an executable, since modules rarely
1957 find the module and call it as an executable, since modules rarely
1939 live in people's PATH.
1958 live in people's PATH.
1940
1959
1941 * IPython/irunner.py (InteractiveRunner.__init__): added
1960 * IPython/irunner.py (InteractiveRunner.__init__): added
1942 delaybeforesend attribute to control delays with newer versions of
1961 delaybeforesend attribute to control delays with newer versions of
1943 pexpect. Thanks to detailed help from pexpect's author, Noah
1962 pexpect. Thanks to detailed help from pexpect's author, Noah
1944 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1963 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1945 correctly (it works in NoColor mode).
1964 correctly (it works in NoColor mode).
1946
1965
1947 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1966 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1948 SAGE list, from improper log() calls.
1967 SAGE list, from improper log() calls.
1949
1968
1950 2006-05-31 Ville Vainio <vivainio@gmail.com>
1969 2006-05-31 Ville Vainio <vivainio@gmail.com>
1951
1970
1952 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1971 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1953 with args in parens to work correctly with dirs that have spaces.
1972 with args in parens to work correctly with dirs that have spaces.
1954
1973
1955 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1974 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1956
1975
1957 * IPython/Logger.py (Logger.logstart): add option to log raw input
1976 * IPython/Logger.py (Logger.logstart): add option to log raw input
1958 instead of the processed one. A -r flag was added to the
1977 instead of the processed one. A -r flag was added to the
1959 %logstart magic used for controlling logging.
1978 %logstart magic used for controlling logging.
1960
1979
1961 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1980 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1962
1981
1963 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1982 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1964 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1983 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1965 recognize the option. After a bug report by Will Maier. This
1984 recognize the option. After a bug report by Will Maier. This
1966 closes #64 (will do it after confirmation from W. Maier).
1985 closes #64 (will do it after confirmation from W. Maier).
1967
1986
1968 * IPython/irunner.py: New module to run scripts as if manually
1987 * IPython/irunner.py: New module to run scripts as if manually
1969 typed into an interactive environment, based on pexpect. After a
1988 typed into an interactive environment, based on pexpect. After a
1970 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1989 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1971 ipython-user list. Simple unittests in the tests/ directory.
1990 ipython-user list. Simple unittests in the tests/ directory.
1972
1991
1973 * tools/release: add Will Maier, OpenBSD port maintainer, to
1992 * tools/release: add Will Maier, OpenBSD port maintainer, to
1974 recepients list. We are now officially part of the OpenBSD ports:
1993 recepients list. We are now officially part of the OpenBSD ports:
1975 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1994 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1976 work.
1995 work.
1977
1996
1978 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1997 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1979
1998
1980 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1999 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1981 so that it doesn't break tkinter apps.
2000 so that it doesn't break tkinter apps.
1982
2001
1983 * IPython/iplib.py (_prefilter): fix bug where aliases would
2002 * IPython/iplib.py (_prefilter): fix bug where aliases would
1984 shadow variables when autocall was fully off. Reported by SAGE
2003 shadow variables when autocall was fully off. Reported by SAGE
1985 author William Stein.
2004 author William Stein.
1986
2005
1987 * IPython/OInspect.py (Inspector.__init__): add a flag to control
2006 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1988 at what detail level strings are computed when foo? is requested.
2007 at what detail level strings are computed when foo? is requested.
1989 This allows users to ask for example that the string form of an
2008 This allows users to ask for example that the string form of an
1990 object is only computed when foo?? is called, or even never, by
2009 object is only computed when foo?? is called, or even never, by
1991 setting the object_info_string_level >= 2 in the configuration
2010 setting the object_info_string_level >= 2 in the configuration
1992 file. This new option has been added and documented. After a
2011 file. This new option has been added and documented. After a
1993 request by SAGE to be able to control the printing of very large
2012 request by SAGE to be able to control the printing of very large
1994 objects more easily.
2013 objects more easily.
1995
2014
1996 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
2015 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1997
2016
1998 * IPython/ipmaker.py (make_IPython): remove the ipython call path
2017 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1999 from sys.argv, to be 100% consistent with how Python itself works
2018 from sys.argv, to be 100% consistent with how Python itself works
2000 (as seen for example with python -i file.py). After a bug report
2019 (as seen for example with python -i file.py). After a bug report
2001 by Jeffrey Collins.
2020 by Jeffrey Collins.
2002
2021
2003 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
2022 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
2004 nasty bug which was preventing custom namespaces with -pylab,
2023 nasty bug which was preventing custom namespaces with -pylab,
2005 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
2024 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
2006 compatibility (long gone from mpl).
2025 compatibility (long gone from mpl).
2007
2026
2008 * IPython/ipapi.py (make_session): name change: create->make. We
2027 * IPython/ipapi.py (make_session): name change: create->make. We
2009 use make in other places (ipmaker,...), it's shorter and easier to
2028 use make in other places (ipmaker,...), it's shorter and easier to
2010 type and say, etc. I'm trying to clean things before 0.7.2 so
2029 type and say, etc. I'm trying to clean things before 0.7.2 so
2011 that I can keep things stable wrt to ipapi in the chainsaw branch.
2030 that I can keep things stable wrt to ipapi in the chainsaw branch.
2012
2031
2013 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
2032 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
2014 python-mode recognizes our debugger mode. Add support for
2033 python-mode recognizes our debugger mode. Add support for
2015 autoindent inside (X)emacs. After a patch sent in by Jin Liu
2034 autoindent inside (X)emacs. After a patch sent in by Jin Liu
2016 <m.liu.jin-AT-gmail.com> originally written by
2035 <m.liu.jin-AT-gmail.com> originally written by
2017 doxgen-AT-newsmth.net (with minor modifications for xemacs
2036 doxgen-AT-newsmth.net (with minor modifications for xemacs
2018 compatibility)
2037 compatibility)
2019
2038
2020 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
2039 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
2021 tracebacks when walking the stack so that the stack tracking system
2040 tracebacks when walking the stack so that the stack tracking system
2022 in emacs' python-mode can identify the frames correctly.
2041 in emacs' python-mode can identify the frames correctly.
2023
2042
2024 * IPython/ipmaker.py (make_IPython): make the internal (and
2043 * IPython/ipmaker.py (make_IPython): make the internal (and
2025 default config) autoedit_syntax value false by default. Too many
2044 default config) autoedit_syntax value false by default. Too many
2026 users have complained to me (both on and off-list) about problems
2045 users have complained to me (both on and off-list) about problems
2027 with this option being on by default, so I'm making it default to
2046 with this option being on by default, so I'm making it default to
2028 off. It can still be enabled by anyone via the usual mechanisms.
2047 off. It can still be enabled by anyone via the usual mechanisms.
2029
2048
2030 * IPython/completer.py (Completer.attr_matches): add support for
2049 * IPython/completer.py (Completer.attr_matches): add support for
2031 PyCrust-style _getAttributeNames magic method. Patch contributed
2050 PyCrust-style _getAttributeNames magic method. Patch contributed
2032 by <mscott-AT-goldenspud.com>. Closes #50.
2051 by <mscott-AT-goldenspud.com>. Closes #50.
2033
2052
2034 * IPython/iplib.py (InteractiveShell.__init__): remove the
2053 * IPython/iplib.py (InteractiveShell.__init__): remove the
2035 deletion of exit/quit from __builtin__, which can break
2054 deletion of exit/quit from __builtin__, which can break
2036 third-party tools like the Zope debugging console. The
2055 third-party tools like the Zope debugging console. The
2037 %exit/%quit magics remain. In general, it's probably a good idea
2056 %exit/%quit magics remain. In general, it's probably a good idea
2038 not to delete anything from __builtin__, since we never know what
2057 not to delete anything from __builtin__, since we never know what
2039 that will break. In any case, python now (for 2.5) will support
2058 that will break. In any case, python now (for 2.5) will support
2040 'real' exit/quit, so this issue is moot. Closes #55.
2059 'real' exit/quit, so this issue is moot. Closes #55.
2041
2060
2042 * IPython/genutils.py (with_obj): rename the 'with' function to
2061 * IPython/genutils.py (with_obj): rename the 'with' function to
2043 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
2062 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
2044 becomes a language keyword. Closes #53.
2063 becomes a language keyword. Closes #53.
2045
2064
2046 * IPython/FakeModule.py (FakeModule.__init__): add a proper
2065 * IPython/FakeModule.py (FakeModule.__init__): add a proper
2047 __file__ attribute to this so it fools more things into thinking
2066 __file__ attribute to this so it fools more things into thinking
2048 it is a real module. Closes #59.
2067 it is a real module. Closes #59.
2049
2068
2050 * IPython/Magic.py (magic_edit): add -n option to open the editor
2069 * IPython/Magic.py (magic_edit): add -n option to open the editor
2051 at a specific line number. After a patch by Stefan van der Walt.
2070 at a specific line number. After a patch by Stefan van der Walt.
2052
2071
2053 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
2072 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
2054
2073
2055 * IPython/iplib.py (edit_syntax_error): fix crash when for some
2074 * IPython/iplib.py (edit_syntax_error): fix crash when for some
2056 reason the file could not be opened. After automatic crash
2075 reason the file could not be opened. After automatic crash
2057 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
2076 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
2058 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
2077 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
2059 (_should_recompile): Don't fire editor if using %bg, since there
2078 (_should_recompile): Don't fire editor if using %bg, since there
2060 is no file in the first place. From the same report as above.
2079 is no file in the first place. From the same report as above.
2061 (raw_input): protect against faulty third-party prefilters. After
2080 (raw_input): protect against faulty third-party prefilters. After
2062 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
2081 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
2063 while running under SAGE.
2082 while running under SAGE.
2064
2083
2065 2006-05-23 Ville Vainio <vivainio@gmail.com>
2084 2006-05-23 Ville Vainio <vivainio@gmail.com>
2066
2085
2067 * ipapi.py: Stripped down ip.to_user_ns() to work only as
2086 * ipapi.py: Stripped down ip.to_user_ns() to work only as
2068 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
2087 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
2069 now returns None (again), unless dummy is specifically allowed by
2088 now returns None (again), unless dummy is specifically allowed by
2070 ipapi.get(allow_dummy=True).
2089 ipapi.get(allow_dummy=True).
2071
2090
2072 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
2091 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
2073
2092
2074 * IPython: remove all 2.2-compatibility objects and hacks from
2093 * IPython: remove all 2.2-compatibility objects and hacks from
2075 everywhere, since we only support 2.3 at this point. Docs
2094 everywhere, since we only support 2.3 at this point. Docs
2076 updated.
2095 updated.
2077
2096
2078 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
2097 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
2079 Anything requiring extra validation can be turned into a Python
2098 Anything requiring extra validation can be turned into a Python
2080 property in the future. I used a property for the db one b/c
2099 property in the future. I used a property for the db one b/c
2081 there was a nasty circularity problem with the initialization
2100 there was a nasty circularity problem with the initialization
2082 order, which right now I don't have time to clean up.
2101 order, which right now I don't have time to clean up.
2083
2102
2084 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
2103 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
2085 another locking bug reported by Jorgen. I'm not 100% sure though,
2104 another locking bug reported by Jorgen. I'm not 100% sure though,
2086 so more testing is needed...
2105 so more testing is needed...
2087
2106
2088 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
2107 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
2089
2108
2090 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
2109 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
2091 local variables from any routine in user code (typically executed
2110 local variables from any routine in user code (typically executed
2092 with %run) directly into the interactive namespace. Very useful
2111 with %run) directly into the interactive namespace. Very useful
2093 when doing complex debugging.
2112 when doing complex debugging.
2094 (IPythonNotRunning): Changed the default None object to a dummy
2113 (IPythonNotRunning): Changed the default None object to a dummy
2095 whose attributes can be queried as well as called without
2114 whose attributes can be queried as well as called without
2096 exploding, to ease writing code which works transparently both in
2115 exploding, to ease writing code which works transparently both in
2097 and out of ipython and uses some of this API.
2116 and out of ipython and uses some of this API.
2098
2117
2099 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
2118 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
2100
2119
2101 * IPython/hooks.py (result_display): Fix the fact that our display
2120 * IPython/hooks.py (result_display): Fix the fact that our display
2102 hook was using str() instead of repr(), as the default python
2121 hook was using str() instead of repr(), as the default python
2103 console does. This had gone unnoticed b/c it only happened if
2122 console does. This had gone unnoticed b/c it only happened if
2104 %Pprint was off, but the inconsistency was there.
2123 %Pprint was off, but the inconsistency was there.
2105
2124
2106 2006-05-15 Ville Vainio <vivainio@gmail.com>
2125 2006-05-15 Ville Vainio <vivainio@gmail.com>
2107
2126
2108 * Oinspect.py: Only show docstring for nonexisting/binary files
2127 * Oinspect.py: Only show docstring for nonexisting/binary files
2109 when doing object??, closing ticket #62
2128 when doing object??, closing ticket #62
2110
2129
2111 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2130 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2112
2131
2113 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2132 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2114 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2133 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2115 was being released in a routine which hadn't checked if it had
2134 was being released in a routine which hadn't checked if it had
2116 been the one to acquire it.
2135 been the one to acquire it.
2117
2136
2118 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2137 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2119
2138
2120 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2139 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2121
2140
2122 2006-04-11 Ville Vainio <vivainio@gmail.com>
2141 2006-04-11 Ville Vainio <vivainio@gmail.com>
2123
2142
2124 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2143 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2125 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2144 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2126 prefilters, allowing stuff like magics and aliases in the file.
2145 prefilters, allowing stuff like magics and aliases in the file.
2127
2146
2128 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2147 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2129 added. Supported now are "%clear in" and "%clear out" (clear input and
2148 added. Supported now are "%clear in" and "%clear out" (clear input and
2130 output history, respectively). Also fixed CachedOutput.flush to
2149 output history, respectively). Also fixed CachedOutput.flush to
2131 properly flush the output cache.
2150 properly flush the output cache.
2132
2151
2133 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2152 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2134 half-success (and fail explicitly).
2153 half-success (and fail explicitly).
2135
2154
2136 2006-03-28 Ville Vainio <vivainio@gmail.com>
2155 2006-03-28 Ville Vainio <vivainio@gmail.com>
2137
2156
2138 * iplib.py: Fix quoting of aliases so that only argless ones
2157 * iplib.py: Fix quoting of aliases so that only argless ones
2139 are quoted
2158 are quoted
2140
2159
2141 2006-03-28 Ville Vainio <vivainio@gmail.com>
2160 2006-03-28 Ville Vainio <vivainio@gmail.com>
2142
2161
2143 * iplib.py: Quote aliases with spaces in the name.
2162 * iplib.py: Quote aliases with spaces in the name.
2144 "c:\program files\blah\bin" is now legal alias target.
2163 "c:\program files\blah\bin" is now legal alias target.
2145
2164
2146 * ext_rehashdir.py: Space no longer allowed as arg
2165 * ext_rehashdir.py: Space no longer allowed as arg
2147 separator, since space is legal in path names.
2166 separator, since space is legal in path names.
2148
2167
2149 2006-03-16 Ville Vainio <vivainio@gmail.com>
2168 2006-03-16 Ville Vainio <vivainio@gmail.com>
2150
2169
2151 * upgrade_dir.py: Take path.py from Extensions, correcting
2170 * upgrade_dir.py: Take path.py from Extensions, correcting
2152 %upgrade magic
2171 %upgrade magic
2153
2172
2154 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2173 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2155
2174
2156 * hooks.py: Only enclose editor binary in quotes if legal and
2175 * hooks.py: Only enclose editor binary in quotes if legal and
2157 necessary (space in the name, and is an existing file). Fixes a bug
2176 necessary (space in the name, and is an existing file). Fixes a bug
2158 reported by Zachary Pincus.
2177 reported by Zachary Pincus.
2159
2178
2160 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2179 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2161
2180
2162 * Manual: thanks to a tip on proper color handling for Emacs, by
2181 * Manual: thanks to a tip on proper color handling for Emacs, by
2163 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2182 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2164
2183
2165 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2184 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2166 by applying the provided patch. Thanks to Liu Jin
2185 by applying the provided patch. Thanks to Liu Jin
2167 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2186 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2168 XEmacs/Linux, I'm trusting the submitter that it actually helps
2187 XEmacs/Linux, I'm trusting the submitter that it actually helps
2169 under win32/GNU Emacs. Will revisit if any problems are reported.
2188 under win32/GNU Emacs. Will revisit if any problems are reported.
2170
2189
2171 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2190 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2172
2191
2173 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2192 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2174 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2193 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2175
2194
2176 2006-03-12 Ville Vainio <vivainio@gmail.com>
2195 2006-03-12 Ville Vainio <vivainio@gmail.com>
2177
2196
2178 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2197 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2179 Torsten Marek.
2198 Torsten Marek.
2180
2199
2181 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2200 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2182
2201
2183 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2202 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2184 line ranges works again.
2203 line ranges works again.
2185
2204
2186 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2205 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2187
2206
2188 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2207 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2189 and friends, after a discussion with Zach Pincus on ipython-user.
2208 and friends, after a discussion with Zach Pincus on ipython-user.
2190 I'm not 100% sure, but after thinking about it quite a bit, it may
2209 I'm not 100% sure, but after thinking about it quite a bit, it may
2191 be OK. Testing with the multithreaded shells didn't reveal any
2210 be OK. Testing with the multithreaded shells didn't reveal any
2192 problems, but let's keep an eye out.
2211 problems, but let's keep an eye out.
2193
2212
2194 In the process, I fixed a few things which were calling
2213 In the process, I fixed a few things which were calling
2195 self.InteractiveTB() directly (like safe_execfile), which is a
2214 self.InteractiveTB() directly (like safe_execfile), which is a
2196 mistake: ALL exception reporting should be done by calling
2215 mistake: ALL exception reporting should be done by calling
2197 self.showtraceback(), which handles state and tab-completion and
2216 self.showtraceback(), which handles state and tab-completion and
2198 more.
2217 more.
2199
2218
2200 2006-03-01 Ville Vainio <vivainio@gmail.com>
2219 2006-03-01 Ville Vainio <vivainio@gmail.com>
2201
2220
2202 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2221 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2203 To use, do "from ipipe import *".
2222 To use, do "from ipipe import *".
2204
2223
2205 2006-02-24 Ville Vainio <vivainio@gmail.com>
2224 2006-02-24 Ville Vainio <vivainio@gmail.com>
2206
2225
2207 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2226 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2208 "cleanly" and safely than the older upgrade mechanism.
2227 "cleanly" and safely than the older upgrade mechanism.
2209
2228
2210 2006-02-21 Ville Vainio <vivainio@gmail.com>
2229 2006-02-21 Ville Vainio <vivainio@gmail.com>
2211
2230
2212 * Magic.py: %save works again.
2231 * Magic.py: %save works again.
2213
2232
2214 2006-02-15 Ville Vainio <vivainio@gmail.com>
2233 2006-02-15 Ville Vainio <vivainio@gmail.com>
2215
2234
2216 * Magic.py: %Pprint works again
2235 * Magic.py: %Pprint works again
2217
2236
2218 * Extensions/ipy_sane_defaults.py: Provide everything provided
2237 * Extensions/ipy_sane_defaults.py: Provide everything provided
2219 in default ipythonrc, to make it possible to have a completely empty
2238 in default ipythonrc, to make it possible to have a completely empty
2220 ipythonrc (and thus completely rc-file free configuration)
2239 ipythonrc (and thus completely rc-file free configuration)
2221
2240
2222 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2241 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2223
2242
2224 * IPython/hooks.py (editor): quote the call to the editor command,
2243 * IPython/hooks.py (editor): quote the call to the editor command,
2225 to allow commands with spaces in them. Problem noted by watching
2244 to allow commands with spaces in them. Problem noted by watching
2226 Ian Oswald's video about textpad under win32 at
2245 Ian Oswald's video about textpad under win32 at
2227 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2246 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2228
2247
2229 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2248 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2230 describing magics (we haven't used @ for a loong time).
2249 describing magics (we haven't used @ for a loong time).
2231
2250
2232 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2251 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2233 contributed by marienz to close
2252 contributed by marienz to close
2234 http://www.scipy.net/roundup/ipython/issue53.
2253 http://www.scipy.net/roundup/ipython/issue53.
2235
2254
2236 2006-02-10 Ville Vainio <vivainio@gmail.com>
2255 2006-02-10 Ville Vainio <vivainio@gmail.com>
2237
2256
2238 * genutils.py: getoutput now works in win32 too
2257 * genutils.py: getoutput now works in win32 too
2239
2258
2240 * completer.py: alias and magic completion only invoked
2259 * completer.py: alias and magic completion only invoked
2241 at the first "item" in the line, to avoid "cd %store"
2260 at the first "item" in the line, to avoid "cd %store"
2242 nonsense.
2261 nonsense.
2243
2262
2244 2006-02-09 Ville Vainio <vivainio@gmail.com>
2263 2006-02-09 Ville Vainio <vivainio@gmail.com>
2245
2264
2246 * test/*: Added a unit testing framework (finally).
2265 * test/*: Added a unit testing framework (finally).
2247 '%run runtests.py' to run test_*.
2266 '%run runtests.py' to run test_*.
2248
2267
2249 * ipapi.py: Exposed runlines and set_custom_exc
2268 * ipapi.py: Exposed runlines and set_custom_exc
2250
2269
2251 2006-02-07 Ville Vainio <vivainio@gmail.com>
2270 2006-02-07 Ville Vainio <vivainio@gmail.com>
2252
2271
2253 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2272 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2254 instead use "f(1 2)" as before.
2273 instead use "f(1 2)" as before.
2255
2274
2256 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2275 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2257
2276
2258 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2277 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2259 facilities, for demos processed by the IPython input filter
2278 facilities, for demos processed by the IPython input filter
2260 (IPythonDemo), and for running a script one-line-at-a-time as a
2279 (IPythonDemo), and for running a script one-line-at-a-time as a
2261 demo, both for pure Python (LineDemo) and for IPython-processed
2280 demo, both for pure Python (LineDemo) and for IPython-processed
2262 input (IPythonLineDemo). After a request by Dave Kohel, from the
2281 input (IPythonLineDemo). After a request by Dave Kohel, from the
2263 SAGE team.
2282 SAGE team.
2264 (Demo.edit): added an edit() method to the demo objects, to edit
2283 (Demo.edit): added an edit() method to the demo objects, to edit
2265 the in-memory copy of the last executed block.
2284 the in-memory copy of the last executed block.
2266
2285
2267 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2286 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2268 processing to %edit, %macro and %save. These commands can now be
2287 processing to %edit, %macro and %save. These commands can now be
2269 invoked on the unprocessed input as it was typed by the user
2288 invoked on the unprocessed input as it was typed by the user
2270 (without any prefilters applied). After requests by the SAGE team
2289 (without any prefilters applied). After requests by the SAGE team
2271 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2290 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2272
2291
2273 2006-02-01 Ville Vainio <vivainio@gmail.com>
2292 2006-02-01 Ville Vainio <vivainio@gmail.com>
2274
2293
2275 * setup.py, eggsetup.py: easy_install ipython==dev works
2294 * setup.py, eggsetup.py: easy_install ipython==dev works
2276 correctly now (on Linux)
2295 correctly now (on Linux)
2277
2296
2278 * ipy_user_conf,ipmaker: user config changes, removed spurious
2297 * ipy_user_conf,ipmaker: user config changes, removed spurious
2279 warnings
2298 warnings
2280
2299
2281 * iplib: if rc.banner is string, use it as is.
2300 * iplib: if rc.banner is string, use it as is.
2282
2301
2283 * Magic: %pycat accepts a string argument and pages it's contents.
2302 * Magic: %pycat accepts a string argument and pages it's contents.
2284
2303
2285
2304
2286 2006-01-30 Ville Vainio <vivainio@gmail.com>
2305 2006-01-30 Ville Vainio <vivainio@gmail.com>
2287
2306
2288 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2307 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2289 Now %store and bookmarks work through PickleShare, meaning that
2308 Now %store and bookmarks work through PickleShare, meaning that
2290 concurrent access is possible and all ipython sessions see the
2309 concurrent access is possible and all ipython sessions see the
2291 same database situation all the time, instead of snapshot of
2310 same database situation all the time, instead of snapshot of
2292 the situation when the session was started. Hence, %bookmark
2311 the situation when the session was started. Hence, %bookmark
2293 results are immediately accessible from othes sessions. The database
2312 results are immediately accessible from othes sessions. The database
2294 is also available for use by user extensions. See:
2313 is also available for use by user extensions. See:
2295 http://www.python.org/pypi/pickleshare
2314 http://www.python.org/pypi/pickleshare
2296
2315
2297 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2316 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2298
2317
2299 * aliases can now be %store'd
2318 * aliases can now be %store'd
2300
2319
2301 * path.py moved to Extensions so that pickleshare does not need
2320 * path.py moved to Extensions so that pickleshare does not need
2302 IPython-specific import. Extensions added to pythonpath right
2321 IPython-specific import. Extensions added to pythonpath right
2303 at __init__.
2322 at __init__.
2304
2323
2305 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2324 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2306 called with _ip.system and the pre-transformed command string.
2325 called with _ip.system and the pre-transformed command string.
2307
2326
2308 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2327 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2309
2328
2310 * IPython/iplib.py (interact): Fix that we were not catching
2329 * IPython/iplib.py (interact): Fix that we were not catching
2311 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2330 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2312 logic here had to change, but it's fixed now.
2331 logic here had to change, but it's fixed now.
2313
2332
2314 2006-01-29 Ville Vainio <vivainio@gmail.com>
2333 2006-01-29 Ville Vainio <vivainio@gmail.com>
2315
2334
2316 * iplib.py: Try to import pyreadline on Windows.
2335 * iplib.py: Try to import pyreadline on Windows.
2317
2336
2318 2006-01-27 Ville Vainio <vivainio@gmail.com>
2337 2006-01-27 Ville Vainio <vivainio@gmail.com>
2319
2338
2320 * iplib.py: Expose ipapi as _ip in builtin namespace.
2339 * iplib.py: Expose ipapi as _ip in builtin namespace.
2321 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2340 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2322 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2341 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2323 syntax now produce _ip.* variant of the commands.
2342 syntax now produce _ip.* variant of the commands.
2324
2343
2325 * "_ip.options().autoedit_syntax = 2" automatically throws
2344 * "_ip.options().autoedit_syntax = 2" automatically throws
2326 user to editor for syntax error correction without prompting.
2345 user to editor for syntax error correction without prompting.
2327
2346
2328 2006-01-27 Ville Vainio <vivainio@gmail.com>
2347 2006-01-27 Ville Vainio <vivainio@gmail.com>
2329
2348
2330 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2349 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2331 'ipython' at argv[0]) executed through command line.
2350 'ipython' at argv[0]) executed through command line.
2332 NOTE: this DEPRECATES calling ipython with multiple scripts
2351 NOTE: this DEPRECATES calling ipython with multiple scripts
2333 ("ipython a.py b.py c.py")
2352 ("ipython a.py b.py c.py")
2334
2353
2335 * iplib.py, hooks.py: Added configurable input prefilter,
2354 * iplib.py, hooks.py: Added configurable input prefilter,
2336 named 'input_prefilter'. See ext_rescapture.py for example
2355 named 'input_prefilter'. See ext_rescapture.py for example
2337 usage.
2356 usage.
2338
2357
2339 * ext_rescapture.py, Magic.py: Better system command output capture
2358 * ext_rescapture.py, Magic.py: Better system command output capture
2340 through 'var = !ls' (deprecates user-visible %sc). Same notation
2359 through 'var = !ls' (deprecates user-visible %sc). Same notation
2341 applies for magics, 'var = %alias' assigns alias list to var.
2360 applies for magics, 'var = %alias' assigns alias list to var.
2342
2361
2343 * ipapi.py: added meta() for accessing extension-usable data store.
2362 * ipapi.py: added meta() for accessing extension-usable data store.
2344
2363
2345 * iplib.py: added InteractiveShell.getapi(). New magics should be
2364 * iplib.py: added InteractiveShell.getapi(). New magics should be
2346 written doing self.getapi() instead of using the shell directly.
2365 written doing self.getapi() instead of using the shell directly.
2347
2366
2348 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2367 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2349 %store foo >> ~/myfoo.txt to store variables to files (in clean
2368 %store foo >> ~/myfoo.txt to store variables to files (in clean
2350 textual form, not a restorable pickle).
2369 textual form, not a restorable pickle).
2351
2370
2352 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2371 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2353
2372
2354 * usage.py, Magic.py: added %quickref
2373 * usage.py, Magic.py: added %quickref
2355
2374
2356 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2375 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2357
2376
2358 * GetoptErrors when invoking magics etc. with wrong args
2377 * GetoptErrors when invoking magics etc. with wrong args
2359 are now more helpful:
2378 are now more helpful:
2360 GetoptError: option -l not recognized (allowed: "qb" )
2379 GetoptError: option -l not recognized (allowed: "qb" )
2361
2380
2362 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2381 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2363
2382
2364 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2383 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2365 computationally intensive blocks don't appear to stall the demo.
2384 computationally intensive blocks don't appear to stall the demo.
2366
2385
2367 2006-01-24 Ville Vainio <vivainio@gmail.com>
2386 2006-01-24 Ville Vainio <vivainio@gmail.com>
2368
2387
2369 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2388 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2370 value to manipulate resulting history entry.
2389 value to manipulate resulting history entry.
2371
2390
2372 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2391 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2373 to instance methods of IPApi class, to make extending an embedded
2392 to instance methods of IPApi class, to make extending an embedded
2374 IPython feasible. See ext_rehashdir.py for example usage.
2393 IPython feasible. See ext_rehashdir.py for example usage.
2375
2394
2376 * Merged 1071-1076 from branches/0.7.1
2395 * Merged 1071-1076 from branches/0.7.1
2377
2396
2378
2397
2379 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2398 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2380
2399
2381 * tools/release (daystamp): Fix build tools to use the new
2400 * tools/release (daystamp): Fix build tools to use the new
2382 eggsetup.py script to build lightweight eggs.
2401 eggsetup.py script to build lightweight eggs.
2383
2402
2384 * Applied changesets 1062 and 1064 before 0.7.1 release.
2403 * Applied changesets 1062 and 1064 before 0.7.1 release.
2385
2404
2386 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2405 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2387 see the raw input history (without conversions like %ls ->
2406 see the raw input history (without conversions like %ls ->
2388 ipmagic("ls")). After a request from W. Stein, SAGE
2407 ipmagic("ls")). After a request from W. Stein, SAGE
2389 (http://modular.ucsd.edu/sage) developer. This information is
2408 (http://modular.ucsd.edu/sage) developer. This information is
2390 stored in the input_hist_raw attribute of the IPython instance, so
2409 stored in the input_hist_raw attribute of the IPython instance, so
2391 developers can access it if needed (it's an InputList instance).
2410 developers can access it if needed (it's an InputList instance).
2392
2411
2393 * Versionstring = 0.7.2.svn
2412 * Versionstring = 0.7.2.svn
2394
2413
2395 * eggsetup.py: A separate script for constructing eggs, creates
2414 * eggsetup.py: A separate script for constructing eggs, creates
2396 proper launch scripts even on Windows (an .exe file in
2415 proper launch scripts even on Windows (an .exe file in
2397 \python24\scripts).
2416 \python24\scripts).
2398
2417
2399 * ipapi.py: launch_new_instance, launch entry point needed for the
2418 * ipapi.py: launch_new_instance, launch entry point needed for the
2400 egg.
2419 egg.
2401
2420
2402 2006-01-23 Ville Vainio <vivainio@gmail.com>
2421 2006-01-23 Ville Vainio <vivainio@gmail.com>
2403
2422
2404 * Added %cpaste magic for pasting python code
2423 * Added %cpaste magic for pasting python code
2405
2424
2406 2006-01-22 Ville Vainio <vivainio@gmail.com>
2425 2006-01-22 Ville Vainio <vivainio@gmail.com>
2407
2426
2408 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2427 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2409
2428
2410 * Versionstring = 0.7.2.svn
2429 * Versionstring = 0.7.2.svn
2411
2430
2412 * eggsetup.py: A separate script for constructing eggs, creates
2431 * eggsetup.py: A separate script for constructing eggs, creates
2413 proper launch scripts even on Windows (an .exe file in
2432 proper launch scripts even on Windows (an .exe file in
2414 \python24\scripts).
2433 \python24\scripts).
2415
2434
2416 * ipapi.py: launch_new_instance, launch entry point needed for the
2435 * ipapi.py: launch_new_instance, launch entry point needed for the
2417 egg.
2436 egg.
2418
2437
2419 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2438 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2420
2439
2421 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2440 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2422 %pfile foo would print the file for foo even if it was a binary.
2441 %pfile foo would print the file for foo even if it was a binary.
2423 Now, extensions '.so' and '.dll' are skipped.
2442 Now, extensions '.so' and '.dll' are skipped.
2424
2443
2425 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2444 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2426 bug, where macros would fail in all threaded modes. I'm not 100%
2445 bug, where macros would fail in all threaded modes. I'm not 100%
2427 sure, so I'm going to put out an rc instead of making a release
2446 sure, so I'm going to put out an rc instead of making a release
2428 today, and wait for feedback for at least a few days.
2447 today, and wait for feedback for at least a few days.
2429
2448
2430 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2449 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2431 it...) the handling of pasting external code with autoindent on.
2450 it...) the handling of pasting external code with autoindent on.
2432 To get out of a multiline input, the rule will appear for most
2451 To get out of a multiline input, the rule will appear for most
2433 users unchanged: two blank lines or change the indent level
2452 users unchanged: two blank lines or change the indent level
2434 proposed by IPython. But there is a twist now: you can
2453 proposed by IPython. But there is a twist now: you can
2435 add/subtract only *one or two spaces*. If you add/subtract three
2454 add/subtract only *one or two spaces*. If you add/subtract three
2436 or more (unless you completely delete the line), IPython will
2455 or more (unless you completely delete the line), IPython will
2437 accept that line, and you'll need to enter a second one of pure
2456 accept that line, and you'll need to enter a second one of pure
2438 whitespace. I know it sounds complicated, but I can't find a
2457 whitespace. I know it sounds complicated, but I can't find a
2439 different solution that covers all the cases, with the right
2458 different solution that covers all the cases, with the right
2440 heuristics. Hopefully in actual use, nobody will really notice
2459 heuristics. Hopefully in actual use, nobody will really notice
2441 all these strange rules and things will 'just work'.
2460 all these strange rules and things will 'just work'.
2442
2461
2443 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2462 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2444
2463
2445 * IPython/iplib.py (interact): catch exceptions which can be
2464 * IPython/iplib.py (interact): catch exceptions which can be
2446 triggered asynchronously by signal handlers. Thanks to an
2465 triggered asynchronously by signal handlers. Thanks to an
2447 automatic crash report, submitted by Colin Kingsley
2466 automatic crash report, submitted by Colin Kingsley
2448 <tercel-AT-gentoo.org>.
2467 <tercel-AT-gentoo.org>.
2449
2468
2450 2006-01-20 Ville Vainio <vivainio@gmail.com>
2469 2006-01-20 Ville Vainio <vivainio@gmail.com>
2451
2470
2452 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2471 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2453 (%rehashdir, very useful, try it out) of how to extend ipython
2472 (%rehashdir, very useful, try it out) of how to extend ipython
2454 with new magics. Also added Extensions dir to pythonpath to make
2473 with new magics. Also added Extensions dir to pythonpath to make
2455 importing extensions easy.
2474 importing extensions easy.
2456
2475
2457 * %store now complains when trying to store interactively declared
2476 * %store now complains when trying to store interactively declared
2458 classes / instances of those classes.
2477 classes / instances of those classes.
2459
2478
2460 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2479 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2461 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2480 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2462 if they exist, and ipy_user_conf.py with some defaults is created for
2481 if they exist, and ipy_user_conf.py with some defaults is created for
2463 the user.
2482 the user.
2464
2483
2465 * Startup rehashing done by the config file, not InterpreterExec.
2484 * Startup rehashing done by the config file, not InterpreterExec.
2466 This means system commands are available even without selecting the
2485 This means system commands are available even without selecting the
2467 pysh profile. It's the sensible default after all.
2486 pysh profile. It's the sensible default after all.
2468
2487
2469 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2488 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2470
2489
2471 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2490 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2472 multiline code with autoindent on working. But I am really not
2491 multiline code with autoindent on working. But I am really not
2473 sure, so this needs more testing. Will commit a debug-enabled
2492 sure, so this needs more testing. Will commit a debug-enabled
2474 version for now, while I test it some more, so that Ville and
2493 version for now, while I test it some more, so that Ville and
2475 others may also catch any problems. Also made
2494 others may also catch any problems. Also made
2476 self.indent_current_str() a method, to ensure that there's no
2495 self.indent_current_str() a method, to ensure that there's no
2477 chance of the indent space count and the corresponding string
2496 chance of the indent space count and the corresponding string
2478 falling out of sync. All code needing the string should just call
2497 falling out of sync. All code needing the string should just call
2479 the method.
2498 the method.
2480
2499
2481 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2500 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2482
2501
2483 * IPython/Magic.py (magic_edit): fix check for when users don't
2502 * IPython/Magic.py (magic_edit): fix check for when users don't
2484 save their output files, the try/except was in the wrong section.
2503 save their output files, the try/except was in the wrong section.
2485
2504
2486 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2505 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2487
2506
2488 * IPython/Magic.py (magic_run): fix __file__ global missing from
2507 * IPython/Magic.py (magic_run): fix __file__ global missing from
2489 script's namespace when executed via %run. After a report by
2508 script's namespace when executed via %run. After a report by
2490 Vivian.
2509 Vivian.
2491
2510
2492 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2511 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2493 when using python 2.4. The parent constructor changed in 2.4, and
2512 when using python 2.4. The parent constructor changed in 2.4, and
2494 we need to track it directly (we can't call it, as it messes up
2513 we need to track it directly (we can't call it, as it messes up
2495 readline and tab-completion inside our pdb would stop working).
2514 readline and tab-completion inside our pdb would stop working).
2496 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2515 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2497
2516
2498 2006-01-16 Ville Vainio <vivainio@gmail.com>
2517 2006-01-16 Ville Vainio <vivainio@gmail.com>
2499
2518
2500 * Ipython/magic.py: Reverted back to old %edit functionality
2519 * Ipython/magic.py: Reverted back to old %edit functionality
2501 that returns file contents on exit.
2520 that returns file contents on exit.
2502
2521
2503 * IPython/path.py: Added Jason Orendorff's "path" module to
2522 * IPython/path.py: Added Jason Orendorff's "path" module to
2504 IPython tree, http://www.jorendorff.com/articles/python/path/.
2523 IPython tree, http://www.jorendorff.com/articles/python/path/.
2505 You can get path objects conveniently through %sc, and !!, e.g.:
2524 You can get path objects conveniently through %sc, and !!, e.g.:
2506 sc files=ls
2525 sc files=ls
2507 for p in files.paths: # or files.p
2526 for p in files.paths: # or files.p
2508 print p,p.mtime
2527 print p,p.mtime
2509
2528
2510 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2529 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2511 now work again without considering the exclusion regexp -
2530 now work again without considering the exclusion regexp -
2512 hence, things like ',foo my/path' turn to 'foo("my/path")'
2531 hence, things like ',foo my/path' turn to 'foo("my/path")'
2513 instead of syntax error.
2532 instead of syntax error.
2514
2533
2515
2534
2516 2006-01-14 Ville Vainio <vivainio@gmail.com>
2535 2006-01-14 Ville Vainio <vivainio@gmail.com>
2517
2536
2518 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2537 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2519 ipapi decorators for python 2.4 users, options() provides access to rc
2538 ipapi decorators for python 2.4 users, options() provides access to rc
2520 data.
2539 data.
2521
2540
2522 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2541 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2523 as path separators (even on Linux ;-). Space character after
2542 as path separators (even on Linux ;-). Space character after
2524 backslash (as yielded by tab completer) is still space;
2543 backslash (as yielded by tab completer) is still space;
2525 "%cd long\ name" works as expected.
2544 "%cd long\ name" works as expected.
2526
2545
2527 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2546 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2528 as "chain of command", with priority. API stays the same,
2547 as "chain of command", with priority. API stays the same,
2529 TryNext exception raised by a hook function signals that
2548 TryNext exception raised by a hook function signals that
2530 current hook failed and next hook should try handling it, as
2549 current hook failed and next hook should try handling it, as
2531 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2550 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2532 requested configurable display hook, which is now implemented.
2551 requested configurable display hook, which is now implemented.
2533
2552
2534 2006-01-13 Ville Vainio <vivainio@gmail.com>
2553 2006-01-13 Ville Vainio <vivainio@gmail.com>
2535
2554
2536 * IPython/platutils*.py: platform specific utility functions,
2555 * IPython/platutils*.py: platform specific utility functions,
2537 so far only set_term_title is implemented (change terminal
2556 so far only set_term_title is implemented (change terminal
2538 label in windowing systems). %cd now changes the title to
2557 label in windowing systems). %cd now changes the title to
2539 current dir.
2558 current dir.
2540
2559
2541 * IPython/Release.py: Added myself to "authors" list,
2560 * IPython/Release.py: Added myself to "authors" list,
2542 had to create new files.
2561 had to create new files.
2543
2562
2544 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2563 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2545 shell escape; not a known bug but had potential to be one in the
2564 shell escape; not a known bug but had potential to be one in the
2546 future.
2565 future.
2547
2566
2548 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2567 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2549 extension API for IPython! See the module for usage example. Fix
2568 extension API for IPython! See the module for usage example. Fix
2550 OInspect for docstring-less magic functions.
2569 OInspect for docstring-less magic functions.
2551
2570
2552
2571
2553 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2572 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2554
2573
2555 * IPython/iplib.py (raw_input): temporarily deactivate all
2574 * IPython/iplib.py (raw_input): temporarily deactivate all
2556 attempts at allowing pasting of code with autoindent on. It
2575 attempts at allowing pasting of code with autoindent on. It
2557 introduced bugs (reported by Prabhu) and I can't seem to find a
2576 introduced bugs (reported by Prabhu) and I can't seem to find a
2558 robust combination which works in all cases. Will have to revisit
2577 robust combination which works in all cases. Will have to revisit
2559 later.
2578 later.
2560
2579
2561 * IPython/genutils.py: remove isspace() function. We've dropped
2580 * IPython/genutils.py: remove isspace() function. We've dropped
2562 2.2 compatibility, so it's OK to use the string method.
2581 2.2 compatibility, so it's OK to use the string method.
2563
2582
2564 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2583 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2565
2584
2566 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2585 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2567 matching what NOT to autocall on, to include all python binary
2586 matching what NOT to autocall on, to include all python binary
2568 operators (including things like 'and', 'or', 'is' and 'in').
2587 operators (including things like 'and', 'or', 'is' and 'in').
2569 Prompted by a bug report on 'foo & bar', but I realized we had
2588 Prompted by a bug report on 'foo & bar', but I realized we had
2570 many more potential bug cases with other operators. The regexp is
2589 many more potential bug cases with other operators. The regexp is
2571 self.re_exclude_auto, it's fairly commented.
2590 self.re_exclude_auto, it's fairly commented.
2572
2591
2573 2006-01-12 Ville Vainio <vivainio@gmail.com>
2592 2006-01-12 Ville Vainio <vivainio@gmail.com>
2574
2593
2575 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2594 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2576 Prettified and hardened string/backslash quoting with ipsystem(),
2595 Prettified and hardened string/backslash quoting with ipsystem(),
2577 ipalias() and ipmagic(). Now even \ characters are passed to
2596 ipalias() and ipmagic(). Now even \ characters are passed to
2578 %magics, !shell escapes and aliases exactly as they are in the
2597 %magics, !shell escapes and aliases exactly as they are in the
2579 ipython command line. Should improve backslash experience,
2598 ipython command line. Should improve backslash experience,
2580 particularly in Windows (path delimiter for some commands that
2599 particularly in Windows (path delimiter for some commands that
2581 won't understand '/'), but Unix benefits as well (regexps). %cd
2600 won't understand '/'), but Unix benefits as well (regexps). %cd
2582 magic still doesn't support backslash path delimiters, though. Also
2601 magic still doesn't support backslash path delimiters, though. Also
2583 deleted all pretense of supporting multiline command strings in
2602 deleted all pretense of supporting multiline command strings in
2584 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2603 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2585
2604
2586 * doc/build_doc_instructions.txt added. Documentation on how to
2605 * doc/build_doc_instructions.txt added. Documentation on how to
2587 use doc/update_manual.py, added yesterday. Both files contributed
2606 use doc/update_manual.py, added yesterday. Both files contributed
2588 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2607 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2589 doc/*.sh for deprecation at a later date.
2608 doc/*.sh for deprecation at a later date.
2590
2609
2591 * /ipython.py Added ipython.py to root directory for
2610 * /ipython.py Added ipython.py to root directory for
2592 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2611 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2593 ipython.py) and development convenience (no need to keep doing
2612 ipython.py) and development convenience (no need to keep doing
2594 "setup.py install" between changes).
2613 "setup.py install" between changes).
2595
2614
2596 * Made ! and !! shell escapes work (again) in multiline expressions:
2615 * Made ! and !! shell escapes work (again) in multiline expressions:
2597 if 1:
2616 if 1:
2598 !ls
2617 !ls
2599 !!ls
2618 !!ls
2600
2619
2601 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2620 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2602
2621
2603 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2622 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2604 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2623 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2605 module in case-insensitive installation. Was causing crashes
2624 module in case-insensitive installation. Was causing crashes
2606 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2625 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2607
2626
2608 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2627 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2609 <marienz-AT-gentoo.org>, closes
2628 <marienz-AT-gentoo.org>, closes
2610 http://www.scipy.net/roundup/ipython/issue51.
2629 http://www.scipy.net/roundup/ipython/issue51.
2611
2630
2612 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2631 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2613
2632
2614 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2633 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2615 problem of excessive CPU usage under *nix and keyboard lag under
2634 problem of excessive CPU usage under *nix and keyboard lag under
2616 win32.
2635 win32.
2617
2636
2618 2006-01-10 *** Released version 0.7.0
2637 2006-01-10 *** Released version 0.7.0
2619
2638
2620 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2639 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2621
2640
2622 * IPython/Release.py (revision): tag version number to 0.7.0,
2641 * IPython/Release.py (revision): tag version number to 0.7.0,
2623 ready for release.
2642 ready for release.
2624
2643
2625 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2644 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2626 it informs the user of the name of the temp. file used. This can
2645 it informs the user of the name of the temp. file used. This can
2627 help if you decide later to reuse that same file, so you know
2646 help if you decide later to reuse that same file, so you know
2628 where to copy the info from.
2647 where to copy the info from.
2629
2648
2630 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2649 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2631
2650
2632 * setup_bdist_egg.py: little script to build an egg. Added
2651 * setup_bdist_egg.py: little script to build an egg. Added
2633 support in the release tools as well.
2652 support in the release tools as well.
2634
2653
2635 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2654 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2636
2655
2637 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2656 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2638 version selection (new -wxversion command line and ipythonrc
2657 version selection (new -wxversion command line and ipythonrc
2639 parameter). Patch contributed by Arnd Baecker
2658 parameter). Patch contributed by Arnd Baecker
2640 <arnd.baecker-AT-web.de>.
2659 <arnd.baecker-AT-web.de>.
2641
2660
2642 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2661 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2643 embedded instances, for variables defined at the interactive
2662 embedded instances, for variables defined at the interactive
2644 prompt of the embedded ipython. Reported by Arnd.
2663 prompt of the embedded ipython. Reported by Arnd.
2645
2664
2646 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2665 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2647 it can be used as a (stateful) toggle, or with a direct parameter.
2666 it can be used as a (stateful) toggle, or with a direct parameter.
2648
2667
2649 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2668 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2650 could be triggered in certain cases and cause the traceback
2669 could be triggered in certain cases and cause the traceback
2651 printer not to work.
2670 printer not to work.
2652
2671
2653 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2672 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2654
2673
2655 * IPython/iplib.py (_should_recompile): Small fix, closes
2674 * IPython/iplib.py (_should_recompile): Small fix, closes
2656 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2675 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2657
2676
2658 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2677 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2659
2678
2660 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2679 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2661 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2680 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2662 Moad for help with tracking it down.
2681 Moad for help with tracking it down.
2663
2682
2664 * IPython/iplib.py (handle_auto): fix autocall handling for
2683 * IPython/iplib.py (handle_auto): fix autocall handling for
2665 objects which support BOTH __getitem__ and __call__ (so that f [x]
2684 objects which support BOTH __getitem__ and __call__ (so that f [x]
2666 is left alone, instead of becoming f([x]) automatically).
2685 is left alone, instead of becoming f([x]) automatically).
2667
2686
2668 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2687 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2669 Ville's patch.
2688 Ville's patch.
2670
2689
2671 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2690 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2672
2691
2673 * IPython/iplib.py (handle_auto): changed autocall semantics to
2692 * IPython/iplib.py (handle_auto): changed autocall semantics to
2674 include 'smart' mode, where the autocall transformation is NOT
2693 include 'smart' mode, where the autocall transformation is NOT
2675 applied if there are no arguments on the line. This allows you to
2694 applied if there are no arguments on the line. This allows you to
2676 just type 'foo' if foo is a callable to see its internal form,
2695 just type 'foo' if foo is a callable to see its internal form,
2677 instead of having it called with no arguments (typically a
2696 instead of having it called with no arguments (typically a
2678 mistake). The old 'full' autocall still exists: for that, you
2697 mistake). The old 'full' autocall still exists: for that, you
2679 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2698 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2680
2699
2681 * IPython/completer.py (Completer.attr_matches): add
2700 * IPython/completer.py (Completer.attr_matches): add
2682 tab-completion support for Enthoughts' traits. After a report by
2701 tab-completion support for Enthoughts' traits. After a report by
2683 Arnd and a patch by Prabhu.
2702 Arnd and a patch by Prabhu.
2684
2703
2685 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2704 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2686
2705
2687 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2706 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2688 Schmolck's patch to fix inspect.getinnerframes().
2707 Schmolck's patch to fix inspect.getinnerframes().
2689
2708
2690 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2709 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2691 for embedded instances, regarding handling of namespaces and items
2710 for embedded instances, regarding handling of namespaces and items
2692 added to the __builtin__ one. Multiple embedded instances and
2711 added to the __builtin__ one. Multiple embedded instances and
2693 recursive embeddings should work better now (though I'm not sure
2712 recursive embeddings should work better now (though I'm not sure
2694 I've got all the corner cases fixed, that code is a bit of a brain
2713 I've got all the corner cases fixed, that code is a bit of a brain
2695 twister).
2714 twister).
2696
2715
2697 * IPython/Magic.py (magic_edit): added support to edit in-memory
2716 * IPython/Magic.py (magic_edit): added support to edit in-memory
2698 macros (automatically creates the necessary temp files). %edit
2717 macros (automatically creates the necessary temp files). %edit
2699 also doesn't return the file contents anymore, it's just noise.
2718 also doesn't return the file contents anymore, it's just noise.
2700
2719
2701 * IPython/completer.py (Completer.attr_matches): revert change to
2720 * IPython/completer.py (Completer.attr_matches): revert change to
2702 complete only on attributes listed in __all__. I realized it
2721 complete only on attributes listed in __all__. I realized it
2703 cripples the tab-completion system as a tool for exploring the
2722 cripples the tab-completion system as a tool for exploring the
2704 internals of unknown libraries (it renders any non-__all__
2723 internals of unknown libraries (it renders any non-__all__
2705 attribute off-limits). I got bit by this when trying to see
2724 attribute off-limits). I got bit by this when trying to see
2706 something inside the dis module.
2725 something inside the dis module.
2707
2726
2708 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2727 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2709
2728
2710 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2729 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2711 namespace for users and extension writers to hold data in. This
2730 namespace for users and extension writers to hold data in. This
2712 follows the discussion in
2731 follows the discussion in
2713 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2732 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2714
2733
2715 * IPython/completer.py (IPCompleter.complete): small patch to help
2734 * IPython/completer.py (IPCompleter.complete): small patch to help
2716 tab-completion under Emacs, after a suggestion by John Barnard
2735 tab-completion under Emacs, after a suggestion by John Barnard
2717 <barnarj-AT-ccf.org>.
2736 <barnarj-AT-ccf.org>.
2718
2737
2719 * IPython/Magic.py (Magic.extract_input_slices): added support for
2738 * IPython/Magic.py (Magic.extract_input_slices): added support for
2720 the slice notation in magics to use N-M to represent numbers N...M
2739 the slice notation in magics to use N-M to represent numbers N...M
2721 (closed endpoints). This is used by %macro and %save.
2740 (closed endpoints). This is used by %macro and %save.
2722
2741
2723 * IPython/completer.py (Completer.attr_matches): for modules which
2742 * IPython/completer.py (Completer.attr_matches): for modules which
2724 define __all__, complete only on those. After a patch by Jeffrey
2743 define __all__, complete only on those. After a patch by Jeffrey
2725 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2744 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2726 speed up this routine.
2745 speed up this routine.
2727
2746
2728 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2747 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2729 don't know if this is the end of it, but the behavior now is
2748 don't know if this is the end of it, but the behavior now is
2730 certainly much more correct. Note that coupled with macros,
2749 certainly much more correct. Note that coupled with macros,
2731 slightly surprising (at first) behavior may occur: a macro will in
2750 slightly surprising (at first) behavior may occur: a macro will in
2732 general expand to multiple lines of input, so upon exiting, the
2751 general expand to multiple lines of input, so upon exiting, the
2733 in/out counters will both be bumped by the corresponding amount
2752 in/out counters will both be bumped by the corresponding amount
2734 (as if the macro's contents had been typed interactively). Typing
2753 (as if the macro's contents had been typed interactively). Typing
2735 %hist will reveal the intermediate (silently processed) lines.
2754 %hist will reveal the intermediate (silently processed) lines.
2736
2755
2737 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2756 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2738 pickle to fail (%run was overwriting __main__ and not restoring
2757 pickle to fail (%run was overwriting __main__ and not restoring
2739 it, but pickle relies on __main__ to operate).
2758 it, but pickle relies on __main__ to operate).
2740
2759
2741 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2760 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2742 using properties, but forgot to make the main InteractiveShell
2761 using properties, but forgot to make the main InteractiveShell
2743 class a new-style class. Properties fail silently, and
2762 class a new-style class. Properties fail silently, and
2744 mysteriously, with old-style class (getters work, but
2763 mysteriously, with old-style class (getters work, but
2745 setters don't do anything).
2764 setters don't do anything).
2746
2765
2747 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2766 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2748
2767
2749 * IPython/Magic.py (magic_history): fix history reporting bug (I
2768 * IPython/Magic.py (magic_history): fix history reporting bug (I
2750 know some nasties are still there, I just can't seem to find a
2769 know some nasties are still there, I just can't seem to find a
2751 reproducible test case to track them down; the input history is
2770 reproducible test case to track them down; the input history is
2752 falling out of sync...)
2771 falling out of sync...)
2753
2772
2754 * IPython/iplib.py (handle_shell_escape): fix bug where both
2773 * IPython/iplib.py (handle_shell_escape): fix bug where both
2755 aliases and system accesses where broken for indented code (such
2774 aliases and system accesses where broken for indented code (such
2756 as loops).
2775 as loops).
2757
2776
2758 * IPython/genutils.py (shell): fix small but critical bug for
2777 * IPython/genutils.py (shell): fix small but critical bug for
2759 win32 system access.
2778 win32 system access.
2760
2779
2761 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2780 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2762
2781
2763 * IPython/iplib.py (showtraceback): remove use of the
2782 * IPython/iplib.py (showtraceback): remove use of the
2764 sys.last_{type/value/traceback} structures, which are non
2783 sys.last_{type/value/traceback} structures, which are non
2765 thread-safe.
2784 thread-safe.
2766 (_prefilter): change control flow to ensure that we NEVER
2785 (_prefilter): change control flow to ensure that we NEVER
2767 introspect objects when autocall is off. This will guarantee that
2786 introspect objects when autocall is off. This will guarantee that
2768 having an input line of the form 'x.y', where access to attribute
2787 having an input line of the form 'x.y', where access to attribute
2769 'y' has side effects, doesn't trigger the side effect TWICE. It
2788 'y' has side effects, doesn't trigger the side effect TWICE. It
2770 is important to note that, with autocall on, these side effects
2789 is important to note that, with autocall on, these side effects
2771 can still happen.
2790 can still happen.
2772 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2791 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2773 trio. IPython offers these three kinds of special calls which are
2792 trio. IPython offers these three kinds of special calls which are
2774 not python code, and it's a good thing to have their call method
2793 not python code, and it's a good thing to have their call method
2775 be accessible as pure python functions (not just special syntax at
2794 be accessible as pure python functions (not just special syntax at
2776 the command line). It gives us a better internal implementation
2795 the command line). It gives us a better internal implementation
2777 structure, as well as exposing these for user scripting more
2796 structure, as well as exposing these for user scripting more
2778 cleanly.
2797 cleanly.
2779
2798
2780 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2799 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2781 file. Now that they'll be more likely to be used with the
2800 file. Now that they'll be more likely to be used with the
2782 persistance system (%store), I want to make sure their module path
2801 persistance system (%store), I want to make sure their module path
2783 doesn't change in the future, so that we don't break things for
2802 doesn't change in the future, so that we don't break things for
2784 users' persisted data.
2803 users' persisted data.
2785
2804
2786 * IPython/iplib.py (autoindent_update): move indentation
2805 * IPython/iplib.py (autoindent_update): move indentation
2787 management into the _text_ processing loop, not the keyboard
2806 management into the _text_ processing loop, not the keyboard
2788 interactive one. This is necessary to correctly process non-typed
2807 interactive one. This is necessary to correctly process non-typed
2789 multiline input (such as macros).
2808 multiline input (such as macros).
2790
2809
2791 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2810 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2792 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2811 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2793 which was producing problems in the resulting manual.
2812 which was producing problems in the resulting manual.
2794 (magic_whos): improve reporting of instances (show their class,
2813 (magic_whos): improve reporting of instances (show their class,
2795 instead of simply printing 'instance' which isn't terribly
2814 instead of simply printing 'instance' which isn't terribly
2796 informative).
2815 informative).
2797
2816
2798 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2817 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2799 (minor mods) to support network shares under win32.
2818 (minor mods) to support network shares under win32.
2800
2819
2801 * IPython/winconsole.py (get_console_size): add new winconsole
2820 * IPython/winconsole.py (get_console_size): add new winconsole
2802 module and fixes to page_dumb() to improve its behavior under
2821 module and fixes to page_dumb() to improve its behavior under
2803 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2822 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2804
2823
2805 * IPython/Magic.py (Macro): simplified Macro class to just
2824 * IPython/Magic.py (Macro): simplified Macro class to just
2806 subclass list. We've had only 2.2 compatibility for a very long
2825 subclass list. We've had only 2.2 compatibility for a very long
2807 time, yet I was still avoiding subclassing the builtin types. No
2826 time, yet I was still avoiding subclassing the builtin types. No
2808 more (I'm also starting to use properties, though I won't shift to
2827 more (I'm also starting to use properties, though I won't shift to
2809 2.3-specific features quite yet).
2828 2.3-specific features quite yet).
2810 (magic_store): added Ville's patch for lightweight variable
2829 (magic_store): added Ville's patch for lightweight variable
2811 persistence, after a request on the user list by Matt Wilkie
2830 persistence, after a request on the user list by Matt Wilkie
2812 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2831 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2813 details.
2832 details.
2814
2833
2815 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2834 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2816 changed the default logfile name from 'ipython.log' to
2835 changed the default logfile name from 'ipython.log' to
2817 'ipython_log.py'. These logs are real python files, and now that
2836 'ipython_log.py'. These logs are real python files, and now that
2818 we have much better multiline support, people are more likely to
2837 we have much better multiline support, people are more likely to
2819 want to use them as such. Might as well name them correctly.
2838 want to use them as such. Might as well name them correctly.
2820
2839
2821 * IPython/Magic.py: substantial cleanup. While we can't stop
2840 * IPython/Magic.py: substantial cleanup. While we can't stop
2822 using magics as mixins, due to the existing customizations 'out
2841 using magics as mixins, due to the existing customizations 'out
2823 there' which rely on the mixin naming conventions, at least I
2842 there' which rely on the mixin naming conventions, at least I
2824 cleaned out all cross-class name usage. So once we are OK with
2843 cleaned out all cross-class name usage. So once we are OK with
2825 breaking compatibility, the two systems can be separated.
2844 breaking compatibility, the two systems can be separated.
2826
2845
2827 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2846 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2828 anymore, and the class is a fair bit less hideous as well. New
2847 anymore, and the class is a fair bit less hideous as well. New
2829 features were also introduced: timestamping of input, and logging
2848 features were also introduced: timestamping of input, and logging
2830 of output results. These are user-visible with the -t and -o
2849 of output results. These are user-visible with the -t and -o
2831 options to %logstart. Closes
2850 options to %logstart. Closes
2832 http://www.scipy.net/roundup/ipython/issue11 and a request by
2851 http://www.scipy.net/roundup/ipython/issue11 and a request by
2833 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2852 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2834
2853
2835 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2854 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2836
2855
2837 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2856 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2838 better handle backslashes in paths. See the thread 'More Windows
2857 better handle backslashes in paths. See the thread 'More Windows
2839 questions part 2 - \/ characters revisited' on the iypthon user
2858 questions part 2 - \/ characters revisited' on the iypthon user
2840 list:
2859 list:
2841 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2860 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2842
2861
2843 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2862 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2844
2863
2845 (InteractiveShell.__init__): change threaded shells to not use the
2864 (InteractiveShell.__init__): change threaded shells to not use the
2846 ipython crash handler. This was causing more problems than not,
2865 ipython crash handler. This was causing more problems than not,
2847 as exceptions in the main thread (GUI code, typically) would
2866 as exceptions in the main thread (GUI code, typically) would
2848 always show up as a 'crash', when they really weren't.
2867 always show up as a 'crash', when they really weren't.
2849
2868
2850 The colors and exception mode commands (%colors/%xmode) have been
2869 The colors and exception mode commands (%colors/%xmode) have been
2851 synchronized to also take this into account, so users can get
2870 synchronized to also take this into account, so users can get
2852 verbose exceptions for their threaded code as well. I also added
2871 verbose exceptions for their threaded code as well. I also added
2853 support for activating pdb inside this exception handler as well,
2872 support for activating pdb inside this exception handler as well,
2854 so now GUI authors can use IPython's enhanced pdb at runtime.
2873 so now GUI authors can use IPython's enhanced pdb at runtime.
2855
2874
2856 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2875 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2857 true by default, and add it to the shipped ipythonrc file. Since
2876 true by default, and add it to the shipped ipythonrc file. Since
2858 this asks the user before proceeding, I think it's OK to make it
2877 this asks the user before proceeding, I think it's OK to make it
2859 true by default.
2878 true by default.
2860
2879
2861 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2880 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2862 of the previous special-casing of input in the eval loop. I think
2881 of the previous special-casing of input in the eval loop. I think
2863 this is cleaner, as they really are commands and shouldn't have
2882 this is cleaner, as they really are commands and shouldn't have
2864 a special role in the middle of the core code.
2883 a special role in the middle of the core code.
2865
2884
2866 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2885 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2867
2886
2868 * IPython/iplib.py (edit_syntax_error): added support for
2887 * IPython/iplib.py (edit_syntax_error): added support for
2869 automatically reopening the editor if the file had a syntax error
2888 automatically reopening the editor if the file had a syntax error
2870 in it. Thanks to scottt who provided the patch at:
2889 in it. Thanks to scottt who provided the patch at:
2871 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2890 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2872 version committed).
2891 version committed).
2873
2892
2874 * IPython/iplib.py (handle_normal): add suport for multi-line
2893 * IPython/iplib.py (handle_normal): add suport for multi-line
2875 input with emtpy lines. This fixes
2894 input with emtpy lines. This fixes
2876 http://www.scipy.net/roundup/ipython/issue43 and a similar
2895 http://www.scipy.net/roundup/ipython/issue43 and a similar
2877 discussion on the user list.
2896 discussion on the user list.
2878
2897
2879 WARNING: a behavior change is necessarily introduced to support
2898 WARNING: a behavior change is necessarily introduced to support
2880 blank lines: now a single blank line with whitespace does NOT
2899 blank lines: now a single blank line with whitespace does NOT
2881 break the input loop, which means that when autoindent is on, by
2900 break the input loop, which means that when autoindent is on, by
2882 default hitting return on the next (indented) line does NOT exit.
2901 default hitting return on the next (indented) line does NOT exit.
2883
2902
2884 Instead, to exit a multiline input you can either have:
2903 Instead, to exit a multiline input you can either have:
2885
2904
2886 - TWO whitespace lines (just hit return again), or
2905 - TWO whitespace lines (just hit return again), or
2887 - a single whitespace line of a different length than provided
2906 - a single whitespace line of a different length than provided
2888 by the autoindent (add or remove a space).
2907 by the autoindent (add or remove a space).
2889
2908
2890 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2909 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2891 module to better organize all readline-related functionality.
2910 module to better organize all readline-related functionality.
2892 I've deleted FlexCompleter and put all completion clases here.
2911 I've deleted FlexCompleter and put all completion clases here.
2893
2912
2894 * IPython/iplib.py (raw_input): improve indentation management.
2913 * IPython/iplib.py (raw_input): improve indentation management.
2895 It is now possible to paste indented code with autoindent on, and
2914 It is now possible to paste indented code with autoindent on, and
2896 the code is interpreted correctly (though it still looks bad on
2915 the code is interpreted correctly (though it still looks bad on
2897 screen, due to the line-oriented nature of ipython).
2916 screen, due to the line-oriented nature of ipython).
2898 (MagicCompleter.complete): change behavior so that a TAB key on an
2917 (MagicCompleter.complete): change behavior so that a TAB key on an
2899 otherwise empty line actually inserts a tab, instead of completing
2918 otherwise empty line actually inserts a tab, instead of completing
2900 on the entire global namespace. This makes it easier to use the
2919 on the entire global namespace. This makes it easier to use the
2901 TAB key for indentation. After a request by Hans Meine
2920 TAB key for indentation. After a request by Hans Meine
2902 <hans_meine-AT-gmx.net>
2921 <hans_meine-AT-gmx.net>
2903 (_prefilter): add support so that typing plain 'exit' or 'quit'
2922 (_prefilter): add support so that typing plain 'exit' or 'quit'
2904 does a sensible thing. Originally I tried to deviate as little as
2923 does a sensible thing. Originally I tried to deviate as little as
2905 possible from the default python behavior, but even that one may
2924 possible from the default python behavior, but even that one may
2906 change in this direction (thread on python-dev to that effect).
2925 change in this direction (thread on python-dev to that effect).
2907 Regardless, ipython should do the right thing even if CPython's
2926 Regardless, ipython should do the right thing even if CPython's
2908 '>>>' prompt doesn't.
2927 '>>>' prompt doesn't.
2909 (InteractiveShell): removed subclassing code.InteractiveConsole
2928 (InteractiveShell): removed subclassing code.InteractiveConsole
2910 class. By now we'd overridden just about all of its methods: I've
2929 class. By now we'd overridden just about all of its methods: I've
2911 copied the remaining two over, and now ipython is a standalone
2930 copied the remaining two over, and now ipython is a standalone
2912 class. This will provide a clearer picture for the chainsaw
2931 class. This will provide a clearer picture for the chainsaw
2913 branch refactoring.
2932 branch refactoring.
2914
2933
2915 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2934 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2916
2935
2917 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2936 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2918 failures for objects which break when dir() is called on them.
2937 failures for objects which break when dir() is called on them.
2919
2938
2920 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2939 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2921 distinct local and global namespaces in the completer API. This
2940 distinct local and global namespaces in the completer API. This
2922 change allows us to properly handle completion with distinct
2941 change allows us to properly handle completion with distinct
2923 scopes, including in embedded instances (this had never really
2942 scopes, including in embedded instances (this had never really
2924 worked correctly).
2943 worked correctly).
2925
2944
2926 Note: this introduces a change in the constructor for
2945 Note: this introduces a change in the constructor for
2927 MagicCompleter, as a new global_namespace parameter is now the
2946 MagicCompleter, as a new global_namespace parameter is now the
2928 second argument (the others were bumped one position).
2947 second argument (the others were bumped one position).
2929
2948
2930 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2949 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2931
2950
2932 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2951 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2933 embedded instances (which can be done now thanks to Vivian's
2952 embedded instances (which can be done now thanks to Vivian's
2934 frame-handling fixes for pdb).
2953 frame-handling fixes for pdb).
2935 (InteractiveShell.__init__): Fix namespace handling problem in
2954 (InteractiveShell.__init__): Fix namespace handling problem in
2936 embedded instances. We were overwriting __main__ unconditionally,
2955 embedded instances. We were overwriting __main__ unconditionally,
2937 and this should only be done for 'full' (non-embedded) IPython;
2956 and this should only be done for 'full' (non-embedded) IPython;
2938 embedded instances must respect the caller's __main__. Thanks to
2957 embedded instances must respect the caller's __main__. Thanks to
2939 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2958 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2940
2959
2941 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2960 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2942
2961
2943 * setup.py: added download_url to setup(). This registers the
2962 * setup.py: added download_url to setup(). This registers the
2944 download address at PyPI, which is not only useful to humans
2963 download address at PyPI, which is not only useful to humans
2945 browsing the site, but is also picked up by setuptools (the Eggs
2964 browsing the site, but is also picked up by setuptools (the Eggs
2946 machinery). Thanks to Ville and R. Kern for the info/discussion
2965 machinery). Thanks to Ville and R. Kern for the info/discussion
2947 on this.
2966 on this.
2948
2967
2949 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2968 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2950
2969
2951 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2970 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2952 This brings a lot of nice functionality to the pdb mode, which now
2971 This brings a lot of nice functionality to the pdb mode, which now
2953 has tab-completion, syntax highlighting, and better stack handling
2972 has tab-completion, syntax highlighting, and better stack handling
2954 than before. Many thanks to Vivian De Smedt
2973 than before. Many thanks to Vivian De Smedt
2955 <vivian-AT-vdesmedt.com> for the original patches.
2974 <vivian-AT-vdesmedt.com> for the original patches.
2956
2975
2957 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2976 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2958
2977
2959 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2978 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2960 sequence to consistently accept the banner argument. The
2979 sequence to consistently accept the banner argument. The
2961 inconsistency was tripping SAGE, thanks to Gary Zablackis
2980 inconsistency was tripping SAGE, thanks to Gary Zablackis
2962 <gzabl-AT-yahoo.com> for the report.
2981 <gzabl-AT-yahoo.com> for the report.
2963
2982
2964 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2983 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2965
2984
2966 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2985 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2967 Fix bug where a naked 'alias' call in the ipythonrc file would
2986 Fix bug where a naked 'alias' call in the ipythonrc file would
2968 cause a crash. Bug reported by Jorgen Stenarson.
2987 cause a crash. Bug reported by Jorgen Stenarson.
2969
2988
2970 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2989 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2971
2990
2972 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2991 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2973 startup time.
2992 startup time.
2974
2993
2975 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2994 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2976 instances had introduced a bug with globals in normal code. Now
2995 instances had introduced a bug with globals in normal code. Now
2977 it's working in all cases.
2996 it's working in all cases.
2978
2997
2979 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2998 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2980 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2999 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2981 has been introduced to set the default case sensitivity of the
3000 has been introduced to set the default case sensitivity of the
2982 searches. Users can still select either mode at runtime on a
3001 searches. Users can still select either mode at runtime on a
2983 per-search basis.
3002 per-search basis.
2984
3003
2985 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
3004 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2986
3005
2987 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
3006 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2988 attributes in wildcard searches for subclasses. Modified version
3007 attributes in wildcard searches for subclasses. Modified version
2989 of a patch by Jorgen.
3008 of a patch by Jorgen.
2990
3009
2991 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
3010 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2992
3011
2993 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
3012 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2994 embedded instances. I added a user_global_ns attribute to the
3013 embedded instances. I added a user_global_ns attribute to the
2995 InteractiveShell class to handle this.
3014 InteractiveShell class to handle this.
2996
3015
2997 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
3016 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2998
3017
2999 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
3018 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
3000 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
3019 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
3001 (reported under win32, but may happen also in other platforms).
3020 (reported under win32, but may happen also in other platforms).
3002 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
3021 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
3003
3022
3004 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
3023 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
3005
3024
3006 * IPython/Magic.py (magic_psearch): new support for wildcard
3025 * IPython/Magic.py (magic_psearch): new support for wildcard
3007 patterns. Now, typing ?a*b will list all names which begin with a
3026 patterns. Now, typing ?a*b will list all names which begin with a
3008 and end in b, for example. The %psearch magic has full
3027 and end in b, for example. The %psearch magic has full
3009 docstrings. Many thanks to JΓΆrgen Stenarson
3028 docstrings. Many thanks to JΓΆrgen Stenarson
3010 <jorgen.stenarson-AT-bostream.nu>, author of the patches
3029 <jorgen.stenarson-AT-bostream.nu>, author of the patches
3011 implementing this functionality.
3030 implementing this functionality.
3012
3031
3013 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3032 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3014
3033
3015 * Manual: fixed long-standing annoyance of double-dashes (as in
3034 * Manual: fixed long-standing annoyance of double-dashes (as in
3016 --prefix=~, for example) being stripped in the HTML version. This
3035 --prefix=~, for example) being stripped in the HTML version. This
3017 is a latex2html bug, but a workaround was provided. Many thanks
3036 is a latex2html bug, but a workaround was provided. Many thanks
3018 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
3037 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
3019 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
3038 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
3020 rolling. This seemingly small issue had tripped a number of users
3039 rolling. This seemingly small issue had tripped a number of users
3021 when first installing, so I'm glad to see it gone.
3040 when first installing, so I'm glad to see it gone.
3022
3041
3023 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3042 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3024
3043
3025 * IPython/Extensions/numeric_formats.py: fix missing import,
3044 * IPython/Extensions/numeric_formats.py: fix missing import,
3026 reported by Stephen Walton.
3045 reported by Stephen Walton.
3027
3046
3028 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
3047 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
3029
3048
3030 * IPython/demo.py: finish demo module, fully documented now.
3049 * IPython/demo.py: finish demo module, fully documented now.
3031
3050
3032 * IPython/genutils.py (file_read): simple little utility to read a
3051 * IPython/genutils.py (file_read): simple little utility to read a
3033 file and ensure it's closed afterwards.
3052 file and ensure it's closed afterwards.
3034
3053
3035 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
3054 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
3036
3055
3037 * IPython/demo.py (Demo.__init__): added support for individually
3056 * IPython/demo.py (Demo.__init__): added support for individually
3038 tagging blocks for automatic execution.
3057 tagging blocks for automatic execution.
3039
3058
3040 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
3059 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
3041 syntax-highlighted python sources, requested by John.
3060 syntax-highlighted python sources, requested by John.
3042
3061
3043 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
3062 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
3044
3063
3045 * IPython/demo.py (Demo.again): fix bug where again() blocks after
3064 * IPython/demo.py (Demo.again): fix bug where again() blocks after
3046 finishing.
3065 finishing.
3047
3066
3048 * IPython/genutils.py (shlex_split): moved from Magic to here,
3067 * IPython/genutils.py (shlex_split): moved from Magic to here,
3049 where all 2.2 compatibility stuff lives. I needed it for demo.py.
3068 where all 2.2 compatibility stuff lives. I needed it for demo.py.
3050
3069
3051 * IPython/demo.py (Demo.__init__): added support for silent
3070 * IPython/demo.py (Demo.__init__): added support for silent
3052 blocks, improved marks as regexps, docstrings written.
3071 blocks, improved marks as regexps, docstrings written.
3053 (Demo.__init__): better docstring, added support for sys.argv.
3072 (Demo.__init__): better docstring, added support for sys.argv.
3054
3073
3055 * IPython/genutils.py (marquee): little utility used by the demo
3074 * IPython/genutils.py (marquee): little utility used by the demo
3056 code, handy in general.
3075 code, handy in general.
3057
3076
3058 * IPython/demo.py (Demo.__init__): new class for interactive
3077 * IPython/demo.py (Demo.__init__): new class for interactive
3059 demos. Not documented yet, I just wrote it in a hurry for
3078 demos. Not documented yet, I just wrote it in a hurry for
3060 scipy'05. Will docstring later.
3079 scipy'05. Will docstring later.
3061
3080
3062 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
3081 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
3063
3082
3064 * IPython/Shell.py (sigint_handler): Drastic simplification which
3083 * IPython/Shell.py (sigint_handler): Drastic simplification which
3065 also seems to make Ctrl-C work correctly across threads! This is
3084 also seems to make Ctrl-C work correctly across threads! This is
3066 so simple, that I can't beleive I'd missed it before. Needs more
3085 so simple, that I can't beleive I'd missed it before. Needs more
3067 testing, though.
3086 testing, though.
3068 (KBINT): Never mind, revert changes. I'm sure I'd tried something
3087 (KBINT): Never mind, revert changes. I'm sure I'd tried something
3069 like this before...
3088 like this before...
3070
3089
3071 * IPython/genutils.py (get_home_dir): add protection against
3090 * IPython/genutils.py (get_home_dir): add protection against
3072 non-dirs in win32 registry.
3091 non-dirs in win32 registry.
3073
3092
3074 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
3093 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
3075 bug where dict was mutated while iterating (pysh crash).
3094 bug where dict was mutated while iterating (pysh crash).
3076
3095
3077 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
3096 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
3078
3097
3079 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
3098 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
3080 spurious newlines added by this routine. After a report by
3099 spurious newlines added by this routine. After a report by
3081 F. Mantegazza.
3100 F. Mantegazza.
3082
3101
3083 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
3102 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
3084
3103
3085 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
3104 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
3086 calls. These were a leftover from the GTK 1.x days, and can cause
3105 calls. These were a leftover from the GTK 1.x days, and can cause
3087 problems in certain cases (after a report by John Hunter).
3106 problems in certain cases (after a report by John Hunter).
3088
3107
3089 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
3108 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
3090 os.getcwd() fails at init time. Thanks to patch from David Remahl
3109 os.getcwd() fails at init time. Thanks to patch from David Remahl
3091 <chmod007-AT-mac.com>.
3110 <chmod007-AT-mac.com>.
3092 (InteractiveShell.__init__): prevent certain special magics from
3111 (InteractiveShell.__init__): prevent certain special magics from
3093 being shadowed by aliases. Closes
3112 being shadowed by aliases. Closes
3094 http://www.scipy.net/roundup/ipython/issue41.
3113 http://www.scipy.net/roundup/ipython/issue41.
3095
3114
3096 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
3115 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
3097
3116
3098 * IPython/iplib.py (InteractiveShell.complete): Added new
3117 * IPython/iplib.py (InteractiveShell.complete): Added new
3099 top-level completion method to expose the completion mechanism
3118 top-level completion method to expose the completion mechanism
3100 beyond readline-based environments.
3119 beyond readline-based environments.
3101
3120
3102 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
3121 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
3103
3122
3104 * tools/ipsvnc (svnversion): fix svnversion capture.
3123 * tools/ipsvnc (svnversion): fix svnversion capture.
3105
3124
3106 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
3125 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
3107 attribute to self, which was missing. Before, it was set by a
3126 attribute to self, which was missing. Before, it was set by a
3108 routine which in certain cases wasn't being called, so the
3127 routine which in certain cases wasn't being called, so the
3109 instance could end up missing the attribute. This caused a crash.
3128 instance could end up missing the attribute. This caused a crash.
3110 Closes http://www.scipy.net/roundup/ipython/issue40.
3129 Closes http://www.scipy.net/roundup/ipython/issue40.
3111
3130
3112 2005-08-16 Fernando Perez <fperez@colorado.edu>
3131 2005-08-16 Fernando Perez <fperez@colorado.edu>
3113
3132
3114 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3133 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3115 contains non-string attribute. Closes
3134 contains non-string attribute. Closes
3116 http://www.scipy.net/roundup/ipython/issue38.
3135 http://www.scipy.net/roundup/ipython/issue38.
3117
3136
3118 2005-08-14 Fernando Perez <fperez@colorado.edu>
3137 2005-08-14 Fernando Perez <fperez@colorado.edu>
3119
3138
3120 * tools/ipsvnc: Minor improvements, to add changeset info.
3139 * tools/ipsvnc: Minor improvements, to add changeset info.
3121
3140
3122 2005-08-12 Fernando Perez <fperez@colorado.edu>
3141 2005-08-12 Fernando Perez <fperez@colorado.edu>
3123
3142
3124 * IPython/iplib.py (runsource): remove self.code_to_run_src
3143 * IPython/iplib.py (runsource): remove self.code_to_run_src
3125 attribute. I realized this is nothing more than
3144 attribute. I realized this is nothing more than
3126 '\n'.join(self.buffer), and having the same data in two different
3145 '\n'.join(self.buffer), and having the same data in two different
3127 places is just asking for synchronization bugs. This may impact
3146 places is just asking for synchronization bugs. This may impact
3128 people who have custom exception handlers, so I need to warn
3147 people who have custom exception handlers, so I need to warn
3129 ipython-dev about it (F. Mantegazza may use them).
3148 ipython-dev about it (F. Mantegazza may use them).
3130
3149
3131 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3150 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3132
3151
3133 * IPython/genutils.py: fix 2.2 compatibility (generators)
3152 * IPython/genutils.py: fix 2.2 compatibility (generators)
3134
3153
3135 2005-07-18 Fernando Perez <fperez@colorado.edu>
3154 2005-07-18 Fernando Perez <fperez@colorado.edu>
3136
3155
3137 * IPython/genutils.py (get_home_dir): fix to help users with
3156 * IPython/genutils.py (get_home_dir): fix to help users with
3138 invalid $HOME under win32.
3157 invalid $HOME under win32.
3139
3158
3140 2005-07-17 Fernando Perez <fperez@colorado.edu>
3159 2005-07-17 Fernando Perez <fperez@colorado.edu>
3141
3160
3142 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3161 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3143 some old hacks and clean up a bit other routines; code should be
3162 some old hacks and clean up a bit other routines; code should be
3144 simpler and a bit faster.
3163 simpler and a bit faster.
3145
3164
3146 * IPython/iplib.py (interact): removed some last-resort attempts
3165 * IPython/iplib.py (interact): removed some last-resort attempts
3147 to survive broken stdout/stderr. That code was only making it
3166 to survive broken stdout/stderr. That code was only making it
3148 harder to abstract out the i/o (necessary for gui integration),
3167 harder to abstract out the i/o (necessary for gui integration),
3149 and the crashes it could prevent were extremely rare in practice
3168 and the crashes it could prevent were extremely rare in practice
3150 (besides being fully user-induced in a pretty violent manner).
3169 (besides being fully user-induced in a pretty violent manner).
3151
3170
3152 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3171 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3153 Nothing major yet, but the code is simpler to read; this should
3172 Nothing major yet, but the code is simpler to read; this should
3154 make it easier to do more serious modifications in the future.
3173 make it easier to do more serious modifications in the future.
3155
3174
3156 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3175 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3157 which broke in .15 (thanks to a report by Ville).
3176 which broke in .15 (thanks to a report by Ville).
3158
3177
3159 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3178 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3160 be quite correct, I know next to nothing about unicode). This
3179 be quite correct, I know next to nothing about unicode). This
3161 will allow unicode strings to be used in prompts, amongst other
3180 will allow unicode strings to be used in prompts, amongst other
3162 cases. It also will prevent ipython from crashing when unicode
3181 cases. It also will prevent ipython from crashing when unicode
3163 shows up unexpectedly in many places. If ascii encoding fails, we
3182 shows up unexpectedly in many places. If ascii encoding fails, we
3164 assume utf_8. Currently the encoding is not a user-visible
3183 assume utf_8. Currently the encoding is not a user-visible
3165 setting, though it could be made so if there is demand for it.
3184 setting, though it could be made so if there is demand for it.
3166
3185
3167 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3186 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3168
3187
3169 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3188 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3170
3189
3171 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3190 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3172
3191
3173 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3192 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3174 code can work transparently for 2.2/2.3.
3193 code can work transparently for 2.2/2.3.
3175
3194
3176 2005-07-16 Fernando Perez <fperez@colorado.edu>
3195 2005-07-16 Fernando Perez <fperez@colorado.edu>
3177
3196
3178 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3197 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3179 out of the color scheme table used for coloring exception
3198 out of the color scheme table used for coloring exception
3180 tracebacks. This allows user code to add new schemes at runtime.
3199 tracebacks. This allows user code to add new schemes at runtime.
3181 This is a minimally modified version of the patch at
3200 This is a minimally modified version of the patch at
3182 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3201 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3183 for the contribution.
3202 for the contribution.
3184
3203
3185 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3204 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3186 slightly modified version of the patch in
3205 slightly modified version of the patch in
3187 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3206 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3188 to remove the previous try/except solution (which was costlier).
3207 to remove the previous try/except solution (which was costlier).
3189 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3208 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3190
3209
3191 2005-06-08 Fernando Perez <fperez@colorado.edu>
3210 2005-06-08 Fernando Perez <fperez@colorado.edu>
3192
3211
3193 * IPython/iplib.py (write/write_err): Add methods to abstract all
3212 * IPython/iplib.py (write/write_err): Add methods to abstract all
3194 I/O a bit more.
3213 I/O a bit more.
3195
3214
3196 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3215 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3197 warning, reported by Aric Hagberg, fix by JD Hunter.
3216 warning, reported by Aric Hagberg, fix by JD Hunter.
3198
3217
3199 2005-06-02 *** Released version 0.6.15
3218 2005-06-02 *** Released version 0.6.15
3200
3219
3201 2005-06-01 Fernando Perez <fperez@colorado.edu>
3220 2005-06-01 Fernando Perez <fperez@colorado.edu>
3202
3221
3203 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3222 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3204 tab-completion of filenames within open-quoted strings. Note that
3223 tab-completion of filenames within open-quoted strings. Note that
3205 this requires that in ~/.ipython/ipythonrc, users change the
3224 this requires that in ~/.ipython/ipythonrc, users change the
3206 readline delimiters configuration to read:
3225 readline delimiters configuration to read:
3207
3226
3208 readline_remove_delims -/~
3227 readline_remove_delims -/~
3209
3228
3210
3229
3211 2005-05-31 *** Released version 0.6.14
3230 2005-05-31 *** Released version 0.6.14
3212
3231
3213 2005-05-29 Fernando Perez <fperez@colorado.edu>
3232 2005-05-29 Fernando Perez <fperez@colorado.edu>
3214
3233
3215 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3234 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3216 with files not on the filesystem. Reported by Eliyahu Sandler
3235 with files not on the filesystem. Reported by Eliyahu Sandler
3217 <eli@gondolin.net>
3236 <eli@gondolin.net>
3218
3237
3219 2005-05-22 Fernando Perez <fperez@colorado.edu>
3238 2005-05-22 Fernando Perez <fperez@colorado.edu>
3220
3239
3221 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3240 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3222 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3241 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3223
3242
3224 2005-05-19 Fernando Perez <fperez@colorado.edu>
3243 2005-05-19 Fernando Perez <fperez@colorado.edu>
3225
3244
3226 * IPython/iplib.py (safe_execfile): close a file which could be
3245 * IPython/iplib.py (safe_execfile): close a file which could be
3227 left open (causing problems in win32, which locks open files).
3246 left open (causing problems in win32, which locks open files).
3228 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3247 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3229
3248
3230 2005-05-18 Fernando Perez <fperez@colorado.edu>
3249 2005-05-18 Fernando Perez <fperez@colorado.edu>
3231
3250
3232 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3251 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3233 keyword arguments correctly to safe_execfile().
3252 keyword arguments correctly to safe_execfile().
3234
3253
3235 2005-05-13 Fernando Perez <fperez@colorado.edu>
3254 2005-05-13 Fernando Perez <fperez@colorado.edu>
3236
3255
3237 * ipython.1: Added info about Qt to manpage, and threads warning
3256 * ipython.1: Added info about Qt to manpage, and threads warning
3238 to usage page (invoked with --help).
3257 to usage page (invoked with --help).
3239
3258
3240 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3259 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3241 new matcher (it goes at the end of the priority list) to do
3260 new matcher (it goes at the end of the priority list) to do
3242 tab-completion on named function arguments. Submitted by George
3261 tab-completion on named function arguments. Submitted by George
3243 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3262 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3244 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3263 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3245 for more details.
3264 for more details.
3246
3265
3247 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3266 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3248 SystemExit exceptions in the script being run. Thanks to a report
3267 SystemExit exceptions in the script being run. Thanks to a report
3249 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3268 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3250 producing very annoying behavior when running unit tests.
3269 producing very annoying behavior when running unit tests.
3251
3270
3252 2005-05-12 Fernando Perez <fperez@colorado.edu>
3271 2005-05-12 Fernando Perez <fperez@colorado.edu>
3253
3272
3254 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3273 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3255 which I'd broken (again) due to a changed regexp. In the process,
3274 which I'd broken (again) due to a changed regexp. In the process,
3256 added ';' as an escape to auto-quote the whole line without
3275 added ';' as an escape to auto-quote the whole line without
3257 splitting its arguments. Thanks to a report by Jerry McRae
3276 splitting its arguments. Thanks to a report by Jerry McRae
3258 <qrs0xyc02-AT-sneakemail.com>.
3277 <qrs0xyc02-AT-sneakemail.com>.
3259
3278
3260 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3279 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3261 possible crashes caused by a TokenError. Reported by Ed Schofield
3280 possible crashes caused by a TokenError. Reported by Ed Schofield
3262 <schofield-AT-ftw.at>.
3281 <schofield-AT-ftw.at>.
3263
3282
3264 2005-05-06 Fernando Perez <fperez@colorado.edu>
3283 2005-05-06 Fernando Perez <fperez@colorado.edu>
3265
3284
3266 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3285 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3267
3286
3268 2005-04-29 Fernando Perez <fperez@colorado.edu>
3287 2005-04-29 Fernando Perez <fperez@colorado.edu>
3269
3288
3270 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3289 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3271 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3290 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3272 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3291 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3273 which provides support for Qt interactive usage (similar to the
3292 which provides support for Qt interactive usage (similar to the
3274 existing one for WX and GTK). This had been often requested.
3293 existing one for WX and GTK). This had been often requested.
3275
3294
3276 2005-04-14 *** Released version 0.6.13
3295 2005-04-14 *** Released version 0.6.13
3277
3296
3278 2005-04-08 Fernando Perez <fperez@colorado.edu>
3297 2005-04-08 Fernando Perez <fperez@colorado.edu>
3279
3298
3280 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3299 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3281 from _ofind, which gets called on almost every input line. Now,
3300 from _ofind, which gets called on almost every input line. Now,
3282 we only try to get docstrings if they are actually going to be
3301 we only try to get docstrings if they are actually going to be
3283 used (the overhead of fetching unnecessary docstrings can be
3302 used (the overhead of fetching unnecessary docstrings can be
3284 noticeable for certain objects, such as Pyro proxies).
3303 noticeable for certain objects, such as Pyro proxies).
3285
3304
3286 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3305 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3287 for completers. For some reason I had been passing them the state
3306 for completers. For some reason I had been passing them the state
3288 variable, which completers never actually need, and was in
3307 variable, which completers never actually need, and was in
3289 conflict with the rlcompleter API. Custom completers ONLY need to
3308 conflict with the rlcompleter API. Custom completers ONLY need to
3290 take the text parameter.
3309 take the text parameter.
3291
3310
3292 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3311 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3293 work correctly in pysh. I've also moved all the logic which used
3312 work correctly in pysh. I've also moved all the logic which used
3294 to be in pysh.py here, which will prevent problems with future
3313 to be in pysh.py here, which will prevent problems with future
3295 upgrades. However, this time I must warn users to update their
3314 upgrades. However, this time I must warn users to update their
3296 pysh profile to include the line
3315 pysh profile to include the line
3297
3316
3298 import_all IPython.Extensions.InterpreterExec
3317 import_all IPython.Extensions.InterpreterExec
3299
3318
3300 because otherwise things won't work for them. They MUST also
3319 because otherwise things won't work for them. They MUST also
3301 delete pysh.py and the line
3320 delete pysh.py and the line
3302
3321
3303 execfile pysh.py
3322 execfile pysh.py
3304
3323
3305 from their ipythonrc-pysh.
3324 from their ipythonrc-pysh.
3306
3325
3307 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3326 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3308 robust in the face of objects whose dir() returns non-strings
3327 robust in the face of objects whose dir() returns non-strings
3309 (which it shouldn't, but some broken libs like ITK do). Thanks to
3328 (which it shouldn't, but some broken libs like ITK do). Thanks to
3310 a patch by John Hunter (implemented differently, though). Also
3329 a patch by John Hunter (implemented differently, though). Also
3311 minor improvements by using .extend instead of + on lists.
3330 minor improvements by using .extend instead of + on lists.
3312
3331
3313 * pysh.py:
3332 * pysh.py:
3314
3333
3315 2005-04-06 Fernando Perez <fperez@colorado.edu>
3334 2005-04-06 Fernando Perez <fperez@colorado.edu>
3316
3335
3317 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3336 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3318 by default, so that all users benefit from it. Those who don't
3337 by default, so that all users benefit from it. Those who don't
3319 want it can still turn it off.
3338 want it can still turn it off.
3320
3339
3321 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3340 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3322 config file, I'd forgotten about this, so users were getting it
3341 config file, I'd forgotten about this, so users were getting it
3323 off by default.
3342 off by default.
3324
3343
3325 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3344 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3326 consistency. Now magics can be called in multiline statements,
3345 consistency. Now magics can be called in multiline statements,
3327 and python variables can be expanded in magic calls via $var.
3346 and python variables can be expanded in magic calls via $var.
3328 This makes the magic system behave just like aliases or !system
3347 This makes the magic system behave just like aliases or !system
3329 calls.
3348 calls.
3330
3349
3331 2005-03-28 Fernando Perez <fperez@colorado.edu>
3350 2005-03-28 Fernando Perez <fperez@colorado.edu>
3332
3351
3333 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3352 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3334 expensive string additions for building command. Add support for
3353 expensive string additions for building command. Add support for
3335 trailing ';' when autocall is used.
3354 trailing ';' when autocall is used.
3336
3355
3337 2005-03-26 Fernando Perez <fperez@colorado.edu>
3356 2005-03-26 Fernando Perez <fperez@colorado.edu>
3338
3357
3339 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3358 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3340 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3359 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3341 ipython.el robust against prompts with any number of spaces
3360 ipython.el robust against prompts with any number of spaces
3342 (including 0) after the ':' character.
3361 (including 0) after the ':' character.
3343
3362
3344 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3363 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3345 continuation prompt, which misled users to think the line was
3364 continuation prompt, which misled users to think the line was
3346 already indented. Closes debian Bug#300847, reported to me by
3365 already indented. Closes debian Bug#300847, reported to me by
3347 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3366 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3348
3367
3349 2005-03-23 Fernando Perez <fperez@colorado.edu>
3368 2005-03-23 Fernando Perez <fperez@colorado.edu>
3350
3369
3351 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3370 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3352 properly aligned if they have embedded newlines.
3371 properly aligned if they have embedded newlines.
3353
3372
3354 * IPython/iplib.py (runlines): Add a public method to expose
3373 * IPython/iplib.py (runlines): Add a public method to expose
3355 IPython's code execution machinery, so that users can run strings
3374 IPython's code execution machinery, so that users can run strings
3356 as if they had been typed at the prompt interactively.
3375 as if they had been typed at the prompt interactively.
3357 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3376 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3358 methods which can call the system shell, but with python variable
3377 methods which can call the system shell, but with python variable
3359 expansion. The three such methods are: __IPYTHON__.system,
3378 expansion. The three such methods are: __IPYTHON__.system,
3360 .getoutput and .getoutputerror. These need to be documented in a
3379 .getoutput and .getoutputerror. These need to be documented in a
3361 'public API' section (to be written) of the manual.
3380 'public API' section (to be written) of the manual.
3362
3381
3363 2005-03-20 Fernando Perez <fperez@colorado.edu>
3382 2005-03-20 Fernando Perez <fperez@colorado.edu>
3364
3383
3365 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3384 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3366 for custom exception handling. This is quite powerful, and it
3385 for custom exception handling. This is quite powerful, and it
3367 allows for user-installable exception handlers which can trap
3386 allows for user-installable exception handlers which can trap
3368 custom exceptions at runtime and treat them separately from
3387 custom exceptions at runtime and treat them separately from
3369 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3388 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3370 Mantegazza <mantegazza-AT-ill.fr>.
3389 Mantegazza <mantegazza-AT-ill.fr>.
3371 (InteractiveShell.set_custom_completer): public API function to
3390 (InteractiveShell.set_custom_completer): public API function to
3372 add new completers at runtime.
3391 add new completers at runtime.
3373
3392
3374 2005-03-19 Fernando Perez <fperez@colorado.edu>
3393 2005-03-19 Fernando Perez <fperez@colorado.edu>
3375
3394
3376 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3395 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3377 allow objects which provide their docstrings via non-standard
3396 allow objects which provide their docstrings via non-standard
3378 mechanisms (like Pyro proxies) to still be inspected by ipython's
3397 mechanisms (like Pyro proxies) to still be inspected by ipython's
3379 ? system.
3398 ? system.
3380
3399
3381 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3400 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3382 automatic capture system. I tried quite hard to make it work
3401 automatic capture system. I tried quite hard to make it work
3383 reliably, and simply failed. I tried many combinations with the
3402 reliably, and simply failed. I tried many combinations with the
3384 subprocess module, but eventually nothing worked in all needed
3403 subprocess module, but eventually nothing worked in all needed
3385 cases (not blocking stdin for the child, duplicating stdout
3404 cases (not blocking stdin for the child, duplicating stdout
3386 without blocking, etc). The new %sc/%sx still do capture to these
3405 without blocking, etc). The new %sc/%sx still do capture to these
3387 magical list/string objects which make shell use much more
3406 magical list/string objects which make shell use much more
3388 conveninent, so not all is lost.
3407 conveninent, so not all is lost.
3389
3408
3390 XXX - FIX MANUAL for the change above!
3409 XXX - FIX MANUAL for the change above!
3391
3410
3392 (runsource): I copied code.py's runsource() into ipython to modify
3411 (runsource): I copied code.py's runsource() into ipython to modify
3393 it a bit. Now the code object and source to be executed are
3412 it a bit. Now the code object and source to be executed are
3394 stored in ipython. This makes this info accessible to third-party
3413 stored in ipython. This makes this info accessible to third-party
3395 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3414 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3396 Mantegazza <mantegazza-AT-ill.fr>.
3415 Mantegazza <mantegazza-AT-ill.fr>.
3397
3416
3398 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3417 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3399 history-search via readline (like C-p/C-n). I'd wanted this for a
3418 history-search via readline (like C-p/C-n). I'd wanted this for a
3400 long time, but only recently found out how to do it. For users
3419 long time, but only recently found out how to do it. For users
3401 who already have their ipythonrc files made and want this, just
3420 who already have their ipythonrc files made and want this, just
3402 add:
3421 add:
3403
3422
3404 readline_parse_and_bind "\e[A": history-search-backward
3423 readline_parse_and_bind "\e[A": history-search-backward
3405 readline_parse_and_bind "\e[B": history-search-forward
3424 readline_parse_and_bind "\e[B": history-search-forward
3406
3425
3407 2005-03-18 Fernando Perez <fperez@colorado.edu>
3426 2005-03-18 Fernando Perez <fperez@colorado.edu>
3408
3427
3409 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3428 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3410 LSString and SList classes which allow transparent conversions
3429 LSString and SList classes which allow transparent conversions
3411 between list mode and whitespace-separated string.
3430 between list mode and whitespace-separated string.
3412 (magic_r): Fix recursion problem in %r.
3431 (magic_r): Fix recursion problem in %r.
3413
3432
3414 * IPython/genutils.py (LSString): New class to be used for
3433 * IPython/genutils.py (LSString): New class to be used for
3415 automatic storage of the results of all alias/system calls in _o
3434 automatic storage of the results of all alias/system calls in _o
3416 and _e (stdout/err). These provide a .l/.list attribute which
3435 and _e (stdout/err). These provide a .l/.list attribute which
3417 does automatic splitting on newlines. This means that for most
3436 does automatic splitting on newlines. This means that for most
3418 uses, you'll never need to do capturing of output with %sc/%sx
3437 uses, you'll never need to do capturing of output with %sc/%sx
3419 anymore, since ipython keeps this always done for you. Note that
3438 anymore, since ipython keeps this always done for you. Note that
3420 only the LAST results are stored, the _o/e variables are
3439 only the LAST results are stored, the _o/e variables are
3421 overwritten on each call. If you need to save their contents
3440 overwritten on each call. If you need to save their contents
3422 further, simply bind them to any other name.
3441 further, simply bind them to any other name.
3423
3442
3424 2005-03-17 Fernando Perez <fperez@colorado.edu>
3443 2005-03-17 Fernando Perez <fperez@colorado.edu>
3425
3444
3426 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3445 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3427 prompt namespace handling.
3446 prompt namespace handling.
3428
3447
3429 2005-03-16 Fernando Perez <fperez@colorado.edu>
3448 2005-03-16 Fernando Perez <fperez@colorado.edu>
3430
3449
3431 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3450 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3432 classic prompts to be '>>> ' (final space was missing, and it
3451 classic prompts to be '>>> ' (final space was missing, and it
3433 trips the emacs python mode).
3452 trips the emacs python mode).
3434 (BasePrompt.__str__): Added safe support for dynamic prompt
3453 (BasePrompt.__str__): Added safe support for dynamic prompt
3435 strings. Now you can set your prompt string to be '$x', and the
3454 strings. Now you can set your prompt string to be '$x', and the
3436 value of x will be printed from your interactive namespace. The
3455 value of x will be printed from your interactive namespace. The
3437 interpolation syntax includes the full Itpl support, so
3456 interpolation syntax includes the full Itpl support, so
3438 ${foo()+x+bar()} is a valid prompt string now, and the function
3457 ${foo()+x+bar()} is a valid prompt string now, and the function
3439 calls will be made at runtime.
3458 calls will be made at runtime.
3440
3459
3441 2005-03-15 Fernando Perez <fperez@colorado.edu>
3460 2005-03-15 Fernando Perez <fperez@colorado.edu>
3442
3461
3443 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3462 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3444 avoid name clashes in pylab. %hist still works, it just forwards
3463 avoid name clashes in pylab. %hist still works, it just forwards
3445 the call to %history.
3464 the call to %history.
3446
3465
3447 2005-03-02 *** Released version 0.6.12
3466 2005-03-02 *** Released version 0.6.12
3448
3467
3449 2005-03-02 Fernando Perez <fperez@colorado.edu>
3468 2005-03-02 Fernando Perez <fperez@colorado.edu>
3450
3469
3451 * IPython/iplib.py (handle_magic): log magic calls properly as
3470 * IPython/iplib.py (handle_magic): log magic calls properly as
3452 ipmagic() function calls.
3471 ipmagic() function calls.
3453
3472
3454 * IPython/Magic.py (magic_time): Improved %time to support
3473 * IPython/Magic.py (magic_time): Improved %time to support
3455 statements and provide wall-clock as well as CPU time.
3474 statements and provide wall-clock as well as CPU time.
3456
3475
3457 2005-02-27 Fernando Perez <fperez@colorado.edu>
3476 2005-02-27 Fernando Perez <fperez@colorado.edu>
3458
3477
3459 * IPython/hooks.py: New hooks module, to expose user-modifiable
3478 * IPython/hooks.py: New hooks module, to expose user-modifiable
3460 IPython functionality in a clean manner. For now only the editor
3479 IPython functionality in a clean manner. For now only the editor
3461 hook is actually written, and other thigns which I intend to turn
3480 hook is actually written, and other thigns which I intend to turn
3462 into proper hooks aren't yet there. The display and prefilter
3481 into proper hooks aren't yet there. The display and prefilter
3463 stuff, for example, should be hooks. But at least now the
3482 stuff, for example, should be hooks. But at least now the
3464 framework is in place, and the rest can be moved here with more
3483 framework is in place, and the rest can be moved here with more
3465 time later. IPython had had a .hooks variable for a long time for
3484 time later. IPython had had a .hooks variable for a long time for
3466 this purpose, but I'd never actually used it for anything.
3485 this purpose, but I'd never actually used it for anything.
3467
3486
3468 2005-02-26 Fernando Perez <fperez@colorado.edu>
3487 2005-02-26 Fernando Perez <fperez@colorado.edu>
3469
3488
3470 * IPython/ipmaker.py (make_IPython): make the default ipython
3489 * IPython/ipmaker.py (make_IPython): make the default ipython
3471 directory be called _ipython under win32, to follow more the
3490 directory be called _ipython under win32, to follow more the
3472 naming peculiarities of that platform (where buggy software like
3491 naming peculiarities of that platform (where buggy software like
3473 Visual Sourcesafe breaks with .named directories). Reported by
3492 Visual Sourcesafe breaks with .named directories). Reported by
3474 Ville Vainio.
3493 Ville Vainio.
3475
3494
3476 2005-02-23 Fernando Perez <fperez@colorado.edu>
3495 2005-02-23 Fernando Perez <fperez@colorado.edu>
3477
3496
3478 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3497 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3479 auto_aliases for win32 which were causing problems. Users can
3498 auto_aliases for win32 which were causing problems. Users can
3480 define the ones they personally like.
3499 define the ones they personally like.
3481
3500
3482 2005-02-21 Fernando Perez <fperez@colorado.edu>
3501 2005-02-21 Fernando Perez <fperez@colorado.edu>
3483
3502
3484 * IPython/Magic.py (magic_time): new magic to time execution of
3503 * IPython/Magic.py (magic_time): new magic to time execution of
3485 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3504 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3486
3505
3487 2005-02-19 Fernando Perez <fperez@colorado.edu>
3506 2005-02-19 Fernando Perez <fperez@colorado.edu>
3488
3507
3489 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3508 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3490 into keys (for prompts, for example).
3509 into keys (for prompts, for example).
3491
3510
3492 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3511 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3493 prompts in case users want them. This introduces a small behavior
3512 prompts in case users want them. This introduces a small behavior
3494 change: ipython does not automatically add a space to all prompts
3513 change: ipython does not automatically add a space to all prompts
3495 anymore. To get the old prompts with a space, users should add it
3514 anymore. To get the old prompts with a space, users should add it
3496 manually to their ipythonrc file, so for example prompt_in1 should
3515 manually to their ipythonrc file, so for example prompt_in1 should
3497 now read 'In [\#]: ' instead of 'In [\#]:'.
3516 now read 'In [\#]: ' instead of 'In [\#]:'.
3498 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3517 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3499 file) to control left-padding of secondary prompts.
3518 file) to control left-padding of secondary prompts.
3500
3519
3501 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3520 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3502 the profiler can't be imported. Fix for Debian, which removed
3521 the profiler can't be imported. Fix for Debian, which removed
3503 profile.py because of License issues. I applied a slightly
3522 profile.py because of License issues. I applied a slightly
3504 modified version of the original Debian patch at
3523 modified version of the original Debian patch at
3505 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3524 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3506
3525
3507 2005-02-17 Fernando Perez <fperez@colorado.edu>
3526 2005-02-17 Fernando Perez <fperez@colorado.edu>
3508
3527
3509 * IPython/genutils.py (native_line_ends): Fix bug which would
3528 * IPython/genutils.py (native_line_ends): Fix bug which would
3510 cause improper line-ends under win32 b/c I was not opening files
3529 cause improper line-ends under win32 b/c I was not opening files
3511 in binary mode. Bug report and fix thanks to Ville.
3530 in binary mode. Bug report and fix thanks to Ville.
3512
3531
3513 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3532 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3514 trying to catch spurious foo[1] autocalls. My fix actually broke
3533 trying to catch spurious foo[1] autocalls. My fix actually broke
3515 ',/' autoquote/call with explicit escape (bad regexp).
3534 ',/' autoquote/call with explicit escape (bad regexp).
3516
3535
3517 2005-02-15 *** Released version 0.6.11
3536 2005-02-15 *** Released version 0.6.11
3518
3537
3519 2005-02-14 Fernando Perez <fperez@colorado.edu>
3538 2005-02-14 Fernando Perez <fperez@colorado.edu>
3520
3539
3521 * IPython/background_jobs.py: New background job management
3540 * IPython/background_jobs.py: New background job management
3522 subsystem. This is implemented via a new set of classes, and
3541 subsystem. This is implemented via a new set of classes, and
3523 IPython now provides a builtin 'jobs' object for background job
3542 IPython now provides a builtin 'jobs' object for background job
3524 execution. A convenience %bg magic serves as a lightweight
3543 execution. A convenience %bg magic serves as a lightweight
3525 frontend for starting the more common type of calls. This was
3544 frontend for starting the more common type of calls. This was
3526 inspired by discussions with B. Granger and the BackgroundCommand
3545 inspired by discussions with B. Granger and the BackgroundCommand
3527 class described in the book Python Scripting for Computational
3546 class described in the book Python Scripting for Computational
3528 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3547 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3529 (although ultimately no code from this text was used, as IPython's
3548 (although ultimately no code from this text was used, as IPython's
3530 system is a separate implementation).
3549 system is a separate implementation).
3531
3550
3532 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3551 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3533 to control the completion of single/double underscore names
3552 to control the completion of single/double underscore names
3534 separately. As documented in the example ipytonrc file, the
3553 separately. As documented in the example ipytonrc file, the
3535 readline_omit__names variable can now be set to 2, to omit even
3554 readline_omit__names variable can now be set to 2, to omit even
3536 single underscore names. Thanks to a patch by Brian Wong
3555 single underscore names. Thanks to a patch by Brian Wong
3537 <BrianWong-AT-AirgoNetworks.Com>.
3556 <BrianWong-AT-AirgoNetworks.Com>.
3538 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3557 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3539 be autocalled as foo([1]) if foo were callable. A problem for
3558 be autocalled as foo([1]) if foo were callable. A problem for
3540 things which are both callable and implement __getitem__.
3559 things which are both callable and implement __getitem__.
3541 (init_readline): Fix autoindentation for win32. Thanks to a patch
3560 (init_readline): Fix autoindentation for win32. Thanks to a patch
3542 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3561 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3543
3562
3544 2005-02-12 Fernando Perez <fperez@colorado.edu>
3563 2005-02-12 Fernando Perez <fperez@colorado.edu>
3545
3564
3546 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3565 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3547 which I had written long ago to sort out user error messages which
3566 which I had written long ago to sort out user error messages which
3548 may occur during startup. This seemed like a good idea initially,
3567 may occur during startup. This seemed like a good idea initially,
3549 but it has proven a disaster in retrospect. I don't want to
3568 but it has proven a disaster in retrospect. I don't want to
3550 change much code for now, so my fix is to set the internal 'debug'
3569 change much code for now, so my fix is to set the internal 'debug'
3551 flag to true everywhere, whose only job was precisely to control
3570 flag to true everywhere, whose only job was precisely to control
3552 this subsystem. This closes issue 28 (as well as avoiding all
3571 this subsystem. This closes issue 28 (as well as avoiding all
3553 sorts of strange hangups which occur from time to time).
3572 sorts of strange hangups which occur from time to time).
3554
3573
3555 2005-02-07 Fernando Perez <fperez@colorado.edu>
3574 2005-02-07 Fernando Perez <fperez@colorado.edu>
3556
3575
3557 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3576 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3558 previous call produced a syntax error.
3577 previous call produced a syntax error.
3559
3578
3560 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3579 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3561 classes without constructor.
3580 classes without constructor.
3562
3581
3563 2005-02-06 Fernando Perez <fperez@colorado.edu>
3582 2005-02-06 Fernando Perez <fperez@colorado.edu>
3564
3583
3565 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3584 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3566 completions with the results of each matcher, so we return results
3585 completions with the results of each matcher, so we return results
3567 to the user from all namespaces. This breaks with ipython
3586 to the user from all namespaces. This breaks with ipython
3568 tradition, but I think it's a nicer behavior. Now you get all
3587 tradition, but I think it's a nicer behavior. Now you get all
3569 possible completions listed, from all possible namespaces (python,
3588 possible completions listed, from all possible namespaces (python,
3570 filesystem, magics...) After a request by John Hunter
3589 filesystem, magics...) After a request by John Hunter
3571 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3590 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3572
3591
3573 2005-02-05 Fernando Perez <fperez@colorado.edu>
3592 2005-02-05 Fernando Perez <fperez@colorado.edu>
3574
3593
3575 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3594 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3576 the call had quote characters in it (the quotes were stripped).
3595 the call had quote characters in it (the quotes were stripped).
3577
3596
3578 2005-01-31 Fernando Perez <fperez@colorado.edu>
3597 2005-01-31 Fernando Perez <fperez@colorado.edu>
3579
3598
3580 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3599 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3581 Itpl.itpl() to make the code more robust against psyco
3600 Itpl.itpl() to make the code more robust against psyco
3582 optimizations.
3601 optimizations.
3583
3602
3584 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3603 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3585 of causing an exception. Quicker, cleaner.
3604 of causing an exception. Quicker, cleaner.
3586
3605
3587 2005-01-28 Fernando Perez <fperez@colorado.edu>
3606 2005-01-28 Fernando Perez <fperez@colorado.edu>
3588
3607
3589 * scripts/ipython_win_post_install.py (install): hardcode
3608 * scripts/ipython_win_post_install.py (install): hardcode
3590 sys.prefix+'python.exe' as the executable path. It turns out that
3609 sys.prefix+'python.exe' as the executable path. It turns out that
3591 during the post-installation run, sys.executable resolves to the
3610 during the post-installation run, sys.executable resolves to the
3592 name of the binary installer! I should report this as a distutils
3611 name of the binary installer! I should report this as a distutils
3593 bug, I think. I updated the .10 release with this tiny fix, to
3612 bug, I think. I updated the .10 release with this tiny fix, to
3594 avoid annoying the lists further.
3613 avoid annoying the lists further.
3595
3614
3596 2005-01-27 *** Released version 0.6.10
3615 2005-01-27 *** Released version 0.6.10
3597
3616
3598 2005-01-27 Fernando Perez <fperez@colorado.edu>
3617 2005-01-27 Fernando Perez <fperez@colorado.edu>
3599
3618
3600 * IPython/numutils.py (norm): Added 'inf' as optional name for
3619 * IPython/numutils.py (norm): Added 'inf' as optional name for
3601 L-infinity norm, included references to mathworld.com for vector
3620 L-infinity norm, included references to mathworld.com for vector
3602 norm definitions.
3621 norm definitions.
3603 (amin/amax): added amin/amax for array min/max. Similar to what
3622 (amin/amax): added amin/amax for array min/max. Similar to what
3604 pylab ships with after the recent reorganization of names.
3623 pylab ships with after the recent reorganization of names.
3605 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3624 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3606
3625
3607 * ipython.el: committed Alex's recent fixes and improvements.
3626 * ipython.el: committed Alex's recent fixes and improvements.
3608 Tested with python-mode from CVS, and it looks excellent. Since
3627 Tested with python-mode from CVS, and it looks excellent. Since
3609 python-mode hasn't released anything in a while, I'm temporarily
3628 python-mode hasn't released anything in a while, I'm temporarily
3610 putting a copy of today's CVS (v 4.70) of python-mode in:
3629 putting a copy of today's CVS (v 4.70) of python-mode in:
3611 http://ipython.scipy.org/tmp/python-mode.el
3630 http://ipython.scipy.org/tmp/python-mode.el
3612
3631
3613 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3632 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3614 sys.executable for the executable name, instead of assuming it's
3633 sys.executable for the executable name, instead of assuming it's
3615 called 'python.exe' (the post-installer would have produced broken
3634 called 'python.exe' (the post-installer would have produced broken
3616 setups on systems with a differently named python binary).
3635 setups on systems with a differently named python binary).
3617
3636
3618 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3637 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3619 references to os.linesep, to make the code more
3638 references to os.linesep, to make the code more
3620 platform-independent. This is also part of the win32 coloring
3639 platform-independent. This is also part of the win32 coloring
3621 fixes.
3640 fixes.
3622
3641
3623 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3642 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3624 lines, which actually cause coloring bugs because the length of
3643 lines, which actually cause coloring bugs because the length of
3625 the line is very difficult to correctly compute with embedded
3644 the line is very difficult to correctly compute with embedded
3626 escapes. This was the source of all the coloring problems under
3645 escapes. This was the source of all the coloring problems under
3627 Win32. I think that _finally_, Win32 users have a properly
3646 Win32. I think that _finally_, Win32 users have a properly
3628 working ipython in all respects. This would never have happened
3647 working ipython in all respects. This would never have happened
3629 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3648 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3630
3649
3631 2005-01-26 *** Released version 0.6.9
3650 2005-01-26 *** Released version 0.6.9
3632
3651
3633 2005-01-25 Fernando Perez <fperez@colorado.edu>
3652 2005-01-25 Fernando Perez <fperez@colorado.edu>
3634
3653
3635 * setup.py: finally, we have a true Windows installer, thanks to
3654 * setup.py: finally, we have a true Windows installer, thanks to
3636 the excellent work of Viktor Ransmayr
3655 the excellent work of Viktor Ransmayr
3637 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3656 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3638 Windows users. The setup routine is quite a bit cleaner thanks to
3657 Windows users. The setup routine is quite a bit cleaner thanks to
3639 this, and the post-install script uses the proper functions to
3658 this, and the post-install script uses the proper functions to
3640 allow a clean de-installation using the standard Windows Control
3659 allow a clean de-installation using the standard Windows Control
3641 Panel.
3660 Panel.
3642
3661
3643 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3662 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3644 environment variable under all OSes (including win32) if
3663 environment variable under all OSes (including win32) if
3645 available. This will give consistency to win32 users who have set
3664 available. This will give consistency to win32 users who have set
3646 this variable for any reason. If os.environ['HOME'] fails, the
3665 this variable for any reason. If os.environ['HOME'] fails, the
3647 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3666 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3648
3667
3649 2005-01-24 Fernando Perez <fperez@colorado.edu>
3668 2005-01-24 Fernando Perez <fperez@colorado.edu>
3650
3669
3651 * IPython/numutils.py (empty_like): add empty_like(), similar to
3670 * IPython/numutils.py (empty_like): add empty_like(), similar to
3652 zeros_like() but taking advantage of the new empty() Numeric routine.
3671 zeros_like() but taking advantage of the new empty() Numeric routine.
3653
3672
3654 2005-01-23 *** Released version 0.6.8
3673 2005-01-23 *** Released version 0.6.8
3655
3674
3656 2005-01-22 Fernando Perez <fperez@colorado.edu>
3675 2005-01-22 Fernando Perez <fperez@colorado.edu>
3657
3676
3658 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3677 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3659 automatic show() calls. After discussing things with JDH, it
3678 automatic show() calls. After discussing things with JDH, it
3660 turns out there are too many corner cases where this can go wrong.
3679 turns out there are too many corner cases where this can go wrong.
3661 It's best not to try to be 'too smart', and simply have ipython
3680 It's best not to try to be 'too smart', and simply have ipython
3662 reproduce as much as possible the default behavior of a normal
3681 reproduce as much as possible the default behavior of a normal
3663 python shell.
3682 python shell.
3664
3683
3665 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3684 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3666 line-splitting regexp and _prefilter() to avoid calling getattr()
3685 line-splitting regexp and _prefilter() to avoid calling getattr()
3667 on assignments. This closes
3686 on assignments. This closes
3668 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3687 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3669 readline uses getattr(), so a simple <TAB> keypress is still
3688 readline uses getattr(), so a simple <TAB> keypress is still
3670 enough to trigger getattr() calls on an object.
3689 enough to trigger getattr() calls on an object.
3671
3690
3672 2005-01-21 Fernando Perez <fperez@colorado.edu>
3691 2005-01-21 Fernando Perez <fperez@colorado.edu>
3673
3692
3674 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3693 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3675 docstring under pylab so it doesn't mask the original.
3694 docstring under pylab so it doesn't mask the original.
3676
3695
3677 2005-01-21 *** Released version 0.6.7
3696 2005-01-21 *** Released version 0.6.7
3678
3697
3679 2005-01-21 Fernando Perez <fperez@colorado.edu>
3698 2005-01-21 Fernando Perez <fperez@colorado.edu>
3680
3699
3681 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3700 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3682 signal handling for win32 users in multithreaded mode.
3701 signal handling for win32 users in multithreaded mode.
3683
3702
3684 2005-01-17 Fernando Perez <fperez@colorado.edu>
3703 2005-01-17 Fernando Perez <fperez@colorado.edu>
3685
3704
3686 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3705 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3687 instances with no __init__. After a crash report by Norbert Nemec
3706 instances with no __init__. After a crash report by Norbert Nemec
3688 <Norbert-AT-nemec-online.de>.
3707 <Norbert-AT-nemec-online.de>.
3689
3708
3690 2005-01-14 Fernando Perez <fperez@colorado.edu>
3709 2005-01-14 Fernando Perez <fperez@colorado.edu>
3691
3710
3692 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3711 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3693 names for verbose exceptions, when multiple dotted names and the
3712 names for verbose exceptions, when multiple dotted names and the
3694 'parent' object were present on the same line.
3713 'parent' object were present on the same line.
3695
3714
3696 2005-01-11 Fernando Perez <fperez@colorado.edu>
3715 2005-01-11 Fernando Perez <fperez@colorado.edu>
3697
3716
3698 * IPython/genutils.py (flag_calls): new utility to trap and flag
3717 * IPython/genutils.py (flag_calls): new utility to trap and flag
3699 calls in functions. I need it to clean up matplotlib support.
3718 calls in functions. I need it to clean up matplotlib support.
3700 Also removed some deprecated code in genutils.
3719 Also removed some deprecated code in genutils.
3701
3720
3702 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3721 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3703 that matplotlib scripts called with %run, which don't call show()
3722 that matplotlib scripts called with %run, which don't call show()
3704 themselves, still have their plotting windows open.
3723 themselves, still have their plotting windows open.
3705
3724
3706 2005-01-05 Fernando Perez <fperez@colorado.edu>
3725 2005-01-05 Fernando Perez <fperez@colorado.edu>
3707
3726
3708 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3727 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3709 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3728 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3710
3729
3711 2004-12-19 Fernando Perez <fperez@colorado.edu>
3730 2004-12-19 Fernando Perez <fperez@colorado.edu>
3712
3731
3713 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3732 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3714 parent_runcode, which was an eyesore. The same result can be
3733 parent_runcode, which was an eyesore. The same result can be
3715 obtained with Python's regular superclass mechanisms.
3734 obtained with Python's regular superclass mechanisms.
3716
3735
3717 2004-12-17 Fernando Perez <fperez@colorado.edu>
3736 2004-12-17 Fernando Perez <fperez@colorado.edu>
3718
3737
3719 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3738 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3720 reported by Prabhu.
3739 reported by Prabhu.
3721 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3740 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3722 sys.stderr) instead of explicitly calling sys.stderr. This helps
3741 sys.stderr) instead of explicitly calling sys.stderr. This helps
3723 maintain our I/O abstractions clean, for future GUI embeddings.
3742 maintain our I/O abstractions clean, for future GUI embeddings.
3724
3743
3725 * IPython/genutils.py (info): added new utility for sys.stderr
3744 * IPython/genutils.py (info): added new utility for sys.stderr
3726 unified info message handling (thin wrapper around warn()).
3745 unified info message handling (thin wrapper around warn()).
3727
3746
3728 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3747 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3729 composite (dotted) names on verbose exceptions.
3748 composite (dotted) names on verbose exceptions.
3730 (VerboseTB.nullrepr): harden against another kind of errors which
3749 (VerboseTB.nullrepr): harden against another kind of errors which
3731 Python's inspect module can trigger, and which were crashing
3750 Python's inspect module can trigger, and which were crashing
3732 IPython. Thanks to a report by Marco Lombardi
3751 IPython. Thanks to a report by Marco Lombardi
3733 <mlombard-AT-ma010192.hq.eso.org>.
3752 <mlombard-AT-ma010192.hq.eso.org>.
3734
3753
3735 2004-12-13 *** Released version 0.6.6
3754 2004-12-13 *** Released version 0.6.6
3736
3755
3737 2004-12-12 Fernando Perez <fperez@colorado.edu>
3756 2004-12-12 Fernando Perez <fperez@colorado.edu>
3738
3757
3739 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3758 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3740 generated by pygtk upon initialization if it was built without
3759 generated by pygtk upon initialization if it was built without
3741 threads (for matplotlib users). After a crash reported by
3760 threads (for matplotlib users). After a crash reported by
3742 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3761 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3743
3762
3744 * IPython/ipmaker.py (make_IPython): fix small bug in the
3763 * IPython/ipmaker.py (make_IPython): fix small bug in the
3745 import_some parameter for multiple imports.
3764 import_some parameter for multiple imports.
3746
3765
3747 * IPython/iplib.py (ipmagic): simplified the interface of
3766 * IPython/iplib.py (ipmagic): simplified the interface of
3748 ipmagic() to take a single string argument, just as it would be
3767 ipmagic() to take a single string argument, just as it would be
3749 typed at the IPython cmd line.
3768 typed at the IPython cmd line.
3750 (ipalias): Added new ipalias() with an interface identical to
3769 (ipalias): Added new ipalias() with an interface identical to
3751 ipmagic(). This completes exposing a pure python interface to the
3770 ipmagic(). This completes exposing a pure python interface to the
3752 alias and magic system, which can be used in loops or more complex
3771 alias and magic system, which can be used in loops or more complex
3753 code where IPython's automatic line mangling is not active.
3772 code where IPython's automatic line mangling is not active.
3754
3773
3755 * IPython/genutils.py (timing): changed interface of timing to
3774 * IPython/genutils.py (timing): changed interface of timing to
3756 simply run code once, which is the most common case. timings()
3775 simply run code once, which is the most common case. timings()
3757 remains unchanged, for the cases where you want multiple runs.
3776 remains unchanged, for the cases where you want multiple runs.
3758
3777
3759 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3778 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3760 bug where Python2.2 crashes with exec'ing code which does not end
3779 bug where Python2.2 crashes with exec'ing code which does not end
3761 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3780 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3762 before.
3781 before.
3763
3782
3764 2004-12-10 Fernando Perez <fperez@colorado.edu>
3783 2004-12-10 Fernando Perez <fperez@colorado.edu>
3765
3784
3766 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3785 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3767 -t to -T, to accomodate the new -t flag in %run (the %run and
3786 -t to -T, to accomodate the new -t flag in %run (the %run and
3768 %prun options are kind of intermixed, and it's not easy to change
3787 %prun options are kind of intermixed, and it's not easy to change
3769 this with the limitations of python's getopt).
3788 this with the limitations of python's getopt).
3770
3789
3771 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3790 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3772 the execution of scripts. It's not as fine-tuned as timeit.py,
3791 the execution of scripts. It's not as fine-tuned as timeit.py,
3773 but it works from inside ipython (and under 2.2, which lacks
3792 but it works from inside ipython (and under 2.2, which lacks
3774 timeit.py). Optionally a number of runs > 1 can be given for
3793 timeit.py). Optionally a number of runs > 1 can be given for
3775 timing very short-running code.
3794 timing very short-running code.
3776
3795
3777 * IPython/genutils.py (uniq_stable): new routine which returns a
3796 * IPython/genutils.py (uniq_stable): new routine which returns a
3778 list of unique elements in any iterable, but in stable order of
3797 list of unique elements in any iterable, but in stable order of
3779 appearance. I needed this for the ultraTB fixes, and it's a handy
3798 appearance. I needed this for the ultraTB fixes, and it's a handy
3780 utility.
3799 utility.
3781
3800
3782 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3801 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3783 dotted names in Verbose exceptions. This had been broken since
3802 dotted names in Verbose exceptions. This had been broken since
3784 the very start, now x.y will properly be printed in a Verbose
3803 the very start, now x.y will properly be printed in a Verbose
3785 traceback, instead of x being shown and y appearing always as an
3804 traceback, instead of x being shown and y appearing always as an
3786 'undefined global'. Getting this to work was a bit tricky,
3805 'undefined global'. Getting this to work was a bit tricky,
3787 because by default python tokenizers are stateless. Saved by
3806 because by default python tokenizers are stateless. Saved by
3788 python's ability to easily add a bit of state to an arbitrary
3807 python's ability to easily add a bit of state to an arbitrary
3789 function (without needing to build a full-blown callable object).
3808 function (without needing to build a full-blown callable object).
3790
3809
3791 Also big cleanup of this code, which had horrendous runtime
3810 Also big cleanup of this code, which had horrendous runtime
3792 lookups of zillions of attributes for colorization. Moved all
3811 lookups of zillions of attributes for colorization. Moved all
3793 this code into a few templates, which make it cleaner and quicker.
3812 this code into a few templates, which make it cleaner and quicker.
3794
3813
3795 Printout quality was also improved for Verbose exceptions: one
3814 Printout quality was also improved for Verbose exceptions: one
3796 variable per line, and memory addresses are printed (this can be
3815 variable per line, and memory addresses are printed (this can be
3797 quite handy in nasty debugging situations, which is what Verbose
3816 quite handy in nasty debugging situations, which is what Verbose
3798 is for).
3817 is for).
3799
3818
3800 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3819 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3801 the command line as scripts to be loaded by embedded instances.
3820 the command line as scripts to be loaded by embedded instances.
3802 Doing so has the potential for an infinite recursion if there are
3821 Doing so has the potential for an infinite recursion if there are
3803 exceptions thrown in the process. This fixes a strange crash
3822 exceptions thrown in the process. This fixes a strange crash
3804 reported by Philippe MULLER <muller-AT-irit.fr>.
3823 reported by Philippe MULLER <muller-AT-irit.fr>.
3805
3824
3806 2004-12-09 Fernando Perez <fperez@colorado.edu>
3825 2004-12-09 Fernando Perez <fperez@colorado.edu>
3807
3826
3808 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3827 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3809 to reflect new names in matplotlib, which now expose the
3828 to reflect new names in matplotlib, which now expose the
3810 matlab-compatible interface via a pylab module instead of the
3829 matlab-compatible interface via a pylab module instead of the
3811 'matlab' name. The new code is backwards compatible, so users of
3830 'matlab' name. The new code is backwards compatible, so users of
3812 all matplotlib versions are OK. Patch by J. Hunter.
3831 all matplotlib versions are OK. Patch by J. Hunter.
3813
3832
3814 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3833 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3815 of __init__ docstrings for instances (class docstrings are already
3834 of __init__ docstrings for instances (class docstrings are already
3816 automatically printed). Instances with customized docstrings
3835 automatically printed). Instances with customized docstrings
3817 (indep. of the class) are also recognized and all 3 separate
3836 (indep. of the class) are also recognized and all 3 separate
3818 docstrings are printed (instance, class, constructor). After some
3837 docstrings are printed (instance, class, constructor). After some
3819 comments/suggestions by J. Hunter.
3838 comments/suggestions by J. Hunter.
3820
3839
3821 2004-12-05 Fernando Perez <fperez@colorado.edu>
3840 2004-12-05 Fernando Perez <fperez@colorado.edu>
3822
3841
3823 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3842 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3824 warnings when tab-completion fails and triggers an exception.
3843 warnings when tab-completion fails and triggers an exception.
3825
3844
3826 2004-12-03 Fernando Perez <fperez@colorado.edu>
3845 2004-12-03 Fernando Perez <fperez@colorado.edu>
3827
3846
3828 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3847 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3829 be triggered when using 'run -p'. An incorrect option flag was
3848 be triggered when using 'run -p'. An incorrect option flag was
3830 being set ('d' instead of 'D').
3849 being set ('d' instead of 'D').
3831 (manpage): fix missing escaped \- sign.
3850 (manpage): fix missing escaped \- sign.
3832
3851
3833 2004-11-30 *** Released version 0.6.5
3852 2004-11-30 *** Released version 0.6.5
3834
3853
3835 2004-11-30 Fernando Perez <fperez@colorado.edu>
3854 2004-11-30 Fernando Perez <fperez@colorado.edu>
3836
3855
3837 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3856 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3838 setting with -d option.
3857 setting with -d option.
3839
3858
3840 * setup.py (docfiles): Fix problem where the doc glob I was using
3859 * setup.py (docfiles): Fix problem where the doc glob I was using
3841 was COMPLETELY BROKEN. It was giving the right files by pure
3860 was COMPLETELY BROKEN. It was giving the right files by pure
3842 accident, but failed once I tried to include ipython.el. Note:
3861 accident, but failed once I tried to include ipython.el. Note:
3843 glob() does NOT allow you to do exclusion on multiple endings!
3862 glob() does NOT allow you to do exclusion on multiple endings!
3844
3863
3845 2004-11-29 Fernando Perez <fperez@colorado.edu>
3864 2004-11-29 Fernando Perez <fperez@colorado.edu>
3846
3865
3847 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3866 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3848 the manpage as the source. Better formatting & consistency.
3867 the manpage as the source. Better formatting & consistency.
3849
3868
3850 * IPython/Magic.py (magic_run): Added new -d option, to run
3869 * IPython/Magic.py (magic_run): Added new -d option, to run
3851 scripts under the control of the python pdb debugger. Note that
3870 scripts under the control of the python pdb debugger. Note that
3852 this required changing the %prun option -d to -D, to avoid a clash
3871 this required changing the %prun option -d to -D, to avoid a clash
3853 (since %run must pass options to %prun, and getopt is too dumb to
3872 (since %run must pass options to %prun, and getopt is too dumb to
3854 handle options with string values with embedded spaces). Thanks
3873 handle options with string values with embedded spaces). Thanks
3855 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3874 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3856 (magic_who_ls): added type matching to %who and %whos, so that one
3875 (magic_who_ls): added type matching to %who and %whos, so that one
3857 can filter their output to only include variables of certain
3876 can filter their output to only include variables of certain
3858 types. Another suggestion by Matthew.
3877 types. Another suggestion by Matthew.
3859 (magic_whos): Added memory summaries in kb and Mb for arrays.
3878 (magic_whos): Added memory summaries in kb and Mb for arrays.
3860 (magic_who): Improve formatting (break lines every 9 vars).
3879 (magic_who): Improve formatting (break lines every 9 vars).
3861
3880
3862 2004-11-28 Fernando Perez <fperez@colorado.edu>
3881 2004-11-28 Fernando Perez <fperez@colorado.edu>
3863
3882
3864 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3883 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3865 cache when empty lines were present.
3884 cache when empty lines were present.
3866
3885
3867 2004-11-24 Fernando Perez <fperez@colorado.edu>
3886 2004-11-24 Fernando Perez <fperez@colorado.edu>
3868
3887
3869 * IPython/usage.py (__doc__): document the re-activated threading
3888 * IPython/usage.py (__doc__): document the re-activated threading
3870 options for WX and GTK.
3889 options for WX and GTK.
3871
3890
3872 2004-11-23 Fernando Perez <fperez@colorado.edu>
3891 2004-11-23 Fernando Perez <fperez@colorado.edu>
3873
3892
3874 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3893 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3875 the -wthread and -gthread options, along with a new -tk one to try
3894 the -wthread and -gthread options, along with a new -tk one to try
3876 and coordinate Tk threading with wx/gtk. The tk support is very
3895 and coordinate Tk threading with wx/gtk. The tk support is very
3877 platform dependent, since it seems to require Tcl and Tk to be
3896 platform dependent, since it seems to require Tcl and Tk to be
3878 built with threads (Fedora1/2 appears NOT to have it, but in
3897 built with threads (Fedora1/2 appears NOT to have it, but in
3879 Prabhu's Debian boxes it works OK). But even with some Tk
3898 Prabhu's Debian boxes it works OK). But even with some Tk
3880 limitations, this is a great improvement.
3899 limitations, this is a great improvement.
3881
3900
3882 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3901 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3883 info in user prompts. Patch by Prabhu.
3902 info in user prompts. Patch by Prabhu.
3884
3903
3885 2004-11-18 Fernando Perez <fperez@colorado.edu>
3904 2004-11-18 Fernando Perez <fperez@colorado.edu>
3886
3905
3887 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3906 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3888 EOFErrors and bail, to avoid infinite loops if a non-terminating
3907 EOFErrors and bail, to avoid infinite loops if a non-terminating
3889 file is fed into ipython. Patch submitted in issue 19 by user,
3908 file is fed into ipython. Patch submitted in issue 19 by user,
3890 many thanks.
3909 many thanks.
3891
3910
3892 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3911 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3893 autoquote/parens in continuation prompts, which can cause lots of
3912 autoquote/parens in continuation prompts, which can cause lots of
3894 problems. Closes roundup issue 20.
3913 problems. Closes roundup issue 20.
3895
3914
3896 2004-11-17 Fernando Perez <fperez@colorado.edu>
3915 2004-11-17 Fernando Perez <fperez@colorado.edu>
3897
3916
3898 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3917 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3899 reported as debian bug #280505. I'm not sure my local changelog
3918 reported as debian bug #280505. I'm not sure my local changelog
3900 entry has the proper debian format (Jack?).
3919 entry has the proper debian format (Jack?).
3901
3920
3902 2004-11-08 *** Released version 0.6.4
3921 2004-11-08 *** Released version 0.6.4
3903
3922
3904 2004-11-08 Fernando Perez <fperez@colorado.edu>
3923 2004-11-08 Fernando Perez <fperez@colorado.edu>
3905
3924
3906 * IPython/iplib.py (init_readline): Fix exit message for Windows
3925 * IPython/iplib.py (init_readline): Fix exit message for Windows
3907 when readline is active. Thanks to a report by Eric Jones
3926 when readline is active. Thanks to a report by Eric Jones
3908 <eric-AT-enthought.com>.
3927 <eric-AT-enthought.com>.
3909
3928
3910 2004-11-07 Fernando Perez <fperez@colorado.edu>
3929 2004-11-07 Fernando Perez <fperez@colorado.edu>
3911
3930
3912 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3931 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3913 sometimes seen by win2k/cygwin users.
3932 sometimes seen by win2k/cygwin users.
3914
3933
3915 2004-11-06 Fernando Perez <fperez@colorado.edu>
3934 2004-11-06 Fernando Perez <fperez@colorado.edu>
3916
3935
3917 * IPython/iplib.py (interact): Change the handling of %Exit from
3936 * IPython/iplib.py (interact): Change the handling of %Exit from
3918 trying to propagate a SystemExit to an internal ipython flag.
3937 trying to propagate a SystemExit to an internal ipython flag.
3919 This is less elegant than using Python's exception mechanism, but
3938 This is less elegant than using Python's exception mechanism, but
3920 I can't get that to work reliably with threads, so under -pylab
3939 I can't get that to work reliably with threads, so under -pylab
3921 %Exit was hanging IPython. Cross-thread exception handling is
3940 %Exit was hanging IPython. Cross-thread exception handling is
3922 really a bitch. Thaks to a bug report by Stephen Walton
3941 really a bitch. Thaks to a bug report by Stephen Walton
3923 <stephen.walton-AT-csun.edu>.
3942 <stephen.walton-AT-csun.edu>.
3924
3943
3925 2004-11-04 Fernando Perez <fperez@colorado.edu>
3944 2004-11-04 Fernando Perez <fperez@colorado.edu>
3926
3945
3927 * IPython/iplib.py (raw_input_original): store a pointer to the
3946 * IPython/iplib.py (raw_input_original): store a pointer to the
3928 true raw_input to harden against code which can modify it
3947 true raw_input to harden against code which can modify it
3929 (wx.py.PyShell does this and would otherwise crash ipython).
3948 (wx.py.PyShell does this and would otherwise crash ipython).
3930 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3949 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3931
3950
3932 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3951 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3933 Ctrl-C problem, which does not mess up the input line.
3952 Ctrl-C problem, which does not mess up the input line.
3934
3953
3935 2004-11-03 Fernando Perez <fperez@colorado.edu>
3954 2004-11-03 Fernando Perez <fperez@colorado.edu>
3936
3955
3937 * IPython/Release.py: Changed licensing to BSD, in all files.
3956 * IPython/Release.py: Changed licensing to BSD, in all files.
3938 (name): lowercase name for tarball/RPM release.
3957 (name): lowercase name for tarball/RPM release.
3939
3958
3940 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3959 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3941 use throughout ipython.
3960 use throughout ipython.
3942
3961
3943 * IPython/Magic.py (Magic._ofind): Switch to using the new
3962 * IPython/Magic.py (Magic._ofind): Switch to using the new
3944 OInspect.getdoc() function.
3963 OInspect.getdoc() function.
3945
3964
3946 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3965 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3947 of the line currently being canceled via Ctrl-C. It's extremely
3966 of the line currently being canceled via Ctrl-C. It's extremely
3948 ugly, but I don't know how to do it better (the problem is one of
3967 ugly, but I don't know how to do it better (the problem is one of
3949 handling cross-thread exceptions).
3968 handling cross-thread exceptions).
3950
3969
3951 2004-10-28 Fernando Perez <fperez@colorado.edu>
3970 2004-10-28 Fernando Perez <fperez@colorado.edu>
3952
3971
3953 * IPython/Shell.py (signal_handler): add signal handlers to trap
3972 * IPython/Shell.py (signal_handler): add signal handlers to trap
3954 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3973 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3955 report by Francesc Alted.
3974 report by Francesc Alted.
3956
3975
3957 2004-10-21 Fernando Perez <fperez@colorado.edu>
3976 2004-10-21 Fernando Perez <fperez@colorado.edu>
3958
3977
3959 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3978 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3960 to % for pysh syntax extensions.
3979 to % for pysh syntax extensions.
3961
3980
3962 2004-10-09 Fernando Perez <fperez@colorado.edu>
3981 2004-10-09 Fernando Perez <fperez@colorado.edu>
3963
3982
3964 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3983 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3965 arrays to print a more useful summary, without calling str(arr).
3984 arrays to print a more useful summary, without calling str(arr).
3966 This avoids the problem of extremely lengthy computations which
3985 This avoids the problem of extremely lengthy computations which
3967 occur if arr is large, and appear to the user as a system lockup
3986 occur if arr is large, and appear to the user as a system lockup
3968 with 100% cpu activity. After a suggestion by Kristian Sandberg
3987 with 100% cpu activity. After a suggestion by Kristian Sandberg
3969 <Kristian.Sandberg@colorado.edu>.
3988 <Kristian.Sandberg@colorado.edu>.
3970 (Magic.__init__): fix bug in global magic escapes not being
3989 (Magic.__init__): fix bug in global magic escapes not being
3971 correctly set.
3990 correctly set.
3972
3991
3973 2004-10-08 Fernando Perez <fperez@colorado.edu>
3992 2004-10-08 Fernando Perez <fperez@colorado.edu>
3974
3993
3975 * IPython/Magic.py (__license__): change to absolute imports of
3994 * IPython/Magic.py (__license__): change to absolute imports of
3976 ipython's own internal packages, to start adapting to the absolute
3995 ipython's own internal packages, to start adapting to the absolute
3977 import requirement of PEP-328.
3996 import requirement of PEP-328.
3978
3997
3979 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3998 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3980 files, and standardize author/license marks through the Release
3999 files, and standardize author/license marks through the Release
3981 module instead of having per/file stuff (except for files with
4000 module instead of having per/file stuff (except for files with
3982 particular licenses, like the MIT/PSF-licensed codes).
4001 particular licenses, like the MIT/PSF-licensed codes).
3983
4002
3984 * IPython/Debugger.py: remove dead code for python 2.1
4003 * IPython/Debugger.py: remove dead code for python 2.1
3985
4004
3986 2004-10-04 Fernando Perez <fperez@colorado.edu>
4005 2004-10-04 Fernando Perez <fperez@colorado.edu>
3987
4006
3988 * IPython/iplib.py (ipmagic): New function for accessing magics
4007 * IPython/iplib.py (ipmagic): New function for accessing magics
3989 via a normal python function call.
4008 via a normal python function call.
3990
4009
3991 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
4010 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3992 from '@' to '%', to accomodate the new @decorator syntax of python
4011 from '@' to '%', to accomodate the new @decorator syntax of python
3993 2.4.
4012 2.4.
3994
4013
3995 2004-09-29 Fernando Perez <fperez@colorado.edu>
4014 2004-09-29 Fernando Perez <fperez@colorado.edu>
3996
4015
3997 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
4016 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3998 matplotlib.use to prevent running scripts which try to switch
4017 matplotlib.use to prevent running scripts which try to switch
3999 interactive backends from within ipython. This will just crash
4018 interactive backends from within ipython. This will just crash
4000 the python interpreter, so we can't allow it (but a detailed error
4019 the python interpreter, so we can't allow it (but a detailed error
4001 is given to the user).
4020 is given to the user).
4002
4021
4003 2004-09-28 Fernando Perez <fperez@colorado.edu>
4022 2004-09-28 Fernando Perez <fperez@colorado.edu>
4004
4023
4005 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
4024 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
4006 matplotlib-related fixes so that using @run with non-matplotlib
4025 matplotlib-related fixes so that using @run with non-matplotlib
4007 scripts doesn't pop up spurious plot windows. This requires
4026 scripts doesn't pop up spurious plot windows. This requires
4008 matplotlib >= 0.63, where I had to make some changes as well.
4027 matplotlib >= 0.63, where I had to make some changes as well.
4009
4028
4010 * IPython/ipmaker.py (make_IPython): update version requirement to
4029 * IPython/ipmaker.py (make_IPython): update version requirement to
4011 python 2.2.
4030 python 2.2.
4012
4031
4013 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
4032 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
4014 banner arg for embedded customization.
4033 banner arg for embedded customization.
4015
4034
4016 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
4035 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
4017 explicit uses of __IP as the IPython's instance name. Now things
4036 explicit uses of __IP as the IPython's instance name. Now things
4018 are properly handled via the shell.name value. The actual code
4037 are properly handled via the shell.name value. The actual code
4019 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
4038 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
4020 is much better than before. I'll clean things completely when the
4039 is much better than before. I'll clean things completely when the
4021 magic stuff gets a real overhaul.
4040 magic stuff gets a real overhaul.
4022
4041
4023 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
4042 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
4024 minor changes to debian dir.
4043 minor changes to debian dir.
4025
4044
4026 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
4045 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
4027 pointer to the shell itself in the interactive namespace even when
4046 pointer to the shell itself in the interactive namespace even when
4028 a user-supplied dict is provided. This is needed for embedding
4047 a user-supplied dict is provided. This is needed for embedding
4029 purposes (found by tests with Michel Sanner).
4048 purposes (found by tests with Michel Sanner).
4030
4049
4031 2004-09-27 Fernando Perez <fperez@colorado.edu>
4050 2004-09-27 Fernando Perez <fperez@colorado.edu>
4032
4051
4033 * IPython/UserConfig/ipythonrc: remove []{} from
4052 * IPython/UserConfig/ipythonrc: remove []{} from
4034 readline_remove_delims, so that things like [modname.<TAB> do
4053 readline_remove_delims, so that things like [modname.<TAB> do
4035 proper completion. This disables [].TAB, but that's a less common
4054 proper completion. This disables [].TAB, but that's a less common
4036 case than module names in list comprehensions, for example.
4055 case than module names in list comprehensions, for example.
4037 Thanks to a report by Andrea Riciputi.
4056 Thanks to a report by Andrea Riciputi.
4038
4057
4039 2004-09-09 Fernando Perez <fperez@colorado.edu>
4058 2004-09-09 Fernando Perez <fperez@colorado.edu>
4040
4059
4041 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
4060 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
4042 blocking problems in win32 and osx. Fix by John.
4061 blocking problems in win32 and osx. Fix by John.
4043
4062
4044 2004-09-08 Fernando Perez <fperez@colorado.edu>
4063 2004-09-08 Fernando Perez <fperez@colorado.edu>
4045
4064
4046 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
4065 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
4047 for Win32 and OSX. Fix by John Hunter.
4066 for Win32 and OSX. Fix by John Hunter.
4048
4067
4049 2004-08-30 *** Released version 0.6.3
4068 2004-08-30 *** Released version 0.6.3
4050
4069
4051 2004-08-30 Fernando Perez <fperez@colorado.edu>
4070 2004-08-30 Fernando Perez <fperez@colorado.edu>
4052
4071
4053 * setup.py (isfile): Add manpages to list of dependent files to be
4072 * setup.py (isfile): Add manpages to list of dependent files to be
4054 updated.
4073 updated.
4055
4074
4056 2004-08-27 Fernando Perez <fperez@colorado.edu>
4075 2004-08-27 Fernando Perez <fperez@colorado.edu>
4057
4076
4058 * IPython/Shell.py (start): I've disabled -wthread and -gthread
4077 * IPython/Shell.py (start): I've disabled -wthread and -gthread
4059 for now. They don't really work with standalone WX/GTK code
4078 for now. They don't really work with standalone WX/GTK code
4060 (though matplotlib IS working fine with both of those backends).
4079 (though matplotlib IS working fine with both of those backends).
4061 This will neeed much more testing. I disabled most things with
4080 This will neeed much more testing. I disabled most things with
4062 comments, so turning it back on later should be pretty easy.
4081 comments, so turning it back on later should be pretty easy.
4063
4082
4064 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
4083 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
4065 autocalling of expressions like r'foo', by modifying the line
4084 autocalling of expressions like r'foo', by modifying the line
4066 split regexp. Closes
4085 split regexp. Closes
4067 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
4086 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
4068 Riley <ipythonbugs-AT-sabi.net>.
4087 Riley <ipythonbugs-AT-sabi.net>.
4069 (InteractiveShell.mainloop): honor --nobanner with banner
4088 (InteractiveShell.mainloop): honor --nobanner with banner
4070 extensions.
4089 extensions.
4071
4090
4072 * IPython/Shell.py: Significant refactoring of all classes, so
4091 * IPython/Shell.py: Significant refactoring of all classes, so
4073 that we can really support ALL matplotlib backends and threading
4092 that we can really support ALL matplotlib backends and threading
4074 models (John spotted a bug with Tk which required this). Now we
4093 models (John spotted a bug with Tk which required this). Now we
4075 should support single-threaded, WX-threads and GTK-threads, both
4094 should support single-threaded, WX-threads and GTK-threads, both
4076 for generic code and for matplotlib.
4095 for generic code and for matplotlib.
4077
4096
4078 * IPython/ipmaker.py (__call__): Changed -mpthread option to
4097 * IPython/ipmaker.py (__call__): Changed -mpthread option to
4079 -pylab, to simplify things for users. Will also remove the pylab
4098 -pylab, to simplify things for users. Will also remove the pylab
4080 profile, since now all of matplotlib configuration is directly
4099 profile, since now all of matplotlib configuration is directly
4081 handled here. This also reduces startup time.
4100 handled here. This also reduces startup time.
4082
4101
4083 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
4102 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
4084 shell wasn't being correctly called. Also in IPShellWX.
4103 shell wasn't being correctly called. Also in IPShellWX.
4085
4104
4086 * IPython/iplib.py (InteractiveShell.__init__): Added option to
4105 * IPython/iplib.py (InteractiveShell.__init__): Added option to
4087 fine-tune banner.
4106 fine-tune banner.
4088
4107
4089 * IPython/numutils.py (spike): Deprecate these spike functions,
4108 * IPython/numutils.py (spike): Deprecate these spike functions,
4090 delete (long deprecated) gnuplot_exec handler.
4109 delete (long deprecated) gnuplot_exec handler.
4091
4110
4092 2004-08-26 Fernando Perez <fperez@colorado.edu>
4111 2004-08-26 Fernando Perez <fperez@colorado.edu>
4093
4112
4094 * ipython.1: Update for threading options, plus some others which
4113 * ipython.1: Update for threading options, plus some others which
4095 were missing.
4114 were missing.
4096
4115
4097 * IPython/ipmaker.py (__call__): Added -wthread option for
4116 * IPython/ipmaker.py (__call__): Added -wthread option for
4098 wxpython thread handling. Make sure threading options are only
4117 wxpython thread handling. Make sure threading options are only
4099 valid at the command line.
4118 valid at the command line.
4100
4119
4101 * scripts/ipython: moved shell selection into a factory function
4120 * scripts/ipython: moved shell selection into a factory function
4102 in Shell.py, to keep the starter script to a minimum.
4121 in Shell.py, to keep the starter script to a minimum.
4103
4122
4104 2004-08-25 Fernando Perez <fperez@colorado.edu>
4123 2004-08-25 Fernando Perez <fperez@colorado.edu>
4105
4124
4106 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
4125 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
4107 John. Along with some recent changes he made to matplotlib, the
4126 John. Along with some recent changes he made to matplotlib, the
4108 next versions of both systems should work very well together.
4127 next versions of both systems should work very well together.
4109
4128
4110 2004-08-24 Fernando Perez <fperez@colorado.edu>
4129 2004-08-24 Fernando Perez <fperez@colorado.edu>
4111
4130
4112 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4131 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4113 tried to switch the profiling to using hotshot, but I'm getting
4132 tried to switch the profiling to using hotshot, but I'm getting
4114 strange errors from prof.runctx() there. I may be misreading the
4133 strange errors from prof.runctx() there. I may be misreading the
4115 docs, but it looks weird. For now the profiling code will
4134 docs, but it looks weird. For now the profiling code will
4116 continue to use the standard profiler.
4135 continue to use the standard profiler.
4117
4136
4118 2004-08-23 Fernando Perez <fperez@colorado.edu>
4137 2004-08-23 Fernando Perez <fperez@colorado.edu>
4119
4138
4120 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4139 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4121 threaded shell, by John Hunter. It's not quite ready yet, but
4140 threaded shell, by John Hunter. It's not quite ready yet, but
4122 close.
4141 close.
4123
4142
4124 2004-08-22 Fernando Perez <fperez@colorado.edu>
4143 2004-08-22 Fernando Perez <fperez@colorado.edu>
4125
4144
4126 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4145 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4127 in Magic and ultraTB.
4146 in Magic and ultraTB.
4128
4147
4129 * ipython.1: document threading options in manpage.
4148 * ipython.1: document threading options in manpage.
4130
4149
4131 * scripts/ipython: Changed name of -thread option to -gthread,
4150 * scripts/ipython: Changed name of -thread option to -gthread,
4132 since this is GTK specific. I want to leave the door open for a
4151 since this is GTK specific. I want to leave the door open for a
4133 -wthread option for WX, which will most likely be necessary. This
4152 -wthread option for WX, which will most likely be necessary. This
4134 change affects usage and ipmaker as well.
4153 change affects usage and ipmaker as well.
4135
4154
4136 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4155 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4137 handle the matplotlib shell issues. Code by John Hunter
4156 handle the matplotlib shell issues. Code by John Hunter
4138 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4157 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4139 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4158 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4140 broken (and disabled for end users) for now, but it puts the
4159 broken (and disabled for end users) for now, but it puts the
4141 infrastructure in place.
4160 infrastructure in place.
4142
4161
4143 2004-08-21 Fernando Perez <fperez@colorado.edu>
4162 2004-08-21 Fernando Perez <fperez@colorado.edu>
4144
4163
4145 * ipythonrc-pylab: Add matplotlib support.
4164 * ipythonrc-pylab: Add matplotlib support.
4146
4165
4147 * matplotlib_config.py: new files for matplotlib support, part of
4166 * matplotlib_config.py: new files for matplotlib support, part of
4148 the pylab profile.
4167 the pylab profile.
4149
4168
4150 * IPython/usage.py (__doc__): documented the threading options.
4169 * IPython/usage.py (__doc__): documented the threading options.
4151
4170
4152 2004-08-20 Fernando Perez <fperez@colorado.edu>
4171 2004-08-20 Fernando Perez <fperez@colorado.edu>
4153
4172
4154 * ipython: Modified the main calling routine to handle the -thread
4173 * ipython: Modified the main calling routine to handle the -thread
4155 and -mpthread options. This needs to be done as a top-level hack,
4174 and -mpthread options. This needs to be done as a top-level hack,
4156 because it determines which class to instantiate for IPython
4175 because it determines which class to instantiate for IPython
4157 itself.
4176 itself.
4158
4177
4159 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4178 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4160 classes to support multithreaded GTK operation without blocking,
4179 classes to support multithreaded GTK operation without blocking,
4161 and matplotlib with all backends. This is a lot of still very
4180 and matplotlib with all backends. This is a lot of still very
4162 experimental code, and threads are tricky. So it may still have a
4181 experimental code, and threads are tricky. So it may still have a
4163 few rough edges... This code owes a lot to
4182 few rough edges... This code owes a lot to
4164 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4183 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4165 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4184 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4166 to John Hunter for all the matplotlib work.
4185 to John Hunter for all the matplotlib work.
4167
4186
4168 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4187 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4169 options for gtk thread and matplotlib support.
4188 options for gtk thread and matplotlib support.
4170
4189
4171 2004-08-16 Fernando Perez <fperez@colorado.edu>
4190 2004-08-16 Fernando Perez <fperez@colorado.edu>
4172
4191
4173 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4192 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4174 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4193 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4175 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4194 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4176
4195
4177 2004-08-11 Fernando Perez <fperez@colorado.edu>
4196 2004-08-11 Fernando Perez <fperez@colorado.edu>
4178
4197
4179 * setup.py (isfile): Fix build so documentation gets updated for
4198 * setup.py (isfile): Fix build so documentation gets updated for
4180 rpms (it was only done for .tgz builds).
4199 rpms (it was only done for .tgz builds).
4181
4200
4182 2004-08-10 Fernando Perez <fperez@colorado.edu>
4201 2004-08-10 Fernando Perez <fperez@colorado.edu>
4183
4202
4184 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4203 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4185
4204
4186 * iplib.py : Silence syntax error exceptions in tab-completion.
4205 * iplib.py : Silence syntax error exceptions in tab-completion.
4187
4206
4188 2004-08-05 Fernando Perez <fperez@colorado.edu>
4207 2004-08-05 Fernando Perez <fperez@colorado.edu>
4189
4208
4190 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4209 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4191 'color off' mark for continuation prompts. This was causing long
4210 'color off' mark for continuation prompts. This was causing long
4192 continuation lines to mis-wrap.
4211 continuation lines to mis-wrap.
4193
4212
4194 2004-08-01 Fernando Perez <fperez@colorado.edu>
4213 2004-08-01 Fernando Perez <fperez@colorado.edu>
4195
4214
4196 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4215 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4197 for building ipython to be a parameter. All this is necessary
4216 for building ipython to be a parameter. All this is necessary
4198 right now to have a multithreaded version, but this insane
4217 right now to have a multithreaded version, but this insane
4199 non-design will be cleaned up soon. For now, it's a hack that
4218 non-design will be cleaned up soon. For now, it's a hack that
4200 works.
4219 works.
4201
4220
4202 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4221 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4203 args in various places. No bugs so far, but it's a dangerous
4222 args in various places. No bugs so far, but it's a dangerous
4204 practice.
4223 practice.
4205
4224
4206 2004-07-31 Fernando Perez <fperez@colorado.edu>
4225 2004-07-31 Fernando Perez <fperez@colorado.edu>
4207
4226
4208 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4227 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4209 fix completion of files with dots in their names under most
4228 fix completion of files with dots in their names under most
4210 profiles (pysh was OK because the completion order is different).
4229 profiles (pysh was OK because the completion order is different).
4211
4230
4212 2004-07-27 Fernando Perez <fperez@colorado.edu>
4231 2004-07-27 Fernando Perez <fperez@colorado.edu>
4213
4232
4214 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4233 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4215 keywords manually, b/c the one in keyword.py was removed in python
4234 keywords manually, b/c the one in keyword.py was removed in python
4216 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4235 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4217 This is NOT a bug under python 2.3 and earlier.
4236 This is NOT a bug under python 2.3 and earlier.
4218
4237
4219 2004-07-26 Fernando Perez <fperez@colorado.edu>
4238 2004-07-26 Fernando Perez <fperez@colorado.edu>
4220
4239
4221 * IPython/ultraTB.py (VerboseTB.text): Add another
4240 * IPython/ultraTB.py (VerboseTB.text): Add another
4222 linecache.checkcache() call to try to prevent inspect.py from
4241 linecache.checkcache() call to try to prevent inspect.py from
4223 crashing under python 2.3. I think this fixes
4242 crashing under python 2.3. I think this fixes
4224 http://www.scipy.net/roundup/ipython/issue17.
4243 http://www.scipy.net/roundup/ipython/issue17.
4225
4244
4226 2004-07-26 *** Released version 0.6.2
4245 2004-07-26 *** Released version 0.6.2
4227
4246
4228 2004-07-26 Fernando Perez <fperez@colorado.edu>
4247 2004-07-26 Fernando Perez <fperez@colorado.edu>
4229
4248
4230 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4249 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4231 fail for any number.
4250 fail for any number.
4232 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4251 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4233 empty bookmarks.
4252 empty bookmarks.
4234
4253
4235 2004-07-26 *** Released version 0.6.1
4254 2004-07-26 *** Released version 0.6.1
4236
4255
4237 2004-07-26 Fernando Perez <fperez@colorado.edu>
4256 2004-07-26 Fernando Perez <fperez@colorado.edu>
4238
4257
4239 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4258 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4240
4259
4241 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4260 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4242 escaping '()[]{}' in filenames.
4261 escaping '()[]{}' in filenames.
4243
4262
4244 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4263 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4245 Python 2.2 users who lack a proper shlex.split.
4264 Python 2.2 users who lack a proper shlex.split.
4246
4265
4247 2004-07-19 Fernando Perez <fperez@colorado.edu>
4266 2004-07-19 Fernando Perez <fperez@colorado.edu>
4248
4267
4249 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4268 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4250 for reading readline's init file. I follow the normal chain:
4269 for reading readline's init file. I follow the normal chain:
4251 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4270 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4252 report by Mike Heeter. This closes
4271 report by Mike Heeter. This closes
4253 http://www.scipy.net/roundup/ipython/issue16.
4272 http://www.scipy.net/roundup/ipython/issue16.
4254
4273
4255 2004-07-18 Fernando Perez <fperez@colorado.edu>
4274 2004-07-18 Fernando Perez <fperez@colorado.edu>
4256
4275
4257 * IPython/iplib.py (__init__): Add better handling of '\' under
4276 * IPython/iplib.py (__init__): Add better handling of '\' under
4258 Win32 for filenames. After a patch by Ville.
4277 Win32 for filenames. After a patch by Ville.
4259
4278
4260 2004-07-17 Fernando Perez <fperez@colorado.edu>
4279 2004-07-17 Fernando Perez <fperez@colorado.edu>
4261
4280
4262 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4281 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4263 autocalling would be triggered for 'foo is bar' if foo is
4282 autocalling would be triggered for 'foo is bar' if foo is
4264 callable. I also cleaned up the autocall detection code to use a
4283 callable. I also cleaned up the autocall detection code to use a
4265 regexp, which is faster. Bug reported by Alexander Schmolck.
4284 regexp, which is faster. Bug reported by Alexander Schmolck.
4266
4285
4267 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4286 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4268 '?' in them would confuse the help system. Reported by Alex
4287 '?' in them would confuse the help system. Reported by Alex
4269 Schmolck.
4288 Schmolck.
4270
4289
4271 2004-07-16 Fernando Perez <fperez@colorado.edu>
4290 2004-07-16 Fernando Perez <fperez@colorado.edu>
4272
4291
4273 * IPython/GnuplotInteractive.py (__all__): added plot2.
4292 * IPython/GnuplotInteractive.py (__all__): added plot2.
4274
4293
4275 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4294 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4276 plotting dictionaries, lists or tuples of 1d arrays.
4295 plotting dictionaries, lists or tuples of 1d arrays.
4277
4296
4278 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4297 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4279 optimizations.
4298 optimizations.
4280
4299
4281 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4300 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4282 the information which was there from Janko's original IPP code:
4301 the information which was there from Janko's original IPP code:
4283
4302
4284 03.05.99 20:53 porto.ifm.uni-kiel.de
4303 03.05.99 20:53 porto.ifm.uni-kiel.de
4285 --Started changelog.
4304 --Started changelog.
4286 --make clear do what it say it does
4305 --make clear do what it say it does
4287 --added pretty output of lines from inputcache
4306 --added pretty output of lines from inputcache
4288 --Made Logger a mixin class, simplifies handling of switches
4307 --Made Logger a mixin class, simplifies handling of switches
4289 --Added own completer class. .string<TAB> expands to last history
4308 --Added own completer class. .string<TAB> expands to last history
4290 line which starts with string. The new expansion is also present
4309 line which starts with string. The new expansion is also present
4291 with Ctrl-r from the readline library. But this shows, who this
4310 with Ctrl-r from the readline library. But this shows, who this
4292 can be done for other cases.
4311 can be done for other cases.
4293 --Added convention that all shell functions should accept a
4312 --Added convention that all shell functions should accept a
4294 parameter_string This opens the door for different behaviour for
4313 parameter_string This opens the door for different behaviour for
4295 each function. @cd is a good example of this.
4314 each function. @cd is a good example of this.
4296
4315
4297 04.05.99 12:12 porto.ifm.uni-kiel.de
4316 04.05.99 12:12 porto.ifm.uni-kiel.de
4298 --added logfile rotation
4317 --added logfile rotation
4299 --added new mainloop method which freezes first the namespace
4318 --added new mainloop method which freezes first the namespace
4300
4319
4301 07.05.99 21:24 porto.ifm.uni-kiel.de
4320 07.05.99 21:24 porto.ifm.uni-kiel.de
4302 --added the docreader classes. Now there is a help system.
4321 --added the docreader classes. Now there is a help system.
4303 -This is only a first try. Currently it's not easy to put new
4322 -This is only a first try. Currently it's not easy to put new
4304 stuff in the indices. But this is the way to go. Info would be
4323 stuff in the indices. But this is the way to go. Info would be
4305 better, but HTML is every where and not everybody has an info
4324 better, but HTML is every where and not everybody has an info
4306 system installed and it's not so easy to change html-docs to info.
4325 system installed and it's not so easy to change html-docs to info.
4307 --added global logfile option
4326 --added global logfile option
4308 --there is now a hook for object inspection method pinfo needs to
4327 --there is now a hook for object inspection method pinfo needs to
4309 be provided for this. Can be reached by two '??'.
4328 be provided for this. Can be reached by two '??'.
4310
4329
4311 08.05.99 20:51 porto.ifm.uni-kiel.de
4330 08.05.99 20:51 porto.ifm.uni-kiel.de
4312 --added a README
4331 --added a README
4313 --bug in rc file. Something has changed so functions in the rc
4332 --bug in rc file. Something has changed so functions in the rc
4314 file need to reference the shell and not self. Not clear if it's a
4333 file need to reference the shell and not self. Not clear if it's a
4315 bug or feature.
4334 bug or feature.
4316 --changed rc file for new behavior
4335 --changed rc file for new behavior
4317
4336
4318 2004-07-15 Fernando Perez <fperez@colorado.edu>
4337 2004-07-15 Fernando Perez <fperez@colorado.edu>
4319
4338
4320 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4339 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4321 cache was falling out of sync in bizarre manners when multi-line
4340 cache was falling out of sync in bizarre manners when multi-line
4322 input was present. Minor optimizations and cleanup.
4341 input was present. Minor optimizations and cleanup.
4323
4342
4324 (Logger): Remove old Changelog info for cleanup. This is the
4343 (Logger): Remove old Changelog info for cleanup. This is the
4325 information which was there from Janko's original code:
4344 information which was there from Janko's original code:
4326
4345
4327 Changes to Logger: - made the default log filename a parameter
4346 Changes to Logger: - made the default log filename a parameter
4328
4347
4329 - put a check for lines beginning with !@? in log(). Needed
4348 - put a check for lines beginning with !@? in log(). Needed
4330 (even if the handlers properly log their lines) for mid-session
4349 (even if the handlers properly log their lines) for mid-session
4331 logging activation to work properly. Without this, lines logged
4350 logging activation to work properly. Without this, lines logged
4332 in mid session, which get read from the cache, would end up
4351 in mid session, which get read from the cache, would end up
4333 'bare' (with !@? in the open) in the log. Now they are caught
4352 'bare' (with !@? in the open) in the log. Now they are caught
4334 and prepended with a #.
4353 and prepended with a #.
4335
4354
4336 * IPython/iplib.py (InteractiveShell.init_readline): added check
4355 * IPython/iplib.py (InteractiveShell.init_readline): added check
4337 in case MagicCompleter fails to be defined, so we don't crash.
4356 in case MagicCompleter fails to be defined, so we don't crash.
4338
4357
4339 2004-07-13 Fernando Perez <fperez@colorado.edu>
4358 2004-07-13 Fernando Perez <fperez@colorado.edu>
4340
4359
4341 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4360 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4342 of EPS if the requested filename ends in '.eps'.
4361 of EPS if the requested filename ends in '.eps'.
4343
4362
4344 2004-07-04 Fernando Perez <fperez@colorado.edu>
4363 2004-07-04 Fernando Perez <fperez@colorado.edu>
4345
4364
4346 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4365 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4347 escaping of quotes when calling the shell.
4366 escaping of quotes when calling the shell.
4348
4367
4349 2004-07-02 Fernando Perez <fperez@colorado.edu>
4368 2004-07-02 Fernando Perez <fperez@colorado.edu>
4350
4369
4351 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4370 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4352 gettext not working because we were clobbering '_'. Fixes
4371 gettext not working because we were clobbering '_'. Fixes
4353 http://www.scipy.net/roundup/ipython/issue6.
4372 http://www.scipy.net/roundup/ipython/issue6.
4354
4373
4355 2004-07-01 Fernando Perez <fperez@colorado.edu>
4374 2004-07-01 Fernando Perez <fperez@colorado.edu>
4356
4375
4357 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4376 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4358 into @cd. Patch by Ville.
4377 into @cd. Patch by Ville.
4359
4378
4360 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4379 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4361 new function to store things after ipmaker runs. Patch by Ville.
4380 new function to store things after ipmaker runs. Patch by Ville.
4362 Eventually this will go away once ipmaker is removed and the class
4381 Eventually this will go away once ipmaker is removed and the class
4363 gets cleaned up, but for now it's ok. Key functionality here is
4382 gets cleaned up, but for now it's ok. Key functionality here is
4364 the addition of the persistent storage mechanism, a dict for
4383 the addition of the persistent storage mechanism, a dict for
4365 keeping data across sessions (for now just bookmarks, but more can
4384 keeping data across sessions (for now just bookmarks, but more can
4366 be implemented later).
4385 be implemented later).
4367
4386
4368 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4387 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4369 persistent across sections. Patch by Ville, I modified it
4388 persistent across sections. Patch by Ville, I modified it
4370 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4389 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4371 added a '-l' option to list all bookmarks.
4390 added a '-l' option to list all bookmarks.
4372
4391
4373 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4392 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4374 center for cleanup. Registered with atexit.register(). I moved
4393 center for cleanup. Registered with atexit.register(). I moved
4375 here the old exit_cleanup(). After a patch by Ville.
4394 here the old exit_cleanup(). After a patch by Ville.
4376
4395
4377 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4396 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4378 characters in the hacked shlex_split for python 2.2.
4397 characters in the hacked shlex_split for python 2.2.
4379
4398
4380 * IPython/iplib.py (file_matches): more fixes to filenames with
4399 * IPython/iplib.py (file_matches): more fixes to filenames with
4381 whitespace in them. It's not perfect, but limitations in python's
4400 whitespace in them. It's not perfect, but limitations in python's
4382 readline make it impossible to go further.
4401 readline make it impossible to go further.
4383
4402
4384 2004-06-29 Fernando Perez <fperez@colorado.edu>
4403 2004-06-29 Fernando Perez <fperez@colorado.edu>
4385
4404
4386 * IPython/iplib.py (file_matches): escape whitespace correctly in
4405 * IPython/iplib.py (file_matches): escape whitespace correctly in
4387 filename completions. Bug reported by Ville.
4406 filename completions. Bug reported by Ville.
4388
4407
4389 2004-06-28 Fernando Perez <fperez@colorado.edu>
4408 2004-06-28 Fernando Perez <fperez@colorado.edu>
4390
4409
4391 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4410 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4392 the history file will be called 'history-PROFNAME' (or just
4411 the history file will be called 'history-PROFNAME' (or just
4393 'history' if no profile is loaded). I was getting annoyed at
4412 'history' if no profile is loaded). I was getting annoyed at
4394 getting my Numerical work history clobbered by pysh sessions.
4413 getting my Numerical work history clobbered by pysh sessions.
4395
4414
4396 * IPython/iplib.py (InteractiveShell.__init__): Internal
4415 * IPython/iplib.py (InteractiveShell.__init__): Internal
4397 getoutputerror() function so that we can honor the system_verbose
4416 getoutputerror() function so that we can honor the system_verbose
4398 flag for _all_ system calls. I also added escaping of #
4417 flag for _all_ system calls. I also added escaping of #
4399 characters here to avoid confusing Itpl.
4418 characters here to avoid confusing Itpl.
4400
4419
4401 * IPython/Magic.py (shlex_split): removed call to shell in
4420 * IPython/Magic.py (shlex_split): removed call to shell in
4402 parse_options and replaced it with shlex.split(). The annoying
4421 parse_options and replaced it with shlex.split(). The annoying
4403 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4422 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4404 to backport it from 2.3, with several frail hacks (the shlex
4423 to backport it from 2.3, with several frail hacks (the shlex
4405 module is rather limited in 2.2). Thanks to a suggestion by Ville
4424 module is rather limited in 2.2). Thanks to a suggestion by Ville
4406 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4425 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4407 problem.
4426 problem.
4408
4427
4409 (Magic.magic_system_verbose): new toggle to print the actual
4428 (Magic.magic_system_verbose): new toggle to print the actual
4410 system calls made by ipython. Mainly for debugging purposes.
4429 system calls made by ipython. Mainly for debugging purposes.
4411
4430
4412 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4431 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4413 doesn't support persistence. Reported (and fix suggested) by
4432 doesn't support persistence. Reported (and fix suggested) by
4414 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4433 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4415
4434
4416 2004-06-26 Fernando Perez <fperez@colorado.edu>
4435 2004-06-26 Fernando Perez <fperez@colorado.edu>
4417
4436
4418 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4437 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4419 continue prompts.
4438 continue prompts.
4420
4439
4421 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4440 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4422 function (basically a big docstring) and a few more things here to
4441 function (basically a big docstring) and a few more things here to
4423 speedup startup. pysh.py is now very lightweight. We want because
4442 speedup startup. pysh.py is now very lightweight. We want because
4424 it gets execfile'd, while InterpreterExec gets imported, so
4443 it gets execfile'd, while InterpreterExec gets imported, so
4425 byte-compilation saves time.
4444 byte-compilation saves time.
4426
4445
4427 2004-06-25 Fernando Perez <fperez@colorado.edu>
4446 2004-06-25 Fernando Perez <fperez@colorado.edu>
4428
4447
4429 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4448 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4430 -NUM', which was recently broken.
4449 -NUM', which was recently broken.
4431
4450
4432 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4451 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4433 in multi-line input (but not !!, which doesn't make sense there).
4452 in multi-line input (but not !!, which doesn't make sense there).
4434
4453
4435 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4454 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4436 It's just too useful, and people can turn it off in the less
4455 It's just too useful, and people can turn it off in the less
4437 common cases where it's a problem.
4456 common cases where it's a problem.
4438
4457
4439 2004-06-24 Fernando Perez <fperez@colorado.edu>
4458 2004-06-24 Fernando Perez <fperez@colorado.edu>
4440
4459
4441 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4460 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4442 special syntaxes (like alias calling) is now allied in multi-line
4461 special syntaxes (like alias calling) is now allied in multi-line
4443 input. This is still _very_ experimental, but it's necessary for
4462 input. This is still _very_ experimental, but it's necessary for
4444 efficient shell usage combining python looping syntax with system
4463 efficient shell usage combining python looping syntax with system
4445 calls. For now it's restricted to aliases, I don't think it
4464 calls. For now it's restricted to aliases, I don't think it
4446 really even makes sense to have this for magics.
4465 really even makes sense to have this for magics.
4447
4466
4448 2004-06-23 Fernando Perez <fperez@colorado.edu>
4467 2004-06-23 Fernando Perez <fperez@colorado.edu>
4449
4468
4450 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4469 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4451 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4470 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4452
4471
4453 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4472 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4454 extensions under Windows (after code sent by Gary Bishop). The
4473 extensions under Windows (after code sent by Gary Bishop). The
4455 extensions considered 'executable' are stored in IPython's rc
4474 extensions considered 'executable' are stored in IPython's rc
4456 structure as win_exec_ext.
4475 structure as win_exec_ext.
4457
4476
4458 * IPython/genutils.py (shell): new function, like system() but
4477 * IPython/genutils.py (shell): new function, like system() but
4459 without return value. Very useful for interactive shell work.
4478 without return value. Very useful for interactive shell work.
4460
4479
4461 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4480 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4462 delete aliases.
4481 delete aliases.
4463
4482
4464 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4483 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4465 sure that the alias table doesn't contain python keywords.
4484 sure that the alias table doesn't contain python keywords.
4466
4485
4467 2004-06-21 Fernando Perez <fperez@colorado.edu>
4486 2004-06-21 Fernando Perez <fperez@colorado.edu>
4468
4487
4469 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4488 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4470 non-existent items are found in $PATH. Reported by Thorsten.
4489 non-existent items are found in $PATH. Reported by Thorsten.
4471
4490
4472 2004-06-20 Fernando Perez <fperez@colorado.edu>
4491 2004-06-20 Fernando Perez <fperez@colorado.edu>
4473
4492
4474 * IPython/iplib.py (complete): modified the completer so that the
4493 * IPython/iplib.py (complete): modified the completer so that the
4475 order of priorities can be easily changed at runtime.
4494 order of priorities can be easily changed at runtime.
4476
4495
4477 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4496 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4478 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4497 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4479
4498
4480 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4499 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4481 expand Python variables prepended with $ in all system calls. The
4500 expand Python variables prepended with $ in all system calls. The
4482 same was done to InteractiveShell.handle_shell_escape. Now all
4501 same was done to InteractiveShell.handle_shell_escape. Now all
4483 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4502 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4484 expansion of python variables and expressions according to the
4503 expansion of python variables and expressions according to the
4485 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4504 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4486
4505
4487 Though PEP-215 has been rejected, a similar (but simpler) one
4506 Though PEP-215 has been rejected, a similar (but simpler) one
4488 seems like it will go into Python 2.4, PEP-292 -
4507 seems like it will go into Python 2.4, PEP-292 -
4489 http://www.python.org/peps/pep-0292.html.
4508 http://www.python.org/peps/pep-0292.html.
4490
4509
4491 I'll keep the full syntax of PEP-215, since IPython has since the
4510 I'll keep the full syntax of PEP-215, since IPython has since the
4492 start used Ka-Ping Yee's reference implementation discussed there
4511 start used Ka-Ping Yee's reference implementation discussed there
4493 (Itpl), and I actually like the powerful semantics it offers.
4512 (Itpl), and I actually like the powerful semantics it offers.
4494
4513
4495 In order to access normal shell variables, the $ has to be escaped
4514 In order to access normal shell variables, the $ has to be escaped
4496 via an extra $. For example:
4515 via an extra $. For example:
4497
4516
4498 In [7]: PATH='a python variable'
4517 In [7]: PATH='a python variable'
4499
4518
4500 In [8]: !echo $PATH
4519 In [8]: !echo $PATH
4501 a python variable
4520 a python variable
4502
4521
4503 In [9]: !echo $$PATH
4522 In [9]: !echo $$PATH
4504 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4523 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4505
4524
4506 (Magic.parse_options): escape $ so the shell doesn't evaluate
4525 (Magic.parse_options): escape $ so the shell doesn't evaluate
4507 things prematurely.
4526 things prematurely.
4508
4527
4509 * IPython/iplib.py (InteractiveShell.call_alias): added the
4528 * IPython/iplib.py (InteractiveShell.call_alias): added the
4510 ability for aliases to expand python variables via $.
4529 ability for aliases to expand python variables via $.
4511
4530
4512 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4531 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4513 system, now there's a @rehash/@rehashx pair of magics. These work
4532 system, now there's a @rehash/@rehashx pair of magics. These work
4514 like the csh rehash command, and can be invoked at any time. They
4533 like the csh rehash command, and can be invoked at any time. They
4515 build a table of aliases to everything in the user's $PATH
4534 build a table of aliases to everything in the user's $PATH
4516 (@rehash uses everything, @rehashx is slower but only adds
4535 (@rehash uses everything, @rehashx is slower but only adds
4517 executable files). With this, the pysh.py-based shell profile can
4536 executable files). With this, the pysh.py-based shell profile can
4518 now simply call rehash upon startup, and full access to all
4537 now simply call rehash upon startup, and full access to all
4519 programs in the user's path is obtained.
4538 programs in the user's path is obtained.
4520
4539
4521 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4540 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4522 functionality is now fully in place. I removed the old dynamic
4541 functionality is now fully in place. I removed the old dynamic
4523 code generation based approach, in favor of a much lighter one
4542 code generation based approach, in favor of a much lighter one
4524 based on a simple dict. The advantage is that this allows me to
4543 based on a simple dict. The advantage is that this allows me to
4525 now have thousands of aliases with negligible cost (unthinkable
4544 now have thousands of aliases with negligible cost (unthinkable
4526 with the old system).
4545 with the old system).
4527
4546
4528 2004-06-19 Fernando Perez <fperez@colorado.edu>
4547 2004-06-19 Fernando Perez <fperez@colorado.edu>
4529
4548
4530 * IPython/iplib.py (__init__): extended MagicCompleter class to
4549 * IPython/iplib.py (__init__): extended MagicCompleter class to
4531 also complete (last in priority) on user aliases.
4550 also complete (last in priority) on user aliases.
4532
4551
4533 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4552 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4534 call to eval.
4553 call to eval.
4535 (ItplNS.__init__): Added a new class which functions like Itpl,
4554 (ItplNS.__init__): Added a new class which functions like Itpl,
4536 but allows configuring the namespace for the evaluation to occur
4555 but allows configuring the namespace for the evaluation to occur
4537 in.
4556 in.
4538
4557
4539 2004-06-18 Fernando Perez <fperez@colorado.edu>
4558 2004-06-18 Fernando Perez <fperez@colorado.edu>
4540
4559
4541 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4560 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4542 better message when 'exit' or 'quit' are typed (a common newbie
4561 better message when 'exit' or 'quit' are typed (a common newbie
4543 confusion).
4562 confusion).
4544
4563
4545 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4564 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4546 check for Windows users.
4565 check for Windows users.
4547
4566
4548 * IPython/iplib.py (InteractiveShell.user_setup): removed
4567 * IPython/iplib.py (InteractiveShell.user_setup): removed
4549 disabling of colors for Windows. I'll test at runtime and issue a
4568 disabling of colors for Windows. I'll test at runtime and issue a
4550 warning if Gary's readline isn't found, as to nudge users to
4569 warning if Gary's readline isn't found, as to nudge users to
4551 download it.
4570 download it.
4552
4571
4553 2004-06-16 Fernando Perez <fperez@colorado.edu>
4572 2004-06-16 Fernando Perez <fperez@colorado.edu>
4554
4573
4555 * IPython/genutils.py (Stream.__init__): changed to print errors
4574 * IPython/genutils.py (Stream.__init__): changed to print errors
4556 to sys.stderr. I had a circular dependency here. Now it's
4575 to sys.stderr. I had a circular dependency here. Now it's
4557 possible to run ipython as IDLE's shell (consider this pre-alpha,
4576 possible to run ipython as IDLE's shell (consider this pre-alpha,
4558 since true stdout things end up in the starting terminal instead
4577 since true stdout things end up in the starting terminal instead
4559 of IDLE's out).
4578 of IDLE's out).
4560
4579
4561 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4580 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4562 users who haven't # updated their prompt_in2 definitions. Remove
4581 users who haven't # updated their prompt_in2 definitions. Remove
4563 eventually.
4582 eventually.
4564 (multiple_replace): added credit to original ASPN recipe.
4583 (multiple_replace): added credit to original ASPN recipe.
4565
4584
4566 2004-06-15 Fernando Perez <fperez@colorado.edu>
4585 2004-06-15 Fernando Perez <fperez@colorado.edu>
4567
4586
4568 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4587 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4569 list of auto-defined aliases.
4588 list of auto-defined aliases.
4570
4589
4571 2004-06-13 Fernando Perez <fperez@colorado.edu>
4590 2004-06-13 Fernando Perez <fperez@colorado.edu>
4572
4591
4573 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4592 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4574 install was really requested (so setup.py can be used for other
4593 install was really requested (so setup.py can be used for other
4575 things under Windows).
4594 things under Windows).
4576
4595
4577 2004-06-10 Fernando Perez <fperez@colorado.edu>
4596 2004-06-10 Fernando Perez <fperez@colorado.edu>
4578
4597
4579 * IPython/Logger.py (Logger.create_log): Manually remove any old
4598 * IPython/Logger.py (Logger.create_log): Manually remove any old
4580 backup, since os.remove may fail under Windows. Fixes bug
4599 backup, since os.remove may fail under Windows. Fixes bug
4581 reported by Thorsten.
4600 reported by Thorsten.
4582
4601
4583 2004-06-09 Fernando Perez <fperez@colorado.edu>
4602 2004-06-09 Fernando Perez <fperez@colorado.edu>
4584
4603
4585 * examples/example-embed.py: fixed all references to %n (replaced
4604 * examples/example-embed.py: fixed all references to %n (replaced
4586 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4605 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4587 for all examples and the manual as well.
4606 for all examples and the manual as well.
4588
4607
4589 2004-06-08 Fernando Perez <fperez@colorado.edu>
4608 2004-06-08 Fernando Perez <fperez@colorado.edu>
4590
4609
4591 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4610 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4592 alignment and color management. All 3 prompt subsystems now
4611 alignment and color management. All 3 prompt subsystems now
4593 inherit from BasePrompt.
4612 inherit from BasePrompt.
4594
4613
4595 * tools/release: updates for windows installer build and tag rpms
4614 * tools/release: updates for windows installer build and tag rpms
4596 with python version (since paths are fixed).
4615 with python version (since paths are fixed).
4597
4616
4598 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4617 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4599 which will become eventually obsolete. Also fixed the default
4618 which will become eventually obsolete. Also fixed the default
4600 prompt_in2 to use \D, so at least new users start with the correct
4619 prompt_in2 to use \D, so at least new users start with the correct
4601 defaults.
4620 defaults.
4602 WARNING: Users with existing ipythonrc files will need to apply
4621 WARNING: Users with existing ipythonrc files will need to apply
4603 this fix manually!
4622 this fix manually!
4604
4623
4605 * setup.py: make windows installer (.exe). This is finally the
4624 * setup.py: make windows installer (.exe). This is finally the
4606 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4625 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4607 which I hadn't included because it required Python 2.3 (or recent
4626 which I hadn't included because it required Python 2.3 (or recent
4608 distutils).
4627 distutils).
4609
4628
4610 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4629 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4611 usage of new '\D' escape.
4630 usage of new '\D' escape.
4612
4631
4613 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4632 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4614 lacks os.getuid())
4633 lacks os.getuid())
4615 (CachedOutput.set_colors): Added the ability to turn coloring
4634 (CachedOutput.set_colors): Added the ability to turn coloring
4616 on/off with @colors even for manually defined prompt colors. It
4635 on/off with @colors even for manually defined prompt colors. It
4617 uses a nasty global, but it works safely and via the generic color
4636 uses a nasty global, but it works safely and via the generic color
4618 handling mechanism.
4637 handling mechanism.
4619 (Prompt2.__init__): Introduced new escape '\D' for continuation
4638 (Prompt2.__init__): Introduced new escape '\D' for continuation
4620 prompts. It represents the counter ('\#') as dots.
4639 prompts. It represents the counter ('\#') as dots.
4621 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4640 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4622 need to update their ipythonrc files and replace '%n' with '\D' in
4641 need to update their ipythonrc files and replace '%n' with '\D' in
4623 their prompt_in2 settings everywhere. Sorry, but there's
4642 their prompt_in2 settings everywhere. Sorry, but there's
4624 otherwise no clean way to get all prompts to properly align. The
4643 otherwise no clean way to get all prompts to properly align. The
4625 ipythonrc shipped with IPython has been updated.
4644 ipythonrc shipped with IPython has been updated.
4626
4645
4627 2004-06-07 Fernando Perez <fperez@colorado.edu>
4646 2004-06-07 Fernando Perez <fperez@colorado.edu>
4628
4647
4629 * setup.py (isfile): Pass local_icons option to latex2html, so the
4648 * setup.py (isfile): Pass local_icons option to latex2html, so the
4630 resulting HTML file is self-contained. Thanks to
4649 resulting HTML file is self-contained. Thanks to
4631 dryice-AT-liu.com.cn for the tip.
4650 dryice-AT-liu.com.cn for the tip.
4632
4651
4633 * pysh.py: I created a new profile 'shell', which implements a
4652 * pysh.py: I created a new profile 'shell', which implements a
4634 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4653 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4635 system shell, nor will it become one anytime soon. It's mainly
4654 system shell, nor will it become one anytime soon. It's mainly
4636 meant to illustrate the use of the new flexible bash-like prompts.
4655 meant to illustrate the use of the new flexible bash-like prompts.
4637 I guess it could be used by hardy souls for true shell management,
4656 I guess it could be used by hardy souls for true shell management,
4638 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4657 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4639 profile. This uses the InterpreterExec extension provided by
4658 profile. This uses the InterpreterExec extension provided by
4640 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4659 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4641
4660
4642 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4661 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4643 auto-align itself with the length of the previous input prompt
4662 auto-align itself with the length of the previous input prompt
4644 (taking into account the invisible color escapes).
4663 (taking into account the invisible color escapes).
4645 (CachedOutput.__init__): Large restructuring of this class. Now
4664 (CachedOutput.__init__): Large restructuring of this class. Now
4646 all three prompts (primary1, primary2, output) are proper objects,
4665 all three prompts (primary1, primary2, output) are proper objects,
4647 managed by the 'parent' CachedOutput class. The code is still a
4666 managed by the 'parent' CachedOutput class. The code is still a
4648 bit hackish (all prompts share state via a pointer to the cache),
4667 bit hackish (all prompts share state via a pointer to the cache),
4649 but it's overall far cleaner than before.
4668 but it's overall far cleaner than before.
4650
4669
4651 * IPython/genutils.py (getoutputerror): modified to add verbose,
4670 * IPython/genutils.py (getoutputerror): modified to add verbose,
4652 debug and header options. This makes the interface of all getout*
4671 debug and header options. This makes the interface of all getout*
4653 functions uniform.
4672 functions uniform.
4654 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4673 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4655
4674
4656 * IPython/Magic.py (Magic.default_option): added a function to
4675 * IPython/Magic.py (Magic.default_option): added a function to
4657 allow registering default options for any magic command. This
4676 allow registering default options for any magic command. This
4658 makes it easy to have profiles which customize the magics globally
4677 makes it easy to have profiles which customize the magics globally
4659 for a certain use. The values set through this function are
4678 for a certain use. The values set through this function are
4660 picked up by the parse_options() method, which all magics should
4679 picked up by the parse_options() method, which all magics should
4661 use to parse their options.
4680 use to parse their options.
4662
4681
4663 * IPython/genutils.py (warn): modified the warnings framework to
4682 * IPython/genutils.py (warn): modified the warnings framework to
4664 use the Term I/O class. I'm trying to slowly unify all of
4683 use the Term I/O class. I'm trying to slowly unify all of
4665 IPython's I/O operations to pass through Term.
4684 IPython's I/O operations to pass through Term.
4666
4685
4667 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4686 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4668 the secondary prompt to correctly match the length of the primary
4687 the secondary prompt to correctly match the length of the primary
4669 one for any prompt. Now multi-line code will properly line up
4688 one for any prompt. Now multi-line code will properly line up
4670 even for path dependent prompts, such as the new ones available
4689 even for path dependent prompts, such as the new ones available
4671 via the prompt_specials.
4690 via the prompt_specials.
4672
4691
4673 2004-06-06 Fernando Perez <fperez@colorado.edu>
4692 2004-06-06 Fernando Perez <fperez@colorado.edu>
4674
4693
4675 * IPython/Prompts.py (prompt_specials): Added the ability to have
4694 * IPython/Prompts.py (prompt_specials): Added the ability to have
4676 bash-like special sequences in the prompts, which get
4695 bash-like special sequences in the prompts, which get
4677 automatically expanded. Things like hostname, current working
4696 automatically expanded. Things like hostname, current working
4678 directory and username are implemented already, but it's easy to
4697 directory and username are implemented already, but it's easy to
4679 add more in the future. Thanks to a patch by W.J. van der Laan
4698 add more in the future. Thanks to a patch by W.J. van der Laan
4680 <gnufnork-AT-hetdigitalegat.nl>
4699 <gnufnork-AT-hetdigitalegat.nl>
4681 (prompt_specials): Added color support for prompt strings, so
4700 (prompt_specials): Added color support for prompt strings, so
4682 users can define arbitrary color setups for their prompts.
4701 users can define arbitrary color setups for their prompts.
4683
4702
4684 2004-06-05 Fernando Perez <fperez@colorado.edu>
4703 2004-06-05 Fernando Perez <fperez@colorado.edu>
4685
4704
4686 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4705 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4687 code to load Gary Bishop's readline and configure it
4706 code to load Gary Bishop's readline and configure it
4688 automatically. Thanks to Gary for help on this.
4707 automatically. Thanks to Gary for help on this.
4689
4708
4690 2004-06-01 Fernando Perez <fperez@colorado.edu>
4709 2004-06-01 Fernando Perez <fperez@colorado.edu>
4691
4710
4692 * IPython/Logger.py (Logger.create_log): fix bug for logging
4711 * IPython/Logger.py (Logger.create_log): fix bug for logging
4693 with no filename (previous fix was incomplete).
4712 with no filename (previous fix was incomplete).
4694
4713
4695 2004-05-25 Fernando Perez <fperez@colorado.edu>
4714 2004-05-25 Fernando Perez <fperez@colorado.edu>
4696
4715
4697 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4716 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4698 parens would get passed to the shell.
4717 parens would get passed to the shell.
4699
4718
4700 2004-05-20 Fernando Perez <fperez@colorado.edu>
4719 2004-05-20 Fernando Perez <fperez@colorado.edu>
4701
4720
4702 * IPython/Magic.py (Magic.magic_prun): changed default profile
4721 * IPython/Magic.py (Magic.magic_prun): changed default profile
4703 sort order to 'time' (the more common profiling need).
4722 sort order to 'time' (the more common profiling need).
4704
4723
4705 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4724 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4706 so that source code shown is guaranteed in sync with the file on
4725 so that source code shown is guaranteed in sync with the file on
4707 disk (also changed in psource). Similar fix to the one for
4726 disk (also changed in psource). Similar fix to the one for
4708 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4727 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4709 <yann.ledu-AT-noos.fr>.
4728 <yann.ledu-AT-noos.fr>.
4710
4729
4711 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4730 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4712 with a single option would not be correctly parsed. Closes
4731 with a single option would not be correctly parsed. Closes
4713 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4732 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4714 introduced in 0.6.0 (on 2004-05-06).
4733 introduced in 0.6.0 (on 2004-05-06).
4715
4734
4716 2004-05-13 *** Released version 0.6.0
4735 2004-05-13 *** Released version 0.6.0
4717
4736
4718 2004-05-13 Fernando Perez <fperez@colorado.edu>
4737 2004-05-13 Fernando Perez <fperez@colorado.edu>
4719
4738
4720 * debian/: Added debian/ directory to CVS, so that debian support
4739 * debian/: Added debian/ directory to CVS, so that debian support
4721 is publicly accessible. The debian package is maintained by Jack
4740 is publicly accessible. The debian package is maintained by Jack
4722 Moffit <jack-AT-xiph.org>.
4741 Moffit <jack-AT-xiph.org>.
4723
4742
4724 * Documentation: included the notes about an ipython-based system
4743 * Documentation: included the notes about an ipython-based system
4725 shell (the hypothetical 'pysh') into the new_design.pdf document,
4744 shell (the hypothetical 'pysh') into the new_design.pdf document,
4726 so that these ideas get distributed to users along with the
4745 so that these ideas get distributed to users along with the
4727 official documentation.
4746 official documentation.
4728
4747
4729 2004-05-10 Fernando Perez <fperez@colorado.edu>
4748 2004-05-10 Fernando Perez <fperez@colorado.edu>
4730
4749
4731 * IPython/Logger.py (Logger.create_log): fix recently introduced
4750 * IPython/Logger.py (Logger.create_log): fix recently introduced
4732 bug (misindented line) where logstart would fail when not given an
4751 bug (misindented line) where logstart would fail when not given an
4733 explicit filename.
4752 explicit filename.
4734
4753
4735 2004-05-09 Fernando Perez <fperez@colorado.edu>
4754 2004-05-09 Fernando Perez <fperez@colorado.edu>
4736
4755
4737 * IPython/Magic.py (Magic.parse_options): skip system call when
4756 * IPython/Magic.py (Magic.parse_options): skip system call when
4738 there are no options to look for. Faster, cleaner for the common
4757 there are no options to look for. Faster, cleaner for the common
4739 case.
4758 case.
4740
4759
4741 * Documentation: many updates to the manual: describing Windows
4760 * Documentation: many updates to the manual: describing Windows
4742 support better, Gnuplot updates, credits, misc small stuff. Also
4761 support better, Gnuplot updates, credits, misc small stuff. Also
4743 updated the new_design doc a bit.
4762 updated the new_design doc a bit.
4744
4763
4745 2004-05-06 *** Released version 0.6.0.rc1
4764 2004-05-06 *** Released version 0.6.0.rc1
4746
4765
4747 2004-05-06 Fernando Perez <fperez@colorado.edu>
4766 2004-05-06 Fernando Perez <fperez@colorado.edu>
4748
4767
4749 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4768 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4750 operations to use the vastly more efficient list/''.join() method.
4769 operations to use the vastly more efficient list/''.join() method.
4751 (FormattedTB.text): Fix
4770 (FormattedTB.text): Fix
4752 http://www.scipy.net/roundup/ipython/issue12 - exception source
4771 http://www.scipy.net/roundup/ipython/issue12 - exception source
4753 extract not updated after reload. Thanks to Mike Salib
4772 extract not updated after reload. Thanks to Mike Salib
4754 <msalib-AT-mit.edu> for pinning the source of the problem.
4773 <msalib-AT-mit.edu> for pinning the source of the problem.
4755 Fortunately, the solution works inside ipython and doesn't require
4774 Fortunately, the solution works inside ipython and doesn't require
4756 any changes to python proper.
4775 any changes to python proper.
4757
4776
4758 * IPython/Magic.py (Magic.parse_options): Improved to process the
4777 * IPython/Magic.py (Magic.parse_options): Improved to process the
4759 argument list as a true shell would (by actually using the
4778 argument list as a true shell would (by actually using the
4760 underlying system shell). This way, all @magics automatically get
4779 underlying system shell). This way, all @magics automatically get
4761 shell expansion for variables. Thanks to a comment by Alex
4780 shell expansion for variables. Thanks to a comment by Alex
4762 Schmolck.
4781 Schmolck.
4763
4782
4764 2004-04-04 Fernando Perez <fperez@colorado.edu>
4783 2004-04-04 Fernando Perez <fperez@colorado.edu>
4765
4784
4766 * IPython/iplib.py (InteractiveShell.interact): Added a special
4785 * IPython/iplib.py (InteractiveShell.interact): Added a special
4767 trap for a debugger quit exception, which is basically impossible
4786 trap for a debugger quit exception, which is basically impossible
4768 to handle by normal mechanisms, given what pdb does to the stack.
4787 to handle by normal mechanisms, given what pdb does to the stack.
4769 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4788 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4770
4789
4771 2004-04-03 Fernando Perez <fperez@colorado.edu>
4790 2004-04-03 Fernando Perez <fperez@colorado.edu>
4772
4791
4773 * IPython/genutils.py (Term): Standardized the names of the Term
4792 * IPython/genutils.py (Term): Standardized the names of the Term
4774 class streams to cin/cout/cerr, following C++ naming conventions
4793 class streams to cin/cout/cerr, following C++ naming conventions
4775 (I can't use in/out/err because 'in' is not a valid attribute
4794 (I can't use in/out/err because 'in' is not a valid attribute
4776 name).
4795 name).
4777
4796
4778 * IPython/iplib.py (InteractiveShell.interact): don't increment
4797 * IPython/iplib.py (InteractiveShell.interact): don't increment
4779 the prompt if there's no user input. By Daniel 'Dang' Griffith
4798 the prompt if there's no user input. By Daniel 'Dang' Griffith
4780 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4799 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4781 Francois Pinard.
4800 Francois Pinard.
4782
4801
4783 2004-04-02 Fernando Perez <fperez@colorado.edu>
4802 2004-04-02 Fernando Perez <fperez@colorado.edu>
4784
4803
4785 * IPython/genutils.py (Stream.__init__): Modified to survive at
4804 * IPython/genutils.py (Stream.__init__): Modified to survive at
4786 least importing in contexts where stdin/out/err aren't true file
4805 least importing in contexts where stdin/out/err aren't true file
4787 objects, such as PyCrust (they lack fileno() and mode). However,
4806 objects, such as PyCrust (they lack fileno() and mode). However,
4788 the recovery facilities which rely on these things existing will
4807 the recovery facilities which rely on these things existing will
4789 not work.
4808 not work.
4790
4809
4791 2004-04-01 Fernando Perez <fperez@colorado.edu>
4810 2004-04-01 Fernando Perez <fperez@colorado.edu>
4792
4811
4793 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4812 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4794 use the new getoutputerror() function, so it properly
4813 use the new getoutputerror() function, so it properly
4795 distinguishes stdout/err.
4814 distinguishes stdout/err.
4796
4815
4797 * IPython/genutils.py (getoutputerror): added a function to
4816 * IPython/genutils.py (getoutputerror): added a function to
4798 capture separately the standard output and error of a command.
4817 capture separately the standard output and error of a command.
4799 After a comment from dang on the mailing lists. This code is
4818 After a comment from dang on the mailing lists. This code is
4800 basically a modified version of commands.getstatusoutput(), from
4819 basically a modified version of commands.getstatusoutput(), from
4801 the standard library.
4820 the standard library.
4802
4821
4803 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4822 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4804 '!!' as a special syntax (shorthand) to access @sx.
4823 '!!' as a special syntax (shorthand) to access @sx.
4805
4824
4806 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4825 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4807 command and return its output as a list split on '\n'.
4826 command and return its output as a list split on '\n'.
4808
4827
4809 2004-03-31 Fernando Perez <fperez@colorado.edu>
4828 2004-03-31 Fernando Perez <fperez@colorado.edu>
4810
4829
4811 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4830 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4812 method to dictionaries used as FakeModule instances if they lack
4831 method to dictionaries used as FakeModule instances if they lack
4813 it. At least pydoc in python2.3 breaks for runtime-defined
4832 it. At least pydoc in python2.3 breaks for runtime-defined
4814 functions without this hack. At some point I need to _really_
4833 functions without this hack. At some point I need to _really_
4815 understand what FakeModule is doing, because it's a gross hack.
4834 understand what FakeModule is doing, because it's a gross hack.
4816 But it solves Arnd's problem for now...
4835 But it solves Arnd's problem for now...
4817
4836
4818 2004-02-27 Fernando Perez <fperez@colorado.edu>
4837 2004-02-27 Fernando Perez <fperez@colorado.edu>
4819
4838
4820 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4839 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4821 mode would behave erratically. Also increased the number of
4840 mode would behave erratically. Also increased the number of
4822 possible logs in rotate mod to 999. Thanks to Rod Holland
4841 possible logs in rotate mod to 999. Thanks to Rod Holland
4823 <rhh@StructureLABS.com> for the report and fixes.
4842 <rhh@StructureLABS.com> for the report and fixes.
4824
4843
4825 2004-02-26 Fernando Perez <fperez@colorado.edu>
4844 2004-02-26 Fernando Perez <fperez@colorado.edu>
4826
4845
4827 * IPython/genutils.py (page): Check that the curses module really
4846 * IPython/genutils.py (page): Check that the curses module really
4828 has the initscr attribute before trying to use it. For some
4847 has the initscr attribute before trying to use it. For some
4829 reason, the Solaris curses module is missing this. I think this
4848 reason, the Solaris curses module is missing this. I think this
4830 should be considered a Solaris python bug, but I'm not sure.
4849 should be considered a Solaris python bug, but I'm not sure.
4831
4850
4832 2004-01-17 Fernando Perez <fperez@colorado.edu>
4851 2004-01-17 Fernando Perez <fperez@colorado.edu>
4833
4852
4834 * IPython/genutils.py (Stream.__init__): Changes to try to make
4853 * IPython/genutils.py (Stream.__init__): Changes to try to make
4835 ipython robust against stdin/out/err being closed by the user.
4854 ipython robust against stdin/out/err being closed by the user.
4836 This is 'user error' (and blocks a normal python session, at least
4855 This is 'user error' (and blocks a normal python session, at least
4837 the stdout case). However, Ipython should be able to survive such
4856 the stdout case). However, Ipython should be able to survive such
4838 instances of abuse as gracefully as possible. To simplify the
4857 instances of abuse as gracefully as possible. To simplify the
4839 coding and maintain compatibility with Gary Bishop's Term
4858 coding and maintain compatibility with Gary Bishop's Term
4840 contributions, I've made use of classmethods for this. I think
4859 contributions, I've made use of classmethods for this. I think
4841 this introduces a dependency on python 2.2.
4860 this introduces a dependency on python 2.2.
4842
4861
4843 2004-01-13 Fernando Perez <fperez@colorado.edu>
4862 2004-01-13 Fernando Perez <fperez@colorado.edu>
4844
4863
4845 * IPython/numutils.py (exp_safe): simplified the code a bit and
4864 * IPython/numutils.py (exp_safe): simplified the code a bit and
4846 removed the need for importing the kinds module altogether.
4865 removed the need for importing the kinds module altogether.
4847
4866
4848 2004-01-06 Fernando Perez <fperez@colorado.edu>
4867 2004-01-06 Fernando Perez <fperez@colorado.edu>
4849
4868
4850 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4869 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4851 a magic function instead, after some community feedback. No
4870 a magic function instead, after some community feedback. No
4852 special syntax will exist for it, but its name is deliberately
4871 special syntax will exist for it, but its name is deliberately
4853 very short.
4872 very short.
4854
4873
4855 2003-12-20 Fernando Perez <fperez@colorado.edu>
4874 2003-12-20 Fernando Perez <fperez@colorado.edu>
4856
4875
4857 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4876 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4858 new functionality, to automagically assign the result of a shell
4877 new functionality, to automagically assign the result of a shell
4859 command to a variable. I'll solicit some community feedback on
4878 command to a variable. I'll solicit some community feedback on
4860 this before making it permanent.
4879 this before making it permanent.
4861
4880
4862 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4881 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4863 requested about callables for which inspect couldn't obtain a
4882 requested about callables for which inspect couldn't obtain a
4864 proper argspec. Thanks to a crash report sent by Etienne
4883 proper argspec. Thanks to a crash report sent by Etienne
4865 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4884 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4866
4885
4867 2003-12-09 Fernando Perez <fperez@colorado.edu>
4886 2003-12-09 Fernando Perez <fperez@colorado.edu>
4868
4887
4869 * IPython/genutils.py (page): patch for the pager to work across
4888 * IPython/genutils.py (page): patch for the pager to work across
4870 various versions of Windows. By Gary Bishop.
4889 various versions of Windows. By Gary Bishop.
4871
4890
4872 2003-12-04 Fernando Perez <fperez@colorado.edu>
4891 2003-12-04 Fernando Perez <fperez@colorado.edu>
4873
4892
4874 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4893 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4875 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4894 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4876 While I tested this and it looks ok, there may still be corner
4895 While I tested this and it looks ok, there may still be corner
4877 cases I've missed.
4896 cases I've missed.
4878
4897
4879 2003-12-01 Fernando Perez <fperez@colorado.edu>
4898 2003-12-01 Fernando Perez <fperez@colorado.edu>
4880
4899
4881 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4900 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4882 where a line like 'p,q=1,2' would fail because the automagic
4901 where a line like 'p,q=1,2' would fail because the automagic
4883 system would be triggered for @p.
4902 system would be triggered for @p.
4884
4903
4885 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4904 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4886 cleanups, code unmodified.
4905 cleanups, code unmodified.
4887
4906
4888 * IPython/genutils.py (Term): added a class for IPython to handle
4907 * IPython/genutils.py (Term): added a class for IPython to handle
4889 output. In most cases it will just be a proxy for stdout/err, but
4908 output. In most cases it will just be a proxy for stdout/err, but
4890 having this allows modifications to be made for some platforms,
4909 having this allows modifications to be made for some platforms,
4891 such as handling color escapes under Windows. All of this code
4910 such as handling color escapes under Windows. All of this code
4892 was contributed by Gary Bishop, with minor modifications by me.
4911 was contributed by Gary Bishop, with minor modifications by me.
4893 The actual changes affect many files.
4912 The actual changes affect many files.
4894
4913
4895 2003-11-30 Fernando Perez <fperez@colorado.edu>
4914 2003-11-30 Fernando Perez <fperez@colorado.edu>
4896
4915
4897 * IPython/iplib.py (file_matches): new completion code, courtesy
4916 * IPython/iplib.py (file_matches): new completion code, courtesy
4898 of Jeff Collins. This enables filename completion again under
4917 of Jeff Collins. This enables filename completion again under
4899 python 2.3, which disabled it at the C level.
4918 python 2.3, which disabled it at the C level.
4900
4919
4901 2003-11-11 Fernando Perez <fperez@colorado.edu>
4920 2003-11-11 Fernando Perez <fperez@colorado.edu>
4902
4921
4903 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4922 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4904 for Numeric.array(map(...)), but often convenient.
4923 for Numeric.array(map(...)), but often convenient.
4905
4924
4906 2003-11-05 Fernando Perez <fperez@colorado.edu>
4925 2003-11-05 Fernando Perez <fperez@colorado.edu>
4907
4926
4908 * IPython/numutils.py (frange): Changed a call from int() to
4927 * IPython/numutils.py (frange): Changed a call from int() to
4909 int(round()) to prevent a problem reported with arange() in the
4928 int(round()) to prevent a problem reported with arange() in the
4910 numpy list.
4929 numpy list.
4911
4930
4912 2003-10-06 Fernando Perez <fperez@colorado.edu>
4931 2003-10-06 Fernando Perez <fperez@colorado.edu>
4913
4932
4914 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4933 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4915 prevent crashes if sys lacks an argv attribute (it happens with
4934 prevent crashes if sys lacks an argv attribute (it happens with
4916 embedded interpreters which build a bare-bones sys module).
4935 embedded interpreters which build a bare-bones sys module).
4917 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4936 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4918
4937
4919 2003-09-24 Fernando Perez <fperez@colorado.edu>
4938 2003-09-24 Fernando Perez <fperez@colorado.edu>
4920
4939
4921 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4940 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4922 to protect against poorly written user objects where __getattr__
4941 to protect against poorly written user objects where __getattr__
4923 raises exceptions other than AttributeError. Thanks to a bug
4942 raises exceptions other than AttributeError. Thanks to a bug
4924 report by Oliver Sander <osander-AT-gmx.de>.
4943 report by Oliver Sander <osander-AT-gmx.de>.
4925
4944
4926 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4945 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4927 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4946 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4928
4947
4929 2003-09-09 Fernando Perez <fperez@colorado.edu>
4948 2003-09-09 Fernando Perez <fperez@colorado.edu>
4930
4949
4931 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4950 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4932 unpacking a list whith a callable as first element would
4951 unpacking a list whith a callable as first element would
4933 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4952 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4934 Collins.
4953 Collins.
4935
4954
4936 2003-08-25 *** Released version 0.5.0
4955 2003-08-25 *** Released version 0.5.0
4937
4956
4938 2003-08-22 Fernando Perez <fperez@colorado.edu>
4957 2003-08-22 Fernando Perez <fperez@colorado.edu>
4939
4958
4940 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4959 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4941 improperly defined user exceptions. Thanks to feedback from Mark
4960 improperly defined user exceptions. Thanks to feedback from Mark
4942 Russell <mrussell-AT-verio.net>.
4961 Russell <mrussell-AT-verio.net>.
4943
4962
4944 2003-08-20 Fernando Perez <fperez@colorado.edu>
4963 2003-08-20 Fernando Perez <fperez@colorado.edu>
4945
4964
4946 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4965 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4947 printing so that it would print multi-line string forms starting
4966 printing so that it would print multi-line string forms starting
4948 with a new line. This way the formatting is better respected for
4967 with a new line. This way the formatting is better respected for
4949 objects which work hard to make nice string forms.
4968 objects which work hard to make nice string forms.
4950
4969
4951 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4970 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4952 autocall would overtake data access for objects with both
4971 autocall would overtake data access for objects with both
4953 __getitem__ and __call__.
4972 __getitem__ and __call__.
4954
4973
4955 2003-08-19 *** Released version 0.5.0-rc1
4974 2003-08-19 *** Released version 0.5.0-rc1
4956
4975
4957 2003-08-19 Fernando Perez <fperez@colorado.edu>
4976 2003-08-19 Fernando Perez <fperez@colorado.edu>
4958
4977
4959 * IPython/deep_reload.py (load_tail): single tiny change here
4978 * IPython/deep_reload.py (load_tail): single tiny change here
4960 seems to fix the long-standing bug of dreload() failing to work
4979 seems to fix the long-standing bug of dreload() failing to work
4961 for dotted names. But this module is pretty tricky, so I may have
4980 for dotted names. But this module is pretty tricky, so I may have
4962 missed some subtlety. Needs more testing!.
4981 missed some subtlety. Needs more testing!.
4963
4982
4964 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4983 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4965 exceptions which have badly implemented __str__ methods.
4984 exceptions which have badly implemented __str__ methods.
4966 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4985 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4967 which I've been getting reports about from Python 2.3 users. I
4986 which I've been getting reports about from Python 2.3 users. I
4968 wish I had a simple test case to reproduce the problem, so I could
4987 wish I had a simple test case to reproduce the problem, so I could
4969 either write a cleaner workaround or file a bug report if
4988 either write a cleaner workaround or file a bug report if
4970 necessary.
4989 necessary.
4971
4990
4972 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4991 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4973 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4992 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4974 a bug report by Tjabo Kloppenburg.
4993 a bug report by Tjabo Kloppenburg.
4975
4994
4976 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4995 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4977 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4996 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4978 seems rather unstable. Thanks to a bug report by Tjabo
4997 seems rather unstable. Thanks to a bug report by Tjabo
4979 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4998 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4980
4999
4981 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
5000 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4982 this out soon because of the critical fixes in the inner loop for
5001 this out soon because of the critical fixes in the inner loop for
4983 generators.
5002 generators.
4984
5003
4985 * IPython/Magic.py (Magic.getargspec): removed. This (and
5004 * IPython/Magic.py (Magic.getargspec): removed. This (and
4986 _get_def) have been obsoleted by OInspect for a long time, I
5005 _get_def) have been obsoleted by OInspect for a long time, I
4987 hadn't noticed that they were dead code.
5006 hadn't noticed that they were dead code.
4988 (Magic._ofind): restored _ofind functionality for a few literals
5007 (Magic._ofind): restored _ofind functionality for a few literals
4989 (those in ["''",'""','[]','{}','()']). But it won't work anymore
5008 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4990 for things like "hello".capitalize?, since that would require a
5009 for things like "hello".capitalize?, since that would require a
4991 potentially dangerous eval() again.
5010 potentially dangerous eval() again.
4992
5011
4993 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
5012 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4994 logic a bit more to clean up the escapes handling and minimize the
5013 logic a bit more to clean up the escapes handling and minimize the
4995 use of _ofind to only necessary cases. The interactive 'feel' of
5014 use of _ofind to only necessary cases. The interactive 'feel' of
4996 IPython should have improved quite a bit with the changes in
5015 IPython should have improved quite a bit with the changes in
4997 _prefilter and _ofind (besides being far safer than before).
5016 _prefilter and _ofind (besides being far safer than before).
4998
5017
4999 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
5018 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
5000 obscure, never reported). Edit would fail to find the object to
5019 obscure, never reported). Edit would fail to find the object to
5001 edit under some circumstances.
5020 edit under some circumstances.
5002 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
5021 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
5003 which were causing double-calling of generators. Those eval calls
5022 which were causing double-calling of generators. Those eval calls
5004 were _very_ dangerous, since code with side effects could be
5023 were _very_ dangerous, since code with side effects could be
5005 triggered. As they say, 'eval is evil'... These were the
5024 triggered. As they say, 'eval is evil'... These were the
5006 nastiest evals in IPython. Besides, _ofind is now far simpler,
5025 nastiest evals in IPython. Besides, _ofind is now far simpler,
5007 and it should also be quite a bit faster. Its use of inspect is
5026 and it should also be quite a bit faster. Its use of inspect is
5008 also safer, so perhaps some of the inspect-related crashes I've
5027 also safer, so perhaps some of the inspect-related crashes I've
5009 seen lately with Python 2.3 might be taken care of. That will
5028 seen lately with Python 2.3 might be taken care of. That will
5010 need more testing.
5029 need more testing.
5011
5030
5012 2003-08-17 Fernando Perez <fperez@colorado.edu>
5031 2003-08-17 Fernando Perez <fperez@colorado.edu>
5013
5032
5014 * IPython/iplib.py (InteractiveShell._prefilter): significant
5033 * IPython/iplib.py (InteractiveShell._prefilter): significant
5015 simplifications to the logic for handling user escapes. Faster
5034 simplifications to the logic for handling user escapes. Faster
5016 and simpler code.
5035 and simpler code.
5017
5036
5018 2003-08-14 Fernando Perez <fperez@colorado.edu>
5037 2003-08-14 Fernando Perez <fperez@colorado.edu>
5019
5038
5020 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
5039 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
5021 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
5040 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
5022 but it should be quite a bit faster. And the recursive version
5041 but it should be quite a bit faster. And the recursive version
5023 generated O(log N) intermediate storage for all rank>1 arrays,
5042 generated O(log N) intermediate storage for all rank>1 arrays,
5024 even if they were contiguous.
5043 even if they were contiguous.
5025 (l1norm): Added this function.
5044 (l1norm): Added this function.
5026 (norm): Added this function for arbitrary norms (including
5045 (norm): Added this function for arbitrary norms (including
5027 l-infinity). l1 and l2 are still special cases for convenience
5046 l-infinity). l1 and l2 are still special cases for convenience
5028 and speed.
5047 and speed.
5029
5048
5030 2003-08-03 Fernando Perez <fperez@colorado.edu>
5049 2003-08-03 Fernando Perez <fperez@colorado.edu>
5031
5050
5032 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
5051 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
5033 exceptions, which now raise PendingDeprecationWarnings in Python
5052 exceptions, which now raise PendingDeprecationWarnings in Python
5034 2.3. There were some in Magic and some in Gnuplot2.
5053 2.3. There were some in Magic and some in Gnuplot2.
5035
5054
5036 2003-06-30 Fernando Perez <fperez@colorado.edu>
5055 2003-06-30 Fernando Perez <fperez@colorado.edu>
5037
5056
5038 * IPython/genutils.py (page): modified to call curses only for
5057 * IPython/genutils.py (page): modified to call curses only for
5039 terminals where TERM=='xterm'. After problems under many other
5058 terminals where TERM=='xterm'. After problems under many other
5040 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
5059 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
5041
5060
5042 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
5061 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
5043 would be triggered when readline was absent. This was just an old
5062 would be triggered when readline was absent. This was just an old
5044 debugging statement I'd forgotten to take out.
5063 debugging statement I'd forgotten to take out.
5045
5064
5046 2003-06-20 Fernando Perez <fperez@colorado.edu>
5065 2003-06-20 Fernando Perez <fperez@colorado.edu>
5047
5066
5048 * IPython/genutils.py (clock): modified to return only user time
5067 * IPython/genutils.py (clock): modified to return only user time
5049 (not counting system time), after a discussion on scipy. While
5068 (not counting system time), after a discussion on scipy. While
5050 system time may be a useful quantity occasionally, it may much
5069 system time may be a useful quantity occasionally, it may much
5051 more easily be skewed by occasional swapping or other similar
5070 more easily be skewed by occasional swapping or other similar
5052 activity.
5071 activity.
5053
5072
5054 2003-06-05 Fernando Perez <fperez@colorado.edu>
5073 2003-06-05 Fernando Perez <fperez@colorado.edu>
5055
5074
5056 * IPython/numutils.py (identity): new function, for building
5075 * IPython/numutils.py (identity): new function, for building
5057 arbitrary rank Kronecker deltas (mostly backwards compatible with
5076 arbitrary rank Kronecker deltas (mostly backwards compatible with
5058 Numeric.identity)
5077 Numeric.identity)
5059
5078
5060 2003-06-03 Fernando Perez <fperez@colorado.edu>
5079 2003-06-03 Fernando Perez <fperez@colorado.edu>
5061
5080
5062 * IPython/iplib.py (InteractiveShell.handle_magic): protect
5081 * IPython/iplib.py (InteractiveShell.handle_magic): protect
5063 arguments passed to magics with spaces, to allow trailing '\' to
5082 arguments passed to magics with spaces, to allow trailing '\' to
5064 work normally (mainly for Windows users).
5083 work normally (mainly for Windows users).
5065
5084
5066 2003-05-29 Fernando Perez <fperez@colorado.edu>
5085 2003-05-29 Fernando Perez <fperez@colorado.edu>
5067
5086
5068 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
5087 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
5069 instead of pydoc.help. This fixes a bizarre behavior where
5088 instead of pydoc.help. This fixes a bizarre behavior where
5070 printing '%s' % locals() would trigger the help system. Now
5089 printing '%s' % locals() would trigger the help system. Now
5071 ipython behaves like normal python does.
5090 ipython behaves like normal python does.
5072
5091
5073 Note that if one does 'from pydoc import help', the bizarre
5092 Note that if one does 'from pydoc import help', the bizarre
5074 behavior returns, but this will also happen in normal python, so
5093 behavior returns, but this will also happen in normal python, so
5075 it's not an ipython bug anymore (it has to do with how pydoc.help
5094 it's not an ipython bug anymore (it has to do with how pydoc.help
5076 is implemented).
5095 is implemented).
5077
5096
5078 2003-05-22 Fernando Perez <fperez@colorado.edu>
5097 2003-05-22 Fernando Perez <fperez@colorado.edu>
5079
5098
5080 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
5099 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
5081 return [] instead of None when nothing matches, also match to end
5100 return [] instead of None when nothing matches, also match to end
5082 of line. Patch by Gary Bishop.
5101 of line. Patch by Gary Bishop.
5083
5102
5084 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
5103 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
5085 protection as before, for files passed on the command line. This
5104 protection as before, for files passed on the command line. This
5086 prevents the CrashHandler from kicking in if user files call into
5105 prevents the CrashHandler from kicking in if user files call into
5087 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
5106 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
5088 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
5107 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
5089
5108
5090 2003-05-20 *** Released version 0.4.0
5109 2003-05-20 *** Released version 0.4.0
5091
5110
5092 2003-05-20 Fernando Perez <fperez@colorado.edu>
5111 2003-05-20 Fernando Perez <fperez@colorado.edu>
5093
5112
5094 * setup.py: added support for manpages. It's a bit hackish b/c of
5113 * setup.py: added support for manpages. It's a bit hackish b/c of
5095 a bug in the way the bdist_rpm distutils target handles gzipped
5114 a bug in the way the bdist_rpm distutils target handles gzipped
5096 manpages, but it works. After a patch by Jack.
5115 manpages, but it works. After a patch by Jack.
5097
5116
5098 2003-05-19 Fernando Perez <fperez@colorado.edu>
5117 2003-05-19 Fernando Perez <fperez@colorado.edu>
5099
5118
5100 * IPython/numutils.py: added a mockup of the kinds module, since
5119 * IPython/numutils.py: added a mockup of the kinds module, since
5101 it was recently removed from Numeric. This way, numutils will
5120 it was recently removed from Numeric. This way, numutils will
5102 work for all users even if they are missing kinds.
5121 work for all users even if they are missing kinds.
5103
5122
5104 * IPython/Magic.py (Magic._ofind): Harden against an inspect
5123 * IPython/Magic.py (Magic._ofind): Harden against an inspect
5105 failure, which can occur with SWIG-wrapped extensions. After a
5124 failure, which can occur with SWIG-wrapped extensions. After a
5106 crash report from Prabhu.
5125 crash report from Prabhu.
5107
5126
5108 2003-05-16 Fernando Perez <fperez@colorado.edu>
5127 2003-05-16 Fernando Perez <fperez@colorado.edu>
5109
5128
5110 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5129 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5111 protect ipython from user code which may call directly
5130 protect ipython from user code which may call directly
5112 sys.excepthook (this looks like an ipython crash to the user, even
5131 sys.excepthook (this looks like an ipython crash to the user, even
5113 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5132 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5114 This is especially important to help users of WxWindows, but may
5133 This is especially important to help users of WxWindows, but may
5115 also be useful in other cases.
5134 also be useful in other cases.
5116
5135
5117 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5136 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5118 an optional tb_offset to be specified, and to preserve exception
5137 an optional tb_offset to be specified, and to preserve exception
5119 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5138 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5120
5139
5121 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5140 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5122
5141
5123 2003-05-15 Fernando Perez <fperez@colorado.edu>
5142 2003-05-15 Fernando Perez <fperez@colorado.edu>
5124
5143
5125 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5144 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5126 installing for a new user under Windows.
5145 installing for a new user under Windows.
5127
5146
5128 2003-05-12 Fernando Perez <fperez@colorado.edu>
5147 2003-05-12 Fernando Perez <fperez@colorado.edu>
5129
5148
5130 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5149 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5131 handler for Emacs comint-based lines. Currently it doesn't do
5150 handler for Emacs comint-based lines. Currently it doesn't do
5132 much (but importantly, it doesn't update the history cache). In
5151 much (but importantly, it doesn't update the history cache). In
5133 the future it may be expanded if Alex needs more functionality
5152 the future it may be expanded if Alex needs more functionality
5134 there.
5153 there.
5135
5154
5136 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5155 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5137 info to crash reports.
5156 info to crash reports.
5138
5157
5139 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5158 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5140 just like Python's -c. Also fixed crash with invalid -color
5159 just like Python's -c. Also fixed crash with invalid -color
5141 option value at startup. Thanks to Will French
5160 option value at startup. Thanks to Will French
5142 <wfrench-AT-bestweb.net> for the bug report.
5161 <wfrench-AT-bestweb.net> for the bug report.
5143
5162
5144 2003-05-09 Fernando Perez <fperez@colorado.edu>
5163 2003-05-09 Fernando Perez <fperez@colorado.edu>
5145
5164
5146 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5165 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5147 to EvalDict (it's a mapping, after all) and simplified its code
5166 to EvalDict (it's a mapping, after all) and simplified its code
5148 quite a bit, after a nice discussion on c.l.py where Gustavo
5167 quite a bit, after a nice discussion on c.l.py where Gustavo
5149 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5168 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5150
5169
5151 2003-04-30 Fernando Perez <fperez@colorado.edu>
5170 2003-04-30 Fernando Perez <fperez@colorado.edu>
5152
5171
5153 * IPython/genutils.py (timings_out): modified it to reduce its
5172 * IPython/genutils.py (timings_out): modified it to reduce its
5154 overhead in the common reps==1 case.
5173 overhead in the common reps==1 case.
5155
5174
5156 2003-04-29 Fernando Perez <fperez@colorado.edu>
5175 2003-04-29 Fernando Perez <fperez@colorado.edu>
5157
5176
5158 * IPython/genutils.py (timings_out): Modified to use the resource
5177 * IPython/genutils.py (timings_out): Modified to use the resource
5159 module, which avoids the wraparound problems of time.clock().
5178 module, which avoids the wraparound problems of time.clock().
5160
5179
5161 2003-04-17 *** Released version 0.2.15pre4
5180 2003-04-17 *** Released version 0.2.15pre4
5162
5181
5163 2003-04-17 Fernando Perez <fperez@colorado.edu>
5182 2003-04-17 Fernando Perez <fperez@colorado.edu>
5164
5183
5165 * setup.py (scriptfiles): Split windows-specific stuff over to a
5184 * setup.py (scriptfiles): Split windows-specific stuff over to a
5166 separate file, in an attempt to have a Windows GUI installer.
5185 separate file, in an attempt to have a Windows GUI installer.
5167 That didn't work, but part of the groundwork is done.
5186 That didn't work, but part of the groundwork is done.
5168
5187
5169 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5188 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5170 indent/unindent with 4 spaces. Particularly useful in combination
5189 indent/unindent with 4 spaces. Particularly useful in combination
5171 with the new auto-indent option.
5190 with the new auto-indent option.
5172
5191
5173 2003-04-16 Fernando Perez <fperez@colorado.edu>
5192 2003-04-16 Fernando Perez <fperez@colorado.edu>
5174
5193
5175 * IPython/Magic.py: various replacements of self.rc for
5194 * IPython/Magic.py: various replacements of self.rc for
5176 self.shell.rc. A lot more remains to be done to fully disentangle
5195 self.shell.rc. A lot more remains to be done to fully disentangle
5177 this class from the main Shell class.
5196 this class from the main Shell class.
5178
5197
5179 * IPython/GnuplotRuntime.py: added checks for mouse support so
5198 * IPython/GnuplotRuntime.py: added checks for mouse support so
5180 that we don't try to enable it if the current gnuplot doesn't
5199 that we don't try to enable it if the current gnuplot doesn't
5181 really support it. Also added checks so that we don't try to
5200 really support it. Also added checks so that we don't try to
5182 enable persist under Windows (where Gnuplot doesn't recognize the
5201 enable persist under Windows (where Gnuplot doesn't recognize the
5183 option).
5202 option).
5184
5203
5185 * IPython/iplib.py (InteractiveShell.interact): Added optional
5204 * IPython/iplib.py (InteractiveShell.interact): Added optional
5186 auto-indenting code, after a patch by King C. Shu
5205 auto-indenting code, after a patch by King C. Shu
5187 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5206 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5188 get along well with pasting indented code. If I ever figure out
5207 get along well with pasting indented code. If I ever figure out
5189 how to make that part go well, it will become on by default.
5208 how to make that part go well, it will become on by default.
5190
5209
5191 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5210 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5192 crash ipython if there was an unmatched '%' in the user's prompt
5211 crash ipython if there was an unmatched '%' in the user's prompt
5193 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5212 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5194
5213
5195 * IPython/iplib.py (InteractiveShell.interact): removed the
5214 * IPython/iplib.py (InteractiveShell.interact): removed the
5196 ability to ask the user whether he wants to crash or not at the
5215 ability to ask the user whether he wants to crash or not at the
5197 'last line' exception handler. Calling functions at that point
5216 'last line' exception handler. Calling functions at that point
5198 changes the stack, and the error reports would have incorrect
5217 changes the stack, and the error reports would have incorrect
5199 tracebacks.
5218 tracebacks.
5200
5219
5201 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5220 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5202 pass through a peger a pretty-printed form of any object. After a
5221 pass through a peger a pretty-printed form of any object. After a
5203 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5222 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5204
5223
5205 2003-04-14 Fernando Perez <fperez@colorado.edu>
5224 2003-04-14 Fernando Perez <fperez@colorado.edu>
5206
5225
5207 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5226 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5208 all files in ~ would be modified at first install (instead of
5227 all files in ~ would be modified at first install (instead of
5209 ~/.ipython). This could be potentially disastrous, as the
5228 ~/.ipython). This could be potentially disastrous, as the
5210 modification (make line-endings native) could damage binary files.
5229 modification (make line-endings native) could damage binary files.
5211
5230
5212 2003-04-10 Fernando Perez <fperez@colorado.edu>
5231 2003-04-10 Fernando Perez <fperez@colorado.edu>
5213
5232
5214 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5233 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5215 handle only lines which are invalid python. This now means that
5234 handle only lines which are invalid python. This now means that
5216 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5235 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5217 for the bug report.
5236 for the bug report.
5218
5237
5219 2003-04-01 Fernando Perez <fperez@colorado.edu>
5238 2003-04-01 Fernando Perez <fperez@colorado.edu>
5220
5239
5221 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5240 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5222 where failing to set sys.last_traceback would crash pdb.pm().
5241 where failing to set sys.last_traceback would crash pdb.pm().
5223 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5242 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5224 report.
5243 report.
5225
5244
5226 2003-03-25 Fernando Perez <fperez@colorado.edu>
5245 2003-03-25 Fernando Perez <fperez@colorado.edu>
5227
5246
5228 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5247 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5229 before printing it (it had a lot of spurious blank lines at the
5248 before printing it (it had a lot of spurious blank lines at the
5230 end).
5249 end).
5231
5250
5232 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5251 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5233 output would be sent 21 times! Obviously people don't use this
5252 output would be sent 21 times! Obviously people don't use this
5234 too often, or I would have heard about it.
5253 too often, or I would have heard about it.
5235
5254
5236 2003-03-24 Fernando Perez <fperez@colorado.edu>
5255 2003-03-24 Fernando Perez <fperez@colorado.edu>
5237
5256
5238 * setup.py (scriptfiles): renamed the data_files parameter from
5257 * setup.py (scriptfiles): renamed the data_files parameter from
5239 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5258 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5240 for the patch.
5259 for the patch.
5241
5260
5242 2003-03-20 Fernando Perez <fperez@colorado.edu>
5261 2003-03-20 Fernando Perez <fperez@colorado.edu>
5243
5262
5244 * IPython/genutils.py (error): added error() and fatal()
5263 * IPython/genutils.py (error): added error() and fatal()
5245 functions.
5264 functions.
5246
5265
5247 2003-03-18 *** Released version 0.2.15pre3
5266 2003-03-18 *** Released version 0.2.15pre3
5248
5267
5249 2003-03-18 Fernando Perez <fperez@colorado.edu>
5268 2003-03-18 Fernando Perez <fperez@colorado.edu>
5250
5269
5251 * setupext/install_data_ext.py
5270 * setupext/install_data_ext.py
5252 (install_data_ext.initialize_options): Class contributed by Jack
5271 (install_data_ext.initialize_options): Class contributed by Jack
5253 Moffit for fixing the old distutils hack. He is sending this to
5272 Moffit for fixing the old distutils hack. He is sending this to
5254 the distutils folks so in the future we may not need it as a
5273 the distutils folks so in the future we may not need it as a
5255 private fix.
5274 private fix.
5256
5275
5257 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5276 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5258 changes for Debian packaging. See his patch for full details.
5277 changes for Debian packaging. See his patch for full details.
5259 The old distutils hack of making the ipythonrc* files carry a
5278 The old distutils hack of making the ipythonrc* files carry a
5260 bogus .py extension is gone, at last. Examples were moved to a
5279 bogus .py extension is gone, at last. Examples were moved to a
5261 separate subdir under doc/, and the separate executable scripts
5280 separate subdir under doc/, and the separate executable scripts
5262 now live in their own directory. Overall a great cleanup. The
5281 now live in their own directory. Overall a great cleanup. The
5263 manual was updated to use the new files, and setup.py has been
5282 manual was updated to use the new files, and setup.py has been
5264 fixed for this setup.
5283 fixed for this setup.
5265
5284
5266 * IPython/PyColorize.py (Parser.usage): made non-executable and
5285 * IPython/PyColorize.py (Parser.usage): made non-executable and
5267 created a pycolor wrapper around it to be included as a script.
5286 created a pycolor wrapper around it to be included as a script.
5268
5287
5269 2003-03-12 *** Released version 0.2.15pre2
5288 2003-03-12 *** Released version 0.2.15pre2
5270
5289
5271 2003-03-12 Fernando Perez <fperez@colorado.edu>
5290 2003-03-12 Fernando Perez <fperez@colorado.edu>
5272
5291
5273 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5292 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5274 long-standing problem with garbage characters in some terminals.
5293 long-standing problem with garbage characters in some terminals.
5275 The issue was really that the \001 and \002 escapes must _only_ be
5294 The issue was really that the \001 and \002 escapes must _only_ be
5276 passed to input prompts (which call readline), but _never_ to
5295 passed to input prompts (which call readline), but _never_ to
5277 normal text to be printed on screen. I changed ColorANSI to have
5296 normal text to be printed on screen. I changed ColorANSI to have
5278 two classes: TermColors and InputTermColors, each with the
5297 two classes: TermColors and InputTermColors, each with the
5279 appropriate escapes for input prompts or normal text. The code in
5298 appropriate escapes for input prompts or normal text. The code in
5280 Prompts.py got slightly more complicated, but this very old and
5299 Prompts.py got slightly more complicated, but this very old and
5281 annoying bug is finally fixed.
5300 annoying bug is finally fixed.
5282
5301
5283 All the credit for nailing down the real origin of this problem
5302 All the credit for nailing down the real origin of this problem
5284 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5303 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5285 *Many* thanks to him for spending quite a bit of effort on this.
5304 *Many* thanks to him for spending quite a bit of effort on this.
5286
5305
5287 2003-03-05 *** Released version 0.2.15pre1
5306 2003-03-05 *** Released version 0.2.15pre1
5288
5307
5289 2003-03-03 Fernando Perez <fperez@colorado.edu>
5308 2003-03-03 Fernando Perez <fperez@colorado.edu>
5290
5309
5291 * IPython/FakeModule.py: Moved the former _FakeModule to a
5310 * IPython/FakeModule.py: Moved the former _FakeModule to a
5292 separate file, because it's also needed by Magic (to fix a similar
5311 separate file, because it's also needed by Magic (to fix a similar
5293 pickle-related issue in @run).
5312 pickle-related issue in @run).
5294
5313
5295 2003-03-02 Fernando Perez <fperez@colorado.edu>
5314 2003-03-02 Fernando Perez <fperez@colorado.edu>
5296
5315
5297 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5316 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5298 the autocall option at runtime.
5317 the autocall option at runtime.
5299 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5318 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5300 across Magic.py to start separating Magic from InteractiveShell.
5319 across Magic.py to start separating Magic from InteractiveShell.
5301 (Magic._ofind): Fixed to return proper namespace for dotted
5320 (Magic._ofind): Fixed to return proper namespace for dotted
5302 names. Before, a dotted name would always return 'not currently
5321 names. Before, a dotted name would always return 'not currently
5303 defined', because it would find the 'parent'. s.x would be found,
5322 defined', because it would find the 'parent'. s.x would be found,
5304 but since 'x' isn't defined by itself, it would get confused.
5323 but since 'x' isn't defined by itself, it would get confused.
5305 (Magic.magic_run): Fixed pickling problems reported by Ralf
5324 (Magic.magic_run): Fixed pickling problems reported by Ralf
5306 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5325 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5307 that I'd used when Mike Heeter reported similar issues at the
5326 that I'd used when Mike Heeter reported similar issues at the
5308 top-level, but now for @run. It boils down to injecting the
5327 top-level, but now for @run. It boils down to injecting the
5309 namespace where code is being executed with something that looks
5328 namespace where code is being executed with something that looks
5310 enough like a module to fool pickle.dump(). Since a pickle stores
5329 enough like a module to fool pickle.dump(). Since a pickle stores
5311 a named reference to the importing module, we need this for
5330 a named reference to the importing module, we need this for
5312 pickles to save something sensible.
5331 pickles to save something sensible.
5313
5332
5314 * IPython/ipmaker.py (make_IPython): added an autocall option.
5333 * IPython/ipmaker.py (make_IPython): added an autocall option.
5315
5334
5316 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5335 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5317 the auto-eval code. Now autocalling is an option, and the code is
5336 the auto-eval code. Now autocalling is an option, and the code is
5318 also vastly safer. There is no more eval() involved at all.
5337 also vastly safer. There is no more eval() involved at all.
5319
5338
5320 2003-03-01 Fernando Perez <fperez@colorado.edu>
5339 2003-03-01 Fernando Perez <fperez@colorado.edu>
5321
5340
5322 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5341 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5323 dict with named keys instead of a tuple.
5342 dict with named keys instead of a tuple.
5324
5343
5325 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5344 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5326
5345
5327 * setup.py (make_shortcut): Fixed message about directories
5346 * setup.py (make_shortcut): Fixed message about directories
5328 created during Windows installation (the directories were ok, just
5347 created during Windows installation (the directories were ok, just
5329 the printed message was misleading). Thanks to Chris Liechti
5348 the printed message was misleading). Thanks to Chris Liechti
5330 <cliechti-AT-gmx.net> for the heads up.
5349 <cliechti-AT-gmx.net> for the heads up.
5331
5350
5332 2003-02-21 Fernando Perez <fperez@colorado.edu>
5351 2003-02-21 Fernando Perez <fperez@colorado.edu>
5333
5352
5334 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5353 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5335 of ValueError exception when checking for auto-execution. This
5354 of ValueError exception when checking for auto-execution. This
5336 one is raised by things like Numeric arrays arr.flat when the
5355 one is raised by things like Numeric arrays arr.flat when the
5337 array is non-contiguous.
5356 array is non-contiguous.
5338
5357
5339 2003-01-31 Fernando Perez <fperez@colorado.edu>
5358 2003-01-31 Fernando Perez <fperez@colorado.edu>
5340
5359
5341 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5360 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5342 not return any value at all (even though the command would get
5361 not return any value at all (even though the command would get
5343 executed).
5362 executed).
5344 (xsys): Flush stdout right after printing the command to ensure
5363 (xsys): Flush stdout right after printing the command to ensure
5345 proper ordering of commands and command output in the total
5364 proper ordering of commands and command output in the total
5346 output.
5365 output.
5347 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5366 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5348 system/getoutput as defaults. The old ones are kept for
5367 system/getoutput as defaults. The old ones are kept for
5349 compatibility reasons, so no code which uses this library needs
5368 compatibility reasons, so no code which uses this library needs
5350 changing.
5369 changing.
5351
5370
5352 2003-01-27 *** Released version 0.2.14
5371 2003-01-27 *** Released version 0.2.14
5353
5372
5354 2003-01-25 Fernando Perez <fperez@colorado.edu>
5373 2003-01-25 Fernando Perez <fperez@colorado.edu>
5355
5374
5356 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5375 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5357 functions defined in previous edit sessions could not be re-edited
5376 functions defined in previous edit sessions could not be re-edited
5358 (because the temp files were immediately removed). Now temp files
5377 (because the temp files were immediately removed). Now temp files
5359 are removed only at IPython's exit.
5378 are removed only at IPython's exit.
5360 (Magic.magic_run): Improved @run to perform shell-like expansions
5379 (Magic.magic_run): Improved @run to perform shell-like expansions
5361 on its arguments (~users and $VARS). With this, @run becomes more
5380 on its arguments (~users and $VARS). With this, @run becomes more
5362 like a normal command-line.
5381 like a normal command-line.
5363
5382
5364 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5383 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5365 bugs related to embedding and cleaned up that code. A fairly
5384 bugs related to embedding and cleaned up that code. A fairly
5366 important one was the impossibility to access the global namespace
5385 important one was the impossibility to access the global namespace
5367 through the embedded IPython (only local variables were visible).
5386 through the embedded IPython (only local variables were visible).
5368
5387
5369 2003-01-14 Fernando Perez <fperez@colorado.edu>
5388 2003-01-14 Fernando Perez <fperez@colorado.edu>
5370
5389
5371 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5390 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5372 auto-calling to be a bit more conservative. Now it doesn't get
5391 auto-calling to be a bit more conservative. Now it doesn't get
5373 triggered if any of '!=()<>' are in the rest of the input line, to
5392 triggered if any of '!=()<>' are in the rest of the input line, to
5374 allow comparing callables. Thanks to Alex for the heads up.
5393 allow comparing callables. Thanks to Alex for the heads up.
5375
5394
5376 2003-01-07 Fernando Perez <fperez@colorado.edu>
5395 2003-01-07 Fernando Perez <fperez@colorado.edu>
5377
5396
5378 * IPython/genutils.py (page): fixed estimation of the number of
5397 * IPython/genutils.py (page): fixed estimation of the number of
5379 lines in a string to be paged to simply count newlines. This
5398 lines in a string to be paged to simply count newlines. This
5380 prevents over-guessing due to embedded escape sequences. A better
5399 prevents over-guessing due to embedded escape sequences. A better
5381 long-term solution would involve stripping out the control chars
5400 long-term solution would involve stripping out the control chars
5382 for the count, but it's potentially so expensive I just don't
5401 for the count, but it's potentially so expensive I just don't
5383 think it's worth doing.
5402 think it's worth doing.
5384
5403
5385 2002-12-19 *** Released version 0.2.14pre50
5404 2002-12-19 *** Released version 0.2.14pre50
5386
5405
5387 2002-12-19 Fernando Perez <fperez@colorado.edu>
5406 2002-12-19 Fernando Perez <fperez@colorado.edu>
5388
5407
5389 * tools/release (version): Changed release scripts to inform
5408 * tools/release (version): Changed release scripts to inform
5390 Andrea and build a NEWS file with a list of recent changes.
5409 Andrea and build a NEWS file with a list of recent changes.
5391
5410
5392 * IPython/ColorANSI.py (__all__): changed terminal detection
5411 * IPython/ColorANSI.py (__all__): changed terminal detection
5393 code. Seems to work better for xterms without breaking
5412 code. Seems to work better for xterms without breaking
5394 konsole. Will need more testing to determine if WinXP and Mac OSX
5413 konsole. Will need more testing to determine if WinXP and Mac OSX
5395 also work ok.
5414 also work ok.
5396
5415
5397 2002-12-18 *** Released version 0.2.14pre49
5416 2002-12-18 *** Released version 0.2.14pre49
5398
5417
5399 2002-12-18 Fernando Perez <fperez@colorado.edu>
5418 2002-12-18 Fernando Perez <fperez@colorado.edu>
5400
5419
5401 * Docs: added new info about Mac OSX, from Andrea.
5420 * Docs: added new info about Mac OSX, from Andrea.
5402
5421
5403 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5422 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5404 allow direct plotting of python strings whose format is the same
5423 allow direct plotting of python strings whose format is the same
5405 of gnuplot data files.
5424 of gnuplot data files.
5406
5425
5407 2002-12-16 Fernando Perez <fperez@colorado.edu>
5426 2002-12-16 Fernando Perez <fperez@colorado.edu>
5408
5427
5409 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5428 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5410 value of exit question to be acknowledged.
5429 value of exit question to be acknowledged.
5411
5430
5412 2002-12-03 Fernando Perez <fperez@colorado.edu>
5431 2002-12-03 Fernando Perez <fperez@colorado.edu>
5413
5432
5414 * IPython/ipmaker.py: removed generators, which had been added
5433 * IPython/ipmaker.py: removed generators, which had been added
5415 by mistake in an earlier debugging run. This was causing trouble
5434 by mistake in an earlier debugging run. This was causing trouble
5416 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5435 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5417 for pointing this out.
5436 for pointing this out.
5418
5437
5419 2002-11-17 Fernando Perez <fperez@colorado.edu>
5438 2002-11-17 Fernando Perez <fperez@colorado.edu>
5420
5439
5421 * Manual: updated the Gnuplot section.
5440 * Manual: updated the Gnuplot section.
5422
5441
5423 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5442 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5424 a much better split of what goes in Runtime and what goes in
5443 a much better split of what goes in Runtime and what goes in
5425 Interactive.
5444 Interactive.
5426
5445
5427 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5446 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5428 being imported from iplib.
5447 being imported from iplib.
5429
5448
5430 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5449 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5431 for command-passing. Now the global Gnuplot instance is called
5450 for command-passing. Now the global Gnuplot instance is called
5432 'gp' instead of 'g', which was really a far too fragile and
5451 'gp' instead of 'g', which was really a far too fragile and
5433 common name.
5452 common name.
5434
5453
5435 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5454 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5436 bounding boxes generated by Gnuplot for square plots.
5455 bounding boxes generated by Gnuplot for square plots.
5437
5456
5438 * IPython/genutils.py (popkey): new function added. I should
5457 * IPython/genutils.py (popkey): new function added. I should
5439 suggest this on c.l.py as a dict method, it seems useful.
5458 suggest this on c.l.py as a dict method, it seems useful.
5440
5459
5441 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5460 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5442 to transparently handle PostScript generation. MUCH better than
5461 to transparently handle PostScript generation. MUCH better than
5443 the previous plot_eps/replot_eps (which I removed now). The code
5462 the previous plot_eps/replot_eps (which I removed now). The code
5444 is also fairly clean and well documented now (including
5463 is also fairly clean and well documented now (including
5445 docstrings).
5464 docstrings).
5446
5465
5447 2002-11-13 Fernando Perez <fperez@colorado.edu>
5466 2002-11-13 Fernando Perez <fperez@colorado.edu>
5448
5467
5449 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5468 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5450 (inconsistent with options).
5469 (inconsistent with options).
5451
5470
5452 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5471 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5453 manually disabled, I don't know why. Fixed it.
5472 manually disabled, I don't know why. Fixed it.
5454 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5473 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5455 eps output.
5474 eps output.
5456
5475
5457 2002-11-12 Fernando Perez <fperez@colorado.edu>
5476 2002-11-12 Fernando Perez <fperez@colorado.edu>
5458
5477
5459 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5478 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5460 don't propagate up to caller. Fixes crash reported by François
5479 don't propagate up to caller. Fixes crash reported by François
5461 Pinard.
5480 Pinard.
5462
5481
5463 2002-11-09 Fernando Perez <fperez@colorado.edu>
5482 2002-11-09 Fernando Perez <fperez@colorado.edu>
5464
5483
5465 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5484 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5466 history file for new users.
5485 history file for new users.
5467 (make_IPython): fixed bug where initial install would leave the
5486 (make_IPython): fixed bug where initial install would leave the
5468 user running in the .ipython dir.
5487 user running in the .ipython dir.
5469 (make_IPython): fixed bug where config dir .ipython would be
5488 (make_IPython): fixed bug where config dir .ipython would be
5470 created regardless of the given -ipythondir option. Thanks to Cory
5489 created regardless of the given -ipythondir option. Thanks to Cory
5471 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5490 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5472
5491
5473 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5492 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5474 type confirmations. Will need to use it in all of IPython's code
5493 type confirmations. Will need to use it in all of IPython's code
5475 consistently.
5494 consistently.
5476
5495
5477 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5496 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5478 context to print 31 lines instead of the default 5. This will make
5497 context to print 31 lines instead of the default 5. This will make
5479 the crash reports extremely detailed in case the problem is in
5498 the crash reports extremely detailed in case the problem is in
5480 libraries I don't have access to.
5499 libraries I don't have access to.
5481
5500
5482 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5501 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5483 line of defense' code to still crash, but giving users fair
5502 line of defense' code to still crash, but giving users fair
5484 warning. I don't want internal errors to go unreported: if there's
5503 warning. I don't want internal errors to go unreported: if there's
5485 an internal problem, IPython should crash and generate a full
5504 an internal problem, IPython should crash and generate a full
5486 report.
5505 report.
5487
5506
5488 2002-11-08 Fernando Perez <fperez@colorado.edu>
5507 2002-11-08 Fernando Perez <fperez@colorado.edu>
5489
5508
5490 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5509 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5491 otherwise uncaught exceptions which can appear if people set
5510 otherwise uncaught exceptions which can appear if people set
5492 sys.stdout to something badly broken. Thanks to a crash report
5511 sys.stdout to something badly broken. Thanks to a crash report
5493 from henni-AT-mail.brainbot.com.
5512 from henni-AT-mail.brainbot.com.
5494
5513
5495 2002-11-04 Fernando Perez <fperez@colorado.edu>
5514 2002-11-04 Fernando Perez <fperez@colorado.edu>
5496
5515
5497 * IPython/iplib.py (InteractiveShell.interact): added
5516 * IPython/iplib.py (InteractiveShell.interact): added
5498 __IPYTHON__active to the builtins. It's a flag which goes on when
5517 __IPYTHON__active to the builtins. It's a flag which goes on when
5499 the interaction starts and goes off again when it stops. This
5518 the interaction starts and goes off again when it stops. This
5500 allows embedding code to detect being inside IPython. Before this
5519 allows embedding code to detect being inside IPython. Before this
5501 was done via __IPYTHON__, but that only shows that an IPython
5520 was done via __IPYTHON__, but that only shows that an IPython
5502 instance has been created.
5521 instance has been created.
5503
5522
5504 * IPython/Magic.py (Magic.magic_env): I realized that in a
5523 * IPython/Magic.py (Magic.magic_env): I realized that in a
5505 UserDict, instance.data holds the data as a normal dict. So I
5524 UserDict, instance.data holds the data as a normal dict. So I
5506 modified @env to return os.environ.data instead of rebuilding a
5525 modified @env to return os.environ.data instead of rebuilding a
5507 dict by hand.
5526 dict by hand.
5508
5527
5509 2002-11-02 Fernando Perez <fperez@colorado.edu>
5528 2002-11-02 Fernando Perez <fperez@colorado.edu>
5510
5529
5511 * IPython/genutils.py (warn): changed so that level 1 prints no
5530 * IPython/genutils.py (warn): changed so that level 1 prints no
5512 header. Level 2 is now the default (with 'WARNING' header, as
5531 header. Level 2 is now the default (with 'WARNING' header, as
5513 before). I think I tracked all places where changes were needed in
5532 before). I think I tracked all places where changes were needed in
5514 IPython, but outside code using the old level numbering may have
5533 IPython, but outside code using the old level numbering may have
5515 broken.
5534 broken.
5516
5535
5517 * IPython/iplib.py (InteractiveShell.runcode): added this to
5536 * IPython/iplib.py (InteractiveShell.runcode): added this to
5518 handle the tracebacks in SystemExit traps correctly. The previous
5537 handle the tracebacks in SystemExit traps correctly. The previous
5519 code (through interact) was printing more of the stack than
5538 code (through interact) was printing more of the stack than
5520 necessary, showing IPython internal code to the user.
5539 necessary, showing IPython internal code to the user.
5521
5540
5522 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5541 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5523 default. Now that the default at the confirmation prompt is yes,
5542 default. Now that the default at the confirmation prompt is yes,
5524 it's not so intrusive. François' argument that ipython sessions
5543 it's not so intrusive. François' argument that ipython sessions
5525 tend to be complex enough not to lose them from an accidental C-d,
5544 tend to be complex enough not to lose them from an accidental C-d,
5526 is a valid one.
5545 is a valid one.
5527
5546
5528 * IPython/iplib.py (InteractiveShell.interact): added a
5547 * IPython/iplib.py (InteractiveShell.interact): added a
5529 showtraceback() call to the SystemExit trap, and modified the exit
5548 showtraceback() call to the SystemExit trap, and modified the exit
5530 confirmation to have yes as the default.
5549 confirmation to have yes as the default.
5531
5550
5532 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5551 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5533 this file. It's been gone from the code for a long time, this was
5552 this file. It's been gone from the code for a long time, this was
5534 simply leftover junk.
5553 simply leftover junk.
5535
5554
5536 2002-11-01 Fernando Perez <fperez@colorado.edu>
5555 2002-11-01 Fernando Perez <fperez@colorado.edu>
5537
5556
5538 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5557 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5539 added. If set, IPython now traps EOF and asks for
5558 added. If set, IPython now traps EOF and asks for
5540 confirmation. After a request by François Pinard.
5559 confirmation. After a request by François Pinard.
5541
5560
5542 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5561 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5543 of @abort, and with a new (better) mechanism for handling the
5562 of @abort, and with a new (better) mechanism for handling the
5544 exceptions.
5563 exceptions.
5545
5564
5546 2002-10-27 Fernando Perez <fperez@colorado.edu>
5565 2002-10-27 Fernando Perez <fperez@colorado.edu>
5547
5566
5548 * IPython/usage.py (__doc__): updated the --help information and
5567 * IPython/usage.py (__doc__): updated the --help information and
5549 the ipythonrc file to indicate that -log generates
5568 the ipythonrc file to indicate that -log generates
5550 ./ipython.log. Also fixed the corresponding info in @logstart.
5569 ./ipython.log. Also fixed the corresponding info in @logstart.
5551 This and several other fixes in the manuals thanks to reports by
5570 This and several other fixes in the manuals thanks to reports by
5552 François Pinard <pinard-AT-iro.umontreal.ca>.
5571 François Pinard <pinard-AT-iro.umontreal.ca>.
5553
5572
5554 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5573 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5555 refer to @logstart (instead of @log, which doesn't exist).
5574 refer to @logstart (instead of @log, which doesn't exist).
5556
5575
5557 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5576 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5558 AttributeError crash. Thanks to Christopher Armstrong
5577 AttributeError crash. Thanks to Christopher Armstrong
5559 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5578 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5560 introduced recently (in 0.2.14pre37) with the fix to the eval
5579 introduced recently (in 0.2.14pre37) with the fix to the eval
5561 problem mentioned below.
5580 problem mentioned below.
5562
5581
5563 2002-10-17 Fernando Perez <fperez@colorado.edu>
5582 2002-10-17 Fernando Perez <fperez@colorado.edu>
5564
5583
5565 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5584 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5566 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5585 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5567
5586
5568 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5587 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5569 this function to fix a problem reported by Alex Schmolck. He saw
5588 this function to fix a problem reported by Alex Schmolck. He saw
5570 it with list comprehensions and generators, which were getting
5589 it with list comprehensions and generators, which were getting
5571 called twice. The real problem was an 'eval' call in testing for
5590 called twice. The real problem was an 'eval' call in testing for
5572 automagic which was evaluating the input line silently.
5591 automagic which was evaluating the input line silently.
5573
5592
5574 This is a potentially very nasty bug, if the input has side
5593 This is a potentially very nasty bug, if the input has side
5575 effects which must not be repeated. The code is much cleaner now,
5594 effects which must not be repeated. The code is much cleaner now,
5576 without any blanket 'except' left and with a regexp test for
5595 without any blanket 'except' left and with a regexp test for
5577 actual function names.
5596 actual function names.
5578
5597
5579 But an eval remains, which I'm not fully comfortable with. I just
5598 But an eval remains, which I'm not fully comfortable with. I just
5580 don't know how to find out if an expression could be a callable in
5599 don't know how to find out if an expression could be a callable in
5581 the user's namespace without doing an eval on the string. However
5600 the user's namespace without doing an eval on the string. However
5582 that string is now much more strictly checked so that no code
5601 that string is now much more strictly checked so that no code
5583 slips by, so the eval should only happen for things that can
5602 slips by, so the eval should only happen for things that can
5584 really be only function/method names.
5603 really be only function/method names.
5585
5604
5586 2002-10-15 Fernando Perez <fperez@colorado.edu>
5605 2002-10-15 Fernando Perez <fperez@colorado.edu>
5587
5606
5588 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5607 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5589 OSX information to main manual, removed README_Mac_OSX file from
5608 OSX information to main manual, removed README_Mac_OSX file from
5590 distribution. Also updated credits for recent additions.
5609 distribution. Also updated credits for recent additions.
5591
5610
5592 2002-10-10 Fernando Perez <fperez@colorado.edu>
5611 2002-10-10 Fernando Perez <fperez@colorado.edu>
5593
5612
5594 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5613 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5595 terminal-related issues. Many thanks to Andrea Riciputi
5614 terminal-related issues. Many thanks to Andrea Riciputi
5596 <andrea.riciputi-AT-libero.it> for writing it.
5615 <andrea.riciputi-AT-libero.it> for writing it.
5597
5616
5598 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5617 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5599 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5618 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5600
5619
5601 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5620 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5602 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5621 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5603 <syver-en-AT-online.no> who both submitted patches for this problem.
5622 <syver-en-AT-online.no> who both submitted patches for this problem.
5604
5623
5605 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5624 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5606 global embedding to make sure that things don't overwrite user
5625 global embedding to make sure that things don't overwrite user
5607 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5626 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5608
5627
5609 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5628 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5610 compatibility. Thanks to Hayden Callow
5629 compatibility. Thanks to Hayden Callow
5611 <h.callow-AT-elec.canterbury.ac.nz>
5630 <h.callow-AT-elec.canterbury.ac.nz>
5612
5631
5613 2002-10-04 Fernando Perez <fperez@colorado.edu>
5632 2002-10-04 Fernando Perez <fperez@colorado.edu>
5614
5633
5615 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5634 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5616 Gnuplot.File objects.
5635 Gnuplot.File objects.
5617
5636
5618 2002-07-23 Fernando Perez <fperez@colorado.edu>
5637 2002-07-23 Fernando Perez <fperez@colorado.edu>
5619
5638
5620 * IPython/genutils.py (timing): Added timings() and timing() for
5639 * IPython/genutils.py (timing): Added timings() and timing() for
5621 quick access to the most commonly needed data, the execution
5640 quick access to the most commonly needed data, the execution
5622 times. Old timing() renamed to timings_out().
5641 times. Old timing() renamed to timings_out().
5623
5642
5624 2002-07-18 Fernando Perez <fperez@colorado.edu>
5643 2002-07-18 Fernando Perez <fperez@colorado.edu>
5625
5644
5626 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5645 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5627 bug with nested instances disrupting the parent's tab completion.
5646 bug with nested instances disrupting the parent's tab completion.
5628
5647
5629 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5648 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5630 all_completions code to begin the emacs integration.
5649 all_completions code to begin the emacs integration.
5631
5650
5632 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5651 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5633 argument to allow titling individual arrays when plotting.
5652 argument to allow titling individual arrays when plotting.
5634
5653
5635 2002-07-15 Fernando Perez <fperez@colorado.edu>
5654 2002-07-15 Fernando Perez <fperez@colorado.edu>
5636
5655
5637 * setup.py (make_shortcut): changed to retrieve the value of
5656 * setup.py (make_shortcut): changed to retrieve the value of
5638 'Program Files' directory from the registry (this value changes in
5657 'Program Files' directory from the registry (this value changes in
5639 non-english versions of Windows). Thanks to Thomas Fanslau
5658 non-english versions of Windows). Thanks to Thomas Fanslau
5640 <tfanslau-AT-gmx.de> for the report.
5659 <tfanslau-AT-gmx.de> for the report.
5641
5660
5642 2002-07-10 Fernando Perez <fperez@colorado.edu>
5661 2002-07-10 Fernando Perez <fperez@colorado.edu>
5643
5662
5644 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5663 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5645 a bug in pdb, which crashes if a line with only whitespace is
5664 a bug in pdb, which crashes if a line with only whitespace is
5646 entered. Bug report submitted to sourceforge.
5665 entered. Bug report submitted to sourceforge.
5647
5666
5648 2002-07-09 Fernando Perez <fperez@colorado.edu>
5667 2002-07-09 Fernando Perez <fperez@colorado.edu>
5649
5668
5650 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5669 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5651 reporting exceptions (it's a bug in inspect.py, I just set a
5670 reporting exceptions (it's a bug in inspect.py, I just set a
5652 workaround).
5671 workaround).
5653
5672
5654 2002-07-08 Fernando Perez <fperez@colorado.edu>
5673 2002-07-08 Fernando Perez <fperez@colorado.edu>
5655
5674
5656 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5675 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5657 __IPYTHON__ in __builtins__ to show up in user_ns.
5676 __IPYTHON__ in __builtins__ to show up in user_ns.
5658
5677
5659 2002-07-03 Fernando Perez <fperez@colorado.edu>
5678 2002-07-03 Fernando Perez <fperez@colorado.edu>
5660
5679
5661 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5680 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5662 name from @gp_set_instance to @gp_set_default.
5681 name from @gp_set_instance to @gp_set_default.
5663
5682
5664 * IPython/ipmaker.py (make_IPython): default editor value set to
5683 * IPython/ipmaker.py (make_IPython): default editor value set to
5665 '0' (a string), to match the rc file. Otherwise will crash when
5684 '0' (a string), to match the rc file. Otherwise will crash when
5666 .strip() is called on it.
5685 .strip() is called on it.
5667
5686
5668
5687
5669 2002-06-28 Fernando Perez <fperez@colorado.edu>
5688 2002-06-28 Fernando Perez <fperez@colorado.edu>
5670
5689
5671 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5690 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5672 of files in current directory when a file is executed via
5691 of files in current directory when a file is executed via
5673 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5692 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5674
5693
5675 * setup.py (manfiles): fix for rpm builds, submitted by RA
5694 * setup.py (manfiles): fix for rpm builds, submitted by RA
5676 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5695 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5677
5696
5678 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5697 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5679 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5698 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5680 string!). A. Schmolck caught this one.
5699 string!). A. Schmolck caught this one.
5681
5700
5682 2002-06-27 Fernando Perez <fperez@colorado.edu>
5701 2002-06-27 Fernando Perez <fperez@colorado.edu>
5683
5702
5684 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5703 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5685 defined files at the cmd line. __name__ wasn't being set to
5704 defined files at the cmd line. __name__ wasn't being set to
5686 __main__.
5705 __main__.
5687
5706
5688 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5707 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5689 regular lists and tuples besides Numeric arrays.
5708 regular lists and tuples besides Numeric arrays.
5690
5709
5691 * IPython/Prompts.py (CachedOutput.__call__): Added output
5710 * IPython/Prompts.py (CachedOutput.__call__): Added output
5692 supression for input ending with ';'. Similar to Mathematica and
5711 supression for input ending with ';'. Similar to Mathematica and
5693 Matlab. The _* vars and Out[] list are still updated, just like
5712 Matlab. The _* vars and Out[] list are still updated, just like
5694 Mathematica behaves.
5713 Mathematica behaves.
5695
5714
5696 2002-06-25 Fernando Perez <fperez@colorado.edu>
5715 2002-06-25 Fernando Perez <fperez@colorado.edu>
5697
5716
5698 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5717 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5699 .ini extensions for profiels under Windows.
5718 .ini extensions for profiels under Windows.
5700
5719
5701 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5720 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5702 string form. Fix contributed by Alexander Schmolck
5721 string form. Fix contributed by Alexander Schmolck
5703 <a.schmolck-AT-gmx.net>
5722 <a.schmolck-AT-gmx.net>
5704
5723
5705 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5724 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5706 pre-configured Gnuplot instance.
5725 pre-configured Gnuplot instance.
5707
5726
5708 2002-06-21 Fernando Perez <fperez@colorado.edu>
5727 2002-06-21 Fernando Perez <fperez@colorado.edu>
5709
5728
5710 * IPython/numutils.py (exp_safe): new function, works around the
5729 * IPython/numutils.py (exp_safe): new function, works around the
5711 underflow problems in Numeric.
5730 underflow problems in Numeric.
5712 (log2): New fn. Safe log in base 2: returns exact integer answer
5731 (log2): New fn. Safe log in base 2: returns exact integer answer
5713 for exact integer powers of 2.
5732 for exact integer powers of 2.
5714
5733
5715 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5734 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5716 properly.
5735 properly.
5717
5736
5718 2002-06-20 Fernando Perez <fperez@colorado.edu>
5737 2002-06-20 Fernando Perez <fperez@colorado.edu>
5719
5738
5720 * IPython/genutils.py (timing): new function like
5739 * IPython/genutils.py (timing): new function like
5721 Mathematica's. Similar to time_test, but returns more info.
5740 Mathematica's. Similar to time_test, but returns more info.
5722
5741
5723 2002-06-18 Fernando Perez <fperez@colorado.edu>
5742 2002-06-18 Fernando Perez <fperez@colorado.edu>
5724
5743
5725 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5744 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5726 according to Mike Heeter's suggestions.
5745 according to Mike Heeter's suggestions.
5727
5746
5728 2002-06-16 Fernando Perez <fperez@colorado.edu>
5747 2002-06-16 Fernando Perez <fperez@colorado.edu>
5729
5748
5730 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5749 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5731 system. GnuplotMagic is gone as a user-directory option. New files
5750 system. GnuplotMagic is gone as a user-directory option. New files
5732 make it easier to use all the gnuplot stuff both from external
5751 make it easier to use all the gnuplot stuff both from external
5733 programs as well as from IPython. Had to rewrite part of
5752 programs as well as from IPython. Had to rewrite part of
5734 hardcopy() b/c of a strange bug: often the ps files simply don't
5753 hardcopy() b/c of a strange bug: often the ps files simply don't
5735 get created, and require a repeat of the command (often several
5754 get created, and require a repeat of the command (often several
5736 times).
5755 times).
5737
5756
5738 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5757 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5739 resolve output channel at call time, so that if sys.stderr has
5758 resolve output channel at call time, so that if sys.stderr has
5740 been redirected by user this gets honored.
5759 been redirected by user this gets honored.
5741
5760
5742 2002-06-13 Fernando Perez <fperez@colorado.edu>
5761 2002-06-13 Fernando Perez <fperez@colorado.edu>
5743
5762
5744 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5763 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5745 IPShell. Kept a copy with the old names to avoid breaking people's
5764 IPShell. Kept a copy with the old names to avoid breaking people's
5746 embedded code.
5765 embedded code.
5747
5766
5748 * IPython/ipython: simplified it to the bare minimum after
5767 * IPython/ipython: simplified it to the bare minimum after
5749 Holger's suggestions. Added info about how to use it in
5768 Holger's suggestions. Added info about how to use it in
5750 PYTHONSTARTUP.
5769 PYTHONSTARTUP.
5751
5770
5752 * IPython/Shell.py (IPythonShell): changed the options passing
5771 * IPython/Shell.py (IPythonShell): changed the options passing
5753 from a string with funky %s replacements to a straight list. Maybe
5772 from a string with funky %s replacements to a straight list. Maybe
5754 a bit more typing, but it follows sys.argv conventions, so there's
5773 a bit more typing, but it follows sys.argv conventions, so there's
5755 less special-casing to remember.
5774 less special-casing to remember.
5756
5775
5757 2002-06-12 Fernando Perez <fperez@colorado.edu>
5776 2002-06-12 Fernando Perez <fperez@colorado.edu>
5758
5777
5759 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5778 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5760 command. Thanks to a suggestion by Mike Heeter.
5779 command. Thanks to a suggestion by Mike Heeter.
5761 (Magic.magic_pfile): added behavior to look at filenames if given
5780 (Magic.magic_pfile): added behavior to look at filenames if given
5762 arg is not a defined object.
5781 arg is not a defined object.
5763 (Magic.magic_save): New @save function to save code snippets. Also
5782 (Magic.magic_save): New @save function to save code snippets. Also
5764 a Mike Heeter idea.
5783 a Mike Heeter idea.
5765
5784
5766 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5785 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5767 plot() and replot(). Much more convenient now, especially for
5786 plot() and replot(). Much more convenient now, especially for
5768 interactive use.
5787 interactive use.
5769
5788
5770 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5789 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5771 filenames.
5790 filenames.
5772
5791
5773 2002-06-02 Fernando Perez <fperez@colorado.edu>
5792 2002-06-02 Fernando Perez <fperez@colorado.edu>
5774
5793
5775 * IPython/Struct.py (Struct.__init__): modified to admit
5794 * IPython/Struct.py (Struct.__init__): modified to admit
5776 initialization via another struct.
5795 initialization via another struct.
5777
5796
5778 * IPython/genutils.py (SystemExec.__init__): New stateful
5797 * IPython/genutils.py (SystemExec.__init__): New stateful
5779 interface to xsys and bq. Useful for writing system scripts.
5798 interface to xsys and bq. Useful for writing system scripts.
5780
5799
5781 2002-05-30 Fernando Perez <fperez@colorado.edu>
5800 2002-05-30 Fernando Perez <fperez@colorado.edu>
5782
5801
5783 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5802 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5784 documents. This will make the user download smaller (it's getting
5803 documents. This will make the user download smaller (it's getting
5785 too big).
5804 too big).
5786
5805
5787 2002-05-29 Fernando Perez <fperez@colorado.edu>
5806 2002-05-29 Fernando Perez <fperez@colorado.edu>
5788
5807
5789 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5808 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5790 fix problems with shelve and pickle. Seems to work, but I don't
5809 fix problems with shelve and pickle. Seems to work, but I don't
5791 know if corner cases break it. Thanks to Mike Heeter
5810 know if corner cases break it. Thanks to Mike Heeter
5792 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5811 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5793
5812
5794 2002-05-24 Fernando Perez <fperez@colorado.edu>
5813 2002-05-24 Fernando Perez <fperez@colorado.edu>
5795
5814
5796 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5815 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5797 macros having broken.
5816 macros having broken.
5798
5817
5799 2002-05-21 Fernando Perez <fperez@colorado.edu>
5818 2002-05-21 Fernando Perez <fperez@colorado.edu>
5800
5819
5801 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5820 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5802 introduced logging bug: all history before logging started was
5821 introduced logging bug: all history before logging started was
5803 being written one character per line! This came from the redesign
5822 being written one character per line! This came from the redesign
5804 of the input history as a special list which slices to strings,
5823 of the input history as a special list which slices to strings,
5805 not to lists.
5824 not to lists.
5806
5825
5807 2002-05-20 Fernando Perez <fperez@colorado.edu>
5826 2002-05-20 Fernando Perez <fperez@colorado.edu>
5808
5827
5809 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5828 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5810 be an attribute of all classes in this module. The design of these
5829 be an attribute of all classes in this module. The design of these
5811 classes needs some serious overhauling.
5830 classes needs some serious overhauling.
5812
5831
5813 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5832 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5814 which was ignoring '_' in option names.
5833 which was ignoring '_' in option names.
5815
5834
5816 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5835 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5817 'Verbose_novars' to 'Context' and made it the new default. It's a
5836 'Verbose_novars' to 'Context' and made it the new default. It's a
5818 bit more readable and also safer than verbose.
5837 bit more readable and also safer than verbose.
5819
5838
5820 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5839 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5821 triple-quoted strings.
5840 triple-quoted strings.
5822
5841
5823 * IPython/OInspect.py (__all__): new module exposing the object
5842 * IPython/OInspect.py (__all__): new module exposing the object
5824 introspection facilities. Now the corresponding magics are dummy
5843 introspection facilities. Now the corresponding magics are dummy
5825 wrappers around this. Having this module will make it much easier
5844 wrappers around this. Having this module will make it much easier
5826 to put these functions into our modified pdb.
5845 to put these functions into our modified pdb.
5827 This new object inspector system uses the new colorizing module,
5846 This new object inspector system uses the new colorizing module,
5828 so source code and other things are nicely syntax highlighted.
5847 so source code and other things are nicely syntax highlighted.
5829
5848
5830 2002-05-18 Fernando Perez <fperez@colorado.edu>
5849 2002-05-18 Fernando Perez <fperez@colorado.edu>
5831
5850
5832 * IPython/ColorANSI.py: Split the coloring tools into a separate
5851 * IPython/ColorANSI.py: Split the coloring tools into a separate
5833 module so I can use them in other code easier (they were part of
5852 module so I can use them in other code easier (they were part of
5834 ultraTB).
5853 ultraTB).
5835
5854
5836 2002-05-17 Fernando Perez <fperez@colorado.edu>
5855 2002-05-17 Fernando Perez <fperez@colorado.edu>
5837
5856
5838 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5857 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5839 fixed it to set the global 'g' also to the called instance, as
5858 fixed it to set the global 'g' also to the called instance, as
5840 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5859 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5841 user's 'g' variables).
5860 user's 'g' variables).
5842
5861
5843 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5862 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5844 global variables (aliases to _ih,_oh) so that users which expect
5863 global variables (aliases to _ih,_oh) so that users which expect
5845 In[5] or Out[7] to work aren't unpleasantly surprised.
5864 In[5] or Out[7] to work aren't unpleasantly surprised.
5846 (InputList.__getslice__): new class to allow executing slices of
5865 (InputList.__getslice__): new class to allow executing slices of
5847 input history directly. Very simple class, complements the use of
5866 input history directly. Very simple class, complements the use of
5848 macros.
5867 macros.
5849
5868
5850 2002-05-16 Fernando Perez <fperez@colorado.edu>
5869 2002-05-16 Fernando Perez <fperez@colorado.edu>
5851
5870
5852 * setup.py (docdirbase): make doc directory be just doc/IPython
5871 * setup.py (docdirbase): make doc directory be just doc/IPython
5853 without version numbers, it will reduce clutter for users.
5872 without version numbers, it will reduce clutter for users.
5854
5873
5855 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5874 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5856 execfile call to prevent possible memory leak. See for details:
5875 execfile call to prevent possible memory leak. See for details:
5857 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5876 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5858
5877
5859 2002-05-15 Fernando Perez <fperez@colorado.edu>
5878 2002-05-15 Fernando Perez <fperez@colorado.edu>
5860
5879
5861 * IPython/Magic.py (Magic.magic_psource): made the object
5880 * IPython/Magic.py (Magic.magic_psource): made the object
5862 introspection names be more standard: pdoc, pdef, pfile and
5881 introspection names be more standard: pdoc, pdef, pfile and
5863 psource. They all print/page their output, and it makes
5882 psource. They all print/page their output, and it makes
5864 remembering them easier. Kept old names for compatibility as
5883 remembering them easier. Kept old names for compatibility as
5865 aliases.
5884 aliases.
5866
5885
5867 2002-05-14 Fernando Perez <fperez@colorado.edu>
5886 2002-05-14 Fernando Perez <fperez@colorado.edu>
5868
5887
5869 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5888 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5870 what the mouse problem was. The trick is to use gnuplot with temp
5889 what the mouse problem was. The trick is to use gnuplot with temp
5871 files and NOT with pipes (for data communication), because having
5890 files and NOT with pipes (for data communication), because having
5872 both pipes and the mouse on is bad news.
5891 both pipes and the mouse on is bad news.
5873
5892
5874 2002-05-13 Fernando Perez <fperez@colorado.edu>
5893 2002-05-13 Fernando Perez <fperez@colorado.edu>
5875
5894
5876 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5895 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5877 bug. Information would be reported about builtins even when
5896 bug. Information would be reported about builtins even when
5878 user-defined functions overrode them.
5897 user-defined functions overrode them.
5879
5898
5880 2002-05-11 Fernando Perez <fperez@colorado.edu>
5899 2002-05-11 Fernando Perez <fperez@colorado.edu>
5881
5900
5882 * IPython/__init__.py (__all__): removed FlexCompleter from
5901 * IPython/__init__.py (__all__): removed FlexCompleter from
5883 __all__ so that things don't fail in platforms without readline.
5902 __all__ so that things don't fail in platforms without readline.
5884
5903
5885 2002-05-10 Fernando Perez <fperez@colorado.edu>
5904 2002-05-10 Fernando Perez <fperez@colorado.edu>
5886
5905
5887 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5906 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5888 it requires Numeric, effectively making Numeric a dependency for
5907 it requires Numeric, effectively making Numeric a dependency for
5889 IPython.
5908 IPython.
5890
5909
5891 * Released 0.2.13
5910 * Released 0.2.13
5892
5911
5893 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5912 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5894 profiler interface. Now all the major options from the profiler
5913 profiler interface. Now all the major options from the profiler
5895 module are directly supported in IPython, both for single
5914 module are directly supported in IPython, both for single
5896 expressions (@prun) and for full programs (@run -p).
5915 expressions (@prun) and for full programs (@run -p).
5897
5916
5898 2002-05-09 Fernando Perez <fperez@colorado.edu>
5917 2002-05-09 Fernando Perez <fperez@colorado.edu>
5899
5918
5900 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5919 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5901 magic properly formatted for screen.
5920 magic properly formatted for screen.
5902
5921
5903 * setup.py (make_shortcut): Changed things to put pdf version in
5922 * setup.py (make_shortcut): Changed things to put pdf version in
5904 doc/ instead of doc/manual (had to change lyxport a bit).
5923 doc/ instead of doc/manual (had to change lyxport a bit).
5905
5924
5906 * IPython/Magic.py (Profile.string_stats): made profile runs go
5925 * IPython/Magic.py (Profile.string_stats): made profile runs go
5907 through pager (they are long and a pager allows searching, saving,
5926 through pager (they are long and a pager allows searching, saving,
5908 etc.)
5927 etc.)
5909
5928
5910 2002-05-08 Fernando Perez <fperez@colorado.edu>
5929 2002-05-08 Fernando Perez <fperez@colorado.edu>
5911
5930
5912 * Released 0.2.12
5931 * Released 0.2.12
5913
5932
5914 2002-05-06 Fernando Perez <fperez@colorado.edu>
5933 2002-05-06 Fernando Perez <fperez@colorado.edu>
5915
5934
5916 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5935 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5917 introduced); 'hist n1 n2' was broken.
5936 introduced); 'hist n1 n2' was broken.
5918 (Magic.magic_pdb): added optional on/off arguments to @pdb
5937 (Magic.magic_pdb): added optional on/off arguments to @pdb
5919 (Magic.magic_run): added option -i to @run, which executes code in
5938 (Magic.magic_run): added option -i to @run, which executes code in
5920 the IPython namespace instead of a clean one. Also added @irun as
5939 the IPython namespace instead of a clean one. Also added @irun as
5921 an alias to @run -i.
5940 an alias to @run -i.
5922
5941
5923 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5942 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5924 fixed (it didn't really do anything, the namespaces were wrong).
5943 fixed (it didn't really do anything, the namespaces were wrong).
5925
5944
5926 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5945 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5927
5946
5928 * IPython/__init__.py (__all__): Fixed package namespace, now
5947 * IPython/__init__.py (__all__): Fixed package namespace, now
5929 'import IPython' does give access to IPython.<all> as
5948 'import IPython' does give access to IPython.<all> as
5930 expected. Also renamed __release__ to Release.
5949 expected. Also renamed __release__ to Release.
5931
5950
5932 * IPython/Debugger.py (__license__): created new Pdb class which
5951 * IPython/Debugger.py (__license__): created new Pdb class which
5933 functions like a drop-in for the normal pdb.Pdb but does NOT
5952 functions like a drop-in for the normal pdb.Pdb but does NOT
5934 import readline by default. This way it doesn't muck up IPython's
5953 import readline by default. This way it doesn't muck up IPython's
5935 readline handling, and now tab-completion finally works in the
5954 readline handling, and now tab-completion finally works in the
5936 debugger -- sort of. It completes things globally visible, but the
5955 debugger -- sort of. It completes things globally visible, but the
5937 completer doesn't track the stack as pdb walks it. That's a bit
5956 completer doesn't track the stack as pdb walks it. That's a bit
5938 tricky, and I'll have to implement it later.
5957 tricky, and I'll have to implement it later.
5939
5958
5940 2002-05-05 Fernando Perez <fperez@colorado.edu>
5959 2002-05-05 Fernando Perez <fperez@colorado.edu>
5941
5960
5942 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5961 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5943 magic docstrings when printed via ? (explicit \'s were being
5962 magic docstrings when printed via ? (explicit \'s were being
5944 printed).
5963 printed).
5945
5964
5946 * IPython/ipmaker.py (make_IPython): fixed namespace
5965 * IPython/ipmaker.py (make_IPython): fixed namespace
5947 identification bug. Now variables loaded via logs or command-line
5966 identification bug. Now variables loaded via logs or command-line
5948 files are recognized in the interactive namespace by @who.
5967 files are recognized in the interactive namespace by @who.
5949
5968
5950 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5969 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5951 log replay system stemming from the string form of Structs.
5970 log replay system stemming from the string form of Structs.
5952
5971
5953 * IPython/Magic.py (Macro.__init__): improved macros to properly
5972 * IPython/Magic.py (Macro.__init__): improved macros to properly
5954 handle magic commands in them.
5973 handle magic commands in them.
5955 (Magic.magic_logstart): usernames are now expanded so 'logstart
5974 (Magic.magic_logstart): usernames are now expanded so 'logstart
5956 ~/mylog' now works.
5975 ~/mylog' now works.
5957
5976
5958 * IPython/iplib.py (complete): fixed bug where paths starting with
5977 * IPython/iplib.py (complete): fixed bug where paths starting with
5959 '/' would be completed as magic names.
5978 '/' would be completed as magic names.
5960
5979
5961 2002-05-04 Fernando Perez <fperez@colorado.edu>
5980 2002-05-04 Fernando Perez <fperez@colorado.edu>
5962
5981
5963 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5982 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5964 allow running full programs under the profiler's control.
5983 allow running full programs under the profiler's control.
5965
5984
5966 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5985 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5967 mode to report exceptions verbosely but without formatting
5986 mode to report exceptions verbosely but without formatting
5968 variables. This addresses the issue of ipython 'freezing' (it's
5987 variables. This addresses the issue of ipython 'freezing' (it's
5969 not frozen, but caught in an expensive formatting loop) when huge
5988 not frozen, but caught in an expensive formatting loop) when huge
5970 variables are in the context of an exception.
5989 variables are in the context of an exception.
5971 (VerboseTB.text): Added '--->' markers at line where exception was
5990 (VerboseTB.text): Added '--->' markers at line where exception was
5972 triggered. Much clearer to read, especially in NoColor modes.
5991 triggered. Much clearer to read, especially in NoColor modes.
5973
5992
5974 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5993 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5975 implemented in reverse when changing to the new parse_options().
5994 implemented in reverse when changing to the new parse_options().
5976
5995
5977 2002-05-03 Fernando Perez <fperez@colorado.edu>
5996 2002-05-03 Fernando Perez <fperez@colorado.edu>
5978
5997
5979 * IPython/Magic.py (Magic.parse_options): new function so that
5998 * IPython/Magic.py (Magic.parse_options): new function so that
5980 magics can parse options easier.
5999 magics can parse options easier.
5981 (Magic.magic_prun): new function similar to profile.run(),
6000 (Magic.magic_prun): new function similar to profile.run(),
5982 suggested by Chris Hart.
6001 suggested by Chris Hart.
5983 (Magic.magic_cd): fixed behavior so that it only changes if
6002 (Magic.magic_cd): fixed behavior so that it only changes if
5984 directory actually is in history.
6003 directory actually is in history.
5985
6004
5986 * IPython/usage.py (__doc__): added information about potential
6005 * IPython/usage.py (__doc__): added information about potential
5987 slowness of Verbose exception mode when there are huge data
6006 slowness of Verbose exception mode when there are huge data
5988 structures to be formatted (thanks to Archie Paulson).
6007 structures to be formatted (thanks to Archie Paulson).
5989
6008
5990 * IPython/ipmaker.py (make_IPython): Changed default logging
6009 * IPython/ipmaker.py (make_IPython): Changed default logging
5991 (when simply called with -log) to use curr_dir/ipython.log in
6010 (when simply called with -log) to use curr_dir/ipython.log in
5992 rotate mode. Fixed crash which was occuring with -log before
6011 rotate mode. Fixed crash which was occuring with -log before
5993 (thanks to Jim Boyle).
6012 (thanks to Jim Boyle).
5994
6013
5995 2002-05-01 Fernando Perez <fperez@colorado.edu>
6014 2002-05-01 Fernando Perez <fperez@colorado.edu>
5996
6015
5997 * Released 0.2.11 for these fixes (mainly the ultraTB one which
6016 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5998 was nasty -- though somewhat of a corner case).
6017 was nasty -- though somewhat of a corner case).
5999
6018
6000 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
6019 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
6001 text (was a bug).
6020 text (was a bug).
6002
6021
6003 2002-04-30 Fernando Perez <fperez@colorado.edu>
6022 2002-04-30 Fernando Perez <fperez@colorado.edu>
6004
6023
6005 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
6024 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
6006 a print after ^D or ^C from the user so that the In[] prompt
6025 a print after ^D or ^C from the user so that the In[] prompt
6007 doesn't over-run the gnuplot one.
6026 doesn't over-run the gnuplot one.
6008
6027
6009 2002-04-29 Fernando Perez <fperez@colorado.edu>
6028 2002-04-29 Fernando Perez <fperez@colorado.edu>
6010
6029
6011 * Released 0.2.10
6030 * Released 0.2.10
6012
6031
6013 * IPython/__release__.py (version): get date dynamically.
6032 * IPython/__release__.py (version): get date dynamically.
6014
6033
6015 * Misc. documentation updates thanks to Arnd's comments. Also ran
6034 * Misc. documentation updates thanks to Arnd's comments. Also ran
6016 a full spellcheck on the manual (hadn't been done in a while).
6035 a full spellcheck on the manual (hadn't been done in a while).
6017
6036
6018 2002-04-27 Fernando Perez <fperez@colorado.edu>
6037 2002-04-27 Fernando Perez <fperez@colorado.edu>
6019
6038
6020 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
6039 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
6021 starting a log in mid-session would reset the input history list.
6040 starting a log in mid-session would reset the input history list.
6022
6041
6023 2002-04-26 Fernando Perez <fperez@colorado.edu>
6042 2002-04-26 Fernando Perez <fperez@colorado.edu>
6024
6043
6025 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
6044 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
6026 all files were being included in an update. Now anything in
6045 all files were being included in an update. Now anything in
6027 UserConfig that matches [A-Za-z]*.py will go (this excludes
6046 UserConfig that matches [A-Za-z]*.py will go (this excludes
6028 __init__.py)
6047 __init__.py)
6029
6048
6030 2002-04-25 Fernando Perez <fperez@colorado.edu>
6049 2002-04-25 Fernando Perez <fperez@colorado.edu>
6031
6050
6032 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
6051 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
6033 to __builtins__ so that any form of embedded or imported code can
6052 to __builtins__ so that any form of embedded or imported code can
6034 test for being inside IPython.
6053 test for being inside IPython.
6035
6054
6036 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
6055 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
6037 changed to GnuplotMagic because it's now an importable module,
6056 changed to GnuplotMagic because it's now an importable module,
6038 this makes the name follow that of the standard Gnuplot module.
6057 this makes the name follow that of the standard Gnuplot module.
6039 GnuplotMagic can now be loaded at any time in mid-session.
6058 GnuplotMagic can now be loaded at any time in mid-session.
6040
6059
6041 2002-04-24 Fernando Perez <fperez@colorado.edu>
6060 2002-04-24 Fernando Perez <fperez@colorado.edu>
6042
6061
6043 * IPython/numutils.py: removed SIUnits. It doesn't properly set
6062 * IPython/numutils.py: removed SIUnits. It doesn't properly set
6044 the globals (IPython has its own namespace) and the
6063 the globals (IPython has its own namespace) and the
6045 PhysicalQuantity stuff is much better anyway.
6064 PhysicalQuantity stuff is much better anyway.
6046
6065
6047 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
6066 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
6048 embedding example to standard user directory for
6067 embedding example to standard user directory for
6049 distribution. Also put it in the manual.
6068 distribution. Also put it in the manual.
6050
6069
6051 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
6070 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
6052 instance as first argument (so it doesn't rely on some obscure
6071 instance as first argument (so it doesn't rely on some obscure
6053 hidden global).
6072 hidden global).
6054
6073
6055 * IPython/UserConfig/ipythonrc.py: put () back in accepted
6074 * IPython/UserConfig/ipythonrc.py: put () back in accepted
6056 delimiters. While it prevents ().TAB from working, it allows
6075 delimiters. While it prevents ().TAB from working, it allows
6057 completions in open (... expressions. This is by far a more common
6076 completions in open (... expressions. This is by far a more common
6058 case.
6077 case.
6059
6078
6060 2002-04-23 Fernando Perez <fperez@colorado.edu>
6079 2002-04-23 Fernando Perez <fperez@colorado.edu>
6061
6080
6062 * IPython/Extensions/InterpreterPasteInput.py: new
6081 * IPython/Extensions/InterpreterPasteInput.py: new
6063 syntax-processing module for pasting lines with >>> or ... at the
6082 syntax-processing module for pasting lines with >>> or ... at the
6064 start.
6083 start.
6065
6084
6066 * IPython/Extensions/PhysicalQ_Interactive.py
6085 * IPython/Extensions/PhysicalQ_Interactive.py
6067 (PhysicalQuantityInteractive.__int__): fixed to work with either
6086 (PhysicalQuantityInteractive.__int__): fixed to work with either
6068 Numeric or math.
6087 Numeric or math.
6069
6088
6070 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
6089 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
6071 provided profiles. Now we have:
6090 provided profiles. Now we have:
6072 -math -> math module as * and cmath with its own namespace.
6091 -math -> math module as * and cmath with its own namespace.
6073 -numeric -> Numeric as *, plus gnuplot & grace
6092 -numeric -> Numeric as *, plus gnuplot & grace
6074 -physics -> same as before
6093 -physics -> same as before
6075
6094
6076 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
6095 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
6077 user-defined magics wouldn't be found by @magic if they were
6096 user-defined magics wouldn't be found by @magic if they were
6078 defined as class methods. Also cleaned up the namespace search
6097 defined as class methods. Also cleaned up the namespace search
6079 logic and the string building (to use %s instead of many repeated
6098 logic and the string building (to use %s instead of many repeated
6080 string adds).
6099 string adds).
6081
6100
6082 * IPython/UserConfig/example-magic.py (magic_foo): updated example
6101 * IPython/UserConfig/example-magic.py (magic_foo): updated example
6083 of user-defined magics to operate with class methods (cleaner, in
6102 of user-defined magics to operate with class methods (cleaner, in
6084 line with the gnuplot code).
6103 line with the gnuplot code).
6085
6104
6086 2002-04-22 Fernando Perez <fperez@colorado.edu>
6105 2002-04-22 Fernando Perez <fperez@colorado.edu>
6087
6106
6088 * setup.py: updated dependency list so that manual is updated when
6107 * setup.py: updated dependency list so that manual is updated when
6089 all included files change.
6108 all included files change.
6090
6109
6091 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
6110 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
6092 the delimiter removal option (the fix is ugly right now).
6111 the delimiter removal option (the fix is ugly right now).
6093
6112
6094 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
6113 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
6095 all of the math profile (quicker loading, no conflict between
6114 all of the math profile (quicker loading, no conflict between
6096 g-9.8 and g-gnuplot).
6115 g-9.8 and g-gnuplot).
6097
6116
6098 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
6117 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
6099 name of post-mortem files to IPython_crash_report.txt.
6118 name of post-mortem files to IPython_crash_report.txt.
6100
6119
6101 * Cleanup/update of the docs. Added all the new readline info and
6120 * Cleanup/update of the docs. Added all the new readline info and
6102 formatted all lists as 'real lists'.
6121 formatted all lists as 'real lists'.
6103
6122
6104 * IPython/ipmaker.py (make_IPython): removed now-obsolete
6123 * IPython/ipmaker.py (make_IPython): removed now-obsolete
6105 tab-completion options, since the full readline parse_and_bind is
6124 tab-completion options, since the full readline parse_and_bind is
6106 now accessible.
6125 now accessible.
6107
6126
6108 * IPython/iplib.py (InteractiveShell.init_readline): Changed
6127 * IPython/iplib.py (InteractiveShell.init_readline): Changed
6109 handling of readline options. Now users can specify any string to
6128 handling of readline options. Now users can specify any string to
6110 be passed to parse_and_bind(), as well as the delimiters to be
6129 be passed to parse_and_bind(), as well as the delimiters to be
6111 removed.
6130 removed.
6112 (InteractiveShell.__init__): Added __name__ to the global
6131 (InteractiveShell.__init__): Added __name__ to the global
6113 namespace so that things like Itpl which rely on its existence
6132 namespace so that things like Itpl which rely on its existence
6114 don't crash.
6133 don't crash.
6115 (InteractiveShell._prefilter): Defined the default with a _ so
6134 (InteractiveShell._prefilter): Defined the default with a _ so
6116 that prefilter() is easier to override, while the default one
6135 that prefilter() is easier to override, while the default one
6117 remains available.
6136 remains available.
6118
6137
6119 2002-04-18 Fernando Perez <fperez@colorado.edu>
6138 2002-04-18 Fernando Perez <fperez@colorado.edu>
6120
6139
6121 * Added information about pdb in the docs.
6140 * Added information about pdb in the docs.
6122
6141
6123 2002-04-17 Fernando Perez <fperez@colorado.edu>
6142 2002-04-17 Fernando Perez <fperez@colorado.edu>
6124
6143
6125 * IPython/ipmaker.py (make_IPython): added rc_override option to
6144 * IPython/ipmaker.py (make_IPython): added rc_override option to
6126 allow passing config options at creation time which may override
6145 allow passing config options at creation time which may override
6127 anything set in the config files or command line. This is
6146 anything set in the config files or command line. This is
6128 particularly useful for configuring embedded instances.
6147 particularly useful for configuring embedded instances.
6129
6148
6130 2002-04-15 Fernando Perez <fperez@colorado.edu>
6149 2002-04-15 Fernando Perez <fperez@colorado.edu>
6131
6150
6132 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6151 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6133 crash embedded instances because of the input cache falling out of
6152 crash embedded instances because of the input cache falling out of
6134 sync with the output counter.
6153 sync with the output counter.
6135
6154
6136 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6155 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6137 mode which calls pdb after an uncaught exception in IPython itself.
6156 mode which calls pdb after an uncaught exception in IPython itself.
6138
6157
6139 2002-04-14 Fernando Perez <fperez@colorado.edu>
6158 2002-04-14 Fernando Perez <fperez@colorado.edu>
6140
6159
6141 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6160 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6142 readline, fix it back after each call.
6161 readline, fix it back after each call.
6143
6162
6144 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6163 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6145 method to force all access via __call__(), which guarantees that
6164 method to force all access via __call__(), which guarantees that
6146 traceback references are properly deleted.
6165 traceback references are properly deleted.
6147
6166
6148 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6167 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6149 improve printing when pprint is in use.
6168 improve printing when pprint is in use.
6150
6169
6151 2002-04-13 Fernando Perez <fperez@colorado.edu>
6170 2002-04-13 Fernando Perez <fperez@colorado.edu>
6152
6171
6153 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6172 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6154 exceptions aren't caught anymore. If the user triggers one, he
6173 exceptions aren't caught anymore. If the user triggers one, he
6155 should know why he's doing it and it should go all the way up,
6174 should know why he's doing it and it should go all the way up,
6156 just like any other exception. So now @abort will fully kill the
6175 just like any other exception. So now @abort will fully kill the
6157 embedded interpreter and the embedding code (unless that happens
6176 embedded interpreter and the embedding code (unless that happens
6158 to catch SystemExit).
6177 to catch SystemExit).
6159
6178
6160 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6179 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6161 and a debugger() method to invoke the interactive pdb debugger
6180 and a debugger() method to invoke the interactive pdb debugger
6162 after printing exception information. Also added the corresponding
6181 after printing exception information. Also added the corresponding
6163 -pdb option and @pdb magic to control this feature, and updated
6182 -pdb option and @pdb magic to control this feature, and updated
6164 the docs. After a suggestion from Christopher Hart
6183 the docs. After a suggestion from Christopher Hart
6165 (hart-AT-caltech.edu).
6184 (hart-AT-caltech.edu).
6166
6185
6167 2002-04-12 Fernando Perez <fperez@colorado.edu>
6186 2002-04-12 Fernando Perez <fperez@colorado.edu>
6168
6187
6169 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6188 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6170 the exception handlers defined by the user (not the CrashHandler)
6189 the exception handlers defined by the user (not the CrashHandler)
6171 so that user exceptions don't trigger an ipython bug report.
6190 so that user exceptions don't trigger an ipython bug report.
6172
6191
6173 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6192 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6174 configurable (it should have always been so).
6193 configurable (it should have always been so).
6175
6194
6176 2002-03-26 Fernando Perez <fperez@colorado.edu>
6195 2002-03-26 Fernando Perez <fperez@colorado.edu>
6177
6196
6178 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6197 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6179 and there to fix embedding namespace issues. This should all be
6198 and there to fix embedding namespace issues. This should all be
6180 done in a more elegant way.
6199 done in a more elegant way.
6181
6200
6182 2002-03-25 Fernando Perez <fperez@colorado.edu>
6201 2002-03-25 Fernando Perez <fperez@colorado.edu>
6183
6202
6184 * IPython/genutils.py (get_home_dir): Try to make it work under
6203 * IPython/genutils.py (get_home_dir): Try to make it work under
6185 win9x also.
6204 win9x also.
6186
6205
6187 2002-03-20 Fernando Perez <fperez@colorado.edu>
6206 2002-03-20 Fernando Perez <fperez@colorado.edu>
6188
6207
6189 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6208 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6190 sys.displayhook untouched upon __init__.
6209 sys.displayhook untouched upon __init__.
6191
6210
6192 2002-03-19 Fernando Perez <fperez@colorado.edu>
6211 2002-03-19 Fernando Perez <fperez@colorado.edu>
6193
6212
6194 * Released 0.2.9 (for embedding bug, basically).
6213 * Released 0.2.9 (for embedding bug, basically).
6195
6214
6196 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6215 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6197 exceptions so that enclosing shell's state can be restored.
6216 exceptions so that enclosing shell's state can be restored.
6198
6217
6199 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6218 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6200 naming conventions in the .ipython/ dir.
6219 naming conventions in the .ipython/ dir.
6201
6220
6202 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6221 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6203 from delimiters list so filenames with - in them get expanded.
6222 from delimiters list so filenames with - in them get expanded.
6204
6223
6205 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6224 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6206 sys.displayhook not being properly restored after an embedded call.
6225 sys.displayhook not being properly restored after an embedded call.
6207
6226
6208 2002-03-18 Fernando Perez <fperez@colorado.edu>
6227 2002-03-18 Fernando Perez <fperez@colorado.edu>
6209
6228
6210 * Released 0.2.8
6229 * Released 0.2.8
6211
6230
6212 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6231 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6213 some files weren't being included in a -upgrade.
6232 some files weren't being included in a -upgrade.
6214 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6233 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6215 on' so that the first tab completes.
6234 on' so that the first tab completes.
6216 (InteractiveShell.handle_magic): fixed bug with spaces around
6235 (InteractiveShell.handle_magic): fixed bug with spaces around
6217 quotes breaking many magic commands.
6236 quotes breaking many magic commands.
6218
6237
6219 * setup.py: added note about ignoring the syntax error messages at
6238 * setup.py: added note about ignoring the syntax error messages at
6220 installation.
6239 installation.
6221
6240
6222 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6241 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6223 streamlining the gnuplot interface, now there's only one magic @gp.
6242 streamlining the gnuplot interface, now there's only one magic @gp.
6224
6243
6225 2002-03-17 Fernando Perez <fperez@colorado.edu>
6244 2002-03-17 Fernando Perez <fperez@colorado.edu>
6226
6245
6227 * IPython/UserConfig/magic_gnuplot.py: new name for the
6246 * IPython/UserConfig/magic_gnuplot.py: new name for the
6228 example-magic_pm.py file. Much enhanced system, now with a shell
6247 example-magic_pm.py file. Much enhanced system, now with a shell
6229 for communicating directly with gnuplot, one command at a time.
6248 for communicating directly with gnuplot, one command at a time.
6230
6249
6231 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6250 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6232 setting __name__=='__main__'.
6251 setting __name__=='__main__'.
6233
6252
6234 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6253 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6235 mini-shell for accessing gnuplot from inside ipython. Should
6254 mini-shell for accessing gnuplot from inside ipython. Should
6236 extend it later for grace access too. Inspired by Arnd's
6255 extend it later for grace access too. Inspired by Arnd's
6237 suggestion.
6256 suggestion.
6238
6257
6239 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6258 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6240 calling magic functions with () in their arguments. Thanks to Arnd
6259 calling magic functions with () in their arguments. Thanks to Arnd
6241 Baecker for pointing this to me.
6260 Baecker for pointing this to me.
6242
6261
6243 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6262 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6244 infinitely for integer or complex arrays (only worked with floats).
6263 infinitely for integer or complex arrays (only worked with floats).
6245
6264
6246 2002-03-16 Fernando Perez <fperez@colorado.edu>
6265 2002-03-16 Fernando Perez <fperez@colorado.edu>
6247
6266
6248 * setup.py: Merged setup and setup_windows into a single script
6267 * setup.py: Merged setup and setup_windows into a single script
6249 which properly handles things for windows users.
6268 which properly handles things for windows users.
6250
6269
6251 2002-03-15 Fernando Perez <fperez@colorado.edu>
6270 2002-03-15 Fernando Perez <fperez@colorado.edu>
6252
6271
6253 * Big change to the manual: now the magics are all automatically
6272 * Big change to the manual: now the magics are all automatically
6254 documented. This information is generated from their docstrings
6273 documented. This information is generated from their docstrings
6255 and put in a latex file included by the manual lyx file. This way
6274 and put in a latex file included by the manual lyx file. This way
6256 we get always up to date information for the magics. The manual
6275 we get always up to date information for the magics. The manual
6257 now also has proper version information, also auto-synced.
6276 now also has proper version information, also auto-synced.
6258
6277
6259 For this to work, an undocumented --magic_docstrings option was added.
6278 For this to work, an undocumented --magic_docstrings option was added.
6260
6279
6261 2002-03-13 Fernando Perez <fperez@colorado.edu>
6280 2002-03-13 Fernando Perez <fperez@colorado.edu>
6262
6281
6263 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6282 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6264 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6283 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6265
6284
6266 2002-03-12 Fernando Perez <fperez@colorado.edu>
6285 2002-03-12 Fernando Perez <fperez@colorado.edu>
6267
6286
6268 * IPython/ultraTB.py (TermColors): changed color escapes again to
6287 * IPython/ultraTB.py (TermColors): changed color escapes again to
6269 fix the (old, reintroduced) line-wrapping bug. Basically, if
6288 fix the (old, reintroduced) line-wrapping bug. Basically, if
6270 \001..\002 aren't given in the color escapes, lines get wrapped
6289 \001..\002 aren't given in the color escapes, lines get wrapped
6271 weirdly. But giving those screws up old xterms and emacs terms. So
6290 weirdly. But giving those screws up old xterms and emacs terms. So
6272 I added some logic for emacs terms to be ok, but I can't identify old
6291 I added some logic for emacs terms to be ok, but I can't identify old
6273 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6292 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6274
6293
6275 2002-03-10 Fernando Perez <fperez@colorado.edu>
6294 2002-03-10 Fernando Perez <fperez@colorado.edu>
6276
6295
6277 * IPython/usage.py (__doc__): Various documentation cleanups and
6296 * IPython/usage.py (__doc__): Various documentation cleanups and
6278 updates, both in usage docstrings and in the manual.
6297 updates, both in usage docstrings and in the manual.
6279
6298
6280 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6299 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6281 handling of caching. Set minimum acceptabe value for having a
6300 handling of caching. Set minimum acceptabe value for having a
6282 cache at 20 values.
6301 cache at 20 values.
6283
6302
6284 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6303 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6285 install_first_time function to a method, renamed it and added an
6304 install_first_time function to a method, renamed it and added an
6286 'upgrade' mode. Now people can update their config directory with
6305 'upgrade' mode. Now people can update their config directory with
6287 a simple command line switch (-upgrade, also new).
6306 a simple command line switch (-upgrade, also new).
6288
6307
6289 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6308 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6290 @file (convenient for automagic users under Python >= 2.2).
6309 @file (convenient for automagic users under Python >= 2.2).
6291 Removed @files (it seemed more like a plural than an abbrev. of
6310 Removed @files (it seemed more like a plural than an abbrev. of
6292 'file show').
6311 'file show').
6293
6312
6294 * IPython/iplib.py (install_first_time): Fixed crash if there were
6313 * IPython/iplib.py (install_first_time): Fixed crash if there were
6295 backup files ('~') in .ipython/ install directory.
6314 backup files ('~') in .ipython/ install directory.
6296
6315
6297 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6316 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6298 system. Things look fine, but these changes are fairly
6317 system. Things look fine, but these changes are fairly
6299 intrusive. Test them for a few days.
6318 intrusive. Test them for a few days.
6300
6319
6301 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6320 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6302 the prompts system. Now all in/out prompt strings are user
6321 the prompts system. Now all in/out prompt strings are user
6303 controllable. This is particularly useful for embedding, as one
6322 controllable. This is particularly useful for embedding, as one
6304 can tag embedded instances with particular prompts.
6323 can tag embedded instances with particular prompts.
6305
6324
6306 Also removed global use of sys.ps1/2, which now allows nested
6325 Also removed global use of sys.ps1/2, which now allows nested
6307 embeddings without any problems. Added command-line options for
6326 embeddings without any problems. Added command-line options for
6308 the prompt strings.
6327 the prompt strings.
6309
6328
6310 2002-03-08 Fernando Perez <fperez@colorado.edu>
6329 2002-03-08 Fernando Perez <fperez@colorado.edu>
6311
6330
6312 * IPython/UserConfig/example-embed-short.py (ipshell): added
6331 * IPython/UserConfig/example-embed-short.py (ipshell): added
6313 example file with the bare minimum code for embedding.
6332 example file with the bare minimum code for embedding.
6314
6333
6315 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6334 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6316 functionality for the embeddable shell to be activated/deactivated
6335 functionality for the embeddable shell to be activated/deactivated
6317 either globally or at each call.
6336 either globally or at each call.
6318
6337
6319 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6338 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6320 rewriting the prompt with '--->' for auto-inputs with proper
6339 rewriting the prompt with '--->' for auto-inputs with proper
6321 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6340 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6322 this is handled by the prompts class itself, as it should.
6341 this is handled by the prompts class itself, as it should.
6323
6342
6324 2002-03-05 Fernando Perez <fperez@colorado.edu>
6343 2002-03-05 Fernando Perez <fperez@colorado.edu>
6325
6344
6326 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6345 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6327 @logstart to avoid name clashes with the math log function.
6346 @logstart to avoid name clashes with the math log function.
6328
6347
6329 * Big updates to X/Emacs section of the manual.
6348 * Big updates to X/Emacs section of the manual.
6330
6349
6331 * Removed ipython_emacs. Milan explained to me how to pass
6350 * Removed ipython_emacs. Milan explained to me how to pass
6332 arguments to ipython through Emacs. Some day I'm going to end up
6351 arguments to ipython through Emacs. Some day I'm going to end up
6333 learning some lisp...
6352 learning some lisp...
6334
6353
6335 2002-03-04 Fernando Perez <fperez@colorado.edu>
6354 2002-03-04 Fernando Perez <fperez@colorado.edu>
6336
6355
6337 * IPython/ipython_emacs: Created script to be used as the
6356 * IPython/ipython_emacs: Created script to be used as the
6338 py-python-command Emacs variable so we can pass IPython
6357 py-python-command Emacs variable so we can pass IPython
6339 parameters. I can't figure out how to tell Emacs directly to pass
6358 parameters. I can't figure out how to tell Emacs directly to pass
6340 parameters to IPython, so a dummy shell script will do it.
6359 parameters to IPython, so a dummy shell script will do it.
6341
6360
6342 Other enhancements made for things to work better under Emacs'
6361 Other enhancements made for things to work better under Emacs'
6343 various types of terminals. Many thanks to Milan Zamazal
6362 various types of terminals. Many thanks to Milan Zamazal
6344 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6363 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6345
6364
6346 2002-03-01 Fernando Perez <fperez@colorado.edu>
6365 2002-03-01 Fernando Perez <fperez@colorado.edu>
6347
6366
6348 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6367 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6349 that loading of readline is now optional. This gives better
6368 that loading of readline is now optional. This gives better
6350 control to emacs users.
6369 control to emacs users.
6351
6370
6352 * IPython/ultraTB.py (__date__): Modified color escape sequences
6371 * IPython/ultraTB.py (__date__): Modified color escape sequences
6353 and now things work fine under xterm and in Emacs' term buffers
6372 and now things work fine under xterm and in Emacs' term buffers
6354 (though not shell ones). Well, in emacs you get colors, but all
6373 (though not shell ones). Well, in emacs you get colors, but all
6355 seem to be 'light' colors (no difference between dark and light
6374 seem to be 'light' colors (no difference between dark and light
6356 ones). But the garbage chars are gone, and also in xterms. It
6375 ones). But the garbage chars are gone, and also in xterms. It
6357 seems that now I'm using 'cleaner' ansi sequences.
6376 seems that now I'm using 'cleaner' ansi sequences.
6358
6377
6359 2002-02-21 Fernando Perez <fperez@colorado.edu>
6378 2002-02-21 Fernando Perez <fperez@colorado.edu>
6360
6379
6361 * Released 0.2.7 (mainly to publish the scoping fix).
6380 * Released 0.2.7 (mainly to publish the scoping fix).
6362
6381
6363 * IPython/Logger.py (Logger.logstate): added. A corresponding
6382 * IPython/Logger.py (Logger.logstate): added. A corresponding
6364 @logstate magic was created.
6383 @logstate magic was created.
6365
6384
6366 * IPython/Magic.py: fixed nested scoping problem under Python
6385 * IPython/Magic.py: fixed nested scoping problem under Python
6367 2.1.x (automagic wasn't working).
6386 2.1.x (automagic wasn't working).
6368
6387
6369 2002-02-20 Fernando Perez <fperez@colorado.edu>
6388 2002-02-20 Fernando Perez <fperez@colorado.edu>
6370
6389
6371 * Released 0.2.6.
6390 * Released 0.2.6.
6372
6391
6373 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6392 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6374 option so that logs can come out without any headers at all.
6393 option so that logs can come out without any headers at all.
6375
6394
6376 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6395 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6377 SciPy.
6396 SciPy.
6378
6397
6379 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6398 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6380 that embedded IPython calls don't require vars() to be explicitly
6399 that embedded IPython calls don't require vars() to be explicitly
6381 passed. Now they are extracted from the caller's frame (code
6400 passed. Now they are extracted from the caller's frame (code
6382 snatched from Eric Jones' weave). Added better documentation to
6401 snatched from Eric Jones' weave). Added better documentation to
6383 the section on embedding and the example file.
6402 the section on embedding and the example file.
6384
6403
6385 * IPython/genutils.py (page): Changed so that under emacs, it just
6404 * IPython/genutils.py (page): Changed so that under emacs, it just
6386 prints the string. You can then page up and down in the emacs
6405 prints the string. You can then page up and down in the emacs
6387 buffer itself. This is how the builtin help() works.
6406 buffer itself. This is how the builtin help() works.
6388
6407
6389 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6408 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6390 macro scoping: macros need to be executed in the user's namespace
6409 macro scoping: macros need to be executed in the user's namespace
6391 to work as if they had been typed by the user.
6410 to work as if they had been typed by the user.
6392
6411
6393 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6412 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6394 execute automatically (no need to type 'exec...'). They then
6413 execute automatically (no need to type 'exec...'). They then
6395 behave like 'true macros'. The printing system was also modified
6414 behave like 'true macros'. The printing system was also modified
6396 for this to work.
6415 for this to work.
6397
6416
6398 2002-02-19 Fernando Perez <fperez@colorado.edu>
6417 2002-02-19 Fernando Perez <fperez@colorado.edu>
6399
6418
6400 * IPython/genutils.py (page_file): new function for paging files
6419 * IPython/genutils.py (page_file): new function for paging files
6401 in an OS-independent way. Also necessary for file viewing to work
6420 in an OS-independent way. Also necessary for file viewing to work
6402 well inside Emacs buffers.
6421 well inside Emacs buffers.
6403 (page): Added checks for being in an emacs buffer.
6422 (page): Added checks for being in an emacs buffer.
6404 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6423 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6405 same bug in iplib.
6424 same bug in iplib.
6406
6425
6407 2002-02-18 Fernando Perez <fperez@colorado.edu>
6426 2002-02-18 Fernando Perez <fperez@colorado.edu>
6408
6427
6409 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6428 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6410 of readline so that IPython can work inside an Emacs buffer.
6429 of readline so that IPython can work inside an Emacs buffer.
6411
6430
6412 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6431 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6413 method signatures (they weren't really bugs, but it looks cleaner
6432 method signatures (they weren't really bugs, but it looks cleaner
6414 and keeps PyChecker happy).
6433 and keeps PyChecker happy).
6415
6434
6416 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6435 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6417 for implementing various user-defined hooks. Currently only
6436 for implementing various user-defined hooks. Currently only
6418 display is done.
6437 display is done.
6419
6438
6420 * IPython/Prompts.py (CachedOutput._display): changed display
6439 * IPython/Prompts.py (CachedOutput._display): changed display
6421 functions so that they can be dynamically changed by users easily.
6440 functions so that they can be dynamically changed by users easily.
6422
6441
6423 * IPython/Extensions/numeric_formats.py (num_display): added an
6442 * IPython/Extensions/numeric_formats.py (num_display): added an
6424 extension for printing NumPy arrays in flexible manners. It
6443 extension for printing NumPy arrays in flexible manners. It
6425 doesn't do anything yet, but all the structure is in
6444 doesn't do anything yet, but all the structure is in
6426 place. Ultimately the plan is to implement output format control
6445 place. Ultimately the plan is to implement output format control
6427 like in Octave.
6446 like in Octave.
6428
6447
6429 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6448 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6430 methods are found at run-time by all the automatic machinery.
6449 methods are found at run-time by all the automatic machinery.
6431
6450
6432 2002-02-17 Fernando Perez <fperez@colorado.edu>
6451 2002-02-17 Fernando Perez <fperez@colorado.edu>
6433
6452
6434 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6453 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6435 whole file a little.
6454 whole file a little.
6436
6455
6437 * ToDo: closed this document. Now there's a new_design.lyx
6456 * ToDo: closed this document. Now there's a new_design.lyx
6438 document for all new ideas. Added making a pdf of it for the
6457 document for all new ideas. Added making a pdf of it for the
6439 end-user distro.
6458 end-user distro.
6440
6459
6441 * IPython/Logger.py (Logger.switch_log): Created this to replace
6460 * IPython/Logger.py (Logger.switch_log): Created this to replace
6442 logon() and logoff(). It also fixes a nasty crash reported by
6461 logon() and logoff(). It also fixes a nasty crash reported by
6443 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6462 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6444
6463
6445 * IPython/iplib.py (complete): got auto-completion to work with
6464 * IPython/iplib.py (complete): got auto-completion to work with
6446 automagic (I had wanted this for a long time).
6465 automagic (I had wanted this for a long time).
6447
6466
6448 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6467 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6449 to @file, since file() is now a builtin and clashes with automagic
6468 to @file, since file() is now a builtin and clashes with automagic
6450 for @file.
6469 for @file.
6451
6470
6452 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6471 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6453 of this was previously in iplib, which had grown to more than 2000
6472 of this was previously in iplib, which had grown to more than 2000
6454 lines, way too long. No new functionality, but it makes managing
6473 lines, way too long. No new functionality, but it makes managing
6455 the code a bit easier.
6474 the code a bit easier.
6456
6475
6457 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6476 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6458 information to crash reports.
6477 information to crash reports.
6459
6478
6460 2002-02-12 Fernando Perez <fperez@colorado.edu>
6479 2002-02-12 Fernando Perez <fperez@colorado.edu>
6461
6480
6462 * Released 0.2.5.
6481 * Released 0.2.5.
6463
6482
6464 2002-02-11 Fernando Perez <fperez@colorado.edu>
6483 2002-02-11 Fernando Perez <fperez@colorado.edu>
6465
6484
6466 * Wrote a relatively complete Windows installer. It puts
6485 * Wrote a relatively complete Windows installer. It puts
6467 everything in place, creates Start Menu entries and fixes the
6486 everything in place, creates Start Menu entries and fixes the
6468 color issues. Nothing fancy, but it works.
6487 color issues. Nothing fancy, but it works.
6469
6488
6470 2002-02-10 Fernando Perez <fperez@colorado.edu>
6489 2002-02-10 Fernando Perez <fperez@colorado.edu>
6471
6490
6472 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6491 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6473 os.path.expanduser() call so that we can type @run ~/myfile.py and
6492 os.path.expanduser() call so that we can type @run ~/myfile.py and
6474 have thigs work as expected.
6493 have thigs work as expected.
6475
6494
6476 * IPython/genutils.py (page): fixed exception handling so things
6495 * IPython/genutils.py (page): fixed exception handling so things
6477 work both in Unix and Windows correctly. Quitting a pager triggers
6496 work both in Unix and Windows correctly. Quitting a pager triggers
6478 an IOError/broken pipe in Unix, and in windows not finding a pager
6497 an IOError/broken pipe in Unix, and in windows not finding a pager
6479 is also an IOError, so I had to actually look at the return value
6498 is also an IOError, so I had to actually look at the return value
6480 of the exception, not just the exception itself. Should be ok now.
6499 of the exception, not just the exception itself. Should be ok now.
6481
6500
6482 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6501 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6483 modified to allow case-insensitive color scheme changes.
6502 modified to allow case-insensitive color scheme changes.
6484
6503
6485 2002-02-09 Fernando Perez <fperez@colorado.edu>
6504 2002-02-09 Fernando Perez <fperez@colorado.edu>
6486
6505
6487 * IPython/genutils.py (native_line_ends): new function to leave
6506 * IPython/genutils.py (native_line_ends): new function to leave
6488 user config files with os-native line-endings.
6507 user config files with os-native line-endings.
6489
6508
6490 * README and manual updates.
6509 * README and manual updates.
6491
6510
6492 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6511 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6493 instead of StringType to catch Unicode strings.
6512 instead of StringType to catch Unicode strings.
6494
6513
6495 * IPython/genutils.py (filefind): fixed bug for paths with
6514 * IPython/genutils.py (filefind): fixed bug for paths with
6496 embedded spaces (very common in Windows).
6515 embedded spaces (very common in Windows).
6497
6516
6498 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6517 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6499 files under Windows, so that they get automatically associated
6518 files under Windows, so that they get automatically associated
6500 with a text editor. Windows makes it a pain to handle
6519 with a text editor. Windows makes it a pain to handle
6501 extension-less files.
6520 extension-less files.
6502
6521
6503 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6522 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6504 warning about readline only occur for Posix. In Windows there's no
6523 warning about readline only occur for Posix. In Windows there's no
6505 way to get readline, so why bother with the warning.
6524 way to get readline, so why bother with the warning.
6506
6525
6507 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6526 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6508 for __str__ instead of dir(self), since dir() changed in 2.2.
6527 for __str__ instead of dir(self), since dir() changed in 2.2.
6509
6528
6510 * Ported to Windows! Tested on XP, I suspect it should work fine
6529 * Ported to Windows! Tested on XP, I suspect it should work fine
6511 on NT/2000, but I don't think it will work on 98 et al. That
6530 on NT/2000, but I don't think it will work on 98 et al. That
6512 series of Windows is such a piece of junk anyway that I won't try
6531 series of Windows is such a piece of junk anyway that I won't try
6513 porting it there. The XP port was straightforward, showed a few
6532 porting it there. The XP port was straightforward, showed a few
6514 bugs here and there (fixed all), in particular some string
6533 bugs here and there (fixed all), in particular some string
6515 handling stuff which required considering Unicode strings (which
6534 handling stuff which required considering Unicode strings (which
6516 Windows uses). This is good, but hasn't been too tested :) No
6535 Windows uses). This is good, but hasn't been too tested :) No
6517 fancy installer yet, I'll put a note in the manual so people at
6536 fancy installer yet, I'll put a note in the manual so people at
6518 least make manually a shortcut.
6537 least make manually a shortcut.
6519
6538
6520 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6539 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6521 into a single one, "colors". This now controls both prompt and
6540 into a single one, "colors". This now controls both prompt and
6522 exception color schemes, and can be changed both at startup
6541 exception color schemes, and can be changed both at startup
6523 (either via command-line switches or via ipythonrc files) and at
6542 (either via command-line switches or via ipythonrc files) and at
6524 runtime, with @colors.
6543 runtime, with @colors.
6525 (Magic.magic_run): renamed @prun to @run and removed the old
6544 (Magic.magic_run): renamed @prun to @run and removed the old
6526 @run. The two were too similar to warrant keeping both.
6545 @run. The two were too similar to warrant keeping both.
6527
6546
6528 2002-02-03 Fernando Perez <fperez@colorado.edu>
6547 2002-02-03 Fernando Perez <fperez@colorado.edu>
6529
6548
6530 * IPython/iplib.py (install_first_time): Added comment on how to
6549 * IPython/iplib.py (install_first_time): Added comment on how to
6531 configure the color options for first-time users. Put a <return>
6550 configure the color options for first-time users. Put a <return>
6532 request at the end so that small-terminal users get a chance to
6551 request at the end so that small-terminal users get a chance to
6533 read the startup info.
6552 read the startup info.
6534
6553
6535 2002-01-23 Fernando Perez <fperez@colorado.edu>
6554 2002-01-23 Fernando Perez <fperez@colorado.edu>
6536
6555
6537 * IPython/iplib.py (CachedOutput.update): Changed output memory
6556 * IPython/iplib.py (CachedOutput.update): Changed output memory
6538 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6557 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6539 input history we still use _i. Did this b/c these variable are
6558 input history we still use _i. Did this b/c these variable are
6540 very commonly used in interactive work, so the less we need to
6559 very commonly used in interactive work, so the less we need to
6541 type the better off we are.
6560 type the better off we are.
6542 (Magic.magic_prun): updated @prun to better handle the namespaces
6561 (Magic.magic_prun): updated @prun to better handle the namespaces
6543 the file will run in, including a fix for __name__ not being set
6562 the file will run in, including a fix for __name__ not being set
6544 before.
6563 before.
6545
6564
6546 2002-01-20 Fernando Perez <fperez@colorado.edu>
6565 2002-01-20 Fernando Perez <fperez@colorado.edu>
6547
6566
6548 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6567 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6549 extra garbage for Python 2.2. Need to look more carefully into
6568 extra garbage for Python 2.2. Need to look more carefully into
6550 this later.
6569 this later.
6551
6570
6552 2002-01-19 Fernando Perez <fperez@colorado.edu>
6571 2002-01-19 Fernando Perez <fperez@colorado.edu>
6553
6572
6554 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6573 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6555 display SyntaxError exceptions properly formatted when they occur
6574 display SyntaxError exceptions properly formatted when they occur
6556 (they can be triggered by imported code).
6575 (they can be triggered by imported code).
6557
6576
6558 2002-01-18 Fernando Perez <fperez@colorado.edu>
6577 2002-01-18 Fernando Perez <fperez@colorado.edu>
6559
6578
6560 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6579 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6561 SyntaxError exceptions are reported nicely formatted, instead of
6580 SyntaxError exceptions are reported nicely formatted, instead of
6562 spitting out only offset information as before.
6581 spitting out only offset information as before.
6563 (Magic.magic_prun): Added the @prun function for executing
6582 (Magic.magic_prun): Added the @prun function for executing
6564 programs with command line args inside IPython.
6583 programs with command line args inside IPython.
6565
6584
6566 2002-01-16 Fernando Perez <fperez@colorado.edu>
6585 2002-01-16 Fernando Perez <fperez@colorado.edu>
6567
6586
6568 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6587 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6569 to *not* include the last item given in a range. This brings their
6588 to *not* include the last item given in a range. This brings their
6570 behavior in line with Python's slicing:
6589 behavior in line with Python's slicing:
6571 a[n1:n2] -> a[n1]...a[n2-1]
6590 a[n1:n2] -> a[n1]...a[n2-1]
6572 It may be a bit less convenient, but I prefer to stick to Python's
6591 It may be a bit less convenient, but I prefer to stick to Python's
6573 conventions *everywhere*, so users never have to wonder.
6592 conventions *everywhere*, so users never have to wonder.
6574 (Magic.magic_macro): Added @macro function to ease the creation of
6593 (Magic.magic_macro): Added @macro function to ease the creation of
6575 macros.
6594 macros.
6576
6595
6577 2002-01-05 Fernando Perez <fperez@colorado.edu>
6596 2002-01-05 Fernando Perez <fperez@colorado.edu>
6578
6597
6579 * Released 0.2.4.
6598 * Released 0.2.4.
6580
6599
6581 * IPython/iplib.py (Magic.magic_pdef):
6600 * IPython/iplib.py (Magic.magic_pdef):
6582 (InteractiveShell.safe_execfile): report magic lines and error
6601 (InteractiveShell.safe_execfile): report magic lines and error
6583 lines without line numbers so one can easily copy/paste them for
6602 lines without line numbers so one can easily copy/paste them for
6584 re-execution.
6603 re-execution.
6585
6604
6586 * Updated manual with recent changes.
6605 * Updated manual with recent changes.
6587
6606
6588 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6607 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6589 docstring printing when class? is called. Very handy for knowing
6608 docstring printing when class? is called. Very handy for knowing
6590 how to create class instances (as long as __init__ is well
6609 how to create class instances (as long as __init__ is well
6591 documented, of course :)
6610 documented, of course :)
6592 (Magic.magic_doc): print both class and constructor docstrings.
6611 (Magic.magic_doc): print both class and constructor docstrings.
6593 (Magic.magic_pdef): give constructor info if passed a class and
6612 (Magic.magic_pdef): give constructor info if passed a class and
6594 __call__ info for callable object instances.
6613 __call__ info for callable object instances.
6595
6614
6596 2002-01-04 Fernando Perez <fperez@colorado.edu>
6615 2002-01-04 Fernando Perez <fperez@colorado.edu>
6597
6616
6598 * Made deep_reload() off by default. It doesn't always work
6617 * Made deep_reload() off by default. It doesn't always work
6599 exactly as intended, so it's probably safer to have it off. It's
6618 exactly as intended, so it's probably safer to have it off. It's
6600 still available as dreload() anyway, so nothing is lost.
6619 still available as dreload() anyway, so nothing is lost.
6601
6620
6602 2002-01-02 Fernando Perez <fperez@colorado.edu>
6621 2002-01-02 Fernando Perez <fperez@colorado.edu>
6603
6622
6604 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6623 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6605 so I wanted an updated release).
6624 so I wanted an updated release).
6606
6625
6607 2001-12-27 Fernando Perez <fperez@colorado.edu>
6626 2001-12-27 Fernando Perez <fperez@colorado.edu>
6608
6627
6609 * IPython/iplib.py (InteractiveShell.interact): Added the original
6628 * IPython/iplib.py (InteractiveShell.interact): Added the original
6610 code from 'code.py' for this module in order to change the
6629 code from 'code.py' for this module in order to change the
6611 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6630 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6612 the history cache would break when the user hit Ctrl-C, and
6631 the history cache would break when the user hit Ctrl-C, and
6613 interact() offers no way to add any hooks to it.
6632 interact() offers no way to add any hooks to it.
6614
6633
6615 2001-12-23 Fernando Perez <fperez@colorado.edu>
6634 2001-12-23 Fernando Perez <fperez@colorado.edu>
6616
6635
6617 * setup.py: added check for 'MANIFEST' before trying to remove
6636 * setup.py: added check for 'MANIFEST' before trying to remove
6618 it. Thanks to Sean Reifschneider.
6637 it. Thanks to Sean Reifschneider.
6619
6638
6620 2001-12-22 Fernando Perez <fperez@colorado.edu>
6639 2001-12-22 Fernando Perez <fperez@colorado.edu>
6621
6640
6622 * Released 0.2.2.
6641 * Released 0.2.2.
6623
6642
6624 * Finished (reasonably) writing the manual. Later will add the
6643 * Finished (reasonably) writing the manual. Later will add the
6625 python-standard navigation stylesheets, but for the time being
6644 python-standard navigation stylesheets, but for the time being
6626 it's fairly complete. Distribution will include html and pdf
6645 it's fairly complete. Distribution will include html and pdf
6627 versions.
6646 versions.
6628
6647
6629 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6648 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6630 (MayaVi author).
6649 (MayaVi author).
6631
6650
6632 2001-12-21 Fernando Perez <fperez@colorado.edu>
6651 2001-12-21 Fernando Perez <fperez@colorado.edu>
6633
6652
6634 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6653 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6635 good public release, I think (with the manual and the distutils
6654 good public release, I think (with the manual and the distutils
6636 installer). The manual can use some work, but that can go
6655 installer). The manual can use some work, but that can go
6637 slowly. Otherwise I think it's quite nice for end users. Next
6656 slowly. Otherwise I think it's quite nice for end users. Next
6638 summer, rewrite the guts of it...
6657 summer, rewrite the guts of it...
6639
6658
6640 * Changed format of ipythonrc files to use whitespace as the
6659 * Changed format of ipythonrc files to use whitespace as the
6641 separator instead of an explicit '='. Cleaner.
6660 separator instead of an explicit '='. Cleaner.
6642
6661
6643 2001-12-20 Fernando Perez <fperez@colorado.edu>
6662 2001-12-20 Fernando Perez <fperez@colorado.edu>
6644
6663
6645 * Started a manual in LyX. For now it's just a quick merge of the
6664 * Started a manual in LyX. For now it's just a quick merge of the
6646 various internal docstrings and READMEs. Later it may grow into a
6665 various internal docstrings and READMEs. Later it may grow into a
6647 nice, full-blown manual.
6666 nice, full-blown manual.
6648
6667
6649 * Set up a distutils based installer. Installation should now be
6668 * Set up a distutils based installer. Installation should now be
6650 trivially simple for end-users.
6669 trivially simple for end-users.
6651
6670
6652 2001-12-11 Fernando Perez <fperez@colorado.edu>
6671 2001-12-11 Fernando Perez <fperez@colorado.edu>
6653
6672
6654 * Released 0.2.0. First public release, announced it at
6673 * Released 0.2.0. First public release, announced it at
6655 comp.lang.python. From now on, just bugfixes...
6674 comp.lang.python. From now on, just bugfixes...
6656
6675
6657 * Went through all the files, set copyright/license notices and
6676 * Went through all the files, set copyright/license notices and
6658 cleaned up things. Ready for release.
6677 cleaned up things. Ready for release.
6659
6678
6660 2001-12-10 Fernando Perez <fperez@colorado.edu>
6679 2001-12-10 Fernando Perez <fperez@colorado.edu>
6661
6680
6662 * Changed the first-time installer not to use tarfiles. It's more
6681 * Changed the first-time installer not to use tarfiles. It's more
6663 robust now and less unix-dependent. Also makes it easier for
6682 robust now and less unix-dependent. Also makes it easier for
6664 people to later upgrade versions.
6683 people to later upgrade versions.
6665
6684
6666 * Changed @exit to @abort to reflect the fact that it's pretty
6685 * Changed @exit to @abort to reflect the fact that it's pretty
6667 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6686 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6668 becomes significant only when IPyhton is embedded: in that case,
6687 becomes significant only when IPyhton is embedded: in that case,
6669 C-D closes IPython only, but @abort kills the enclosing program
6688 C-D closes IPython only, but @abort kills the enclosing program
6670 too (unless it had called IPython inside a try catching
6689 too (unless it had called IPython inside a try catching
6671 SystemExit).
6690 SystemExit).
6672
6691
6673 * Created Shell module which exposes the actuall IPython Shell
6692 * Created Shell module which exposes the actuall IPython Shell
6674 classes, currently the normal and the embeddable one. This at
6693 classes, currently the normal and the embeddable one. This at
6675 least offers a stable interface we won't need to change when
6694 least offers a stable interface we won't need to change when
6676 (later) the internals are rewritten. That rewrite will be confined
6695 (later) the internals are rewritten. That rewrite will be confined
6677 to iplib and ipmaker, but the Shell interface should remain as is.
6696 to iplib and ipmaker, but the Shell interface should remain as is.
6678
6697
6679 * Added embed module which offers an embeddable IPShell object,
6698 * Added embed module which offers an embeddable IPShell object,
6680 useful to fire up IPython *inside* a running program. Great for
6699 useful to fire up IPython *inside* a running program. Great for
6681 debugging or dynamical data analysis.
6700 debugging or dynamical data analysis.
6682
6701
6683 2001-12-08 Fernando Perez <fperez@colorado.edu>
6702 2001-12-08 Fernando Perez <fperez@colorado.edu>
6684
6703
6685 * Fixed small bug preventing seeing info from methods of defined
6704 * Fixed small bug preventing seeing info from methods of defined
6686 objects (incorrect namespace in _ofind()).
6705 objects (incorrect namespace in _ofind()).
6687
6706
6688 * Documentation cleanup. Moved the main usage docstrings to a
6707 * Documentation cleanup. Moved the main usage docstrings to a
6689 separate file, usage.py (cleaner to maintain, and hopefully in the
6708 separate file, usage.py (cleaner to maintain, and hopefully in the
6690 future some perlpod-like way of producing interactive, man and
6709 future some perlpod-like way of producing interactive, man and
6691 html docs out of it will be found).
6710 html docs out of it will be found).
6692
6711
6693 * Added @profile to see your profile at any time.
6712 * Added @profile to see your profile at any time.
6694
6713
6695 * Added @p as an alias for 'print'. It's especially convenient if
6714 * Added @p as an alias for 'print'. It's especially convenient if
6696 using automagic ('p x' prints x).
6715 using automagic ('p x' prints x).
6697
6716
6698 * Small cleanups and fixes after a pychecker run.
6717 * Small cleanups and fixes after a pychecker run.
6699
6718
6700 * Changed the @cd command to handle @cd - and @cd -<n> for
6719 * Changed the @cd command to handle @cd - and @cd -<n> for
6701 visiting any directory in _dh.
6720 visiting any directory in _dh.
6702
6721
6703 * Introduced _dh, a history of visited directories. @dhist prints
6722 * Introduced _dh, a history of visited directories. @dhist prints
6704 it out with numbers.
6723 it out with numbers.
6705
6724
6706 2001-12-07 Fernando Perez <fperez@colorado.edu>
6725 2001-12-07 Fernando Perez <fperez@colorado.edu>
6707
6726
6708 * Released 0.1.22
6727 * Released 0.1.22
6709
6728
6710 * Made initialization a bit more robust against invalid color
6729 * Made initialization a bit more robust against invalid color
6711 options in user input (exit, not traceback-crash).
6730 options in user input (exit, not traceback-crash).
6712
6731
6713 * Changed the bug crash reporter to write the report only in the
6732 * Changed the bug crash reporter to write the report only in the
6714 user's .ipython directory. That way IPython won't litter people's
6733 user's .ipython directory. That way IPython won't litter people's
6715 hard disks with crash files all over the place. Also print on
6734 hard disks with crash files all over the place. Also print on
6716 screen the necessary mail command.
6735 screen the necessary mail command.
6717
6736
6718 * With the new ultraTB, implemented LightBG color scheme for light
6737 * With the new ultraTB, implemented LightBG color scheme for light
6719 background terminals. A lot of people like white backgrounds, so I
6738 background terminals. A lot of people like white backgrounds, so I
6720 guess we should at least give them something readable.
6739 guess we should at least give them something readable.
6721
6740
6722 2001-12-06 Fernando Perez <fperez@colorado.edu>
6741 2001-12-06 Fernando Perez <fperez@colorado.edu>
6723
6742
6724 * Modified the structure of ultraTB. Now there's a proper class
6743 * Modified the structure of ultraTB. Now there's a proper class
6725 for tables of color schemes which allow adding schemes easily and
6744 for tables of color schemes which allow adding schemes easily and
6726 switching the active scheme without creating a new instance every
6745 switching the active scheme without creating a new instance every
6727 time (which was ridiculous). The syntax for creating new schemes
6746 time (which was ridiculous). The syntax for creating new schemes
6728 is also cleaner. I think ultraTB is finally done, with a clean
6747 is also cleaner. I think ultraTB is finally done, with a clean
6729 class structure. Names are also much cleaner (now there's proper
6748 class structure. Names are also much cleaner (now there's proper
6730 color tables, no need for every variable to also have 'color' in
6749 color tables, no need for every variable to also have 'color' in
6731 its name).
6750 its name).
6732
6751
6733 * Broke down genutils into separate files. Now genutils only
6752 * Broke down genutils into separate files. Now genutils only
6734 contains utility functions, and classes have been moved to their
6753 contains utility functions, and classes have been moved to their
6735 own files (they had enough independent functionality to warrant
6754 own files (they had enough independent functionality to warrant
6736 it): ConfigLoader, OutputTrap, Struct.
6755 it): ConfigLoader, OutputTrap, Struct.
6737
6756
6738 2001-12-05 Fernando Perez <fperez@colorado.edu>
6757 2001-12-05 Fernando Perez <fperez@colorado.edu>
6739
6758
6740 * IPython turns 21! Released version 0.1.21, as a candidate for
6759 * IPython turns 21! Released version 0.1.21, as a candidate for
6741 public consumption. If all goes well, release in a few days.
6760 public consumption. If all goes well, release in a few days.
6742
6761
6743 * Fixed path bug (files in Extensions/ directory wouldn't be found
6762 * Fixed path bug (files in Extensions/ directory wouldn't be found
6744 unless IPython/ was explicitly in sys.path).
6763 unless IPython/ was explicitly in sys.path).
6745
6764
6746 * Extended the FlexCompleter class as MagicCompleter to allow
6765 * Extended the FlexCompleter class as MagicCompleter to allow
6747 completion of @-starting lines.
6766 completion of @-starting lines.
6748
6767
6749 * Created __release__.py file as a central repository for release
6768 * Created __release__.py file as a central repository for release
6750 info that other files can read from.
6769 info that other files can read from.
6751
6770
6752 * Fixed small bug in logging: when logging was turned on in
6771 * Fixed small bug in logging: when logging was turned on in
6753 mid-session, old lines with special meanings (!@?) were being
6772 mid-session, old lines with special meanings (!@?) were being
6754 logged without the prepended comment, which is necessary since
6773 logged without the prepended comment, which is necessary since
6755 they are not truly valid python syntax. This should make session
6774 they are not truly valid python syntax. This should make session
6756 restores produce less errors.
6775 restores produce less errors.
6757
6776
6758 * The namespace cleanup forced me to make a FlexCompleter class
6777 * The namespace cleanup forced me to make a FlexCompleter class
6759 which is nothing but a ripoff of rlcompleter, but with selectable
6778 which is nothing but a ripoff of rlcompleter, but with selectable
6760 namespace (rlcompleter only works in __main__.__dict__). I'll try
6779 namespace (rlcompleter only works in __main__.__dict__). I'll try
6761 to submit a note to the authors to see if this change can be
6780 to submit a note to the authors to see if this change can be
6762 incorporated in future rlcompleter releases (Dec.6: done)
6781 incorporated in future rlcompleter releases (Dec.6: done)
6763
6782
6764 * More fixes to namespace handling. It was a mess! Now all
6783 * More fixes to namespace handling. It was a mess! Now all
6765 explicit references to __main__.__dict__ are gone (except when
6784 explicit references to __main__.__dict__ are gone (except when
6766 really needed) and everything is handled through the namespace
6785 really needed) and everything is handled through the namespace
6767 dicts in the IPython instance. We seem to be getting somewhere
6786 dicts in the IPython instance. We seem to be getting somewhere
6768 with this, finally...
6787 with this, finally...
6769
6788
6770 * Small documentation updates.
6789 * Small documentation updates.
6771
6790
6772 * Created the Extensions directory under IPython (with an
6791 * Created the Extensions directory under IPython (with an
6773 __init__.py). Put the PhysicalQ stuff there. This directory should
6792 __init__.py). Put the PhysicalQ stuff there. This directory should
6774 be used for all special-purpose extensions.
6793 be used for all special-purpose extensions.
6775
6794
6776 * File renaming:
6795 * File renaming:
6777 ipythonlib --> ipmaker
6796 ipythonlib --> ipmaker
6778 ipplib --> iplib
6797 ipplib --> iplib
6779 This makes a bit more sense in terms of what these files actually do.
6798 This makes a bit more sense in terms of what these files actually do.
6780
6799
6781 * Moved all the classes and functions in ipythonlib to ipplib, so
6800 * Moved all the classes and functions in ipythonlib to ipplib, so
6782 now ipythonlib only has make_IPython(). This will ease up its
6801 now ipythonlib only has make_IPython(). This will ease up its
6783 splitting in smaller functional chunks later.
6802 splitting in smaller functional chunks later.
6784
6803
6785 * Cleaned up (done, I think) output of @whos. Better column
6804 * Cleaned up (done, I think) output of @whos. Better column
6786 formatting, and now shows str(var) for as much as it can, which is
6805 formatting, and now shows str(var) for as much as it can, which is
6787 typically what one gets with a 'print var'.
6806 typically what one gets with a 'print var'.
6788
6807
6789 2001-12-04 Fernando Perez <fperez@colorado.edu>
6808 2001-12-04 Fernando Perez <fperez@colorado.edu>
6790
6809
6791 * Fixed namespace problems. Now builtin/IPyhton/user names get
6810 * Fixed namespace problems. Now builtin/IPyhton/user names get
6792 properly reported in their namespace. Internal namespace handling
6811 properly reported in their namespace. Internal namespace handling
6793 is finally getting decent (not perfect yet, but much better than
6812 is finally getting decent (not perfect yet, but much better than
6794 the ad-hoc mess we had).
6813 the ad-hoc mess we had).
6795
6814
6796 * Removed -exit option. If people just want to run a python
6815 * Removed -exit option. If people just want to run a python
6797 script, that's what the normal interpreter is for. Less
6816 script, that's what the normal interpreter is for. Less
6798 unnecessary options, less chances for bugs.
6817 unnecessary options, less chances for bugs.
6799
6818
6800 * Added a crash handler which generates a complete post-mortem if
6819 * Added a crash handler which generates a complete post-mortem if
6801 IPython crashes. This will help a lot in tracking bugs down the
6820 IPython crashes. This will help a lot in tracking bugs down the
6802 road.
6821 road.
6803
6822
6804 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6823 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6805 which were boud to functions being reassigned would bypass the
6824 which were boud to functions being reassigned would bypass the
6806 logger, breaking the sync of _il with the prompt counter. This
6825 logger, breaking the sync of _il with the prompt counter. This
6807 would then crash IPython later when a new line was logged.
6826 would then crash IPython later when a new line was logged.
6808
6827
6809 2001-12-02 Fernando Perez <fperez@colorado.edu>
6828 2001-12-02 Fernando Perez <fperez@colorado.edu>
6810
6829
6811 * Made IPython a package. This means people don't have to clutter
6830 * Made IPython a package. This means people don't have to clutter
6812 their sys.path with yet another directory. Changed the INSTALL
6831 their sys.path with yet another directory. Changed the INSTALL
6813 file accordingly.
6832 file accordingly.
6814
6833
6815 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6834 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6816 sorts its output (so @who shows it sorted) and @whos formats the
6835 sorts its output (so @who shows it sorted) and @whos formats the
6817 table according to the width of the first column. Nicer, easier to
6836 table according to the width of the first column. Nicer, easier to
6818 read. Todo: write a generic table_format() which takes a list of
6837 read. Todo: write a generic table_format() which takes a list of
6819 lists and prints it nicely formatted, with optional row/column
6838 lists and prints it nicely formatted, with optional row/column
6820 separators and proper padding and justification.
6839 separators and proper padding and justification.
6821
6840
6822 * Released 0.1.20
6841 * Released 0.1.20
6823
6842
6824 * Fixed bug in @log which would reverse the inputcache list (a
6843 * Fixed bug in @log which would reverse the inputcache list (a
6825 copy operation was missing).
6844 copy operation was missing).
6826
6845
6827 * Code cleanup. @config was changed to use page(). Better, since
6846 * Code cleanup. @config was changed to use page(). Better, since
6828 its output is always quite long.
6847 its output is always quite long.
6829
6848
6830 * Itpl is back as a dependency. I was having too many problems
6849 * Itpl is back as a dependency. I was having too many problems
6831 getting the parametric aliases to work reliably, and it's just
6850 getting the parametric aliases to work reliably, and it's just
6832 easier to code weird string operations with it than playing %()s
6851 easier to code weird string operations with it than playing %()s
6833 games. It's only ~6k, so I don't think it's too big a deal.
6852 games. It's only ~6k, so I don't think it's too big a deal.
6834
6853
6835 * Found (and fixed) a very nasty bug with history. !lines weren't
6854 * Found (and fixed) a very nasty bug with history. !lines weren't
6836 getting cached, and the out of sync caches would crash
6855 getting cached, and the out of sync caches would crash
6837 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6856 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6838 division of labor a bit better. Bug fixed, cleaner structure.
6857 division of labor a bit better. Bug fixed, cleaner structure.
6839
6858
6840 2001-12-01 Fernando Perez <fperez@colorado.edu>
6859 2001-12-01 Fernando Perez <fperez@colorado.edu>
6841
6860
6842 * Released 0.1.19
6861 * Released 0.1.19
6843
6862
6844 * Added option -n to @hist to prevent line number printing. Much
6863 * Added option -n to @hist to prevent line number printing. Much
6845 easier to copy/paste code this way.
6864 easier to copy/paste code this way.
6846
6865
6847 * Created global _il to hold the input list. Allows easy
6866 * Created global _il to hold the input list. Allows easy
6848 re-execution of blocks of code by slicing it (inspired by Janko's
6867 re-execution of blocks of code by slicing it (inspired by Janko's
6849 comment on 'macros').
6868 comment on 'macros').
6850
6869
6851 * Small fixes and doc updates.
6870 * Small fixes and doc updates.
6852
6871
6853 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6872 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6854 much too fragile with automagic. Handles properly multi-line
6873 much too fragile with automagic. Handles properly multi-line
6855 statements and takes parameters.
6874 statements and takes parameters.
6856
6875
6857 2001-11-30 Fernando Perez <fperez@colorado.edu>
6876 2001-11-30 Fernando Perez <fperez@colorado.edu>
6858
6877
6859 * Version 0.1.18 released.
6878 * Version 0.1.18 released.
6860
6879
6861 * Fixed nasty namespace bug in initial module imports.
6880 * Fixed nasty namespace bug in initial module imports.
6862
6881
6863 * Added copyright/license notes to all code files (except
6882 * Added copyright/license notes to all code files (except
6864 DPyGetOpt). For the time being, LGPL. That could change.
6883 DPyGetOpt). For the time being, LGPL. That could change.
6865
6884
6866 * Rewrote a much nicer README, updated INSTALL, cleaned up
6885 * Rewrote a much nicer README, updated INSTALL, cleaned up
6867 ipythonrc-* samples.
6886 ipythonrc-* samples.
6868
6887
6869 * Overall code/documentation cleanup. Basically ready for
6888 * Overall code/documentation cleanup. Basically ready for
6870 release. Only remaining thing: licence decision (LGPL?).
6889 release. Only remaining thing: licence decision (LGPL?).
6871
6890
6872 * Converted load_config to a class, ConfigLoader. Now recursion
6891 * Converted load_config to a class, ConfigLoader. Now recursion
6873 control is better organized. Doesn't include the same file twice.
6892 control is better organized. Doesn't include the same file twice.
6874
6893
6875 2001-11-29 Fernando Perez <fperez@colorado.edu>
6894 2001-11-29 Fernando Perez <fperez@colorado.edu>
6876
6895
6877 * Got input history working. Changed output history variables from
6896 * Got input history working. Changed output history variables from
6878 _p to _o so that _i is for input and _o for output. Just cleaner
6897 _p to _o so that _i is for input and _o for output. Just cleaner
6879 convention.
6898 convention.
6880
6899
6881 * Implemented parametric aliases. This pretty much allows the
6900 * Implemented parametric aliases. This pretty much allows the
6882 alias system to offer full-blown shell convenience, I think.
6901 alias system to offer full-blown shell convenience, I think.
6883
6902
6884 * Version 0.1.17 released, 0.1.18 opened.
6903 * Version 0.1.17 released, 0.1.18 opened.
6885
6904
6886 * dot_ipython/ipythonrc (alias): added documentation.
6905 * dot_ipython/ipythonrc (alias): added documentation.
6887 (xcolor): Fixed small bug (xcolors -> xcolor)
6906 (xcolor): Fixed small bug (xcolors -> xcolor)
6888
6907
6889 * Changed the alias system. Now alias is a magic command to define
6908 * Changed the alias system. Now alias is a magic command to define
6890 aliases just like the shell. Rationale: the builtin magics should
6909 aliases just like the shell. Rationale: the builtin magics should
6891 be there for things deeply connected to IPython's
6910 be there for things deeply connected to IPython's
6892 architecture. And this is a much lighter system for what I think
6911 architecture. And this is a much lighter system for what I think
6893 is the really important feature: allowing users to define quickly
6912 is the really important feature: allowing users to define quickly
6894 magics that will do shell things for them, so they can customize
6913 magics that will do shell things for them, so they can customize
6895 IPython easily to match their work habits. If someone is really
6914 IPython easily to match their work habits. If someone is really
6896 desperate to have another name for a builtin alias, they can
6915 desperate to have another name for a builtin alias, they can
6897 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6916 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6898 works.
6917 works.
6899
6918
6900 2001-11-28 Fernando Perez <fperez@colorado.edu>
6919 2001-11-28 Fernando Perez <fperez@colorado.edu>
6901
6920
6902 * Changed @file so that it opens the source file at the proper
6921 * Changed @file so that it opens the source file at the proper
6903 line. Since it uses less, if your EDITOR environment is
6922 line. Since it uses less, if your EDITOR environment is
6904 configured, typing v will immediately open your editor of choice
6923 configured, typing v will immediately open your editor of choice
6905 right at the line where the object is defined. Not as quick as
6924 right at the line where the object is defined. Not as quick as
6906 having a direct @edit command, but for all intents and purposes it
6925 having a direct @edit command, but for all intents and purposes it
6907 works. And I don't have to worry about writing @edit to deal with
6926 works. And I don't have to worry about writing @edit to deal with
6908 all the editors, less does that.
6927 all the editors, less does that.
6909
6928
6910 * Version 0.1.16 released, 0.1.17 opened.
6929 * Version 0.1.16 released, 0.1.17 opened.
6911
6930
6912 * Fixed some nasty bugs in the page/page_dumb combo that could
6931 * Fixed some nasty bugs in the page/page_dumb combo that could
6913 crash IPython.
6932 crash IPython.
6914
6933
6915 2001-11-27 Fernando Perez <fperez@colorado.edu>
6934 2001-11-27 Fernando Perez <fperez@colorado.edu>
6916
6935
6917 * Version 0.1.15 released, 0.1.16 opened.
6936 * Version 0.1.15 released, 0.1.16 opened.
6918
6937
6919 * Finally got ? and ?? to work for undefined things: now it's
6938 * Finally got ? and ?? to work for undefined things: now it's
6920 possible to type {}.get? and get information about the get method
6939 possible to type {}.get? and get information about the get method
6921 of dicts, or os.path? even if only os is defined (so technically
6940 of dicts, or os.path? even if only os is defined (so technically
6922 os.path isn't). Works at any level. For example, after import os,
6941 os.path isn't). Works at any level. For example, after import os,
6923 os?, os.path?, os.path.abspath? all work. This is great, took some
6942 os?, os.path?, os.path.abspath? all work. This is great, took some
6924 work in _ofind.
6943 work in _ofind.
6925
6944
6926 * Fixed more bugs with logging. The sanest way to do it was to add
6945 * Fixed more bugs with logging. The sanest way to do it was to add
6927 to @log a 'mode' parameter. Killed two in one shot (this mode
6946 to @log a 'mode' parameter. Killed two in one shot (this mode
6928 option was a request of Janko's). I think it's finally clean
6947 option was a request of Janko's). I think it's finally clean
6929 (famous last words).
6948 (famous last words).
6930
6949
6931 * Added a page_dumb() pager which does a decent job of paging on
6950 * Added a page_dumb() pager which does a decent job of paging on
6932 screen, if better things (like less) aren't available. One less
6951 screen, if better things (like less) aren't available. One less
6933 unix dependency (someday maybe somebody will port this to
6952 unix dependency (someday maybe somebody will port this to
6934 windows).
6953 windows).
6935
6954
6936 * Fixed problem in magic_log: would lock of logging out if log
6955 * Fixed problem in magic_log: would lock of logging out if log
6937 creation failed (because it would still think it had succeeded).
6956 creation failed (because it would still think it had succeeded).
6938
6957
6939 * Improved the page() function using curses to auto-detect screen
6958 * Improved the page() function using curses to auto-detect screen
6940 size. Now it can make a much better decision on whether to print
6959 size. Now it can make a much better decision on whether to print
6941 or page a string. Option screen_length was modified: a value 0
6960 or page a string. Option screen_length was modified: a value 0
6942 means auto-detect, and that's the default now.
6961 means auto-detect, and that's the default now.
6943
6962
6944 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6963 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6945 go out. I'll test it for a few days, then talk to Janko about
6964 go out. I'll test it for a few days, then talk to Janko about
6946 licences and announce it.
6965 licences and announce it.
6947
6966
6948 * Fixed the length of the auto-generated ---> prompt which appears
6967 * Fixed the length of the auto-generated ---> prompt which appears
6949 for auto-parens and auto-quotes. Getting this right isn't trivial,
6968 for auto-parens and auto-quotes. Getting this right isn't trivial,
6950 with all the color escapes, different prompt types and optional
6969 with all the color escapes, different prompt types and optional
6951 separators. But it seems to be working in all the combinations.
6970 separators. But it seems to be working in all the combinations.
6952
6971
6953 2001-11-26 Fernando Perez <fperez@colorado.edu>
6972 2001-11-26 Fernando Perez <fperez@colorado.edu>
6954
6973
6955 * Wrote a regexp filter to get option types from the option names
6974 * Wrote a regexp filter to get option types from the option names
6956 string. This eliminates the need to manually keep two duplicate
6975 string. This eliminates the need to manually keep two duplicate
6957 lists.
6976 lists.
6958
6977
6959 * Removed the unneeded check_option_names. Now options are handled
6978 * Removed the unneeded check_option_names. Now options are handled
6960 in a much saner manner and it's easy to visually check that things
6979 in a much saner manner and it's easy to visually check that things
6961 are ok.
6980 are ok.
6962
6981
6963 * Updated version numbers on all files I modified to carry a
6982 * Updated version numbers on all files I modified to carry a
6964 notice so Janko and Nathan have clear version markers.
6983 notice so Janko and Nathan have clear version markers.
6965
6984
6966 * Updated docstring for ultraTB with my changes. I should send
6985 * Updated docstring for ultraTB with my changes. I should send
6967 this to Nathan.
6986 this to Nathan.
6968
6987
6969 * Lots of small fixes. Ran everything through pychecker again.
6988 * Lots of small fixes. Ran everything through pychecker again.
6970
6989
6971 * Made loading of deep_reload an cmd line option. If it's not too
6990 * Made loading of deep_reload an cmd line option. If it's not too
6972 kosher, now people can just disable it. With -nodeep_reload it's
6991 kosher, now people can just disable it. With -nodeep_reload it's
6973 still available as dreload(), it just won't overwrite reload().
6992 still available as dreload(), it just won't overwrite reload().
6974
6993
6975 * Moved many options to the no| form (-opt and -noopt
6994 * Moved many options to the no| form (-opt and -noopt
6976 accepted). Cleaner.
6995 accepted). Cleaner.
6977
6996
6978 * Changed magic_log so that if called with no parameters, it uses
6997 * Changed magic_log so that if called with no parameters, it uses
6979 'rotate' mode. That way auto-generated logs aren't automatically
6998 'rotate' mode. That way auto-generated logs aren't automatically
6980 over-written. For normal logs, now a backup is made if it exists
6999 over-written. For normal logs, now a backup is made if it exists
6981 (only 1 level of backups). A new 'backup' mode was added to the
7000 (only 1 level of backups). A new 'backup' mode was added to the
6982 Logger class to support this. This was a request by Janko.
7001 Logger class to support this. This was a request by Janko.
6983
7002
6984 * Added @logoff/@logon to stop/restart an active log.
7003 * Added @logoff/@logon to stop/restart an active log.
6985
7004
6986 * Fixed a lot of bugs in log saving/replay. It was pretty
7005 * Fixed a lot of bugs in log saving/replay. It was pretty
6987 broken. Now special lines (!@,/) appear properly in the command
7006 broken. Now special lines (!@,/) appear properly in the command
6988 history after a log replay.
7007 history after a log replay.
6989
7008
6990 * Tried and failed to implement full session saving via pickle. My
7009 * Tried and failed to implement full session saving via pickle. My
6991 idea was to pickle __main__.__dict__, but modules can't be
7010 idea was to pickle __main__.__dict__, but modules can't be
6992 pickled. This would be a better alternative to replaying logs, but
7011 pickled. This would be a better alternative to replaying logs, but
6993 seems quite tricky to get to work. Changed -session to be called
7012 seems quite tricky to get to work. Changed -session to be called
6994 -logplay, which more accurately reflects what it does. And if we
7013 -logplay, which more accurately reflects what it does. And if we
6995 ever get real session saving working, -session is now available.
7014 ever get real session saving working, -session is now available.
6996
7015
6997 * Implemented color schemes for prompts also. As for tracebacks,
7016 * Implemented color schemes for prompts also. As for tracebacks,
6998 currently only NoColor and Linux are supported. But now the
7017 currently only NoColor and Linux are supported. But now the
6999 infrastructure is in place, based on a generic ColorScheme
7018 infrastructure is in place, based on a generic ColorScheme
7000 class. So writing and activating new schemes both for the prompts
7019 class. So writing and activating new schemes both for the prompts
7001 and the tracebacks should be straightforward.
7020 and the tracebacks should be straightforward.
7002
7021
7003 * Version 0.1.13 released, 0.1.14 opened.
7022 * Version 0.1.13 released, 0.1.14 opened.
7004
7023
7005 * Changed handling of options for output cache. Now counter is
7024 * Changed handling of options for output cache. Now counter is
7006 hardwired starting at 1 and one specifies the maximum number of
7025 hardwired starting at 1 and one specifies the maximum number of
7007 entries *in the outcache* (not the max prompt counter). This is
7026 entries *in the outcache* (not the max prompt counter). This is
7008 much better, since many statements won't increase the cache
7027 much better, since many statements won't increase the cache
7009 count. It also eliminated some confusing options, now there's only
7028 count. It also eliminated some confusing options, now there's only
7010 one: cache_size.
7029 one: cache_size.
7011
7030
7012 * Added 'alias' magic function and magic_alias option in the
7031 * Added 'alias' magic function and magic_alias option in the
7013 ipythonrc file. Now the user can easily define whatever names he
7032 ipythonrc file. Now the user can easily define whatever names he
7014 wants for the magic functions without having to play weird
7033 wants for the magic functions without having to play weird
7015 namespace games. This gives IPython a real shell-like feel.
7034 namespace games. This gives IPython a real shell-like feel.
7016
7035
7017 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
7036 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
7018 @ or not).
7037 @ or not).
7019
7038
7020 This was one of the last remaining 'visible' bugs (that I know
7039 This was one of the last remaining 'visible' bugs (that I know
7021 of). I think if I can clean up the session loading so it works
7040 of). I think if I can clean up the session loading so it works
7022 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
7041 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
7023 about licensing).
7042 about licensing).
7024
7043
7025 2001-11-25 Fernando Perez <fperez@colorado.edu>
7044 2001-11-25 Fernando Perez <fperez@colorado.edu>
7026
7045
7027 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
7046 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
7028 there's a cleaner distinction between what ? and ?? show.
7047 there's a cleaner distinction between what ? and ?? show.
7029
7048
7030 * Added screen_length option. Now the user can define his own
7049 * Added screen_length option. Now the user can define his own
7031 screen size for page() operations.
7050 screen size for page() operations.
7032
7051
7033 * Implemented magic shell-like functions with automatic code
7052 * Implemented magic shell-like functions with automatic code
7034 generation. Now adding another function is just a matter of adding
7053 generation. Now adding another function is just a matter of adding
7035 an entry to a dict, and the function is dynamically generated at
7054 an entry to a dict, and the function is dynamically generated at
7036 run-time. Python has some really cool features!
7055 run-time. Python has some really cool features!
7037
7056
7038 * Renamed many options to cleanup conventions a little. Now all
7057 * Renamed many options to cleanup conventions a little. Now all
7039 are lowercase, and only underscores where needed. Also in the code
7058 are lowercase, and only underscores where needed. Also in the code
7040 option name tables are clearer.
7059 option name tables are clearer.
7041
7060
7042 * Changed prompts a little. Now input is 'In [n]:' instead of
7061 * Changed prompts a little. Now input is 'In [n]:' instead of
7043 'In[n]:='. This allows it the numbers to be aligned with the
7062 'In[n]:='. This allows it the numbers to be aligned with the
7044 Out[n] numbers, and removes usage of ':=' which doesn't exist in
7063 Out[n] numbers, and removes usage of ':=' which doesn't exist in
7045 Python (it was a Mathematica thing). The '...' continuation prompt
7064 Python (it was a Mathematica thing). The '...' continuation prompt
7046 was also changed a little to align better.
7065 was also changed a little to align better.
7047
7066
7048 * Fixed bug when flushing output cache. Not all _p<n> variables
7067 * Fixed bug when flushing output cache. Not all _p<n> variables
7049 exist, so their deletion needs to be wrapped in a try:
7068 exist, so their deletion needs to be wrapped in a try:
7050
7069
7051 * Figured out how to properly use inspect.formatargspec() (it
7070 * Figured out how to properly use inspect.formatargspec() (it
7052 requires the args preceded by *). So I removed all the code from
7071 requires the args preceded by *). So I removed all the code from
7053 _get_pdef in Magic, which was just replicating that.
7072 _get_pdef in Magic, which was just replicating that.
7054
7073
7055 * Added test to prefilter to allow redefining magic function names
7074 * Added test to prefilter to allow redefining magic function names
7056 as variables. This is ok, since the @ form is always available,
7075 as variables. This is ok, since the @ form is always available,
7057 but whe should allow the user to define a variable called 'ls' if
7076 but whe should allow the user to define a variable called 'ls' if
7058 he needs it.
7077 he needs it.
7059
7078
7060 * Moved the ToDo information from README into a separate ToDo.
7079 * Moved the ToDo information from README into a separate ToDo.
7061
7080
7062 * General code cleanup and small bugfixes. I think it's close to a
7081 * General code cleanup and small bugfixes. I think it's close to a
7063 state where it can be released, obviously with a big 'beta'
7082 state where it can be released, obviously with a big 'beta'
7064 warning on it.
7083 warning on it.
7065
7084
7066 * Got the magic function split to work. Now all magics are defined
7085 * Got the magic function split to work. Now all magics are defined
7067 in a separate class. It just organizes things a bit, and now
7086 in a separate class. It just organizes things a bit, and now
7068 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
7087 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
7069 was too long).
7088 was too long).
7070
7089
7071 * Changed @clear to @reset to avoid potential confusions with
7090 * Changed @clear to @reset to avoid potential confusions with
7072 the shell command clear. Also renamed @cl to @clear, which does
7091 the shell command clear. Also renamed @cl to @clear, which does
7073 exactly what people expect it to from their shell experience.
7092 exactly what people expect it to from their shell experience.
7074
7093
7075 Added a check to the @reset command (since it's so
7094 Added a check to the @reset command (since it's so
7076 destructive, it's probably a good idea to ask for confirmation).
7095 destructive, it's probably a good idea to ask for confirmation).
7077 But now reset only works for full namespace resetting. Since the
7096 But now reset only works for full namespace resetting. Since the
7078 del keyword is already there for deleting a few specific
7097 del keyword is already there for deleting a few specific
7079 variables, I don't see the point of having a redundant magic
7098 variables, I don't see the point of having a redundant magic
7080 function for the same task.
7099 function for the same task.
7081
7100
7082 2001-11-24 Fernando Perez <fperez@colorado.edu>
7101 2001-11-24 Fernando Perez <fperez@colorado.edu>
7083
7102
7084 * Updated the builtin docs (esp. the ? ones).
7103 * Updated the builtin docs (esp. the ? ones).
7085
7104
7086 * Ran all the code through pychecker. Not terribly impressed with
7105 * Ran all the code through pychecker. Not terribly impressed with
7087 it: lots of spurious warnings and didn't really find anything of
7106 it: lots of spurious warnings and didn't really find anything of
7088 substance (just a few modules being imported and not used).
7107 substance (just a few modules being imported and not used).
7089
7108
7090 * Implemented the new ultraTB functionality into IPython. New
7109 * Implemented the new ultraTB functionality into IPython. New
7091 option: xcolors. This chooses color scheme. xmode now only selects
7110 option: xcolors. This chooses color scheme. xmode now only selects
7092 between Plain and Verbose. Better orthogonality.
7111 between Plain and Verbose. Better orthogonality.
7093
7112
7094 * Large rewrite of ultraTB. Much cleaner now, with a separation of
7113 * Large rewrite of ultraTB. Much cleaner now, with a separation of
7095 mode and color scheme for the exception handlers. Now it's
7114 mode and color scheme for the exception handlers. Now it's
7096 possible to have the verbose traceback with no coloring.
7115 possible to have the verbose traceback with no coloring.
7097
7116
7098 2001-11-23 Fernando Perez <fperez@colorado.edu>
7117 2001-11-23 Fernando Perez <fperez@colorado.edu>
7099
7118
7100 * Version 0.1.12 released, 0.1.13 opened.
7119 * Version 0.1.12 released, 0.1.13 opened.
7101
7120
7102 * Removed option to set auto-quote and auto-paren escapes by
7121 * Removed option to set auto-quote and auto-paren escapes by
7103 user. The chances of breaking valid syntax are just too high. If
7122 user. The chances of breaking valid syntax are just too high. If
7104 someone *really* wants, they can always dig into the code.
7123 someone *really* wants, they can always dig into the code.
7105
7124
7106 * Made prompt separators configurable.
7125 * Made prompt separators configurable.
7107
7126
7108 2001-11-22 Fernando Perez <fperez@colorado.edu>
7127 2001-11-22 Fernando Perez <fperez@colorado.edu>
7109
7128
7110 * Small bugfixes in many places.
7129 * Small bugfixes in many places.
7111
7130
7112 * Removed the MyCompleter class from ipplib. It seemed redundant
7131 * Removed the MyCompleter class from ipplib. It seemed redundant
7113 with the C-p,C-n history search functionality. Less code to
7132 with the C-p,C-n history search functionality. Less code to
7114 maintain.
7133 maintain.
7115
7134
7116 * Moved all the original ipython.py code into ipythonlib.py. Right
7135 * Moved all the original ipython.py code into ipythonlib.py. Right
7117 now it's just one big dump into a function called make_IPython, so
7136 now it's just one big dump into a function called make_IPython, so
7118 no real modularity has been gained. But at least it makes the
7137 no real modularity has been gained. But at least it makes the
7119 wrapper script tiny, and since ipythonlib is a module, it gets
7138 wrapper script tiny, and since ipythonlib is a module, it gets
7120 compiled and startup is much faster.
7139 compiled and startup is much faster.
7121
7140
7122 This is a reasobably 'deep' change, so we should test it for a
7141 This is a reasobably 'deep' change, so we should test it for a
7123 while without messing too much more with the code.
7142 while without messing too much more with the code.
7124
7143
7125 2001-11-21 Fernando Perez <fperez@colorado.edu>
7144 2001-11-21 Fernando Perez <fperez@colorado.edu>
7126
7145
7127 * Version 0.1.11 released, 0.1.12 opened for further work.
7146 * Version 0.1.11 released, 0.1.12 opened for further work.
7128
7147
7129 * Removed dependency on Itpl. It was only needed in one place. It
7148 * Removed dependency on Itpl. It was only needed in one place. It
7130 would be nice if this became part of python, though. It makes life
7149 would be nice if this became part of python, though. It makes life
7131 *a lot* easier in some cases.
7150 *a lot* easier in some cases.
7132
7151
7133 * Simplified the prefilter code a bit. Now all handlers are
7152 * Simplified the prefilter code a bit. Now all handlers are
7134 expected to explicitly return a value (at least a blank string).
7153 expected to explicitly return a value (at least a blank string).
7135
7154
7136 * Heavy edits in ipplib. Removed the help system altogether. Now
7155 * Heavy edits in ipplib. Removed the help system altogether. Now
7137 obj?/?? is used for inspecting objects, a magic @doc prints
7156 obj?/?? is used for inspecting objects, a magic @doc prints
7138 docstrings, and full-blown Python help is accessed via the 'help'
7157 docstrings, and full-blown Python help is accessed via the 'help'
7139 keyword. This cleans up a lot of code (less to maintain) and does
7158 keyword. This cleans up a lot of code (less to maintain) and does
7140 the job. Since 'help' is now a standard Python component, might as
7159 the job. Since 'help' is now a standard Python component, might as
7141 well use it and remove duplicate functionality.
7160 well use it and remove duplicate functionality.
7142
7161
7143 Also removed the option to use ipplib as a standalone program. By
7162 Also removed the option to use ipplib as a standalone program. By
7144 now it's too dependent on other parts of IPython to function alone.
7163 now it's too dependent on other parts of IPython to function alone.
7145
7164
7146 * Fixed bug in genutils.pager. It would crash if the pager was
7165 * Fixed bug in genutils.pager. It would crash if the pager was
7147 exited immediately after opening (broken pipe).
7166 exited immediately after opening (broken pipe).
7148
7167
7149 * Trimmed down the VerboseTB reporting a little. The header is
7168 * Trimmed down the VerboseTB reporting a little. The header is
7150 much shorter now and the repeated exception arguments at the end
7169 much shorter now and the repeated exception arguments at the end
7151 have been removed. For interactive use the old header seemed a bit
7170 have been removed. For interactive use the old header seemed a bit
7152 excessive.
7171 excessive.
7153
7172
7154 * Fixed small bug in output of @whos for variables with multi-word
7173 * Fixed small bug in output of @whos for variables with multi-word
7155 types (only first word was displayed).
7174 types (only first word was displayed).
7156
7175
7157 2001-11-17 Fernando Perez <fperez@colorado.edu>
7176 2001-11-17 Fernando Perez <fperez@colorado.edu>
7158
7177
7159 * Version 0.1.10 released, 0.1.11 opened for further work.
7178 * Version 0.1.10 released, 0.1.11 opened for further work.
7160
7179
7161 * Modified dirs and friends. dirs now *returns* the stack (not
7180 * Modified dirs and friends. dirs now *returns* the stack (not
7162 prints), so one can manipulate it as a variable. Convenient to
7181 prints), so one can manipulate it as a variable. Convenient to
7163 travel along many directories.
7182 travel along many directories.
7164
7183
7165 * Fixed bug in magic_pdef: would only work with functions with
7184 * Fixed bug in magic_pdef: would only work with functions with
7166 arguments with default values.
7185 arguments with default values.
7167
7186
7168 2001-11-14 Fernando Perez <fperez@colorado.edu>
7187 2001-11-14 Fernando Perez <fperez@colorado.edu>
7169
7188
7170 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7189 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7171 example with IPython. Various other minor fixes and cleanups.
7190 example with IPython. Various other minor fixes and cleanups.
7172
7191
7173 * Version 0.1.9 released, 0.1.10 opened for further work.
7192 * Version 0.1.9 released, 0.1.10 opened for further work.
7174
7193
7175 * Added sys.path to the list of directories searched in the
7194 * Added sys.path to the list of directories searched in the
7176 execfile= option. It used to be the current directory and the
7195 execfile= option. It used to be the current directory and the
7177 user's IPYTHONDIR only.
7196 user's IPYTHONDIR only.
7178
7197
7179 2001-11-13 Fernando Perez <fperez@colorado.edu>
7198 2001-11-13 Fernando Perez <fperez@colorado.edu>
7180
7199
7181 * Reinstated the raw_input/prefilter separation that Janko had
7200 * Reinstated the raw_input/prefilter separation that Janko had
7182 initially. This gives a more convenient setup for extending the
7201 initially. This gives a more convenient setup for extending the
7183 pre-processor from the outside: raw_input always gets a string,
7202 pre-processor from the outside: raw_input always gets a string,
7184 and prefilter has to process it. We can then redefine prefilter
7203 and prefilter has to process it. We can then redefine prefilter
7185 from the outside and implement extensions for special
7204 from the outside and implement extensions for special
7186 purposes.
7205 purposes.
7187
7206
7188 Today I got one for inputting PhysicalQuantity objects
7207 Today I got one for inputting PhysicalQuantity objects
7189 (from Scientific) without needing any function calls at
7208 (from Scientific) without needing any function calls at
7190 all. Extremely convenient, and it's all done as a user-level
7209 all. Extremely convenient, and it's all done as a user-level
7191 extension (no IPython code was touched). Now instead of:
7210 extension (no IPython code was touched). Now instead of:
7192 a = PhysicalQuantity(4.2,'m/s**2')
7211 a = PhysicalQuantity(4.2,'m/s**2')
7193 one can simply say
7212 one can simply say
7194 a = 4.2 m/s**2
7213 a = 4.2 m/s**2
7195 or even
7214 or even
7196 a = 4.2 m/s^2
7215 a = 4.2 m/s^2
7197
7216
7198 I use this, but it's also a proof of concept: IPython really is
7217 I use this, but it's also a proof of concept: IPython really is
7199 fully user-extensible, even at the level of the parsing of the
7218 fully user-extensible, even at the level of the parsing of the
7200 command line. It's not trivial, but it's perfectly doable.
7219 command line. It's not trivial, but it's perfectly doable.
7201
7220
7202 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7221 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7203 the problem of modules being loaded in the inverse order in which
7222 the problem of modules being loaded in the inverse order in which
7204 they were defined in
7223 they were defined in
7205
7224
7206 * Version 0.1.8 released, 0.1.9 opened for further work.
7225 * Version 0.1.8 released, 0.1.9 opened for further work.
7207
7226
7208 * Added magics pdef, source and file. They respectively show the
7227 * Added magics pdef, source and file. They respectively show the
7209 definition line ('prototype' in C), source code and full python
7228 definition line ('prototype' in C), source code and full python
7210 file for any callable object. The object inspector oinfo uses
7229 file for any callable object. The object inspector oinfo uses
7211 these to show the same information.
7230 these to show the same information.
7212
7231
7213 * Version 0.1.7 released, 0.1.8 opened for further work.
7232 * Version 0.1.7 released, 0.1.8 opened for further work.
7214
7233
7215 * Separated all the magic functions into a class called Magic. The
7234 * Separated all the magic functions into a class called Magic. The
7216 InteractiveShell class was becoming too big for Xemacs to handle
7235 InteractiveShell class was becoming too big for Xemacs to handle
7217 (de-indenting a line would lock it up for 10 seconds while it
7236 (de-indenting a line would lock it up for 10 seconds while it
7218 backtracked on the whole class!)
7237 backtracked on the whole class!)
7219
7238
7220 FIXME: didn't work. It can be done, but right now namespaces are
7239 FIXME: didn't work. It can be done, but right now namespaces are
7221 all messed up. Do it later (reverted it for now, so at least
7240 all messed up. Do it later (reverted it for now, so at least
7222 everything works as before).
7241 everything works as before).
7223
7242
7224 * Got the object introspection system (magic_oinfo) working! I
7243 * Got the object introspection system (magic_oinfo) working! I
7225 think this is pretty much ready for release to Janko, so he can
7244 think this is pretty much ready for release to Janko, so he can
7226 test it for a while and then announce it. Pretty much 100% of what
7245 test it for a while and then announce it. Pretty much 100% of what
7227 I wanted for the 'phase 1' release is ready. Happy, tired.
7246 I wanted for the 'phase 1' release is ready. Happy, tired.
7228
7247
7229 2001-11-12 Fernando Perez <fperez@colorado.edu>
7248 2001-11-12 Fernando Perez <fperez@colorado.edu>
7230
7249
7231 * Version 0.1.6 released, 0.1.7 opened for further work.
7250 * Version 0.1.6 released, 0.1.7 opened for further work.
7232
7251
7233 * Fixed bug in printing: it used to test for truth before
7252 * Fixed bug in printing: it used to test for truth before
7234 printing, so 0 wouldn't print. Now checks for None.
7253 printing, so 0 wouldn't print. Now checks for None.
7235
7254
7236 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7255 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7237 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7256 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7238 reaches by hand into the outputcache. Think of a better way to do
7257 reaches by hand into the outputcache. Think of a better way to do
7239 this later.
7258 this later.
7240
7259
7241 * Various small fixes thanks to Nathan's comments.
7260 * Various small fixes thanks to Nathan's comments.
7242
7261
7243 * Changed magic_pprint to magic_Pprint. This way it doesn't
7262 * Changed magic_pprint to magic_Pprint. This way it doesn't
7244 collide with pprint() and the name is consistent with the command
7263 collide with pprint() and the name is consistent with the command
7245 line option.
7264 line option.
7246
7265
7247 * Changed prompt counter behavior to be fully like
7266 * Changed prompt counter behavior to be fully like
7248 Mathematica's. That is, even input that doesn't return a result
7267 Mathematica's. That is, even input that doesn't return a result
7249 raises the prompt counter. The old behavior was kind of confusing
7268 raises the prompt counter. The old behavior was kind of confusing
7250 (getting the same prompt number several times if the operation
7269 (getting the same prompt number several times if the operation
7251 didn't return a result).
7270 didn't return a result).
7252
7271
7253 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7272 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7254
7273
7255 * Fixed -Classic mode (wasn't working anymore).
7274 * Fixed -Classic mode (wasn't working anymore).
7256
7275
7257 * Added colored prompts using Nathan's new code. Colors are
7276 * Added colored prompts using Nathan's new code. Colors are
7258 currently hardwired, they can be user-configurable. For
7277 currently hardwired, they can be user-configurable. For
7259 developers, they can be chosen in file ipythonlib.py, at the
7278 developers, they can be chosen in file ipythonlib.py, at the
7260 beginning of the CachedOutput class def.
7279 beginning of the CachedOutput class def.
7261
7280
7262 2001-11-11 Fernando Perez <fperez@colorado.edu>
7281 2001-11-11 Fernando Perez <fperez@colorado.edu>
7263
7282
7264 * Version 0.1.5 released, 0.1.6 opened for further work.
7283 * Version 0.1.5 released, 0.1.6 opened for further work.
7265
7284
7266 * Changed magic_env to *return* the environment as a dict (not to
7285 * Changed magic_env to *return* the environment as a dict (not to
7267 print it). This way it prints, but it can also be processed.
7286 print it). This way it prints, but it can also be processed.
7268
7287
7269 * Added Verbose exception reporting to interactive
7288 * Added Verbose exception reporting to interactive
7270 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7289 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7271 traceback. Had to make some changes to the ultraTB file. This is
7290 traceback. Had to make some changes to the ultraTB file. This is
7272 probably the last 'big' thing in my mental todo list. This ties
7291 probably the last 'big' thing in my mental todo list. This ties
7273 in with the next entry:
7292 in with the next entry:
7274
7293
7275 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7294 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7276 has to specify is Plain, Color or Verbose for all exception
7295 has to specify is Plain, Color or Verbose for all exception
7277 handling.
7296 handling.
7278
7297
7279 * Removed ShellServices option. All this can really be done via
7298 * Removed ShellServices option. All this can really be done via
7280 the magic system. It's easier to extend, cleaner and has automatic
7299 the magic system. It's easier to extend, cleaner and has automatic
7281 namespace protection and documentation.
7300 namespace protection and documentation.
7282
7301
7283 2001-11-09 Fernando Perez <fperez@colorado.edu>
7302 2001-11-09 Fernando Perez <fperez@colorado.edu>
7284
7303
7285 * Fixed bug in output cache flushing (missing parameter to
7304 * Fixed bug in output cache flushing (missing parameter to
7286 __init__). Other small bugs fixed (found using pychecker).
7305 __init__). Other small bugs fixed (found using pychecker).
7287
7306
7288 * Version 0.1.4 opened for bugfixing.
7307 * Version 0.1.4 opened for bugfixing.
7289
7308
7290 2001-11-07 Fernando Perez <fperez@colorado.edu>
7309 2001-11-07 Fernando Perez <fperez@colorado.edu>
7291
7310
7292 * Version 0.1.3 released, mainly because of the raw_input bug.
7311 * Version 0.1.3 released, mainly because of the raw_input bug.
7293
7312
7294 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7313 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7295 and when testing for whether things were callable, a call could
7314 and when testing for whether things were callable, a call could
7296 actually be made to certain functions. They would get called again
7315 actually be made to certain functions. They would get called again
7297 once 'really' executed, with a resulting double call. A disaster
7316 once 'really' executed, with a resulting double call. A disaster
7298 in many cases (list.reverse() would never work!).
7317 in many cases (list.reverse() would never work!).
7299
7318
7300 * Removed prefilter() function, moved its code to raw_input (which
7319 * Removed prefilter() function, moved its code to raw_input (which
7301 after all was just a near-empty caller for prefilter). This saves
7320 after all was just a near-empty caller for prefilter). This saves
7302 a function call on every prompt, and simplifies the class a tiny bit.
7321 a function call on every prompt, and simplifies the class a tiny bit.
7303
7322
7304 * Fix _ip to __ip name in magic example file.
7323 * Fix _ip to __ip name in magic example file.
7305
7324
7306 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7325 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7307 work with non-gnu versions of tar.
7326 work with non-gnu versions of tar.
7308
7327
7309 2001-11-06 Fernando Perez <fperez@colorado.edu>
7328 2001-11-06 Fernando Perez <fperez@colorado.edu>
7310
7329
7311 * Version 0.1.2. Just to keep track of the recent changes.
7330 * Version 0.1.2. Just to keep track of the recent changes.
7312
7331
7313 * Fixed nasty bug in output prompt routine. It used to check 'if
7332 * Fixed nasty bug in output prompt routine. It used to check 'if
7314 arg != None...'. Problem is, this fails if arg implements a
7333 arg != None...'. Problem is, this fails if arg implements a
7315 special comparison (__cmp__) which disallows comparing to
7334 special comparison (__cmp__) which disallows comparing to
7316 None. Found it when trying to use the PhysicalQuantity module from
7335 None. Found it when trying to use the PhysicalQuantity module from
7317 ScientificPython.
7336 ScientificPython.
7318
7337
7319 2001-11-05 Fernando Perez <fperez@colorado.edu>
7338 2001-11-05 Fernando Perez <fperez@colorado.edu>
7320
7339
7321 * Also added dirs. Now the pushd/popd/dirs family functions
7340 * Also added dirs. Now the pushd/popd/dirs family functions
7322 basically like the shell, with the added convenience of going home
7341 basically like the shell, with the added convenience of going home
7323 when called with no args.
7342 when called with no args.
7324
7343
7325 * pushd/popd slightly modified to mimic shell behavior more
7344 * pushd/popd slightly modified to mimic shell behavior more
7326 closely.
7345 closely.
7327
7346
7328 * Added env,pushd,popd from ShellServices as magic functions. I
7347 * Added env,pushd,popd from ShellServices as magic functions. I
7329 think the cleanest will be to port all desired functions from
7348 think the cleanest will be to port all desired functions from
7330 ShellServices as magics and remove ShellServices altogether. This
7349 ShellServices as magics and remove ShellServices altogether. This
7331 will provide a single, clean way of adding functionality
7350 will provide a single, clean way of adding functionality
7332 (shell-type or otherwise) to IP.
7351 (shell-type or otherwise) to IP.
7333
7352
7334 2001-11-04 Fernando Perez <fperez@colorado.edu>
7353 2001-11-04 Fernando Perez <fperez@colorado.edu>
7335
7354
7336 * Added .ipython/ directory to sys.path. This way users can keep
7355 * Added .ipython/ directory to sys.path. This way users can keep
7337 customizations there and access them via import.
7356 customizations there and access them via import.
7338
7357
7339 2001-11-03 Fernando Perez <fperez@colorado.edu>
7358 2001-11-03 Fernando Perez <fperez@colorado.edu>
7340
7359
7341 * Opened version 0.1.1 for new changes.
7360 * Opened version 0.1.1 for new changes.
7342
7361
7343 * Changed version number to 0.1.0: first 'public' release, sent to
7362 * Changed version number to 0.1.0: first 'public' release, sent to
7344 Nathan and Janko.
7363 Nathan and Janko.
7345
7364
7346 * Lots of small fixes and tweaks.
7365 * Lots of small fixes and tweaks.
7347
7366
7348 * Minor changes to whos format. Now strings are shown, snipped if
7367 * Minor changes to whos format. Now strings are shown, snipped if
7349 too long.
7368 too long.
7350
7369
7351 * Changed ShellServices to work on __main__ so they show up in @who
7370 * Changed ShellServices to work on __main__ so they show up in @who
7352
7371
7353 * Help also works with ? at the end of a line:
7372 * Help also works with ? at the end of a line:
7354 ?sin and sin?
7373 ?sin and sin?
7355 both produce the same effect. This is nice, as often I use the
7374 both produce the same effect. This is nice, as often I use the
7356 tab-complete to find the name of a method, but I used to then have
7375 tab-complete to find the name of a method, but I used to then have
7357 to go to the beginning of the line to put a ? if I wanted more
7376 to go to the beginning of the line to put a ? if I wanted more
7358 info. Now I can just add the ? and hit return. Convenient.
7377 info. Now I can just add the ? and hit return. Convenient.
7359
7378
7360 2001-11-02 Fernando Perez <fperez@colorado.edu>
7379 2001-11-02 Fernando Perez <fperez@colorado.edu>
7361
7380
7362 * Python version check (>=2.1) added.
7381 * Python version check (>=2.1) added.
7363
7382
7364 * Added LazyPython documentation. At this point the docs are quite
7383 * Added LazyPython documentation. At this point the docs are quite
7365 a mess. A cleanup is in order.
7384 a mess. A cleanup is in order.
7366
7385
7367 * Auto-installer created. For some bizarre reason, the zipfiles
7386 * Auto-installer created. For some bizarre reason, the zipfiles
7368 module isn't working on my system. So I made a tar version
7387 module isn't working on my system. So I made a tar version
7369 (hopefully the command line options in various systems won't kill
7388 (hopefully the command line options in various systems won't kill
7370 me).
7389 me).
7371
7390
7372 * Fixes to Struct in genutils. Now all dictionary-like methods are
7391 * Fixes to Struct in genutils. Now all dictionary-like methods are
7373 protected (reasonably).
7392 protected (reasonably).
7374
7393
7375 * Added pager function to genutils and changed ? to print usage
7394 * Added pager function to genutils and changed ? to print usage
7376 note through it (it was too long).
7395 note through it (it was too long).
7377
7396
7378 * Added the LazyPython functionality. Works great! I changed the
7397 * Added the LazyPython functionality. Works great! I changed the
7379 auto-quote escape to ';', it's on home row and next to '. But
7398 auto-quote escape to ';', it's on home row and next to '. But
7380 both auto-quote and auto-paren (still /) escapes are command-line
7399 both auto-quote and auto-paren (still /) escapes are command-line
7381 parameters.
7400 parameters.
7382
7401
7383
7402
7384 2001-11-01 Fernando Perez <fperez@colorado.edu>
7403 2001-11-01 Fernando Perez <fperez@colorado.edu>
7385
7404
7386 * Version changed to 0.0.7. Fairly large change: configuration now
7405 * Version changed to 0.0.7. Fairly large change: configuration now
7387 is all stored in a directory, by default .ipython. There, all
7406 is all stored in a directory, by default .ipython. There, all
7388 config files have normal looking names (not .names)
7407 config files have normal looking names (not .names)
7389
7408
7390 * Version 0.0.6 Released first to Lucas and Archie as a test
7409 * Version 0.0.6 Released first to Lucas and Archie as a test
7391 run. Since it's the first 'semi-public' release, change version to
7410 run. Since it's the first 'semi-public' release, change version to
7392 > 0.0.6 for any changes now.
7411 > 0.0.6 for any changes now.
7393
7412
7394 * Stuff I had put in the ipplib.py changelog:
7413 * Stuff I had put in the ipplib.py changelog:
7395
7414
7396 Changes to InteractiveShell:
7415 Changes to InteractiveShell:
7397
7416
7398 - Made the usage message a parameter.
7417 - Made the usage message a parameter.
7399
7418
7400 - Require the name of the shell variable to be given. It's a bit
7419 - Require the name of the shell variable to be given. It's a bit
7401 of a hack, but allows the name 'shell' not to be hardwired in the
7420 of a hack, but allows the name 'shell' not to be hardwired in the
7402 magic (@) handler, which is problematic b/c it requires
7421 magic (@) handler, which is problematic b/c it requires
7403 polluting the global namespace with 'shell'. This in turn is
7422 polluting the global namespace with 'shell'. This in turn is
7404 fragile: if a user redefines a variable called shell, things
7423 fragile: if a user redefines a variable called shell, things
7405 break.
7424 break.
7406
7425
7407 - magic @: all functions available through @ need to be defined
7426 - magic @: all functions available through @ need to be defined
7408 as magic_<name>, even though they can be called simply as
7427 as magic_<name>, even though they can be called simply as
7409 @<name>. This allows the special command @magic to gather
7428 @<name>. This allows the special command @magic to gather
7410 information automatically about all existing magic functions,
7429 information automatically about all existing magic functions,
7411 even if they are run-time user extensions, by parsing the shell
7430 even if they are run-time user extensions, by parsing the shell
7412 instance __dict__ looking for special magic_ names.
7431 instance __dict__ looking for special magic_ names.
7413
7432
7414 - mainloop: added *two* local namespace parameters. This allows
7433 - mainloop: added *two* local namespace parameters. This allows
7415 the class to differentiate between parameters which were there
7434 the class to differentiate between parameters which were there
7416 before and after command line initialization was processed. This
7435 before and after command line initialization was processed. This
7417 way, later @who can show things loaded at startup by the
7436 way, later @who can show things loaded at startup by the
7418 user. This trick was necessary to make session saving/reloading
7437 user. This trick was necessary to make session saving/reloading
7419 really work: ideally after saving/exiting/reloading a session,
7438 really work: ideally after saving/exiting/reloading a session,
7420 *everything* should look the same, including the output of @who. I
7439 *everything* should look the same, including the output of @who. I
7421 was only able to make this work with this double namespace
7440 was only able to make this work with this double namespace
7422 trick.
7441 trick.
7423
7442
7424 - added a header to the logfile which allows (almost) full
7443 - added a header to the logfile which allows (almost) full
7425 session restoring.
7444 session restoring.
7426
7445
7427 - prepend lines beginning with @ or !, with a and log
7446 - prepend lines beginning with @ or !, with a and log
7428 them. Why? !lines: may be useful to know what you did @lines:
7447 them. Why? !lines: may be useful to know what you did @lines:
7429 they may affect session state. So when restoring a session, at
7448 they may affect session state. So when restoring a session, at
7430 least inform the user of their presence. I couldn't quite get
7449 least inform the user of their presence. I couldn't quite get
7431 them to properly re-execute, but at least the user is warned.
7450 them to properly re-execute, but at least the user is warned.
7432
7451
7433 * Started ChangeLog.
7452 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now