##// END OF EJS Templates
readline.get_endidx is configurable, for emacs users
vivainio -
Show More
@@ -0,0 +1,37 b''
1 """
2 comp
3 """
4
5 # The prefilter always ends in a call to some self.handle_X method. We swap
6 # all of those out so that we can capture which one was called.
7
8 import sys
9 sys.path.append('..')
10 import IPython
11 import IPython.ipapi
12
13 IPython.Shell.start()
14
15 ip = IPython.ipapi.get()
16
17 completer = ip.IP.Completer
18
19 print completer
20
21 def do_test(text, line):
22 def get_endix():
23 idx = len(line) -1
24 print "Call endidx =>",idx
25 return idx
26 def get_line_buffer():
27 print "Lbuf =>",line
28 return line
29 completer.get_line_buffer = get_line_buffer
30 completer.get_endidx = get_endix
31 l = completer.all_completions(text)
32 return l
33
34 l = do_test ('p', 'print p')
35 assert 'pow' in l
36 l = do_test ('p', 'import p')
37 assert 'pprint' in l No newline at end of file
@@ -1,640 +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.omit__names = omit__names
251 self.omit__names = omit__names
251 self.merge_completions = shell.rc.readline_merge_completions
252 self.merge_completions = shell.rc.readline_merge_completions
252 if alias_table is None:
253 if alias_table is None:
253 alias_table = {}
254 alias_table = {}
254 self.alias_table = alias_table
255 self.alias_table = alias_table
255 # Regexp to split filenames with spaces in them
256 # Regexp to split filenames with spaces in them
256 self.space_name_re = re.compile(r'([^\\] )')
257 self.space_name_re = re.compile(r'([^\\] )')
257 # Hold a local ref. to glob.glob for speed
258 # Hold a local ref. to glob.glob for speed
258 self.glob = glob.glob
259 self.glob = glob.glob
259
260
260 # Determine if we are running on 'dumb' terminals, like (X)Emacs
261 # Determine if we are running on 'dumb' terminals, like (X)Emacs
261 # buffers, to avoid completion problems.
262 # buffers, to avoid completion problems.
262 term = os.environ.get('TERM','xterm')
263 term = os.environ.get('TERM','xterm')
263 self.dumb_terminal = term in ['dumb','emacs']
264 self.dumb_terminal = term in ['dumb','emacs']
264
265
265 # Special handling of backslashes needed in win32 platforms
266 # Special handling of backslashes needed in win32 platforms
266 if sys.platform == "win32":
267 if sys.platform == "win32":
267 self.clean_glob = self._clean_glob_win32
268 self.clean_glob = self._clean_glob_win32
268 else:
269 else:
269 self.clean_glob = self._clean_glob
270 self.clean_glob = self._clean_glob
270 self.matchers = [self.python_matches,
271 self.matchers = [self.python_matches,
271 self.file_matches,
272 self.file_matches,
272 self.alias_matches,
273 self.alias_matches,
273 self.python_func_kw_matches]
274 self.python_func_kw_matches]
274
275
276
275 # Code contributed by Alex Schmolck, for ipython/emacs integration
277 # Code contributed by Alex Schmolck, for ipython/emacs integration
276 def all_completions(self, text):
278 def all_completions(self, text):
277 """Return all possible completions for the benefit of emacs."""
279 """Return all possible completions for the benefit of emacs."""
278
280
279 completions = []
281 completions = []
280 comp_append = completions.append
282 comp_append = completions.append
281 try:
283 try:
282 for i in xrange(sys.maxint):
284 for i in xrange(sys.maxint):
283 res = self.complete(text, i)
285 res = self.complete(text, i)
284
286
285 if not res: break
287 if not res: break
286
288
287 comp_append(res)
289 comp_append(res)
288 #XXX workaround for ``notDefined.<tab>``
290 #XXX workaround for ``notDefined.<tab>``
289 except NameError:
291 except NameError:
290 pass
292 pass
291 return completions
293 return completions
292 # /end Alex Schmolck code.
294 # /end Alex Schmolck code.
293
295
294 def _clean_glob(self,text):
296 def _clean_glob(self,text):
295 return self.glob("%s*" % text)
297 return self.glob("%s*" % text)
296
298
297 def _clean_glob_win32(self,text):
299 def _clean_glob_win32(self,text):
298 return [f.replace("\\","/")
300 return [f.replace("\\","/")
299 for f in self.glob("%s*" % text)]
301 for f in self.glob("%s*" % text)]
300
302
301 def file_matches(self, text):
303 def file_matches(self, text):
302 """Match filenames, expanding ~USER type strings.
304 """Match filenames, expanding ~USER type strings.
303
305
304 Most of the seemingly convoluted logic in this completer is an
306 Most of the seemingly convoluted logic in this completer is an
305 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
306 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
307 GNU readline details needed for this to be done correctly.
309 GNU readline details needed for this to be done correctly.
308
310
309 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
310 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
311 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
312 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
313 better."""
315 better."""
314
316
315 #print 'Completer->file_matches: <%s>' % text # dbg
317 #print 'Completer->file_matches: <%s>' % text # dbg
316
318
317 # chars that require escaping with backslash - i.e. chars
319 # chars that require escaping with backslash - i.e. chars
318 # that readline treats incorrectly as delimiters, but we
320 # that readline treats incorrectly as delimiters, but we
319 # don't want to treat as delimiters in filename matching
321 # don't want to treat as delimiters in filename matching
320 # when escaped with backslash
322 # when escaped with backslash
321
323
322 protectables = ' ()[]{}'
324 protectables = ' ()[]{}'
323
325
324 if text.startswith('!'):
326 if text.startswith('!'):
325 text = text[1:]
327 text = text[1:]
326 text_prefix = '!'
328 text_prefix = '!'
327 else:
329 else:
328 text_prefix = ''
330 text_prefix = ''
329
331
330 def protect_filename(s):
332 def protect_filename(s):
331 return "".join([(ch in protectables and '\\' + ch or ch)
333 return "".join([(ch in protectables and '\\' + ch or ch)
332 for ch in s])
334 for ch in s])
333
335
334 def single_dir_expand(matches):
336 def single_dir_expand(matches):
335 "Recursively expand match lists containing a single dir."
337 "Recursively expand match lists containing a single dir."
336
338
337 if len(matches) == 1 and os.path.isdir(matches[0]):
339 if len(matches) == 1 and os.path.isdir(matches[0]):
338 # Takes care of links to directories also. Use '/'
340 # Takes care of links to directories also. Use '/'
339 # explicitly, even under Windows, so that name completions
341 # explicitly, even under Windows, so that name completions
340 # don't end up escaped.
342 # don't end up escaped.
341 d = matches[0]
343 d = matches[0]
342 if d[-1] in ['/','\\']:
344 if d[-1] in ['/','\\']:
343 d = d[:-1]
345 d = d[:-1]
344
346
345 subdirs = os.listdir(d)
347 subdirs = os.listdir(d)
346 if subdirs:
348 if subdirs:
347 matches = [ (d + '/' + p) for p in subdirs]
349 matches = [ (d + '/' + p) for p in subdirs]
348 return single_dir_expand(matches)
350 return single_dir_expand(matches)
349 else:
351 else:
350 return matches
352 return matches
351 else:
353 else:
352 return matches
354 return matches
353
355
354 lbuf = self.lbuf
356 lbuf = self.lbuf
355 open_quotes = 0 # track strings with open quotes
357 open_quotes = 0 # track strings with open quotes
356 try:
358 try:
357 lsplit = shlex.split(lbuf)[-1]
359 lsplit = shlex.split(lbuf)[-1]
358 except ValueError:
360 except ValueError:
359 # typically an unmatched ", or backslash without escaped char.
361 # typically an unmatched ", or backslash without escaped char.
360 if lbuf.count('"')==1:
362 if lbuf.count('"')==1:
361 open_quotes = 1
363 open_quotes = 1
362 lsplit = lbuf.split('"')[-1]
364 lsplit = lbuf.split('"')[-1]
363 elif lbuf.count("'")==1:
365 elif lbuf.count("'")==1:
364 open_quotes = 1
366 open_quotes = 1
365 lsplit = lbuf.split("'")[-1]
367 lsplit = lbuf.split("'")[-1]
366 else:
368 else:
367 return []
369 return []
368 except IndexError:
370 except IndexError:
369 # tab pressed on empty line
371 # tab pressed on empty line
370 lsplit = ""
372 lsplit = ""
371
373
372 if lsplit != protect_filename(lsplit):
374 if lsplit != protect_filename(lsplit):
373 # if protectables are found, do matching on the whole escaped
375 # if protectables are found, do matching on the whole escaped
374 # name
376 # name
375 has_protectables = 1
377 has_protectables = 1
376 text0,text = text,lsplit
378 text0,text = text,lsplit
377 else:
379 else:
378 has_protectables = 0
380 has_protectables = 0
379 text = os.path.expanduser(text)
381 text = os.path.expanduser(text)
380
382
381 if text == "":
383 if text == "":
382 return [text_prefix + protect_filename(f) for f in self.glob("*")]
384 return [text_prefix + protect_filename(f) for f in self.glob("*")]
383
385
384 m0 = self.clean_glob(text.replace('\\',''))
386 m0 = self.clean_glob(text.replace('\\',''))
385 if has_protectables:
387 if has_protectables:
386 # 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
387 # 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
388 # of the filename we have so far
390 # of the filename we have so far
389 len_lsplit = len(lsplit)
391 len_lsplit = len(lsplit)
390 matches = [text_prefix + text0 +
392 matches = [text_prefix + text0 +
391 protect_filename(f[len_lsplit:]) for f in m0]
393 protect_filename(f[len_lsplit:]) for f in m0]
392 else:
394 else:
393 if open_quotes:
395 if open_quotes:
394 # 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
395 # protect the names at all (and we _shouldn't_, as it
397 # protect the names at all (and we _shouldn't_, as it
396 # would cause bugs when the filesystem call is made).
398 # would cause bugs when the filesystem call is made).
397 matches = m0
399 matches = m0
398 else:
400 else:
399 matches = [text_prefix +
401 matches = [text_prefix +
400 protect_filename(f) for f in m0]
402 protect_filename(f) for f in m0]
401
403
402 #print 'mm',matches # dbg
404 #print 'mm',matches # dbg
403 return single_dir_expand(matches)
405 return single_dir_expand(matches)
404
406
405 def alias_matches(self, text):
407 def alias_matches(self, text):
406 """Match internal system aliases"""
408 """Match internal system aliases"""
407 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
409 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
408
410
409 # if we are not in the first 'item', alias matching
411 # if we are not in the first 'item', alias matching
410 # doesn't make sense - unless we are starting with 'sudo' command.
412 # doesn't make sense - unless we are starting with 'sudo' command.
411 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'):
412 return []
414 return []
413 text = os.path.expanduser(text)
415 text = os.path.expanduser(text)
414 aliases = self.alias_table.keys()
416 aliases = self.alias_table.keys()
415 if text == "":
417 if text == "":
416 return aliases
418 return aliases
417 else:
419 else:
418 return [alias for alias in aliases if alias.startswith(text)]
420 return [alias for alias in aliases if alias.startswith(text)]
419
421
420 def python_matches(self,text):
422 def python_matches(self,text):
421 """Match attributes or global python names"""
423 """Match attributes or global python names"""
422
424
423 #print 'Completer->python_matches, txt=<%s>' % text # dbg
425 #print 'Completer->python_matches, txt=<%s>' % text # dbg
424 if "." in text:
426 if "." in text:
425 try:
427 try:
426 matches = self.attr_matches(text)
428 matches = self.attr_matches(text)
427 if text.endswith('.') and self.omit__names:
429 if text.endswith('.') and self.omit__names:
428 if self.omit__names == 1:
430 if self.omit__names == 1:
429 # true if txt is _not_ a __ name, false otherwise:
431 # true if txt is _not_ a __ name, false otherwise:
430 no__name = (lambda txt:
432 no__name = (lambda txt:
431 re.match(r'.*\.__.*?__',txt) is None)
433 re.match(r'.*\.__.*?__',txt) is None)
432 else:
434 else:
433 # true if txt is _not_ a _ name, false otherwise:
435 # true if txt is _not_ a _ name, false otherwise:
434 no__name = (lambda txt:
436 no__name = (lambda txt:
435 re.match(r'.*\._.*?',txt) is None)
437 re.match(r'.*\._.*?',txt) is None)
436 matches = filter(no__name, matches)
438 matches = filter(no__name, matches)
437 except NameError:
439 except NameError:
438 # catches <undefined attributes>.<tab>
440 # catches <undefined attributes>.<tab>
439 matches = []
441 matches = []
440 else:
442 else:
441 matches = self.global_matches(text)
443 matches = self.global_matches(text)
442 # this is so completion finds magics when automagic is on:
444 # this is so completion finds magics when automagic is on:
443 if (matches == [] and
445 if (matches == [] and
444 not text.startswith(os.sep) and
446 not text.startswith(os.sep) and
445 not ' ' in self.lbuf):
447 not ' ' in self.lbuf):
446 matches = self.attr_matches(self.magic_prefix+text)
448 matches = self.attr_matches(self.magic_prefix+text)
447 return matches
449 return matches
448
450
449 def _default_arguments(self, obj):
451 def _default_arguments(self, obj):
450 """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,
451 or empty list otherwise."""
453 or empty list otherwise."""
452
454
453 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
455 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
454 # for classes, check for __init__,__new__
456 # for classes, check for __init__,__new__
455 if inspect.isclass(obj):
457 if inspect.isclass(obj):
456 obj = (getattr(obj,'__init__',None) or
458 obj = (getattr(obj,'__init__',None) or
457 getattr(obj,'__new__',None))
459 getattr(obj,'__new__',None))
458 # for all others, check if they are __call__able
460 # for all others, check if they are __call__able
459 elif hasattr(obj, '__call__'):
461 elif hasattr(obj, '__call__'):
460 obj = obj.__call__
462 obj = obj.__call__
461 # XXX: is there a way to handle the builtins ?
463 # XXX: is there a way to handle the builtins ?
462 try:
464 try:
463 args,_,_1,defaults = inspect.getargspec(obj)
465 args,_,_1,defaults = inspect.getargspec(obj)
464 if defaults:
466 if defaults:
465 return args[-len(defaults):]
467 return args[-len(defaults):]
466 except TypeError: pass
468 except TypeError: pass
467 return []
469 return []
468
470
469 def python_func_kw_matches(self,text):
471 def python_func_kw_matches(self,text):
470 """Match named parameters (kwargs) of the last open function"""
472 """Match named parameters (kwargs) of the last open function"""
471
473
472 if "." in text: # a parameter cannot be dotted
474 if "." in text: # a parameter cannot be dotted
473 return []
475 return []
474 try: regexp = self.__funcParamsRegex
476 try: regexp = self.__funcParamsRegex
475 except AttributeError:
477 except AttributeError:
476 regexp = self.__funcParamsRegex = re.compile(r'''
478 regexp = self.__funcParamsRegex = re.compile(r'''
477 '.*?' | # single quoted strings or
479 '.*?' | # single quoted strings or
478 ".*?" | # double quoted strings or
480 ".*?" | # double quoted strings or
479 \w+ | # identifier
481 \w+ | # identifier
480 \S # other characters
482 \S # other characters
481 ''', re.VERBOSE | re.DOTALL)
483 ''', re.VERBOSE | re.DOTALL)
482 # 1. find the nearest identifier that comes before an unclosed
484 # 1. find the nearest identifier that comes before an unclosed
483 # 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"
484 tokens = regexp.findall(self.get_line_buffer())
486 tokens = regexp.findall(self.get_line_buffer())
485 tokens.reverse()
487 tokens.reverse()
486 iterTokens = iter(tokens); openPar = 0
488 iterTokens = iter(tokens); openPar = 0
487 for token in iterTokens:
489 for token in iterTokens:
488 if token == ')':
490 if token == ')':
489 openPar -= 1
491 openPar -= 1
490 elif token == '(':
492 elif token == '(':
491 openPar += 1
493 openPar += 1
492 if openPar > 0:
494 if openPar > 0:
493 # found the last unclosed parenthesis
495 # found the last unclosed parenthesis
494 break
496 break
495 else:
497 else:
496 return []
498 return []
497 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
499 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
498 ids = []
500 ids = []
499 isId = re.compile(r'\w+$').match
501 isId = re.compile(r'\w+$').match
500 while True:
502 while True:
501 try:
503 try:
502 ids.append(iterTokens.next())
504 ids.append(iterTokens.next())
503 if not isId(ids[-1]):
505 if not isId(ids[-1]):
504 ids.pop(); break
506 ids.pop(); break
505 if not iterTokens.next() == '.':
507 if not iterTokens.next() == '.':
506 break
508 break
507 except StopIteration:
509 except StopIteration:
508 break
510 break
509 # lookup the candidate callable matches either using global_matches
511 # lookup the candidate callable matches either using global_matches
510 # or attr_matches for dotted names
512 # or attr_matches for dotted names
511 if len(ids) == 1:
513 if len(ids) == 1:
512 callableMatches = self.global_matches(ids[0])
514 callableMatches = self.global_matches(ids[0])
513 else:
515 else:
514 callableMatches = self.attr_matches('.'.join(ids[::-1]))
516 callableMatches = self.attr_matches('.'.join(ids[::-1]))
515 argMatches = []
517 argMatches = []
516 for callableMatch in callableMatches:
518 for callableMatch in callableMatches:
517 try: namedArgs = self._default_arguments(eval(callableMatch,
519 try: namedArgs = self._default_arguments(eval(callableMatch,
518 self.namespace))
520 self.namespace))
519 except: continue
521 except: continue
520 for namedArg in namedArgs:
522 for namedArg in namedArgs:
521 if namedArg.startswith(text):
523 if namedArg.startswith(text):
522 argMatches.append("%s=" %namedArg)
524 argMatches.append("%s=" %namedArg)
523 return argMatches
525 return argMatches
524
526
525 def dispatch_custom_completer(self,text):
527 def dispatch_custom_completer(self,text):
526 #print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
528 #print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
527 line = self.full_lbuf
529 line = self.full_lbuf
528 if not line.strip():
530 if not line.strip():
529 return None
531 return None
530
532
531 event = Struct()
533 event = Struct()
532 event.line = line
534 event.line = line
533 event.symbol = text
535 event.symbol = text
534 cmd = line.split(None,1)[0]
536 cmd = line.split(None,1)[0]
535 event.command = cmd
537 event.command = cmd
536 #print "\ncustom:{%s]\n" % event # dbg
538 #print "\ncustom:{%s]\n" % event # dbg
537
539
538 # for foo etc, try also to find completer for %foo
540 # for foo etc, try also to find completer for %foo
539 if not cmd.startswith(self.magic_escape):
541 if not cmd.startswith(self.magic_escape):
540 try_magic = self.custom_completers.s_matches(
542 try_magic = self.custom_completers.s_matches(
541 self.magic_escape + cmd)
543 self.magic_escape + cmd)
542 else:
544 else:
543 try_magic = []
545 try_magic = []
544
546
545
547
546 for c in itertools.chain(
548 for c in itertools.chain(
547 self.custom_completers.s_matches(cmd),
549 self.custom_completers.s_matches(cmd),
548 try_magic,
550 try_magic,
549 self.custom_completers.flat_matches(self.lbuf)):
551 self.custom_completers.flat_matches(self.lbuf)):
550 #print "try",c # dbg
552 #print "try",c # dbg
551 try:
553 try:
552 res = c(event)
554 res = c(event)
553 # first, try case sensitive match
555 # first, try case sensitive match
554 withcase = [r for r in res if r.startswith(text)]
556 withcase = [r for r in res if r.startswith(text)]
555 if withcase:
557 if withcase:
556 return withcase
558 return withcase
557 # if none, then case insensitive ones are ok too
559 # if none, then case insensitive ones are ok too
558 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())]
559 except ipapi.TryNext:
561 except ipapi.TryNext:
560 pass
562 pass
561
563
562 return None
564 return None
563
565
564
565 def complete(self, text, state,line_buffer=None):
566 def complete(self, text, state,line_buffer=None):
566 """Return the next possible completion for 'text'.
567 """Return the next possible completion for 'text'.
567
568
568 This is called successively with state == 0, 1, 2, ... until it
569 This is called successively with state == 0, 1, 2, ... until it
569 returns None. The completion should begin with 'text'.
570 returns None. The completion should begin with 'text'.
570
571
571 :Keywords:
572 :Keywords:
572 - line_buffer: string
573 - line_buffer: string
573 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
574 via readline. This keyword allows clients which are requesting for
575 via readline. This keyword allows clients which are requesting for
575 text completions in non-readline contexts to inform the completer of
576 text completions in non-readline contexts to inform the completer of
576 the entire text.
577 the entire text.
577 """
578 """
578
579
579 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
580 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
580
581
581 # 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
582 # of the mostly useless 'do you want to see all million
583 # of the mostly useless 'do you want to see all million
583 # completions' message, just do the right thing and give the user
584 # completions' message, just do the right thing and give the user
584 # his tab! Incidentally, this enables pasting of tabbed text from
585 # his tab! Incidentally, this enables pasting of tabbed text from
585 # an editor (as long as autoindent is off).
586 # an editor (as long as autoindent is off).
586
587
588 # It should be noted that at least pyreadline still shows
589 # file completions - is there a way around it?
590
587 # 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
588 # don't interfere with their own tab-completion mechanism.
592 # don't interfere with their own tab-completion mechanism.
589 if line_buffer is None:
593 if line_buffer is None:
590 self.full_lbuf = self.get_line_buffer()
594 self.full_lbuf = self.get_line_buffer()
591 else:
595 else:
592 self.full_lbuf = line_buffer
596 self.full_lbuf = line_buffer
593
597
594 if not (self.dumb_terminal or self.full_lbuf.strip()):
598 if not (self.dumb_terminal or self.full_lbuf.strip()):
595 self.readline.insert_text('\t')
599 self.readline.insert_text('\t')
596 return None
600 return None
597
601
598 magic_escape = self.magic_escape
602 magic_escape = self.magic_escape
599 magic_prefix = self.magic_prefix
603 magic_prefix = self.magic_prefix
600
604
601 self.lbuf = self.full_lbuf[:self.readline.get_endidx()]
605 self.lbuf = self.full_lbuf[:self.get_endidx()]
602
606
603 try:
607 try:
604 if text.startswith(magic_escape):
608 if text.startswith(magic_escape):
605 text = text.replace(magic_escape,magic_prefix)
609 text = text.replace(magic_escape,magic_prefix)
606 elif text.startswith('~'):
610 elif text.startswith('~'):
607 text = os.path.expanduser(text)
611 text = os.path.expanduser(text)
608 if state == 0:
612 if state == 0:
609 custom_res = self.dispatch_custom_completer(text)
613 custom_res = self.dispatch_custom_completer(text)
610 if custom_res is not None:
614 if custom_res is not None:
611 # did custom completers produce something?
615 # did custom completers produce something?
612 self.matches = custom_res
616 self.matches = custom_res
613 else:
617 else:
614 # Extend the list of completions with the results of each
618 # Extend the list of completions with the results of each
615 # matcher, so we return results to the user from all
619 # matcher, so we return results to the user from all
616 # namespaces.
620 # namespaces.
617 if self.merge_completions:
621 if self.merge_completions:
618 self.matches = []
622 self.matches = []
619 for matcher in self.matchers:
623 for matcher in self.matchers:
620 self.matches.extend(matcher(text))
624 self.matches.extend(matcher(text))
621 else:
625 else:
622 for matcher in self.matchers:
626 for matcher in self.matchers:
623 self.matches = matcher(text)
627 self.matches = matcher(text)
624 if self.matches:
628 if self.matches:
625 break
629 break
626 def uniq(alist):
630 def uniq(alist):
627 set = {}
631 set = {}
628 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]
629 self.matches = uniq(self.matches)
633 self.matches = uniq(self.matches)
630 try:
634 try:
631 ret = self.matches[state].replace(magic_prefix,magic_escape)
635 ret = self.matches[state].replace(magic_prefix,magic_escape)
632 return ret
636 return ret
633 except IndexError:
637 except IndexError:
634 return None
638 return None
635 except:
639 except:
636 #from IPython.ultraTB import AutoFormattedTB; # dbg
640 #from IPython.ultraTB import AutoFormattedTB; # dbg
637 #tb=AutoFormattedTB('Verbose');tb() #dbg
641 #tb=AutoFormattedTB('Verbose');tb() #dbg
638
642
639 # If completion fails, don't annoy the user.
643 # If completion fails, don't annoy the user.
640 return None
644 return None
@@ -1,7366 +1,7369 b''
1 2008-01-11 Ville Vainio <vivainio@gmail.com>
1 2008-01-11 Ville Vainio <vivainio@gmail.com>
2
2
3 * iplib.py, ipmaker.py: new rc option - autoexec. It's a list
3 * iplib.py, ipmaker.py: new rc option - autoexec. It's a list
4 of ipython commands to be run when IPython has started up
4 of ipython commands to be run when IPython has started up
5 (just before running the scripts and -c arg on command line).
5 (just before running the scripts and -c arg on command line).
6
6
7 * ipy_user_conf.py: Added an example on how to change term
7 * ipy_user_conf.py: Added an example on how to change term
8 colors in config file (through using autoexec).
8 colors in config file (through using autoexec).
9
10 * completer.py, test_completer.py: Ability to specify custom
11 get_endidx to replace readline.get_endidx. For emacs users.
9
12
10 2008-01-10 Ville Vainio <vivainio@gmail.com>
13 2008-01-10 Ville Vainio <vivainio@gmail.com>
11
14
12 * Prompts.py (set_p_str): do not crash on illegal prompt strings
15 * Prompts.py (set_p_str): do not crash on illegal prompt strings
13
16
14 2008-01-08 Ville Vainio <vivainio@gmail.com>
17 2008-01-08 Ville Vainio <vivainio@gmail.com>
15
18
16 * '%macro -r' (raw mode) is now default in sh profile.
19 * '%macro -r' (raw mode) is now default in sh profile.
17
20
18 2007-12-31 Ville Vainio <vivainio@gmail.com>
21 2007-12-31 Ville Vainio <vivainio@gmail.com>
19
22
20 * completer.py: custom completer matching is now case sensitive
23 * completer.py: custom completer matching is now case sensitive
21 (#207).
24 (#207).
22
25
23 * ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in
26 * ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in
24 an attempt to prevent occasional crashes.
27 an attempt to prevent occasional crashes.
25
28
26 * CrashHandler.py: Crash log dump now asks user to press enter
29 * CrashHandler.py: Crash log dump now asks user to press enter
27 before exiting.
30 before exiting.
28
31
29 * Store _ip in user_ns instead of __builtin__, enabling safer
32 * Store _ip in user_ns instead of __builtin__, enabling safer
30 coexistence of multiple IPython instances in the same python
33 coexistence of multiple IPython instances in the same python
31 interpreter (#197).
34 interpreter (#197).
32
35
33 * Debugger.py, ipmaker.py: Need to add '-pydb' command line
36 * Debugger.py, ipmaker.py: Need to add '-pydb' command line
34 switch to enable pydb in post-mortem debugging and %run -d.
37 switch to enable pydb in post-mortem debugging and %run -d.
35
38
36 2007-12-28 Ville Vainio <vivainio@gmail.com>
39 2007-12-28 Ville Vainio <vivainio@gmail.com>
37
40
38 * ipy_server.py: TCP socket server for "remote control" of an IPython
41 * ipy_server.py: TCP socket server for "remote control" of an IPython
39 instance.
42 instance.
40
43
41 * Debugger.py: Change to PSF license
44 * Debugger.py: Change to PSF license
42
45
43 * simplegeneric.py: Add license & author notes.
46 * simplegeneric.py: Add license & author notes.
44
47
45 * ipy_fsops.py: Added PathObj and FileObj, an object-oriented way
48 * ipy_fsops.py: Added PathObj and FileObj, an object-oriented way
46 to navigate file system with a custom completer. Run
49 to navigate file system with a custom completer. Run
47 ipy_fsops.test_pathobj() to play with it.
50 ipy_fsops.test_pathobj() to play with it.
48
51
49 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
52 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
50
53
51 * IPython/dtutils.py: Add utilities for interactively running
54 * IPython/dtutils.py: Add utilities for interactively running
52 doctests. Still needs work to more easily handle the namespace of
55 doctests. Still needs work to more easily handle the namespace of
53 the package one may be working on, but the basics are in place.
56 the package one may be working on, but the basics are in place.
54
57
55 2007-12-27 Ville Vainio <vivainio@gmail.com>
58 2007-12-27 Ville Vainio <vivainio@gmail.com>
56
59
57 * ipy_completers.py: Applied arno's patch to get proper list of
60 * ipy_completers.py: Applied arno's patch to get proper list of
58 packages in import completer. Closes #196.
61 packages in import completer. Closes #196.
59
62
60 2007-12-20 Ville Vainio <vivainio@gmail.com>
63 2007-12-20 Ville Vainio <vivainio@gmail.com>
61
64
62 * completer.py, generics.py(complete_object): Allow
65 * completer.py, generics.py(complete_object): Allow
63 custom complers based on python objects via simplegeneric.
66 custom complers based on python objects via simplegeneric.
64 See generics.py / my_demo_complete_object
67 See generics.py / my_demo_complete_object
65
68
66 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
69 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
67
70
68 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
71 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
69 behavior to prompt objects, useful for display hooks to adjust
72 behavior to prompt objects, useful for display hooks to adjust
70 themselves depending on whether prompts will be there or not.
73 themselves depending on whether prompts will be there or not.
71
74
72 2007-12-13 Ville Vainio <vivainio@gmail.com>
75 2007-12-13 Ville Vainio <vivainio@gmail.com>
73
76
74 * iplib.py(raw_input): unix readline does not allow unicode in
77 * iplib.py(raw_input): unix readline does not allow unicode in
75 history, encode to normal string. After patch by Tiago.
78 history, encode to normal string. After patch by Tiago.
76 Close #201
79 Close #201
77
80
78 2007-12-12 Ville Vainio <vivainio@gmail.com>
81 2007-12-12 Ville Vainio <vivainio@gmail.com>
79
82
80 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
83 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
81 current directory.
84 current directory.
82
85
83 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
86 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
84
87
85 * IPython/Shell.py (_select_shell): add support for controlling
88 * IPython/Shell.py (_select_shell): add support for controlling
86 the pylab threading mode directly at the command line, without
89 the pylab threading mode directly at the command line, without
87 having to modify MPL config files. Added unit tests for this
90 having to modify MPL config files. Added unit tests for this
88 feature, though manual/docs update is still pending, will do later.
91 feature, though manual/docs update is still pending, will do later.
89
92
90 2007-12-11 Ville Vainio <vivainio@gmail.com>
93 2007-12-11 Ville Vainio <vivainio@gmail.com>
91
94
92 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
95 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
93 use in scripts)
96 use in scripts)
94
97
95 2007-12-07 Ville Vainio <vivainio@gmail.com>
98 2007-12-07 Ville Vainio <vivainio@gmail.com>
96
99
97 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
100 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
98 anymore (to \#) - even if it is a comment char that is implicitly
101 anymore (to \#) - even if it is a comment char that is implicitly
99 escaped in some unix shells in interactive mode, it is ok to leave
102 escaped in some unix shells in interactive mode, it is ok to leave
100 it in IPython as such.
103 it in IPython as such.
101
104
102
105
103 2007-12-01 Robert Kern <robert.kern@gmail.com>
106 2007-12-01 Robert Kern <robert.kern@gmail.com>
104
107
105 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
108 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
106 inspect.findsource(). It can now find source lines inside zipped
109 inspect.findsource(). It can now find source lines inside zipped
107 packages.
110 packages.
108
111
109 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
112 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
110 in the frame's namespace before trusting the filename in the code object
113 in the frame's namespace before trusting the filename in the code object
111 which created the frame.
114 which created the frame.
112
115
113 2007-11-29 *** Released version 0.8.2
116 2007-11-29 *** Released version 0.8.2
114
117
115 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
118 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
116
119
117 * IPython/Logger.py (Logger.logstop): add a proper logstop()
120 * IPython/Logger.py (Logger.logstop): add a proper logstop()
118 method to fully stop the logger, along with a corresponding
121 method to fully stop the logger, along with a corresponding
119 %logstop magic for interactive use.
122 %logstop magic for interactive use.
120
123
121 * IPython/Extensions/ipy_host_completers.py: added new host
124 * IPython/Extensions/ipy_host_completers.py: added new host
122 completers functionality, contributed by Gael Pasgrimaud
125 completers functionality, contributed by Gael Pasgrimaud
123 <gawel-AT-afpy.org>.
126 <gawel-AT-afpy.org>.
124
127
125 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
128 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
126
129
127 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
130 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
128 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
131 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
129 options handling. Unicode fix in %whos (committed a while ago)
132 options handling. Unicode fix in %whos (committed a while ago)
130 was also contributed by Paul.
133 was also contributed by Paul.
131
134
132 2007-11-23 Darren Dale <darren.dale@cornell.edu>
135 2007-11-23 Darren Dale <darren.dale@cornell.edu>
133 * ipy_traits_completer.py: let traits_completer respect the user's
136 * ipy_traits_completer.py: let traits_completer respect the user's
134 readline_omit__names setting.
137 readline_omit__names setting.
135
138
136 2007-11-08 Ville Vainio <vivainio@gmail.com>
139 2007-11-08 Ville Vainio <vivainio@gmail.com>
137
140
138 * ipy_completers.py (import completer): assume 'xml' module exists.
141 * ipy_completers.py (import completer): assume 'xml' module exists.
139 Do not add every module twice anymore. Closes #196.
142 Do not add every module twice anymore. Closes #196.
140
143
141 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
144 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
142 completer that uses apt-cache to search for existing packages.
145 completer that uses apt-cache to search for existing packages.
143
146
144 2007-11-06 Ville Vainio <vivainio@gmail.com>
147 2007-11-06 Ville Vainio <vivainio@gmail.com>
145
148
146 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
149 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
147 true. Closes #194.
150 true. Closes #194.
148
151
149 2007-11-01 Brian Granger <ellisonbg@gmail.com>
152 2007-11-01 Brian Granger <ellisonbg@gmail.com>
150
153
151 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
154 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
152 working with OS X 10.5 libedit implementation of readline.
155 working with OS X 10.5 libedit implementation of readline.
153
156
154 2007-10-24 Ville Vainio <vivainio@gmail.com>
157 2007-10-24 Ville Vainio <vivainio@gmail.com>
155
158
156 * iplib.py(user_setup): To route around buggy installations where
159 * iplib.py(user_setup): To route around buggy installations where
157 UserConfig is not available, create a minimal _ipython.
160 UserConfig is not available, create a minimal _ipython.
158
161
159 * iplib.py: Unicode fixes from Jorgen.
162 * iplib.py: Unicode fixes from Jorgen.
160
163
161 * genutils.py: Slist now has new method 'fields()' for extraction of
164 * genutils.py: Slist now has new method 'fields()' for extraction of
162 whitespace-separated fields from line-oriented data.
165 whitespace-separated fields from line-oriented data.
163
166
164 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
167 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
165
168
166 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
169 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
167 when querying objects with no __class__ attribute (such as
170 when querying objects with no __class__ attribute (such as
168 f2py-generated modules).
171 f2py-generated modules).
169
172
170 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
173 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
171
174
172 * IPython/Magic.py (magic_time): track compilation time and report
175 * IPython/Magic.py (magic_time): track compilation time and report
173 it if longer than 0.1s (fix done to %time and %timeit). After a
176 it if longer than 0.1s (fix done to %time and %timeit). After a
174 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
177 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
175
178
176 2007-09-18 Ville Vainio <vivainio@gmail.com>
179 2007-09-18 Ville Vainio <vivainio@gmail.com>
177
180
178 * genutils.py(make_quoted_expr): Do not use Itpl, it does
181 * genutils.py(make_quoted_expr): Do not use Itpl, it does
179 not support unicode at the moment. Fixes (many) magic calls with
182 not support unicode at the moment. Fixes (many) magic calls with
180 special characters.
183 special characters.
181
184
182 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
185 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
183
186
184 * IPython/genutils.py (doctest_reload): expose the doctest
187 * IPython/genutils.py (doctest_reload): expose the doctest
185 reloader to the user so that people can easily reset doctest while
188 reloader to the user so that people can easily reset doctest while
186 using it interactively. Fixes a problem reported by Jorgen.
189 using it interactively. Fixes a problem reported by Jorgen.
187
190
188 * IPython/iplib.py (InteractiveShell.__init__): protect the
191 * IPython/iplib.py (InteractiveShell.__init__): protect the
189 FakeModule instances used for __main__ in %run calls from
192 FakeModule instances used for __main__ in %run calls from
190 deletion, so that user code defined in them isn't left with
193 deletion, so that user code defined in them isn't left with
191 dangling references due to the Python module deletion machinery.
194 dangling references due to the Python module deletion machinery.
192 This should fix the problems reported by Darren.
195 This should fix the problems reported by Darren.
193
196
194 2007-09-10 Darren Dale <dd55@cornell.edu>
197 2007-09-10 Darren Dale <dd55@cornell.edu>
195
198
196 * Cleanup of IPShellQt and IPShellQt4
199 * Cleanup of IPShellQt and IPShellQt4
197
200
198 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
201 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
199
202
200 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
203 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
201 doctest support.
204 doctest support.
202
205
203 * IPython/iplib.py (safe_execfile): minor docstring improvements.
206 * IPython/iplib.py (safe_execfile): minor docstring improvements.
204
207
205 2007-09-08 Ville Vainio <vivainio@gmail.com>
208 2007-09-08 Ville Vainio <vivainio@gmail.com>
206
209
207 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
210 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
208 directory, not the target directory.
211 directory, not the target directory.
209
212
210 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
213 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
211 exception that won't print the tracebacks. Switched many magics to
214 exception that won't print the tracebacks. Switched many magics to
212 raise them on error situations, also GetoptError is not printed
215 raise them on error situations, also GetoptError is not printed
213 anymore.
216 anymore.
214
217
215 2007-09-07 Ville Vainio <vivainio@gmail.com>
218 2007-09-07 Ville Vainio <vivainio@gmail.com>
216
219
217 * iplib.py: do not auto-alias "dir", it screws up other dir auto
220 * iplib.py: do not auto-alias "dir", it screws up other dir auto
218 aliases.
221 aliases.
219
222
220 * genutils.py: SList.grep() implemented.
223 * genutils.py: SList.grep() implemented.
221
224
222 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
225 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
223 for easy "out of the box" setup of several common editors, so that
226 for easy "out of the box" setup of several common editors, so that
224 e.g. '%edit os.path.isfile' will jump to the correct line
227 e.g. '%edit os.path.isfile' will jump to the correct line
225 automatically. Contributions for command lines of your favourite
228 automatically. Contributions for command lines of your favourite
226 editors welcome.
229 editors welcome.
227
230
228 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
231 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
229
232
230 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
233 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
231 preventing source display in certain cases. In reality I think
234 preventing source display in certain cases. In reality I think
232 the problem is with Ubuntu's Python build, but this change works
235 the problem is with Ubuntu's Python build, but this change works
233 around the issue in some cases (not in all, unfortunately). I'd
236 around the issue in some cases (not in all, unfortunately). I'd
234 filed a Python bug on this with more details, but in the change of
237 filed a Python bug on this with more details, but in the change of
235 bug trackers it seems to have been lost.
238 bug trackers it seems to have been lost.
236
239
237 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
240 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
238 not the same, it's not self-documenting, doesn't allow range
241 not the same, it's not self-documenting, doesn't allow range
239 selection, and sorts alphabetically instead of numerically.
242 selection, and sorts alphabetically instead of numerically.
240 (magic_r): restore %r. No, "up + enter. One char magic" is not
243 (magic_r): restore %r. No, "up + enter. One char magic" is not
241 the same thing, since %r takes parameters to allow fast retrieval
244 the same thing, since %r takes parameters to allow fast retrieval
242 of old commands. I've received emails from users who use this a
245 of old commands. I've received emails from users who use this a
243 LOT, so it stays.
246 LOT, so it stays.
244 (magic_automagic): restore %automagic. "use _ip.option.automagic"
247 (magic_automagic): restore %automagic. "use _ip.option.automagic"
245 is not a valid replacement b/c it doesn't provide an complete
248 is not a valid replacement b/c it doesn't provide an complete
246 explanation (which the automagic docstring does).
249 explanation (which the automagic docstring does).
247 (magic_autocall): restore %autocall, with improved docstring.
250 (magic_autocall): restore %autocall, with improved docstring.
248 Same argument as for others, "use _ip.options.autocall" is not a
251 Same argument as for others, "use _ip.options.autocall" is not a
249 valid replacement.
252 valid replacement.
250 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
253 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
251 tutorials and online docs.
254 tutorials and online docs.
252
255
253 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
256 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
254
257
255 * IPython/usage.py (quick_reference): mention magics in quickref,
258 * IPython/usage.py (quick_reference): mention magics in quickref,
256 modified main banner to mention %quickref.
259 modified main banner to mention %quickref.
257
260
258 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
261 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
259
262
260 2007-09-06 Ville Vainio <vivainio@gmail.com>
263 2007-09-06 Ville Vainio <vivainio@gmail.com>
261
264
262 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
265 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
263 Callable aliases now pass the _ip as first arg. This breaks
266 Callable aliases now pass the _ip as first arg. This breaks
264 compatibility with earlier 0.8.2.svn series! (though they should
267 compatibility with earlier 0.8.2.svn series! (though they should
265 not have been in use yet outside these few extensions)
268 not have been in use yet outside these few extensions)
266
269
267 2007-09-05 Ville Vainio <vivainio@gmail.com>
270 2007-09-05 Ville Vainio <vivainio@gmail.com>
268
271
269 * external/mglob.py: expand('dirname') => ['dirname'], instead
272 * external/mglob.py: expand('dirname') => ['dirname'], instead
270 of ['dirname/foo','dirname/bar', ...].
273 of ['dirname/foo','dirname/bar', ...].
271
274
272 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
275 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
273 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
276 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
274 is useful for others as well).
277 is useful for others as well).
275
278
276 * iplib.py: on callable aliases (as opposed to old style aliases),
279 * iplib.py: on callable aliases (as opposed to old style aliases),
277 do var_expand() immediately, and use make_quoted_expr instead
280 do var_expand() immediately, and use make_quoted_expr instead
278 of hardcoded r"""
281 of hardcoded r"""
279
282
280 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
283 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
281 if not available load ipy_fsops.py for cp, mv, etc. replacements
284 if not available load ipy_fsops.py for cp, mv, etc. replacements
282
285
283 * OInspect.py, ipy_which.py: improve %which and obj? for callable
286 * OInspect.py, ipy_which.py: improve %which and obj? for callable
284 aliases
287 aliases
285
288
286 2007-09-04 Ville Vainio <vivainio@gmail.com>
289 2007-09-04 Ville Vainio <vivainio@gmail.com>
287
290
288 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
291 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
289 Relicensed under BSD with the authors approval.
292 Relicensed under BSD with the authors approval.
290
293
291 * ipmaker.py, usage.py: Remove %magic from default banner, improve
294 * ipmaker.py, usage.py: Remove %magic from default banner, improve
292 %quickref
295 %quickref
293
296
294 2007-09-03 Ville Vainio <vivainio@gmail.com>
297 2007-09-03 Ville Vainio <vivainio@gmail.com>
295
298
296 * Magic.py: %time now passes expression through prefilter,
299 * Magic.py: %time now passes expression through prefilter,
297 allowing IPython syntax.
300 allowing IPython syntax.
298
301
299 2007-09-01 Ville Vainio <vivainio@gmail.com>
302 2007-09-01 Ville Vainio <vivainio@gmail.com>
300
303
301 * ipmaker.py: Always show full traceback when newstyle config fails
304 * ipmaker.py: Always show full traceback when newstyle config fails
302
305
303 2007-08-27 Ville Vainio <vivainio@gmail.com>
306 2007-08-27 Ville Vainio <vivainio@gmail.com>
304
307
305 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
308 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
306
309
307 2007-08-26 Ville Vainio <vivainio@gmail.com>
310 2007-08-26 Ville Vainio <vivainio@gmail.com>
308
311
309 * ipmaker.py: Command line args have the highest priority again
312 * ipmaker.py: Command line args have the highest priority again
310
313
311 * iplib.py, ipmaker.py: -i command line argument now behaves as in
314 * iplib.py, ipmaker.py: -i command line argument now behaves as in
312 normal python, i.e. leaves the IPython session running after -c
315 normal python, i.e. leaves the IPython session running after -c
313 command or running a batch file from command line.
316 command or running a batch file from command line.
314
317
315 2007-08-22 Ville Vainio <vivainio@gmail.com>
318 2007-08-22 Ville Vainio <vivainio@gmail.com>
316
319
317 * iplib.py: no extra empty (last) line in raw hist w/ multiline
320 * iplib.py: no extra empty (last) line in raw hist w/ multiline
318 statements
321 statements
319
322
320 * logger.py: Fix bug where blank lines in history were not
323 * logger.py: Fix bug where blank lines in history were not
321 added until AFTER adding the current line; translated and raw
324 added until AFTER adding the current line; translated and raw
322 history should finally be in sync with prompt now.
325 history should finally be in sync with prompt now.
323
326
324 * ipy_completers.py: quick_completer now makes it easy to create
327 * ipy_completers.py: quick_completer now makes it easy to create
325 trivial custom completers
328 trivial custom completers
326
329
327 * clearcmd.py: shadow history compression & erasing, fixed input hist
330 * clearcmd.py: shadow history compression & erasing, fixed input hist
328 clearing.
331 clearing.
329
332
330 * envpersist.py, history.py: %env (sh profile only), %hist completers
333 * envpersist.py, history.py: %env (sh profile only), %hist completers
331
334
332 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
335 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
333 term title now include the drive letter, and always use / instead of
336 term title now include the drive letter, and always use / instead of
334 os.sep (as per recommended approach for win32 ipython in general).
337 os.sep (as per recommended approach for win32 ipython in general).
335
338
336 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
339 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
337 plain python scripts from ipykit command line by running
340 plain python scripts from ipykit command line by running
338 "py myscript.py", even w/o installed python.
341 "py myscript.py", even w/o installed python.
339
342
340 2007-08-21 Ville Vainio <vivainio@gmail.com>
343 2007-08-21 Ville Vainio <vivainio@gmail.com>
341
344
342 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
345 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
343 (for backwards compatibility)
346 (for backwards compatibility)
344
347
345 * history.py: switch back to %hist -t from %hist -r as default.
348 * history.py: switch back to %hist -t from %hist -r as default.
346 At least until raw history is fixed for good.
349 At least until raw history is fixed for good.
347
350
348 2007-08-20 Ville Vainio <vivainio@gmail.com>
351 2007-08-20 Ville Vainio <vivainio@gmail.com>
349
352
350 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
353 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
351 locate alias redeclarations etc. Also, avoid handling
354 locate alias redeclarations etc. Also, avoid handling
352 _ip.IP.alias_table directly, prefer using _ip.defalias.
355 _ip.IP.alias_table directly, prefer using _ip.defalias.
353
356
354
357
355 2007-08-15 Ville Vainio <vivainio@gmail.com>
358 2007-08-15 Ville Vainio <vivainio@gmail.com>
356
359
357 * prefilter.py: ! is now always served first
360 * prefilter.py: ! is now always served first
358
361
359 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
362 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
360
363
361 * IPython/iplib.py (safe_execfile): fix the SystemExit
364 * IPython/iplib.py (safe_execfile): fix the SystemExit
362 auto-suppression code to work in Python2.4 (the internal structure
365 auto-suppression code to work in Python2.4 (the internal structure
363 of that exception changed and I'd only tested the code with 2.5).
366 of that exception changed and I'd only tested the code with 2.5).
364 Bug reported by a SciPy attendee.
367 Bug reported by a SciPy attendee.
365
368
366 2007-08-13 Ville Vainio <vivainio@gmail.com>
369 2007-08-13 Ville Vainio <vivainio@gmail.com>
367
370
368 * prefilter.py: reverted !c:/bin/foo fix, made % in
371 * prefilter.py: reverted !c:/bin/foo fix, made % in
369 multiline specials work again
372 multiline specials work again
370
373
371 2007-08-13 Ville Vainio <vivainio@gmail.com>
374 2007-08-13 Ville Vainio <vivainio@gmail.com>
372
375
373 * prefilter.py: Take more care to special-case !, so that
376 * prefilter.py: Take more care to special-case !, so that
374 !c:/bin/foo.exe works.
377 !c:/bin/foo.exe works.
375
378
376 * setup.py: if we are building eggs, strip all docs and
379 * setup.py: if we are building eggs, strip all docs and
377 examples (it doesn't make sense to bytecompile examples,
380 examples (it doesn't make sense to bytecompile examples,
378 and docs would be in an awkward place anyway).
381 and docs would be in an awkward place anyway).
379
382
380 * Ryan Krauss' patch fixes start menu shortcuts when IPython
383 * Ryan Krauss' patch fixes start menu shortcuts when IPython
381 is installed into a directory that has spaces in the name.
384 is installed into a directory that has spaces in the name.
382
385
383 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
386 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
384
387
385 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
388 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
386 doctest profile and %doctest_mode, so they actually generate the
389 doctest profile and %doctest_mode, so they actually generate the
387 blank lines needed by doctest to separate individual tests.
390 blank lines needed by doctest to separate individual tests.
388
391
389 * IPython/iplib.py (safe_execfile): modify so that running code
392 * IPython/iplib.py (safe_execfile): modify so that running code
390 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
393 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
391 doesn't get a printed traceback. Any other value in sys.exit(),
394 doesn't get a printed traceback. Any other value in sys.exit(),
392 including the empty call, still generates a traceback. This
395 including the empty call, still generates a traceback. This
393 enables use of %run without having to pass '-e' for codes that
396 enables use of %run without having to pass '-e' for codes that
394 correctly set the exit status flag.
397 correctly set the exit status flag.
395
398
396 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
399 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
397
400
398 * IPython/iplib.py (InteractiveShell.post_config_initialization):
401 * IPython/iplib.py (InteractiveShell.post_config_initialization):
399 fix problems with doctests failing when run inside IPython due to
402 fix problems with doctests failing when run inside IPython due to
400 IPython's modifications of sys.displayhook.
403 IPython's modifications of sys.displayhook.
401
404
402 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
405 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
403
406
404 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
407 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
405 a string with names.
408 a string with names.
406
409
407 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
410 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
408
411
409 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
412 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
410 magic to toggle on/off the doctest pasting support without having
413 magic to toggle on/off the doctest pasting support without having
411 to leave a session to switch to a separate profile.
414 to leave a session to switch to a separate profile.
412
415
413 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
416 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
414
417
415 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
418 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
416 introduce a blank line between inputs, to conform to doctest
419 introduce a blank line between inputs, to conform to doctest
417 requirements.
420 requirements.
418
421
419 * IPython/OInspect.py (Inspector.pinfo): fix another part where
422 * IPython/OInspect.py (Inspector.pinfo): fix another part where
420 auto-generated docstrings for new-style classes were showing up.
423 auto-generated docstrings for new-style classes were showing up.
421
424
422 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
425 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
423
426
424 * api_changes: Add new file to track backward-incompatible
427 * api_changes: Add new file to track backward-incompatible
425 user-visible changes.
428 user-visible changes.
426
429
427 2007-08-06 Ville Vainio <vivainio@gmail.com>
430 2007-08-06 Ville Vainio <vivainio@gmail.com>
428
431
429 * ipmaker.py: fix bug where user_config_ns didn't exist at all
432 * ipmaker.py: fix bug where user_config_ns didn't exist at all
430 before all the config files were handled.
433 before all the config files were handled.
431
434
432 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
435 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
433
436
434 * IPython/irunner.py (RunnerFactory): Add new factory class for
437 * IPython/irunner.py (RunnerFactory): Add new factory class for
435 creating reusable runners based on filenames.
438 creating reusable runners based on filenames.
436
439
437 * IPython/Extensions/ipy_profile_doctest.py: New profile for
440 * IPython/Extensions/ipy_profile_doctest.py: New profile for
438 doctest support. It sets prompts/exceptions as similar to
441 doctest support. It sets prompts/exceptions as similar to
439 standard Python as possible, so that ipython sessions in this
442 standard Python as possible, so that ipython sessions in this
440 profile can be easily pasted as doctests with minimal
443 profile can be easily pasted as doctests with minimal
441 modifications. It also enables pasting of doctests from external
444 modifications. It also enables pasting of doctests from external
442 sources (even if they have leading whitespace), so that you can
445 sources (even if they have leading whitespace), so that you can
443 rerun doctests from existing sources.
446 rerun doctests from existing sources.
444
447
445 * IPython/iplib.py (_prefilter): fix a buglet where after entering
448 * IPython/iplib.py (_prefilter): fix a buglet where after entering
446 some whitespace, the prompt would become a continuation prompt
449 some whitespace, the prompt would become a continuation prompt
447 with no way of exiting it other than Ctrl-C. This fix brings us
450 with no way of exiting it other than Ctrl-C. This fix brings us
448 into conformity with how the default python prompt works.
451 into conformity with how the default python prompt works.
449
452
450 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
453 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
451 Add support for pasting not only lines that start with '>>>', but
454 Add support for pasting not only lines that start with '>>>', but
452 also with ' >>>'. That is, arbitrary whitespace can now precede
455 also with ' >>>'. That is, arbitrary whitespace can now precede
453 the prompts. This makes the system useful for pasting doctests
456 the prompts. This makes the system useful for pasting doctests
454 from docstrings back into a normal session.
457 from docstrings back into a normal session.
455
458
456 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
459 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
457
460
458 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
461 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
459 r1357, which had killed multiple invocations of an embedded
462 r1357, which had killed multiple invocations of an embedded
460 ipython (this means that example-embed has been broken for over 1
463 ipython (this means that example-embed has been broken for over 1
461 year!!!). Rather than possibly breaking the batch stuff for which
464 year!!!). Rather than possibly breaking the batch stuff for which
462 the code in iplib.py/interact was introduced, I worked around the
465 the code in iplib.py/interact was introduced, I worked around the
463 problem in the embedding class in Shell.py. We really need a
466 problem in the embedding class in Shell.py. We really need a
464 bloody test suite for this code, I'm sick of finding stuff that
467 bloody test suite for this code, I'm sick of finding stuff that
465 used to work breaking left and right every time I use an old
468 used to work breaking left and right every time I use an old
466 feature I hadn't touched in a few months.
469 feature I hadn't touched in a few months.
467 (kill_embedded): Add a new magic that only shows up in embedded
470 (kill_embedded): Add a new magic that only shows up in embedded
468 mode, to allow users to permanently deactivate an embedded instance.
471 mode, to allow users to permanently deactivate an embedded instance.
469
472
470 2007-08-01 Ville Vainio <vivainio@gmail.com>
473 2007-08-01 Ville Vainio <vivainio@gmail.com>
471
474
472 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
475 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
473 history gets out of sync on runlines (e.g. when running macros).
476 history gets out of sync on runlines (e.g. when running macros).
474
477
475 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
478 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
476
479
477 * IPython/Magic.py (magic_colors): fix win32-related error message
480 * IPython/Magic.py (magic_colors): fix win32-related error message
478 that could appear under *nix when readline was missing. Patch by
481 that could appear under *nix when readline was missing. Patch by
479 Scott Jackson, closes #175.
482 Scott Jackson, closes #175.
480
483
481 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
484 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
482
485
483 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
486 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
484 completer that it traits-aware, so that traits objects don't show
487 completer that it traits-aware, so that traits objects don't show
485 all of their internal attributes all the time.
488 all of their internal attributes all the time.
486
489
487 * IPython/genutils.py (dir2): moved this code from inside
490 * IPython/genutils.py (dir2): moved this code from inside
488 completer.py to expose it publicly, so I could use it in the
491 completer.py to expose it publicly, so I could use it in the
489 wildcards bugfix.
492 wildcards bugfix.
490
493
491 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
494 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
492 Stefan with Traits.
495 Stefan with Traits.
493
496
494 * IPython/completer.py (Completer.attr_matches): change internal
497 * IPython/completer.py (Completer.attr_matches): change internal
495 var name from 'object' to 'obj', since 'object' is now a builtin
498 var name from 'object' to 'obj', since 'object' is now a builtin
496 and this can lead to weird bugs if reusing this code elsewhere.
499 and this can lead to weird bugs if reusing this code elsewhere.
497
500
498 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
501 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
499
502
500 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
503 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
501 'foo?' and update the code to prevent printing of default
504 'foo?' and update the code to prevent printing of default
502 docstrings that started appearing after I added support for
505 docstrings that started appearing after I added support for
503 new-style classes. The approach I'm using isn't ideal (I just
506 new-style classes. The approach I'm using isn't ideal (I just
504 special-case those strings) but I'm not sure how to more robustly
507 special-case those strings) but I'm not sure how to more robustly
505 differentiate between truly user-written strings and Python's
508 differentiate between truly user-written strings and Python's
506 automatic ones.
509 automatic ones.
507
510
508 2007-07-09 Ville Vainio <vivainio@gmail.com>
511 2007-07-09 Ville Vainio <vivainio@gmail.com>
509
512
510 * completer.py: Applied Matthew Neeley's patch:
513 * completer.py: Applied Matthew Neeley's patch:
511 Dynamic attributes from trait_names and _getAttributeNames are added
514 Dynamic attributes from trait_names and _getAttributeNames are added
512 to the list of tab completions, but when this happens, the attribute
515 to the list of tab completions, but when this happens, the attribute
513 list is turned into a set, so the attributes are unordered when
516 list is turned into a set, so the attributes are unordered when
514 printed, which makes it hard to find the right completion. This patch
517 printed, which makes it hard to find the right completion. This patch
515 turns this set back into a list and sort it.
518 turns this set back into a list and sort it.
516
519
517 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
520 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
518
521
519 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
522 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
520 classes in various inspector functions.
523 classes in various inspector functions.
521
524
522 2007-06-28 Ville Vainio <vivainio@gmail.com>
525 2007-06-28 Ville Vainio <vivainio@gmail.com>
523
526
524 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
527 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
525 Implement "shadow" namespace, and callable aliases that reside there.
528 Implement "shadow" namespace, and callable aliases that reside there.
526 Use them by:
529 Use them by:
527
530
528 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
531 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
529
532
530 foo hello world
533 foo hello world
531 (gets translated to:)
534 (gets translated to:)
532 _sh.foo(r"""hello world""")
535 _sh.foo(r"""hello world""")
533
536
534 In practice, this kind of alias can take the role of a magic function
537 In practice, this kind of alias can take the role of a magic function
535
538
536 * New generic inspect_object, called on obj? and obj??
539 * New generic inspect_object, called on obj? and obj??
537
540
538 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
541 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
539
542
540 * IPython/ultraTB.py (findsource): fix a problem with
543 * IPython/ultraTB.py (findsource): fix a problem with
541 inspect.getfile that can cause crashes during traceback construction.
544 inspect.getfile that can cause crashes during traceback construction.
542
545
543 2007-06-14 Ville Vainio <vivainio@gmail.com>
546 2007-06-14 Ville Vainio <vivainio@gmail.com>
544
547
545 * iplib.py (handle_auto): Try to use ascii for printing "--->"
548 * iplib.py (handle_auto): Try to use ascii for printing "--->"
546 autocall rewrite indication, becausesometimes unicode fails to print
549 autocall rewrite indication, becausesometimes unicode fails to print
547 properly (and you get ' - - - '). Use plain uncoloured ---> for
550 properly (and you get ' - - - '). Use plain uncoloured ---> for
548 unicode.
551 unicode.
549
552
550 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
553 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
551
554
552 . pickleshare 'hash' commands (hget, hset, hcompress,
555 . pickleshare 'hash' commands (hget, hset, hcompress,
553 hdict) for efficient shadow history storage.
556 hdict) for efficient shadow history storage.
554
557
555 2007-06-13 Ville Vainio <vivainio@gmail.com>
558 2007-06-13 Ville Vainio <vivainio@gmail.com>
556
559
557 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
560 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
558 Added kw arg 'interactive', tell whether vars should be visible
561 Added kw arg 'interactive', tell whether vars should be visible
559 with %whos.
562 with %whos.
560
563
561 2007-06-11 Ville Vainio <vivainio@gmail.com>
564 2007-06-11 Ville Vainio <vivainio@gmail.com>
562
565
563 * pspersistence.py, Magic.py, iplib.py: directory history now saved
566 * pspersistence.py, Magic.py, iplib.py: directory history now saved
564 to db
567 to db
565
568
566 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
569 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
567 Also, it exits IPython immediately after evaluating the command (just like
570 Also, it exits IPython immediately after evaluating the command (just like
568 std python)
571 std python)
569
572
570 2007-06-05 Walter Doerwald <walter@livinglogic.de>
573 2007-06-05 Walter Doerwald <walter@livinglogic.de>
571
574
572 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
575 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
573 Python string and captures the output. (Idea and original patch by
576 Python string and captures the output. (Idea and original patch by
574 Stefan van der Walt)
577 Stefan van der Walt)
575
578
576 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
579 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
577
580
578 * IPython/ultraTB.py (VerboseTB.text): update printing of
581 * IPython/ultraTB.py (VerboseTB.text): update printing of
579 exception types for Python 2.5 (now all exceptions in the stdlib
582 exception types for Python 2.5 (now all exceptions in the stdlib
580 are new-style classes).
583 are new-style classes).
581
584
582 2007-05-31 Walter Doerwald <walter@livinglogic.de>
585 2007-05-31 Walter Doerwald <walter@livinglogic.de>
583
586
584 * IPython/Extensions/igrid.py: Add new commands refresh and
587 * IPython/Extensions/igrid.py: Add new commands refresh and
585 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
588 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
586 the iterator once (refresh) or after every x seconds (refresh_timer).
589 the iterator once (refresh) or after every x seconds (refresh_timer).
587 Add a working implementation of "searchexpression", where the text
590 Add a working implementation of "searchexpression", where the text
588 entered is not the text to search for, but an expression that must
591 entered is not the text to search for, but an expression that must
589 be true. Added display of shortcuts to the menu. Added commands "pickinput"
592 be true. Added display of shortcuts to the menu. Added commands "pickinput"
590 and "pickinputattr" that put the object or attribute under the cursor
593 and "pickinputattr" that put the object or attribute under the cursor
591 in the input line. Split the statusbar to be able to display the currently
594 in the input line. Split the statusbar to be able to display the currently
592 active refresh interval. (Patch by Nik Tautenhahn)
595 active refresh interval. (Patch by Nik Tautenhahn)
593
596
594 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
597 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
595
598
596 * fixing set_term_title to use ctypes as default
599 * fixing set_term_title to use ctypes as default
597
600
598 * fixing set_term_title fallback to work when curent dir
601 * fixing set_term_title fallback to work when curent dir
599 is on a windows network share
602 is on a windows network share
600
603
601 2007-05-28 Ville Vainio <vivainio@gmail.com>
604 2007-05-28 Ville Vainio <vivainio@gmail.com>
602
605
603 * %cpaste: strip + with > from left (diffs).
606 * %cpaste: strip + with > from left (diffs).
604
607
605 * iplib.py: Fix crash when readline not installed
608 * iplib.py: Fix crash when readline not installed
606
609
607 2007-05-26 Ville Vainio <vivainio@gmail.com>
610 2007-05-26 Ville Vainio <vivainio@gmail.com>
608
611
609 * generics.py: intruduce easy to extend result_display generic
612 * generics.py: intruduce easy to extend result_display generic
610 function (using simplegeneric.py).
613 function (using simplegeneric.py).
611
614
612 * Fixed the append functionality of %set.
615 * Fixed the append functionality of %set.
613
616
614 2007-05-25 Ville Vainio <vivainio@gmail.com>
617 2007-05-25 Ville Vainio <vivainio@gmail.com>
615
618
616 * New magic: %rep (fetch / run old commands from history)
619 * New magic: %rep (fetch / run old commands from history)
617
620
618 * New extension: mglob (%mglob magic), for powerful glob / find /filter
621 * New extension: mglob (%mglob magic), for powerful glob / find /filter
619 like functionality
622 like functionality
620
623
621 % maghistory.py: %hist -g PATTERM greps the history for pattern
624 % maghistory.py: %hist -g PATTERM greps the history for pattern
622
625
623 2007-05-24 Walter Doerwald <walter@livinglogic.de>
626 2007-05-24 Walter Doerwald <walter@livinglogic.de>
624
627
625 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
628 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
626 browse the IPython input history
629 browse the IPython input history
627
630
628 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
631 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
629 (mapped to "i") can be used to put the object under the curser in the input
632 (mapped to "i") can be used to put the object under the curser in the input
630 line. pickinputattr (mapped to "I") does the same for the attribute under
633 line. pickinputattr (mapped to "I") does the same for the attribute under
631 the cursor.
634 the cursor.
632
635
633 2007-05-24 Ville Vainio <vivainio@gmail.com>
636 2007-05-24 Ville Vainio <vivainio@gmail.com>
634
637
635 * Grand magic cleansing (changeset [2380]):
638 * Grand magic cleansing (changeset [2380]):
636
639
637 * Introduce ipy_legacy.py where the following magics were
640 * Introduce ipy_legacy.py where the following magics were
638 moved:
641 moved:
639
642
640 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
643 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
641
644
642 If you need them, either use default profile or "import ipy_legacy"
645 If you need them, either use default profile or "import ipy_legacy"
643 in your ipy_user_conf.py
646 in your ipy_user_conf.py
644
647
645 * Move sh and scipy profile to Extensions from UserConfig. this implies
648 * Move sh and scipy profile to Extensions from UserConfig. this implies
646 you should not edit them, but you don't need to run %upgrade when
649 you should not edit them, but you don't need to run %upgrade when
647 upgrading IPython anymore.
650 upgrading IPython anymore.
648
651
649 * %hist/%history now operates in "raw" mode by default. To get the old
652 * %hist/%history now operates in "raw" mode by default. To get the old
650 behaviour, run '%hist -n' (native mode).
653 behaviour, run '%hist -n' (native mode).
651
654
652 * split ipy_stock_completers.py to ipy_stock_completers.py and
655 * split ipy_stock_completers.py to ipy_stock_completers.py and
653 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
656 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
654 installed as default.
657 installed as default.
655
658
656 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
659 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
657 handling.
660 handling.
658
661
659 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
662 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
660 input if readline is available.
663 input if readline is available.
661
664
662 2007-05-23 Ville Vainio <vivainio@gmail.com>
665 2007-05-23 Ville Vainio <vivainio@gmail.com>
663
666
664 * macro.py: %store uses __getstate__ properly
667 * macro.py: %store uses __getstate__ properly
665
668
666 * exesetup.py: added new setup script for creating
669 * exesetup.py: added new setup script for creating
667 standalone IPython executables with py2exe (i.e.
670 standalone IPython executables with py2exe (i.e.
668 no python installation required).
671 no python installation required).
669
672
670 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
673 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
671 its place.
674 its place.
672
675
673 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
676 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
674
677
675 2007-05-21 Ville Vainio <vivainio@gmail.com>
678 2007-05-21 Ville Vainio <vivainio@gmail.com>
676
679
677 * platutil_win32.py (set_term_title): handle
680 * platutil_win32.py (set_term_title): handle
678 failure of 'title' system call properly.
681 failure of 'title' system call properly.
679
682
680 2007-05-17 Walter Doerwald <walter@livinglogic.de>
683 2007-05-17 Walter Doerwald <walter@livinglogic.de>
681
684
682 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
685 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
683 (Bug detected by Paul Mueller).
686 (Bug detected by Paul Mueller).
684
687
685 2007-05-16 Ville Vainio <vivainio@gmail.com>
688 2007-05-16 Ville Vainio <vivainio@gmail.com>
686
689
687 * ipy_profile_sci.py, ipython_win_post_install.py: Create
690 * ipy_profile_sci.py, ipython_win_post_install.py: Create
688 new "sci" profile, effectively a modern version of the old
691 new "sci" profile, effectively a modern version of the old
689 "scipy" profile (which is now slated for deprecation).
692 "scipy" profile (which is now slated for deprecation).
690
693
691 2007-05-15 Ville Vainio <vivainio@gmail.com>
694 2007-05-15 Ville Vainio <vivainio@gmail.com>
692
695
693 * pycolorize.py, pycolor.1: Paul Mueller's patches that
696 * pycolorize.py, pycolor.1: Paul Mueller's patches that
694 make pycolorize read input from stdin when run without arguments.
697 make pycolorize read input from stdin when run without arguments.
695
698
696 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
699 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
697
700
698 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
701 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
699 it in sh profile (instead of ipy_system_conf.py).
702 it in sh profile (instead of ipy_system_conf.py).
700
703
701 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
704 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
702 aliases are now lower case on windows (MyCommand.exe => mycommand).
705 aliases are now lower case on windows (MyCommand.exe => mycommand).
703
706
704 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
707 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
705 Macros are now callable objects that inherit from ipapi.IPyAutocall,
708 Macros are now callable objects that inherit from ipapi.IPyAutocall,
706 i.e. get autocalled regardless of system autocall setting.
709 i.e. get autocalled regardless of system autocall setting.
707
710
708 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
711 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
709
712
710 * IPython/rlineimpl.py: check for clear_history in readline and
713 * IPython/rlineimpl.py: check for clear_history in readline and
711 make it a dummy no-op if not available. This function isn't
714 make it a dummy no-op if not available. This function isn't
712 guaranteed to be in the API and appeared in Python 2.4, so we need
715 guaranteed to be in the API and appeared in Python 2.4, so we need
713 to check it ourselves. Also, clean up this file quite a bit.
716 to check it ourselves. Also, clean up this file quite a bit.
714
717
715 * ipython.1: update man page and full manual with information
718 * ipython.1: update man page and full manual with information
716 about threads (remove outdated warning). Closes #151.
719 about threads (remove outdated warning). Closes #151.
717
720
718 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
721 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
719
722
720 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
723 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
721 in trunk (note that this made it into the 0.8.1 release already,
724 in trunk (note that this made it into the 0.8.1 release already,
722 but the changelogs didn't get coordinated). Many thanks to Gael
725 but the changelogs didn't get coordinated). Many thanks to Gael
723 Varoquaux <gael.varoquaux-AT-normalesup.org>
726 Varoquaux <gael.varoquaux-AT-normalesup.org>
724
727
725 2007-05-09 *** Released version 0.8.1
728 2007-05-09 *** Released version 0.8.1
726
729
727 2007-05-10 Walter Doerwald <walter@livinglogic.de>
730 2007-05-10 Walter Doerwald <walter@livinglogic.de>
728
731
729 * IPython/Extensions/igrid.py: Incorporate html help into
732 * IPython/Extensions/igrid.py: Incorporate html help into
730 the module, so we don't have to search for the file.
733 the module, so we don't have to search for the file.
731
734
732 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
735 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
733
736
734 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
737 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
735
738
736 2007-04-30 Ville Vainio <vivainio@gmail.com>
739 2007-04-30 Ville Vainio <vivainio@gmail.com>
737
740
738 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
741 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
739 user has illegal (non-ascii) home directory name
742 user has illegal (non-ascii) home directory name
740
743
741 2007-04-27 Ville Vainio <vivainio@gmail.com>
744 2007-04-27 Ville Vainio <vivainio@gmail.com>
742
745
743 * platutils_win32.py: implement set_term_title for windows
746 * platutils_win32.py: implement set_term_title for windows
744
747
745 * Update version number
748 * Update version number
746
749
747 * ipy_profile_sh.py: more informative prompt (2 dir levels)
750 * ipy_profile_sh.py: more informative prompt (2 dir levels)
748
751
749 2007-04-26 Walter Doerwald <walter@livinglogic.de>
752 2007-04-26 Walter Doerwald <walter@livinglogic.de>
750
753
751 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
754 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
752 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
755 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
753 bug discovered by Ville).
756 bug discovered by Ville).
754
757
755 2007-04-26 Ville Vainio <vivainio@gmail.com>
758 2007-04-26 Ville Vainio <vivainio@gmail.com>
756
759
757 * Extensions/ipy_completers.py: Olivier's module completer now
760 * Extensions/ipy_completers.py: Olivier's module completer now
758 saves the list of root modules if it takes > 4 secs on the first run.
761 saves the list of root modules if it takes > 4 secs on the first run.
759
762
760 * Magic.py (%rehashx): %rehashx now clears the completer cache
763 * Magic.py (%rehashx): %rehashx now clears the completer cache
761
764
762
765
763 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
766 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
764
767
765 * ipython.el: fix incorrect color scheme, reported by Stefan.
768 * ipython.el: fix incorrect color scheme, reported by Stefan.
766 Closes #149.
769 Closes #149.
767
770
768 * IPython/PyColorize.py (Parser.format2): fix state-handling
771 * IPython/PyColorize.py (Parser.format2): fix state-handling
769 logic. I still don't like how that code handles state, but at
772 logic. I still don't like how that code handles state, but at
770 least now it should be correct, if inelegant. Closes #146.
773 least now it should be correct, if inelegant. Closes #146.
771
774
772 2007-04-25 Ville Vainio <vivainio@gmail.com>
775 2007-04-25 Ville Vainio <vivainio@gmail.com>
773
776
774 * Extensions/ipy_which.py: added extension for %which magic, works
777 * Extensions/ipy_which.py: added extension for %which magic, works
775 a lot like unix 'which' but also finds and expands aliases, and
778 a lot like unix 'which' but also finds and expands aliases, and
776 allows wildcards.
779 allows wildcards.
777
780
778 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
781 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
779 as opposed to returning nothing.
782 as opposed to returning nothing.
780
783
781 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
784 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
782 ipy_stock_completers on default profile, do import on sh profile.
785 ipy_stock_completers on default profile, do import on sh profile.
783
786
784 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
787 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
785
788
786 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
789 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
787 like ipython.py foo.py which raised a IndexError.
790 like ipython.py foo.py which raised a IndexError.
788
791
789 2007-04-21 Ville Vainio <vivainio@gmail.com>
792 2007-04-21 Ville Vainio <vivainio@gmail.com>
790
793
791 * Extensions/ipy_extutil.py: added extension to manage other ipython
794 * Extensions/ipy_extutil.py: added extension to manage other ipython
792 extensions. Now only supports 'ls' == list extensions.
795 extensions. Now only supports 'ls' == list extensions.
793
796
794 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
797 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
795
798
796 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
799 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
797 would prevent use of the exception system outside of a running
800 would prevent use of the exception system outside of a running
798 IPython instance.
801 IPython instance.
799
802
800 2007-04-20 Ville Vainio <vivainio@gmail.com>
803 2007-04-20 Ville Vainio <vivainio@gmail.com>
801
804
802 * Extensions/ipy_render.py: added extension for easy
805 * Extensions/ipy_render.py: added extension for easy
803 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
806 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
804 'Iptl' template notation,
807 'Iptl' template notation,
805
808
806 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
809 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
807 safer & faster 'import' completer.
810 safer & faster 'import' completer.
808
811
809 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
812 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
810 and _ip.defalias(name, command).
813 and _ip.defalias(name, command).
811
814
812 * Extensions/ipy_exportdb.py: New extension for exporting all the
815 * Extensions/ipy_exportdb.py: New extension for exporting all the
813 %store'd data in a portable format (normal ipapi calls like
816 %store'd data in a portable format (normal ipapi calls like
814 defmacro() etc.)
817 defmacro() etc.)
815
818
816 2007-04-19 Ville Vainio <vivainio@gmail.com>
819 2007-04-19 Ville Vainio <vivainio@gmail.com>
817
820
818 * upgrade_dir.py: skip junk files like *.pyc
821 * upgrade_dir.py: skip junk files like *.pyc
819
822
820 * Release.py: version number to 0.8.1
823 * Release.py: version number to 0.8.1
821
824
822 2007-04-18 Ville Vainio <vivainio@gmail.com>
825 2007-04-18 Ville Vainio <vivainio@gmail.com>
823
826
824 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
827 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
825 and later on win32.
828 and later on win32.
826
829
827 2007-04-16 Ville Vainio <vivainio@gmail.com>
830 2007-04-16 Ville Vainio <vivainio@gmail.com>
828
831
829 * iplib.py (showtraceback): Do not crash when running w/o readline.
832 * iplib.py (showtraceback): Do not crash when running w/o readline.
830
833
831 2007-04-12 Walter Doerwald <walter@livinglogic.de>
834 2007-04-12 Walter Doerwald <walter@livinglogic.de>
832
835
833 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
836 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
834 sorted (case sensitive with files and dirs mixed).
837 sorted (case sensitive with files and dirs mixed).
835
838
836 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
839 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
837
840
838 * IPython/Release.py (version): Open trunk for 0.8.1 development.
841 * IPython/Release.py (version): Open trunk for 0.8.1 development.
839
842
840 2007-04-10 *** Released version 0.8.0
843 2007-04-10 *** Released version 0.8.0
841
844
842 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
845 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
843
846
844 * Tag 0.8.0 for release.
847 * Tag 0.8.0 for release.
845
848
846 * IPython/iplib.py (reloadhist): add API function to cleanly
849 * IPython/iplib.py (reloadhist): add API function to cleanly
847 reload the readline history, which was growing inappropriately on
850 reload the readline history, which was growing inappropriately on
848 every %run call.
851 every %run call.
849
852
850 * win32_manual_post_install.py (run): apply last part of Nicolas
853 * win32_manual_post_install.py (run): apply last part of Nicolas
851 Pernetty's patch (I'd accidentally applied it in a different
854 Pernetty's patch (I'd accidentally applied it in a different
852 directory and this particular file didn't get patched).
855 directory and this particular file didn't get patched).
853
856
854 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
857 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
855
858
856 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
859 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
857 find the main thread id and use the proper API call. Thanks to
860 find the main thread id and use the proper API call. Thanks to
858 Stefan for the fix.
861 Stefan for the fix.
859
862
860 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
863 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
861 unit tests to reflect fixed ticket #52, and add more tests sent by
864 unit tests to reflect fixed ticket #52, and add more tests sent by
862 him.
865 him.
863
866
864 * IPython/iplib.py (raw_input): restore the readline completer
867 * IPython/iplib.py (raw_input): restore the readline completer
865 state on every input, in case third-party code messed it up.
868 state on every input, in case third-party code messed it up.
866 (_prefilter): revert recent addition of early-escape checks which
869 (_prefilter): revert recent addition of early-escape checks which
867 prevent many valid alias calls from working.
870 prevent many valid alias calls from working.
868
871
869 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
872 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
870 flag for sigint handler so we don't run a full signal() call on
873 flag for sigint handler so we don't run a full signal() call on
871 each runcode access.
874 each runcode access.
872
875
873 * IPython/Magic.py (magic_whos): small improvement to diagnostic
876 * IPython/Magic.py (magic_whos): small improvement to diagnostic
874 message.
877 message.
875
878
876 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
879 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
877
880
878 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
881 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
879 asynchronous exceptions working, i.e., Ctrl-C can actually
882 asynchronous exceptions working, i.e., Ctrl-C can actually
880 interrupt long-running code in the multithreaded shells.
883 interrupt long-running code in the multithreaded shells.
881
884
882 This is using Tomer Filiba's great ctypes-based trick:
885 This is using Tomer Filiba's great ctypes-based trick:
883 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
886 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
884 this in the past, but hadn't been able to make it work before. So
887 this in the past, but hadn't been able to make it work before. So
885 far it looks like it's actually running, but this needs more
888 far it looks like it's actually running, but this needs more
886 testing. If it really works, I'll be *very* happy, and we'll owe
889 testing. If it really works, I'll be *very* happy, and we'll owe
887 a huge thank you to Tomer. My current implementation is ugly,
890 a huge thank you to Tomer. My current implementation is ugly,
888 hackish and uses nasty globals, but I don't want to try and clean
891 hackish and uses nasty globals, but I don't want to try and clean
889 anything up until we know if it actually works.
892 anything up until we know if it actually works.
890
893
891 NOTE: this feature needs ctypes to work. ctypes is included in
894 NOTE: this feature needs ctypes to work. ctypes is included in
892 Python2.5, but 2.4 users will need to manually install it. This
895 Python2.5, but 2.4 users will need to manually install it. This
893 feature makes multi-threaded shells so much more usable that it's
896 feature makes multi-threaded shells so much more usable that it's
894 a minor price to pay (ctypes is very easy to install, already a
897 a minor price to pay (ctypes is very easy to install, already a
895 requirement for win32 and available in major linux distros).
898 requirement for win32 and available in major linux distros).
896
899
897 2007-04-04 Ville Vainio <vivainio@gmail.com>
900 2007-04-04 Ville Vainio <vivainio@gmail.com>
898
901
899 * Extensions/ipy_completers.py, ipy_stock_completers.py:
902 * Extensions/ipy_completers.py, ipy_stock_completers.py:
900 Moved implementations of 'bundled' completers to ipy_completers.py,
903 Moved implementations of 'bundled' completers to ipy_completers.py,
901 they are only enabled in ipy_stock_completers.py.
904 they are only enabled in ipy_stock_completers.py.
902
905
903 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
906 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
904
907
905 * IPython/PyColorize.py (Parser.format2): Fix identation of
908 * IPython/PyColorize.py (Parser.format2): Fix identation of
906 colorzied output and return early if color scheme is NoColor, to
909 colorzied output and return early if color scheme is NoColor, to
907 avoid unnecessary and expensive tokenization. Closes #131.
910 avoid unnecessary and expensive tokenization. Closes #131.
908
911
909 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
912 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
910
913
911 * IPython/Debugger.py: disable the use of pydb version 1.17. It
914 * IPython/Debugger.py: disable the use of pydb version 1.17. It
912 has a critical bug (a missing import that makes post-mortem not
915 has a critical bug (a missing import that makes post-mortem not
913 work at all). Unfortunately as of this time, this is the version
916 work at all). Unfortunately as of this time, this is the version
914 shipped with Ubuntu Edgy, so quite a few people have this one. I
917 shipped with Ubuntu Edgy, so quite a few people have this one. I
915 hope Edgy will update to a more recent package.
918 hope Edgy will update to a more recent package.
916
919
917 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
920 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
918
921
919 * IPython/iplib.py (_prefilter): close #52, second part of a patch
922 * IPython/iplib.py (_prefilter): close #52, second part of a patch
920 set by Stefan (only the first part had been applied before).
923 set by Stefan (only the first part had been applied before).
921
924
922 * IPython/Extensions/ipy_stock_completers.py (module_completer):
925 * IPython/Extensions/ipy_stock_completers.py (module_completer):
923 remove usage of the dangerous pkgutil.walk_packages(). See
926 remove usage of the dangerous pkgutil.walk_packages(). See
924 details in comments left in the code.
927 details in comments left in the code.
925
928
926 * IPython/Magic.py (magic_whos): add support for numpy arrays
929 * IPython/Magic.py (magic_whos): add support for numpy arrays
927 similar to what we had for Numeric.
930 similar to what we had for Numeric.
928
931
929 * IPython/completer.py (IPCompleter.complete): extend the
932 * IPython/completer.py (IPCompleter.complete): extend the
930 complete() call API to support completions by other mechanisms
933 complete() call API to support completions by other mechanisms
931 than readline. Closes #109.
934 than readline. Closes #109.
932
935
933 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
936 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
934 protect against a bug in Python's execfile(). Closes #123.
937 protect against a bug in Python's execfile(). Closes #123.
935
938
936 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
939 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
937
940
938 * IPython/iplib.py (split_user_input): ensure that when splitting
941 * IPython/iplib.py (split_user_input): ensure that when splitting
939 user input, the part that can be treated as a python name is pure
942 user input, the part that can be treated as a python name is pure
940 ascii (Python identifiers MUST be pure ascii). Part of the
943 ascii (Python identifiers MUST be pure ascii). Part of the
941 ongoing Unicode support work.
944 ongoing Unicode support work.
942
945
943 * IPython/Prompts.py (prompt_specials_color): Add \N for the
946 * IPython/Prompts.py (prompt_specials_color): Add \N for the
944 actual prompt number, without any coloring. This allows users to
947 actual prompt number, without any coloring. This allows users to
945 produce numbered prompts with their own colors. Added after a
948 produce numbered prompts with their own colors. Added after a
946 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
949 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
947
950
948 2007-03-31 Walter Doerwald <walter@livinglogic.de>
951 2007-03-31 Walter Doerwald <walter@livinglogic.de>
949
952
950 * IPython/Extensions/igrid.py: Map the return key
953 * IPython/Extensions/igrid.py: Map the return key
951 to enter() and shift-return to enterattr().
954 to enter() and shift-return to enterattr().
952
955
953 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
956 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
954
957
955 * IPython/Magic.py (magic_psearch): add unicode support by
958 * IPython/Magic.py (magic_psearch): add unicode support by
956 encoding to ascii the input, since this routine also only deals
959 encoding to ascii the input, since this routine also only deals
957 with valid Python names. Fixes a bug reported by Stefan.
960 with valid Python names. Fixes a bug reported by Stefan.
958
961
959 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
962 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
960
963
961 * IPython/Magic.py (_inspect): convert unicode input into ascii
964 * IPython/Magic.py (_inspect): convert unicode input into ascii
962 before trying to evaluate it as a Python identifier. This fixes a
965 before trying to evaluate it as a Python identifier. This fixes a
963 problem that the new unicode support had introduced when analyzing
966 problem that the new unicode support had introduced when analyzing
964 long definition lines for functions.
967 long definition lines for functions.
965
968
966 2007-03-24 Walter Doerwald <walter@livinglogic.de>
969 2007-03-24 Walter Doerwald <walter@livinglogic.de>
967
970
968 * IPython/Extensions/igrid.py: Fix picking. Using
971 * IPython/Extensions/igrid.py: Fix picking. Using
969 igrid with wxPython 2.6 and -wthread should work now.
972 igrid with wxPython 2.6 and -wthread should work now.
970 igrid.display() simply tries to create a frame without
973 igrid.display() simply tries to create a frame without
971 an application. Only if this fails an application is created.
974 an application. Only if this fails an application is created.
972
975
973 2007-03-23 Walter Doerwald <walter@livinglogic.de>
976 2007-03-23 Walter Doerwald <walter@livinglogic.de>
974
977
975 * IPython/Extensions/path.py: Updated to version 2.2.
978 * IPython/Extensions/path.py: Updated to version 2.2.
976
979
977 2007-03-23 Ville Vainio <vivainio@gmail.com>
980 2007-03-23 Ville Vainio <vivainio@gmail.com>
978
981
979 * iplib.py: recursive alias expansion now works better, so that
982 * iplib.py: recursive alias expansion now works better, so that
980 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
983 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
981 doesn't trip up the process, if 'd' has been aliased to 'ls'.
984 doesn't trip up the process, if 'd' has been aliased to 'ls'.
982
985
983 * Extensions/ipy_gnuglobal.py added, provides %global magic
986 * Extensions/ipy_gnuglobal.py added, provides %global magic
984 for users of http://www.gnu.org/software/global
987 for users of http://www.gnu.org/software/global
985
988
986 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
989 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
987 Closes #52. Patch by Stefan van der Walt.
990 Closes #52. Patch by Stefan van der Walt.
988
991
989 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
992 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
990
993
991 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
994 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
992 respect the __file__ attribute when using %run. Thanks to a bug
995 respect the __file__ attribute when using %run. Thanks to a bug
993 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
996 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
994
997
995 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
998 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
996
999
997 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
1000 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
998 input. Patch sent by Stefan.
1001 input. Patch sent by Stefan.
999
1002
1000 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1003 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1001 * IPython/Extensions/ipy_stock_completer.py
1004 * IPython/Extensions/ipy_stock_completer.py
1002 shlex_split, fix bug in shlex_split. len function
1005 shlex_split, fix bug in shlex_split. len function
1003 call was missing an if statement. Caused shlex_split to
1006 call was missing an if statement. Caused shlex_split to
1004 sometimes return "" as last element.
1007 sometimes return "" as last element.
1005
1008
1006 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
1009 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
1007
1010
1008 * IPython/completer.py
1011 * IPython/completer.py
1009 (IPCompleter.file_matches.single_dir_expand): fix a problem
1012 (IPCompleter.file_matches.single_dir_expand): fix a problem
1010 reported by Stefan, where directories containign a single subdir
1013 reported by Stefan, where directories containign a single subdir
1011 would be completed too early.
1014 would be completed too early.
1012
1015
1013 * IPython/Shell.py (_load_pylab): Make the execution of 'from
1016 * IPython/Shell.py (_load_pylab): Make the execution of 'from
1014 pylab import *' when -pylab is given be optional. A new flag,
1017 pylab import *' when -pylab is given be optional. A new flag,
1015 pylab_import_all controls this behavior, the default is True for
1018 pylab_import_all controls this behavior, the default is True for
1016 backwards compatibility.
1019 backwards compatibility.
1017
1020
1018 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
1021 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
1019 modified) R. Bernstein's patch for fully syntax highlighted
1022 modified) R. Bernstein's patch for fully syntax highlighted
1020 tracebacks. The functionality is also available under ultraTB for
1023 tracebacks. The functionality is also available under ultraTB for
1021 non-ipython users (someone using ultraTB but outside an ipython
1024 non-ipython users (someone using ultraTB but outside an ipython
1022 session). They can select the color scheme by setting the
1025 session). They can select the color scheme by setting the
1023 module-level global DEFAULT_SCHEME. The highlight functionality
1026 module-level global DEFAULT_SCHEME. The highlight functionality
1024 also works when debugging.
1027 also works when debugging.
1025
1028
1026 * IPython/genutils.py (IOStream.close): small patch by
1029 * IPython/genutils.py (IOStream.close): small patch by
1027 R. Bernstein for improved pydb support.
1030 R. Bernstein for improved pydb support.
1028
1031
1029 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
1032 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
1030 DaveS <davls@telus.net> to improve support of debugging under
1033 DaveS <davls@telus.net> to improve support of debugging under
1031 NTEmacs, including improved pydb behavior.
1034 NTEmacs, including improved pydb behavior.
1032
1035
1033 * IPython/Magic.py (magic_prun): Fix saving of profile info for
1036 * IPython/Magic.py (magic_prun): Fix saving of profile info for
1034 Python 2.5, where the stats object API changed a little. Thanks
1037 Python 2.5, where the stats object API changed a little. Thanks
1035 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
1038 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
1036
1039
1037 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
1040 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
1038 Pernetty's patch to improve support for (X)Emacs under Win32.
1041 Pernetty's patch to improve support for (X)Emacs under Win32.
1039
1042
1040 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
1043 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
1041
1044
1042 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1045 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1043 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1046 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1044 a report by Nik Tautenhahn.
1047 a report by Nik Tautenhahn.
1045
1048
1046 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1049 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1047
1050
1048 * setup.py: Add the igrid help files to the list of data files
1051 * setup.py: Add the igrid help files to the list of data files
1049 to be installed alongside igrid.
1052 to be installed alongside igrid.
1050 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1053 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1051 Show the input object of the igrid browser as the window tile.
1054 Show the input object of the igrid browser as the window tile.
1052 Show the object the cursor is on in the statusbar.
1055 Show the object the cursor is on in the statusbar.
1053
1056
1054 2007-03-15 Ville Vainio <vivainio@gmail.com>
1057 2007-03-15 Ville Vainio <vivainio@gmail.com>
1055
1058
1056 * Extensions/ipy_stock_completers.py: Fixed exception
1059 * Extensions/ipy_stock_completers.py: Fixed exception
1057 on mismatching quotes in %run completer. Patch by
1060 on mismatching quotes in %run completer. Patch by
1058 Jorgen Stenarson. Closes #127.
1061 Jorgen Stenarson. Closes #127.
1059
1062
1060 2007-03-14 Ville Vainio <vivainio@gmail.com>
1063 2007-03-14 Ville Vainio <vivainio@gmail.com>
1061
1064
1062 * Extensions/ext_rehashdir.py: Do not do auto_alias
1065 * Extensions/ext_rehashdir.py: Do not do auto_alias
1063 in %rehashdir, it clobbers %store'd aliases.
1066 in %rehashdir, it clobbers %store'd aliases.
1064
1067
1065 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1068 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1066 (beefed up %env) imported for sh profile.
1069 (beefed up %env) imported for sh profile.
1067
1070
1068 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1071 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1069
1072
1070 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1073 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1071 as the default browser.
1074 as the default browser.
1072 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1075 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1073 As igrid displays all attributes it ever encounters, fetch() (which has
1076 As igrid displays all attributes it ever encounters, fetch() (which has
1074 been renamed to _fetch()) doesn't have to recalculate the display attributes
1077 been renamed to _fetch()) doesn't have to recalculate the display attributes
1075 every time a new item is fetched. This should speed up scrolling.
1078 every time a new item is fetched. This should speed up scrolling.
1076
1079
1077 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1080 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1078
1081
1079 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1082 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1080 Schmolck's recently reported tab-completion bug (my previous one
1083 Schmolck's recently reported tab-completion bug (my previous one
1081 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1084 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1082
1085
1083 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1086 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1084
1087
1085 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1088 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1086 Close help window if exiting igrid.
1089 Close help window if exiting igrid.
1087
1090
1088 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1091 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1089
1092
1090 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1093 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1091 before calling functions from readline.
1094 before calling functions from readline.
1092
1095
1093 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1096 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1094
1097
1095 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1098 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1096 igrid is a wxPython-based display object for ipipe. If your system has
1099 igrid is a wxPython-based display object for ipipe. If your system has
1097 wx installed igrid will be the default display. Without wx ipipe falls
1100 wx installed igrid will be the default display. Without wx ipipe falls
1098 back to ibrowse (which needs curses). If no curses is installed ipipe
1101 back to ibrowse (which needs curses). If no curses is installed ipipe
1099 falls back to idump.
1102 falls back to idump.
1100
1103
1101 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1104 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1102
1105
1103 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1106 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1104 my changes from yesterday, they introduced bugs. Will reactivate
1107 my changes from yesterday, they introduced bugs. Will reactivate
1105 once I get a correct solution, which will be much easier thanks to
1108 once I get a correct solution, which will be much easier thanks to
1106 Dan Milstein's new prefilter test suite.
1109 Dan Milstein's new prefilter test suite.
1107
1110
1108 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1111 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1109
1112
1110 * IPython/iplib.py (split_user_input): fix input splitting so we
1113 * IPython/iplib.py (split_user_input): fix input splitting so we
1111 don't attempt attribute accesses on things that can't possibly be
1114 don't attempt attribute accesses on things that can't possibly be
1112 valid Python attributes. After a bug report by Alex Schmolck.
1115 valid Python attributes. After a bug report by Alex Schmolck.
1113 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1116 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1114 %magic with explicit % prefix.
1117 %magic with explicit % prefix.
1115
1118
1116 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1119 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1117
1120
1118 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1121 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1119 avoid a DeprecationWarning from GTK.
1122 avoid a DeprecationWarning from GTK.
1120
1123
1121 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1124 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1122
1125
1123 * IPython/genutils.py (clock): I modified clock() to return total
1126 * IPython/genutils.py (clock): I modified clock() to return total
1124 time, user+system. This is a more commonly needed metric. I also
1127 time, user+system. This is a more commonly needed metric. I also
1125 introduced the new clocku/clocks to get only user/system time if
1128 introduced the new clocku/clocks to get only user/system time if
1126 one wants those instead.
1129 one wants those instead.
1127
1130
1128 ***WARNING: API CHANGE*** clock() used to return only user time,
1131 ***WARNING: API CHANGE*** clock() used to return only user time,
1129 so if you want exactly the same results as before, use clocku
1132 so if you want exactly the same results as before, use clocku
1130 instead.
1133 instead.
1131
1134
1132 2007-02-22 Ville Vainio <vivainio@gmail.com>
1135 2007-02-22 Ville Vainio <vivainio@gmail.com>
1133
1136
1134 * IPython/Extensions/ipy_p4.py: Extension for improved
1137 * IPython/Extensions/ipy_p4.py: Extension for improved
1135 p4 (perforce version control system) experience.
1138 p4 (perforce version control system) experience.
1136 Adds %p4 magic with p4 command completion and
1139 Adds %p4 magic with p4 command completion and
1137 automatic -G argument (marshall output as python dict)
1140 automatic -G argument (marshall output as python dict)
1138
1141
1139 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1142 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1140
1143
1141 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1144 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1142 stop marks.
1145 stop marks.
1143 (ClearingMixin): a simple mixin to easily make a Demo class clear
1146 (ClearingMixin): a simple mixin to easily make a Demo class clear
1144 the screen in between blocks and have empty marquees. The
1147 the screen in between blocks and have empty marquees. The
1145 ClearDemo and ClearIPDemo classes that use it are included.
1148 ClearDemo and ClearIPDemo classes that use it are included.
1146
1149
1147 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1150 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1148
1151
1149 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1152 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1150 protect against exceptions at Python shutdown time. Patch
1153 protect against exceptions at Python shutdown time. Patch
1151 sumbmitted to upstream.
1154 sumbmitted to upstream.
1152
1155
1153 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1156 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1154
1157
1155 * IPython/Extensions/ibrowse.py: If entering the first object level
1158 * IPython/Extensions/ibrowse.py: If entering the first object level
1156 (i.e. the object for which the browser has been started) fails,
1159 (i.e. the object for which the browser has been started) fails,
1157 now the error is raised directly (aborting the browser) instead of
1160 now the error is raised directly (aborting the browser) instead of
1158 running into an empty levels list later.
1161 running into an empty levels list later.
1159
1162
1160 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1163 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1161
1164
1162 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1165 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1163 for the noitem object.
1166 for the noitem object.
1164
1167
1165 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1168 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1166
1169
1167 * IPython/completer.py (Completer.attr_matches): Fix small
1170 * IPython/completer.py (Completer.attr_matches): Fix small
1168 tab-completion bug with Enthought Traits objects with units.
1171 tab-completion bug with Enthought Traits objects with units.
1169 Thanks to a bug report by Tom Denniston
1172 Thanks to a bug report by Tom Denniston
1170 <tom.denniston-AT-alum.dartmouth.org>.
1173 <tom.denniston-AT-alum.dartmouth.org>.
1171
1174
1172 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1175 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1173
1176
1174 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1177 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1175 bug where only .ipy or .py would be completed. Once the first
1178 bug where only .ipy or .py would be completed. Once the first
1176 argument to %run has been given, all completions are valid because
1179 argument to %run has been given, all completions are valid because
1177 they are the arguments to the script, which may well be non-python
1180 they are the arguments to the script, which may well be non-python
1178 filenames.
1181 filenames.
1179
1182
1180 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1183 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1181 to irunner to allow it to correctly support real doctesting of
1184 to irunner to allow it to correctly support real doctesting of
1182 out-of-process ipython code.
1185 out-of-process ipython code.
1183
1186
1184 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1187 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1185 title an option (-noterm_title) because it completely breaks
1188 title an option (-noterm_title) because it completely breaks
1186 doctesting.
1189 doctesting.
1187
1190
1188 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1191 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1189
1192
1190 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1193 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1191
1194
1192 * IPython/irunner.py (main): fix small bug where extensions were
1195 * IPython/irunner.py (main): fix small bug where extensions were
1193 not being correctly recognized.
1196 not being correctly recognized.
1194
1197
1195 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1198 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1196
1199
1197 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1200 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1198 a string containing a single line yields the string itself as the
1201 a string containing a single line yields the string itself as the
1199 only item.
1202 only item.
1200
1203
1201 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1204 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1202 object if it's the same as the one on the last level (This avoids
1205 object if it's the same as the one on the last level (This avoids
1203 infinite recursion for one line strings).
1206 infinite recursion for one line strings).
1204
1207
1205 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1208 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1206
1209
1207 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1210 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1208 all output streams before printing tracebacks. This ensures that
1211 all output streams before printing tracebacks. This ensures that
1209 user output doesn't end up interleaved with traceback output.
1212 user output doesn't end up interleaved with traceback output.
1210
1213
1211 2007-01-10 Ville Vainio <vivainio@gmail.com>
1214 2007-01-10 Ville Vainio <vivainio@gmail.com>
1212
1215
1213 * Extensions/envpersist.py: Turbocharged %env that remembers
1216 * Extensions/envpersist.py: Turbocharged %env that remembers
1214 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1217 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1215 "%env VISUAL=jed".
1218 "%env VISUAL=jed".
1216
1219
1217 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1220 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1218
1221
1219 * IPython/iplib.py (showtraceback): ensure that we correctly call
1222 * IPython/iplib.py (showtraceback): ensure that we correctly call
1220 custom handlers in all cases (some with pdb were slipping through,
1223 custom handlers in all cases (some with pdb were slipping through,
1221 but I'm not exactly sure why).
1224 but I'm not exactly sure why).
1222
1225
1223 * IPython/Debugger.py (Tracer.__init__): added new class to
1226 * IPython/Debugger.py (Tracer.__init__): added new class to
1224 support set_trace-like usage of IPython's enhanced debugger.
1227 support set_trace-like usage of IPython's enhanced debugger.
1225
1228
1226 2006-12-24 Ville Vainio <vivainio@gmail.com>
1229 2006-12-24 Ville Vainio <vivainio@gmail.com>
1227
1230
1228 * ipmaker.py: more informative message when ipy_user_conf
1231 * ipmaker.py: more informative message when ipy_user_conf
1229 import fails (suggest running %upgrade).
1232 import fails (suggest running %upgrade).
1230
1233
1231 * tools/run_ipy_in_profiler.py: Utility to see where
1234 * tools/run_ipy_in_profiler.py: Utility to see where
1232 the time during IPython startup is spent.
1235 the time during IPython startup is spent.
1233
1236
1234 2006-12-20 Ville Vainio <vivainio@gmail.com>
1237 2006-12-20 Ville Vainio <vivainio@gmail.com>
1235
1238
1236 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1239 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1237
1240
1238 * ipapi.py: Add new ipapi method, expand_alias.
1241 * ipapi.py: Add new ipapi method, expand_alias.
1239
1242
1240 * Release.py: Bump up version to 0.7.4.svn
1243 * Release.py: Bump up version to 0.7.4.svn
1241
1244
1242 2006-12-17 Ville Vainio <vivainio@gmail.com>
1245 2006-12-17 Ville Vainio <vivainio@gmail.com>
1243
1246
1244 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1247 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1245 to work properly on posix too
1248 to work properly on posix too
1246
1249
1247 * Release.py: Update revnum (version is still just 0.7.3).
1250 * Release.py: Update revnum (version is still just 0.7.3).
1248
1251
1249 2006-12-15 Ville Vainio <vivainio@gmail.com>
1252 2006-12-15 Ville Vainio <vivainio@gmail.com>
1250
1253
1251 * scripts/ipython_win_post_install: create ipython.py in
1254 * scripts/ipython_win_post_install: create ipython.py in
1252 prefix + "/scripts".
1255 prefix + "/scripts".
1253
1256
1254 * Release.py: Update version to 0.7.3.
1257 * Release.py: Update version to 0.7.3.
1255
1258
1256 2006-12-14 Ville Vainio <vivainio@gmail.com>
1259 2006-12-14 Ville Vainio <vivainio@gmail.com>
1257
1260
1258 * scripts/ipython_win_post_install: Overwrite old shortcuts
1261 * scripts/ipython_win_post_install: Overwrite old shortcuts
1259 if they already exist
1262 if they already exist
1260
1263
1261 * Release.py: release 0.7.3rc2
1264 * Release.py: release 0.7.3rc2
1262
1265
1263 2006-12-13 Ville Vainio <vivainio@gmail.com>
1266 2006-12-13 Ville Vainio <vivainio@gmail.com>
1264
1267
1265 * Branch and update Release.py for 0.7.3rc1
1268 * Branch and update Release.py for 0.7.3rc1
1266
1269
1267 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1270 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1268
1271
1269 * IPython/Shell.py (IPShellWX): update for current WX naming
1272 * IPython/Shell.py (IPShellWX): update for current WX naming
1270 conventions, to avoid a deprecation warning with current WX
1273 conventions, to avoid a deprecation warning with current WX
1271 versions. Thanks to a report by Danny Shevitz.
1274 versions. Thanks to a report by Danny Shevitz.
1272
1275
1273 2006-12-12 Ville Vainio <vivainio@gmail.com>
1276 2006-12-12 Ville Vainio <vivainio@gmail.com>
1274
1277
1275 * ipmaker.py: apply david cournapeau's patch to make
1278 * ipmaker.py: apply david cournapeau's patch to make
1276 import_some work properly even when ipythonrc does
1279 import_some work properly even when ipythonrc does
1277 import_some on empty list (it was an old bug!).
1280 import_some on empty list (it was an old bug!).
1278
1281
1279 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1282 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1280 Add deprecation note to ipythonrc and a url to wiki
1283 Add deprecation note to ipythonrc and a url to wiki
1281 in ipy_user_conf.py
1284 in ipy_user_conf.py
1282
1285
1283
1286
1284 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1287 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1285 as if it was typed on IPython command prompt, i.e.
1288 as if it was typed on IPython command prompt, i.e.
1286 as IPython script.
1289 as IPython script.
1287
1290
1288 * example-magic.py, magic_grepl.py: remove outdated examples
1291 * example-magic.py, magic_grepl.py: remove outdated examples
1289
1292
1290 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1293 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1291
1294
1292 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1295 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1293 is called before any exception has occurred.
1296 is called before any exception has occurred.
1294
1297
1295 2006-12-08 Ville Vainio <vivainio@gmail.com>
1298 2006-12-08 Ville Vainio <vivainio@gmail.com>
1296
1299
1297 * Extensions/ipy_stock_completers.py: fix cd completer
1300 * Extensions/ipy_stock_completers.py: fix cd completer
1298 to translate /'s to \'s again.
1301 to translate /'s to \'s again.
1299
1302
1300 * completer.py: prevent traceback on file completions w/
1303 * completer.py: prevent traceback on file completions w/
1301 backslash.
1304 backslash.
1302
1305
1303 * Release.py: Update release number to 0.7.3b3 for release
1306 * Release.py: Update release number to 0.7.3b3 for release
1304
1307
1305 2006-12-07 Ville Vainio <vivainio@gmail.com>
1308 2006-12-07 Ville Vainio <vivainio@gmail.com>
1306
1309
1307 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1310 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1308 while executing external code. Provides more shell-like behaviour
1311 while executing external code. Provides more shell-like behaviour
1309 and overall better response to ctrl + C / ctrl + break.
1312 and overall better response to ctrl + C / ctrl + break.
1310
1313
1311 * tools/make_tarball.py: new script to create tarball straight from svn
1314 * tools/make_tarball.py: new script to create tarball straight from svn
1312 (setup.py sdist doesn't work on win32).
1315 (setup.py sdist doesn't work on win32).
1313
1316
1314 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1317 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1315 on dirnames with spaces and use the default completer instead.
1318 on dirnames with spaces and use the default completer instead.
1316
1319
1317 * Revision.py: Change version to 0.7.3b2 for release.
1320 * Revision.py: Change version to 0.7.3b2 for release.
1318
1321
1319 2006-12-05 Ville Vainio <vivainio@gmail.com>
1322 2006-12-05 Ville Vainio <vivainio@gmail.com>
1320
1323
1321 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1324 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1322 pydb patch 4 (rm debug printing, py 2.5 checking)
1325 pydb patch 4 (rm debug printing, py 2.5 checking)
1323
1326
1324 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1327 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1325 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1328 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1326 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1329 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1327 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1330 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1328 object the cursor was on before the refresh. The command "markrange" is
1331 object the cursor was on before the refresh. The command "markrange" is
1329 mapped to "%" now.
1332 mapped to "%" now.
1330 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1333 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1331
1334
1332 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1335 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1333
1336
1334 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1337 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1335 interactive debugger on the last traceback, without having to call
1338 interactive debugger on the last traceback, without having to call
1336 %pdb and rerun your code. Made minor changes in various modules,
1339 %pdb and rerun your code. Made minor changes in various modules,
1337 should automatically recognize pydb if available.
1340 should automatically recognize pydb if available.
1338
1341
1339 2006-11-28 Ville Vainio <vivainio@gmail.com>
1342 2006-11-28 Ville Vainio <vivainio@gmail.com>
1340
1343
1341 * completer.py: If the text start with !, show file completions
1344 * completer.py: If the text start with !, show file completions
1342 properly. This helps when trying to complete command name
1345 properly. This helps when trying to complete command name
1343 for shell escapes.
1346 for shell escapes.
1344
1347
1345 2006-11-27 Ville Vainio <vivainio@gmail.com>
1348 2006-11-27 Ville Vainio <vivainio@gmail.com>
1346
1349
1347 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1350 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1348 der Walt. Clean up svn and hg completers by using a common
1351 der Walt. Clean up svn and hg completers by using a common
1349 vcs_completer.
1352 vcs_completer.
1350
1353
1351 2006-11-26 Ville Vainio <vivainio@gmail.com>
1354 2006-11-26 Ville Vainio <vivainio@gmail.com>
1352
1355
1353 * Remove ipconfig and %config; you should use _ip.options structure
1356 * Remove ipconfig and %config; you should use _ip.options structure
1354 directly instead!
1357 directly instead!
1355
1358
1356 * genutils.py: add wrap_deprecated function for deprecating callables
1359 * genutils.py: add wrap_deprecated function for deprecating callables
1357
1360
1358 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1361 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1359 _ip.system instead. ipalias is redundant.
1362 _ip.system instead. ipalias is redundant.
1360
1363
1361 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1364 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1362 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1365 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1363 explicit.
1366 explicit.
1364
1367
1365 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1368 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1366 completer. Try it by entering 'hg ' and pressing tab.
1369 completer. Try it by entering 'hg ' and pressing tab.
1367
1370
1368 * macro.py: Give Macro a useful __repr__ method
1371 * macro.py: Give Macro a useful __repr__ method
1369
1372
1370 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1373 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1371
1374
1372 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1375 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1373 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1376 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1374 we don't get a duplicate ipipe module, where registration of the xrepr
1377 we don't get a duplicate ipipe module, where registration of the xrepr
1375 implementation for Text is useless.
1378 implementation for Text is useless.
1376
1379
1377 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1380 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1378
1381
1379 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1382 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1380
1383
1381 2006-11-24 Ville Vainio <vivainio@gmail.com>
1384 2006-11-24 Ville Vainio <vivainio@gmail.com>
1382
1385
1383 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1386 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1384 try to use "cProfile" instead of the slower pure python
1387 try to use "cProfile" instead of the slower pure python
1385 "profile"
1388 "profile"
1386
1389
1387 2006-11-23 Ville Vainio <vivainio@gmail.com>
1390 2006-11-23 Ville Vainio <vivainio@gmail.com>
1388
1391
1389 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1392 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1390 Qt+IPython+Designer link in documentation.
1393 Qt+IPython+Designer link in documentation.
1391
1394
1392 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1395 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1393 correct Pdb object to %pydb.
1396 correct Pdb object to %pydb.
1394
1397
1395
1398
1396 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1399 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1397 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1400 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1398 generic xrepr(), otherwise the list implementation would kick in.
1401 generic xrepr(), otherwise the list implementation would kick in.
1399
1402
1400 2006-11-21 Ville Vainio <vivainio@gmail.com>
1403 2006-11-21 Ville Vainio <vivainio@gmail.com>
1401
1404
1402 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1405 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1403 with one from UserConfig.
1406 with one from UserConfig.
1404
1407
1405 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1408 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1406 it was missing which broke the sh profile.
1409 it was missing which broke the sh profile.
1407
1410
1408 * completer.py: file completer now uses explicit '/' instead
1411 * completer.py: file completer now uses explicit '/' instead
1409 of os.path.join, expansion of 'foo' was broken on win32
1412 of os.path.join, expansion of 'foo' was broken on win32
1410 if there was one directory with name 'foobar'.
1413 if there was one directory with name 'foobar'.
1411
1414
1412 * A bunch of patches from Kirill Smelkov:
1415 * A bunch of patches from Kirill Smelkov:
1413
1416
1414 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1417 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1415
1418
1416 * [patch 7/9] Implement %page -r (page in raw mode) -
1419 * [patch 7/9] Implement %page -r (page in raw mode) -
1417
1420
1418 * [patch 5/9] ScientificPython webpage has moved
1421 * [patch 5/9] ScientificPython webpage has moved
1419
1422
1420 * [patch 4/9] The manual mentions %ds, should be %dhist
1423 * [patch 4/9] The manual mentions %ds, should be %dhist
1421
1424
1422 * [patch 3/9] Kill old bits from %prun doc.
1425 * [patch 3/9] Kill old bits from %prun doc.
1423
1426
1424 * [patch 1/9] Fix typos here and there.
1427 * [patch 1/9] Fix typos here and there.
1425
1428
1426 2006-11-08 Ville Vainio <vivainio@gmail.com>
1429 2006-11-08 Ville Vainio <vivainio@gmail.com>
1427
1430
1428 * completer.py (attr_matches): catch all exceptions raised
1431 * completer.py (attr_matches): catch all exceptions raised
1429 by eval of expr with dots.
1432 by eval of expr with dots.
1430
1433
1431 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1434 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1432
1435
1433 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1436 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1434 input if it starts with whitespace. This allows you to paste
1437 input if it starts with whitespace. This allows you to paste
1435 indented input from any editor without manually having to type in
1438 indented input from any editor without manually having to type in
1436 the 'if 1:', which is convenient when working interactively.
1439 the 'if 1:', which is convenient when working interactively.
1437 Slightly modifed version of a patch by Bo Peng
1440 Slightly modifed version of a patch by Bo Peng
1438 <bpeng-AT-rice.edu>.
1441 <bpeng-AT-rice.edu>.
1439
1442
1440 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1443 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1441
1444
1442 * IPython/irunner.py (main): modified irunner so it automatically
1445 * IPython/irunner.py (main): modified irunner so it automatically
1443 recognizes the right runner to use based on the extension (.py for
1446 recognizes the right runner to use based on the extension (.py for
1444 python, .ipy for ipython and .sage for sage).
1447 python, .ipy for ipython and .sage for sage).
1445
1448
1446 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1449 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1447 visible in ipapi as ip.config(), to programatically control the
1450 visible in ipapi as ip.config(), to programatically control the
1448 internal rc object. There's an accompanying %config magic for
1451 internal rc object. There's an accompanying %config magic for
1449 interactive use, which has been enhanced to match the
1452 interactive use, which has been enhanced to match the
1450 funtionality in ipconfig.
1453 funtionality in ipconfig.
1451
1454
1452 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1455 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1453 so it's not just a toggle, it now takes an argument. Add support
1456 so it's not just a toggle, it now takes an argument. Add support
1454 for a customizable header when making system calls, as the new
1457 for a customizable header when making system calls, as the new
1455 system_header variable in the ipythonrc file.
1458 system_header variable in the ipythonrc file.
1456
1459
1457 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1460 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1458
1461
1459 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1462 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1460 generic functions (using Philip J. Eby's simplegeneric package).
1463 generic functions (using Philip J. Eby's simplegeneric package).
1461 This makes it possible to customize the display of third-party classes
1464 This makes it possible to customize the display of third-party classes
1462 without having to monkeypatch them. xiter() no longer supports a mode
1465 without having to monkeypatch them. xiter() no longer supports a mode
1463 argument and the XMode class has been removed. The same functionality can
1466 argument and the XMode class has been removed. The same functionality can
1464 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1467 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1465 One consequence of the switch to generic functions is that xrepr() and
1468 One consequence of the switch to generic functions is that xrepr() and
1466 xattrs() implementation must define the default value for the mode
1469 xattrs() implementation must define the default value for the mode
1467 argument themselves and xattrs() implementations must return real
1470 argument themselves and xattrs() implementations must return real
1468 descriptors.
1471 descriptors.
1469
1472
1470 * IPython/external: This new subpackage will contain all third-party
1473 * IPython/external: This new subpackage will contain all third-party
1471 packages that are bundled with IPython. (The first one is simplegeneric).
1474 packages that are bundled with IPython. (The first one is simplegeneric).
1472
1475
1473 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1476 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1474 directory which as been dropped in r1703.
1477 directory which as been dropped in r1703.
1475
1478
1476 * IPython/Extensions/ipipe.py (iless): Fixed.
1479 * IPython/Extensions/ipipe.py (iless): Fixed.
1477
1480
1478 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1481 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1479
1482
1480 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1483 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1481
1484
1482 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1485 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1483 handling in variable expansion so that shells and magics recognize
1486 handling in variable expansion so that shells and magics recognize
1484 function local scopes correctly. Bug reported by Brian.
1487 function local scopes correctly. Bug reported by Brian.
1485
1488
1486 * scripts/ipython: remove the very first entry in sys.path which
1489 * scripts/ipython: remove the very first entry in sys.path which
1487 Python auto-inserts for scripts, so that sys.path under IPython is
1490 Python auto-inserts for scripts, so that sys.path under IPython is
1488 as similar as possible to that under plain Python.
1491 as similar as possible to that under plain Python.
1489
1492
1490 * IPython/completer.py (IPCompleter.file_matches): Fix
1493 * IPython/completer.py (IPCompleter.file_matches): Fix
1491 tab-completion so that quotes are not closed unless the completion
1494 tab-completion so that quotes are not closed unless the completion
1492 is unambiguous. After a request by Stefan. Minor cleanups in
1495 is unambiguous. After a request by Stefan. Minor cleanups in
1493 ipy_stock_completers.
1496 ipy_stock_completers.
1494
1497
1495 2006-11-02 Ville Vainio <vivainio@gmail.com>
1498 2006-11-02 Ville Vainio <vivainio@gmail.com>
1496
1499
1497 * ipy_stock_completers.py: Add %run and %cd completers.
1500 * ipy_stock_completers.py: Add %run and %cd completers.
1498
1501
1499 * completer.py: Try running custom completer for both
1502 * completer.py: Try running custom completer for both
1500 "foo" and "%foo" if the command is just "foo". Ignore case
1503 "foo" and "%foo" if the command is just "foo". Ignore case
1501 when filtering possible completions.
1504 when filtering possible completions.
1502
1505
1503 * UserConfig/ipy_user_conf.py: install stock completers as default
1506 * UserConfig/ipy_user_conf.py: install stock completers as default
1504
1507
1505 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1508 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1506 simplified readline history save / restore through a wrapper
1509 simplified readline history save / restore through a wrapper
1507 function
1510 function
1508
1511
1509
1512
1510 2006-10-31 Ville Vainio <vivainio@gmail.com>
1513 2006-10-31 Ville Vainio <vivainio@gmail.com>
1511
1514
1512 * strdispatch.py, completer.py, ipy_stock_completers.py:
1515 * strdispatch.py, completer.py, ipy_stock_completers.py:
1513 Allow str_key ("command") in completer hooks. Implement
1516 Allow str_key ("command") in completer hooks. Implement
1514 trivial completer for 'import' (stdlib modules only). Rename
1517 trivial completer for 'import' (stdlib modules only). Rename
1515 ipy_linux_package_managers.py to ipy_stock_completers.py.
1518 ipy_linux_package_managers.py to ipy_stock_completers.py.
1516 SVN completer.
1519 SVN completer.
1517
1520
1518 * Extensions/ledit.py: %magic line editor for easily and
1521 * Extensions/ledit.py: %magic line editor for easily and
1519 incrementally manipulating lists of strings. The magic command
1522 incrementally manipulating lists of strings. The magic command
1520 name is %led.
1523 name is %led.
1521
1524
1522 2006-10-30 Ville Vainio <vivainio@gmail.com>
1525 2006-10-30 Ville Vainio <vivainio@gmail.com>
1523
1526
1524 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1527 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1525 Bernsteins's patches for pydb integration.
1528 Bernsteins's patches for pydb integration.
1526 http://bashdb.sourceforge.net/pydb/
1529 http://bashdb.sourceforge.net/pydb/
1527
1530
1528 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1531 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1529 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1532 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1530 custom completer hook to allow the users to implement their own
1533 custom completer hook to allow the users to implement their own
1531 completers. See ipy_linux_package_managers.py for example. The
1534 completers. See ipy_linux_package_managers.py for example. The
1532 hook name is 'complete_command'.
1535 hook name is 'complete_command'.
1533
1536
1534 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1537 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1535
1538
1536 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1539 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1537 Numeric leftovers.
1540 Numeric leftovers.
1538
1541
1539 * ipython.el (py-execute-region): apply Stefan's patch to fix
1542 * ipython.el (py-execute-region): apply Stefan's patch to fix
1540 garbled results if the python shell hasn't been previously started.
1543 garbled results if the python shell hasn't been previously started.
1541
1544
1542 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1545 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1543 pretty generic function and useful for other things.
1546 pretty generic function and useful for other things.
1544
1547
1545 * IPython/OInspect.py (getsource): Add customizable source
1548 * IPython/OInspect.py (getsource): Add customizable source
1546 extractor. After a request/patch form W. Stein (SAGE).
1549 extractor. After a request/patch form W. Stein (SAGE).
1547
1550
1548 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1551 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1549 window size to a more reasonable value from what pexpect does,
1552 window size to a more reasonable value from what pexpect does,
1550 since their choice causes wrapping bugs with long input lines.
1553 since their choice causes wrapping bugs with long input lines.
1551
1554
1552 2006-10-28 Ville Vainio <vivainio@gmail.com>
1555 2006-10-28 Ville Vainio <vivainio@gmail.com>
1553
1556
1554 * Magic.py (%run): Save and restore the readline history from
1557 * Magic.py (%run): Save and restore the readline history from
1555 file around %run commands to prevent side effects from
1558 file around %run commands to prevent side effects from
1556 %runned programs that might use readline (e.g. pydb).
1559 %runned programs that might use readline (e.g. pydb).
1557
1560
1558 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1561 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1559 invoking the pydb enhanced debugger.
1562 invoking the pydb enhanced debugger.
1560
1563
1561 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1564 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1562
1565
1563 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1566 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1564 call the base class method and propagate the return value to
1567 call the base class method and propagate the return value to
1565 ifile. This is now done by path itself.
1568 ifile. This is now done by path itself.
1566
1569
1567 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1570 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1568
1571
1569 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1572 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1570 api: set_crash_handler(), to expose the ability to change the
1573 api: set_crash_handler(), to expose the ability to change the
1571 internal crash handler.
1574 internal crash handler.
1572
1575
1573 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1576 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1574 the various parameters of the crash handler so that apps using
1577 the various parameters of the crash handler so that apps using
1575 IPython as their engine can customize crash handling. Ipmlemented
1578 IPython as their engine can customize crash handling. Ipmlemented
1576 at the request of SAGE.
1579 at the request of SAGE.
1577
1580
1578 2006-10-14 Ville Vainio <vivainio@gmail.com>
1581 2006-10-14 Ville Vainio <vivainio@gmail.com>
1579
1582
1580 * Magic.py, ipython.el: applied first "safe" part of Rocky
1583 * Magic.py, ipython.el: applied first "safe" part of Rocky
1581 Bernstein's patch set for pydb integration.
1584 Bernstein's patch set for pydb integration.
1582
1585
1583 * Magic.py (%unalias, %alias): %store'd aliases can now be
1586 * Magic.py (%unalias, %alias): %store'd aliases can now be
1584 removed with '%unalias'. %alias w/o args now shows most
1587 removed with '%unalias'. %alias w/o args now shows most
1585 interesting (stored / manually defined) aliases last
1588 interesting (stored / manually defined) aliases last
1586 where they catch the eye w/o scrolling.
1589 where they catch the eye w/o scrolling.
1587
1590
1588 * Magic.py (%rehashx), ext_rehashdir.py: files with
1591 * Magic.py (%rehashx), ext_rehashdir.py: files with
1589 'py' extension are always considered executable, even
1592 'py' extension are always considered executable, even
1590 when not in PATHEXT environment variable.
1593 when not in PATHEXT environment variable.
1591
1594
1592 2006-10-12 Ville Vainio <vivainio@gmail.com>
1595 2006-10-12 Ville Vainio <vivainio@gmail.com>
1593
1596
1594 * jobctrl.py: Add new "jobctrl" extension for spawning background
1597 * jobctrl.py: Add new "jobctrl" extension for spawning background
1595 processes with "&find /". 'import jobctrl' to try it out. Requires
1598 processes with "&find /". 'import jobctrl' to try it out. Requires
1596 'subprocess' module, standard in python 2.4+.
1599 'subprocess' module, standard in python 2.4+.
1597
1600
1598 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1601 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1599 so if foo -> bar and bar -> baz, then foo -> baz.
1602 so if foo -> bar and bar -> baz, then foo -> baz.
1600
1603
1601 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1604 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1602
1605
1603 * IPython/Magic.py (Magic.parse_options): add a new posix option
1606 * IPython/Magic.py (Magic.parse_options): add a new posix option
1604 to allow parsing of input args in magics that doesn't strip quotes
1607 to allow parsing of input args in magics that doesn't strip quotes
1605 (if posix=False). This also closes %timeit bug reported by
1608 (if posix=False). This also closes %timeit bug reported by
1606 Stefan.
1609 Stefan.
1607
1610
1608 2006-10-03 Ville Vainio <vivainio@gmail.com>
1611 2006-10-03 Ville Vainio <vivainio@gmail.com>
1609
1612
1610 * iplib.py (raw_input, interact): Return ValueError catching for
1613 * iplib.py (raw_input, interact): Return ValueError catching for
1611 raw_input. Fixes infinite loop for sys.stdin.close() or
1614 raw_input. Fixes infinite loop for sys.stdin.close() or
1612 sys.stdout.close().
1615 sys.stdout.close().
1613
1616
1614 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1617 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1615
1618
1616 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1619 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1617 to help in handling doctests. irunner is now pretty useful for
1620 to help in handling doctests. irunner is now pretty useful for
1618 running standalone scripts and simulate a full interactive session
1621 running standalone scripts and simulate a full interactive session
1619 in a format that can be then pasted as a doctest.
1622 in a format that can be then pasted as a doctest.
1620
1623
1621 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1624 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1622 on top of the default (useless) ones. This also fixes the nasty
1625 on top of the default (useless) ones. This also fixes the nasty
1623 way in which 2.5's Quitter() exits (reverted [1785]).
1626 way in which 2.5's Quitter() exits (reverted [1785]).
1624
1627
1625 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1628 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1626 2.5.
1629 2.5.
1627
1630
1628 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1631 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1629 color scheme is updated as well when color scheme is changed
1632 color scheme is updated as well when color scheme is changed
1630 interactively.
1633 interactively.
1631
1634
1632 2006-09-27 Ville Vainio <vivainio@gmail.com>
1635 2006-09-27 Ville Vainio <vivainio@gmail.com>
1633
1636
1634 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1637 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1635 infinite loop and just exit. It's a hack, but will do for a while.
1638 infinite loop and just exit. It's a hack, but will do for a while.
1636
1639
1637 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1640 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1638
1641
1639 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1642 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1640 the constructor, this makes it possible to get a list of only directories
1643 the constructor, this makes it possible to get a list of only directories
1641 or only files.
1644 or only files.
1642
1645
1643 2006-08-12 Ville Vainio <vivainio@gmail.com>
1646 2006-08-12 Ville Vainio <vivainio@gmail.com>
1644
1647
1645 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1648 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1646 they broke unittest
1649 they broke unittest
1647
1650
1648 2006-08-11 Ville Vainio <vivainio@gmail.com>
1651 2006-08-11 Ville Vainio <vivainio@gmail.com>
1649
1652
1650 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1653 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1651 by resolving issue properly, i.e. by inheriting FakeModule
1654 by resolving issue properly, i.e. by inheriting FakeModule
1652 from types.ModuleType. Pickling ipython interactive data
1655 from types.ModuleType. Pickling ipython interactive data
1653 should still work as usual (testing appreciated).
1656 should still work as usual (testing appreciated).
1654
1657
1655 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1658 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1656
1659
1657 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1660 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1658 running under python 2.3 with code from 2.4 to fix a bug with
1661 running under python 2.3 with code from 2.4 to fix a bug with
1659 help(). Reported by the Debian maintainers, Norbert Tretkowski
1662 help(). Reported by the Debian maintainers, Norbert Tretkowski
1660 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1663 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1661 <afayolle-AT-debian.org>.
1664 <afayolle-AT-debian.org>.
1662
1665
1663 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1666 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1664
1667
1665 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1668 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1666 (which was displaying "quit" twice).
1669 (which was displaying "quit" twice).
1667
1670
1668 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1671 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1669
1672
1670 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1673 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1671 the mode argument).
1674 the mode argument).
1672
1675
1673 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1676 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1674
1677
1675 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1678 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1676 not running under IPython.
1679 not running under IPython.
1677
1680
1678 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1681 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1679 and make it iterable (iterating over the attribute itself). Add two new
1682 and make it iterable (iterating over the attribute itself). Add two new
1680 magic strings for __xattrs__(): If the string starts with "-", the attribute
1683 magic strings for __xattrs__(): If the string starts with "-", the attribute
1681 will not be displayed in ibrowse's detail view (but it can still be
1684 will not be displayed in ibrowse's detail view (but it can still be
1682 iterated over). This makes it possible to add attributes that are large
1685 iterated over). This makes it possible to add attributes that are large
1683 lists or generator methods to the detail view. Replace magic attribute names
1686 lists or generator methods to the detail view. Replace magic attribute names
1684 and _attrname() and _getattr() with "descriptors": For each type of magic
1687 and _attrname() and _getattr() with "descriptors": For each type of magic
1685 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1688 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1686 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1689 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1687 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1690 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1688 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1691 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1689 are still supported.
1692 are still supported.
1690
1693
1691 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1694 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1692 fails in ibrowse.fetch(), the exception object is added as the last item
1695 fails in ibrowse.fetch(), the exception object is added as the last item
1693 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1696 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1694 a generator throws an exception midway through execution.
1697 a generator throws an exception midway through execution.
1695
1698
1696 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1699 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1697 encoding into methods.
1700 encoding into methods.
1698
1701
1699 2006-07-26 Ville Vainio <vivainio@gmail.com>
1702 2006-07-26 Ville Vainio <vivainio@gmail.com>
1700
1703
1701 * iplib.py: history now stores multiline input as single
1704 * iplib.py: history now stores multiline input as single
1702 history entries. Patch by Jorgen Cederlof.
1705 history entries. Patch by Jorgen Cederlof.
1703
1706
1704 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1707 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1705
1708
1706 * IPython/Extensions/ibrowse.py: Make cursor visible over
1709 * IPython/Extensions/ibrowse.py: Make cursor visible over
1707 non existing attributes.
1710 non existing attributes.
1708
1711
1709 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1712 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1710
1713
1711 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1714 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1712 error output of the running command doesn't mess up the screen.
1715 error output of the running command doesn't mess up the screen.
1713
1716
1714 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1717 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1715
1718
1716 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1719 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1717 argument. This sorts the items themselves.
1720 argument. This sorts the items themselves.
1718
1721
1719 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1722 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1720
1723
1721 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1724 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1722 Compile expression strings into code objects. This should speed
1725 Compile expression strings into code objects. This should speed
1723 up ifilter and friends somewhat.
1726 up ifilter and friends somewhat.
1724
1727
1725 2006-07-08 Ville Vainio <vivainio@gmail.com>
1728 2006-07-08 Ville Vainio <vivainio@gmail.com>
1726
1729
1727 * Magic.py: %cpaste now strips > from the beginning of lines
1730 * Magic.py: %cpaste now strips > from the beginning of lines
1728 to ease pasting quoted code from emails. Contributed by
1731 to ease pasting quoted code from emails. Contributed by
1729 Stefan van der Walt.
1732 Stefan van der Walt.
1730
1733
1731 2006-06-29 Ville Vainio <vivainio@gmail.com>
1734 2006-06-29 Ville Vainio <vivainio@gmail.com>
1732
1735
1733 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1736 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1734 mode, patch contributed by Darren Dale. NEEDS TESTING!
1737 mode, patch contributed by Darren Dale. NEEDS TESTING!
1735
1738
1736 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1739 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1737
1740
1738 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1741 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1739 a blue background. Fix fetching new display rows when the browser
1742 a blue background. Fix fetching new display rows when the browser
1740 scrolls more than a screenful (e.g. by using the goto command).
1743 scrolls more than a screenful (e.g. by using the goto command).
1741
1744
1742 2006-06-27 Ville Vainio <vivainio@gmail.com>
1745 2006-06-27 Ville Vainio <vivainio@gmail.com>
1743
1746
1744 * Magic.py (_inspect, _ofind) Apply David Huard's
1747 * Magic.py (_inspect, _ofind) Apply David Huard's
1745 patch for displaying the correct docstring for 'property'
1748 patch for displaying the correct docstring for 'property'
1746 attributes.
1749 attributes.
1747
1750
1748 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1751 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1749
1752
1750 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1753 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1751 commands into the methods implementing them.
1754 commands into the methods implementing them.
1752
1755
1753 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1756 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1754
1757
1755 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1758 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1756 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1759 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1757 autoindent support was authored by Jin Liu.
1760 autoindent support was authored by Jin Liu.
1758
1761
1759 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1762 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1760
1763
1761 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1764 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1762 for keymaps with a custom class that simplifies handling.
1765 for keymaps with a custom class that simplifies handling.
1763
1766
1764 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1767 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1765
1768
1766 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1769 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1767 resizing. This requires Python 2.5 to work.
1770 resizing. This requires Python 2.5 to work.
1768
1771
1769 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1772 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1770
1773
1771 * IPython/Extensions/ibrowse.py: Add two new commands to
1774 * IPython/Extensions/ibrowse.py: Add two new commands to
1772 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1775 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1773 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1776 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1774 attributes again. Remapped the help command to "?". Display
1777 attributes again. Remapped the help command to "?". Display
1775 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1778 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1776 as keys for the "home" and "end" commands. Add three new commands
1779 as keys for the "home" and "end" commands. Add three new commands
1777 to the input mode for "find" and friends: "delend" (CTRL-K)
1780 to the input mode for "find" and friends: "delend" (CTRL-K)
1778 deletes to the end of line. "incsearchup" searches upwards in the
1781 deletes to the end of line. "incsearchup" searches upwards in the
1779 command history for an input that starts with the text before the cursor.
1782 command history for an input that starts with the text before the cursor.
1780 "incsearchdown" does the same downwards. Removed a bogus mapping of
1783 "incsearchdown" does the same downwards. Removed a bogus mapping of
1781 the x key to "delete".
1784 the x key to "delete".
1782
1785
1783 2006-06-15 Ville Vainio <vivainio@gmail.com>
1786 2006-06-15 Ville Vainio <vivainio@gmail.com>
1784
1787
1785 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1788 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1786 used to create prompts dynamically, instead of the "old" way of
1789 used to create prompts dynamically, instead of the "old" way of
1787 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1790 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1788 way still works (it's invoked by the default hook), of course.
1791 way still works (it's invoked by the default hook), of course.
1789
1792
1790 * Prompts.py: added generate_output_prompt hook for altering output
1793 * Prompts.py: added generate_output_prompt hook for altering output
1791 prompt
1794 prompt
1792
1795
1793 * Release.py: Changed version string to 0.7.3.svn.
1796 * Release.py: Changed version string to 0.7.3.svn.
1794
1797
1795 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1798 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1796
1799
1797 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1800 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1798 the call to fetch() always tries to fetch enough data for at least one
1801 the call to fetch() always tries to fetch enough data for at least one
1799 full screen. This makes it possible to simply call moveto(0,0,True) in
1802 full screen. This makes it possible to simply call moveto(0,0,True) in
1800 the constructor. Fix typos and removed the obsolete goto attribute.
1803 the constructor. Fix typos and removed the obsolete goto attribute.
1801
1804
1802 2006-06-12 Ville Vainio <vivainio@gmail.com>
1805 2006-06-12 Ville Vainio <vivainio@gmail.com>
1803
1806
1804 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1807 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1805 allowing $variable interpolation within multiline statements,
1808 allowing $variable interpolation within multiline statements,
1806 though so far only with "sh" profile for a testing period.
1809 though so far only with "sh" profile for a testing period.
1807 The patch also enables splitting long commands with \ but it
1810 The patch also enables splitting long commands with \ but it
1808 doesn't work properly yet.
1811 doesn't work properly yet.
1809
1812
1810 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1813 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1811
1814
1812 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1815 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1813 input history and the position of the cursor in the input history for
1816 input history and the position of the cursor in the input history for
1814 the find, findbackwards and goto command.
1817 the find, findbackwards and goto command.
1815
1818
1816 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1819 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1817
1820
1818 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1821 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1819 implements the basic functionality of browser commands that require
1822 implements the basic functionality of browser commands that require
1820 input. Reimplement the goto, find and findbackwards commands as
1823 input. Reimplement the goto, find and findbackwards commands as
1821 subclasses of _CommandInput. Add an input history and keymaps to those
1824 subclasses of _CommandInput. Add an input history and keymaps to those
1822 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1825 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1823 execute commands.
1826 execute commands.
1824
1827
1825 2006-06-07 Ville Vainio <vivainio@gmail.com>
1828 2006-06-07 Ville Vainio <vivainio@gmail.com>
1826
1829
1827 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1830 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1828 running the batch files instead of leaving the session open.
1831 running the batch files instead of leaving the session open.
1829
1832
1830 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1833 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1831
1834
1832 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1835 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1833 the original fix was incomplete. Patch submitted by W. Maier.
1836 the original fix was incomplete. Patch submitted by W. Maier.
1834
1837
1835 2006-06-07 Ville Vainio <vivainio@gmail.com>
1838 2006-06-07 Ville Vainio <vivainio@gmail.com>
1836
1839
1837 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1840 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1838 Confirmation prompts can be supressed by 'quiet' option.
1841 Confirmation prompts can be supressed by 'quiet' option.
1839 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1842 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1840
1843
1841 2006-06-06 *** Released version 0.7.2
1844 2006-06-06 *** Released version 0.7.2
1842
1845
1843 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1846 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1844
1847
1845 * IPython/Release.py (version): Made 0.7.2 final for release.
1848 * IPython/Release.py (version): Made 0.7.2 final for release.
1846 Repo tagged and release cut.
1849 Repo tagged and release cut.
1847
1850
1848 2006-06-05 Ville Vainio <vivainio@gmail.com>
1851 2006-06-05 Ville Vainio <vivainio@gmail.com>
1849
1852
1850 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1853 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1851 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1854 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1852
1855
1853 * upgrade_dir.py: try import 'path' module a bit harder
1856 * upgrade_dir.py: try import 'path' module a bit harder
1854 (for %upgrade)
1857 (for %upgrade)
1855
1858
1856 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1859 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1857
1860
1858 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1861 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1859 instead of looping 20 times.
1862 instead of looping 20 times.
1860
1863
1861 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1864 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1862 correctly at initialization time. Bug reported by Krishna Mohan
1865 correctly at initialization time. Bug reported by Krishna Mohan
1863 Gundu <gkmohan-AT-gmail.com> on the user list.
1866 Gundu <gkmohan-AT-gmail.com> on the user list.
1864
1867
1865 * IPython/Release.py (version): Mark 0.7.2 version to start
1868 * IPython/Release.py (version): Mark 0.7.2 version to start
1866 testing for release on 06/06.
1869 testing for release on 06/06.
1867
1870
1868 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1871 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1869
1872
1870 * scripts/irunner: thin script interface so users don't have to
1873 * scripts/irunner: thin script interface so users don't have to
1871 find the module and call it as an executable, since modules rarely
1874 find the module and call it as an executable, since modules rarely
1872 live in people's PATH.
1875 live in people's PATH.
1873
1876
1874 * IPython/irunner.py (InteractiveRunner.__init__): added
1877 * IPython/irunner.py (InteractiveRunner.__init__): added
1875 delaybeforesend attribute to control delays with newer versions of
1878 delaybeforesend attribute to control delays with newer versions of
1876 pexpect. Thanks to detailed help from pexpect's author, Noah
1879 pexpect. Thanks to detailed help from pexpect's author, Noah
1877 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1880 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1878 correctly (it works in NoColor mode).
1881 correctly (it works in NoColor mode).
1879
1882
1880 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1883 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1881 SAGE list, from improper log() calls.
1884 SAGE list, from improper log() calls.
1882
1885
1883 2006-05-31 Ville Vainio <vivainio@gmail.com>
1886 2006-05-31 Ville Vainio <vivainio@gmail.com>
1884
1887
1885 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1888 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1886 with args in parens to work correctly with dirs that have spaces.
1889 with args in parens to work correctly with dirs that have spaces.
1887
1890
1888 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1891 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1889
1892
1890 * IPython/Logger.py (Logger.logstart): add option to log raw input
1893 * IPython/Logger.py (Logger.logstart): add option to log raw input
1891 instead of the processed one. A -r flag was added to the
1894 instead of the processed one. A -r flag was added to the
1892 %logstart magic used for controlling logging.
1895 %logstart magic used for controlling logging.
1893
1896
1894 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1897 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1895
1898
1896 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1899 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1897 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1900 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1898 recognize the option. After a bug report by Will Maier. This
1901 recognize the option. After a bug report by Will Maier. This
1899 closes #64 (will do it after confirmation from W. Maier).
1902 closes #64 (will do it after confirmation from W. Maier).
1900
1903
1901 * IPython/irunner.py: New module to run scripts as if manually
1904 * IPython/irunner.py: New module to run scripts as if manually
1902 typed into an interactive environment, based on pexpect. After a
1905 typed into an interactive environment, based on pexpect. After a
1903 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1906 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1904 ipython-user list. Simple unittests in the tests/ directory.
1907 ipython-user list. Simple unittests in the tests/ directory.
1905
1908
1906 * tools/release: add Will Maier, OpenBSD port maintainer, to
1909 * tools/release: add Will Maier, OpenBSD port maintainer, to
1907 recepients list. We are now officially part of the OpenBSD ports:
1910 recepients list. We are now officially part of the OpenBSD ports:
1908 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1911 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1909 work.
1912 work.
1910
1913
1911 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1914 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1912
1915
1913 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1916 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1914 so that it doesn't break tkinter apps.
1917 so that it doesn't break tkinter apps.
1915
1918
1916 * IPython/iplib.py (_prefilter): fix bug where aliases would
1919 * IPython/iplib.py (_prefilter): fix bug where aliases would
1917 shadow variables when autocall was fully off. Reported by SAGE
1920 shadow variables when autocall was fully off. Reported by SAGE
1918 author William Stein.
1921 author William Stein.
1919
1922
1920 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1923 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1921 at what detail level strings are computed when foo? is requested.
1924 at what detail level strings are computed when foo? is requested.
1922 This allows users to ask for example that the string form of an
1925 This allows users to ask for example that the string form of an
1923 object is only computed when foo?? is called, or even never, by
1926 object is only computed when foo?? is called, or even never, by
1924 setting the object_info_string_level >= 2 in the configuration
1927 setting the object_info_string_level >= 2 in the configuration
1925 file. This new option has been added and documented. After a
1928 file. This new option has been added and documented. After a
1926 request by SAGE to be able to control the printing of very large
1929 request by SAGE to be able to control the printing of very large
1927 objects more easily.
1930 objects more easily.
1928
1931
1929 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1932 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1930
1933
1931 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1934 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1932 from sys.argv, to be 100% consistent with how Python itself works
1935 from sys.argv, to be 100% consistent with how Python itself works
1933 (as seen for example with python -i file.py). After a bug report
1936 (as seen for example with python -i file.py). After a bug report
1934 by Jeffrey Collins.
1937 by Jeffrey Collins.
1935
1938
1936 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1939 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1937 nasty bug which was preventing custom namespaces with -pylab,
1940 nasty bug which was preventing custom namespaces with -pylab,
1938 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1941 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1939 compatibility (long gone from mpl).
1942 compatibility (long gone from mpl).
1940
1943
1941 * IPython/ipapi.py (make_session): name change: create->make. We
1944 * IPython/ipapi.py (make_session): name change: create->make. We
1942 use make in other places (ipmaker,...), it's shorter and easier to
1945 use make in other places (ipmaker,...), it's shorter and easier to
1943 type and say, etc. I'm trying to clean things before 0.7.2 so
1946 type and say, etc. I'm trying to clean things before 0.7.2 so
1944 that I can keep things stable wrt to ipapi in the chainsaw branch.
1947 that I can keep things stable wrt to ipapi in the chainsaw branch.
1945
1948
1946 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1949 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1947 python-mode recognizes our debugger mode. Add support for
1950 python-mode recognizes our debugger mode. Add support for
1948 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1951 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1949 <m.liu.jin-AT-gmail.com> originally written by
1952 <m.liu.jin-AT-gmail.com> originally written by
1950 doxgen-AT-newsmth.net (with minor modifications for xemacs
1953 doxgen-AT-newsmth.net (with minor modifications for xemacs
1951 compatibility)
1954 compatibility)
1952
1955
1953 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1956 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1954 tracebacks when walking the stack so that the stack tracking system
1957 tracebacks when walking the stack so that the stack tracking system
1955 in emacs' python-mode can identify the frames correctly.
1958 in emacs' python-mode can identify the frames correctly.
1956
1959
1957 * IPython/ipmaker.py (make_IPython): make the internal (and
1960 * IPython/ipmaker.py (make_IPython): make the internal (and
1958 default config) autoedit_syntax value false by default. Too many
1961 default config) autoedit_syntax value false by default. Too many
1959 users have complained to me (both on and off-list) about problems
1962 users have complained to me (both on and off-list) about problems
1960 with this option being on by default, so I'm making it default to
1963 with this option being on by default, so I'm making it default to
1961 off. It can still be enabled by anyone via the usual mechanisms.
1964 off. It can still be enabled by anyone via the usual mechanisms.
1962
1965
1963 * IPython/completer.py (Completer.attr_matches): add support for
1966 * IPython/completer.py (Completer.attr_matches): add support for
1964 PyCrust-style _getAttributeNames magic method. Patch contributed
1967 PyCrust-style _getAttributeNames magic method. Patch contributed
1965 by <mscott-AT-goldenspud.com>. Closes #50.
1968 by <mscott-AT-goldenspud.com>. Closes #50.
1966
1969
1967 * IPython/iplib.py (InteractiveShell.__init__): remove the
1970 * IPython/iplib.py (InteractiveShell.__init__): remove the
1968 deletion of exit/quit from __builtin__, which can break
1971 deletion of exit/quit from __builtin__, which can break
1969 third-party tools like the Zope debugging console. The
1972 third-party tools like the Zope debugging console. The
1970 %exit/%quit magics remain. In general, it's probably a good idea
1973 %exit/%quit magics remain. In general, it's probably a good idea
1971 not to delete anything from __builtin__, since we never know what
1974 not to delete anything from __builtin__, since we never know what
1972 that will break. In any case, python now (for 2.5) will support
1975 that will break. In any case, python now (for 2.5) will support
1973 'real' exit/quit, so this issue is moot. Closes #55.
1976 'real' exit/quit, so this issue is moot. Closes #55.
1974
1977
1975 * IPython/genutils.py (with_obj): rename the 'with' function to
1978 * IPython/genutils.py (with_obj): rename the 'with' function to
1976 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1979 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1977 becomes a language keyword. Closes #53.
1980 becomes a language keyword. Closes #53.
1978
1981
1979 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1982 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1980 __file__ attribute to this so it fools more things into thinking
1983 __file__ attribute to this so it fools more things into thinking
1981 it is a real module. Closes #59.
1984 it is a real module. Closes #59.
1982
1985
1983 * IPython/Magic.py (magic_edit): add -n option to open the editor
1986 * IPython/Magic.py (magic_edit): add -n option to open the editor
1984 at a specific line number. After a patch by Stefan van der Walt.
1987 at a specific line number. After a patch by Stefan van der Walt.
1985
1988
1986 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1989 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1987
1990
1988 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1991 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1989 reason the file could not be opened. After automatic crash
1992 reason the file could not be opened. After automatic crash
1990 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1993 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1991 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1994 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1992 (_should_recompile): Don't fire editor if using %bg, since there
1995 (_should_recompile): Don't fire editor if using %bg, since there
1993 is no file in the first place. From the same report as above.
1996 is no file in the first place. From the same report as above.
1994 (raw_input): protect against faulty third-party prefilters. After
1997 (raw_input): protect against faulty third-party prefilters. After
1995 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1998 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1996 while running under SAGE.
1999 while running under SAGE.
1997
2000
1998 2006-05-23 Ville Vainio <vivainio@gmail.com>
2001 2006-05-23 Ville Vainio <vivainio@gmail.com>
1999
2002
2000 * ipapi.py: Stripped down ip.to_user_ns() to work only as
2003 * ipapi.py: Stripped down ip.to_user_ns() to work only as
2001 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
2004 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
2002 now returns None (again), unless dummy is specifically allowed by
2005 now returns None (again), unless dummy is specifically allowed by
2003 ipapi.get(allow_dummy=True).
2006 ipapi.get(allow_dummy=True).
2004
2007
2005 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
2008 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
2006
2009
2007 * IPython: remove all 2.2-compatibility objects and hacks from
2010 * IPython: remove all 2.2-compatibility objects and hacks from
2008 everywhere, since we only support 2.3 at this point. Docs
2011 everywhere, since we only support 2.3 at this point. Docs
2009 updated.
2012 updated.
2010
2013
2011 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
2014 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
2012 Anything requiring extra validation can be turned into a Python
2015 Anything requiring extra validation can be turned into a Python
2013 property in the future. I used a property for the db one b/c
2016 property in the future. I used a property for the db one b/c
2014 there was a nasty circularity problem with the initialization
2017 there was a nasty circularity problem with the initialization
2015 order, which right now I don't have time to clean up.
2018 order, which right now I don't have time to clean up.
2016
2019
2017 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
2020 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
2018 another locking bug reported by Jorgen. I'm not 100% sure though,
2021 another locking bug reported by Jorgen. I'm not 100% sure though,
2019 so more testing is needed...
2022 so more testing is needed...
2020
2023
2021 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
2024 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
2022
2025
2023 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
2026 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
2024 local variables from any routine in user code (typically executed
2027 local variables from any routine in user code (typically executed
2025 with %run) directly into the interactive namespace. Very useful
2028 with %run) directly into the interactive namespace. Very useful
2026 when doing complex debugging.
2029 when doing complex debugging.
2027 (IPythonNotRunning): Changed the default None object to a dummy
2030 (IPythonNotRunning): Changed the default None object to a dummy
2028 whose attributes can be queried as well as called without
2031 whose attributes can be queried as well as called without
2029 exploding, to ease writing code which works transparently both in
2032 exploding, to ease writing code which works transparently both in
2030 and out of ipython and uses some of this API.
2033 and out of ipython and uses some of this API.
2031
2034
2032 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
2035 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
2033
2036
2034 * IPython/hooks.py (result_display): Fix the fact that our display
2037 * IPython/hooks.py (result_display): Fix the fact that our display
2035 hook was using str() instead of repr(), as the default python
2038 hook was using str() instead of repr(), as the default python
2036 console does. This had gone unnoticed b/c it only happened if
2039 console does. This had gone unnoticed b/c it only happened if
2037 %Pprint was off, but the inconsistency was there.
2040 %Pprint was off, but the inconsistency was there.
2038
2041
2039 2006-05-15 Ville Vainio <vivainio@gmail.com>
2042 2006-05-15 Ville Vainio <vivainio@gmail.com>
2040
2043
2041 * Oinspect.py: Only show docstring for nonexisting/binary files
2044 * Oinspect.py: Only show docstring for nonexisting/binary files
2042 when doing object??, closing ticket #62
2045 when doing object??, closing ticket #62
2043
2046
2044 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2047 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2045
2048
2046 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2049 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2047 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2050 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2048 was being released in a routine which hadn't checked if it had
2051 was being released in a routine which hadn't checked if it had
2049 been the one to acquire it.
2052 been the one to acquire it.
2050
2053
2051 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2054 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2052
2055
2053 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2056 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2054
2057
2055 2006-04-11 Ville Vainio <vivainio@gmail.com>
2058 2006-04-11 Ville Vainio <vivainio@gmail.com>
2056
2059
2057 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2060 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2058 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2061 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2059 prefilters, allowing stuff like magics and aliases in the file.
2062 prefilters, allowing stuff like magics and aliases in the file.
2060
2063
2061 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2064 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2062 added. Supported now are "%clear in" and "%clear out" (clear input and
2065 added. Supported now are "%clear in" and "%clear out" (clear input and
2063 output history, respectively). Also fixed CachedOutput.flush to
2066 output history, respectively). Also fixed CachedOutput.flush to
2064 properly flush the output cache.
2067 properly flush the output cache.
2065
2068
2066 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2069 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2067 half-success (and fail explicitly).
2070 half-success (and fail explicitly).
2068
2071
2069 2006-03-28 Ville Vainio <vivainio@gmail.com>
2072 2006-03-28 Ville Vainio <vivainio@gmail.com>
2070
2073
2071 * iplib.py: Fix quoting of aliases so that only argless ones
2074 * iplib.py: Fix quoting of aliases so that only argless ones
2072 are quoted
2075 are quoted
2073
2076
2074 2006-03-28 Ville Vainio <vivainio@gmail.com>
2077 2006-03-28 Ville Vainio <vivainio@gmail.com>
2075
2078
2076 * iplib.py: Quote aliases with spaces in the name.
2079 * iplib.py: Quote aliases with spaces in the name.
2077 "c:\program files\blah\bin" is now legal alias target.
2080 "c:\program files\blah\bin" is now legal alias target.
2078
2081
2079 * ext_rehashdir.py: Space no longer allowed as arg
2082 * ext_rehashdir.py: Space no longer allowed as arg
2080 separator, since space is legal in path names.
2083 separator, since space is legal in path names.
2081
2084
2082 2006-03-16 Ville Vainio <vivainio@gmail.com>
2085 2006-03-16 Ville Vainio <vivainio@gmail.com>
2083
2086
2084 * upgrade_dir.py: Take path.py from Extensions, correcting
2087 * upgrade_dir.py: Take path.py from Extensions, correcting
2085 %upgrade magic
2088 %upgrade magic
2086
2089
2087 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2090 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2088
2091
2089 * hooks.py: Only enclose editor binary in quotes if legal and
2092 * hooks.py: Only enclose editor binary in quotes if legal and
2090 necessary (space in the name, and is an existing file). Fixes a bug
2093 necessary (space in the name, and is an existing file). Fixes a bug
2091 reported by Zachary Pincus.
2094 reported by Zachary Pincus.
2092
2095
2093 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2096 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2094
2097
2095 * Manual: thanks to a tip on proper color handling for Emacs, by
2098 * Manual: thanks to a tip on proper color handling for Emacs, by
2096 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2099 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2097
2100
2098 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2101 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2099 by applying the provided patch. Thanks to Liu Jin
2102 by applying the provided patch. Thanks to Liu Jin
2100 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2103 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2101 XEmacs/Linux, I'm trusting the submitter that it actually helps
2104 XEmacs/Linux, I'm trusting the submitter that it actually helps
2102 under win32/GNU Emacs. Will revisit if any problems are reported.
2105 under win32/GNU Emacs. Will revisit if any problems are reported.
2103
2106
2104 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2107 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2105
2108
2106 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2109 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2107 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2110 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2108
2111
2109 2006-03-12 Ville Vainio <vivainio@gmail.com>
2112 2006-03-12 Ville Vainio <vivainio@gmail.com>
2110
2113
2111 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2114 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2112 Torsten Marek.
2115 Torsten Marek.
2113
2116
2114 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2117 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2115
2118
2116 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2119 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2117 line ranges works again.
2120 line ranges works again.
2118
2121
2119 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2122 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2120
2123
2121 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2124 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2122 and friends, after a discussion with Zach Pincus on ipython-user.
2125 and friends, after a discussion with Zach Pincus on ipython-user.
2123 I'm not 100% sure, but after thinking about it quite a bit, it may
2126 I'm not 100% sure, but after thinking about it quite a bit, it may
2124 be OK. Testing with the multithreaded shells didn't reveal any
2127 be OK. Testing with the multithreaded shells didn't reveal any
2125 problems, but let's keep an eye out.
2128 problems, but let's keep an eye out.
2126
2129
2127 In the process, I fixed a few things which were calling
2130 In the process, I fixed a few things which were calling
2128 self.InteractiveTB() directly (like safe_execfile), which is a
2131 self.InteractiveTB() directly (like safe_execfile), which is a
2129 mistake: ALL exception reporting should be done by calling
2132 mistake: ALL exception reporting should be done by calling
2130 self.showtraceback(), which handles state and tab-completion and
2133 self.showtraceback(), which handles state and tab-completion and
2131 more.
2134 more.
2132
2135
2133 2006-03-01 Ville Vainio <vivainio@gmail.com>
2136 2006-03-01 Ville Vainio <vivainio@gmail.com>
2134
2137
2135 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2138 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2136 To use, do "from ipipe import *".
2139 To use, do "from ipipe import *".
2137
2140
2138 2006-02-24 Ville Vainio <vivainio@gmail.com>
2141 2006-02-24 Ville Vainio <vivainio@gmail.com>
2139
2142
2140 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2143 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2141 "cleanly" and safely than the older upgrade mechanism.
2144 "cleanly" and safely than the older upgrade mechanism.
2142
2145
2143 2006-02-21 Ville Vainio <vivainio@gmail.com>
2146 2006-02-21 Ville Vainio <vivainio@gmail.com>
2144
2147
2145 * Magic.py: %save works again.
2148 * Magic.py: %save works again.
2146
2149
2147 2006-02-15 Ville Vainio <vivainio@gmail.com>
2150 2006-02-15 Ville Vainio <vivainio@gmail.com>
2148
2151
2149 * Magic.py: %Pprint works again
2152 * Magic.py: %Pprint works again
2150
2153
2151 * Extensions/ipy_sane_defaults.py: Provide everything provided
2154 * Extensions/ipy_sane_defaults.py: Provide everything provided
2152 in default ipythonrc, to make it possible to have a completely empty
2155 in default ipythonrc, to make it possible to have a completely empty
2153 ipythonrc (and thus completely rc-file free configuration)
2156 ipythonrc (and thus completely rc-file free configuration)
2154
2157
2155 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2158 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2156
2159
2157 * IPython/hooks.py (editor): quote the call to the editor command,
2160 * IPython/hooks.py (editor): quote the call to the editor command,
2158 to allow commands with spaces in them. Problem noted by watching
2161 to allow commands with spaces in them. Problem noted by watching
2159 Ian Oswald's video about textpad under win32 at
2162 Ian Oswald's video about textpad under win32 at
2160 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2163 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2161
2164
2162 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2165 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2163 describing magics (we haven't used @ for a loong time).
2166 describing magics (we haven't used @ for a loong time).
2164
2167
2165 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2168 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2166 contributed by marienz to close
2169 contributed by marienz to close
2167 http://www.scipy.net/roundup/ipython/issue53.
2170 http://www.scipy.net/roundup/ipython/issue53.
2168
2171
2169 2006-02-10 Ville Vainio <vivainio@gmail.com>
2172 2006-02-10 Ville Vainio <vivainio@gmail.com>
2170
2173
2171 * genutils.py: getoutput now works in win32 too
2174 * genutils.py: getoutput now works in win32 too
2172
2175
2173 * completer.py: alias and magic completion only invoked
2176 * completer.py: alias and magic completion only invoked
2174 at the first "item" in the line, to avoid "cd %store"
2177 at the first "item" in the line, to avoid "cd %store"
2175 nonsense.
2178 nonsense.
2176
2179
2177 2006-02-09 Ville Vainio <vivainio@gmail.com>
2180 2006-02-09 Ville Vainio <vivainio@gmail.com>
2178
2181
2179 * test/*: Added a unit testing framework (finally).
2182 * test/*: Added a unit testing framework (finally).
2180 '%run runtests.py' to run test_*.
2183 '%run runtests.py' to run test_*.
2181
2184
2182 * ipapi.py: Exposed runlines and set_custom_exc
2185 * ipapi.py: Exposed runlines and set_custom_exc
2183
2186
2184 2006-02-07 Ville Vainio <vivainio@gmail.com>
2187 2006-02-07 Ville Vainio <vivainio@gmail.com>
2185
2188
2186 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2189 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2187 instead use "f(1 2)" as before.
2190 instead use "f(1 2)" as before.
2188
2191
2189 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2192 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2190
2193
2191 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2194 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2192 facilities, for demos processed by the IPython input filter
2195 facilities, for demos processed by the IPython input filter
2193 (IPythonDemo), and for running a script one-line-at-a-time as a
2196 (IPythonDemo), and for running a script one-line-at-a-time as a
2194 demo, both for pure Python (LineDemo) and for IPython-processed
2197 demo, both for pure Python (LineDemo) and for IPython-processed
2195 input (IPythonLineDemo). After a request by Dave Kohel, from the
2198 input (IPythonLineDemo). After a request by Dave Kohel, from the
2196 SAGE team.
2199 SAGE team.
2197 (Demo.edit): added an edit() method to the demo objects, to edit
2200 (Demo.edit): added an edit() method to the demo objects, to edit
2198 the in-memory copy of the last executed block.
2201 the in-memory copy of the last executed block.
2199
2202
2200 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2203 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2201 processing to %edit, %macro and %save. These commands can now be
2204 processing to %edit, %macro and %save. These commands can now be
2202 invoked on the unprocessed input as it was typed by the user
2205 invoked on the unprocessed input as it was typed by the user
2203 (without any prefilters applied). After requests by the SAGE team
2206 (without any prefilters applied). After requests by the SAGE team
2204 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2207 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2205
2208
2206 2006-02-01 Ville Vainio <vivainio@gmail.com>
2209 2006-02-01 Ville Vainio <vivainio@gmail.com>
2207
2210
2208 * setup.py, eggsetup.py: easy_install ipython==dev works
2211 * setup.py, eggsetup.py: easy_install ipython==dev works
2209 correctly now (on Linux)
2212 correctly now (on Linux)
2210
2213
2211 * ipy_user_conf,ipmaker: user config changes, removed spurious
2214 * ipy_user_conf,ipmaker: user config changes, removed spurious
2212 warnings
2215 warnings
2213
2216
2214 * iplib: if rc.banner is string, use it as is.
2217 * iplib: if rc.banner is string, use it as is.
2215
2218
2216 * Magic: %pycat accepts a string argument and pages it's contents.
2219 * Magic: %pycat accepts a string argument and pages it's contents.
2217
2220
2218
2221
2219 2006-01-30 Ville Vainio <vivainio@gmail.com>
2222 2006-01-30 Ville Vainio <vivainio@gmail.com>
2220
2223
2221 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2224 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2222 Now %store and bookmarks work through PickleShare, meaning that
2225 Now %store and bookmarks work through PickleShare, meaning that
2223 concurrent access is possible and all ipython sessions see the
2226 concurrent access is possible and all ipython sessions see the
2224 same database situation all the time, instead of snapshot of
2227 same database situation all the time, instead of snapshot of
2225 the situation when the session was started. Hence, %bookmark
2228 the situation when the session was started. Hence, %bookmark
2226 results are immediately accessible from othes sessions. The database
2229 results are immediately accessible from othes sessions. The database
2227 is also available for use by user extensions. See:
2230 is also available for use by user extensions. See:
2228 http://www.python.org/pypi/pickleshare
2231 http://www.python.org/pypi/pickleshare
2229
2232
2230 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2233 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2231
2234
2232 * aliases can now be %store'd
2235 * aliases can now be %store'd
2233
2236
2234 * path.py moved to Extensions so that pickleshare does not need
2237 * path.py moved to Extensions so that pickleshare does not need
2235 IPython-specific import. Extensions added to pythonpath right
2238 IPython-specific import. Extensions added to pythonpath right
2236 at __init__.
2239 at __init__.
2237
2240
2238 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2241 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2239 called with _ip.system and the pre-transformed command string.
2242 called with _ip.system and the pre-transformed command string.
2240
2243
2241 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2244 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2242
2245
2243 * IPython/iplib.py (interact): Fix that we were not catching
2246 * IPython/iplib.py (interact): Fix that we were not catching
2244 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2247 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2245 logic here had to change, but it's fixed now.
2248 logic here had to change, but it's fixed now.
2246
2249
2247 2006-01-29 Ville Vainio <vivainio@gmail.com>
2250 2006-01-29 Ville Vainio <vivainio@gmail.com>
2248
2251
2249 * iplib.py: Try to import pyreadline on Windows.
2252 * iplib.py: Try to import pyreadline on Windows.
2250
2253
2251 2006-01-27 Ville Vainio <vivainio@gmail.com>
2254 2006-01-27 Ville Vainio <vivainio@gmail.com>
2252
2255
2253 * iplib.py: Expose ipapi as _ip in builtin namespace.
2256 * iplib.py: Expose ipapi as _ip in builtin namespace.
2254 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2257 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2255 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2258 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2256 syntax now produce _ip.* variant of the commands.
2259 syntax now produce _ip.* variant of the commands.
2257
2260
2258 * "_ip.options().autoedit_syntax = 2" automatically throws
2261 * "_ip.options().autoedit_syntax = 2" automatically throws
2259 user to editor for syntax error correction without prompting.
2262 user to editor for syntax error correction without prompting.
2260
2263
2261 2006-01-27 Ville Vainio <vivainio@gmail.com>
2264 2006-01-27 Ville Vainio <vivainio@gmail.com>
2262
2265
2263 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2266 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2264 'ipython' at argv[0]) executed through command line.
2267 'ipython' at argv[0]) executed through command line.
2265 NOTE: this DEPRECATES calling ipython with multiple scripts
2268 NOTE: this DEPRECATES calling ipython with multiple scripts
2266 ("ipython a.py b.py c.py")
2269 ("ipython a.py b.py c.py")
2267
2270
2268 * iplib.py, hooks.py: Added configurable input prefilter,
2271 * iplib.py, hooks.py: Added configurable input prefilter,
2269 named 'input_prefilter'. See ext_rescapture.py for example
2272 named 'input_prefilter'. See ext_rescapture.py for example
2270 usage.
2273 usage.
2271
2274
2272 * ext_rescapture.py, Magic.py: Better system command output capture
2275 * ext_rescapture.py, Magic.py: Better system command output capture
2273 through 'var = !ls' (deprecates user-visible %sc). Same notation
2276 through 'var = !ls' (deprecates user-visible %sc). Same notation
2274 applies for magics, 'var = %alias' assigns alias list to var.
2277 applies for magics, 'var = %alias' assigns alias list to var.
2275
2278
2276 * ipapi.py: added meta() for accessing extension-usable data store.
2279 * ipapi.py: added meta() for accessing extension-usable data store.
2277
2280
2278 * iplib.py: added InteractiveShell.getapi(). New magics should be
2281 * iplib.py: added InteractiveShell.getapi(). New magics should be
2279 written doing self.getapi() instead of using the shell directly.
2282 written doing self.getapi() instead of using the shell directly.
2280
2283
2281 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2284 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2282 %store foo >> ~/myfoo.txt to store variables to files (in clean
2285 %store foo >> ~/myfoo.txt to store variables to files (in clean
2283 textual form, not a restorable pickle).
2286 textual form, not a restorable pickle).
2284
2287
2285 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2288 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2286
2289
2287 * usage.py, Magic.py: added %quickref
2290 * usage.py, Magic.py: added %quickref
2288
2291
2289 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2292 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2290
2293
2291 * GetoptErrors when invoking magics etc. with wrong args
2294 * GetoptErrors when invoking magics etc. with wrong args
2292 are now more helpful:
2295 are now more helpful:
2293 GetoptError: option -l not recognized (allowed: "qb" )
2296 GetoptError: option -l not recognized (allowed: "qb" )
2294
2297
2295 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2298 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2296
2299
2297 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2300 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2298 computationally intensive blocks don't appear to stall the demo.
2301 computationally intensive blocks don't appear to stall the demo.
2299
2302
2300 2006-01-24 Ville Vainio <vivainio@gmail.com>
2303 2006-01-24 Ville Vainio <vivainio@gmail.com>
2301
2304
2302 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2305 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2303 value to manipulate resulting history entry.
2306 value to manipulate resulting history entry.
2304
2307
2305 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2308 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2306 to instance methods of IPApi class, to make extending an embedded
2309 to instance methods of IPApi class, to make extending an embedded
2307 IPython feasible. See ext_rehashdir.py for example usage.
2310 IPython feasible. See ext_rehashdir.py for example usage.
2308
2311
2309 * Merged 1071-1076 from branches/0.7.1
2312 * Merged 1071-1076 from branches/0.7.1
2310
2313
2311
2314
2312 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2315 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2313
2316
2314 * tools/release (daystamp): Fix build tools to use the new
2317 * tools/release (daystamp): Fix build tools to use the new
2315 eggsetup.py script to build lightweight eggs.
2318 eggsetup.py script to build lightweight eggs.
2316
2319
2317 * Applied changesets 1062 and 1064 before 0.7.1 release.
2320 * Applied changesets 1062 and 1064 before 0.7.1 release.
2318
2321
2319 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2322 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2320 see the raw input history (without conversions like %ls ->
2323 see the raw input history (without conversions like %ls ->
2321 ipmagic("ls")). After a request from W. Stein, SAGE
2324 ipmagic("ls")). After a request from W. Stein, SAGE
2322 (http://modular.ucsd.edu/sage) developer. This information is
2325 (http://modular.ucsd.edu/sage) developer. This information is
2323 stored in the input_hist_raw attribute of the IPython instance, so
2326 stored in the input_hist_raw attribute of the IPython instance, so
2324 developers can access it if needed (it's an InputList instance).
2327 developers can access it if needed (it's an InputList instance).
2325
2328
2326 * Versionstring = 0.7.2.svn
2329 * Versionstring = 0.7.2.svn
2327
2330
2328 * eggsetup.py: A separate script for constructing eggs, creates
2331 * eggsetup.py: A separate script for constructing eggs, creates
2329 proper launch scripts even on Windows (an .exe file in
2332 proper launch scripts even on Windows (an .exe file in
2330 \python24\scripts).
2333 \python24\scripts).
2331
2334
2332 * ipapi.py: launch_new_instance, launch entry point needed for the
2335 * ipapi.py: launch_new_instance, launch entry point needed for the
2333 egg.
2336 egg.
2334
2337
2335 2006-01-23 Ville Vainio <vivainio@gmail.com>
2338 2006-01-23 Ville Vainio <vivainio@gmail.com>
2336
2339
2337 * Added %cpaste magic for pasting python code
2340 * Added %cpaste magic for pasting python code
2338
2341
2339 2006-01-22 Ville Vainio <vivainio@gmail.com>
2342 2006-01-22 Ville Vainio <vivainio@gmail.com>
2340
2343
2341 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2344 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2342
2345
2343 * Versionstring = 0.7.2.svn
2346 * Versionstring = 0.7.2.svn
2344
2347
2345 * eggsetup.py: A separate script for constructing eggs, creates
2348 * eggsetup.py: A separate script for constructing eggs, creates
2346 proper launch scripts even on Windows (an .exe file in
2349 proper launch scripts even on Windows (an .exe file in
2347 \python24\scripts).
2350 \python24\scripts).
2348
2351
2349 * ipapi.py: launch_new_instance, launch entry point needed for the
2352 * ipapi.py: launch_new_instance, launch entry point needed for the
2350 egg.
2353 egg.
2351
2354
2352 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2355 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2353
2356
2354 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2357 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2355 %pfile foo would print the file for foo even if it was a binary.
2358 %pfile foo would print the file for foo even if it was a binary.
2356 Now, extensions '.so' and '.dll' are skipped.
2359 Now, extensions '.so' and '.dll' are skipped.
2357
2360
2358 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2361 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2359 bug, where macros would fail in all threaded modes. I'm not 100%
2362 bug, where macros would fail in all threaded modes. I'm not 100%
2360 sure, so I'm going to put out an rc instead of making a release
2363 sure, so I'm going to put out an rc instead of making a release
2361 today, and wait for feedback for at least a few days.
2364 today, and wait for feedback for at least a few days.
2362
2365
2363 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2366 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2364 it...) the handling of pasting external code with autoindent on.
2367 it...) the handling of pasting external code with autoindent on.
2365 To get out of a multiline input, the rule will appear for most
2368 To get out of a multiline input, the rule will appear for most
2366 users unchanged: two blank lines or change the indent level
2369 users unchanged: two blank lines or change the indent level
2367 proposed by IPython. But there is a twist now: you can
2370 proposed by IPython. But there is a twist now: you can
2368 add/subtract only *one or two spaces*. If you add/subtract three
2371 add/subtract only *one or two spaces*. If you add/subtract three
2369 or more (unless you completely delete the line), IPython will
2372 or more (unless you completely delete the line), IPython will
2370 accept that line, and you'll need to enter a second one of pure
2373 accept that line, and you'll need to enter a second one of pure
2371 whitespace. I know it sounds complicated, but I can't find a
2374 whitespace. I know it sounds complicated, but I can't find a
2372 different solution that covers all the cases, with the right
2375 different solution that covers all the cases, with the right
2373 heuristics. Hopefully in actual use, nobody will really notice
2376 heuristics. Hopefully in actual use, nobody will really notice
2374 all these strange rules and things will 'just work'.
2377 all these strange rules and things will 'just work'.
2375
2378
2376 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2379 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2377
2380
2378 * IPython/iplib.py (interact): catch exceptions which can be
2381 * IPython/iplib.py (interact): catch exceptions which can be
2379 triggered asynchronously by signal handlers. Thanks to an
2382 triggered asynchronously by signal handlers. Thanks to an
2380 automatic crash report, submitted by Colin Kingsley
2383 automatic crash report, submitted by Colin Kingsley
2381 <tercel-AT-gentoo.org>.
2384 <tercel-AT-gentoo.org>.
2382
2385
2383 2006-01-20 Ville Vainio <vivainio@gmail.com>
2386 2006-01-20 Ville Vainio <vivainio@gmail.com>
2384
2387
2385 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2388 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2386 (%rehashdir, very useful, try it out) of how to extend ipython
2389 (%rehashdir, very useful, try it out) of how to extend ipython
2387 with new magics. Also added Extensions dir to pythonpath to make
2390 with new magics. Also added Extensions dir to pythonpath to make
2388 importing extensions easy.
2391 importing extensions easy.
2389
2392
2390 * %store now complains when trying to store interactively declared
2393 * %store now complains when trying to store interactively declared
2391 classes / instances of those classes.
2394 classes / instances of those classes.
2392
2395
2393 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2396 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2394 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2397 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2395 if they exist, and ipy_user_conf.py with some defaults is created for
2398 if they exist, and ipy_user_conf.py with some defaults is created for
2396 the user.
2399 the user.
2397
2400
2398 * Startup rehashing done by the config file, not InterpreterExec.
2401 * Startup rehashing done by the config file, not InterpreterExec.
2399 This means system commands are available even without selecting the
2402 This means system commands are available even without selecting the
2400 pysh profile. It's the sensible default after all.
2403 pysh profile. It's the sensible default after all.
2401
2404
2402 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2405 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2403
2406
2404 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2407 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2405 multiline code with autoindent on working. But I am really not
2408 multiline code with autoindent on working. But I am really not
2406 sure, so this needs more testing. Will commit a debug-enabled
2409 sure, so this needs more testing. Will commit a debug-enabled
2407 version for now, while I test it some more, so that Ville and
2410 version for now, while I test it some more, so that Ville and
2408 others may also catch any problems. Also made
2411 others may also catch any problems. Also made
2409 self.indent_current_str() a method, to ensure that there's no
2412 self.indent_current_str() a method, to ensure that there's no
2410 chance of the indent space count and the corresponding string
2413 chance of the indent space count and the corresponding string
2411 falling out of sync. All code needing the string should just call
2414 falling out of sync. All code needing the string should just call
2412 the method.
2415 the method.
2413
2416
2414 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2417 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2415
2418
2416 * IPython/Magic.py (magic_edit): fix check for when users don't
2419 * IPython/Magic.py (magic_edit): fix check for when users don't
2417 save their output files, the try/except was in the wrong section.
2420 save their output files, the try/except was in the wrong section.
2418
2421
2419 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2422 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2420
2423
2421 * IPython/Magic.py (magic_run): fix __file__ global missing from
2424 * IPython/Magic.py (magic_run): fix __file__ global missing from
2422 script's namespace when executed via %run. After a report by
2425 script's namespace when executed via %run. After a report by
2423 Vivian.
2426 Vivian.
2424
2427
2425 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2428 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2426 when using python 2.4. The parent constructor changed in 2.4, and
2429 when using python 2.4. The parent constructor changed in 2.4, and
2427 we need to track it directly (we can't call it, as it messes up
2430 we need to track it directly (we can't call it, as it messes up
2428 readline and tab-completion inside our pdb would stop working).
2431 readline and tab-completion inside our pdb would stop working).
2429 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2432 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2430
2433
2431 2006-01-16 Ville Vainio <vivainio@gmail.com>
2434 2006-01-16 Ville Vainio <vivainio@gmail.com>
2432
2435
2433 * Ipython/magic.py: Reverted back to old %edit functionality
2436 * Ipython/magic.py: Reverted back to old %edit functionality
2434 that returns file contents on exit.
2437 that returns file contents on exit.
2435
2438
2436 * IPython/path.py: Added Jason Orendorff's "path" module to
2439 * IPython/path.py: Added Jason Orendorff's "path" module to
2437 IPython tree, http://www.jorendorff.com/articles/python/path/.
2440 IPython tree, http://www.jorendorff.com/articles/python/path/.
2438 You can get path objects conveniently through %sc, and !!, e.g.:
2441 You can get path objects conveniently through %sc, and !!, e.g.:
2439 sc files=ls
2442 sc files=ls
2440 for p in files.paths: # or files.p
2443 for p in files.paths: # or files.p
2441 print p,p.mtime
2444 print p,p.mtime
2442
2445
2443 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2446 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2444 now work again without considering the exclusion regexp -
2447 now work again without considering the exclusion regexp -
2445 hence, things like ',foo my/path' turn to 'foo("my/path")'
2448 hence, things like ',foo my/path' turn to 'foo("my/path")'
2446 instead of syntax error.
2449 instead of syntax error.
2447
2450
2448
2451
2449 2006-01-14 Ville Vainio <vivainio@gmail.com>
2452 2006-01-14 Ville Vainio <vivainio@gmail.com>
2450
2453
2451 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2454 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2452 ipapi decorators for python 2.4 users, options() provides access to rc
2455 ipapi decorators for python 2.4 users, options() provides access to rc
2453 data.
2456 data.
2454
2457
2455 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2458 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2456 as path separators (even on Linux ;-). Space character after
2459 as path separators (even on Linux ;-). Space character after
2457 backslash (as yielded by tab completer) is still space;
2460 backslash (as yielded by tab completer) is still space;
2458 "%cd long\ name" works as expected.
2461 "%cd long\ name" works as expected.
2459
2462
2460 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2463 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2461 as "chain of command", with priority. API stays the same,
2464 as "chain of command", with priority. API stays the same,
2462 TryNext exception raised by a hook function signals that
2465 TryNext exception raised by a hook function signals that
2463 current hook failed and next hook should try handling it, as
2466 current hook failed and next hook should try handling it, as
2464 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2467 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2465 requested configurable display hook, which is now implemented.
2468 requested configurable display hook, which is now implemented.
2466
2469
2467 2006-01-13 Ville Vainio <vivainio@gmail.com>
2470 2006-01-13 Ville Vainio <vivainio@gmail.com>
2468
2471
2469 * IPython/platutils*.py: platform specific utility functions,
2472 * IPython/platutils*.py: platform specific utility functions,
2470 so far only set_term_title is implemented (change terminal
2473 so far only set_term_title is implemented (change terminal
2471 label in windowing systems). %cd now changes the title to
2474 label in windowing systems). %cd now changes the title to
2472 current dir.
2475 current dir.
2473
2476
2474 * IPython/Release.py: Added myself to "authors" list,
2477 * IPython/Release.py: Added myself to "authors" list,
2475 had to create new files.
2478 had to create new files.
2476
2479
2477 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2480 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2478 shell escape; not a known bug but had potential to be one in the
2481 shell escape; not a known bug but had potential to be one in the
2479 future.
2482 future.
2480
2483
2481 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2484 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2482 extension API for IPython! See the module for usage example. Fix
2485 extension API for IPython! See the module for usage example. Fix
2483 OInspect for docstring-less magic functions.
2486 OInspect for docstring-less magic functions.
2484
2487
2485
2488
2486 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2489 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2487
2490
2488 * IPython/iplib.py (raw_input): temporarily deactivate all
2491 * IPython/iplib.py (raw_input): temporarily deactivate all
2489 attempts at allowing pasting of code with autoindent on. It
2492 attempts at allowing pasting of code with autoindent on. It
2490 introduced bugs (reported by Prabhu) and I can't seem to find a
2493 introduced bugs (reported by Prabhu) and I can't seem to find a
2491 robust combination which works in all cases. Will have to revisit
2494 robust combination which works in all cases. Will have to revisit
2492 later.
2495 later.
2493
2496
2494 * IPython/genutils.py: remove isspace() function. We've dropped
2497 * IPython/genutils.py: remove isspace() function. We've dropped
2495 2.2 compatibility, so it's OK to use the string method.
2498 2.2 compatibility, so it's OK to use the string method.
2496
2499
2497 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2500 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2498
2501
2499 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2502 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2500 matching what NOT to autocall on, to include all python binary
2503 matching what NOT to autocall on, to include all python binary
2501 operators (including things like 'and', 'or', 'is' and 'in').
2504 operators (including things like 'and', 'or', 'is' and 'in').
2502 Prompted by a bug report on 'foo & bar', but I realized we had
2505 Prompted by a bug report on 'foo & bar', but I realized we had
2503 many more potential bug cases with other operators. The regexp is
2506 many more potential bug cases with other operators. The regexp is
2504 self.re_exclude_auto, it's fairly commented.
2507 self.re_exclude_auto, it's fairly commented.
2505
2508
2506 2006-01-12 Ville Vainio <vivainio@gmail.com>
2509 2006-01-12 Ville Vainio <vivainio@gmail.com>
2507
2510
2508 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2511 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2509 Prettified and hardened string/backslash quoting with ipsystem(),
2512 Prettified and hardened string/backslash quoting with ipsystem(),
2510 ipalias() and ipmagic(). Now even \ characters are passed to
2513 ipalias() and ipmagic(). Now even \ characters are passed to
2511 %magics, !shell escapes and aliases exactly as they are in the
2514 %magics, !shell escapes and aliases exactly as they are in the
2512 ipython command line. Should improve backslash experience,
2515 ipython command line. Should improve backslash experience,
2513 particularly in Windows (path delimiter for some commands that
2516 particularly in Windows (path delimiter for some commands that
2514 won't understand '/'), but Unix benefits as well (regexps). %cd
2517 won't understand '/'), but Unix benefits as well (regexps). %cd
2515 magic still doesn't support backslash path delimiters, though. Also
2518 magic still doesn't support backslash path delimiters, though. Also
2516 deleted all pretense of supporting multiline command strings in
2519 deleted all pretense of supporting multiline command strings in
2517 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2520 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2518
2521
2519 * doc/build_doc_instructions.txt added. Documentation on how to
2522 * doc/build_doc_instructions.txt added. Documentation on how to
2520 use doc/update_manual.py, added yesterday. Both files contributed
2523 use doc/update_manual.py, added yesterday. Both files contributed
2521 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2524 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2522 doc/*.sh for deprecation at a later date.
2525 doc/*.sh for deprecation at a later date.
2523
2526
2524 * /ipython.py Added ipython.py to root directory for
2527 * /ipython.py Added ipython.py to root directory for
2525 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2528 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2526 ipython.py) and development convenience (no need to keep doing
2529 ipython.py) and development convenience (no need to keep doing
2527 "setup.py install" between changes).
2530 "setup.py install" between changes).
2528
2531
2529 * Made ! and !! shell escapes work (again) in multiline expressions:
2532 * Made ! and !! shell escapes work (again) in multiline expressions:
2530 if 1:
2533 if 1:
2531 !ls
2534 !ls
2532 !!ls
2535 !!ls
2533
2536
2534 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2537 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2535
2538
2536 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2539 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2537 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2540 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2538 module in case-insensitive installation. Was causing crashes
2541 module in case-insensitive installation. Was causing crashes
2539 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2542 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2540
2543
2541 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2544 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2542 <marienz-AT-gentoo.org>, closes
2545 <marienz-AT-gentoo.org>, closes
2543 http://www.scipy.net/roundup/ipython/issue51.
2546 http://www.scipy.net/roundup/ipython/issue51.
2544
2547
2545 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2548 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2546
2549
2547 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2550 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2548 problem of excessive CPU usage under *nix and keyboard lag under
2551 problem of excessive CPU usage under *nix and keyboard lag under
2549 win32.
2552 win32.
2550
2553
2551 2006-01-10 *** Released version 0.7.0
2554 2006-01-10 *** Released version 0.7.0
2552
2555
2553 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2556 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2554
2557
2555 * IPython/Release.py (revision): tag version number to 0.7.0,
2558 * IPython/Release.py (revision): tag version number to 0.7.0,
2556 ready for release.
2559 ready for release.
2557
2560
2558 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2561 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2559 it informs the user of the name of the temp. file used. This can
2562 it informs the user of the name of the temp. file used. This can
2560 help if you decide later to reuse that same file, so you know
2563 help if you decide later to reuse that same file, so you know
2561 where to copy the info from.
2564 where to copy the info from.
2562
2565
2563 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2566 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2564
2567
2565 * setup_bdist_egg.py: little script to build an egg. Added
2568 * setup_bdist_egg.py: little script to build an egg. Added
2566 support in the release tools as well.
2569 support in the release tools as well.
2567
2570
2568 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2571 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2569
2572
2570 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2573 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2571 version selection (new -wxversion command line and ipythonrc
2574 version selection (new -wxversion command line and ipythonrc
2572 parameter). Patch contributed by Arnd Baecker
2575 parameter). Patch contributed by Arnd Baecker
2573 <arnd.baecker-AT-web.de>.
2576 <arnd.baecker-AT-web.de>.
2574
2577
2575 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2578 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2576 embedded instances, for variables defined at the interactive
2579 embedded instances, for variables defined at the interactive
2577 prompt of the embedded ipython. Reported by Arnd.
2580 prompt of the embedded ipython. Reported by Arnd.
2578
2581
2579 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2582 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2580 it can be used as a (stateful) toggle, or with a direct parameter.
2583 it can be used as a (stateful) toggle, or with a direct parameter.
2581
2584
2582 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2585 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2583 could be triggered in certain cases and cause the traceback
2586 could be triggered in certain cases and cause the traceback
2584 printer not to work.
2587 printer not to work.
2585
2588
2586 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2589 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2587
2590
2588 * IPython/iplib.py (_should_recompile): Small fix, closes
2591 * IPython/iplib.py (_should_recompile): Small fix, closes
2589 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2592 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2590
2593
2591 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2594 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2592
2595
2593 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2596 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2594 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2597 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2595 Moad for help with tracking it down.
2598 Moad for help with tracking it down.
2596
2599
2597 * IPython/iplib.py (handle_auto): fix autocall handling for
2600 * IPython/iplib.py (handle_auto): fix autocall handling for
2598 objects which support BOTH __getitem__ and __call__ (so that f [x]
2601 objects which support BOTH __getitem__ and __call__ (so that f [x]
2599 is left alone, instead of becoming f([x]) automatically).
2602 is left alone, instead of becoming f([x]) automatically).
2600
2603
2601 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2604 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2602 Ville's patch.
2605 Ville's patch.
2603
2606
2604 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2607 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2605
2608
2606 * IPython/iplib.py (handle_auto): changed autocall semantics to
2609 * IPython/iplib.py (handle_auto): changed autocall semantics to
2607 include 'smart' mode, where the autocall transformation is NOT
2610 include 'smart' mode, where the autocall transformation is NOT
2608 applied if there are no arguments on the line. This allows you to
2611 applied if there are no arguments on the line. This allows you to
2609 just type 'foo' if foo is a callable to see its internal form,
2612 just type 'foo' if foo is a callable to see its internal form,
2610 instead of having it called with no arguments (typically a
2613 instead of having it called with no arguments (typically a
2611 mistake). The old 'full' autocall still exists: for that, you
2614 mistake). The old 'full' autocall still exists: for that, you
2612 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2615 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2613
2616
2614 * IPython/completer.py (Completer.attr_matches): add
2617 * IPython/completer.py (Completer.attr_matches): add
2615 tab-completion support for Enthoughts' traits. After a report by
2618 tab-completion support for Enthoughts' traits. After a report by
2616 Arnd and a patch by Prabhu.
2619 Arnd and a patch by Prabhu.
2617
2620
2618 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2621 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2619
2622
2620 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2623 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2621 Schmolck's patch to fix inspect.getinnerframes().
2624 Schmolck's patch to fix inspect.getinnerframes().
2622
2625
2623 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2626 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2624 for embedded instances, regarding handling of namespaces and items
2627 for embedded instances, regarding handling of namespaces and items
2625 added to the __builtin__ one. Multiple embedded instances and
2628 added to the __builtin__ one. Multiple embedded instances and
2626 recursive embeddings should work better now (though I'm not sure
2629 recursive embeddings should work better now (though I'm not sure
2627 I've got all the corner cases fixed, that code is a bit of a brain
2630 I've got all the corner cases fixed, that code is a bit of a brain
2628 twister).
2631 twister).
2629
2632
2630 * IPython/Magic.py (magic_edit): added support to edit in-memory
2633 * IPython/Magic.py (magic_edit): added support to edit in-memory
2631 macros (automatically creates the necessary temp files). %edit
2634 macros (automatically creates the necessary temp files). %edit
2632 also doesn't return the file contents anymore, it's just noise.
2635 also doesn't return the file contents anymore, it's just noise.
2633
2636
2634 * IPython/completer.py (Completer.attr_matches): revert change to
2637 * IPython/completer.py (Completer.attr_matches): revert change to
2635 complete only on attributes listed in __all__. I realized it
2638 complete only on attributes listed in __all__. I realized it
2636 cripples the tab-completion system as a tool for exploring the
2639 cripples the tab-completion system as a tool for exploring the
2637 internals of unknown libraries (it renders any non-__all__
2640 internals of unknown libraries (it renders any non-__all__
2638 attribute off-limits). I got bit by this when trying to see
2641 attribute off-limits). I got bit by this when trying to see
2639 something inside the dis module.
2642 something inside the dis module.
2640
2643
2641 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2644 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2642
2645
2643 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2646 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2644 namespace for users and extension writers to hold data in. This
2647 namespace for users and extension writers to hold data in. This
2645 follows the discussion in
2648 follows the discussion in
2646 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2649 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2647
2650
2648 * IPython/completer.py (IPCompleter.complete): small patch to help
2651 * IPython/completer.py (IPCompleter.complete): small patch to help
2649 tab-completion under Emacs, after a suggestion by John Barnard
2652 tab-completion under Emacs, after a suggestion by John Barnard
2650 <barnarj-AT-ccf.org>.
2653 <barnarj-AT-ccf.org>.
2651
2654
2652 * IPython/Magic.py (Magic.extract_input_slices): added support for
2655 * IPython/Magic.py (Magic.extract_input_slices): added support for
2653 the slice notation in magics to use N-M to represent numbers N...M
2656 the slice notation in magics to use N-M to represent numbers N...M
2654 (closed endpoints). This is used by %macro and %save.
2657 (closed endpoints). This is used by %macro and %save.
2655
2658
2656 * IPython/completer.py (Completer.attr_matches): for modules which
2659 * IPython/completer.py (Completer.attr_matches): for modules which
2657 define __all__, complete only on those. After a patch by Jeffrey
2660 define __all__, complete only on those. After a patch by Jeffrey
2658 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2661 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2659 speed up this routine.
2662 speed up this routine.
2660
2663
2661 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2664 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2662 don't know if this is the end of it, but the behavior now is
2665 don't know if this is the end of it, but the behavior now is
2663 certainly much more correct. Note that coupled with macros,
2666 certainly much more correct. Note that coupled with macros,
2664 slightly surprising (at first) behavior may occur: a macro will in
2667 slightly surprising (at first) behavior may occur: a macro will in
2665 general expand to multiple lines of input, so upon exiting, the
2668 general expand to multiple lines of input, so upon exiting, the
2666 in/out counters will both be bumped by the corresponding amount
2669 in/out counters will both be bumped by the corresponding amount
2667 (as if the macro's contents had been typed interactively). Typing
2670 (as if the macro's contents had been typed interactively). Typing
2668 %hist will reveal the intermediate (silently processed) lines.
2671 %hist will reveal the intermediate (silently processed) lines.
2669
2672
2670 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2673 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2671 pickle to fail (%run was overwriting __main__ and not restoring
2674 pickle to fail (%run was overwriting __main__ and not restoring
2672 it, but pickle relies on __main__ to operate).
2675 it, but pickle relies on __main__ to operate).
2673
2676
2674 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2677 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2675 using properties, but forgot to make the main InteractiveShell
2678 using properties, but forgot to make the main InteractiveShell
2676 class a new-style class. Properties fail silently, and
2679 class a new-style class. Properties fail silently, and
2677 mysteriously, with old-style class (getters work, but
2680 mysteriously, with old-style class (getters work, but
2678 setters don't do anything).
2681 setters don't do anything).
2679
2682
2680 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2683 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2681
2684
2682 * IPython/Magic.py (magic_history): fix history reporting bug (I
2685 * IPython/Magic.py (magic_history): fix history reporting bug (I
2683 know some nasties are still there, I just can't seem to find a
2686 know some nasties are still there, I just can't seem to find a
2684 reproducible test case to track them down; the input history is
2687 reproducible test case to track them down; the input history is
2685 falling out of sync...)
2688 falling out of sync...)
2686
2689
2687 * IPython/iplib.py (handle_shell_escape): fix bug where both
2690 * IPython/iplib.py (handle_shell_escape): fix bug where both
2688 aliases and system accesses where broken for indented code (such
2691 aliases and system accesses where broken for indented code (such
2689 as loops).
2692 as loops).
2690
2693
2691 * IPython/genutils.py (shell): fix small but critical bug for
2694 * IPython/genutils.py (shell): fix small but critical bug for
2692 win32 system access.
2695 win32 system access.
2693
2696
2694 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2697 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2695
2698
2696 * IPython/iplib.py (showtraceback): remove use of the
2699 * IPython/iplib.py (showtraceback): remove use of the
2697 sys.last_{type/value/traceback} structures, which are non
2700 sys.last_{type/value/traceback} structures, which are non
2698 thread-safe.
2701 thread-safe.
2699 (_prefilter): change control flow to ensure that we NEVER
2702 (_prefilter): change control flow to ensure that we NEVER
2700 introspect objects when autocall is off. This will guarantee that
2703 introspect objects when autocall is off. This will guarantee that
2701 having an input line of the form 'x.y', where access to attribute
2704 having an input line of the form 'x.y', where access to attribute
2702 'y' has side effects, doesn't trigger the side effect TWICE. It
2705 'y' has side effects, doesn't trigger the side effect TWICE. It
2703 is important to note that, with autocall on, these side effects
2706 is important to note that, with autocall on, these side effects
2704 can still happen.
2707 can still happen.
2705 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2708 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2706 trio. IPython offers these three kinds of special calls which are
2709 trio. IPython offers these three kinds of special calls which are
2707 not python code, and it's a good thing to have their call method
2710 not python code, and it's a good thing to have their call method
2708 be accessible as pure python functions (not just special syntax at
2711 be accessible as pure python functions (not just special syntax at
2709 the command line). It gives us a better internal implementation
2712 the command line). It gives us a better internal implementation
2710 structure, as well as exposing these for user scripting more
2713 structure, as well as exposing these for user scripting more
2711 cleanly.
2714 cleanly.
2712
2715
2713 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2716 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2714 file. Now that they'll be more likely to be used with the
2717 file. Now that they'll be more likely to be used with the
2715 persistance system (%store), I want to make sure their module path
2718 persistance system (%store), I want to make sure their module path
2716 doesn't change in the future, so that we don't break things for
2719 doesn't change in the future, so that we don't break things for
2717 users' persisted data.
2720 users' persisted data.
2718
2721
2719 * IPython/iplib.py (autoindent_update): move indentation
2722 * IPython/iplib.py (autoindent_update): move indentation
2720 management into the _text_ processing loop, not the keyboard
2723 management into the _text_ processing loop, not the keyboard
2721 interactive one. This is necessary to correctly process non-typed
2724 interactive one. This is necessary to correctly process non-typed
2722 multiline input (such as macros).
2725 multiline input (such as macros).
2723
2726
2724 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2727 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2725 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2728 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2726 which was producing problems in the resulting manual.
2729 which was producing problems in the resulting manual.
2727 (magic_whos): improve reporting of instances (show their class,
2730 (magic_whos): improve reporting of instances (show their class,
2728 instead of simply printing 'instance' which isn't terribly
2731 instead of simply printing 'instance' which isn't terribly
2729 informative).
2732 informative).
2730
2733
2731 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2734 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2732 (minor mods) to support network shares under win32.
2735 (minor mods) to support network shares under win32.
2733
2736
2734 * IPython/winconsole.py (get_console_size): add new winconsole
2737 * IPython/winconsole.py (get_console_size): add new winconsole
2735 module and fixes to page_dumb() to improve its behavior under
2738 module and fixes to page_dumb() to improve its behavior under
2736 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2739 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2737
2740
2738 * IPython/Magic.py (Macro): simplified Macro class to just
2741 * IPython/Magic.py (Macro): simplified Macro class to just
2739 subclass list. We've had only 2.2 compatibility for a very long
2742 subclass list. We've had only 2.2 compatibility for a very long
2740 time, yet I was still avoiding subclassing the builtin types. No
2743 time, yet I was still avoiding subclassing the builtin types. No
2741 more (I'm also starting to use properties, though I won't shift to
2744 more (I'm also starting to use properties, though I won't shift to
2742 2.3-specific features quite yet).
2745 2.3-specific features quite yet).
2743 (magic_store): added Ville's patch for lightweight variable
2746 (magic_store): added Ville's patch for lightweight variable
2744 persistence, after a request on the user list by Matt Wilkie
2747 persistence, after a request on the user list by Matt Wilkie
2745 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2748 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2746 details.
2749 details.
2747
2750
2748 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2751 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2749 changed the default logfile name from 'ipython.log' to
2752 changed the default logfile name from 'ipython.log' to
2750 'ipython_log.py'. These logs are real python files, and now that
2753 'ipython_log.py'. These logs are real python files, and now that
2751 we have much better multiline support, people are more likely to
2754 we have much better multiline support, people are more likely to
2752 want to use them as such. Might as well name them correctly.
2755 want to use them as such. Might as well name them correctly.
2753
2756
2754 * IPython/Magic.py: substantial cleanup. While we can't stop
2757 * IPython/Magic.py: substantial cleanup. While we can't stop
2755 using magics as mixins, due to the existing customizations 'out
2758 using magics as mixins, due to the existing customizations 'out
2756 there' which rely on the mixin naming conventions, at least I
2759 there' which rely on the mixin naming conventions, at least I
2757 cleaned out all cross-class name usage. So once we are OK with
2760 cleaned out all cross-class name usage. So once we are OK with
2758 breaking compatibility, the two systems can be separated.
2761 breaking compatibility, the two systems can be separated.
2759
2762
2760 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2763 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2761 anymore, and the class is a fair bit less hideous as well. New
2764 anymore, and the class is a fair bit less hideous as well. New
2762 features were also introduced: timestamping of input, and logging
2765 features were also introduced: timestamping of input, and logging
2763 of output results. These are user-visible with the -t and -o
2766 of output results. These are user-visible with the -t and -o
2764 options to %logstart. Closes
2767 options to %logstart. Closes
2765 http://www.scipy.net/roundup/ipython/issue11 and a request by
2768 http://www.scipy.net/roundup/ipython/issue11 and a request by
2766 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2769 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2767
2770
2768 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2771 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2769
2772
2770 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2773 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2771 better handle backslashes in paths. See the thread 'More Windows
2774 better handle backslashes in paths. See the thread 'More Windows
2772 questions part 2 - \/ characters revisited' on the iypthon user
2775 questions part 2 - \/ characters revisited' on the iypthon user
2773 list:
2776 list:
2774 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2777 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2775
2778
2776 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2779 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2777
2780
2778 (InteractiveShell.__init__): change threaded shells to not use the
2781 (InteractiveShell.__init__): change threaded shells to not use the
2779 ipython crash handler. This was causing more problems than not,
2782 ipython crash handler. This was causing more problems than not,
2780 as exceptions in the main thread (GUI code, typically) would
2783 as exceptions in the main thread (GUI code, typically) would
2781 always show up as a 'crash', when they really weren't.
2784 always show up as a 'crash', when they really weren't.
2782
2785
2783 The colors and exception mode commands (%colors/%xmode) have been
2786 The colors and exception mode commands (%colors/%xmode) have been
2784 synchronized to also take this into account, so users can get
2787 synchronized to also take this into account, so users can get
2785 verbose exceptions for their threaded code as well. I also added
2788 verbose exceptions for their threaded code as well. I also added
2786 support for activating pdb inside this exception handler as well,
2789 support for activating pdb inside this exception handler as well,
2787 so now GUI authors can use IPython's enhanced pdb at runtime.
2790 so now GUI authors can use IPython's enhanced pdb at runtime.
2788
2791
2789 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2792 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2790 true by default, and add it to the shipped ipythonrc file. Since
2793 true by default, and add it to the shipped ipythonrc file. Since
2791 this asks the user before proceeding, I think it's OK to make it
2794 this asks the user before proceeding, I think it's OK to make it
2792 true by default.
2795 true by default.
2793
2796
2794 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2797 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2795 of the previous special-casing of input in the eval loop. I think
2798 of the previous special-casing of input in the eval loop. I think
2796 this is cleaner, as they really are commands and shouldn't have
2799 this is cleaner, as they really are commands and shouldn't have
2797 a special role in the middle of the core code.
2800 a special role in the middle of the core code.
2798
2801
2799 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2802 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2800
2803
2801 * IPython/iplib.py (edit_syntax_error): added support for
2804 * IPython/iplib.py (edit_syntax_error): added support for
2802 automatically reopening the editor if the file had a syntax error
2805 automatically reopening the editor if the file had a syntax error
2803 in it. Thanks to scottt who provided the patch at:
2806 in it. Thanks to scottt who provided the patch at:
2804 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2807 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2805 version committed).
2808 version committed).
2806
2809
2807 * IPython/iplib.py (handle_normal): add suport for multi-line
2810 * IPython/iplib.py (handle_normal): add suport for multi-line
2808 input with emtpy lines. This fixes
2811 input with emtpy lines. This fixes
2809 http://www.scipy.net/roundup/ipython/issue43 and a similar
2812 http://www.scipy.net/roundup/ipython/issue43 and a similar
2810 discussion on the user list.
2813 discussion on the user list.
2811
2814
2812 WARNING: a behavior change is necessarily introduced to support
2815 WARNING: a behavior change is necessarily introduced to support
2813 blank lines: now a single blank line with whitespace does NOT
2816 blank lines: now a single blank line with whitespace does NOT
2814 break the input loop, which means that when autoindent is on, by
2817 break the input loop, which means that when autoindent is on, by
2815 default hitting return on the next (indented) line does NOT exit.
2818 default hitting return on the next (indented) line does NOT exit.
2816
2819
2817 Instead, to exit a multiline input you can either have:
2820 Instead, to exit a multiline input you can either have:
2818
2821
2819 - TWO whitespace lines (just hit return again), or
2822 - TWO whitespace lines (just hit return again), or
2820 - a single whitespace line of a different length than provided
2823 - a single whitespace line of a different length than provided
2821 by the autoindent (add or remove a space).
2824 by the autoindent (add or remove a space).
2822
2825
2823 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2826 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2824 module to better organize all readline-related functionality.
2827 module to better organize all readline-related functionality.
2825 I've deleted FlexCompleter and put all completion clases here.
2828 I've deleted FlexCompleter and put all completion clases here.
2826
2829
2827 * IPython/iplib.py (raw_input): improve indentation management.
2830 * IPython/iplib.py (raw_input): improve indentation management.
2828 It is now possible to paste indented code with autoindent on, and
2831 It is now possible to paste indented code with autoindent on, and
2829 the code is interpreted correctly (though it still looks bad on
2832 the code is interpreted correctly (though it still looks bad on
2830 screen, due to the line-oriented nature of ipython).
2833 screen, due to the line-oriented nature of ipython).
2831 (MagicCompleter.complete): change behavior so that a TAB key on an
2834 (MagicCompleter.complete): change behavior so that a TAB key on an
2832 otherwise empty line actually inserts a tab, instead of completing
2835 otherwise empty line actually inserts a tab, instead of completing
2833 on the entire global namespace. This makes it easier to use the
2836 on the entire global namespace. This makes it easier to use the
2834 TAB key for indentation. After a request by Hans Meine
2837 TAB key for indentation. After a request by Hans Meine
2835 <hans_meine-AT-gmx.net>
2838 <hans_meine-AT-gmx.net>
2836 (_prefilter): add support so that typing plain 'exit' or 'quit'
2839 (_prefilter): add support so that typing plain 'exit' or 'quit'
2837 does a sensible thing. Originally I tried to deviate as little as
2840 does a sensible thing. Originally I tried to deviate as little as
2838 possible from the default python behavior, but even that one may
2841 possible from the default python behavior, but even that one may
2839 change in this direction (thread on python-dev to that effect).
2842 change in this direction (thread on python-dev to that effect).
2840 Regardless, ipython should do the right thing even if CPython's
2843 Regardless, ipython should do the right thing even if CPython's
2841 '>>>' prompt doesn't.
2844 '>>>' prompt doesn't.
2842 (InteractiveShell): removed subclassing code.InteractiveConsole
2845 (InteractiveShell): removed subclassing code.InteractiveConsole
2843 class. By now we'd overridden just about all of its methods: I've
2846 class. By now we'd overridden just about all of its methods: I've
2844 copied the remaining two over, and now ipython is a standalone
2847 copied the remaining two over, and now ipython is a standalone
2845 class. This will provide a clearer picture for the chainsaw
2848 class. This will provide a clearer picture for the chainsaw
2846 branch refactoring.
2849 branch refactoring.
2847
2850
2848 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2851 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2849
2852
2850 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2853 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2851 failures for objects which break when dir() is called on them.
2854 failures for objects which break when dir() is called on them.
2852
2855
2853 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2856 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2854 distinct local and global namespaces in the completer API. This
2857 distinct local and global namespaces in the completer API. This
2855 change allows us to properly handle completion with distinct
2858 change allows us to properly handle completion with distinct
2856 scopes, including in embedded instances (this had never really
2859 scopes, including in embedded instances (this had never really
2857 worked correctly).
2860 worked correctly).
2858
2861
2859 Note: this introduces a change in the constructor for
2862 Note: this introduces a change in the constructor for
2860 MagicCompleter, as a new global_namespace parameter is now the
2863 MagicCompleter, as a new global_namespace parameter is now the
2861 second argument (the others were bumped one position).
2864 second argument (the others were bumped one position).
2862
2865
2863 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2866 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2864
2867
2865 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2868 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2866 embedded instances (which can be done now thanks to Vivian's
2869 embedded instances (which can be done now thanks to Vivian's
2867 frame-handling fixes for pdb).
2870 frame-handling fixes for pdb).
2868 (InteractiveShell.__init__): Fix namespace handling problem in
2871 (InteractiveShell.__init__): Fix namespace handling problem in
2869 embedded instances. We were overwriting __main__ unconditionally,
2872 embedded instances. We were overwriting __main__ unconditionally,
2870 and this should only be done for 'full' (non-embedded) IPython;
2873 and this should only be done for 'full' (non-embedded) IPython;
2871 embedded instances must respect the caller's __main__. Thanks to
2874 embedded instances must respect the caller's __main__. Thanks to
2872 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2875 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2873
2876
2874 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2877 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2875
2878
2876 * setup.py: added download_url to setup(). This registers the
2879 * setup.py: added download_url to setup(). This registers the
2877 download address at PyPI, which is not only useful to humans
2880 download address at PyPI, which is not only useful to humans
2878 browsing the site, but is also picked up by setuptools (the Eggs
2881 browsing the site, but is also picked up by setuptools (the Eggs
2879 machinery). Thanks to Ville and R. Kern for the info/discussion
2882 machinery). Thanks to Ville and R. Kern for the info/discussion
2880 on this.
2883 on this.
2881
2884
2882 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2885 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2883
2886
2884 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2887 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2885 This brings a lot of nice functionality to the pdb mode, which now
2888 This brings a lot of nice functionality to the pdb mode, which now
2886 has tab-completion, syntax highlighting, and better stack handling
2889 has tab-completion, syntax highlighting, and better stack handling
2887 than before. Many thanks to Vivian De Smedt
2890 than before. Many thanks to Vivian De Smedt
2888 <vivian-AT-vdesmedt.com> for the original patches.
2891 <vivian-AT-vdesmedt.com> for the original patches.
2889
2892
2890 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2893 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2891
2894
2892 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2895 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2893 sequence to consistently accept the banner argument. The
2896 sequence to consistently accept the banner argument. The
2894 inconsistency was tripping SAGE, thanks to Gary Zablackis
2897 inconsistency was tripping SAGE, thanks to Gary Zablackis
2895 <gzabl-AT-yahoo.com> for the report.
2898 <gzabl-AT-yahoo.com> for the report.
2896
2899
2897 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2900 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2898
2901
2899 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2902 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2900 Fix bug where a naked 'alias' call in the ipythonrc file would
2903 Fix bug where a naked 'alias' call in the ipythonrc file would
2901 cause a crash. Bug reported by Jorgen Stenarson.
2904 cause a crash. Bug reported by Jorgen Stenarson.
2902
2905
2903 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2906 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2904
2907
2905 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2908 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2906 startup time.
2909 startup time.
2907
2910
2908 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2911 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2909 instances had introduced a bug with globals in normal code. Now
2912 instances had introduced a bug with globals in normal code. Now
2910 it's working in all cases.
2913 it's working in all cases.
2911
2914
2912 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2915 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2913 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2916 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2914 has been introduced to set the default case sensitivity of the
2917 has been introduced to set the default case sensitivity of the
2915 searches. Users can still select either mode at runtime on a
2918 searches. Users can still select either mode at runtime on a
2916 per-search basis.
2919 per-search basis.
2917
2920
2918 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2921 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2919
2922
2920 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2923 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2921 attributes in wildcard searches for subclasses. Modified version
2924 attributes in wildcard searches for subclasses. Modified version
2922 of a patch by Jorgen.
2925 of a patch by Jorgen.
2923
2926
2924 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2927 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2925
2928
2926 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2929 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2927 embedded instances. I added a user_global_ns attribute to the
2930 embedded instances. I added a user_global_ns attribute to the
2928 InteractiveShell class to handle this.
2931 InteractiveShell class to handle this.
2929
2932
2930 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2933 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2931
2934
2932 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2935 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2933 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2936 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2934 (reported under win32, but may happen also in other platforms).
2937 (reported under win32, but may happen also in other platforms).
2935 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2938 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2936
2939
2937 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2940 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2938
2941
2939 * IPython/Magic.py (magic_psearch): new support for wildcard
2942 * IPython/Magic.py (magic_psearch): new support for wildcard
2940 patterns. Now, typing ?a*b will list all names which begin with a
2943 patterns. Now, typing ?a*b will list all names which begin with a
2941 and end in b, for example. The %psearch magic has full
2944 and end in b, for example. The %psearch magic has full
2942 docstrings. Many thanks to JΓΆrgen Stenarson
2945 docstrings. Many thanks to JΓΆrgen Stenarson
2943 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2946 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2944 implementing this functionality.
2947 implementing this functionality.
2945
2948
2946 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2949 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2947
2950
2948 * Manual: fixed long-standing annoyance of double-dashes (as in
2951 * Manual: fixed long-standing annoyance of double-dashes (as in
2949 --prefix=~, for example) being stripped in the HTML version. This
2952 --prefix=~, for example) being stripped in the HTML version. This
2950 is a latex2html bug, but a workaround was provided. Many thanks
2953 is a latex2html bug, but a workaround was provided. Many thanks
2951 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2954 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2952 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2955 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2953 rolling. This seemingly small issue had tripped a number of users
2956 rolling. This seemingly small issue had tripped a number of users
2954 when first installing, so I'm glad to see it gone.
2957 when first installing, so I'm glad to see it gone.
2955
2958
2956 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2959 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2957
2960
2958 * IPython/Extensions/numeric_formats.py: fix missing import,
2961 * IPython/Extensions/numeric_formats.py: fix missing import,
2959 reported by Stephen Walton.
2962 reported by Stephen Walton.
2960
2963
2961 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2964 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2962
2965
2963 * IPython/demo.py: finish demo module, fully documented now.
2966 * IPython/demo.py: finish demo module, fully documented now.
2964
2967
2965 * IPython/genutils.py (file_read): simple little utility to read a
2968 * IPython/genutils.py (file_read): simple little utility to read a
2966 file and ensure it's closed afterwards.
2969 file and ensure it's closed afterwards.
2967
2970
2968 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2971 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2969
2972
2970 * IPython/demo.py (Demo.__init__): added support for individually
2973 * IPython/demo.py (Demo.__init__): added support for individually
2971 tagging blocks for automatic execution.
2974 tagging blocks for automatic execution.
2972
2975
2973 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2976 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2974 syntax-highlighted python sources, requested by John.
2977 syntax-highlighted python sources, requested by John.
2975
2978
2976 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2979 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2977
2980
2978 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2981 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2979 finishing.
2982 finishing.
2980
2983
2981 * IPython/genutils.py (shlex_split): moved from Magic to here,
2984 * IPython/genutils.py (shlex_split): moved from Magic to here,
2982 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2985 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2983
2986
2984 * IPython/demo.py (Demo.__init__): added support for silent
2987 * IPython/demo.py (Demo.__init__): added support for silent
2985 blocks, improved marks as regexps, docstrings written.
2988 blocks, improved marks as regexps, docstrings written.
2986 (Demo.__init__): better docstring, added support for sys.argv.
2989 (Demo.__init__): better docstring, added support for sys.argv.
2987
2990
2988 * IPython/genutils.py (marquee): little utility used by the demo
2991 * IPython/genutils.py (marquee): little utility used by the demo
2989 code, handy in general.
2992 code, handy in general.
2990
2993
2991 * IPython/demo.py (Demo.__init__): new class for interactive
2994 * IPython/demo.py (Demo.__init__): new class for interactive
2992 demos. Not documented yet, I just wrote it in a hurry for
2995 demos. Not documented yet, I just wrote it in a hurry for
2993 scipy'05. Will docstring later.
2996 scipy'05. Will docstring later.
2994
2997
2995 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2998 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2996
2999
2997 * IPython/Shell.py (sigint_handler): Drastic simplification which
3000 * IPython/Shell.py (sigint_handler): Drastic simplification which
2998 also seems to make Ctrl-C work correctly across threads! This is
3001 also seems to make Ctrl-C work correctly across threads! This is
2999 so simple, that I can't beleive I'd missed it before. Needs more
3002 so simple, that I can't beleive I'd missed it before. Needs more
3000 testing, though.
3003 testing, though.
3001 (KBINT): Never mind, revert changes. I'm sure I'd tried something
3004 (KBINT): Never mind, revert changes. I'm sure I'd tried something
3002 like this before...
3005 like this before...
3003
3006
3004 * IPython/genutils.py (get_home_dir): add protection against
3007 * IPython/genutils.py (get_home_dir): add protection against
3005 non-dirs in win32 registry.
3008 non-dirs in win32 registry.
3006
3009
3007 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
3010 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
3008 bug where dict was mutated while iterating (pysh crash).
3011 bug where dict was mutated while iterating (pysh crash).
3009
3012
3010 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
3013 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
3011
3014
3012 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
3015 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
3013 spurious newlines added by this routine. After a report by
3016 spurious newlines added by this routine. After a report by
3014 F. Mantegazza.
3017 F. Mantegazza.
3015
3018
3016 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
3019 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
3017
3020
3018 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
3021 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
3019 calls. These were a leftover from the GTK 1.x days, and can cause
3022 calls. These were a leftover from the GTK 1.x days, and can cause
3020 problems in certain cases (after a report by John Hunter).
3023 problems in certain cases (after a report by John Hunter).
3021
3024
3022 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
3025 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
3023 os.getcwd() fails at init time. Thanks to patch from David Remahl
3026 os.getcwd() fails at init time. Thanks to patch from David Remahl
3024 <chmod007-AT-mac.com>.
3027 <chmod007-AT-mac.com>.
3025 (InteractiveShell.__init__): prevent certain special magics from
3028 (InteractiveShell.__init__): prevent certain special magics from
3026 being shadowed by aliases. Closes
3029 being shadowed by aliases. Closes
3027 http://www.scipy.net/roundup/ipython/issue41.
3030 http://www.scipy.net/roundup/ipython/issue41.
3028
3031
3029 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
3032 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
3030
3033
3031 * IPython/iplib.py (InteractiveShell.complete): Added new
3034 * IPython/iplib.py (InteractiveShell.complete): Added new
3032 top-level completion method to expose the completion mechanism
3035 top-level completion method to expose the completion mechanism
3033 beyond readline-based environments.
3036 beyond readline-based environments.
3034
3037
3035 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
3038 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
3036
3039
3037 * tools/ipsvnc (svnversion): fix svnversion capture.
3040 * tools/ipsvnc (svnversion): fix svnversion capture.
3038
3041
3039 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
3042 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
3040 attribute to self, which was missing. Before, it was set by a
3043 attribute to self, which was missing. Before, it was set by a
3041 routine which in certain cases wasn't being called, so the
3044 routine which in certain cases wasn't being called, so the
3042 instance could end up missing the attribute. This caused a crash.
3045 instance could end up missing the attribute. This caused a crash.
3043 Closes http://www.scipy.net/roundup/ipython/issue40.
3046 Closes http://www.scipy.net/roundup/ipython/issue40.
3044
3047
3045 2005-08-16 Fernando Perez <fperez@colorado.edu>
3048 2005-08-16 Fernando Perez <fperez@colorado.edu>
3046
3049
3047 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3050 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3048 contains non-string attribute. Closes
3051 contains non-string attribute. Closes
3049 http://www.scipy.net/roundup/ipython/issue38.
3052 http://www.scipy.net/roundup/ipython/issue38.
3050
3053
3051 2005-08-14 Fernando Perez <fperez@colorado.edu>
3054 2005-08-14 Fernando Perez <fperez@colorado.edu>
3052
3055
3053 * tools/ipsvnc: Minor improvements, to add changeset info.
3056 * tools/ipsvnc: Minor improvements, to add changeset info.
3054
3057
3055 2005-08-12 Fernando Perez <fperez@colorado.edu>
3058 2005-08-12 Fernando Perez <fperez@colorado.edu>
3056
3059
3057 * IPython/iplib.py (runsource): remove self.code_to_run_src
3060 * IPython/iplib.py (runsource): remove self.code_to_run_src
3058 attribute. I realized this is nothing more than
3061 attribute. I realized this is nothing more than
3059 '\n'.join(self.buffer), and having the same data in two different
3062 '\n'.join(self.buffer), and having the same data in two different
3060 places is just asking for synchronization bugs. This may impact
3063 places is just asking for synchronization bugs. This may impact
3061 people who have custom exception handlers, so I need to warn
3064 people who have custom exception handlers, so I need to warn
3062 ipython-dev about it (F. Mantegazza may use them).
3065 ipython-dev about it (F. Mantegazza may use them).
3063
3066
3064 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3067 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3065
3068
3066 * IPython/genutils.py: fix 2.2 compatibility (generators)
3069 * IPython/genutils.py: fix 2.2 compatibility (generators)
3067
3070
3068 2005-07-18 Fernando Perez <fperez@colorado.edu>
3071 2005-07-18 Fernando Perez <fperez@colorado.edu>
3069
3072
3070 * IPython/genutils.py (get_home_dir): fix to help users with
3073 * IPython/genutils.py (get_home_dir): fix to help users with
3071 invalid $HOME under win32.
3074 invalid $HOME under win32.
3072
3075
3073 2005-07-17 Fernando Perez <fperez@colorado.edu>
3076 2005-07-17 Fernando Perez <fperez@colorado.edu>
3074
3077
3075 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3078 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3076 some old hacks and clean up a bit other routines; code should be
3079 some old hacks and clean up a bit other routines; code should be
3077 simpler and a bit faster.
3080 simpler and a bit faster.
3078
3081
3079 * IPython/iplib.py (interact): removed some last-resort attempts
3082 * IPython/iplib.py (interact): removed some last-resort attempts
3080 to survive broken stdout/stderr. That code was only making it
3083 to survive broken stdout/stderr. That code was only making it
3081 harder to abstract out the i/o (necessary for gui integration),
3084 harder to abstract out the i/o (necessary for gui integration),
3082 and the crashes it could prevent were extremely rare in practice
3085 and the crashes it could prevent were extremely rare in practice
3083 (besides being fully user-induced in a pretty violent manner).
3086 (besides being fully user-induced in a pretty violent manner).
3084
3087
3085 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3088 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3086 Nothing major yet, but the code is simpler to read; this should
3089 Nothing major yet, but the code is simpler to read; this should
3087 make it easier to do more serious modifications in the future.
3090 make it easier to do more serious modifications in the future.
3088
3091
3089 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3092 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3090 which broke in .15 (thanks to a report by Ville).
3093 which broke in .15 (thanks to a report by Ville).
3091
3094
3092 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3095 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3093 be quite correct, I know next to nothing about unicode). This
3096 be quite correct, I know next to nothing about unicode). This
3094 will allow unicode strings to be used in prompts, amongst other
3097 will allow unicode strings to be used in prompts, amongst other
3095 cases. It also will prevent ipython from crashing when unicode
3098 cases. It also will prevent ipython from crashing when unicode
3096 shows up unexpectedly in many places. If ascii encoding fails, we
3099 shows up unexpectedly in many places. If ascii encoding fails, we
3097 assume utf_8. Currently the encoding is not a user-visible
3100 assume utf_8. Currently the encoding is not a user-visible
3098 setting, though it could be made so if there is demand for it.
3101 setting, though it could be made so if there is demand for it.
3099
3102
3100 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3103 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3101
3104
3102 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3105 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3103
3106
3104 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3107 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3105
3108
3106 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3109 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3107 code can work transparently for 2.2/2.3.
3110 code can work transparently for 2.2/2.3.
3108
3111
3109 2005-07-16 Fernando Perez <fperez@colorado.edu>
3112 2005-07-16 Fernando Perez <fperez@colorado.edu>
3110
3113
3111 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3114 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3112 out of the color scheme table used for coloring exception
3115 out of the color scheme table used for coloring exception
3113 tracebacks. This allows user code to add new schemes at runtime.
3116 tracebacks. This allows user code to add new schemes at runtime.
3114 This is a minimally modified version of the patch at
3117 This is a minimally modified version of the patch at
3115 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3118 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3116 for the contribution.
3119 for the contribution.
3117
3120
3118 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3121 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3119 slightly modified version of the patch in
3122 slightly modified version of the patch in
3120 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3123 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3121 to remove the previous try/except solution (which was costlier).
3124 to remove the previous try/except solution (which was costlier).
3122 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3125 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3123
3126
3124 2005-06-08 Fernando Perez <fperez@colorado.edu>
3127 2005-06-08 Fernando Perez <fperez@colorado.edu>
3125
3128
3126 * IPython/iplib.py (write/write_err): Add methods to abstract all
3129 * IPython/iplib.py (write/write_err): Add methods to abstract all
3127 I/O a bit more.
3130 I/O a bit more.
3128
3131
3129 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3132 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3130 warning, reported by Aric Hagberg, fix by JD Hunter.
3133 warning, reported by Aric Hagberg, fix by JD Hunter.
3131
3134
3132 2005-06-02 *** Released version 0.6.15
3135 2005-06-02 *** Released version 0.6.15
3133
3136
3134 2005-06-01 Fernando Perez <fperez@colorado.edu>
3137 2005-06-01 Fernando Perez <fperez@colorado.edu>
3135
3138
3136 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3139 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3137 tab-completion of filenames within open-quoted strings. Note that
3140 tab-completion of filenames within open-quoted strings. Note that
3138 this requires that in ~/.ipython/ipythonrc, users change the
3141 this requires that in ~/.ipython/ipythonrc, users change the
3139 readline delimiters configuration to read:
3142 readline delimiters configuration to read:
3140
3143
3141 readline_remove_delims -/~
3144 readline_remove_delims -/~
3142
3145
3143
3146
3144 2005-05-31 *** Released version 0.6.14
3147 2005-05-31 *** Released version 0.6.14
3145
3148
3146 2005-05-29 Fernando Perez <fperez@colorado.edu>
3149 2005-05-29 Fernando Perez <fperez@colorado.edu>
3147
3150
3148 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3151 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3149 with files not on the filesystem. Reported by Eliyahu Sandler
3152 with files not on the filesystem. Reported by Eliyahu Sandler
3150 <eli@gondolin.net>
3153 <eli@gondolin.net>
3151
3154
3152 2005-05-22 Fernando Perez <fperez@colorado.edu>
3155 2005-05-22 Fernando Perez <fperez@colorado.edu>
3153
3156
3154 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3157 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3155 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3158 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3156
3159
3157 2005-05-19 Fernando Perez <fperez@colorado.edu>
3160 2005-05-19 Fernando Perez <fperez@colorado.edu>
3158
3161
3159 * IPython/iplib.py (safe_execfile): close a file which could be
3162 * IPython/iplib.py (safe_execfile): close a file which could be
3160 left open (causing problems in win32, which locks open files).
3163 left open (causing problems in win32, which locks open files).
3161 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3164 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3162
3165
3163 2005-05-18 Fernando Perez <fperez@colorado.edu>
3166 2005-05-18 Fernando Perez <fperez@colorado.edu>
3164
3167
3165 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3168 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3166 keyword arguments correctly to safe_execfile().
3169 keyword arguments correctly to safe_execfile().
3167
3170
3168 2005-05-13 Fernando Perez <fperez@colorado.edu>
3171 2005-05-13 Fernando Perez <fperez@colorado.edu>
3169
3172
3170 * ipython.1: Added info about Qt to manpage, and threads warning
3173 * ipython.1: Added info about Qt to manpage, and threads warning
3171 to usage page (invoked with --help).
3174 to usage page (invoked with --help).
3172
3175
3173 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3176 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3174 new matcher (it goes at the end of the priority list) to do
3177 new matcher (it goes at the end of the priority list) to do
3175 tab-completion on named function arguments. Submitted by George
3178 tab-completion on named function arguments. Submitted by George
3176 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3179 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3177 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3180 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3178 for more details.
3181 for more details.
3179
3182
3180 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3183 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3181 SystemExit exceptions in the script being run. Thanks to a report
3184 SystemExit exceptions in the script being run. Thanks to a report
3182 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3185 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3183 producing very annoying behavior when running unit tests.
3186 producing very annoying behavior when running unit tests.
3184
3187
3185 2005-05-12 Fernando Perez <fperez@colorado.edu>
3188 2005-05-12 Fernando Perez <fperez@colorado.edu>
3186
3189
3187 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3190 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3188 which I'd broken (again) due to a changed regexp. In the process,
3191 which I'd broken (again) due to a changed regexp. In the process,
3189 added ';' as an escape to auto-quote the whole line without
3192 added ';' as an escape to auto-quote the whole line without
3190 splitting its arguments. Thanks to a report by Jerry McRae
3193 splitting its arguments. Thanks to a report by Jerry McRae
3191 <qrs0xyc02-AT-sneakemail.com>.
3194 <qrs0xyc02-AT-sneakemail.com>.
3192
3195
3193 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3196 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3194 possible crashes caused by a TokenError. Reported by Ed Schofield
3197 possible crashes caused by a TokenError. Reported by Ed Schofield
3195 <schofield-AT-ftw.at>.
3198 <schofield-AT-ftw.at>.
3196
3199
3197 2005-05-06 Fernando Perez <fperez@colorado.edu>
3200 2005-05-06 Fernando Perez <fperez@colorado.edu>
3198
3201
3199 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3202 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3200
3203
3201 2005-04-29 Fernando Perez <fperez@colorado.edu>
3204 2005-04-29 Fernando Perez <fperez@colorado.edu>
3202
3205
3203 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3206 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3204 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3207 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3205 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3208 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3206 which provides support for Qt interactive usage (similar to the
3209 which provides support for Qt interactive usage (similar to the
3207 existing one for WX and GTK). This had been often requested.
3210 existing one for WX and GTK). This had been often requested.
3208
3211
3209 2005-04-14 *** Released version 0.6.13
3212 2005-04-14 *** Released version 0.6.13
3210
3213
3211 2005-04-08 Fernando Perez <fperez@colorado.edu>
3214 2005-04-08 Fernando Perez <fperez@colorado.edu>
3212
3215
3213 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3216 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3214 from _ofind, which gets called on almost every input line. Now,
3217 from _ofind, which gets called on almost every input line. Now,
3215 we only try to get docstrings if they are actually going to be
3218 we only try to get docstrings if they are actually going to be
3216 used (the overhead of fetching unnecessary docstrings can be
3219 used (the overhead of fetching unnecessary docstrings can be
3217 noticeable for certain objects, such as Pyro proxies).
3220 noticeable for certain objects, such as Pyro proxies).
3218
3221
3219 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3222 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3220 for completers. For some reason I had been passing them the state
3223 for completers. For some reason I had been passing them the state
3221 variable, which completers never actually need, and was in
3224 variable, which completers never actually need, and was in
3222 conflict with the rlcompleter API. Custom completers ONLY need to
3225 conflict with the rlcompleter API. Custom completers ONLY need to
3223 take the text parameter.
3226 take the text parameter.
3224
3227
3225 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3228 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3226 work correctly in pysh. I've also moved all the logic which used
3229 work correctly in pysh. I've also moved all the logic which used
3227 to be in pysh.py here, which will prevent problems with future
3230 to be in pysh.py here, which will prevent problems with future
3228 upgrades. However, this time I must warn users to update their
3231 upgrades. However, this time I must warn users to update their
3229 pysh profile to include the line
3232 pysh profile to include the line
3230
3233
3231 import_all IPython.Extensions.InterpreterExec
3234 import_all IPython.Extensions.InterpreterExec
3232
3235
3233 because otherwise things won't work for them. They MUST also
3236 because otherwise things won't work for them. They MUST also
3234 delete pysh.py and the line
3237 delete pysh.py and the line
3235
3238
3236 execfile pysh.py
3239 execfile pysh.py
3237
3240
3238 from their ipythonrc-pysh.
3241 from their ipythonrc-pysh.
3239
3242
3240 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3243 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3241 robust in the face of objects whose dir() returns non-strings
3244 robust in the face of objects whose dir() returns non-strings
3242 (which it shouldn't, but some broken libs like ITK do). Thanks to
3245 (which it shouldn't, but some broken libs like ITK do). Thanks to
3243 a patch by John Hunter (implemented differently, though). Also
3246 a patch by John Hunter (implemented differently, though). Also
3244 minor improvements by using .extend instead of + on lists.
3247 minor improvements by using .extend instead of + on lists.
3245
3248
3246 * pysh.py:
3249 * pysh.py:
3247
3250
3248 2005-04-06 Fernando Perez <fperez@colorado.edu>
3251 2005-04-06 Fernando Perez <fperez@colorado.edu>
3249
3252
3250 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3253 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3251 by default, so that all users benefit from it. Those who don't
3254 by default, so that all users benefit from it. Those who don't
3252 want it can still turn it off.
3255 want it can still turn it off.
3253
3256
3254 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3257 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3255 config file, I'd forgotten about this, so users were getting it
3258 config file, I'd forgotten about this, so users were getting it
3256 off by default.
3259 off by default.
3257
3260
3258 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3261 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3259 consistency. Now magics can be called in multiline statements,
3262 consistency. Now magics can be called in multiline statements,
3260 and python variables can be expanded in magic calls via $var.
3263 and python variables can be expanded in magic calls via $var.
3261 This makes the magic system behave just like aliases or !system
3264 This makes the magic system behave just like aliases or !system
3262 calls.
3265 calls.
3263
3266
3264 2005-03-28 Fernando Perez <fperez@colorado.edu>
3267 2005-03-28 Fernando Perez <fperez@colorado.edu>
3265
3268
3266 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3269 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3267 expensive string additions for building command. Add support for
3270 expensive string additions for building command. Add support for
3268 trailing ';' when autocall is used.
3271 trailing ';' when autocall is used.
3269
3272
3270 2005-03-26 Fernando Perez <fperez@colorado.edu>
3273 2005-03-26 Fernando Perez <fperez@colorado.edu>
3271
3274
3272 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3275 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3273 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3276 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3274 ipython.el robust against prompts with any number of spaces
3277 ipython.el robust against prompts with any number of spaces
3275 (including 0) after the ':' character.
3278 (including 0) after the ':' character.
3276
3279
3277 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3280 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3278 continuation prompt, which misled users to think the line was
3281 continuation prompt, which misled users to think the line was
3279 already indented. Closes debian Bug#300847, reported to me by
3282 already indented. Closes debian Bug#300847, reported to me by
3280 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3283 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3281
3284
3282 2005-03-23 Fernando Perez <fperez@colorado.edu>
3285 2005-03-23 Fernando Perez <fperez@colorado.edu>
3283
3286
3284 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3287 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3285 properly aligned if they have embedded newlines.
3288 properly aligned if they have embedded newlines.
3286
3289
3287 * IPython/iplib.py (runlines): Add a public method to expose
3290 * IPython/iplib.py (runlines): Add a public method to expose
3288 IPython's code execution machinery, so that users can run strings
3291 IPython's code execution machinery, so that users can run strings
3289 as if they had been typed at the prompt interactively.
3292 as if they had been typed at the prompt interactively.
3290 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3293 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3291 methods which can call the system shell, but with python variable
3294 methods which can call the system shell, but with python variable
3292 expansion. The three such methods are: __IPYTHON__.system,
3295 expansion. The three such methods are: __IPYTHON__.system,
3293 .getoutput and .getoutputerror. These need to be documented in a
3296 .getoutput and .getoutputerror. These need to be documented in a
3294 'public API' section (to be written) of the manual.
3297 'public API' section (to be written) of the manual.
3295
3298
3296 2005-03-20 Fernando Perez <fperez@colorado.edu>
3299 2005-03-20 Fernando Perez <fperez@colorado.edu>
3297
3300
3298 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3301 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3299 for custom exception handling. This is quite powerful, and it
3302 for custom exception handling. This is quite powerful, and it
3300 allows for user-installable exception handlers which can trap
3303 allows for user-installable exception handlers which can trap
3301 custom exceptions at runtime and treat them separately from
3304 custom exceptions at runtime and treat them separately from
3302 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3305 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3303 Mantegazza <mantegazza-AT-ill.fr>.
3306 Mantegazza <mantegazza-AT-ill.fr>.
3304 (InteractiveShell.set_custom_completer): public API function to
3307 (InteractiveShell.set_custom_completer): public API function to
3305 add new completers at runtime.
3308 add new completers at runtime.
3306
3309
3307 2005-03-19 Fernando Perez <fperez@colorado.edu>
3310 2005-03-19 Fernando Perez <fperez@colorado.edu>
3308
3311
3309 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3312 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3310 allow objects which provide their docstrings via non-standard
3313 allow objects which provide their docstrings via non-standard
3311 mechanisms (like Pyro proxies) to still be inspected by ipython's
3314 mechanisms (like Pyro proxies) to still be inspected by ipython's
3312 ? system.
3315 ? system.
3313
3316
3314 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3317 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3315 automatic capture system. I tried quite hard to make it work
3318 automatic capture system. I tried quite hard to make it work
3316 reliably, and simply failed. I tried many combinations with the
3319 reliably, and simply failed. I tried many combinations with the
3317 subprocess module, but eventually nothing worked in all needed
3320 subprocess module, but eventually nothing worked in all needed
3318 cases (not blocking stdin for the child, duplicating stdout
3321 cases (not blocking stdin for the child, duplicating stdout
3319 without blocking, etc). The new %sc/%sx still do capture to these
3322 without blocking, etc). The new %sc/%sx still do capture to these
3320 magical list/string objects which make shell use much more
3323 magical list/string objects which make shell use much more
3321 conveninent, so not all is lost.
3324 conveninent, so not all is lost.
3322
3325
3323 XXX - FIX MANUAL for the change above!
3326 XXX - FIX MANUAL for the change above!
3324
3327
3325 (runsource): I copied code.py's runsource() into ipython to modify
3328 (runsource): I copied code.py's runsource() into ipython to modify
3326 it a bit. Now the code object and source to be executed are
3329 it a bit. Now the code object and source to be executed are
3327 stored in ipython. This makes this info accessible to third-party
3330 stored in ipython. This makes this info accessible to third-party
3328 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3331 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3329 Mantegazza <mantegazza-AT-ill.fr>.
3332 Mantegazza <mantegazza-AT-ill.fr>.
3330
3333
3331 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3334 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3332 history-search via readline (like C-p/C-n). I'd wanted this for a
3335 history-search via readline (like C-p/C-n). I'd wanted this for a
3333 long time, but only recently found out how to do it. For users
3336 long time, but only recently found out how to do it. For users
3334 who already have their ipythonrc files made and want this, just
3337 who already have their ipythonrc files made and want this, just
3335 add:
3338 add:
3336
3339
3337 readline_parse_and_bind "\e[A": history-search-backward
3340 readline_parse_and_bind "\e[A": history-search-backward
3338 readline_parse_and_bind "\e[B": history-search-forward
3341 readline_parse_and_bind "\e[B": history-search-forward
3339
3342
3340 2005-03-18 Fernando Perez <fperez@colorado.edu>
3343 2005-03-18 Fernando Perez <fperez@colorado.edu>
3341
3344
3342 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3345 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3343 LSString and SList classes which allow transparent conversions
3346 LSString and SList classes which allow transparent conversions
3344 between list mode and whitespace-separated string.
3347 between list mode and whitespace-separated string.
3345 (magic_r): Fix recursion problem in %r.
3348 (magic_r): Fix recursion problem in %r.
3346
3349
3347 * IPython/genutils.py (LSString): New class to be used for
3350 * IPython/genutils.py (LSString): New class to be used for
3348 automatic storage of the results of all alias/system calls in _o
3351 automatic storage of the results of all alias/system calls in _o
3349 and _e (stdout/err). These provide a .l/.list attribute which
3352 and _e (stdout/err). These provide a .l/.list attribute which
3350 does automatic splitting on newlines. This means that for most
3353 does automatic splitting on newlines. This means that for most
3351 uses, you'll never need to do capturing of output with %sc/%sx
3354 uses, you'll never need to do capturing of output with %sc/%sx
3352 anymore, since ipython keeps this always done for you. Note that
3355 anymore, since ipython keeps this always done for you. Note that
3353 only the LAST results are stored, the _o/e variables are
3356 only the LAST results are stored, the _o/e variables are
3354 overwritten on each call. If you need to save their contents
3357 overwritten on each call. If you need to save their contents
3355 further, simply bind them to any other name.
3358 further, simply bind them to any other name.
3356
3359
3357 2005-03-17 Fernando Perez <fperez@colorado.edu>
3360 2005-03-17 Fernando Perez <fperez@colorado.edu>
3358
3361
3359 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3362 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3360 prompt namespace handling.
3363 prompt namespace handling.
3361
3364
3362 2005-03-16 Fernando Perez <fperez@colorado.edu>
3365 2005-03-16 Fernando Perez <fperez@colorado.edu>
3363
3366
3364 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3367 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3365 classic prompts to be '>>> ' (final space was missing, and it
3368 classic prompts to be '>>> ' (final space was missing, and it
3366 trips the emacs python mode).
3369 trips the emacs python mode).
3367 (BasePrompt.__str__): Added safe support for dynamic prompt
3370 (BasePrompt.__str__): Added safe support for dynamic prompt
3368 strings. Now you can set your prompt string to be '$x', and the
3371 strings. Now you can set your prompt string to be '$x', and the
3369 value of x will be printed from your interactive namespace. The
3372 value of x will be printed from your interactive namespace. The
3370 interpolation syntax includes the full Itpl support, so
3373 interpolation syntax includes the full Itpl support, so
3371 ${foo()+x+bar()} is a valid prompt string now, and the function
3374 ${foo()+x+bar()} is a valid prompt string now, and the function
3372 calls will be made at runtime.
3375 calls will be made at runtime.
3373
3376
3374 2005-03-15 Fernando Perez <fperez@colorado.edu>
3377 2005-03-15 Fernando Perez <fperez@colorado.edu>
3375
3378
3376 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3379 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3377 avoid name clashes in pylab. %hist still works, it just forwards
3380 avoid name clashes in pylab. %hist still works, it just forwards
3378 the call to %history.
3381 the call to %history.
3379
3382
3380 2005-03-02 *** Released version 0.6.12
3383 2005-03-02 *** Released version 0.6.12
3381
3384
3382 2005-03-02 Fernando Perez <fperez@colorado.edu>
3385 2005-03-02 Fernando Perez <fperez@colorado.edu>
3383
3386
3384 * IPython/iplib.py (handle_magic): log magic calls properly as
3387 * IPython/iplib.py (handle_magic): log magic calls properly as
3385 ipmagic() function calls.
3388 ipmagic() function calls.
3386
3389
3387 * IPython/Magic.py (magic_time): Improved %time to support
3390 * IPython/Magic.py (magic_time): Improved %time to support
3388 statements and provide wall-clock as well as CPU time.
3391 statements and provide wall-clock as well as CPU time.
3389
3392
3390 2005-02-27 Fernando Perez <fperez@colorado.edu>
3393 2005-02-27 Fernando Perez <fperez@colorado.edu>
3391
3394
3392 * IPython/hooks.py: New hooks module, to expose user-modifiable
3395 * IPython/hooks.py: New hooks module, to expose user-modifiable
3393 IPython functionality in a clean manner. For now only the editor
3396 IPython functionality in a clean manner. For now only the editor
3394 hook is actually written, and other thigns which I intend to turn
3397 hook is actually written, and other thigns which I intend to turn
3395 into proper hooks aren't yet there. The display and prefilter
3398 into proper hooks aren't yet there. The display and prefilter
3396 stuff, for example, should be hooks. But at least now the
3399 stuff, for example, should be hooks. But at least now the
3397 framework is in place, and the rest can be moved here with more
3400 framework is in place, and the rest can be moved here with more
3398 time later. IPython had had a .hooks variable for a long time for
3401 time later. IPython had had a .hooks variable for a long time for
3399 this purpose, but I'd never actually used it for anything.
3402 this purpose, but I'd never actually used it for anything.
3400
3403
3401 2005-02-26 Fernando Perez <fperez@colorado.edu>
3404 2005-02-26 Fernando Perez <fperez@colorado.edu>
3402
3405
3403 * IPython/ipmaker.py (make_IPython): make the default ipython
3406 * IPython/ipmaker.py (make_IPython): make the default ipython
3404 directory be called _ipython under win32, to follow more the
3407 directory be called _ipython under win32, to follow more the
3405 naming peculiarities of that platform (where buggy software like
3408 naming peculiarities of that platform (where buggy software like
3406 Visual Sourcesafe breaks with .named directories). Reported by
3409 Visual Sourcesafe breaks with .named directories). Reported by
3407 Ville Vainio.
3410 Ville Vainio.
3408
3411
3409 2005-02-23 Fernando Perez <fperez@colorado.edu>
3412 2005-02-23 Fernando Perez <fperez@colorado.edu>
3410
3413
3411 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3414 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3412 auto_aliases for win32 which were causing problems. Users can
3415 auto_aliases for win32 which were causing problems. Users can
3413 define the ones they personally like.
3416 define the ones they personally like.
3414
3417
3415 2005-02-21 Fernando Perez <fperez@colorado.edu>
3418 2005-02-21 Fernando Perez <fperez@colorado.edu>
3416
3419
3417 * IPython/Magic.py (magic_time): new magic to time execution of
3420 * IPython/Magic.py (magic_time): new magic to time execution of
3418 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3421 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3419
3422
3420 2005-02-19 Fernando Perez <fperez@colorado.edu>
3423 2005-02-19 Fernando Perez <fperez@colorado.edu>
3421
3424
3422 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3425 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3423 into keys (for prompts, for example).
3426 into keys (for prompts, for example).
3424
3427
3425 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3428 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3426 prompts in case users want them. This introduces a small behavior
3429 prompts in case users want them. This introduces a small behavior
3427 change: ipython does not automatically add a space to all prompts
3430 change: ipython does not automatically add a space to all prompts
3428 anymore. To get the old prompts with a space, users should add it
3431 anymore. To get the old prompts with a space, users should add it
3429 manually to their ipythonrc file, so for example prompt_in1 should
3432 manually to their ipythonrc file, so for example prompt_in1 should
3430 now read 'In [\#]: ' instead of 'In [\#]:'.
3433 now read 'In [\#]: ' instead of 'In [\#]:'.
3431 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3434 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3432 file) to control left-padding of secondary prompts.
3435 file) to control left-padding of secondary prompts.
3433
3436
3434 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3437 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3435 the profiler can't be imported. Fix for Debian, which removed
3438 the profiler can't be imported. Fix for Debian, which removed
3436 profile.py because of License issues. I applied a slightly
3439 profile.py because of License issues. I applied a slightly
3437 modified version of the original Debian patch at
3440 modified version of the original Debian patch at
3438 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3441 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3439
3442
3440 2005-02-17 Fernando Perez <fperez@colorado.edu>
3443 2005-02-17 Fernando Perez <fperez@colorado.edu>
3441
3444
3442 * IPython/genutils.py (native_line_ends): Fix bug which would
3445 * IPython/genutils.py (native_line_ends): Fix bug which would
3443 cause improper line-ends under win32 b/c I was not opening files
3446 cause improper line-ends under win32 b/c I was not opening files
3444 in binary mode. Bug report and fix thanks to Ville.
3447 in binary mode. Bug report and fix thanks to Ville.
3445
3448
3446 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3449 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3447 trying to catch spurious foo[1] autocalls. My fix actually broke
3450 trying to catch spurious foo[1] autocalls. My fix actually broke
3448 ',/' autoquote/call with explicit escape (bad regexp).
3451 ',/' autoquote/call with explicit escape (bad regexp).
3449
3452
3450 2005-02-15 *** Released version 0.6.11
3453 2005-02-15 *** Released version 0.6.11
3451
3454
3452 2005-02-14 Fernando Perez <fperez@colorado.edu>
3455 2005-02-14 Fernando Perez <fperez@colorado.edu>
3453
3456
3454 * IPython/background_jobs.py: New background job management
3457 * IPython/background_jobs.py: New background job management
3455 subsystem. This is implemented via a new set of classes, and
3458 subsystem. This is implemented via a new set of classes, and
3456 IPython now provides a builtin 'jobs' object for background job
3459 IPython now provides a builtin 'jobs' object for background job
3457 execution. A convenience %bg magic serves as a lightweight
3460 execution. A convenience %bg magic serves as a lightweight
3458 frontend for starting the more common type of calls. This was
3461 frontend for starting the more common type of calls. This was
3459 inspired by discussions with B. Granger and the BackgroundCommand
3462 inspired by discussions with B. Granger and the BackgroundCommand
3460 class described in the book Python Scripting for Computational
3463 class described in the book Python Scripting for Computational
3461 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3464 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3462 (although ultimately no code from this text was used, as IPython's
3465 (although ultimately no code from this text was used, as IPython's
3463 system is a separate implementation).
3466 system is a separate implementation).
3464
3467
3465 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3468 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3466 to control the completion of single/double underscore names
3469 to control the completion of single/double underscore names
3467 separately. As documented in the example ipytonrc file, the
3470 separately. As documented in the example ipytonrc file, the
3468 readline_omit__names variable can now be set to 2, to omit even
3471 readline_omit__names variable can now be set to 2, to omit even
3469 single underscore names. Thanks to a patch by Brian Wong
3472 single underscore names. Thanks to a patch by Brian Wong
3470 <BrianWong-AT-AirgoNetworks.Com>.
3473 <BrianWong-AT-AirgoNetworks.Com>.
3471 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3474 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3472 be autocalled as foo([1]) if foo were callable. A problem for
3475 be autocalled as foo([1]) if foo were callable. A problem for
3473 things which are both callable and implement __getitem__.
3476 things which are both callable and implement __getitem__.
3474 (init_readline): Fix autoindentation for win32. Thanks to a patch
3477 (init_readline): Fix autoindentation for win32. Thanks to a patch
3475 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3478 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3476
3479
3477 2005-02-12 Fernando Perez <fperez@colorado.edu>
3480 2005-02-12 Fernando Perez <fperez@colorado.edu>
3478
3481
3479 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3482 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3480 which I had written long ago to sort out user error messages which
3483 which I had written long ago to sort out user error messages which
3481 may occur during startup. This seemed like a good idea initially,
3484 may occur during startup. This seemed like a good idea initially,
3482 but it has proven a disaster in retrospect. I don't want to
3485 but it has proven a disaster in retrospect. I don't want to
3483 change much code for now, so my fix is to set the internal 'debug'
3486 change much code for now, so my fix is to set the internal 'debug'
3484 flag to true everywhere, whose only job was precisely to control
3487 flag to true everywhere, whose only job was precisely to control
3485 this subsystem. This closes issue 28 (as well as avoiding all
3488 this subsystem. This closes issue 28 (as well as avoiding all
3486 sorts of strange hangups which occur from time to time).
3489 sorts of strange hangups which occur from time to time).
3487
3490
3488 2005-02-07 Fernando Perez <fperez@colorado.edu>
3491 2005-02-07 Fernando Perez <fperez@colorado.edu>
3489
3492
3490 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3493 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3491 previous call produced a syntax error.
3494 previous call produced a syntax error.
3492
3495
3493 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3496 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3494 classes without constructor.
3497 classes without constructor.
3495
3498
3496 2005-02-06 Fernando Perez <fperez@colorado.edu>
3499 2005-02-06 Fernando Perez <fperez@colorado.edu>
3497
3500
3498 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3501 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3499 completions with the results of each matcher, so we return results
3502 completions with the results of each matcher, so we return results
3500 to the user from all namespaces. This breaks with ipython
3503 to the user from all namespaces. This breaks with ipython
3501 tradition, but I think it's a nicer behavior. Now you get all
3504 tradition, but I think it's a nicer behavior. Now you get all
3502 possible completions listed, from all possible namespaces (python,
3505 possible completions listed, from all possible namespaces (python,
3503 filesystem, magics...) After a request by John Hunter
3506 filesystem, magics...) After a request by John Hunter
3504 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3507 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3505
3508
3506 2005-02-05 Fernando Perez <fperez@colorado.edu>
3509 2005-02-05 Fernando Perez <fperez@colorado.edu>
3507
3510
3508 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3511 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3509 the call had quote characters in it (the quotes were stripped).
3512 the call had quote characters in it (the quotes were stripped).
3510
3513
3511 2005-01-31 Fernando Perez <fperez@colorado.edu>
3514 2005-01-31 Fernando Perez <fperez@colorado.edu>
3512
3515
3513 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3516 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3514 Itpl.itpl() to make the code more robust against psyco
3517 Itpl.itpl() to make the code more robust against psyco
3515 optimizations.
3518 optimizations.
3516
3519
3517 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3520 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3518 of causing an exception. Quicker, cleaner.
3521 of causing an exception. Quicker, cleaner.
3519
3522
3520 2005-01-28 Fernando Perez <fperez@colorado.edu>
3523 2005-01-28 Fernando Perez <fperez@colorado.edu>
3521
3524
3522 * scripts/ipython_win_post_install.py (install): hardcode
3525 * scripts/ipython_win_post_install.py (install): hardcode
3523 sys.prefix+'python.exe' as the executable path. It turns out that
3526 sys.prefix+'python.exe' as the executable path. It turns out that
3524 during the post-installation run, sys.executable resolves to the
3527 during the post-installation run, sys.executable resolves to the
3525 name of the binary installer! I should report this as a distutils
3528 name of the binary installer! I should report this as a distutils
3526 bug, I think. I updated the .10 release with this tiny fix, to
3529 bug, I think. I updated the .10 release with this tiny fix, to
3527 avoid annoying the lists further.
3530 avoid annoying the lists further.
3528
3531
3529 2005-01-27 *** Released version 0.6.10
3532 2005-01-27 *** Released version 0.6.10
3530
3533
3531 2005-01-27 Fernando Perez <fperez@colorado.edu>
3534 2005-01-27 Fernando Perez <fperez@colorado.edu>
3532
3535
3533 * IPython/numutils.py (norm): Added 'inf' as optional name for
3536 * IPython/numutils.py (norm): Added 'inf' as optional name for
3534 L-infinity norm, included references to mathworld.com for vector
3537 L-infinity norm, included references to mathworld.com for vector
3535 norm definitions.
3538 norm definitions.
3536 (amin/amax): added amin/amax for array min/max. Similar to what
3539 (amin/amax): added amin/amax for array min/max. Similar to what
3537 pylab ships with after the recent reorganization of names.
3540 pylab ships with after the recent reorganization of names.
3538 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3541 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3539
3542
3540 * ipython.el: committed Alex's recent fixes and improvements.
3543 * ipython.el: committed Alex's recent fixes and improvements.
3541 Tested with python-mode from CVS, and it looks excellent. Since
3544 Tested with python-mode from CVS, and it looks excellent. Since
3542 python-mode hasn't released anything in a while, I'm temporarily
3545 python-mode hasn't released anything in a while, I'm temporarily
3543 putting a copy of today's CVS (v 4.70) of python-mode in:
3546 putting a copy of today's CVS (v 4.70) of python-mode in:
3544 http://ipython.scipy.org/tmp/python-mode.el
3547 http://ipython.scipy.org/tmp/python-mode.el
3545
3548
3546 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3549 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3547 sys.executable for the executable name, instead of assuming it's
3550 sys.executable for the executable name, instead of assuming it's
3548 called 'python.exe' (the post-installer would have produced broken
3551 called 'python.exe' (the post-installer would have produced broken
3549 setups on systems with a differently named python binary).
3552 setups on systems with a differently named python binary).
3550
3553
3551 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3554 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3552 references to os.linesep, to make the code more
3555 references to os.linesep, to make the code more
3553 platform-independent. This is also part of the win32 coloring
3556 platform-independent. This is also part of the win32 coloring
3554 fixes.
3557 fixes.
3555
3558
3556 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3559 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3557 lines, which actually cause coloring bugs because the length of
3560 lines, which actually cause coloring bugs because the length of
3558 the line is very difficult to correctly compute with embedded
3561 the line is very difficult to correctly compute with embedded
3559 escapes. This was the source of all the coloring problems under
3562 escapes. This was the source of all the coloring problems under
3560 Win32. I think that _finally_, Win32 users have a properly
3563 Win32. I think that _finally_, Win32 users have a properly
3561 working ipython in all respects. This would never have happened
3564 working ipython in all respects. This would never have happened
3562 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3565 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3563
3566
3564 2005-01-26 *** Released version 0.6.9
3567 2005-01-26 *** Released version 0.6.9
3565
3568
3566 2005-01-25 Fernando Perez <fperez@colorado.edu>
3569 2005-01-25 Fernando Perez <fperez@colorado.edu>
3567
3570
3568 * setup.py: finally, we have a true Windows installer, thanks to
3571 * setup.py: finally, we have a true Windows installer, thanks to
3569 the excellent work of Viktor Ransmayr
3572 the excellent work of Viktor Ransmayr
3570 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3573 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3571 Windows users. The setup routine is quite a bit cleaner thanks to
3574 Windows users. The setup routine is quite a bit cleaner thanks to
3572 this, and the post-install script uses the proper functions to
3575 this, and the post-install script uses the proper functions to
3573 allow a clean de-installation using the standard Windows Control
3576 allow a clean de-installation using the standard Windows Control
3574 Panel.
3577 Panel.
3575
3578
3576 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3579 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3577 environment variable under all OSes (including win32) if
3580 environment variable under all OSes (including win32) if
3578 available. This will give consistency to win32 users who have set
3581 available. This will give consistency to win32 users who have set
3579 this variable for any reason. If os.environ['HOME'] fails, the
3582 this variable for any reason. If os.environ['HOME'] fails, the
3580 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3583 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3581
3584
3582 2005-01-24 Fernando Perez <fperez@colorado.edu>
3585 2005-01-24 Fernando Perez <fperez@colorado.edu>
3583
3586
3584 * IPython/numutils.py (empty_like): add empty_like(), similar to
3587 * IPython/numutils.py (empty_like): add empty_like(), similar to
3585 zeros_like() but taking advantage of the new empty() Numeric routine.
3588 zeros_like() but taking advantage of the new empty() Numeric routine.
3586
3589
3587 2005-01-23 *** Released version 0.6.8
3590 2005-01-23 *** Released version 0.6.8
3588
3591
3589 2005-01-22 Fernando Perez <fperez@colorado.edu>
3592 2005-01-22 Fernando Perez <fperez@colorado.edu>
3590
3593
3591 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3594 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3592 automatic show() calls. After discussing things with JDH, it
3595 automatic show() calls. After discussing things with JDH, it
3593 turns out there are too many corner cases where this can go wrong.
3596 turns out there are too many corner cases where this can go wrong.
3594 It's best not to try to be 'too smart', and simply have ipython
3597 It's best not to try to be 'too smart', and simply have ipython
3595 reproduce as much as possible the default behavior of a normal
3598 reproduce as much as possible the default behavior of a normal
3596 python shell.
3599 python shell.
3597
3600
3598 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3601 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3599 line-splitting regexp and _prefilter() to avoid calling getattr()
3602 line-splitting regexp and _prefilter() to avoid calling getattr()
3600 on assignments. This closes
3603 on assignments. This closes
3601 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3604 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3602 readline uses getattr(), so a simple <TAB> keypress is still
3605 readline uses getattr(), so a simple <TAB> keypress is still
3603 enough to trigger getattr() calls on an object.
3606 enough to trigger getattr() calls on an object.
3604
3607
3605 2005-01-21 Fernando Perez <fperez@colorado.edu>
3608 2005-01-21 Fernando Perez <fperez@colorado.edu>
3606
3609
3607 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3610 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3608 docstring under pylab so it doesn't mask the original.
3611 docstring under pylab so it doesn't mask the original.
3609
3612
3610 2005-01-21 *** Released version 0.6.7
3613 2005-01-21 *** Released version 0.6.7
3611
3614
3612 2005-01-21 Fernando Perez <fperez@colorado.edu>
3615 2005-01-21 Fernando Perez <fperez@colorado.edu>
3613
3616
3614 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3617 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3615 signal handling for win32 users in multithreaded mode.
3618 signal handling for win32 users in multithreaded mode.
3616
3619
3617 2005-01-17 Fernando Perez <fperez@colorado.edu>
3620 2005-01-17 Fernando Perez <fperez@colorado.edu>
3618
3621
3619 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3622 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3620 instances with no __init__. After a crash report by Norbert Nemec
3623 instances with no __init__. After a crash report by Norbert Nemec
3621 <Norbert-AT-nemec-online.de>.
3624 <Norbert-AT-nemec-online.de>.
3622
3625
3623 2005-01-14 Fernando Perez <fperez@colorado.edu>
3626 2005-01-14 Fernando Perez <fperez@colorado.edu>
3624
3627
3625 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3628 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3626 names for verbose exceptions, when multiple dotted names and the
3629 names for verbose exceptions, when multiple dotted names and the
3627 'parent' object were present on the same line.
3630 'parent' object were present on the same line.
3628
3631
3629 2005-01-11 Fernando Perez <fperez@colorado.edu>
3632 2005-01-11 Fernando Perez <fperez@colorado.edu>
3630
3633
3631 * IPython/genutils.py (flag_calls): new utility to trap and flag
3634 * IPython/genutils.py (flag_calls): new utility to trap and flag
3632 calls in functions. I need it to clean up matplotlib support.
3635 calls in functions. I need it to clean up matplotlib support.
3633 Also removed some deprecated code in genutils.
3636 Also removed some deprecated code in genutils.
3634
3637
3635 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3638 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3636 that matplotlib scripts called with %run, which don't call show()
3639 that matplotlib scripts called with %run, which don't call show()
3637 themselves, still have their plotting windows open.
3640 themselves, still have their plotting windows open.
3638
3641
3639 2005-01-05 Fernando Perez <fperez@colorado.edu>
3642 2005-01-05 Fernando Perez <fperez@colorado.edu>
3640
3643
3641 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3644 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3642 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3645 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3643
3646
3644 2004-12-19 Fernando Perez <fperez@colorado.edu>
3647 2004-12-19 Fernando Perez <fperez@colorado.edu>
3645
3648
3646 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3649 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3647 parent_runcode, which was an eyesore. The same result can be
3650 parent_runcode, which was an eyesore. The same result can be
3648 obtained with Python's regular superclass mechanisms.
3651 obtained with Python's regular superclass mechanisms.
3649
3652
3650 2004-12-17 Fernando Perez <fperez@colorado.edu>
3653 2004-12-17 Fernando Perez <fperez@colorado.edu>
3651
3654
3652 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3655 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3653 reported by Prabhu.
3656 reported by Prabhu.
3654 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3657 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3655 sys.stderr) instead of explicitly calling sys.stderr. This helps
3658 sys.stderr) instead of explicitly calling sys.stderr. This helps
3656 maintain our I/O abstractions clean, for future GUI embeddings.
3659 maintain our I/O abstractions clean, for future GUI embeddings.
3657
3660
3658 * IPython/genutils.py (info): added new utility for sys.stderr
3661 * IPython/genutils.py (info): added new utility for sys.stderr
3659 unified info message handling (thin wrapper around warn()).
3662 unified info message handling (thin wrapper around warn()).
3660
3663
3661 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3664 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3662 composite (dotted) names on verbose exceptions.
3665 composite (dotted) names on verbose exceptions.
3663 (VerboseTB.nullrepr): harden against another kind of errors which
3666 (VerboseTB.nullrepr): harden against another kind of errors which
3664 Python's inspect module can trigger, and which were crashing
3667 Python's inspect module can trigger, and which were crashing
3665 IPython. Thanks to a report by Marco Lombardi
3668 IPython. Thanks to a report by Marco Lombardi
3666 <mlombard-AT-ma010192.hq.eso.org>.
3669 <mlombard-AT-ma010192.hq.eso.org>.
3667
3670
3668 2004-12-13 *** Released version 0.6.6
3671 2004-12-13 *** Released version 0.6.6
3669
3672
3670 2004-12-12 Fernando Perez <fperez@colorado.edu>
3673 2004-12-12 Fernando Perez <fperez@colorado.edu>
3671
3674
3672 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3675 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3673 generated by pygtk upon initialization if it was built without
3676 generated by pygtk upon initialization if it was built without
3674 threads (for matplotlib users). After a crash reported by
3677 threads (for matplotlib users). After a crash reported by
3675 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3678 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3676
3679
3677 * IPython/ipmaker.py (make_IPython): fix small bug in the
3680 * IPython/ipmaker.py (make_IPython): fix small bug in the
3678 import_some parameter for multiple imports.
3681 import_some parameter for multiple imports.
3679
3682
3680 * IPython/iplib.py (ipmagic): simplified the interface of
3683 * IPython/iplib.py (ipmagic): simplified the interface of
3681 ipmagic() to take a single string argument, just as it would be
3684 ipmagic() to take a single string argument, just as it would be
3682 typed at the IPython cmd line.
3685 typed at the IPython cmd line.
3683 (ipalias): Added new ipalias() with an interface identical to
3686 (ipalias): Added new ipalias() with an interface identical to
3684 ipmagic(). This completes exposing a pure python interface to the
3687 ipmagic(). This completes exposing a pure python interface to the
3685 alias and magic system, which can be used in loops or more complex
3688 alias and magic system, which can be used in loops or more complex
3686 code where IPython's automatic line mangling is not active.
3689 code where IPython's automatic line mangling is not active.
3687
3690
3688 * IPython/genutils.py (timing): changed interface of timing to
3691 * IPython/genutils.py (timing): changed interface of timing to
3689 simply run code once, which is the most common case. timings()
3692 simply run code once, which is the most common case. timings()
3690 remains unchanged, for the cases where you want multiple runs.
3693 remains unchanged, for the cases where you want multiple runs.
3691
3694
3692 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3695 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3693 bug where Python2.2 crashes with exec'ing code which does not end
3696 bug where Python2.2 crashes with exec'ing code which does not end
3694 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3697 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3695 before.
3698 before.
3696
3699
3697 2004-12-10 Fernando Perez <fperez@colorado.edu>
3700 2004-12-10 Fernando Perez <fperez@colorado.edu>
3698
3701
3699 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3702 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3700 -t to -T, to accomodate the new -t flag in %run (the %run and
3703 -t to -T, to accomodate the new -t flag in %run (the %run and
3701 %prun options are kind of intermixed, and it's not easy to change
3704 %prun options are kind of intermixed, and it's not easy to change
3702 this with the limitations of python's getopt).
3705 this with the limitations of python's getopt).
3703
3706
3704 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3707 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3705 the execution of scripts. It's not as fine-tuned as timeit.py,
3708 the execution of scripts. It's not as fine-tuned as timeit.py,
3706 but it works from inside ipython (and under 2.2, which lacks
3709 but it works from inside ipython (and under 2.2, which lacks
3707 timeit.py). Optionally a number of runs > 1 can be given for
3710 timeit.py). Optionally a number of runs > 1 can be given for
3708 timing very short-running code.
3711 timing very short-running code.
3709
3712
3710 * IPython/genutils.py (uniq_stable): new routine which returns a
3713 * IPython/genutils.py (uniq_stable): new routine which returns a
3711 list of unique elements in any iterable, but in stable order of
3714 list of unique elements in any iterable, but in stable order of
3712 appearance. I needed this for the ultraTB fixes, and it's a handy
3715 appearance. I needed this for the ultraTB fixes, and it's a handy
3713 utility.
3716 utility.
3714
3717
3715 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3718 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3716 dotted names in Verbose exceptions. This had been broken since
3719 dotted names in Verbose exceptions. This had been broken since
3717 the very start, now x.y will properly be printed in a Verbose
3720 the very start, now x.y will properly be printed in a Verbose
3718 traceback, instead of x being shown and y appearing always as an
3721 traceback, instead of x being shown and y appearing always as an
3719 'undefined global'. Getting this to work was a bit tricky,
3722 'undefined global'. Getting this to work was a bit tricky,
3720 because by default python tokenizers are stateless. Saved by
3723 because by default python tokenizers are stateless. Saved by
3721 python's ability to easily add a bit of state to an arbitrary
3724 python's ability to easily add a bit of state to an arbitrary
3722 function (without needing to build a full-blown callable object).
3725 function (without needing to build a full-blown callable object).
3723
3726
3724 Also big cleanup of this code, which had horrendous runtime
3727 Also big cleanup of this code, which had horrendous runtime
3725 lookups of zillions of attributes for colorization. Moved all
3728 lookups of zillions of attributes for colorization. Moved all
3726 this code into a few templates, which make it cleaner and quicker.
3729 this code into a few templates, which make it cleaner and quicker.
3727
3730
3728 Printout quality was also improved for Verbose exceptions: one
3731 Printout quality was also improved for Verbose exceptions: one
3729 variable per line, and memory addresses are printed (this can be
3732 variable per line, and memory addresses are printed (this can be
3730 quite handy in nasty debugging situations, which is what Verbose
3733 quite handy in nasty debugging situations, which is what Verbose
3731 is for).
3734 is for).
3732
3735
3733 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3736 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3734 the command line as scripts to be loaded by embedded instances.
3737 the command line as scripts to be loaded by embedded instances.
3735 Doing so has the potential for an infinite recursion if there are
3738 Doing so has the potential for an infinite recursion if there are
3736 exceptions thrown in the process. This fixes a strange crash
3739 exceptions thrown in the process. This fixes a strange crash
3737 reported by Philippe MULLER <muller-AT-irit.fr>.
3740 reported by Philippe MULLER <muller-AT-irit.fr>.
3738
3741
3739 2004-12-09 Fernando Perez <fperez@colorado.edu>
3742 2004-12-09 Fernando Perez <fperez@colorado.edu>
3740
3743
3741 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3744 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3742 to reflect new names in matplotlib, which now expose the
3745 to reflect new names in matplotlib, which now expose the
3743 matlab-compatible interface via a pylab module instead of the
3746 matlab-compatible interface via a pylab module instead of the
3744 'matlab' name. The new code is backwards compatible, so users of
3747 'matlab' name. The new code is backwards compatible, so users of
3745 all matplotlib versions are OK. Patch by J. Hunter.
3748 all matplotlib versions are OK. Patch by J. Hunter.
3746
3749
3747 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3750 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3748 of __init__ docstrings for instances (class docstrings are already
3751 of __init__ docstrings for instances (class docstrings are already
3749 automatically printed). Instances with customized docstrings
3752 automatically printed). Instances with customized docstrings
3750 (indep. of the class) are also recognized and all 3 separate
3753 (indep. of the class) are also recognized and all 3 separate
3751 docstrings are printed (instance, class, constructor). After some
3754 docstrings are printed (instance, class, constructor). After some
3752 comments/suggestions by J. Hunter.
3755 comments/suggestions by J. Hunter.
3753
3756
3754 2004-12-05 Fernando Perez <fperez@colorado.edu>
3757 2004-12-05 Fernando Perez <fperez@colorado.edu>
3755
3758
3756 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3759 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3757 warnings when tab-completion fails and triggers an exception.
3760 warnings when tab-completion fails and triggers an exception.
3758
3761
3759 2004-12-03 Fernando Perez <fperez@colorado.edu>
3762 2004-12-03 Fernando Perez <fperez@colorado.edu>
3760
3763
3761 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3764 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3762 be triggered when using 'run -p'. An incorrect option flag was
3765 be triggered when using 'run -p'. An incorrect option flag was
3763 being set ('d' instead of 'D').
3766 being set ('d' instead of 'D').
3764 (manpage): fix missing escaped \- sign.
3767 (manpage): fix missing escaped \- sign.
3765
3768
3766 2004-11-30 *** Released version 0.6.5
3769 2004-11-30 *** Released version 0.6.5
3767
3770
3768 2004-11-30 Fernando Perez <fperez@colorado.edu>
3771 2004-11-30 Fernando Perez <fperez@colorado.edu>
3769
3772
3770 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3773 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3771 setting with -d option.
3774 setting with -d option.
3772
3775
3773 * setup.py (docfiles): Fix problem where the doc glob I was using
3776 * setup.py (docfiles): Fix problem where the doc glob I was using
3774 was COMPLETELY BROKEN. It was giving the right files by pure
3777 was COMPLETELY BROKEN. It was giving the right files by pure
3775 accident, but failed once I tried to include ipython.el. Note:
3778 accident, but failed once I tried to include ipython.el. Note:
3776 glob() does NOT allow you to do exclusion on multiple endings!
3779 glob() does NOT allow you to do exclusion on multiple endings!
3777
3780
3778 2004-11-29 Fernando Perez <fperez@colorado.edu>
3781 2004-11-29 Fernando Perez <fperez@colorado.edu>
3779
3782
3780 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3783 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3781 the manpage as the source. Better formatting & consistency.
3784 the manpage as the source. Better formatting & consistency.
3782
3785
3783 * IPython/Magic.py (magic_run): Added new -d option, to run
3786 * IPython/Magic.py (magic_run): Added new -d option, to run
3784 scripts under the control of the python pdb debugger. Note that
3787 scripts under the control of the python pdb debugger. Note that
3785 this required changing the %prun option -d to -D, to avoid a clash
3788 this required changing the %prun option -d to -D, to avoid a clash
3786 (since %run must pass options to %prun, and getopt is too dumb to
3789 (since %run must pass options to %prun, and getopt is too dumb to
3787 handle options with string values with embedded spaces). Thanks
3790 handle options with string values with embedded spaces). Thanks
3788 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3791 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3789 (magic_who_ls): added type matching to %who and %whos, so that one
3792 (magic_who_ls): added type matching to %who and %whos, so that one
3790 can filter their output to only include variables of certain
3793 can filter their output to only include variables of certain
3791 types. Another suggestion by Matthew.
3794 types. Another suggestion by Matthew.
3792 (magic_whos): Added memory summaries in kb and Mb for arrays.
3795 (magic_whos): Added memory summaries in kb and Mb for arrays.
3793 (magic_who): Improve formatting (break lines every 9 vars).
3796 (magic_who): Improve formatting (break lines every 9 vars).
3794
3797
3795 2004-11-28 Fernando Perez <fperez@colorado.edu>
3798 2004-11-28 Fernando Perez <fperez@colorado.edu>
3796
3799
3797 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3800 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3798 cache when empty lines were present.
3801 cache when empty lines were present.
3799
3802
3800 2004-11-24 Fernando Perez <fperez@colorado.edu>
3803 2004-11-24 Fernando Perez <fperez@colorado.edu>
3801
3804
3802 * IPython/usage.py (__doc__): document the re-activated threading
3805 * IPython/usage.py (__doc__): document the re-activated threading
3803 options for WX and GTK.
3806 options for WX and GTK.
3804
3807
3805 2004-11-23 Fernando Perez <fperez@colorado.edu>
3808 2004-11-23 Fernando Perez <fperez@colorado.edu>
3806
3809
3807 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3810 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3808 the -wthread and -gthread options, along with a new -tk one to try
3811 the -wthread and -gthread options, along with a new -tk one to try
3809 and coordinate Tk threading with wx/gtk. The tk support is very
3812 and coordinate Tk threading with wx/gtk. The tk support is very
3810 platform dependent, since it seems to require Tcl and Tk to be
3813 platform dependent, since it seems to require Tcl and Tk to be
3811 built with threads (Fedora1/2 appears NOT to have it, but in
3814 built with threads (Fedora1/2 appears NOT to have it, but in
3812 Prabhu's Debian boxes it works OK). But even with some Tk
3815 Prabhu's Debian boxes it works OK). But even with some Tk
3813 limitations, this is a great improvement.
3816 limitations, this is a great improvement.
3814
3817
3815 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3818 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3816 info in user prompts. Patch by Prabhu.
3819 info in user prompts. Patch by Prabhu.
3817
3820
3818 2004-11-18 Fernando Perez <fperez@colorado.edu>
3821 2004-11-18 Fernando Perez <fperez@colorado.edu>
3819
3822
3820 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3823 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3821 EOFErrors and bail, to avoid infinite loops if a non-terminating
3824 EOFErrors and bail, to avoid infinite loops if a non-terminating
3822 file is fed into ipython. Patch submitted in issue 19 by user,
3825 file is fed into ipython. Patch submitted in issue 19 by user,
3823 many thanks.
3826 many thanks.
3824
3827
3825 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3828 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3826 autoquote/parens in continuation prompts, which can cause lots of
3829 autoquote/parens in continuation prompts, which can cause lots of
3827 problems. Closes roundup issue 20.
3830 problems. Closes roundup issue 20.
3828
3831
3829 2004-11-17 Fernando Perez <fperez@colorado.edu>
3832 2004-11-17 Fernando Perez <fperez@colorado.edu>
3830
3833
3831 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3834 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3832 reported as debian bug #280505. I'm not sure my local changelog
3835 reported as debian bug #280505. I'm not sure my local changelog
3833 entry has the proper debian format (Jack?).
3836 entry has the proper debian format (Jack?).
3834
3837
3835 2004-11-08 *** Released version 0.6.4
3838 2004-11-08 *** Released version 0.6.4
3836
3839
3837 2004-11-08 Fernando Perez <fperez@colorado.edu>
3840 2004-11-08 Fernando Perez <fperez@colorado.edu>
3838
3841
3839 * IPython/iplib.py (init_readline): Fix exit message for Windows
3842 * IPython/iplib.py (init_readline): Fix exit message for Windows
3840 when readline is active. Thanks to a report by Eric Jones
3843 when readline is active. Thanks to a report by Eric Jones
3841 <eric-AT-enthought.com>.
3844 <eric-AT-enthought.com>.
3842
3845
3843 2004-11-07 Fernando Perez <fperez@colorado.edu>
3846 2004-11-07 Fernando Perez <fperez@colorado.edu>
3844
3847
3845 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3848 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3846 sometimes seen by win2k/cygwin users.
3849 sometimes seen by win2k/cygwin users.
3847
3850
3848 2004-11-06 Fernando Perez <fperez@colorado.edu>
3851 2004-11-06 Fernando Perez <fperez@colorado.edu>
3849
3852
3850 * IPython/iplib.py (interact): Change the handling of %Exit from
3853 * IPython/iplib.py (interact): Change the handling of %Exit from
3851 trying to propagate a SystemExit to an internal ipython flag.
3854 trying to propagate a SystemExit to an internal ipython flag.
3852 This is less elegant than using Python's exception mechanism, but
3855 This is less elegant than using Python's exception mechanism, but
3853 I can't get that to work reliably with threads, so under -pylab
3856 I can't get that to work reliably with threads, so under -pylab
3854 %Exit was hanging IPython. Cross-thread exception handling is
3857 %Exit was hanging IPython. Cross-thread exception handling is
3855 really a bitch. Thaks to a bug report by Stephen Walton
3858 really a bitch. Thaks to a bug report by Stephen Walton
3856 <stephen.walton-AT-csun.edu>.
3859 <stephen.walton-AT-csun.edu>.
3857
3860
3858 2004-11-04 Fernando Perez <fperez@colorado.edu>
3861 2004-11-04 Fernando Perez <fperez@colorado.edu>
3859
3862
3860 * IPython/iplib.py (raw_input_original): store a pointer to the
3863 * IPython/iplib.py (raw_input_original): store a pointer to the
3861 true raw_input to harden against code which can modify it
3864 true raw_input to harden against code which can modify it
3862 (wx.py.PyShell does this and would otherwise crash ipython).
3865 (wx.py.PyShell does this and would otherwise crash ipython).
3863 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3866 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3864
3867
3865 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3868 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3866 Ctrl-C problem, which does not mess up the input line.
3869 Ctrl-C problem, which does not mess up the input line.
3867
3870
3868 2004-11-03 Fernando Perez <fperez@colorado.edu>
3871 2004-11-03 Fernando Perez <fperez@colorado.edu>
3869
3872
3870 * IPython/Release.py: Changed licensing to BSD, in all files.
3873 * IPython/Release.py: Changed licensing to BSD, in all files.
3871 (name): lowercase name for tarball/RPM release.
3874 (name): lowercase name for tarball/RPM release.
3872
3875
3873 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3876 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3874 use throughout ipython.
3877 use throughout ipython.
3875
3878
3876 * IPython/Magic.py (Magic._ofind): Switch to using the new
3879 * IPython/Magic.py (Magic._ofind): Switch to using the new
3877 OInspect.getdoc() function.
3880 OInspect.getdoc() function.
3878
3881
3879 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3882 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3880 of the line currently being canceled via Ctrl-C. It's extremely
3883 of the line currently being canceled via Ctrl-C. It's extremely
3881 ugly, but I don't know how to do it better (the problem is one of
3884 ugly, but I don't know how to do it better (the problem is one of
3882 handling cross-thread exceptions).
3885 handling cross-thread exceptions).
3883
3886
3884 2004-10-28 Fernando Perez <fperez@colorado.edu>
3887 2004-10-28 Fernando Perez <fperez@colorado.edu>
3885
3888
3886 * IPython/Shell.py (signal_handler): add signal handlers to trap
3889 * IPython/Shell.py (signal_handler): add signal handlers to trap
3887 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3890 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3888 report by Francesc Alted.
3891 report by Francesc Alted.
3889
3892
3890 2004-10-21 Fernando Perez <fperez@colorado.edu>
3893 2004-10-21 Fernando Perez <fperez@colorado.edu>
3891
3894
3892 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3895 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3893 to % for pysh syntax extensions.
3896 to % for pysh syntax extensions.
3894
3897
3895 2004-10-09 Fernando Perez <fperez@colorado.edu>
3898 2004-10-09 Fernando Perez <fperez@colorado.edu>
3896
3899
3897 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3900 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3898 arrays to print a more useful summary, without calling str(arr).
3901 arrays to print a more useful summary, without calling str(arr).
3899 This avoids the problem of extremely lengthy computations which
3902 This avoids the problem of extremely lengthy computations which
3900 occur if arr is large, and appear to the user as a system lockup
3903 occur if arr is large, and appear to the user as a system lockup
3901 with 100% cpu activity. After a suggestion by Kristian Sandberg
3904 with 100% cpu activity. After a suggestion by Kristian Sandberg
3902 <Kristian.Sandberg@colorado.edu>.
3905 <Kristian.Sandberg@colorado.edu>.
3903 (Magic.__init__): fix bug in global magic escapes not being
3906 (Magic.__init__): fix bug in global magic escapes not being
3904 correctly set.
3907 correctly set.
3905
3908
3906 2004-10-08 Fernando Perez <fperez@colorado.edu>
3909 2004-10-08 Fernando Perez <fperez@colorado.edu>
3907
3910
3908 * IPython/Magic.py (__license__): change to absolute imports of
3911 * IPython/Magic.py (__license__): change to absolute imports of
3909 ipython's own internal packages, to start adapting to the absolute
3912 ipython's own internal packages, to start adapting to the absolute
3910 import requirement of PEP-328.
3913 import requirement of PEP-328.
3911
3914
3912 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3915 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3913 files, and standardize author/license marks through the Release
3916 files, and standardize author/license marks through the Release
3914 module instead of having per/file stuff (except for files with
3917 module instead of having per/file stuff (except for files with
3915 particular licenses, like the MIT/PSF-licensed codes).
3918 particular licenses, like the MIT/PSF-licensed codes).
3916
3919
3917 * IPython/Debugger.py: remove dead code for python 2.1
3920 * IPython/Debugger.py: remove dead code for python 2.1
3918
3921
3919 2004-10-04 Fernando Perez <fperez@colorado.edu>
3922 2004-10-04 Fernando Perez <fperez@colorado.edu>
3920
3923
3921 * IPython/iplib.py (ipmagic): New function for accessing magics
3924 * IPython/iplib.py (ipmagic): New function for accessing magics
3922 via a normal python function call.
3925 via a normal python function call.
3923
3926
3924 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3927 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3925 from '@' to '%', to accomodate the new @decorator syntax of python
3928 from '@' to '%', to accomodate the new @decorator syntax of python
3926 2.4.
3929 2.4.
3927
3930
3928 2004-09-29 Fernando Perez <fperez@colorado.edu>
3931 2004-09-29 Fernando Perez <fperez@colorado.edu>
3929
3932
3930 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3933 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3931 matplotlib.use to prevent running scripts which try to switch
3934 matplotlib.use to prevent running scripts which try to switch
3932 interactive backends from within ipython. This will just crash
3935 interactive backends from within ipython. This will just crash
3933 the python interpreter, so we can't allow it (but a detailed error
3936 the python interpreter, so we can't allow it (but a detailed error
3934 is given to the user).
3937 is given to the user).
3935
3938
3936 2004-09-28 Fernando Perez <fperez@colorado.edu>
3939 2004-09-28 Fernando Perez <fperez@colorado.edu>
3937
3940
3938 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3941 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3939 matplotlib-related fixes so that using @run with non-matplotlib
3942 matplotlib-related fixes so that using @run with non-matplotlib
3940 scripts doesn't pop up spurious plot windows. This requires
3943 scripts doesn't pop up spurious plot windows. This requires
3941 matplotlib >= 0.63, where I had to make some changes as well.
3944 matplotlib >= 0.63, where I had to make some changes as well.
3942
3945
3943 * IPython/ipmaker.py (make_IPython): update version requirement to
3946 * IPython/ipmaker.py (make_IPython): update version requirement to
3944 python 2.2.
3947 python 2.2.
3945
3948
3946 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3949 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3947 banner arg for embedded customization.
3950 banner arg for embedded customization.
3948
3951
3949 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3952 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3950 explicit uses of __IP as the IPython's instance name. Now things
3953 explicit uses of __IP as the IPython's instance name. Now things
3951 are properly handled via the shell.name value. The actual code
3954 are properly handled via the shell.name value. The actual code
3952 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3955 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3953 is much better than before. I'll clean things completely when the
3956 is much better than before. I'll clean things completely when the
3954 magic stuff gets a real overhaul.
3957 magic stuff gets a real overhaul.
3955
3958
3956 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3959 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3957 minor changes to debian dir.
3960 minor changes to debian dir.
3958
3961
3959 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3962 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3960 pointer to the shell itself in the interactive namespace even when
3963 pointer to the shell itself in the interactive namespace even when
3961 a user-supplied dict is provided. This is needed for embedding
3964 a user-supplied dict is provided. This is needed for embedding
3962 purposes (found by tests with Michel Sanner).
3965 purposes (found by tests with Michel Sanner).
3963
3966
3964 2004-09-27 Fernando Perez <fperez@colorado.edu>
3967 2004-09-27 Fernando Perez <fperez@colorado.edu>
3965
3968
3966 * IPython/UserConfig/ipythonrc: remove []{} from
3969 * IPython/UserConfig/ipythonrc: remove []{} from
3967 readline_remove_delims, so that things like [modname.<TAB> do
3970 readline_remove_delims, so that things like [modname.<TAB> do
3968 proper completion. This disables [].TAB, but that's a less common
3971 proper completion. This disables [].TAB, but that's a less common
3969 case than module names in list comprehensions, for example.
3972 case than module names in list comprehensions, for example.
3970 Thanks to a report by Andrea Riciputi.
3973 Thanks to a report by Andrea Riciputi.
3971
3974
3972 2004-09-09 Fernando Perez <fperez@colorado.edu>
3975 2004-09-09 Fernando Perez <fperez@colorado.edu>
3973
3976
3974 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3977 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3975 blocking problems in win32 and osx. Fix by John.
3978 blocking problems in win32 and osx. Fix by John.
3976
3979
3977 2004-09-08 Fernando Perez <fperez@colorado.edu>
3980 2004-09-08 Fernando Perez <fperez@colorado.edu>
3978
3981
3979 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3982 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3980 for Win32 and OSX. Fix by John Hunter.
3983 for Win32 and OSX. Fix by John Hunter.
3981
3984
3982 2004-08-30 *** Released version 0.6.3
3985 2004-08-30 *** Released version 0.6.3
3983
3986
3984 2004-08-30 Fernando Perez <fperez@colorado.edu>
3987 2004-08-30 Fernando Perez <fperez@colorado.edu>
3985
3988
3986 * setup.py (isfile): Add manpages to list of dependent files to be
3989 * setup.py (isfile): Add manpages to list of dependent files to be
3987 updated.
3990 updated.
3988
3991
3989 2004-08-27 Fernando Perez <fperez@colorado.edu>
3992 2004-08-27 Fernando Perez <fperez@colorado.edu>
3990
3993
3991 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3994 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3992 for now. They don't really work with standalone WX/GTK code
3995 for now. They don't really work with standalone WX/GTK code
3993 (though matplotlib IS working fine with both of those backends).
3996 (though matplotlib IS working fine with both of those backends).
3994 This will neeed much more testing. I disabled most things with
3997 This will neeed much more testing. I disabled most things with
3995 comments, so turning it back on later should be pretty easy.
3998 comments, so turning it back on later should be pretty easy.
3996
3999
3997 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
4000 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3998 autocalling of expressions like r'foo', by modifying the line
4001 autocalling of expressions like r'foo', by modifying the line
3999 split regexp. Closes
4002 split regexp. Closes
4000 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
4003 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
4001 Riley <ipythonbugs-AT-sabi.net>.
4004 Riley <ipythonbugs-AT-sabi.net>.
4002 (InteractiveShell.mainloop): honor --nobanner with banner
4005 (InteractiveShell.mainloop): honor --nobanner with banner
4003 extensions.
4006 extensions.
4004
4007
4005 * IPython/Shell.py: Significant refactoring of all classes, so
4008 * IPython/Shell.py: Significant refactoring of all classes, so
4006 that we can really support ALL matplotlib backends and threading
4009 that we can really support ALL matplotlib backends and threading
4007 models (John spotted a bug with Tk which required this). Now we
4010 models (John spotted a bug with Tk which required this). Now we
4008 should support single-threaded, WX-threads and GTK-threads, both
4011 should support single-threaded, WX-threads and GTK-threads, both
4009 for generic code and for matplotlib.
4012 for generic code and for matplotlib.
4010
4013
4011 * IPython/ipmaker.py (__call__): Changed -mpthread option to
4014 * IPython/ipmaker.py (__call__): Changed -mpthread option to
4012 -pylab, to simplify things for users. Will also remove the pylab
4015 -pylab, to simplify things for users. Will also remove the pylab
4013 profile, since now all of matplotlib configuration is directly
4016 profile, since now all of matplotlib configuration is directly
4014 handled here. This also reduces startup time.
4017 handled here. This also reduces startup time.
4015
4018
4016 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
4019 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
4017 shell wasn't being correctly called. Also in IPShellWX.
4020 shell wasn't being correctly called. Also in IPShellWX.
4018
4021
4019 * IPython/iplib.py (InteractiveShell.__init__): Added option to
4022 * IPython/iplib.py (InteractiveShell.__init__): Added option to
4020 fine-tune banner.
4023 fine-tune banner.
4021
4024
4022 * IPython/numutils.py (spike): Deprecate these spike functions,
4025 * IPython/numutils.py (spike): Deprecate these spike functions,
4023 delete (long deprecated) gnuplot_exec handler.
4026 delete (long deprecated) gnuplot_exec handler.
4024
4027
4025 2004-08-26 Fernando Perez <fperez@colorado.edu>
4028 2004-08-26 Fernando Perez <fperez@colorado.edu>
4026
4029
4027 * ipython.1: Update for threading options, plus some others which
4030 * ipython.1: Update for threading options, plus some others which
4028 were missing.
4031 were missing.
4029
4032
4030 * IPython/ipmaker.py (__call__): Added -wthread option for
4033 * IPython/ipmaker.py (__call__): Added -wthread option for
4031 wxpython thread handling. Make sure threading options are only
4034 wxpython thread handling. Make sure threading options are only
4032 valid at the command line.
4035 valid at the command line.
4033
4036
4034 * scripts/ipython: moved shell selection into a factory function
4037 * scripts/ipython: moved shell selection into a factory function
4035 in Shell.py, to keep the starter script to a minimum.
4038 in Shell.py, to keep the starter script to a minimum.
4036
4039
4037 2004-08-25 Fernando Perez <fperez@colorado.edu>
4040 2004-08-25 Fernando Perez <fperez@colorado.edu>
4038
4041
4039 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
4042 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
4040 John. Along with some recent changes he made to matplotlib, the
4043 John. Along with some recent changes he made to matplotlib, the
4041 next versions of both systems should work very well together.
4044 next versions of both systems should work very well together.
4042
4045
4043 2004-08-24 Fernando Perez <fperez@colorado.edu>
4046 2004-08-24 Fernando Perez <fperez@colorado.edu>
4044
4047
4045 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4048 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4046 tried to switch the profiling to using hotshot, but I'm getting
4049 tried to switch the profiling to using hotshot, but I'm getting
4047 strange errors from prof.runctx() there. I may be misreading the
4050 strange errors from prof.runctx() there. I may be misreading the
4048 docs, but it looks weird. For now the profiling code will
4051 docs, but it looks weird. For now the profiling code will
4049 continue to use the standard profiler.
4052 continue to use the standard profiler.
4050
4053
4051 2004-08-23 Fernando Perez <fperez@colorado.edu>
4054 2004-08-23 Fernando Perez <fperez@colorado.edu>
4052
4055
4053 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4056 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4054 threaded shell, by John Hunter. It's not quite ready yet, but
4057 threaded shell, by John Hunter. It's not quite ready yet, but
4055 close.
4058 close.
4056
4059
4057 2004-08-22 Fernando Perez <fperez@colorado.edu>
4060 2004-08-22 Fernando Perez <fperez@colorado.edu>
4058
4061
4059 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4062 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4060 in Magic and ultraTB.
4063 in Magic and ultraTB.
4061
4064
4062 * ipython.1: document threading options in manpage.
4065 * ipython.1: document threading options in manpage.
4063
4066
4064 * scripts/ipython: Changed name of -thread option to -gthread,
4067 * scripts/ipython: Changed name of -thread option to -gthread,
4065 since this is GTK specific. I want to leave the door open for a
4068 since this is GTK specific. I want to leave the door open for a
4066 -wthread option for WX, which will most likely be necessary. This
4069 -wthread option for WX, which will most likely be necessary. This
4067 change affects usage and ipmaker as well.
4070 change affects usage and ipmaker as well.
4068
4071
4069 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4072 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4070 handle the matplotlib shell issues. Code by John Hunter
4073 handle the matplotlib shell issues. Code by John Hunter
4071 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4074 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4072 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4075 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4073 broken (and disabled for end users) for now, but it puts the
4076 broken (and disabled for end users) for now, but it puts the
4074 infrastructure in place.
4077 infrastructure in place.
4075
4078
4076 2004-08-21 Fernando Perez <fperez@colorado.edu>
4079 2004-08-21 Fernando Perez <fperez@colorado.edu>
4077
4080
4078 * ipythonrc-pylab: Add matplotlib support.
4081 * ipythonrc-pylab: Add matplotlib support.
4079
4082
4080 * matplotlib_config.py: new files for matplotlib support, part of
4083 * matplotlib_config.py: new files for matplotlib support, part of
4081 the pylab profile.
4084 the pylab profile.
4082
4085
4083 * IPython/usage.py (__doc__): documented the threading options.
4086 * IPython/usage.py (__doc__): documented the threading options.
4084
4087
4085 2004-08-20 Fernando Perez <fperez@colorado.edu>
4088 2004-08-20 Fernando Perez <fperez@colorado.edu>
4086
4089
4087 * ipython: Modified the main calling routine to handle the -thread
4090 * ipython: Modified the main calling routine to handle the -thread
4088 and -mpthread options. This needs to be done as a top-level hack,
4091 and -mpthread options. This needs to be done as a top-level hack,
4089 because it determines which class to instantiate for IPython
4092 because it determines which class to instantiate for IPython
4090 itself.
4093 itself.
4091
4094
4092 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4095 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4093 classes to support multithreaded GTK operation without blocking,
4096 classes to support multithreaded GTK operation without blocking,
4094 and matplotlib with all backends. This is a lot of still very
4097 and matplotlib with all backends. This is a lot of still very
4095 experimental code, and threads are tricky. So it may still have a
4098 experimental code, and threads are tricky. So it may still have a
4096 few rough edges... This code owes a lot to
4099 few rough edges... This code owes a lot to
4097 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4100 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4098 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4101 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4099 to John Hunter for all the matplotlib work.
4102 to John Hunter for all the matplotlib work.
4100
4103
4101 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4104 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4102 options for gtk thread and matplotlib support.
4105 options for gtk thread and matplotlib support.
4103
4106
4104 2004-08-16 Fernando Perez <fperez@colorado.edu>
4107 2004-08-16 Fernando Perez <fperez@colorado.edu>
4105
4108
4106 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4109 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4107 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4110 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4108 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4111 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4109
4112
4110 2004-08-11 Fernando Perez <fperez@colorado.edu>
4113 2004-08-11 Fernando Perez <fperez@colorado.edu>
4111
4114
4112 * setup.py (isfile): Fix build so documentation gets updated for
4115 * setup.py (isfile): Fix build so documentation gets updated for
4113 rpms (it was only done for .tgz builds).
4116 rpms (it was only done for .tgz builds).
4114
4117
4115 2004-08-10 Fernando Perez <fperez@colorado.edu>
4118 2004-08-10 Fernando Perez <fperez@colorado.edu>
4116
4119
4117 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4120 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4118
4121
4119 * iplib.py : Silence syntax error exceptions in tab-completion.
4122 * iplib.py : Silence syntax error exceptions in tab-completion.
4120
4123
4121 2004-08-05 Fernando Perez <fperez@colorado.edu>
4124 2004-08-05 Fernando Perez <fperez@colorado.edu>
4122
4125
4123 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4126 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4124 'color off' mark for continuation prompts. This was causing long
4127 'color off' mark for continuation prompts. This was causing long
4125 continuation lines to mis-wrap.
4128 continuation lines to mis-wrap.
4126
4129
4127 2004-08-01 Fernando Perez <fperez@colorado.edu>
4130 2004-08-01 Fernando Perez <fperez@colorado.edu>
4128
4131
4129 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4132 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4130 for building ipython to be a parameter. All this is necessary
4133 for building ipython to be a parameter. All this is necessary
4131 right now to have a multithreaded version, but this insane
4134 right now to have a multithreaded version, but this insane
4132 non-design will be cleaned up soon. For now, it's a hack that
4135 non-design will be cleaned up soon. For now, it's a hack that
4133 works.
4136 works.
4134
4137
4135 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4138 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4136 args in various places. No bugs so far, but it's a dangerous
4139 args in various places. No bugs so far, but it's a dangerous
4137 practice.
4140 practice.
4138
4141
4139 2004-07-31 Fernando Perez <fperez@colorado.edu>
4142 2004-07-31 Fernando Perez <fperez@colorado.edu>
4140
4143
4141 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4144 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4142 fix completion of files with dots in their names under most
4145 fix completion of files with dots in their names under most
4143 profiles (pysh was OK because the completion order is different).
4146 profiles (pysh was OK because the completion order is different).
4144
4147
4145 2004-07-27 Fernando Perez <fperez@colorado.edu>
4148 2004-07-27 Fernando Perez <fperez@colorado.edu>
4146
4149
4147 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4150 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4148 keywords manually, b/c the one in keyword.py was removed in python
4151 keywords manually, b/c the one in keyword.py was removed in python
4149 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4152 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4150 This is NOT a bug under python 2.3 and earlier.
4153 This is NOT a bug under python 2.3 and earlier.
4151
4154
4152 2004-07-26 Fernando Perez <fperez@colorado.edu>
4155 2004-07-26 Fernando Perez <fperez@colorado.edu>
4153
4156
4154 * IPython/ultraTB.py (VerboseTB.text): Add another
4157 * IPython/ultraTB.py (VerboseTB.text): Add another
4155 linecache.checkcache() call to try to prevent inspect.py from
4158 linecache.checkcache() call to try to prevent inspect.py from
4156 crashing under python 2.3. I think this fixes
4159 crashing under python 2.3. I think this fixes
4157 http://www.scipy.net/roundup/ipython/issue17.
4160 http://www.scipy.net/roundup/ipython/issue17.
4158
4161
4159 2004-07-26 *** Released version 0.6.2
4162 2004-07-26 *** Released version 0.6.2
4160
4163
4161 2004-07-26 Fernando Perez <fperez@colorado.edu>
4164 2004-07-26 Fernando Perez <fperez@colorado.edu>
4162
4165
4163 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4166 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4164 fail for any number.
4167 fail for any number.
4165 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4168 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4166 empty bookmarks.
4169 empty bookmarks.
4167
4170
4168 2004-07-26 *** Released version 0.6.1
4171 2004-07-26 *** Released version 0.6.1
4169
4172
4170 2004-07-26 Fernando Perez <fperez@colorado.edu>
4173 2004-07-26 Fernando Perez <fperez@colorado.edu>
4171
4174
4172 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4175 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4173
4176
4174 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4177 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4175 escaping '()[]{}' in filenames.
4178 escaping '()[]{}' in filenames.
4176
4179
4177 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4180 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4178 Python 2.2 users who lack a proper shlex.split.
4181 Python 2.2 users who lack a proper shlex.split.
4179
4182
4180 2004-07-19 Fernando Perez <fperez@colorado.edu>
4183 2004-07-19 Fernando Perez <fperez@colorado.edu>
4181
4184
4182 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4185 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4183 for reading readline's init file. I follow the normal chain:
4186 for reading readline's init file. I follow the normal chain:
4184 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4187 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4185 report by Mike Heeter. This closes
4188 report by Mike Heeter. This closes
4186 http://www.scipy.net/roundup/ipython/issue16.
4189 http://www.scipy.net/roundup/ipython/issue16.
4187
4190
4188 2004-07-18 Fernando Perez <fperez@colorado.edu>
4191 2004-07-18 Fernando Perez <fperez@colorado.edu>
4189
4192
4190 * IPython/iplib.py (__init__): Add better handling of '\' under
4193 * IPython/iplib.py (__init__): Add better handling of '\' under
4191 Win32 for filenames. After a patch by Ville.
4194 Win32 for filenames. After a patch by Ville.
4192
4195
4193 2004-07-17 Fernando Perez <fperez@colorado.edu>
4196 2004-07-17 Fernando Perez <fperez@colorado.edu>
4194
4197
4195 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4198 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4196 autocalling would be triggered for 'foo is bar' if foo is
4199 autocalling would be triggered for 'foo is bar' if foo is
4197 callable. I also cleaned up the autocall detection code to use a
4200 callable. I also cleaned up the autocall detection code to use a
4198 regexp, which is faster. Bug reported by Alexander Schmolck.
4201 regexp, which is faster. Bug reported by Alexander Schmolck.
4199
4202
4200 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4203 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4201 '?' in them would confuse the help system. Reported by Alex
4204 '?' in them would confuse the help system. Reported by Alex
4202 Schmolck.
4205 Schmolck.
4203
4206
4204 2004-07-16 Fernando Perez <fperez@colorado.edu>
4207 2004-07-16 Fernando Perez <fperez@colorado.edu>
4205
4208
4206 * IPython/GnuplotInteractive.py (__all__): added plot2.
4209 * IPython/GnuplotInteractive.py (__all__): added plot2.
4207
4210
4208 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4211 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4209 plotting dictionaries, lists or tuples of 1d arrays.
4212 plotting dictionaries, lists or tuples of 1d arrays.
4210
4213
4211 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4214 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4212 optimizations.
4215 optimizations.
4213
4216
4214 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4217 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4215 the information which was there from Janko's original IPP code:
4218 the information which was there from Janko's original IPP code:
4216
4219
4217 03.05.99 20:53 porto.ifm.uni-kiel.de
4220 03.05.99 20:53 porto.ifm.uni-kiel.de
4218 --Started changelog.
4221 --Started changelog.
4219 --make clear do what it say it does
4222 --make clear do what it say it does
4220 --added pretty output of lines from inputcache
4223 --added pretty output of lines from inputcache
4221 --Made Logger a mixin class, simplifies handling of switches
4224 --Made Logger a mixin class, simplifies handling of switches
4222 --Added own completer class. .string<TAB> expands to last history
4225 --Added own completer class. .string<TAB> expands to last history
4223 line which starts with string. The new expansion is also present
4226 line which starts with string. The new expansion is also present
4224 with Ctrl-r from the readline library. But this shows, who this
4227 with Ctrl-r from the readline library. But this shows, who this
4225 can be done for other cases.
4228 can be done for other cases.
4226 --Added convention that all shell functions should accept a
4229 --Added convention that all shell functions should accept a
4227 parameter_string This opens the door for different behaviour for
4230 parameter_string This opens the door for different behaviour for
4228 each function. @cd is a good example of this.
4231 each function. @cd is a good example of this.
4229
4232
4230 04.05.99 12:12 porto.ifm.uni-kiel.de
4233 04.05.99 12:12 porto.ifm.uni-kiel.de
4231 --added logfile rotation
4234 --added logfile rotation
4232 --added new mainloop method which freezes first the namespace
4235 --added new mainloop method which freezes first the namespace
4233
4236
4234 07.05.99 21:24 porto.ifm.uni-kiel.de
4237 07.05.99 21:24 porto.ifm.uni-kiel.de
4235 --added the docreader classes. Now there is a help system.
4238 --added the docreader classes. Now there is a help system.
4236 -This is only a first try. Currently it's not easy to put new
4239 -This is only a first try. Currently it's not easy to put new
4237 stuff in the indices. But this is the way to go. Info would be
4240 stuff in the indices. But this is the way to go. Info would be
4238 better, but HTML is every where and not everybody has an info
4241 better, but HTML is every where and not everybody has an info
4239 system installed and it's not so easy to change html-docs to info.
4242 system installed and it's not so easy to change html-docs to info.
4240 --added global logfile option
4243 --added global logfile option
4241 --there is now a hook for object inspection method pinfo needs to
4244 --there is now a hook for object inspection method pinfo needs to
4242 be provided for this. Can be reached by two '??'.
4245 be provided for this. Can be reached by two '??'.
4243
4246
4244 08.05.99 20:51 porto.ifm.uni-kiel.de
4247 08.05.99 20:51 porto.ifm.uni-kiel.de
4245 --added a README
4248 --added a README
4246 --bug in rc file. Something has changed so functions in the rc
4249 --bug in rc file. Something has changed so functions in the rc
4247 file need to reference the shell and not self. Not clear if it's a
4250 file need to reference the shell and not self. Not clear if it's a
4248 bug or feature.
4251 bug or feature.
4249 --changed rc file for new behavior
4252 --changed rc file for new behavior
4250
4253
4251 2004-07-15 Fernando Perez <fperez@colorado.edu>
4254 2004-07-15 Fernando Perez <fperez@colorado.edu>
4252
4255
4253 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4256 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4254 cache was falling out of sync in bizarre manners when multi-line
4257 cache was falling out of sync in bizarre manners when multi-line
4255 input was present. Minor optimizations and cleanup.
4258 input was present. Minor optimizations and cleanup.
4256
4259
4257 (Logger): Remove old Changelog info for cleanup. This is the
4260 (Logger): Remove old Changelog info for cleanup. This is the
4258 information which was there from Janko's original code:
4261 information which was there from Janko's original code:
4259
4262
4260 Changes to Logger: - made the default log filename a parameter
4263 Changes to Logger: - made the default log filename a parameter
4261
4264
4262 - put a check for lines beginning with !@? in log(). Needed
4265 - put a check for lines beginning with !@? in log(). Needed
4263 (even if the handlers properly log their lines) for mid-session
4266 (even if the handlers properly log their lines) for mid-session
4264 logging activation to work properly. Without this, lines logged
4267 logging activation to work properly. Without this, lines logged
4265 in mid session, which get read from the cache, would end up
4268 in mid session, which get read from the cache, would end up
4266 'bare' (with !@? in the open) in the log. Now they are caught
4269 'bare' (with !@? in the open) in the log. Now they are caught
4267 and prepended with a #.
4270 and prepended with a #.
4268
4271
4269 * IPython/iplib.py (InteractiveShell.init_readline): added check
4272 * IPython/iplib.py (InteractiveShell.init_readline): added check
4270 in case MagicCompleter fails to be defined, so we don't crash.
4273 in case MagicCompleter fails to be defined, so we don't crash.
4271
4274
4272 2004-07-13 Fernando Perez <fperez@colorado.edu>
4275 2004-07-13 Fernando Perez <fperez@colorado.edu>
4273
4276
4274 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4277 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4275 of EPS if the requested filename ends in '.eps'.
4278 of EPS if the requested filename ends in '.eps'.
4276
4279
4277 2004-07-04 Fernando Perez <fperez@colorado.edu>
4280 2004-07-04 Fernando Perez <fperez@colorado.edu>
4278
4281
4279 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4282 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4280 escaping of quotes when calling the shell.
4283 escaping of quotes when calling the shell.
4281
4284
4282 2004-07-02 Fernando Perez <fperez@colorado.edu>
4285 2004-07-02 Fernando Perez <fperez@colorado.edu>
4283
4286
4284 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4287 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4285 gettext not working because we were clobbering '_'. Fixes
4288 gettext not working because we were clobbering '_'. Fixes
4286 http://www.scipy.net/roundup/ipython/issue6.
4289 http://www.scipy.net/roundup/ipython/issue6.
4287
4290
4288 2004-07-01 Fernando Perez <fperez@colorado.edu>
4291 2004-07-01 Fernando Perez <fperez@colorado.edu>
4289
4292
4290 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4293 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4291 into @cd. Patch by Ville.
4294 into @cd. Patch by Ville.
4292
4295
4293 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4296 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4294 new function to store things after ipmaker runs. Patch by Ville.
4297 new function to store things after ipmaker runs. Patch by Ville.
4295 Eventually this will go away once ipmaker is removed and the class
4298 Eventually this will go away once ipmaker is removed and the class
4296 gets cleaned up, but for now it's ok. Key functionality here is
4299 gets cleaned up, but for now it's ok. Key functionality here is
4297 the addition of the persistent storage mechanism, a dict for
4300 the addition of the persistent storage mechanism, a dict for
4298 keeping data across sessions (for now just bookmarks, but more can
4301 keeping data across sessions (for now just bookmarks, but more can
4299 be implemented later).
4302 be implemented later).
4300
4303
4301 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4304 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4302 persistent across sections. Patch by Ville, I modified it
4305 persistent across sections. Patch by Ville, I modified it
4303 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4306 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4304 added a '-l' option to list all bookmarks.
4307 added a '-l' option to list all bookmarks.
4305
4308
4306 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4309 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4307 center for cleanup. Registered with atexit.register(). I moved
4310 center for cleanup. Registered with atexit.register(). I moved
4308 here the old exit_cleanup(). After a patch by Ville.
4311 here the old exit_cleanup(). After a patch by Ville.
4309
4312
4310 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4313 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4311 characters in the hacked shlex_split for python 2.2.
4314 characters in the hacked shlex_split for python 2.2.
4312
4315
4313 * IPython/iplib.py (file_matches): more fixes to filenames with
4316 * IPython/iplib.py (file_matches): more fixes to filenames with
4314 whitespace in them. It's not perfect, but limitations in python's
4317 whitespace in them. It's not perfect, but limitations in python's
4315 readline make it impossible to go further.
4318 readline make it impossible to go further.
4316
4319
4317 2004-06-29 Fernando Perez <fperez@colorado.edu>
4320 2004-06-29 Fernando Perez <fperez@colorado.edu>
4318
4321
4319 * IPython/iplib.py (file_matches): escape whitespace correctly in
4322 * IPython/iplib.py (file_matches): escape whitespace correctly in
4320 filename completions. Bug reported by Ville.
4323 filename completions. Bug reported by Ville.
4321
4324
4322 2004-06-28 Fernando Perez <fperez@colorado.edu>
4325 2004-06-28 Fernando Perez <fperez@colorado.edu>
4323
4326
4324 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4327 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4325 the history file will be called 'history-PROFNAME' (or just
4328 the history file will be called 'history-PROFNAME' (or just
4326 'history' if no profile is loaded). I was getting annoyed at
4329 'history' if no profile is loaded). I was getting annoyed at
4327 getting my Numerical work history clobbered by pysh sessions.
4330 getting my Numerical work history clobbered by pysh sessions.
4328
4331
4329 * IPython/iplib.py (InteractiveShell.__init__): Internal
4332 * IPython/iplib.py (InteractiveShell.__init__): Internal
4330 getoutputerror() function so that we can honor the system_verbose
4333 getoutputerror() function so that we can honor the system_verbose
4331 flag for _all_ system calls. I also added escaping of #
4334 flag for _all_ system calls. I also added escaping of #
4332 characters here to avoid confusing Itpl.
4335 characters here to avoid confusing Itpl.
4333
4336
4334 * IPython/Magic.py (shlex_split): removed call to shell in
4337 * IPython/Magic.py (shlex_split): removed call to shell in
4335 parse_options and replaced it with shlex.split(). The annoying
4338 parse_options and replaced it with shlex.split(). The annoying
4336 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4339 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4337 to backport it from 2.3, with several frail hacks (the shlex
4340 to backport it from 2.3, with several frail hacks (the shlex
4338 module is rather limited in 2.2). Thanks to a suggestion by Ville
4341 module is rather limited in 2.2). Thanks to a suggestion by Ville
4339 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4342 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4340 problem.
4343 problem.
4341
4344
4342 (Magic.magic_system_verbose): new toggle to print the actual
4345 (Magic.magic_system_verbose): new toggle to print the actual
4343 system calls made by ipython. Mainly for debugging purposes.
4346 system calls made by ipython. Mainly for debugging purposes.
4344
4347
4345 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4348 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4346 doesn't support persistence. Reported (and fix suggested) by
4349 doesn't support persistence. Reported (and fix suggested) by
4347 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4350 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4348
4351
4349 2004-06-26 Fernando Perez <fperez@colorado.edu>
4352 2004-06-26 Fernando Perez <fperez@colorado.edu>
4350
4353
4351 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4354 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4352 continue prompts.
4355 continue prompts.
4353
4356
4354 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4357 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4355 function (basically a big docstring) and a few more things here to
4358 function (basically a big docstring) and a few more things here to
4356 speedup startup. pysh.py is now very lightweight. We want because
4359 speedup startup. pysh.py is now very lightweight. We want because
4357 it gets execfile'd, while InterpreterExec gets imported, so
4360 it gets execfile'd, while InterpreterExec gets imported, so
4358 byte-compilation saves time.
4361 byte-compilation saves time.
4359
4362
4360 2004-06-25 Fernando Perez <fperez@colorado.edu>
4363 2004-06-25 Fernando Perez <fperez@colorado.edu>
4361
4364
4362 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4365 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4363 -NUM', which was recently broken.
4366 -NUM', which was recently broken.
4364
4367
4365 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4368 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4366 in multi-line input (but not !!, which doesn't make sense there).
4369 in multi-line input (but not !!, which doesn't make sense there).
4367
4370
4368 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4371 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4369 It's just too useful, and people can turn it off in the less
4372 It's just too useful, and people can turn it off in the less
4370 common cases where it's a problem.
4373 common cases where it's a problem.
4371
4374
4372 2004-06-24 Fernando Perez <fperez@colorado.edu>
4375 2004-06-24 Fernando Perez <fperez@colorado.edu>
4373
4376
4374 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4377 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4375 special syntaxes (like alias calling) is now allied in multi-line
4378 special syntaxes (like alias calling) is now allied in multi-line
4376 input. This is still _very_ experimental, but it's necessary for
4379 input. This is still _very_ experimental, but it's necessary for
4377 efficient shell usage combining python looping syntax with system
4380 efficient shell usage combining python looping syntax with system
4378 calls. For now it's restricted to aliases, I don't think it
4381 calls. For now it's restricted to aliases, I don't think it
4379 really even makes sense to have this for magics.
4382 really even makes sense to have this for magics.
4380
4383
4381 2004-06-23 Fernando Perez <fperez@colorado.edu>
4384 2004-06-23 Fernando Perez <fperez@colorado.edu>
4382
4385
4383 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4386 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4384 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4387 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4385
4388
4386 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4389 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4387 extensions under Windows (after code sent by Gary Bishop). The
4390 extensions under Windows (after code sent by Gary Bishop). The
4388 extensions considered 'executable' are stored in IPython's rc
4391 extensions considered 'executable' are stored in IPython's rc
4389 structure as win_exec_ext.
4392 structure as win_exec_ext.
4390
4393
4391 * IPython/genutils.py (shell): new function, like system() but
4394 * IPython/genutils.py (shell): new function, like system() but
4392 without return value. Very useful for interactive shell work.
4395 without return value. Very useful for interactive shell work.
4393
4396
4394 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4397 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4395 delete aliases.
4398 delete aliases.
4396
4399
4397 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4400 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4398 sure that the alias table doesn't contain python keywords.
4401 sure that the alias table doesn't contain python keywords.
4399
4402
4400 2004-06-21 Fernando Perez <fperez@colorado.edu>
4403 2004-06-21 Fernando Perez <fperez@colorado.edu>
4401
4404
4402 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4405 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4403 non-existent items are found in $PATH. Reported by Thorsten.
4406 non-existent items are found in $PATH. Reported by Thorsten.
4404
4407
4405 2004-06-20 Fernando Perez <fperez@colorado.edu>
4408 2004-06-20 Fernando Perez <fperez@colorado.edu>
4406
4409
4407 * IPython/iplib.py (complete): modified the completer so that the
4410 * IPython/iplib.py (complete): modified the completer so that the
4408 order of priorities can be easily changed at runtime.
4411 order of priorities can be easily changed at runtime.
4409
4412
4410 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4413 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4411 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4414 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4412
4415
4413 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4416 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4414 expand Python variables prepended with $ in all system calls. The
4417 expand Python variables prepended with $ in all system calls. The
4415 same was done to InteractiveShell.handle_shell_escape. Now all
4418 same was done to InteractiveShell.handle_shell_escape. Now all
4416 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4419 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4417 expansion of python variables and expressions according to the
4420 expansion of python variables and expressions according to the
4418 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4421 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4419
4422
4420 Though PEP-215 has been rejected, a similar (but simpler) one
4423 Though PEP-215 has been rejected, a similar (but simpler) one
4421 seems like it will go into Python 2.4, PEP-292 -
4424 seems like it will go into Python 2.4, PEP-292 -
4422 http://www.python.org/peps/pep-0292.html.
4425 http://www.python.org/peps/pep-0292.html.
4423
4426
4424 I'll keep the full syntax of PEP-215, since IPython has since the
4427 I'll keep the full syntax of PEP-215, since IPython has since the
4425 start used Ka-Ping Yee's reference implementation discussed there
4428 start used Ka-Ping Yee's reference implementation discussed there
4426 (Itpl), and I actually like the powerful semantics it offers.
4429 (Itpl), and I actually like the powerful semantics it offers.
4427
4430
4428 In order to access normal shell variables, the $ has to be escaped
4431 In order to access normal shell variables, the $ has to be escaped
4429 via an extra $. For example:
4432 via an extra $. For example:
4430
4433
4431 In [7]: PATH='a python variable'
4434 In [7]: PATH='a python variable'
4432
4435
4433 In [8]: !echo $PATH
4436 In [8]: !echo $PATH
4434 a python variable
4437 a python variable
4435
4438
4436 In [9]: !echo $$PATH
4439 In [9]: !echo $$PATH
4437 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4440 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4438
4441
4439 (Magic.parse_options): escape $ so the shell doesn't evaluate
4442 (Magic.parse_options): escape $ so the shell doesn't evaluate
4440 things prematurely.
4443 things prematurely.
4441
4444
4442 * IPython/iplib.py (InteractiveShell.call_alias): added the
4445 * IPython/iplib.py (InteractiveShell.call_alias): added the
4443 ability for aliases to expand python variables via $.
4446 ability for aliases to expand python variables via $.
4444
4447
4445 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4448 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4446 system, now there's a @rehash/@rehashx pair of magics. These work
4449 system, now there's a @rehash/@rehashx pair of magics. These work
4447 like the csh rehash command, and can be invoked at any time. They
4450 like the csh rehash command, and can be invoked at any time. They
4448 build a table of aliases to everything in the user's $PATH
4451 build a table of aliases to everything in the user's $PATH
4449 (@rehash uses everything, @rehashx is slower but only adds
4452 (@rehash uses everything, @rehashx is slower but only adds
4450 executable files). With this, the pysh.py-based shell profile can
4453 executable files). With this, the pysh.py-based shell profile can
4451 now simply call rehash upon startup, and full access to all
4454 now simply call rehash upon startup, and full access to all
4452 programs in the user's path is obtained.
4455 programs in the user's path is obtained.
4453
4456
4454 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4457 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4455 functionality is now fully in place. I removed the old dynamic
4458 functionality is now fully in place. I removed the old dynamic
4456 code generation based approach, in favor of a much lighter one
4459 code generation based approach, in favor of a much lighter one
4457 based on a simple dict. The advantage is that this allows me to
4460 based on a simple dict. The advantage is that this allows me to
4458 now have thousands of aliases with negligible cost (unthinkable
4461 now have thousands of aliases with negligible cost (unthinkable
4459 with the old system).
4462 with the old system).
4460
4463
4461 2004-06-19 Fernando Perez <fperez@colorado.edu>
4464 2004-06-19 Fernando Perez <fperez@colorado.edu>
4462
4465
4463 * IPython/iplib.py (__init__): extended MagicCompleter class to
4466 * IPython/iplib.py (__init__): extended MagicCompleter class to
4464 also complete (last in priority) on user aliases.
4467 also complete (last in priority) on user aliases.
4465
4468
4466 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4469 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4467 call to eval.
4470 call to eval.
4468 (ItplNS.__init__): Added a new class which functions like Itpl,
4471 (ItplNS.__init__): Added a new class which functions like Itpl,
4469 but allows configuring the namespace for the evaluation to occur
4472 but allows configuring the namespace for the evaluation to occur
4470 in.
4473 in.
4471
4474
4472 2004-06-18 Fernando Perez <fperez@colorado.edu>
4475 2004-06-18 Fernando Perez <fperez@colorado.edu>
4473
4476
4474 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4477 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4475 better message when 'exit' or 'quit' are typed (a common newbie
4478 better message when 'exit' or 'quit' are typed (a common newbie
4476 confusion).
4479 confusion).
4477
4480
4478 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4481 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4479 check for Windows users.
4482 check for Windows users.
4480
4483
4481 * IPython/iplib.py (InteractiveShell.user_setup): removed
4484 * IPython/iplib.py (InteractiveShell.user_setup): removed
4482 disabling of colors for Windows. I'll test at runtime and issue a
4485 disabling of colors for Windows. I'll test at runtime and issue a
4483 warning if Gary's readline isn't found, as to nudge users to
4486 warning if Gary's readline isn't found, as to nudge users to
4484 download it.
4487 download it.
4485
4488
4486 2004-06-16 Fernando Perez <fperez@colorado.edu>
4489 2004-06-16 Fernando Perez <fperez@colorado.edu>
4487
4490
4488 * IPython/genutils.py (Stream.__init__): changed to print errors
4491 * IPython/genutils.py (Stream.__init__): changed to print errors
4489 to sys.stderr. I had a circular dependency here. Now it's
4492 to sys.stderr. I had a circular dependency here. Now it's
4490 possible to run ipython as IDLE's shell (consider this pre-alpha,
4493 possible to run ipython as IDLE's shell (consider this pre-alpha,
4491 since true stdout things end up in the starting terminal instead
4494 since true stdout things end up in the starting terminal instead
4492 of IDLE's out).
4495 of IDLE's out).
4493
4496
4494 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4497 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4495 users who haven't # updated their prompt_in2 definitions. Remove
4498 users who haven't # updated their prompt_in2 definitions. Remove
4496 eventually.
4499 eventually.
4497 (multiple_replace): added credit to original ASPN recipe.
4500 (multiple_replace): added credit to original ASPN recipe.
4498
4501
4499 2004-06-15 Fernando Perez <fperez@colorado.edu>
4502 2004-06-15 Fernando Perez <fperez@colorado.edu>
4500
4503
4501 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4504 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4502 list of auto-defined aliases.
4505 list of auto-defined aliases.
4503
4506
4504 2004-06-13 Fernando Perez <fperez@colorado.edu>
4507 2004-06-13 Fernando Perez <fperez@colorado.edu>
4505
4508
4506 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4509 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4507 install was really requested (so setup.py can be used for other
4510 install was really requested (so setup.py can be used for other
4508 things under Windows).
4511 things under Windows).
4509
4512
4510 2004-06-10 Fernando Perez <fperez@colorado.edu>
4513 2004-06-10 Fernando Perez <fperez@colorado.edu>
4511
4514
4512 * IPython/Logger.py (Logger.create_log): Manually remove any old
4515 * IPython/Logger.py (Logger.create_log): Manually remove any old
4513 backup, since os.remove may fail under Windows. Fixes bug
4516 backup, since os.remove may fail under Windows. Fixes bug
4514 reported by Thorsten.
4517 reported by Thorsten.
4515
4518
4516 2004-06-09 Fernando Perez <fperez@colorado.edu>
4519 2004-06-09 Fernando Perez <fperez@colorado.edu>
4517
4520
4518 * examples/example-embed.py: fixed all references to %n (replaced
4521 * examples/example-embed.py: fixed all references to %n (replaced
4519 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4522 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4520 for all examples and the manual as well.
4523 for all examples and the manual as well.
4521
4524
4522 2004-06-08 Fernando Perez <fperez@colorado.edu>
4525 2004-06-08 Fernando Perez <fperez@colorado.edu>
4523
4526
4524 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4527 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4525 alignment and color management. All 3 prompt subsystems now
4528 alignment and color management. All 3 prompt subsystems now
4526 inherit from BasePrompt.
4529 inherit from BasePrompt.
4527
4530
4528 * tools/release: updates for windows installer build and tag rpms
4531 * tools/release: updates for windows installer build and tag rpms
4529 with python version (since paths are fixed).
4532 with python version (since paths are fixed).
4530
4533
4531 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4534 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4532 which will become eventually obsolete. Also fixed the default
4535 which will become eventually obsolete. Also fixed the default
4533 prompt_in2 to use \D, so at least new users start with the correct
4536 prompt_in2 to use \D, so at least new users start with the correct
4534 defaults.
4537 defaults.
4535 WARNING: Users with existing ipythonrc files will need to apply
4538 WARNING: Users with existing ipythonrc files will need to apply
4536 this fix manually!
4539 this fix manually!
4537
4540
4538 * setup.py: make windows installer (.exe). This is finally the
4541 * setup.py: make windows installer (.exe). This is finally the
4539 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4542 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4540 which I hadn't included because it required Python 2.3 (or recent
4543 which I hadn't included because it required Python 2.3 (or recent
4541 distutils).
4544 distutils).
4542
4545
4543 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4546 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4544 usage of new '\D' escape.
4547 usage of new '\D' escape.
4545
4548
4546 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4549 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4547 lacks os.getuid())
4550 lacks os.getuid())
4548 (CachedOutput.set_colors): Added the ability to turn coloring
4551 (CachedOutput.set_colors): Added the ability to turn coloring
4549 on/off with @colors even for manually defined prompt colors. It
4552 on/off with @colors even for manually defined prompt colors. It
4550 uses a nasty global, but it works safely and via the generic color
4553 uses a nasty global, but it works safely and via the generic color
4551 handling mechanism.
4554 handling mechanism.
4552 (Prompt2.__init__): Introduced new escape '\D' for continuation
4555 (Prompt2.__init__): Introduced new escape '\D' for continuation
4553 prompts. It represents the counter ('\#') as dots.
4556 prompts. It represents the counter ('\#') as dots.
4554 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4557 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4555 need to update their ipythonrc files and replace '%n' with '\D' in
4558 need to update their ipythonrc files and replace '%n' with '\D' in
4556 their prompt_in2 settings everywhere. Sorry, but there's
4559 their prompt_in2 settings everywhere. Sorry, but there's
4557 otherwise no clean way to get all prompts to properly align. The
4560 otherwise no clean way to get all prompts to properly align. The
4558 ipythonrc shipped with IPython has been updated.
4561 ipythonrc shipped with IPython has been updated.
4559
4562
4560 2004-06-07 Fernando Perez <fperez@colorado.edu>
4563 2004-06-07 Fernando Perez <fperez@colorado.edu>
4561
4564
4562 * setup.py (isfile): Pass local_icons option to latex2html, so the
4565 * setup.py (isfile): Pass local_icons option to latex2html, so the
4563 resulting HTML file is self-contained. Thanks to
4566 resulting HTML file is self-contained. Thanks to
4564 dryice-AT-liu.com.cn for the tip.
4567 dryice-AT-liu.com.cn for the tip.
4565
4568
4566 * pysh.py: I created a new profile 'shell', which implements a
4569 * pysh.py: I created a new profile 'shell', which implements a
4567 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4570 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4568 system shell, nor will it become one anytime soon. It's mainly
4571 system shell, nor will it become one anytime soon. It's mainly
4569 meant to illustrate the use of the new flexible bash-like prompts.
4572 meant to illustrate the use of the new flexible bash-like prompts.
4570 I guess it could be used by hardy souls for true shell management,
4573 I guess it could be used by hardy souls for true shell management,
4571 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4574 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4572 profile. This uses the InterpreterExec extension provided by
4575 profile. This uses the InterpreterExec extension provided by
4573 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4576 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4574
4577
4575 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4578 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4576 auto-align itself with the length of the previous input prompt
4579 auto-align itself with the length of the previous input prompt
4577 (taking into account the invisible color escapes).
4580 (taking into account the invisible color escapes).
4578 (CachedOutput.__init__): Large restructuring of this class. Now
4581 (CachedOutput.__init__): Large restructuring of this class. Now
4579 all three prompts (primary1, primary2, output) are proper objects,
4582 all three prompts (primary1, primary2, output) are proper objects,
4580 managed by the 'parent' CachedOutput class. The code is still a
4583 managed by the 'parent' CachedOutput class. The code is still a
4581 bit hackish (all prompts share state via a pointer to the cache),
4584 bit hackish (all prompts share state via a pointer to the cache),
4582 but it's overall far cleaner than before.
4585 but it's overall far cleaner than before.
4583
4586
4584 * IPython/genutils.py (getoutputerror): modified to add verbose,
4587 * IPython/genutils.py (getoutputerror): modified to add verbose,
4585 debug and header options. This makes the interface of all getout*
4588 debug and header options. This makes the interface of all getout*
4586 functions uniform.
4589 functions uniform.
4587 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4590 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4588
4591
4589 * IPython/Magic.py (Magic.default_option): added a function to
4592 * IPython/Magic.py (Magic.default_option): added a function to
4590 allow registering default options for any magic command. This
4593 allow registering default options for any magic command. This
4591 makes it easy to have profiles which customize the magics globally
4594 makes it easy to have profiles which customize the magics globally
4592 for a certain use. The values set through this function are
4595 for a certain use. The values set through this function are
4593 picked up by the parse_options() method, which all magics should
4596 picked up by the parse_options() method, which all magics should
4594 use to parse their options.
4597 use to parse their options.
4595
4598
4596 * IPython/genutils.py (warn): modified the warnings framework to
4599 * IPython/genutils.py (warn): modified the warnings framework to
4597 use the Term I/O class. I'm trying to slowly unify all of
4600 use the Term I/O class. I'm trying to slowly unify all of
4598 IPython's I/O operations to pass through Term.
4601 IPython's I/O operations to pass through Term.
4599
4602
4600 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4603 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4601 the secondary prompt to correctly match the length of the primary
4604 the secondary prompt to correctly match the length of the primary
4602 one for any prompt. Now multi-line code will properly line up
4605 one for any prompt. Now multi-line code will properly line up
4603 even for path dependent prompts, such as the new ones available
4606 even for path dependent prompts, such as the new ones available
4604 via the prompt_specials.
4607 via the prompt_specials.
4605
4608
4606 2004-06-06 Fernando Perez <fperez@colorado.edu>
4609 2004-06-06 Fernando Perez <fperez@colorado.edu>
4607
4610
4608 * IPython/Prompts.py (prompt_specials): Added the ability to have
4611 * IPython/Prompts.py (prompt_specials): Added the ability to have
4609 bash-like special sequences in the prompts, which get
4612 bash-like special sequences in the prompts, which get
4610 automatically expanded. Things like hostname, current working
4613 automatically expanded. Things like hostname, current working
4611 directory and username are implemented already, but it's easy to
4614 directory and username are implemented already, but it's easy to
4612 add more in the future. Thanks to a patch by W.J. van der Laan
4615 add more in the future. Thanks to a patch by W.J. van der Laan
4613 <gnufnork-AT-hetdigitalegat.nl>
4616 <gnufnork-AT-hetdigitalegat.nl>
4614 (prompt_specials): Added color support for prompt strings, so
4617 (prompt_specials): Added color support for prompt strings, so
4615 users can define arbitrary color setups for their prompts.
4618 users can define arbitrary color setups for their prompts.
4616
4619
4617 2004-06-05 Fernando Perez <fperez@colorado.edu>
4620 2004-06-05 Fernando Perez <fperez@colorado.edu>
4618
4621
4619 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4622 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4620 code to load Gary Bishop's readline and configure it
4623 code to load Gary Bishop's readline and configure it
4621 automatically. Thanks to Gary for help on this.
4624 automatically. Thanks to Gary for help on this.
4622
4625
4623 2004-06-01 Fernando Perez <fperez@colorado.edu>
4626 2004-06-01 Fernando Perez <fperez@colorado.edu>
4624
4627
4625 * IPython/Logger.py (Logger.create_log): fix bug for logging
4628 * IPython/Logger.py (Logger.create_log): fix bug for logging
4626 with no filename (previous fix was incomplete).
4629 with no filename (previous fix was incomplete).
4627
4630
4628 2004-05-25 Fernando Perez <fperez@colorado.edu>
4631 2004-05-25 Fernando Perez <fperez@colorado.edu>
4629
4632
4630 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4633 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4631 parens would get passed to the shell.
4634 parens would get passed to the shell.
4632
4635
4633 2004-05-20 Fernando Perez <fperez@colorado.edu>
4636 2004-05-20 Fernando Perez <fperez@colorado.edu>
4634
4637
4635 * IPython/Magic.py (Magic.magic_prun): changed default profile
4638 * IPython/Magic.py (Magic.magic_prun): changed default profile
4636 sort order to 'time' (the more common profiling need).
4639 sort order to 'time' (the more common profiling need).
4637
4640
4638 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4641 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4639 so that source code shown is guaranteed in sync with the file on
4642 so that source code shown is guaranteed in sync with the file on
4640 disk (also changed in psource). Similar fix to the one for
4643 disk (also changed in psource). Similar fix to the one for
4641 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4644 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4642 <yann.ledu-AT-noos.fr>.
4645 <yann.ledu-AT-noos.fr>.
4643
4646
4644 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4647 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4645 with a single option would not be correctly parsed. Closes
4648 with a single option would not be correctly parsed. Closes
4646 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4649 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4647 introduced in 0.6.0 (on 2004-05-06).
4650 introduced in 0.6.0 (on 2004-05-06).
4648
4651
4649 2004-05-13 *** Released version 0.6.0
4652 2004-05-13 *** Released version 0.6.0
4650
4653
4651 2004-05-13 Fernando Perez <fperez@colorado.edu>
4654 2004-05-13 Fernando Perez <fperez@colorado.edu>
4652
4655
4653 * debian/: Added debian/ directory to CVS, so that debian support
4656 * debian/: Added debian/ directory to CVS, so that debian support
4654 is publicly accessible. The debian package is maintained by Jack
4657 is publicly accessible. The debian package is maintained by Jack
4655 Moffit <jack-AT-xiph.org>.
4658 Moffit <jack-AT-xiph.org>.
4656
4659
4657 * Documentation: included the notes about an ipython-based system
4660 * Documentation: included the notes about an ipython-based system
4658 shell (the hypothetical 'pysh') into the new_design.pdf document,
4661 shell (the hypothetical 'pysh') into the new_design.pdf document,
4659 so that these ideas get distributed to users along with the
4662 so that these ideas get distributed to users along with the
4660 official documentation.
4663 official documentation.
4661
4664
4662 2004-05-10 Fernando Perez <fperez@colorado.edu>
4665 2004-05-10 Fernando Perez <fperez@colorado.edu>
4663
4666
4664 * IPython/Logger.py (Logger.create_log): fix recently introduced
4667 * IPython/Logger.py (Logger.create_log): fix recently introduced
4665 bug (misindented line) where logstart would fail when not given an
4668 bug (misindented line) where logstart would fail when not given an
4666 explicit filename.
4669 explicit filename.
4667
4670
4668 2004-05-09 Fernando Perez <fperez@colorado.edu>
4671 2004-05-09 Fernando Perez <fperez@colorado.edu>
4669
4672
4670 * IPython/Magic.py (Magic.parse_options): skip system call when
4673 * IPython/Magic.py (Magic.parse_options): skip system call when
4671 there are no options to look for. Faster, cleaner for the common
4674 there are no options to look for. Faster, cleaner for the common
4672 case.
4675 case.
4673
4676
4674 * Documentation: many updates to the manual: describing Windows
4677 * Documentation: many updates to the manual: describing Windows
4675 support better, Gnuplot updates, credits, misc small stuff. Also
4678 support better, Gnuplot updates, credits, misc small stuff. Also
4676 updated the new_design doc a bit.
4679 updated the new_design doc a bit.
4677
4680
4678 2004-05-06 *** Released version 0.6.0.rc1
4681 2004-05-06 *** Released version 0.6.0.rc1
4679
4682
4680 2004-05-06 Fernando Perez <fperez@colorado.edu>
4683 2004-05-06 Fernando Perez <fperez@colorado.edu>
4681
4684
4682 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4685 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4683 operations to use the vastly more efficient list/''.join() method.
4686 operations to use the vastly more efficient list/''.join() method.
4684 (FormattedTB.text): Fix
4687 (FormattedTB.text): Fix
4685 http://www.scipy.net/roundup/ipython/issue12 - exception source
4688 http://www.scipy.net/roundup/ipython/issue12 - exception source
4686 extract not updated after reload. Thanks to Mike Salib
4689 extract not updated after reload. Thanks to Mike Salib
4687 <msalib-AT-mit.edu> for pinning the source of the problem.
4690 <msalib-AT-mit.edu> for pinning the source of the problem.
4688 Fortunately, the solution works inside ipython and doesn't require
4691 Fortunately, the solution works inside ipython and doesn't require
4689 any changes to python proper.
4692 any changes to python proper.
4690
4693
4691 * IPython/Magic.py (Magic.parse_options): Improved to process the
4694 * IPython/Magic.py (Magic.parse_options): Improved to process the
4692 argument list as a true shell would (by actually using the
4695 argument list as a true shell would (by actually using the
4693 underlying system shell). This way, all @magics automatically get
4696 underlying system shell). This way, all @magics automatically get
4694 shell expansion for variables. Thanks to a comment by Alex
4697 shell expansion for variables. Thanks to a comment by Alex
4695 Schmolck.
4698 Schmolck.
4696
4699
4697 2004-04-04 Fernando Perez <fperez@colorado.edu>
4700 2004-04-04 Fernando Perez <fperez@colorado.edu>
4698
4701
4699 * IPython/iplib.py (InteractiveShell.interact): Added a special
4702 * IPython/iplib.py (InteractiveShell.interact): Added a special
4700 trap for a debugger quit exception, which is basically impossible
4703 trap for a debugger quit exception, which is basically impossible
4701 to handle by normal mechanisms, given what pdb does to the stack.
4704 to handle by normal mechanisms, given what pdb does to the stack.
4702 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4705 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4703
4706
4704 2004-04-03 Fernando Perez <fperez@colorado.edu>
4707 2004-04-03 Fernando Perez <fperez@colorado.edu>
4705
4708
4706 * IPython/genutils.py (Term): Standardized the names of the Term
4709 * IPython/genutils.py (Term): Standardized the names of the Term
4707 class streams to cin/cout/cerr, following C++ naming conventions
4710 class streams to cin/cout/cerr, following C++ naming conventions
4708 (I can't use in/out/err because 'in' is not a valid attribute
4711 (I can't use in/out/err because 'in' is not a valid attribute
4709 name).
4712 name).
4710
4713
4711 * IPython/iplib.py (InteractiveShell.interact): don't increment
4714 * IPython/iplib.py (InteractiveShell.interact): don't increment
4712 the prompt if there's no user input. By Daniel 'Dang' Griffith
4715 the prompt if there's no user input. By Daniel 'Dang' Griffith
4713 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4716 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4714 Francois Pinard.
4717 Francois Pinard.
4715
4718
4716 2004-04-02 Fernando Perez <fperez@colorado.edu>
4719 2004-04-02 Fernando Perez <fperez@colorado.edu>
4717
4720
4718 * IPython/genutils.py (Stream.__init__): Modified to survive at
4721 * IPython/genutils.py (Stream.__init__): Modified to survive at
4719 least importing in contexts where stdin/out/err aren't true file
4722 least importing in contexts where stdin/out/err aren't true file
4720 objects, such as PyCrust (they lack fileno() and mode). However,
4723 objects, such as PyCrust (they lack fileno() and mode). However,
4721 the recovery facilities which rely on these things existing will
4724 the recovery facilities which rely on these things existing will
4722 not work.
4725 not work.
4723
4726
4724 2004-04-01 Fernando Perez <fperez@colorado.edu>
4727 2004-04-01 Fernando Perez <fperez@colorado.edu>
4725
4728
4726 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4729 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4727 use the new getoutputerror() function, so it properly
4730 use the new getoutputerror() function, so it properly
4728 distinguishes stdout/err.
4731 distinguishes stdout/err.
4729
4732
4730 * IPython/genutils.py (getoutputerror): added a function to
4733 * IPython/genutils.py (getoutputerror): added a function to
4731 capture separately the standard output and error of a command.
4734 capture separately the standard output and error of a command.
4732 After a comment from dang on the mailing lists. This code is
4735 After a comment from dang on the mailing lists. This code is
4733 basically a modified version of commands.getstatusoutput(), from
4736 basically a modified version of commands.getstatusoutput(), from
4734 the standard library.
4737 the standard library.
4735
4738
4736 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4739 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4737 '!!' as a special syntax (shorthand) to access @sx.
4740 '!!' as a special syntax (shorthand) to access @sx.
4738
4741
4739 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4742 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4740 command and return its output as a list split on '\n'.
4743 command and return its output as a list split on '\n'.
4741
4744
4742 2004-03-31 Fernando Perez <fperez@colorado.edu>
4745 2004-03-31 Fernando Perez <fperez@colorado.edu>
4743
4746
4744 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4747 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4745 method to dictionaries used as FakeModule instances if they lack
4748 method to dictionaries used as FakeModule instances if they lack
4746 it. At least pydoc in python2.3 breaks for runtime-defined
4749 it. At least pydoc in python2.3 breaks for runtime-defined
4747 functions without this hack. At some point I need to _really_
4750 functions without this hack. At some point I need to _really_
4748 understand what FakeModule is doing, because it's a gross hack.
4751 understand what FakeModule is doing, because it's a gross hack.
4749 But it solves Arnd's problem for now...
4752 But it solves Arnd's problem for now...
4750
4753
4751 2004-02-27 Fernando Perez <fperez@colorado.edu>
4754 2004-02-27 Fernando Perez <fperez@colorado.edu>
4752
4755
4753 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4756 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4754 mode would behave erratically. Also increased the number of
4757 mode would behave erratically. Also increased the number of
4755 possible logs in rotate mod to 999. Thanks to Rod Holland
4758 possible logs in rotate mod to 999. Thanks to Rod Holland
4756 <rhh@StructureLABS.com> for the report and fixes.
4759 <rhh@StructureLABS.com> for the report and fixes.
4757
4760
4758 2004-02-26 Fernando Perez <fperez@colorado.edu>
4761 2004-02-26 Fernando Perez <fperez@colorado.edu>
4759
4762
4760 * IPython/genutils.py (page): Check that the curses module really
4763 * IPython/genutils.py (page): Check that the curses module really
4761 has the initscr attribute before trying to use it. For some
4764 has the initscr attribute before trying to use it. For some
4762 reason, the Solaris curses module is missing this. I think this
4765 reason, the Solaris curses module is missing this. I think this
4763 should be considered a Solaris python bug, but I'm not sure.
4766 should be considered a Solaris python bug, but I'm not sure.
4764
4767
4765 2004-01-17 Fernando Perez <fperez@colorado.edu>
4768 2004-01-17 Fernando Perez <fperez@colorado.edu>
4766
4769
4767 * IPython/genutils.py (Stream.__init__): Changes to try to make
4770 * IPython/genutils.py (Stream.__init__): Changes to try to make
4768 ipython robust against stdin/out/err being closed by the user.
4771 ipython robust against stdin/out/err being closed by the user.
4769 This is 'user error' (and blocks a normal python session, at least
4772 This is 'user error' (and blocks a normal python session, at least
4770 the stdout case). However, Ipython should be able to survive such
4773 the stdout case). However, Ipython should be able to survive such
4771 instances of abuse as gracefully as possible. To simplify the
4774 instances of abuse as gracefully as possible. To simplify the
4772 coding and maintain compatibility with Gary Bishop's Term
4775 coding and maintain compatibility with Gary Bishop's Term
4773 contributions, I've made use of classmethods for this. I think
4776 contributions, I've made use of classmethods for this. I think
4774 this introduces a dependency on python 2.2.
4777 this introduces a dependency on python 2.2.
4775
4778
4776 2004-01-13 Fernando Perez <fperez@colorado.edu>
4779 2004-01-13 Fernando Perez <fperez@colorado.edu>
4777
4780
4778 * IPython/numutils.py (exp_safe): simplified the code a bit and
4781 * IPython/numutils.py (exp_safe): simplified the code a bit and
4779 removed the need for importing the kinds module altogether.
4782 removed the need for importing the kinds module altogether.
4780
4783
4781 2004-01-06 Fernando Perez <fperez@colorado.edu>
4784 2004-01-06 Fernando Perez <fperez@colorado.edu>
4782
4785
4783 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4786 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4784 a magic function instead, after some community feedback. No
4787 a magic function instead, after some community feedback. No
4785 special syntax will exist for it, but its name is deliberately
4788 special syntax will exist for it, but its name is deliberately
4786 very short.
4789 very short.
4787
4790
4788 2003-12-20 Fernando Perez <fperez@colorado.edu>
4791 2003-12-20 Fernando Perez <fperez@colorado.edu>
4789
4792
4790 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4793 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4791 new functionality, to automagically assign the result of a shell
4794 new functionality, to automagically assign the result of a shell
4792 command to a variable. I'll solicit some community feedback on
4795 command to a variable. I'll solicit some community feedback on
4793 this before making it permanent.
4796 this before making it permanent.
4794
4797
4795 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4798 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4796 requested about callables for which inspect couldn't obtain a
4799 requested about callables for which inspect couldn't obtain a
4797 proper argspec. Thanks to a crash report sent by Etienne
4800 proper argspec. Thanks to a crash report sent by Etienne
4798 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4801 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4799
4802
4800 2003-12-09 Fernando Perez <fperez@colorado.edu>
4803 2003-12-09 Fernando Perez <fperez@colorado.edu>
4801
4804
4802 * IPython/genutils.py (page): patch for the pager to work across
4805 * IPython/genutils.py (page): patch for the pager to work across
4803 various versions of Windows. By Gary Bishop.
4806 various versions of Windows. By Gary Bishop.
4804
4807
4805 2003-12-04 Fernando Perez <fperez@colorado.edu>
4808 2003-12-04 Fernando Perez <fperez@colorado.edu>
4806
4809
4807 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4810 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4808 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4811 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4809 While I tested this and it looks ok, there may still be corner
4812 While I tested this and it looks ok, there may still be corner
4810 cases I've missed.
4813 cases I've missed.
4811
4814
4812 2003-12-01 Fernando Perez <fperez@colorado.edu>
4815 2003-12-01 Fernando Perez <fperez@colorado.edu>
4813
4816
4814 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4817 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4815 where a line like 'p,q=1,2' would fail because the automagic
4818 where a line like 'p,q=1,2' would fail because the automagic
4816 system would be triggered for @p.
4819 system would be triggered for @p.
4817
4820
4818 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4821 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4819 cleanups, code unmodified.
4822 cleanups, code unmodified.
4820
4823
4821 * IPython/genutils.py (Term): added a class for IPython to handle
4824 * IPython/genutils.py (Term): added a class for IPython to handle
4822 output. In most cases it will just be a proxy for stdout/err, but
4825 output. In most cases it will just be a proxy for stdout/err, but
4823 having this allows modifications to be made for some platforms,
4826 having this allows modifications to be made for some platforms,
4824 such as handling color escapes under Windows. All of this code
4827 such as handling color escapes under Windows. All of this code
4825 was contributed by Gary Bishop, with minor modifications by me.
4828 was contributed by Gary Bishop, with minor modifications by me.
4826 The actual changes affect many files.
4829 The actual changes affect many files.
4827
4830
4828 2003-11-30 Fernando Perez <fperez@colorado.edu>
4831 2003-11-30 Fernando Perez <fperez@colorado.edu>
4829
4832
4830 * IPython/iplib.py (file_matches): new completion code, courtesy
4833 * IPython/iplib.py (file_matches): new completion code, courtesy
4831 of Jeff Collins. This enables filename completion again under
4834 of Jeff Collins. This enables filename completion again under
4832 python 2.3, which disabled it at the C level.
4835 python 2.3, which disabled it at the C level.
4833
4836
4834 2003-11-11 Fernando Perez <fperez@colorado.edu>
4837 2003-11-11 Fernando Perez <fperez@colorado.edu>
4835
4838
4836 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4839 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4837 for Numeric.array(map(...)), but often convenient.
4840 for Numeric.array(map(...)), but often convenient.
4838
4841
4839 2003-11-05 Fernando Perez <fperez@colorado.edu>
4842 2003-11-05 Fernando Perez <fperez@colorado.edu>
4840
4843
4841 * IPython/numutils.py (frange): Changed a call from int() to
4844 * IPython/numutils.py (frange): Changed a call from int() to
4842 int(round()) to prevent a problem reported with arange() in the
4845 int(round()) to prevent a problem reported with arange() in the
4843 numpy list.
4846 numpy list.
4844
4847
4845 2003-10-06 Fernando Perez <fperez@colorado.edu>
4848 2003-10-06 Fernando Perez <fperez@colorado.edu>
4846
4849
4847 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4850 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4848 prevent crashes if sys lacks an argv attribute (it happens with
4851 prevent crashes if sys lacks an argv attribute (it happens with
4849 embedded interpreters which build a bare-bones sys module).
4852 embedded interpreters which build a bare-bones sys module).
4850 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4853 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4851
4854
4852 2003-09-24 Fernando Perez <fperez@colorado.edu>
4855 2003-09-24 Fernando Perez <fperez@colorado.edu>
4853
4856
4854 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4857 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4855 to protect against poorly written user objects where __getattr__
4858 to protect against poorly written user objects where __getattr__
4856 raises exceptions other than AttributeError. Thanks to a bug
4859 raises exceptions other than AttributeError. Thanks to a bug
4857 report by Oliver Sander <osander-AT-gmx.de>.
4860 report by Oliver Sander <osander-AT-gmx.de>.
4858
4861
4859 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4862 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4860 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4863 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4861
4864
4862 2003-09-09 Fernando Perez <fperez@colorado.edu>
4865 2003-09-09 Fernando Perez <fperez@colorado.edu>
4863
4866
4864 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4867 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4865 unpacking a list whith a callable as first element would
4868 unpacking a list whith a callable as first element would
4866 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4869 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4867 Collins.
4870 Collins.
4868
4871
4869 2003-08-25 *** Released version 0.5.0
4872 2003-08-25 *** Released version 0.5.0
4870
4873
4871 2003-08-22 Fernando Perez <fperez@colorado.edu>
4874 2003-08-22 Fernando Perez <fperez@colorado.edu>
4872
4875
4873 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4876 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4874 improperly defined user exceptions. Thanks to feedback from Mark
4877 improperly defined user exceptions. Thanks to feedback from Mark
4875 Russell <mrussell-AT-verio.net>.
4878 Russell <mrussell-AT-verio.net>.
4876
4879
4877 2003-08-20 Fernando Perez <fperez@colorado.edu>
4880 2003-08-20 Fernando Perez <fperez@colorado.edu>
4878
4881
4879 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4882 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4880 printing so that it would print multi-line string forms starting
4883 printing so that it would print multi-line string forms starting
4881 with a new line. This way the formatting is better respected for
4884 with a new line. This way the formatting is better respected for
4882 objects which work hard to make nice string forms.
4885 objects which work hard to make nice string forms.
4883
4886
4884 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4887 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4885 autocall would overtake data access for objects with both
4888 autocall would overtake data access for objects with both
4886 __getitem__ and __call__.
4889 __getitem__ and __call__.
4887
4890
4888 2003-08-19 *** Released version 0.5.0-rc1
4891 2003-08-19 *** Released version 0.5.0-rc1
4889
4892
4890 2003-08-19 Fernando Perez <fperez@colorado.edu>
4893 2003-08-19 Fernando Perez <fperez@colorado.edu>
4891
4894
4892 * IPython/deep_reload.py (load_tail): single tiny change here
4895 * IPython/deep_reload.py (load_tail): single tiny change here
4893 seems to fix the long-standing bug of dreload() failing to work
4896 seems to fix the long-standing bug of dreload() failing to work
4894 for dotted names. But this module is pretty tricky, so I may have
4897 for dotted names. But this module is pretty tricky, so I may have
4895 missed some subtlety. Needs more testing!.
4898 missed some subtlety. Needs more testing!.
4896
4899
4897 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4900 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4898 exceptions which have badly implemented __str__ methods.
4901 exceptions which have badly implemented __str__ methods.
4899 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4902 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4900 which I've been getting reports about from Python 2.3 users. I
4903 which I've been getting reports about from Python 2.3 users. I
4901 wish I had a simple test case to reproduce the problem, so I could
4904 wish I had a simple test case to reproduce the problem, so I could
4902 either write a cleaner workaround or file a bug report if
4905 either write a cleaner workaround or file a bug report if
4903 necessary.
4906 necessary.
4904
4907
4905 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4908 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4906 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4909 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4907 a bug report by Tjabo Kloppenburg.
4910 a bug report by Tjabo Kloppenburg.
4908
4911
4909 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4912 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4910 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4913 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4911 seems rather unstable. Thanks to a bug report by Tjabo
4914 seems rather unstable. Thanks to a bug report by Tjabo
4912 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4915 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4913
4916
4914 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4917 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4915 this out soon because of the critical fixes in the inner loop for
4918 this out soon because of the critical fixes in the inner loop for
4916 generators.
4919 generators.
4917
4920
4918 * IPython/Magic.py (Magic.getargspec): removed. This (and
4921 * IPython/Magic.py (Magic.getargspec): removed. This (and
4919 _get_def) have been obsoleted by OInspect for a long time, I
4922 _get_def) have been obsoleted by OInspect for a long time, I
4920 hadn't noticed that they were dead code.
4923 hadn't noticed that they were dead code.
4921 (Magic._ofind): restored _ofind functionality for a few literals
4924 (Magic._ofind): restored _ofind functionality for a few literals
4922 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4925 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4923 for things like "hello".capitalize?, since that would require a
4926 for things like "hello".capitalize?, since that would require a
4924 potentially dangerous eval() again.
4927 potentially dangerous eval() again.
4925
4928
4926 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4929 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4927 logic a bit more to clean up the escapes handling and minimize the
4930 logic a bit more to clean up the escapes handling and minimize the
4928 use of _ofind to only necessary cases. The interactive 'feel' of
4931 use of _ofind to only necessary cases. The interactive 'feel' of
4929 IPython should have improved quite a bit with the changes in
4932 IPython should have improved quite a bit with the changes in
4930 _prefilter and _ofind (besides being far safer than before).
4933 _prefilter and _ofind (besides being far safer than before).
4931
4934
4932 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4935 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4933 obscure, never reported). Edit would fail to find the object to
4936 obscure, never reported). Edit would fail to find the object to
4934 edit under some circumstances.
4937 edit under some circumstances.
4935 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4938 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4936 which were causing double-calling of generators. Those eval calls
4939 which were causing double-calling of generators. Those eval calls
4937 were _very_ dangerous, since code with side effects could be
4940 were _very_ dangerous, since code with side effects could be
4938 triggered. As they say, 'eval is evil'... These were the
4941 triggered. As they say, 'eval is evil'... These were the
4939 nastiest evals in IPython. Besides, _ofind is now far simpler,
4942 nastiest evals in IPython. Besides, _ofind is now far simpler,
4940 and it should also be quite a bit faster. Its use of inspect is
4943 and it should also be quite a bit faster. Its use of inspect is
4941 also safer, so perhaps some of the inspect-related crashes I've
4944 also safer, so perhaps some of the inspect-related crashes I've
4942 seen lately with Python 2.3 might be taken care of. That will
4945 seen lately with Python 2.3 might be taken care of. That will
4943 need more testing.
4946 need more testing.
4944
4947
4945 2003-08-17 Fernando Perez <fperez@colorado.edu>
4948 2003-08-17 Fernando Perez <fperez@colorado.edu>
4946
4949
4947 * IPython/iplib.py (InteractiveShell._prefilter): significant
4950 * IPython/iplib.py (InteractiveShell._prefilter): significant
4948 simplifications to the logic for handling user escapes. Faster
4951 simplifications to the logic for handling user escapes. Faster
4949 and simpler code.
4952 and simpler code.
4950
4953
4951 2003-08-14 Fernando Perez <fperez@colorado.edu>
4954 2003-08-14 Fernando Perez <fperez@colorado.edu>
4952
4955
4953 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4956 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4954 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4957 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4955 but it should be quite a bit faster. And the recursive version
4958 but it should be quite a bit faster. And the recursive version
4956 generated O(log N) intermediate storage for all rank>1 arrays,
4959 generated O(log N) intermediate storage for all rank>1 arrays,
4957 even if they were contiguous.
4960 even if they were contiguous.
4958 (l1norm): Added this function.
4961 (l1norm): Added this function.
4959 (norm): Added this function for arbitrary norms (including
4962 (norm): Added this function for arbitrary norms (including
4960 l-infinity). l1 and l2 are still special cases for convenience
4963 l-infinity). l1 and l2 are still special cases for convenience
4961 and speed.
4964 and speed.
4962
4965
4963 2003-08-03 Fernando Perez <fperez@colorado.edu>
4966 2003-08-03 Fernando Perez <fperez@colorado.edu>
4964
4967
4965 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4968 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4966 exceptions, which now raise PendingDeprecationWarnings in Python
4969 exceptions, which now raise PendingDeprecationWarnings in Python
4967 2.3. There were some in Magic and some in Gnuplot2.
4970 2.3. There were some in Magic and some in Gnuplot2.
4968
4971
4969 2003-06-30 Fernando Perez <fperez@colorado.edu>
4972 2003-06-30 Fernando Perez <fperez@colorado.edu>
4970
4973
4971 * IPython/genutils.py (page): modified to call curses only for
4974 * IPython/genutils.py (page): modified to call curses only for
4972 terminals where TERM=='xterm'. After problems under many other
4975 terminals where TERM=='xterm'. After problems under many other
4973 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4976 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4974
4977
4975 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4978 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4976 would be triggered when readline was absent. This was just an old
4979 would be triggered when readline was absent. This was just an old
4977 debugging statement I'd forgotten to take out.
4980 debugging statement I'd forgotten to take out.
4978
4981
4979 2003-06-20 Fernando Perez <fperez@colorado.edu>
4982 2003-06-20 Fernando Perez <fperez@colorado.edu>
4980
4983
4981 * IPython/genutils.py (clock): modified to return only user time
4984 * IPython/genutils.py (clock): modified to return only user time
4982 (not counting system time), after a discussion on scipy. While
4985 (not counting system time), after a discussion on scipy. While
4983 system time may be a useful quantity occasionally, it may much
4986 system time may be a useful quantity occasionally, it may much
4984 more easily be skewed by occasional swapping or other similar
4987 more easily be skewed by occasional swapping or other similar
4985 activity.
4988 activity.
4986
4989
4987 2003-06-05 Fernando Perez <fperez@colorado.edu>
4990 2003-06-05 Fernando Perez <fperez@colorado.edu>
4988
4991
4989 * IPython/numutils.py (identity): new function, for building
4992 * IPython/numutils.py (identity): new function, for building
4990 arbitrary rank Kronecker deltas (mostly backwards compatible with
4993 arbitrary rank Kronecker deltas (mostly backwards compatible with
4991 Numeric.identity)
4994 Numeric.identity)
4992
4995
4993 2003-06-03 Fernando Perez <fperez@colorado.edu>
4996 2003-06-03 Fernando Perez <fperez@colorado.edu>
4994
4997
4995 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4998 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4996 arguments passed to magics with spaces, to allow trailing '\' to
4999 arguments passed to magics with spaces, to allow trailing '\' to
4997 work normally (mainly for Windows users).
5000 work normally (mainly for Windows users).
4998
5001
4999 2003-05-29 Fernando Perez <fperez@colorado.edu>
5002 2003-05-29 Fernando Perez <fperez@colorado.edu>
5000
5003
5001 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
5004 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
5002 instead of pydoc.help. This fixes a bizarre behavior where
5005 instead of pydoc.help. This fixes a bizarre behavior where
5003 printing '%s' % locals() would trigger the help system. Now
5006 printing '%s' % locals() would trigger the help system. Now
5004 ipython behaves like normal python does.
5007 ipython behaves like normal python does.
5005
5008
5006 Note that if one does 'from pydoc import help', the bizarre
5009 Note that if one does 'from pydoc import help', the bizarre
5007 behavior returns, but this will also happen in normal python, so
5010 behavior returns, but this will also happen in normal python, so
5008 it's not an ipython bug anymore (it has to do with how pydoc.help
5011 it's not an ipython bug anymore (it has to do with how pydoc.help
5009 is implemented).
5012 is implemented).
5010
5013
5011 2003-05-22 Fernando Perez <fperez@colorado.edu>
5014 2003-05-22 Fernando Perez <fperez@colorado.edu>
5012
5015
5013 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
5016 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
5014 return [] instead of None when nothing matches, also match to end
5017 return [] instead of None when nothing matches, also match to end
5015 of line. Patch by Gary Bishop.
5018 of line. Patch by Gary Bishop.
5016
5019
5017 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
5020 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
5018 protection as before, for files passed on the command line. This
5021 protection as before, for files passed on the command line. This
5019 prevents the CrashHandler from kicking in if user files call into
5022 prevents the CrashHandler from kicking in if user files call into
5020 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
5023 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
5021 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
5024 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
5022
5025
5023 2003-05-20 *** Released version 0.4.0
5026 2003-05-20 *** Released version 0.4.0
5024
5027
5025 2003-05-20 Fernando Perez <fperez@colorado.edu>
5028 2003-05-20 Fernando Perez <fperez@colorado.edu>
5026
5029
5027 * setup.py: added support for manpages. It's a bit hackish b/c of
5030 * setup.py: added support for manpages. It's a bit hackish b/c of
5028 a bug in the way the bdist_rpm distutils target handles gzipped
5031 a bug in the way the bdist_rpm distutils target handles gzipped
5029 manpages, but it works. After a patch by Jack.
5032 manpages, but it works. After a patch by Jack.
5030
5033
5031 2003-05-19 Fernando Perez <fperez@colorado.edu>
5034 2003-05-19 Fernando Perez <fperez@colorado.edu>
5032
5035
5033 * IPython/numutils.py: added a mockup of the kinds module, since
5036 * IPython/numutils.py: added a mockup of the kinds module, since
5034 it was recently removed from Numeric. This way, numutils will
5037 it was recently removed from Numeric. This way, numutils will
5035 work for all users even if they are missing kinds.
5038 work for all users even if they are missing kinds.
5036
5039
5037 * IPython/Magic.py (Magic._ofind): Harden against an inspect
5040 * IPython/Magic.py (Magic._ofind): Harden against an inspect
5038 failure, which can occur with SWIG-wrapped extensions. After a
5041 failure, which can occur with SWIG-wrapped extensions. After a
5039 crash report from Prabhu.
5042 crash report from Prabhu.
5040
5043
5041 2003-05-16 Fernando Perez <fperez@colorado.edu>
5044 2003-05-16 Fernando Perez <fperez@colorado.edu>
5042
5045
5043 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5046 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5044 protect ipython from user code which may call directly
5047 protect ipython from user code which may call directly
5045 sys.excepthook (this looks like an ipython crash to the user, even
5048 sys.excepthook (this looks like an ipython crash to the user, even
5046 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5049 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5047 This is especially important to help users of WxWindows, but may
5050 This is especially important to help users of WxWindows, but may
5048 also be useful in other cases.
5051 also be useful in other cases.
5049
5052
5050 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5053 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5051 an optional tb_offset to be specified, and to preserve exception
5054 an optional tb_offset to be specified, and to preserve exception
5052 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5055 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5053
5056
5054 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5057 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5055
5058
5056 2003-05-15 Fernando Perez <fperez@colorado.edu>
5059 2003-05-15 Fernando Perez <fperez@colorado.edu>
5057
5060
5058 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5061 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5059 installing for a new user under Windows.
5062 installing for a new user under Windows.
5060
5063
5061 2003-05-12 Fernando Perez <fperez@colorado.edu>
5064 2003-05-12 Fernando Perez <fperez@colorado.edu>
5062
5065
5063 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5066 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5064 handler for Emacs comint-based lines. Currently it doesn't do
5067 handler for Emacs comint-based lines. Currently it doesn't do
5065 much (but importantly, it doesn't update the history cache). In
5068 much (but importantly, it doesn't update the history cache). In
5066 the future it may be expanded if Alex needs more functionality
5069 the future it may be expanded if Alex needs more functionality
5067 there.
5070 there.
5068
5071
5069 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5072 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5070 info to crash reports.
5073 info to crash reports.
5071
5074
5072 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5075 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5073 just like Python's -c. Also fixed crash with invalid -color
5076 just like Python's -c. Also fixed crash with invalid -color
5074 option value at startup. Thanks to Will French
5077 option value at startup. Thanks to Will French
5075 <wfrench-AT-bestweb.net> for the bug report.
5078 <wfrench-AT-bestweb.net> for the bug report.
5076
5079
5077 2003-05-09 Fernando Perez <fperez@colorado.edu>
5080 2003-05-09 Fernando Perez <fperez@colorado.edu>
5078
5081
5079 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5082 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5080 to EvalDict (it's a mapping, after all) and simplified its code
5083 to EvalDict (it's a mapping, after all) and simplified its code
5081 quite a bit, after a nice discussion on c.l.py where Gustavo
5084 quite a bit, after a nice discussion on c.l.py where Gustavo
5082 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5085 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5083
5086
5084 2003-04-30 Fernando Perez <fperez@colorado.edu>
5087 2003-04-30 Fernando Perez <fperez@colorado.edu>
5085
5088
5086 * IPython/genutils.py (timings_out): modified it to reduce its
5089 * IPython/genutils.py (timings_out): modified it to reduce its
5087 overhead in the common reps==1 case.
5090 overhead in the common reps==1 case.
5088
5091
5089 2003-04-29 Fernando Perez <fperez@colorado.edu>
5092 2003-04-29 Fernando Perez <fperez@colorado.edu>
5090
5093
5091 * IPython/genutils.py (timings_out): Modified to use the resource
5094 * IPython/genutils.py (timings_out): Modified to use the resource
5092 module, which avoids the wraparound problems of time.clock().
5095 module, which avoids the wraparound problems of time.clock().
5093
5096
5094 2003-04-17 *** Released version 0.2.15pre4
5097 2003-04-17 *** Released version 0.2.15pre4
5095
5098
5096 2003-04-17 Fernando Perez <fperez@colorado.edu>
5099 2003-04-17 Fernando Perez <fperez@colorado.edu>
5097
5100
5098 * setup.py (scriptfiles): Split windows-specific stuff over to a
5101 * setup.py (scriptfiles): Split windows-specific stuff over to a
5099 separate file, in an attempt to have a Windows GUI installer.
5102 separate file, in an attempt to have a Windows GUI installer.
5100 That didn't work, but part of the groundwork is done.
5103 That didn't work, but part of the groundwork is done.
5101
5104
5102 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5105 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5103 indent/unindent with 4 spaces. Particularly useful in combination
5106 indent/unindent with 4 spaces. Particularly useful in combination
5104 with the new auto-indent option.
5107 with the new auto-indent option.
5105
5108
5106 2003-04-16 Fernando Perez <fperez@colorado.edu>
5109 2003-04-16 Fernando Perez <fperez@colorado.edu>
5107
5110
5108 * IPython/Magic.py: various replacements of self.rc for
5111 * IPython/Magic.py: various replacements of self.rc for
5109 self.shell.rc. A lot more remains to be done to fully disentangle
5112 self.shell.rc. A lot more remains to be done to fully disentangle
5110 this class from the main Shell class.
5113 this class from the main Shell class.
5111
5114
5112 * IPython/GnuplotRuntime.py: added checks for mouse support so
5115 * IPython/GnuplotRuntime.py: added checks for mouse support so
5113 that we don't try to enable it if the current gnuplot doesn't
5116 that we don't try to enable it if the current gnuplot doesn't
5114 really support it. Also added checks so that we don't try to
5117 really support it. Also added checks so that we don't try to
5115 enable persist under Windows (where Gnuplot doesn't recognize the
5118 enable persist under Windows (where Gnuplot doesn't recognize the
5116 option).
5119 option).
5117
5120
5118 * IPython/iplib.py (InteractiveShell.interact): Added optional
5121 * IPython/iplib.py (InteractiveShell.interact): Added optional
5119 auto-indenting code, after a patch by King C. Shu
5122 auto-indenting code, after a patch by King C. Shu
5120 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5123 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5121 get along well with pasting indented code. If I ever figure out
5124 get along well with pasting indented code. If I ever figure out
5122 how to make that part go well, it will become on by default.
5125 how to make that part go well, it will become on by default.
5123
5126
5124 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5127 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5125 crash ipython if there was an unmatched '%' in the user's prompt
5128 crash ipython if there was an unmatched '%' in the user's prompt
5126 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5129 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5127
5130
5128 * IPython/iplib.py (InteractiveShell.interact): removed the
5131 * IPython/iplib.py (InteractiveShell.interact): removed the
5129 ability to ask the user whether he wants to crash or not at the
5132 ability to ask the user whether he wants to crash or not at the
5130 'last line' exception handler. Calling functions at that point
5133 'last line' exception handler. Calling functions at that point
5131 changes the stack, and the error reports would have incorrect
5134 changes the stack, and the error reports would have incorrect
5132 tracebacks.
5135 tracebacks.
5133
5136
5134 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5137 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5135 pass through a peger a pretty-printed form of any object. After a
5138 pass through a peger a pretty-printed form of any object. After a
5136 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5139 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5137
5140
5138 2003-04-14 Fernando Perez <fperez@colorado.edu>
5141 2003-04-14 Fernando Perez <fperez@colorado.edu>
5139
5142
5140 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5143 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5141 all files in ~ would be modified at first install (instead of
5144 all files in ~ would be modified at first install (instead of
5142 ~/.ipython). This could be potentially disastrous, as the
5145 ~/.ipython). This could be potentially disastrous, as the
5143 modification (make line-endings native) could damage binary files.
5146 modification (make line-endings native) could damage binary files.
5144
5147
5145 2003-04-10 Fernando Perez <fperez@colorado.edu>
5148 2003-04-10 Fernando Perez <fperez@colorado.edu>
5146
5149
5147 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5150 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5148 handle only lines which are invalid python. This now means that
5151 handle only lines which are invalid python. This now means that
5149 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5152 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5150 for the bug report.
5153 for the bug report.
5151
5154
5152 2003-04-01 Fernando Perez <fperez@colorado.edu>
5155 2003-04-01 Fernando Perez <fperez@colorado.edu>
5153
5156
5154 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5157 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5155 where failing to set sys.last_traceback would crash pdb.pm().
5158 where failing to set sys.last_traceback would crash pdb.pm().
5156 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5159 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5157 report.
5160 report.
5158
5161
5159 2003-03-25 Fernando Perez <fperez@colorado.edu>
5162 2003-03-25 Fernando Perez <fperez@colorado.edu>
5160
5163
5161 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5164 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5162 before printing it (it had a lot of spurious blank lines at the
5165 before printing it (it had a lot of spurious blank lines at the
5163 end).
5166 end).
5164
5167
5165 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5168 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5166 output would be sent 21 times! Obviously people don't use this
5169 output would be sent 21 times! Obviously people don't use this
5167 too often, or I would have heard about it.
5170 too often, or I would have heard about it.
5168
5171
5169 2003-03-24 Fernando Perez <fperez@colorado.edu>
5172 2003-03-24 Fernando Perez <fperez@colorado.edu>
5170
5173
5171 * setup.py (scriptfiles): renamed the data_files parameter from
5174 * setup.py (scriptfiles): renamed the data_files parameter from
5172 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5175 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5173 for the patch.
5176 for the patch.
5174
5177
5175 2003-03-20 Fernando Perez <fperez@colorado.edu>
5178 2003-03-20 Fernando Perez <fperez@colorado.edu>
5176
5179
5177 * IPython/genutils.py (error): added error() and fatal()
5180 * IPython/genutils.py (error): added error() and fatal()
5178 functions.
5181 functions.
5179
5182
5180 2003-03-18 *** Released version 0.2.15pre3
5183 2003-03-18 *** Released version 0.2.15pre3
5181
5184
5182 2003-03-18 Fernando Perez <fperez@colorado.edu>
5185 2003-03-18 Fernando Perez <fperez@colorado.edu>
5183
5186
5184 * setupext/install_data_ext.py
5187 * setupext/install_data_ext.py
5185 (install_data_ext.initialize_options): Class contributed by Jack
5188 (install_data_ext.initialize_options): Class contributed by Jack
5186 Moffit for fixing the old distutils hack. He is sending this to
5189 Moffit for fixing the old distutils hack. He is sending this to
5187 the distutils folks so in the future we may not need it as a
5190 the distutils folks so in the future we may not need it as a
5188 private fix.
5191 private fix.
5189
5192
5190 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5193 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5191 changes for Debian packaging. See his patch for full details.
5194 changes for Debian packaging. See his patch for full details.
5192 The old distutils hack of making the ipythonrc* files carry a
5195 The old distutils hack of making the ipythonrc* files carry a
5193 bogus .py extension is gone, at last. Examples were moved to a
5196 bogus .py extension is gone, at last. Examples were moved to a
5194 separate subdir under doc/, and the separate executable scripts
5197 separate subdir under doc/, and the separate executable scripts
5195 now live in their own directory. Overall a great cleanup. The
5198 now live in their own directory. Overall a great cleanup. The
5196 manual was updated to use the new files, and setup.py has been
5199 manual was updated to use the new files, and setup.py has been
5197 fixed for this setup.
5200 fixed for this setup.
5198
5201
5199 * IPython/PyColorize.py (Parser.usage): made non-executable and
5202 * IPython/PyColorize.py (Parser.usage): made non-executable and
5200 created a pycolor wrapper around it to be included as a script.
5203 created a pycolor wrapper around it to be included as a script.
5201
5204
5202 2003-03-12 *** Released version 0.2.15pre2
5205 2003-03-12 *** Released version 0.2.15pre2
5203
5206
5204 2003-03-12 Fernando Perez <fperez@colorado.edu>
5207 2003-03-12 Fernando Perez <fperez@colorado.edu>
5205
5208
5206 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5209 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5207 long-standing problem with garbage characters in some terminals.
5210 long-standing problem with garbage characters in some terminals.
5208 The issue was really that the \001 and \002 escapes must _only_ be
5211 The issue was really that the \001 and \002 escapes must _only_ be
5209 passed to input prompts (which call readline), but _never_ to
5212 passed to input prompts (which call readline), but _never_ to
5210 normal text to be printed on screen. I changed ColorANSI to have
5213 normal text to be printed on screen. I changed ColorANSI to have
5211 two classes: TermColors and InputTermColors, each with the
5214 two classes: TermColors and InputTermColors, each with the
5212 appropriate escapes for input prompts or normal text. The code in
5215 appropriate escapes for input prompts or normal text. The code in
5213 Prompts.py got slightly more complicated, but this very old and
5216 Prompts.py got slightly more complicated, but this very old and
5214 annoying bug is finally fixed.
5217 annoying bug is finally fixed.
5215
5218
5216 All the credit for nailing down the real origin of this problem
5219 All the credit for nailing down the real origin of this problem
5217 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5220 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5218 *Many* thanks to him for spending quite a bit of effort on this.
5221 *Many* thanks to him for spending quite a bit of effort on this.
5219
5222
5220 2003-03-05 *** Released version 0.2.15pre1
5223 2003-03-05 *** Released version 0.2.15pre1
5221
5224
5222 2003-03-03 Fernando Perez <fperez@colorado.edu>
5225 2003-03-03 Fernando Perez <fperez@colorado.edu>
5223
5226
5224 * IPython/FakeModule.py: Moved the former _FakeModule to a
5227 * IPython/FakeModule.py: Moved the former _FakeModule to a
5225 separate file, because it's also needed by Magic (to fix a similar
5228 separate file, because it's also needed by Magic (to fix a similar
5226 pickle-related issue in @run).
5229 pickle-related issue in @run).
5227
5230
5228 2003-03-02 Fernando Perez <fperez@colorado.edu>
5231 2003-03-02 Fernando Perez <fperez@colorado.edu>
5229
5232
5230 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5233 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5231 the autocall option at runtime.
5234 the autocall option at runtime.
5232 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5235 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5233 across Magic.py to start separating Magic from InteractiveShell.
5236 across Magic.py to start separating Magic from InteractiveShell.
5234 (Magic._ofind): Fixed to return proper namespace for dotted
5237 (Magic._ofind): Fixed to return proper namespace for dotted
5235 names. Before, a dotted name would always return 'not currently
5238 names. Before, a dotted name would always return 'not currently
5236 defined', because it would find the 'parent'. s.x would be found,
5239 defined', because it would find the 'parent'. s.x would be found,
5237 but since 'x' isn't defined by itself, it would get confused.
5240 but since 'x' isn't defined by itself, it would get confused.
5238 (Magic.magic_run): Fixed pickling problems reported by Ralf
5241 (Magic.magic_run): Fixed pickling problems reported by Ralf
5239 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5242 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5240 that I'd used when Mike Heeter reported similar issues at the
5243 that I'd used when Mike Heeter reported similar issues at the
5241 top-level, but now for @run. It boils down to injecting the
5244 top-level, but now for @run. It boils down to injecting the
5242 namespace where code is being executed with something that looks
5245 namespace where code is being executed with something that looks
5243 enough like a module to fool pickle.dump(). Since a pickle stores
5246 enough like a module to fool pickle.dump(). Since a pickle stores
5244 a named reference to the importing module, we need this for
5247 a named reference to the importing module, we need this for
5245 pickles to save something sensible.
5248 pickles to save something sensible.
5246
5249
5247 * IPython/ipmaker.py (make_IPython): added an autocall option.
5250 * IPython/ipmaker.py (make_IPython): added an autocall option.
5248
5251
5249 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5252 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5250 the auto-eval code. Now autocalling is an option, and the code is
5253 the auto-eval code. Now autocalling is an option, and the code is
5251 also vastly safer. There is no more eval() involved at all.
5254 also vastly safer. There is no more eval() involved at all.
5252
5255
5253 2003-03-01 Fernando Perez <fperez@colorado.edu>
5256 2003-03-01 Fernando Perez <fperez@colorado.edu>
5254
5257
5255 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5258 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5256 dict with named keys instead of a tuple.
5259 dict with named keys instead of a tuple.
5257
5260
5258 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5261 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5259
5262
5260 * setup.py (make_shortcut): Fixed message about directories
5263 * setup.py (make_shortcut): Fixed message about directories
5261 created during Windows installation (the directories were ok, just
5264 created during Windows installation (the directories were ok, just
5262 the printed message was misleading). Thanks to Chris Liechti
5265 the printed message was misleading). Thanks to Chris Liechti
5263 <cliechti-AT-gmx.net> for the heads up.
5266 <cliechti-AT-gmx.net> for the heads up.
5264
5267
5265 2003-02-21 Fernando Perez <fperez@colorado.edu>
5268 2003-02-21 Fernando Perez <fperez@colorado.edu>
5266
5269
5267 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5270 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5268 of ValueError exception when checking for auto-execution. This
5271 of ValueError exception when checking for auto-execution. This
5269 one is raised by things like Numeric arrays arr.flat when the
5272 one is raised by things like Numeric arrays arr.flat when the
5270 array is non-contiguous.
5273 array is non-contiguous.
5271
5274
5272 2003-01-31 Fernando Perez <fperez@colorado.edu>
5275 2003-01-31 Fernando Perez <fperez@colorado.edu>
5273
5276
5274 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5277 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5275 not return any value at all (even though the command would get
5278 not return any value at all (even though the command would get
5276 executed).
5279 executed).
5277 (xsys): Flush stdout right after printing the command to ensure
5280 (xsys): Flush stdout right after printing the command to ensure
5278 proper ordering of commands and command output in the total
5281 proper ordering of commands and command output in the total
5279 output.
5282 output.
5280 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5283 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5281 system/getoutput as defaults. The old ones are kept for
5284 system/getoutput as defaults. The old ones are kept for
5282 compatibility reasons, so no code which uses this library needs
5285 compatibility reasons, so no code which uses this library needs
5283 changing.
5286 changing.
5284
5287
5285 2003-01-27 *** Released version 0.2.14
5288 2003-01-27 *** Released version 0.2.14
5286
5289
5287 2003-01-25 Fernando Perez <fperez@colorado.edu>
5290 2003-01-25 Fernando Perez <fperez@colorado.edu>
5288
5291
5289 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5292 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5290 functions defined in previous edit sessions could not be re-edited
5293 functions defined in previous edit sessions could not be re-edited
5291 (because the temp files were immediately removed). Now temp files
5294 (because the temp files were immediately removed). Now temp files
5292 are removed only at IPython's exit.
5295 are removed only at IPython's exit.
5293 (Magic.magic_run): Improved @run to perform shell-like expansions
5296 (Magic.magic_run): Improved @run to perform shell-like expansions
5294 on its arguments (~users and $VARS). With this, @run becomes more
5297 on its arguments (~users and $VARS). With this, @run becomes more
5295 like a normal command-line.
5298 like a normal command-line.
5296
5299
5297 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5300 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5298 bugs related to embedding and cleaned up that code. A fairly
5301 bugs related to embedding and cleaned up that code. A fairly
5299 important one was the impossibility to access the global namespace
5302 important one was the impossibility to access the global namespace
5300 through the embedded IPython (only local variables were visible).
5303 through the embedded IPython (only local variables were visible).
5301
5304
5302 2003-01-14 Fernando Perez <fperez@colorado.edu>
5305 2003-01-14 Fernando Perez <fperez@colorado.edu>
5303
5306
5304 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5307 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5305 auto-calling to be a bit more conservative. Now it doesn't get
5308 auto-calling to be a bit more conservative. Now it doesn't get
5306 triggered if any of '!=()<>' are in the rest of the input line, to
5309 triggered if any of '!=()<>' are in the rest of the input line, to
5307 allow comparing callables. Thanks to Alex for the heads up.
5310 allow comparing callables. Thanks to Alex for the heads up.
5308
5311
5309 2003-01-07 Fernando Perez <fperez@colorado.edu>
5312 2003-01-07 Fernando Perez <fperez@colorado.edu>
5310
5313
5311 * IPython/genutils.py (page): fixed estimation of the number of
5314 * IPython/genutils.py (page): fixed estimation of the number of
5312 lines in a string to be paged to simply count newlines. This
5315 lines in a string to be paged to simply count newlines. This
5313 prevents over-guessing due to embedded escape sequences. A better
5316 prevents over-guessing due to embedded escape sequences. A better
5314 long-term solution would involve stripping out the control chars
5317 long-term solution would involve stripping out the control chars
5315 for the count, but it's potentially so expensive I just don't
5318 for the count, but it's potentially so expensive I just don't
5316 think it's worth doing.
5319 think it's worth doing.
5317
5320
5318 2002-12-19 *** Released version 0.2.14pre50
5321 2002-12-19 *** Released version 0.2.14pre50
5319
5322
5320 2002-12-19 Fernando Perez <fperez@colorado.edu>
5323 2002-12-19 Fernando Perez <fperez@colorado.edu>
5321
5324
5322 * tools/release (version): Changed release scripts to inform
5325 * tools/release (version): Changed release scripts to inform
5323 Andrea and build a NEWS file with a list of recent changes.
5326 Andrea and build a NEWS file with a list of recent changes.
5324
5327
5325 * IPython/ColorANSI.py (__all__): changed terminal detection
5328 * IPython/ColorANSI.py (__all__): changed terminal detection
5326 code. Seems to work better for xterms without breaking
5329 code. Seems to work better for xterms without breaking
5327 konsole. Will need more testing to determine if WinXP and Mac OSX
5330 konsole. Will need more testing to determine if WinXP and Mac OSX
5328 also work ok.
5331 also work ok.
5329
5332
5330 2002-12-18 *** Released version 0.2.14pre49
5333 2002-12-18 *** Released version 0.2.14pre49
5331
5334
5332 2002-12-18 Fernando Perez <fperez@colorado.edu>
5335 2002-12-18 Fernando Perez <fperez@colorado.edu>
5333
5336
5334 * Docs: added new info about Mac OSX, from Andrea.
5337 * Docs: added new info about Mac OSX, from Andrea.
5335
5338
5336 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5339 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5337 allow direct plotting of python strings whose format is the same
5340 allow direct plotting of python strings whose format is the same
5338 of gnuplot data files.
5341 of gnuplot data files.
5339
5342
5340 2002-12-16 Fernando Perez <fperez@colorado.edu>
5343 2002-12-16 Fernando Perez <fperez@colorado.edu>
5341
5344
5342 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5345 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5343 value of exit question to be acknowledged.
5346 value of exit question to be acknowledged.
5344
5347
5345 2002-12-03 Fernando Perez <fperez@colorado.edu>
5348 2002-12-03 Fernando Perez <fperez@colorado.edu>
5346
5349
5347 * IPython/ipmaker.py: removed generators, which had been added
5350 * IPython/ipmaker.py: removed generators, which had been added
5348 by mistake in an earlier debugging run. This was causing trouble
5351 by mistake in an earlier debugging run. This was causing trouble
5349 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5352 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5350 for pointing this out.
5353 for pointing this out.
5351
5354
5352 2002-11-17 Fernando Perez <fperez@colorado.edu>
5355 2002-11-17 Fernando Perez <fperez@colorado.edu>
5353
5356
5354 * Manual: updated the Gnuplot section.
5357 * Manual: updated the Gnuplot section.
5355
5358
5356 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5359 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5357 a much better split of what goes in Runtime and what goes in
5360 a much better split of what goes in Runtime and what goes in
5358 Interactive.
5361 Interactive.
5359
5362
5360 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5363 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5361 being imported from iplib.
5364 being imported from iplib.
5362
5365
5363 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5366 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5364 for command-passing. Now the global Gnuplot instance is called
5367 for command-passing. Now the global Gnuplot instance is called
5365 'gp' instead of 'g', which was really a far too fragile and
5368 'gp' instead of 'g', which was really a far too fragile and
5366 common name.
5369 common name.
5367
5370
5368 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5371 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5369 bounding boxes generated by Gnuplot for square plots.
5372 bounding boxes generated by Gnuplot for square plots.
5370
5373
5371 * IPython/genutils.py (popkey): new function added. I should
5374 * IPython/genutils.py (popkey): new function added. I should
5372 suggest this on c.l.py as a dict method, it seems useful.
5375 suggest this on c.l.py as a dict method, it seems useful.
5373
5376
5374 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5377 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5375 to transparently handle PostScript generation. MUCH better than
5378 to transparently handle PostScript generation. MUCH better than
5376 the previous plot_eps/replot_eps (which I removed now). The code
5379 the previous plot_eps/replot_eps (which I removed now). The code
5377 is also fairly clean and well documented now (including
5380 is also fairly clean and well documented now (including
5378 docstrings).
5381 docstrings).
5379
5382
5380 2002-11-13 Fernando Perez <fperez@colorado.edu>
5383 2002-11-13 Fernando Perez <fperez@colorado.edu>
5381
5384
5382 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5385 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5383 (inconsistent with options).
5386 (inconsistent with options).
5384
5387
5385 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5388 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5386 manually disabled, I don't know why. Fixed it.
5389 manually disabled, I don't know why. Fixed it.
5387 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5390 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5388 eps output.
5391 eps output.
5389
5392
5390 2002-11-12 Fernando Perez <fperez@colorado.edu>
5393 2002-11-12 Fernando Perez <fperez@colorado.edu>
5391
5394
5392 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5395 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5393 don't propagate up to caller. Fixes crash reported by François
5396 don't propagate up to caller. Fixes crash reported by François
5394 Pinard.
5397 Pinard.
5395
5398
5396 2002-11-09 Fernando Perez <fperez@colorado.edu>
5399 2002-11-09 Fernando Perez <fperez@colorado.edu>
5397
5400
5398 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5401 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5399 history file for new users.
5402 history file for new users.
5400 (make_IPython): fixed bug where initial install would leave the
5403 (make_IPython): fixed bug where initial install would leave the
5401 user running in the .ipython dir.
5404 user running in the .ipython dir.
5402 (make_IPython): fixed bug where config dir .ipython would be
5405 (make_IPython): fixed bug where config dir .ipython would be
5403 created regardless of the given -ipythondir option. Thanks to Cory
5406 created regardless of the given -ipythondir option. Thanks to Cory
5404 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5407 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5405
5408
5406 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5409 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5407 type confirmations. Will need to use it in all of IPython's code
5410 type confirmations. Will need to use it in all of IPython's code
5408 consistently.
5411 consistently.
5409
5412
5410 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5413 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5411 context to print 31 lines instead of the default 5. This will make
5414 context to print 31 lines instead of the default 5. This will make
5412 the crash reports extremely detailed in case the problem is in
5415 the crash reports extremely detailed in case the problem is in
5413 libraries I don't have access to.
5416 libraries I don't have access to.
5414
5417
5415 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5418 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5416 line of defense' code to still crash, but giving users fair
5419 line of defense' code to still crash, but giving users fair
5417 warning. I don't want internal errors to go unreported: if there's
5420 warning. I don't want internal errors to go unreported: if there's
5418 an internal problem, IPython should crash and generate a full
5421 an internal problem, IPython should crash and generate a full
5419 report.
5422 report.
5420
5423
5421 2002-11-08 Fernando Perez <fperez@colorado.edu>
5424 2002-11-08 Fernando Perez <fperez@colorado.edu>
5422
5425
5423 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5426 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5424 otherwise uncaught exceptions which can appear if people set
5427 otherwise uncaught exceptions which can appear if people set
5425 sys.stdout to something badly broken. Thanks to a crash report
5428 sys.stdout to something badly broken. Thanks to a crash report
5426 from henni-AT-mail.brainbot.com.
5429 from henni-AT-mail.brainbot.com.
5427
5430
5428 2002-11-04 Fernando Perez <fperez@colorado.edu>
5431 2002-11-04 Fernando Perez <fperez@colorado.edu>
5429
5432
5430 * IPython/iplib.py (InteractiveShell.interact): added
5433 * IPython/iplib.py (InteractiveShell.interact): added
5431 __IPYTHON__active to the builtins. It's a flag which goes on when
5434 __IPYTHON__active to the builtins. It's a flag which goes on when
5432 the interaction starts and goes off again when it stops. This
5435 the interaction starts and goes off again when it stops. This
5433 allows embedding code to detect being inside IPython. Before this
5436 allows embedding code to detect being inside IPython. Before this
5434 was done via __IPYTHON__, but that only shows that an IPython
5437 was done via __IPYTHON__, but that only shows that an IPython
5435 instance has been created.
5438 instance has been created.
5436
5439
5437 * IPython/Magic.py (Magic.magic_env): I realized that in a
5440 * IPython/Magic.py (Magic.magic_env): I realized that in a
5438 UserDict, instance.data holds the data as a normal dict. So I
5441 UserDict, instance.data holds the data as a normal dict. So I
5439 modified @env to return os.environ.data instead of rebuilding a
5442 modified @env to return os.environ.data instead of rebuilding a
5440 dict by hand.
5443 dict by hand.
5441
5444
5442 2002-11-02 Fernando Perez <fperez@colorado.edu>
5445 2002-11-02 Fernando Perez <fperez@colorado.edu>
5443
5446
5444 * IPython/genutils.py (warn): changed so that level 1 prints no
5447 * IPython/genutils.py (warn): changed so that level 1 prints no
5445 header. Level 2 is now the default (with 'WARNING' header, as
5448 header. Level 2 is now the default (with 'WARNING' header, as
5446 before). I think I tracked all places where changes were needed in
5449 before). I think I tracked all places where changes were needed in
5447 IPython, but outside code using the old level numbering may have
5450 IPython, but outside code using the old level numbering may have
5448 broken.
5451 broken.
5449
5452
5450 * IPython/iplib.py (InteractiveShell.runcode): added this to
5453 * IPython/iplib.py (InteractiveShell.runcode): added this to
5451 handle the tracebacks in SystemExit traps correctly. The previous
5454 handle the tracebacks in SystemExit traps correctly. The previous
5452 code (through interact) was printing more of the stack than
5455 code (through interact) was printing more of the stack than
5453 necessary, showing IPython internal code to the user.
5456 necessary, showing IPython internal code to the user.
5454
5457
5455 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5458 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5456 default. Now that the default at the confirmation prompt is yes,
5459 default. Now that the default at the confirmation prompt is yes,
5457 it's not so intrusive. François' argument that ipython sessions
5460 it's not so intrusive. François' argument that ipython sessions
5458 tend to be complex enough not to lose them from an accidental C-d,
5461 tend to be complex enough not to lose them from an accidental C-d,
5459 is a valid one.
5462 is a valid one.
5460
5463
5461 * IPython/iplib.py (InteractiveShell.interact): added a
5464 * IPython/iplib.py (InteractiveShell.interact): added a
5462 showtraceback() call to the SystemExit trap, and modified the exit
5465 showtraceback() call to the SystemExit trap, and modified the exit
5463 confirmation to have yes as the default.
5466 confirmation to have yes as the default.
5464
5467
5465 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5468 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5466 this file. It's been gone from the code for a long time, this was
5469 this file. It's been gone from the code for a long time, this was
5467 simply leftover junk.
5470 simply leftover junk.
5468
5471
5469 2002-11-01 Fernando Perez <fperez@colorado.edu>
5472 2002-11-01 Fernando Perez <fperez@colorado.edu>
5470
5473
5471 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5474 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5472 added. If set, IPython now traps EOF and asks for
5475 added. If set, IPython now traps EOF and asks for
5473 confirmation. After a request by François Pinard.
5476 confirmation. After a request by François Pinard.
5474
5477
5475 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5478 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5476 of @abort, and with a new (better) mechanism for handling the
5479 of @abort, and with a new (better) mechanism for handling the
5477 exceptions.
5480 exceptions.
5478
5481
5479 2002-10-27 Fernando Perez <fperez@colorado.edu>
5482 2002-10-27 Fernando Perez <fperez@colorado.edu>
5480
5483
5481 * IPython/usage.py (__doc__): updated the --help information and
5484 * IPython/usage.py (__doc__): updated the --help information and
5482 the ipythonrc file to indicate that -log generates
5485 the ipythonrc file to indicate that -log generates
5483 ./ipython.log. Also fixed the corresponding info in @logstart.
5486 ./ipython.log. Also fixed the corresponding info in @logstart.
5484 This and several other fixes in the manuals thanks to reports by
5487 This and several other fixes in the manuals thanks to reports by
5485 François Pinard <pinard-AT-iro.umontreal.ca>.
5488 François Pinard <pinard-AT-iro.umontreal.ca>.
5486
5489
5487 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5490 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5488 refer to @logstart (instead of @log, which doesn't exist).
5491 refer to @logstart (instead of @log, which doesn't exist).
5489
5492
5490 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5493 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5491 AttributeError crash. Thanks to Christopher Armstrong
5494 AttributeError crash. Thanks to Christopher Armstrong
5492 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5495 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5493 introduced recently (in 0.2.14pre37) with the fix to the eval
5496 introduced recently (in 0.2.14pre37) with the fix to the eval
5494 problem mentioned below.
5497 problem mentioned below.
5495
5498
5496 2002-10-17 Fernando Perez <fperez@colorado.edu>
5499 2002-10-17 Fernando Perez <fperez@colorado.edu>
5497
5500
5498 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5501 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5499 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5502 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5500
5503
5501 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5504 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5502 this function to fix a problem reported by Alex Schmolck. He saw
5505 this function to fix a problem reported by Alex Schmolck. He saw
5503 it with list comprehensions and generators, which were getting
5506 it with list comprehensions and generators, which were getting
5504 called twice. The real problem was an 'eval' call in testing for
5507 called twice. The real problem was an 'eval' call in testing for
5505 automagic which was evaluating the input line silently.
5508 automagic which was evaluating the input line silently.
5506
5509
5507 This is a potentially very nasty bug, if the input has side
5510 This is a potentially very nasty bug, if the input has side
5508 effects which must not be repeated. The code is much cleaner now,
5511 effects which must not be repeated. The code is much cleaner now,
5509 without any blanket 'except' left and with a regexp test for
5512 without any blanket 'except' left and with a regexp test for
5510 actual function names.
5513 actual function names.
5511
5514
5512 But an eval remains, which I'm not fully comfortable with. I just
5515 But an eval remains, which I'm not fully comfortable with. I just
5513 don't know how to find out if an expression could be a callable in
5516 don't know how to find out if an expression could be a callable in
5514 the user's namespace without doing an eval on the string. However
5517 the user's namespace without doing an eval on the string. However
5515 that string is now much more strictly checked so that no code
5518 that string is now much more strictly checked so that no code
5516 slips by, so the eval should only happen for things that can
5519 slips by, so the eval should only happen for things that can
5517 really be only function/method names.
5520 really be only function/method names.
5518
5521
5519 2002-10-15 Fernando Perez <fperez@colorado.edu>
5522 2002-10-15 Fernando Perez <fperez@colorado.edu>
5520
5523
5521 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5524 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5522 OSX information to main manual, removed README_Mac_OSX file from
5525 OSX information to main manual, removed README_Mac_OSX file from
5523 distribution. Also updated credits for recent additions.
5526 distribution. Also updated credits for recent additions.
5524
5527
5525 2002-10-10 Fernando Perez <fperez@colorado.edu>
5528 2002-10-10 Fernando Perez <fperez@colorado.edu>
5526
5529
5527 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5530 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5528 terminal-related issues. Many thanks to Andrea Riciputi
5531 terminal-related issues. Many thanks to Andrea Riciputi
5529 <andrea.riciputi-AT-libero.it> for writing it.
5532 <andrea.riciputi-AT-libero.it> for writing it.
5530
5533
5531 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5534 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5532 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5535 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5533
5536
5534 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5537 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5535 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5538 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5536 <syver-en-AT-online.no> who both submitted patches for this problem.
5539 <syver-en-AT-online.no> who both submitted patches for this problem.
5537
5540
5538 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5541 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5539 global embedding to make sure that things don't overwrite user
5542 global embedding to make sure that things don't overwrite user
5540 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5543 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5541
5544
5542 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5545 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5543 compatibility. Thanks to Hayden Callow
5546 compatibility. Thanks to Hayden Callow
5544 <h.callow-AT-elec.canterbury.ac.nz>
5547 <h.callow-AT-elec.canterbury.ac.nz>
5545
5548
5546 2002-10-04 Fernando Perez <fperez@colorado.edu>
5549 2002-10-04 Fernando Perez <fperez@colorado.edu>
5547
5550
5548 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5551 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5549 Gnuplot.File objects.
5552 Gnuplot.File objects.
5550
5553
5551 2002-07-23 Fernando Perez <fperez@colorado.edu>
5554 2002-07-23 Fernando Perez <fperez@colorado.edu>
5552
5555
5553 * IPython/genutils.py (timing): Added timings() and timing() for
5556 * IPython/genutils.py (timing): Added timings() and timing() for
5554 quick access to the most commonly needed data, the execution
5557 quick access to the most commonly needed data, the execution
5555 times. Old timing() renamed to timings_out().
5558 times. Old timing() renamed to timings_out().
5556
5559
5557 2002-07-18 Fernando Perez <fperez@colorado.edu>
5560 2002-07-18 Fernando Perez <fperez@colorado.edu>
5558
5561
5559 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5562 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5560 bug with nested instances disrupting the parent's tab completion.
5563 bug with nested instances disrupting the parent's tab completion.
5561
5564
5562 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5565 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5563 all_completions code to begin the emacs integration.
5566 all_completions code to begin the emacs integration.
5564
5567
5565 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5568 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5566 argument to allow titling individual arrays when plotting.
5569 argument to allow titling individual arrays when plotting.
5567
5570
5568 2002-07-15 Fernando Perez <fperez@colorado.edu>
5571 2002-07-15 Fernando Perez <fperez@colorado.edu>
5569
5572
5570 * setup.py (make_shortcut): changed to retrieve the value of
5573 * setup.py (make_shortcut): changed to retrieve the value of
5571 'Program Files' directory from the registry (this value changes in
5574 'Program Files' directory from the registry (this value changes in
5572 non-english versions of Windows). Thanks to Thomas Fanslau
5575 non-english versions of Windows). Thanks to Thomas Fanslau
5573 <tfanslau-AT-gmx.de> for the report.
5576 <tfanslau-AT-gmx.de> for the report.
5574
5577
5575 2002-07-10 Fernando Perez <fperez@colorado.edu>
5578 2002-07-10 Fernando Perez <fperez@colorado.edu>
5576
5579
5577 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5580 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5578 a bug in pdb, which crashes if a line with only whitespace is
5581 a bug in pdb, which crashes if a line with only whitespace is
5579 entered. Bug report submitted to sourceforge.
5582 entered. Bug report submitted to sourceforge.
5580
5583
5581 2002-07-09 Fernando Perez <fperez@colorado.edu>
5584 2002-07-09 Fernando Perez <fperez@colorado.edu>
5582
5585
5583 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5586 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5584 reporting exceptions (it's a bug in inspect.py, I just set a
5587 reporting exceptions (it's a bug in inspect.py, I just set a
5585 workaround).
5588 workaround).
5586
5589
5587 2002-07-08 Fernando Perez <fperez@colorado.edu>
5590 2002-07-08 Fernando Perez <fperez@colorado.edu>
5588
5591
5589 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5592 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5590 __IPYTHON__ in __builtins__ to show up in user_ns.
5593 __IPYTHON__ in __builtins__ to show up in user_ns.
5591
5594
5592 2002-07-03 Fernando Perez <fperez@colorado.edu>
5595 2002-07-03 Fernando Perez <fperez@colorado.edu>
5593
5596
5594 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5597 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5595 name from @gp_set_instance to @gp_set_default.
5598 name from @gp_set_instance to @gp_set_default.
5596
5599
5597 * IPython/ipmaker.py (make_IPython): default editor value set to
5600 * IPython/ipmaker.py (make_IPython): default editor value set to
5598 '0' (a string), to match the rc file. Otherwise will crash when
5601 '0' (a string), to match the rc file. Otherwise will crash when
5599 .strip() is called on it.
5602 .strip() is called on it.
5600
5603
5601
5604
5602 2002-06-28 Fernando Perez <fperez@colorado.edu>
5605 2002-06-28 Fernando Perez <fperez@colorado.edu>
5603
5606
5604 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5607 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5605 of files in current directory when a file is executed via
5608 of files in current directory when a file is executed via
5606 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5609 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5607
5610
5608 * setup.py (manfiles): fix for rpm builds, submitted by RA
5611 * setup.py (manfiles): fix for rpm builds, submitted by RA
5609 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5612 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5610
5613
5611 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5614 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5612 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5615 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5613 string!). A. Schmolck caught this one.
5616 string!). A. Schmolck caught this one.
5614
5617
5615 2002-06-27 Fernando Perez <fperez@colorado.edu>
5618 2002-06-27 Fernando Perez <fperez@colorado.edu>
5616
5619
5617 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5620 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5618 defined files at the cmd line. __name__ wasn't being set to
5621 defined files at the cmd line. __name__ wasn't being set to
5619 __main__.
5622 __main__.
5620
5623
5621 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5624 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5622 regular lists and tuples besides Numeric arrays.
5625 regular lists and tuples besides Numeric arrays.
5623
5626
5624 * IPython/Prompts.py (CachedOutput.__call__): Added output
5627 * IPython/Prompts.py (CachedOutput.__call__): Added output
5625 supression for input ending with ';'. Similar to Mathematica and
5628 supression for input ending with ';'. Similar to Mathematica and
5626 Matlab. The _* vars and Out[] list are still updated, just like
5629 Matlab. The _* vars and Out[] list are still updated, just like
5627 Mathematica behaves.
5630 Mathematica behaves.
5628
5631
5629 2002-06-25 Fernando Perez <fperez@colorado.edu>
5632 2002-06-25 Fernando Perez <fperez@colorado.edu>
5630
5633
5631 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5634 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5632 .ini extensions for profiels under Windows.
5635 .ini extensions for profiels under Windows.
5633
5636
5634 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5637 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5635 string form. Fix contributed by Alexander Schmolck
5638 string form. Fix contributed by Alexander Schmolck
5636 <a.schmolck-AT-gmx.net>
5639 <a.schmolck-AT-gmx.net>
5637
5640
5638 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5641 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5639 pre-configured Gnuplot instance.
5642 pre-configured Gnuplot instance.
5640
5643
5641 2002-06-21 Fernando Perez <fperez@colorado.edu>
5644 2002-06-21 Fernando Perez <fperez@colorado.edu>
5642
5645
5643 * IPython/numutils.py (exp_safe): new function, works around the
5646 * IPython/numutils.py (exp_safe): new function, works around the
5644 underflow problems in Numeric.
5647 underflow problems in Numeric.
5645 (log2): New fn. Safe log in base 2: returns exact integer answer
5648 (log2): New fn. Safe log in base 2: returns exact integer answer
5646 for exact integer powers of 2.
5649 for exact integer powers of 2.
5647
5650
5648 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5651 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5649 properly.
5652 properly.
5650
5653
5651 2002-06-20 Fernando Perez <fperez@colorado.edu>
5654 2002-06-20 Fernando Perez <fperez@colorado.edu>
5652
5655
5653 * IPython/genutils.py (timing): new function like
5656 * IPython/genutils.py (timing): new function like
5654 Mathematica's. Similar to time_test, but returns more info.
5657 Mathematica's. Similar to time_test, but returns more info.
5655
5658
5656 2002-06-18 Fernando Perez <fperez@colorado.edu>
5659 2002-06-18 Fernando Perez <fperez@colorado.edu>
5657
5660
5658 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5661 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5659 according to Mike Heeter's suggestions.
5662 according to Mike Heeter's suggestions.
5660
5663
5661 2002-06-16 Fernando Perez <fperez@colorado.edu>
5664 2002-06-16 Fernando Perez <fperez@colorado.edu>
5662
5665
5663 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5666 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5664 system. GnuplotMagic is gone as a user-directory option. New files
5667 system. GnuplotMagic is gone as a user-directory option. New files
5665 make it easier to use all the gnuplot stuff both from external
5668 make it easier to use all the gnuplot stuff both from external
5666 programs as well as from IPython. Had to rewrite part of
5669 programs as well as from IPython. Had to rewrite part of
5667 hardcopy() b/c of a strange bug: often the ps files simply don't
5670 hardcopy() b/c of a strange bug: often the ps files simply don't
5668 get created, and require a repeat of the command (often several
5671 get created, and require a repeat of the command (often several
5669 times).
5672 times).
5670
5673
5671 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5674 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5672 resolve output channel at call time, so that if sys.stderr has
5675 resolve output channel at call time, so that if sys.stderr has
5673 been redirected by user this gets honored.
5676 been redirected by user this gets honored.
5674
5677
5675 2002-06-13 Fernando Perez <fperez@colorado.edu>
5678 2002-06-13 Fernando Perez <fperez@colorado.edu>
5676
5679
5677 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5680 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5678 IPShell. Kept a copy with the old names to avoid breaking people's
5681 IPShell. Kept a copy with the old names to avoid breaking people's
5679 embedded code.
5682 embedded code.
5680
5683
5681 * IPython/ipython: simplified it to the bare minimum after
5684 * IPython/ipython: simplified it to the bare minimum after
5682 Holger's suggestions. Added info about how to use it in
5685 Holger's suggestions. Added info about how to use it in
5683 PYTHONSTARTUP.
5686 PYTHONSTARTUP.
5684
5687
5685 * IPython/Shell.py (IPythonShell): changed the options passing
5688 * IPython/Shell.py (IPythonShell): changed the options passing
5686 from a string with funky %s replacements to a straight list. Maybe
5689 from a string with funky %s replacements to a straight list. Maybe
5687 a bit more typing, but it follows sys.argv conventions, so there's
5690 a bit more typing, but it follows sys.argv conventions, so there's
5688 less special-casing to remember.
5691 less special-casing to remember.
5689
5692
5690 2002-06-12 Fernando Perez <fperez@colorado.edu>
5693 2002-06-12 Fernando Perez <fperez@colorado.edu>
5691
5694
5692 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5695 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5693 command. Thanks to a suggestion by Mike Heeter.
5696 command. Thanks to a suggestion by Mike Heeter.
5694 (Magic.magic_pfile): added behavior to look at filenames if given
5697 (Magic.magic_pfile): added behavior to look at filenames if given
5695 arg is not a defined object.
5698 arg is not a defined object.
5696 (Magic.magic_save): New @save function to save code snippets. Also
5699 (Magic.magic_save): New @save function to save code snippets. Also
5697 a Mike Heeter idea.
5700 a Mike Heeter idea.
5698
5701
5699 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5702 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5700 plot() and replot(). Much more convenient now, especially for
5703 plot() and replot(). Much more convenient now, especially for
5701 interactive use.
5704 interactive use.
5702
5705
5703 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5706 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5704 filenames.
5707 filenames.
5705
5708
5706 2002-06-02 Fernando Perez <fperez@colorado.edu>
5709 2002-06-02 Fernando Perez <fperez@colorado.edu>
5707
5710
5708 * IPython/Struct.py (Struct.__init__): modified to admit
5711 * IPython/Struct.py (Struct.__init__): modified to admit
5709 initialization via another struct.
5712 initialization via another struct.
5710
5713
5711 * IPython/genutils.py (SystemExec.__init__): New stateful
5714 * IPython/genutils.py (SystemExec.__init__): New stateful
5712 interface to xsys and bq. Useful for writing system scripts.
5715 interface to xsys and bq. Useful for writing system scripts.
5713
5716
5714 2002-05-30 Fernando Perez <fperez@colorado.edu>
5717 2002-05-30 Fernando Perez <fperez@colorado.edu>
5715
5718
5716 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5719 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5717 documents. This will make the user download smaller (it's getting
5720 documents. This will make the user download smaller (it's getting
5718 too big).
5721 too big).
5719
5722
5720 2002-05-29 Fernando Perez <fperez@colorado.edu>
5723 2002-05-29 Fernando Perez <fperez@colorado.edu>
5721
5724
5722 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5725 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5723 fix problems with shelve and pickle. Seems to work, but I don't
5726 fix problems with shelve and pickle. Seems to work, but I don't
5724 know if corner cases break it. Thanks to Mike Heeter
5727 know if corner cases break it. Thanks to Mike Heeter
5725 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5728 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5726
5729
5727 2002-05-24 Fernando Perez <fperez@colorado.edu>
5730 2002-05-24 Fernando Perez <fperez@colorado.edu>
5728
5731
5729 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5732 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5730 macros having broken.
5733 macros having broken.
5731
5734
5732 2002-05-21 Fernando Perez <fperez@colorado.edu>
5735 2002-05-21 Fernando Perez <fperez@colorado.edu>
5733
5736
5734 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5737 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5735 introduced logging bug: all history before logging started was
5738 introduced logging bug: all history before logging started was
5736 being written one character per line! This came from the redesign
5739 being written one character per line! This came from the redesign
5737 of the input history as a special list which slices to strings,
5740 of the input history as a special list which slices to strings,
5738 not to lists.
5741 not to lists.
5739
5742
5740 2002-05-20 Fernando Perez <fperez@colorado.edu>
5743 2002-05-20 Fernando Perez <fperez@colorado.edu>
5741
5744
5742 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5745 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5743 be an attribute of all classes in this module. The design of these
5746 be an attribute of all classes in this module. The design of these
5744 classes needs some serious overhauling.
5747 classes needs some serious overhauling.
5745
5748
5746 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5749 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5747 which was ignoring '_' in option names.
5750 which was ignoring '_' in option names.
5748
5751
5749 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5752 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5750 'Verbose_novars' to 'Context' and made it the new default. It's a
5753 'Verbose_novars' to 'Context' and made it the new default. It's a
5751 bit more readable and also safer than verbose.
5754 bit more readable and also safer than verbose.
5752
5755
5753 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5756 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5754 triple-quoted strings.
5757 triple-quoted strings.
5755
5758
5756 * IPython/OInspect.py (__all__): new module exposing the object
5759 * IPython/OInspect.py (__all__): new module exposing the object
5757 introspection facilities. Now the corresponding magics are dummy
5760 introspection facilities. Now the corresponding magics are dummy
5758 wrappers around this. Having this module will make it much easier
5761 wrappers around this. Having this module will make it much easier
5759 to put these functions into our modified pdb.
5762 to put these functions into our modified pdb.
5760 This new object inspector system uses the new colorizing module,
5763 This new object inspector system uses the new colorizing module,
5761 so source code and other things are nicely syntax highlighted.
5764 so source code and other things are nicely syntax highlighted.
5762
5765
5763 2002-05-18 Fernando Perez <fperez@colorado.edu>
5766 2002-05-18 Fernando Perez <fperez@colorado.edu>
5764
5767
5765 * IPython/ColorANSI.py: Split the coloring tools into a separate
5768 * IPython/ColorANSI.py: Split the coloring tools into a separate
5766 module so I can use them in other code easier (they were part of
5769 module so I can use them in other code easier (they were part of
5767 ultraTB).
5770 ultraTB).
5768
5771
5769 2002-05-17 Fernando Perez <fperez@colorado.edu>
5772 2002-05-17 Fernando Perez <fperez@colorado.edu>
5770
5773
5771 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5774 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5772 fixed it to set the global 'g' also to the called instance, as
5775 fixed it to set the global 'g' also to the called instance, as
5773 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5776 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5774 user's 'g' variables).
5777 user's 'g' variables).
5775
5778
5776 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5779 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5777 global variables (aliases to _ih,_oh) so that users which expect
5780 global variables (aliases to _ih,_oh) so that users which expect
5778 In[5] or Out[7] to work aren't unpleasantly surprised.
5781 In[5] or Out[7] to work aren't unpleasantly surprised.
5779 (InputList.__getslice__): new class to allow executing slices of
5782 (InputList.__getslice__): new class to allow executing slices of
5780 input history directly. Very simple class, complements the use of
5783 input history directly. Very simple class, complements the use of
5781 macros.
5784 macros.
5782
5785
5783 2002-05-16 Fernando Perez <fperez@colorado.edu>
5786 2002-05-16 Fernando Perez <fperez@colorado.edu>
5784
5787
5785 * setup.py (docdirbase): make doc directory be just doc/IPython
5788 * setup.py (docdirbase): make doc directory be just doc/IPython
5786 without version numbers, it will reduce clutter for users.
5789 without version numbers, it will reduce clutter for users.
5787
5790
5788 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5791 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5789 execfile call to prevent possible memory leak. See for details:
5792 execfile call to prevent possible memory leak. See for details:
5790 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5793 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5791
5794
5792 2002-05-15 Fernando Perez <fperez@colorado.edu>
5795 2002-05-15 Fernando Perez <fperez@colorado.edu>
5793
5796
5794 * IPython/Magic.py (Magic.magic_psource): made the object
5797 * IPython/Magic.py (Magic.magic_psource): made the object
5795 introspection names be more standard: pdoc, pdef, pfile and
5798 introspection names be more standard: pdoc, pdef, pfile and
5796 psource. They all print/page their output, and it makes
5799 psource. They all print/page their output, and it makes
5797 remembering them easier. Kept old names for compatibility as
5800 remembering them easier. Kept old names for compatibility as
5798 aliases.
5801 aliases.
5799
5802
5800 2002-05-14 Fernando Perez <fperez@colorado.edu>
5803 2002-05-14 Fernando Perez <fperez@colorado.edu>
5801
5804
5802 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5805 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5803 what the mouse problem was. The trick is to use gnuplot with temp
5806 what the mouse problem was. The trick is to use gnuplot with temp
5804 files and NOT with pipes (for data communication), because having
5807 files and NOT with pipes (for data communication), because having
5805 both pipes and the mouse on is bad news.
5808 both pipes and the mouse on is bad news.
5806
5809
5807 2002-05-13 Fernando Perez <fperez@colorado.edu>
5810 2002-05-13 Fernando Perez <fperez@colorado.edu>
5808
5811
5809 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5812 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5810 bug. Information would be reported about builtins even when
5813 bug. Information would be reported about builtins even when
5811 user-defined functions overrode them.
5814 user-defined functions overrode them.
5812
5815
5813 2002-05-11 Fernando Perez <fperez@colorado.edu>
5816 2002-05-11 Fernando Perez <fperez@colorado.edu>
5814
5817
5815 * IPython/__init__.py (__all__): removed FlexCompleter from
5818 * IPython/__init__.py (__all__): removed FlexCompleter from
5816 __all__ so that things don't fail in platforms without readline.
5819 __all__ so that things don't fail in platforms without readline.
5817
5820
5818 2002-05-10 Fernando Perez <fperez@colorado.edu>
5821 2002-05-10 Fernando Perez <fperez@colorado.edu>
5819
5822
5820 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5823 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5821 it requires Numeric, effectively making Numeric a dependency for
5824 it requires Numeric, effectively making Numeric a dependency for
5822 IPython.
5825 IPython.
5823
5826
5824 * Released 0.2.13
5827 * Released 0.2.13
5825
5828
5826 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5829 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5827 profiler interface. Now all the major options from the profiler
5830 profiler interface. Now all the major options from the profiler
5828 module are directly supported in IPython, both for single
5831 module are directly supported in IPython, both for single
5829 expressions (@prun) and for full programs (@run -p).
5832 expressions (@prun) and for full programs (@run -p).
5830
5833
5831 2002-05-09 Fernando Perez <fperez@colorado.edu>
5834 2002-05-09 Fernando Perez <fperez@colorado.edu>
5832
5835
5833 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5836 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5834 magic properly formatted for screen.
5837 magic properly formatted for screen.
5835
5838
5836 * setup.py (make_shortcut): Changed things to put pdf version in
5839 * setup.py (make_shortcut): Changed things to put pdf version in
5837 doc/ instead of doc/manual (had to change lyxport a bit).
5840 doc/ instead of doc/manual (had to change lyxport a bit).
5838
5841
5839 * IPython/Magic.py (Profile.string_stats): made profile runs go
5842 * IPython/Magic.py (Profile.string_stats): made profile runs go
5840 through pager (they are long and a pager allows searching, saving,
5843 through pager (they are long and a pager allows searching, saving,
5841 etc.)
5844 etc.)
5842
5845
5843 2002-05-08 Fernando Perez <fperez@colorado.edu>
5846 2002-05-08 Fernando Perez <fperez@colorado.edu>
5844
5847
5845 * Released 0.2.12
5848 * Released 0.2.12
5846
5849
5847 2002-05-06 Fernando Perez <fperez@colorado.edu>
5850 2002-05-06 Fernando Perez <fperez@colorado.edu>
5848
5851
5849 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5852 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5850 introduced); 'hist n1 n2' was broken.
5853 introduced); 'hist n1 n2' was broken.
5851 (Magic.magic_pdb): added optional on/off arguments to @pdb
5854 (Magic.magic_pdb): added optional on/off arguments to @pdb
5852 (Magic.magic_run): added option -i to @run, which executes code in
5855 (Magic.magic_run): added option -i to @run, which executes code in
5853 the IPython namespace instead of a clean one. Also added @irun as
5856 the IPython namespace instead of a clean one. Also added @irun as
5854 an alias to @run -i.
5857 an alias to @run -i.
5855
5858
5856 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5859 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5857 fixed (it didn't really do anything, the namespaces were wrong).
5860 fixed (it didn't really do anything, the namespaces were wrong).
5858
5861
5859 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5862 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5860
5863
5861 * IPython/__init__.py (__all__): Fixed package namespace, now
5864 * IPython/__init__.py (__all__): Fixed package namespace, now
5862 'import IPython' does give access to IPython.<all> as
5865 'import IPython' does give access to IPython.<all> as
5863 expected. Also renamed __release__ to Release.
5866 expected. Also renamed __release__ to Release.
5864
5867
5865 * IPython/Debugger.py (__license__): created new Pdb class which
5868 * IPython/Debugger.py (__license__): created new Pdb class which
5866 functions like a drop-in for the normal pdb.Pdb but does NOT
5869 functions like a drop-in for the normal pdb.Pdb but does NOT
5867 import readline by default. This way it doesn't muck up IPython's
5870 import readline by default. This way it doesn't muck up IPython's
5868 readline handling, and now tab-completion finally works in the
5871 readline handling, and now tab-completion finally works in the
5869 debugger -- sort of. It completes things globally visible, but the
5872 debugger -- sort of. It completes things globally visible, but the
5870 completer doesn't track the stack as pdb walks it. That's a bit
5873 completer doesn't track the stack as pdb walks it. That's a bit
5871 tricky, and I'll have to implement it later.
5874 tricky, and I'll have to implement it later.
5872
5875
5873 2002-05-05 Fernando Perez <fperez@colorado.edu>
5876 2002-05-05 Fernando Perez <fperez@colorado.edu>
5874
5877
5875 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5878 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5876 magic docstrings when printed via ? (explicit \'s were being
5879 magic docstrings when printed via ? (explicit \'s were being
5877 printed).
5880 printed).
5878
5881
5879 * IPython/ipmaker.py (make_IPython): fixed namespace
5882 * IPython/ipmaker.py (make_IPython): fixed namespace
5880 identification bug. Now variables loaded via logs or command-line
5883 identification bug. Now variables loaded via logs or command-line
5881 files are recognized in the interactive namespace by @who.
5884 files are recognized in the interactive namespace by @who.
5882
5885
5883 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5886 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5884 log replay system stemming from the string form of Structs.
5887 log replay system stemming from the string form of Structs.
5885
5888
5886 * IPython/Magic.py (Macro.__init__): improved macros to properly
5889 * IPython/Magic.py (Macro.__init__): improved macros to properly
5887 handle magic commands in them.
5890 handle magic commands in them.
5888 (Magic.magic_logstart): usernames are now expanded so 'logstart
5891 (Magic.magic_logstart): usernames are now expanded so 'logstart
5889 ~/mylog' now works.
5892 ~/mylog' now works.
5890
5893
5891 * IPython/iplib.py (complete): fixed bug where paths starting with
5894 * IPython/iplib.py (complete): fixed bug where paths starting with
5892 '/' would be completed as magic names.
5895 '/' would be completed as magic names.
5893
5896
5894 2002-05-04 Fernando Perez <fperez@colorado.edu>
5897 2002-05-04 Fernando Perez <fperez@colorado.edu>
5895
5898
5896 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5899 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5897 allow running full programs under the profiler's control.
5900 allow running full programs under the profiler's control.
5898
5901
5899 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5902 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5900 mode to report exceptions verbosely but without formatting
5903 mode to report exceptions verbosely but without formatting
5901 variables. This addresses the issue of ipython 'freezing' (it's
5904 variables. This addresses the issue of ipython 'freezing' (it's
5902 not frozen, but caught in an expensive formatting loop) when huge
5905 not frozen, but caught in an expensive formatting loop) when huge
5903 variables are in the context of an exception.
5906 variables are in the context of an exception.
5904 (VerboseTB.text): Added '--->' markers at line where exception was
5907 (VerboseTB.text): Added '--->' markers at line where exception was
5905 triggered. Much clearer to read, especially in NoColor modes.
5908 triggered. Much clearer to read, especially in NoColor modes.
5906
5909
5907 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5910 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5908 implemented in reverse when changing to the new parse_options().
5911 implemented in reverse when changing to the new parse_options().
5909
5912
5910 2002-05-03 Fernando Perez <fperez@colorado.edu>
5913 2002-05-03 Fernando Perez <fperez@colorado.edu>
5911
5914
5912 * IPython/Magic.py (Magic.parse_options): new function so that
5915 * IPython/Magic.py (Magic.parse_options): new function so that
5913 magics can parse options easier.
5916 magics can parse options easier.
5914 (Magic.magic_prun): new function similar to profile.run(),
5917 (Magic.magic_prun): new function similar to profile.run(),
5915 suggested by Chris Hart.
5918 suggested by Chris Hart.
5916 (Magic.magic_cd): fixed behavior so that it only changes if
5919 (Magic.magic_cd): fixed behavior so that it only changes if
5917 directory actually is in history.
5920 directory actually is in history.
5918
5921
5919 * IPython/usage.py (__doc__): added information about potential
5922 * IPython/usage.py (__doc__): added information about potential
5920 slowness of Verbose exception mode when there are huge data
5923 slowness of Verbose exception mode when there are huge data
5921 structures to be formatted (thanks to Archie Paulson).
5924 structures to be formatted (thanks to Archie Paulson).
5922
5925
5923 * IPython/ipmaker.py (make_IPython): Changed default logging
5926 * IPython/ipmaker.py (make_IPython): Changed default logging
5924 (when simply called with -log) to use curr_dir/ipython.log in
5927 (when simply called with -log) to use curr_dir/ipython.log in
5925 rotate mode. Fixed crash which was occuring with -log before
5928 rotate mode. Fixed crash which was occuring with -log before
5926 (thanks to Jim Boyle).
5929 (thanks to Jim Boyle).
5927
5930
5928 2002-05-01 Fernando Perez <fperez@colorado.edu>
5931 2002-05-01 Fernando Perez <fperez@colorado.edu>
5929
5932
5930 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5933 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5931 was nasty -- though somewhat of a corner case).
5934 was nasty -- though somewhat of a corner case).
5932
5935
5933 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5936 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5934 text (was a bug).
5937 text (was a bug).
5935
5938
5936 2002-04-30 Fernando Perez <fperez@colorado.edu>
5939 2002-04-30 Fernando Perez <fperez@colorado.edu>
5937
5940
5938 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5941 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5939 a print after ^D or ^C from the user so that the In[] prompt
5942 a print after ^D or ^C from the user so that the In[] prompt
5940 doesn't over-run the gnuplot one.
5943 doesn't over-run the gnuplot one.
5941
5944
5942 2002-04-29 Fernando Perez <fperez@colorado.edu>
5945 2002-04-29 Fernando Perez <fperez@colorado.edu>
5943
5946
5944 * Released 0.2.10
5947 * Released 0.2.10
5945
5948
5946 * IPython/__release__.py (version): get date dynamically.
5949 * IPython/__release__.py (version): get date dynamically.
5947
5950
5948 * Misc. documentation updates thanks to Arnd's comments. Also ran
5951 * Misc. documentation updates thanks to Arnd's comments. Also ran
5949 a full spellcheck on the manual (hadn't been done in a while).
5952 a full spellcheck on the manual (hadn't been done in a while).
5950
5953
5951 2002-04-27 Fernando Perez <fperez@colorado.edu>
5954 2002-04-27 Fernando Perez <fperez@colorado.edu>
5952
5955
5953 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5956 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5954 starting a log in mid-session would reset the input history list.
5957 starting a log in mid-session would reset the input history list.
5955
5958
5956 2002-04-26 Fernando Perez <fperez@colorado.edu>
5959 2002-04-26 Fernando Perez <fperez@colorado.edu>
5957
5960
5958 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5961 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5959 all files were being included in an update. Now anything in
5962 all files were being included in an update. Now anything in
5960 UserConfig that matches [A-Za-z]*.py will go (this excludes
5963 UserConfig that matches [A-Za-z]*.py will go (this excludes
5961 __init__.py)
5964 __init__.py)
5962
5965
5963 2002-04-25 Fernando Perez <fperez@colorado.edu>
5966 2002-04-25 Fernando Perez <fperez@colorado.edu>
5964
5967
5965 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5968 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5966 to __builtins__ so that any form of embedded or imported code can
5969 to __builtins__ so that any form of embedded or imported code can
5967 test for being inside IPython.
5970 test for being inside IPython.
5968
5971
5969 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5972 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5970 changed to GnuplotMagic because it's now an importable module,
5973 changed to GnuplotMagic because it's now an importable module,
5971 this makes the name follow that of the standard Gnuplot module.
5974 this makes the name follow that of the standard Gnuplot module.
5972 GnuplotMagic can now be loaded at any time in mid-session.
5975 GnuplotMagic can now be loaded at any time in mid-session.
5973
5976
5974 2002-04-24 Fernando Perez <fperez@colorado.edu>
5977 2002-04-24 Fernando Perez <fperez@colorado.edu>
5975
5978
5976 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5979 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5977 the globals (IPython has its own namespace) and the
5980 the globals (IPython has its own namespace) and the
5978 PhysicalQuantity stuff is much better anyway.
5981 PhysicalQuantity stuff is much better anyway.
5979
5982
5980 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5983 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5981 embedding example to standard user directory for
5984 embedding example to standard user directory for
5982 distribution. Also put it in the manual.
5985 distribution. Also put it in the manual.
5983
5986
5984 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5987 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5985 instance as first argument (so it doesn't rely on some obscure
5988 instance as first argument (so it doesn't rely on some obscure
5986 hidden global).
5989 hidden global).
5987
5990
5988 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5991 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5989 delimiters. While it prevents ().TAB from working, it allows
5992 delimiters. While it prevents ().TAB from working, it allows
5990 completions in open (... expressions. This is by far a more common
5993 completions in open (... expressions. This is by far a more common
5991 case.
5994 case.
5992
5995
5993 2002-04-23 Fernando Perez <fperez@colorado.edu>
5996 2002-04-23 Fernando Perez <fperez@colorado.edu>
5994
5997
5995 * IPython/Extensions/InterpreterPasteInput.py: new
5998 * IPython/Extensions/InterpreterPasteInput.py: new
5996 syntax-processing module for pasting lines with >>> or ... at the
5999 syntax-processing module for pasting lines with >>> or ... at the
5997 start.
6000 start.
5998
6001
5999 * IPython/Extensions/PhysicalQ_Interactive.py
6002 * IPython/Extensions/PhysicalQ_Interactive.py
6000 (PhysicalQuantityInteractive.__int__): fixed to work with either
6003 (PhysicalQuantityInteractive.__int__): fixed to work with either
6001 Numeric or math.
6004 Numeric or math.
6002
6005
6003 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
6006 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
6004 provided profiles. Now we have:
6007 provided profiles. Now we have:
6005 -math -> math module as * and cmath with its own namespace.
6008 -math -> math module as * and cmath with its own namespace.
6006 -numeric -> Numeric as *, plus gnuplot & grace
6009 -numeric -> Numeric as *, plus gnuplot & grace
6007 -physics -> same as before
6010 -physics -> same as before
6008
6011
6009 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
6012 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
6010 user-defined magics wouldn't be found by @magic if they were
6013 user-defined magics wouldn't be found by @magic if they were
6011 defined as class methods. Also cleaned up the namespace search
6014 defined as class methods. Also cleaned up the namespace search
6012 logic and the string building (to use %s instead of many repeated
6015 logic and the string building (to use %s instead of many repeated
6013 string adds).
6016 string adds).
6014
6017
6015 * IPython/UserConfig/example-magic.py (magic_foo): updated example
6018 * IPython/UserConfig/example-magic.py (magic_foo): updated example
6016 of user-defined magics to operate with class methods (cleaner, in
6019 of user-defined magics to operate with class methods (cleaner, in
6017 line with the gnuplot code).
6020 line with the gnuplot code).
6018
6021
6019 2002-04-22 Fernando Perez <fperez@colorado.edu>
6022 2002-04-22 Fernando Perez <fperez@colorado.edu>
6020
6023
6021 * setup.py: updated dependency list so that manual is updated when
6024 * setup.py: updated dependency list so that manual is updated when
6022 all included files change.
6025 all included files change.
6023
6026
6024 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
6027 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
6025 the delimiter removal option (the fix is ugly right now).
6028 the delimiter removal option (the fix is ugly right now).
6026
6029
6027 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
6030 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
6028 all of the math profile (quicker loading, no conflict between
6031 all of the math profile (quicker loading, no conflict between
6029 g-9.8 and g-gnuplot).
6032 g-9.8 and g-gnuplot).
6030
6033
6031 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
6034 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
6032 name of post-mortem files to IPython_crash_report.txt.
6035 name of post-mortem files to IPython_crash_report.txt.
6033
6036
6034 * Cleanup/update of the docs. Added all the new readline info and
6037 * Cleanup/update of the docs. Added all the new readline info and
6035 formatted all lists as 'real lists'.
6038 formatted all lists as 'real lists'.
6036
6039
6037 * IPython/ipmaker.py (make_IPython): removed now-obsolete
6040 * IPython/ipmaker.py (make_IPython): removed now-obsolete
6038 tab-completion options, since the full readline parse_and_bind is
6041 tab-completion options, since the full readline parse_and_bind is
6039 now accessible.
6042 now accessible.
6040
6043
6041 * IPython/iplib.py (InteractiveShell.init_readline): Changed
6044 * IPython/iplib.py (InteractiveShell.init_readline): Changed
6042 handling of readline options. Now users can specify any string to
6045 handling of readline options. Now users can specify any string to
6043 be passed to parse_and_bind(), as well as the delimiters to be
6046 be passed to parse_and_bind(), as well as the delimiters to be
6044 removed.
6047 removed.
6045 (InteractiveShell.__init__): Added __name__ to the global
6048 (InteractiveShell.__init__): Added __name__ to the global
6046 namespace so that things like Itpl which rely on its existence
6049 namespace so that things like Itpl which rely on its existence
6047 don't crash.
6050 don't crash.
6048 (InteractiveShell._prefilter): Defined the default with a _ so
6051 (InteractiveShell._prefilter): Defined the default with a _ so
6049 that prefilter() is easier to override, while the default one
6052 that prefilter() is easier to override, while the default one
6050 remains available.
6053 remains available.
6051
6054
6052 2002-04-18 Fernando Perez <fperez@colorado.edu>
6055 2002-04-18 Fernando Perez <fperez@colorado.edu>
6053
6056
6054 * Added information about pdb in the docs.
6057 * Added information about pdb in the docs.
6055
6058
6056 2002-04-17 Fernando Perez <fperez@colorado.edu>
6059 2002-04-17 Fernando Perez <fperez@colorado.edu>
6057
6060
6058 * IPython/ipmaker.py (make_IPython): added rc_override option to
6061 * IPython/ipmaker.py (make_IPython): added rc_override option to
6059 allow passing config options at creation time which may override
6062 allow passing config options at creation time which may override
6060 anything set in the config files or command line. This is
6063 anything set in the config files or command line. This is
6061 particularly useful for configuring embedded instances.
6064 particularly useful for configuring embedded instances.
6062
6065
6063 2002-04-15 Fernando Perez <fperez@colorado.edu>
6066 2002-04-15 Fernando Perez <fperez@colorado.edu>
6064
6067
6065 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6068 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6066 crash embedded instances because of the input cache falling out of
6069 crash embedded instances because of the input cache falling out of
6067 sync with the output counter.
6070 sync with the output counter.
6068
6071
6069 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6072 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6070 mode which calls pdb after an uncaught exception in IPython itself.
6073 mode which calls pdb after an uncaught exception in IPython itself.
6071
6074
6072 2002-04-14 Fernando Perez <fperez@colorado.edu>
6075 2002-04-14 Fernando Perez <fperez@colorado.edu>
6073
6076
6074 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6077 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6075 readline, fix it back after each call.
6078 readline, fix it back after each call.
6076
6079
6077 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6080 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6078 method to force all access via __call__(), which guarantees that
6081 method to force all access via __call__(), which guarantees that
6079 traceback references are properly deleted.
6082 traceback references are properly deleted.
6080
6083
6081 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6084 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6082 improve printing when pprint is in use.
6085 improve printing when pprint is in use.
6083
6086
6084 2002-04-13 Fernando Perez <fperez@colorado.edu>
6087 2002-04-13 Fernando Perez <fperez@colorado.edu>
6085
6088
6086 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6089 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6087 exceptions aren't caught anymore. If the user triggers one, he
6090 exceptions aren't caught anymore. If the user triggers one, he
6088 should know why he's doing it and it should go all the way up,
6091 should know why he's doing it and it should go all the way up,
6089 just like any other exception. So now @abort will fully kill the
6092 just like any other exception. So now @abort will fully kill the
6090 embedded interpreter and the embedding code (unless that happens
6093 embedded interpreter and the embedding code (unless that happens
6091 to catch SystemExit).
6094 to catch SystemExit).
6092
6095
6093 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6096 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6094 and a debugger() method to invoke the interactive pdb debugger
6097 and a debugger() method to invoke the interactive pdb debugger
6095 after printing exception information. Also added the corresponding
6098 after printing exception information. Also added the corresponding
6096 -pdb option and @pdb magic to control this feature, and updated
6099 -pdb option and @pdb magic to control this feature, and updated
6097 the docs. After a suggestion from Christopher Hart
6100 the docs. After a suggestion from Christopher Hart
6098 (hart-AT-caltech.edu).
6101 (hart-AT-caltech.edu).
6099
6102
6100 2002-04-12 Fernando Perez <fperez@colorado.edu>
6103 2002-04-12 Fernando Perez <fperez@colorado.edu>
6101
6104
6102 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6105 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6103 the exception handlers defined by the user (not the CrashHandler)
6106 the exception handlers defined by the user (not the CrashHandler)
6104 so that user exceptions don't trigger an ipython bug report.
6107 so that user exceptions don't trigger an ipython bug report.
6105
6108
6106 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6109 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6107 configurable (it should have always been so).
6110 configurable (it should have always been so).
6108
6111
6109 2002-03-26 Fernando Perez <fperez@colorado.edu>
6112 2002-03-26 Fernando Perez <fperez@colorado.edu>
6110
6113
6111 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6114 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6112 and there to fix embedding namespace issues. This should all be
6115 and there to fix embedding namespace issues. This should all be
6113 done in a more elegant way.
6116 done in a more elegant way.
6114
6117
6115 2002-03-25 Fernando Perez <fperez@colorado.edu>
6118 2002-03-25 Fernando Perez <fperez@colorado.edu>
6116
6119
6117 * IPython/genutils.py (get_home_dir): Try to make it work under
6120 * IPython/genutils.py (get_home_dir): Try to make it work under
6118 win9x also.
6121 win9x also.
6119
6122
6120 2002-03-20 Fernando Perez <fperez@colorado.edu>
6123 2002-03-20 Fernando Perez <fperez@colorado.edu>
6121
6124
6122 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6125 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6123 sys.displayhook untouched upon __init__.
6126 sys.displayhook untouched upon __init__.
6124
6127
6125 2002-03-19 Fernando Perez <fperez@colorado.edu>
6128 2002-03-19 Fernando Perez <fperez@colorado.edu>
6126
6129
6127 * Released 0.2.9 (for embedding bug, basically).
6130 * Released 0.2.9 (for embedding bug, basically).
6128
6131
6129 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6132 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6130 exceptions so that enclosing shell's state can be restored.
6133 exceptions so that enclosing shell's state can be restored.
6131
6134
6132 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6135 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6133 naming conventions in the .ipython/ dir.
6136 naming conventions in the .ipython/ dir.
6134
6137
6135 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6138 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6136 from delimiters list so filenames with - in them get expanded.
6139 from delimiters list so filenames with - in them get expanded.
6137
6140
6138 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6141 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6139 sys.displayhook not being properly restored after an embedded call.
6142 sys.displayhook not being properly restored after an embedded call.
6140
6143
6141 2002-03-18 Fernando Perez <fperez@colorado.edu>
6144 2002-03-18 Fernando Perez <fperez@colorado.edu>
6142
6145
6143 * Released 0.2.8
6146 * Released 0.2.8
6144
6147
6145 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6148 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6146 some files weren't being included in a -upgrade.
6149 some files weren't being included in a -upgrade.
6147 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6150 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6148 on' so that the first tab completes.
6151 on' so that the first tab completes.
6149 (InteractiveShell.handle_magic): fixed bug with spaces around
6152 (InteractiveShell.handle_magic): fixed bug with spaces around
6150 quotes breaking many magic commands.
6153 quotes breaking many magic commands.
6151
6154
6152 * setup.py: added note about ignoring the syntax error messages at
6155 * setup.py: added note about ignoring the syntax error messages at
6153 installation.
6156 installation.
6154
6157
6155 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6158 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6156 streamlining the gnuplot interface, now there's only one magic @gp.
6159 streamlining the gnuplot interface, now there's only one magic @gp.
6157
6160
6158 2002-03-17 Fernando Perez <fperez@colorado.edu>
6161 2002-03-17 Fernando Perez <fperez@colorado.edu>
6159
6162
6160 * IPython/UserConfig/magic_gnuplot.py: new name for the
6163 * IPython/UserConfig/magic_gnuplot.py: new name for the
6161 example-magic_pm.py file. Much enhanced system, now with a shell
6164 example-magic_pm.py file. Much enhanced system, now with a shell
6162 for communicating directly with gnuplot, one command at a time.
6165 for communicating directly with gnuplot, one command at a time.
6163
6166
6164 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6167 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6165 setting __name__=='__main__'.
6168 setting __name__=='__main__'.
6166
6169
6167 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6170 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6168 mini-shell for accessing gnuplot from inside ipython. Should
6171 mini-shell for accessing gnuplot from inside ipython. Should
6169 extend it later for grace access too. Inspired by Arnd's
6172 extend it later for grace access too. Inspired by Arnd's
6170 suggestion.
6173 suggestion.
6171
6174
6172 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6175 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6173 calling magic functions with () in their arguments. Thanks to Arnd
6176 calling magic functions with () in their arguments. Thanks to Arnd
6174 Baecker for pointing this to me.
6177 Baecker for pointing this to me.
6175
6178
6176 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6179 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6177 infinitely for integer or complex arrays (only worked with floats).
6180 infinitely for integer or complex arrays (only worked with floats).
6178
6181
6179 2002-03-16 Fernando Perez <fperez@colorado.edu>
6182 2002-03-16 Fernando Perez <fperez@colorado.edu>
6180
6183
6181 * setup.py: Merged setup and setup_windows into a single script
6184 * setup.py: Merged setup and setup_windows into a single script
6182 which properly handles things for windows users.
6185 which properly handles things for windows users.
6183
6186
6184 2002-03-15 Fernando Perez <fperez@colorado.edu>
6187 2002-03-15 Fernando Perez <fperez@colorado.edu>
6185
6188
6186 * Big change to the manual: now the magics are all automatically
6189 * Big change to the manual: now the magics are all automatically
6187 documented. This information is generated from their docstrings
6190 documented. This information is generated from their docstrings
6188 and put in a latex file included by the manual lyx file. This way
6191 and put in a latex file included by the manual lyx file. This way
6189 we get always up to date information for the magics. The manual
6192 we get always up to date information for the magics. The manual
6190 now also has proper version information, also auto-synced.
6193 now also has proper version information, also auto-synced.
6191
6194
6192 For this to work, an undocumented --magic_docstrings option was added.
6195 For this to work, an undocumented --magic_docstrings option was added.
6193
6196
6194 2002-03-13 Fernando Perez <fperez@colorado.edu>
6197 2002-03-13 Fernando Perez <fperez@colorado.edu>
6195
6198
6196 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6199 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6197 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6200 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6198
6201
6199 2002-03-12 Fernando Perez <fperez@colorado.edu>
6202 2002-03-12 Fernando Perez <fperez@colorado.edu>
6200
6203
6201 * IPython/ultraTB.py (TermColors): changed color escapes again to
6204 * IPython/ultraTB.py (TermColors): changed color escapes again to
6202 fix the (old, reintroduced) line-wrapping bug. Basically, if
6205 fix the (old, reintroduced) line-wrapping bug. Basically, if
6203 \001..\002 aren't given in the color escapes, lines get wrapped
6206 \001..\002 aren't given in the color escapes, lines get wrapped
6204 weirdly. But giving those screws up old xterms and emacs terms. So
6207 weirdly. But giving those screws up old xterms and emacs terms. So
6205 I added some logic for emacs terms to be ok, but I can't identify old
6208 I added some logic for emacs terms to be ok, but I can't identify old
6206 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6209 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6207
6210
6208 2002-03-10 Fernando Perez <fperez@colorado.edu>
6211 2002-03-10 Fernando Perez <fperez@colorado.edu>
6209
6212
6210 * IPython/usage.py (__doc__): Various documentation cleanups and
6213 * IPython/usage.py (__doc__): Various documentation cleanups and
6211 updates, both in usage docstrings and in the manual.
6214 updates, both in usage docstrings and in the manual.
6212
6215
6213 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6216 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6214 handling of caching. Set minimum acceptabe value for having a
6217 handling of caching. Set minimum acceptabe value for having a
6215 cache at 20 values.
6218 cache at 20 values.
6216
6219
6217 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6220 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6218 install_first_time function to a method, renamed it and added an
6221 install_first_time function to a method, renamed it and added an
6219 'upgrade' mode. Now people can update their config directory with
6222 'upgrade' mode. Now people can update their config directory with
6220 a simple command line switch (-upgrade, also new).
6223 a simple command line switch (-upgrade, also new).
6221
6224
6222 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6225 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6223 @file (convenient for automagic users under Python >= 2.2).
6226 @file (convenient for automagic users under Python >= 2.2).
6224 Removed @files (it seemed more like a plural than an abbrev. of
6227 Removed @files (it seemed more like a plural than an abbrev. of
6225 'file show').
6228 'file show').
6226
6229
6227 * IPython/iplib.py (install_first_time): Fixed crash if there were
6230 * IPython/iplib.py (install_first_time): Fixed crash if there were
6228 backup files ('~') in .ipython/ install directory.
6231 backup files ('~') in .ipython/ install directory.
6229
6232
6230 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6233 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6231 system. Things look fine, but these changes are fairly
6234 system. Things look fine, but these changes are fairly
6232 intrusive. Test them for a few days.
6235 intrusive. Test them for a few days.
6233
6236
6234 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6237 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6235 the prompts system. Now all in/out prompt strings are user
6238 the prompts system. Now all in/out prompt strings are user
6236 controllable. This is particularly useful for embedding, as one
6239 controllable. This is particularly useful for embedding, as one
6237 can tag embedded instances with particular prompts.
6240 can tag embedded instances with particular prompts.
6238
6241
6239 Also removed global use of sys.ps1/2, which now allows nested
6242 Also removed global use of sys.ps1/2, which now allows nested
6240 embeddings without any problems. Added command-line options for
6243 embeddings without any problems. Added command-line options for
6241 the prompt strings.
6244 the prompt strings.
6242
6245
6243 2002-03-08 Fernando Perez <fperez@colorado.edu>
6246 2002-03-08 Fernando Perez <fperez@colorado.edu>
6244
6247
6245 * IPython/UserConfig/example-embed-short.py (ipshell): added
6248 * IPython/UserConfig/example-embed-short.py (ipshell): added
6246 example file with the bare minimum code for embedding.
6249 example file with the bare minimum code for embedding.
6247
6250
6248 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6251 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6249 functionality for the embeddable shell to be activated/deactivated
6252 functionality for the embeddable shell to be activated/deactivated
6250 either globally or at each call.
6253 either globally or at each call.
6251
6254
6252 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6255 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6253 rewriting the prompt with '--->' for auto-inputs with proper
6256 rewriting the prompt with '--->' for auto-inputs with proper
6254 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6257 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6255 this is handled by the prompts class itself, as it should.
6258 this is handled by the prompts class itself, as it should.
6256
6259
6257 2002-03-05 Fernando Perez <fperez@colorado.edu>
6260 2002-03-05 Fernando Perez <fperez@colorado.edu>
6258
6261
6259 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6262 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6260 @logstart to avoid name clashes with the math log function.
6263 @logstart to avoid name clashes with the math log function.
6261
6264
6262 * Big updates to X/Emacs section of the manual.
6265 * Big updates to X/Emacs section of the manual.
6263
6266
6264 * Removed ipython_emacs. Milan explained to me how to pass
6267 * Removed ipython_emacs. Milan explained to me how to pass
6265 arguments to ipython through Emacs. Some day I'm going to end up
6268 arguments to ipython through Emacs. Some day I'm going to end up
6266 learning some lisp...
6269 learning some lisp...
6267
6270
6268 2002-03-04 Fernando Perez <fperez@colorado.edu>
6271 2002-03-04 Fernando Perez <fperez@colorado.edu>
6269
6272
6270 * IPython/ipython_emacs: Created script to be used as the
6273 * IPython/ipython_emacs: Created script to be used as the
6271 py-python-command Emacs variable so we can pass IPython
6274 py-python-command Emacs variable so we can pass IPython
6272 parameters. I can't figure out how to tell Emacs directly to pass
6275 parameters. I can't figure out how to tell Emacs directly to pass
6273 parameters to IPython, so a dummy shell script will do it.
6276 parameters to IPython, so a dummy shell script will do it.
6274
6277
6275 Other enhancements made for things to work better under Emacs'
6278 Other enhancements made for things to work better under Emacs'
6276 various types of terminals. Many thanks to Milan Zamazal
6279 various types of terminals. Many thanks to Milan Zamazal
6277 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6280 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6278
6281
6279 2002-03-01 Fernando Perez <fperez@colorado.edu>
6282 2002-03-01 Fernando Perez <fperez@colorado.edu>
6280
6283
6281 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6284 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6282 that loading of readline is now optional. This gives better
6285 that loading of readline is now optional. This gives better
6283 control to emacs users.
6286 control to emacs users.
6284
6287
6285 * IPython/ultraTB.py (__date__): Modified color escape sequences
6288 * IPython/ultraTB.py (__date__): Modified color escape sequences
6286 and now things work fine under xterm and in Emacs' term buffers
6289 and now things work fine under xterm and in Emacs' term buffers
6287 (though not shell ones). Well, in emacs you get colors, but all
6290 (though not shell ones). Well, in emacs you get colors, but all
6288 seem to be 'light' colors (no difference between dark and light
6291 seem to be 'light' colors (no difference between dark and light
6289 ones). But the garbage chars are gone, and also in xterms. It
6292 ones). But the garbage chars are gone, and also in xterms. It
6290 seems that now I'm using 'cleaner' ansi sequences.
6293 seems that now I'm using 'cleaner' ansi sequences.
6291
6294
6292 2002-02-21 Fernando Perez <fperez@colorado.edu>
6295 2002-02-21 Fernando Perez <fperez@colorado.edu>
6293
6296
6294 * Released 0.2.7 (mainly to publish the scoping fix).
6297 * Released 0.2.7 (mainly to publish the scoping fix).
6295
6298
6296 * IPython/Logger.py (Logger.logstate): added. A corresponding
6299 * IPython/Logger.py (Logger.logstate): added. A corresponding
6297 @logstate magic was created.
6300 @logstate magic was created.
6298
6301
6299 * IPython/Magic.py: fixed nested scoping problem under Python
6302 * IPython/Magic.py: fixed nested scoping problem under Python
6300 2.1.x (automagic wasn't working).
6303 2.1.x (automagic wasn't working).
6301
6304
6302 2002-02-20 Fernando Perez <fperez@colorado.edu>
6305 2002-02-20 Fernando Perez <fperez@colorado.edu>
6303
6306
6304 * Released 0.2.6.
6307 * Released 0.2.6.
6305
6308
6306 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6309 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6307 option so that logs can come out without any headers at all.
6310 option so that logs can come out without any headers at all.
6308
6311
6309 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6312 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6310 SciPy.
6313 SciPy.
6311
6314
6312 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6315 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6313 that embedded IPython calls don't require vars() to be explicitly
6316 that embedded IPython calls don't require vars() to be explicitly
6314 passed. Now they are extracted from the caller's frame (code
6317 passed. Now they are extracted from the caller's frame (code
6315 snatched from Eric Jones' weave). Added better documentation to
6318 snatched from Eric Jones' weave). Added better documentation to
6316 the section on embedding and the example file.
6319 the section on embedding and the example file.
6317
6320
6318 * IPython/genutils.py (page): Changed so that under emacs, it just
6321 * IPython/genutils.py (page): Changed so that under emacs, it just
6319 prints the string. You can then page up and down in the emacs
6322 prints the string. You can then page up and down in the emacs
6320 buffer itself. This is how the builtin help() works.
6323 buffer itself. This is how the builtin help() works.
6321
6324
6322 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6325 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6323 macro scoping: macros need to be executed in the user's namespace
6326 macro scoping: macros need to be executed in the user's namespace
6324 to work as if they had been typed by the user.
6327 to work as if they had been typed by the user.
6325
6328
6326 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6329 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6327 execute automatically (no need to type 'exec...'). They then
6330 execute automatically (no need to type 'exec...'). They then
6328 behave like 'true macros'. The printing system was also modified
6331 behave like 'true macros'. The printing system was also modified
6329 for this to work.
6332 for this to work.
6330
6333
6331 2002-02-19 Fernando Perez <fperez@colorado.edu>
6334 2002-02-19 Fernando Perez <fperez@colorado.edu>
6332
6335
6333 * IPython/genutils.py (page_file): new function for paging files
6336 * IPython/genutils.py (page_file): new function for paging files
6334 in an OS-independent way. Also necessary for file viewing to work
6337 in an OS-independent way. Also necessary for file viewing to work
6335 well inside Emacs buffers.
6338 well inside Emacs buffers.
6336 (page): Added checks for being in an emacs buffer.
6339 (page): Added checks for being in an emacs buffer.
6337 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6340 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6338 same bug in iplib.
6341 same bug in iplib.
6339
6342
6340 2002-02-18 Fernando Perez <fperez@colorado.edu>
6343 2002-02-18 Fernando Perez <fperez@colorado.edu>
6341
6344
6342 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6345 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6343 of readline so that IPython can work inside an Emacs buffer.
6346 of readline so that IPython can work inside an Emacs buffer.
6344
6347
6345 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6348 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6346 method signatures (they weren't really bugs, but it looks cleaner
6349 method signatures (they weren't really bugs, but it looks cleaner
6347 and keeps PyChecker happy).
6350 and keeps PyChecker happy).
6348
6351
6349 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6352 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6350 for implementing various user-defined hooks. Currently only
6353 for implementing various user-defined hooks. Currently only
6351 display is done.
6354 display is done.
6352
6355
6353 * IPython/Prompts.py (CachedOutput._display): changed display
6356 * IPython/Prompts.py (CachedOutput._display): changed display
6354 functions so that they can be dynamically changed by users easily.
6357 functions so that they can be dynamically changed by users easily.
6355
6358
6356 * IPython/Extensions/numeric_formats.py (num_display): added an
6359 * IPython/Extensions/numeric_formats.py (num_display): added an
6357 extension for printing NumPy arrays in flexible manners. It
6360 extension for printing NumPy arrays in flexible manners. It
6358 doesn't do anything yet, but all the structure is in
6361 doesn't do anything yet, but all the structure is in
6359 place. Ultimately the plan is to implement output format control
6362 place. Ultimately the plan is to implement output format control
6360 like in Octave.
6363 like in Octave.
6361
6364
6362 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6365 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6363 methods are found at run-time by all the automatic machinery.
6366 methods are found at run-time by all the automatic machinery.
6364
6367
6365 2002-02-17 Fernando Perez <fperez@colorado.edu>
6368 2002-02-17 Fernando Perez <fperez@colorado.edu>
6366
6369
6367 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6370 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6368 whole file a little.
6371 whole file a little.
6369
6372
6370 * ToDo: closed this document. Now there's a new_design.lyx
6373 * ToDo: closed this document. Now there's a new_design.lyx
6371 document for all new ideas. Added making a pdf of it for the
6374 document for all new ideas. Added making a pdf of it for the
6372 end-user distro.
6375 end-user distro.
6373
6376
6374 * IPython/Logger.py (Logger.switch_log): Created this to replace
6377 * IPython/Logger.py (Logger.switch_log): Created this to replace
6375 logon() and logoff(). It also fixes a nasty crash reported by
6378 logon() and logoff(). It also fixes a nasty crash reported by
6376 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6379 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6377
6380
6378 * IPython/iplib.py (complete): got auto-completion to work with
6381 * IPython/iplib.py (complete): got auto-completion to work with
6379 automagic (I had wanted this for a long time).
6382 automagic (I had wanted this for a long time).
6380
6383
6381 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6384 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6382 to @file, since file() is now a builtin and clashes with automagic
6385 to @file, since file() is now a builtin and clashes with automagic
6383 for @file.
6386 for @file.
6384
6387
6385 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6388 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6386 of this was previously in iplib, which had grown to more than 2000
6389 of this was previously in iplib, which had grown to more than 2000
6387 lines, way too long. No new functionality, but it makes managing
6390 lines, way too long. No new functionality, but it makes managing
6388 the code a bit easier.
6391 the code a bit easier.
6389
6392
6390 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6393 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6391 information to crash reports.
6394 information to crash reports.
6392
6395
6393 2002-02-12 Fernando Perez <fperez@colorado.edu>
6396 2002-02-12 Fernando Perez <fperez@colorado.edu>
6394
6397
6395 * Released 0.2.5.
6398 * Released 0.2.5.
6396
6399
6397 2002-02-11 Fernando Perez <fperez@colorado.edu>
6400 2002-02-11 Fernando Perez <fperez@colorado.edu>
6398
6401
6399 * Wrote a relatively complete Windows installer. It puts
6402 * Wrote a relatively complete Windows installer. It puts
6400 everything in place, creates Start Menu entries and fixes the
6403 everything in place, creates Start Menu entries and fixes the
6401 color issues. Nothing fancy, but it works.
6404 color issues. Nothing fancy, but it works.
6402
6405
6403 2002-02-10 Fernando Perez <fperez@colorado.edu>
6406 2002-02-10 Fernando Perez <fperez@colorado.edu>
6404
6407
6405 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6408 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6406 os.path.expanduser() call so that we can type @run ~/myfile.py and
6409 os.path.expanduser() call so that we can type @run ~/myfile.py and
6407 have thigs work as expected.
6410 have thigs work as expected.
6408
6411
6409 * IPython/genutils.py (page): fixed exception handling so things
6412 * IPython/genutils.py (page): fixed exception handling so things
6410 work both in Unix and Windows correctly. Quitting a pager triggers
6413 work both in Unix and Windows correctly. Quitting a pager triggers
6411 an IOError/broken pipe in Unix, and in windows not finding a pager
6414 an IOError/broken pipe in Unix, and in windows not finding a pager
6412 is also an IOError, so I had to actually look at the return value
6415 is also an IOError, so I had to actually look at the return value
6413 of the exception, not just the exception itself. Should be ok now.
6416 of the exception, not just the exception itself. Should be ok now.
6414
6417
6415 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6418 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6416 modified to allow case-insensitive color scheme changes.
6419 modified to allow case-insensitive color scheme changes.
6417
6420
6418 2002-02-09 Fernando Perez <fperez@colorado.edu>
6421 2002-02-09 Fernando Perez <fperez@colorado.edu>
6419
6422
6420 * IPython/genutils.py (native_line_ends): new function to leave
6423 * IPython/genutils.py (native_line_ends): new function to leave
6421 user config files with os-native line-endings.
6424 user config files with os-native line-endings.
6422
6425
6423 * README and manual updates.
6426 * README and manual updates.
6424
6427
6425 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6428 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6426 instead of StringType to catch Unicode strings.
6429 instead of StringType to catch Unicode strings.
6427
6430
6428 * IPython/genutils.py (filefind): fixed bug for paths with
6431 * IPython/genutils.py (filefind): fixed bug for paths with
6429 embedded spaces (very common in Windows).
6432 embedded spaces (very common in Windows).
6430
6433
6431 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6434 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6432 files under Windows, so that they get automatically associated
6435 files under Windows, so that they get automatically associated
6433 with a text editor. Windows makes it a pain to handle
6436 with a text editor. Windows makes it a pain to handle
6434 extension-less files.
6437 extension-less files.
6435
6438
6436 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6439 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6437 warning about readline only occur for Posix. In Windows there's no
6440 warning about readline only occur for Posix. In Windows there's no
6438 way to get readline, so why bother with the warning.
6441 way to get readline, so why bother with the warning.
6439
6442
6440 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6443 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6441 for __str__ instead of dir(self), since dir() changed in 2.2.
6444 for __str__ instead of dir(self), since dir() changed in 2.2.
6442
6445
6443 * Ported to Windows! Tested on XP, I suspect it should work fine
6446 * Ported to Windows! Tested on XP, I suspect it should work fine
6444 on NT/2000, but I don't think it will work on 98 et al. That
6447 on NT/2000, but I don't think it will work on 98 et al. That
6445 series of Windows is such a piece of junk anyway that I won't try
6448 series of Windows is such a piece of junk anyway that I won't try
6446 porting it there. The XP port was straightforward, showed a few
6449 porting it there. The XP port was straightforward, showed a few
6447 bugs here and there (fixed all), in particular some string
6450 bugs here and there (fixed all), in particular some string
6448 handling stuff which required considering Unicode strings (which
6451 handling stuff which required considering Unicode strings (which
6449 Windows uses). This is good, but hasn't been too tested :) No
6452 Windows uses). This is good, but hasn't been too tested :) No
6450 fancy installer yet, I'll put a note in the manual so people at
6453 fancy installer yet, I'll put a note in the manual so people at
6451 least make manually a shortcut.
6454 least make manually a shortcut.
6452
6455
6453 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6456 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6454 into a single one, "colors". This now controls both prompt and
6457 into a single one, "colors". This now controls both prompt and
6455 exception color schemes, and can be changed both at startup
6458 exception color schemes, and can be changed both at startup
6456 (either via command-line switches or via ipythonrc files) and at
6459 (either via command-line switches or via ipythonrc files) and at
6457 runtime, with @colors.
6460 runtime, with @colors.
6458 (Magic.magic_run): renamed @prun to @run and removed the old
6461 (Magic.magic_run): renamed @prun to @run and removed the old
6459 @run. The two were too similar to warrant keeping both.
6462 @run. The two were too similar to warrant keeping both.
6460
6463
6461 2002-02-03 Fernando Perez <fperez@colorado.edu>
6464 2002-02-03 Fernando Perez <fperez@colorado.edu>
6462
6465
6463 * IPython/iplib.py (install_first_time): Added comment on how to
6466 * IPython/iplib.py (install_first_time): Added comment on how to
6464 configure the color options for first-time users. Put a <return>
6467 configure the color options for first-time users. Put a <return>
6465 request at the end so that small-terminal users get a chance to
6468 request at the end so that small-terminal users get a chance to
6466 read the startup info.
6469 read the startup info.
6467
6470
6468 2002-01-23 Fernando Perez <fperez@colorado.edu>
6471 2002-01-23 Fernando Perez <fperez@colorado.edu>
6469
6472
6470 * IPython/iplib.py (CachedOutput.update): Changed output memory
6473 * IPython/iplib.py (CachedOutput.update): Changed output memory
6471 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6474 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6472 input history we still use _i. Did this b/c these variable are
6475 input history we still use _i. Did this b/c these variable are
6473 very commonly used in interactive work, so the less we need to
6476 very commonly used in interactive work, so the less we need to
6474 type the better off we are.
6477 type the better off we are.
6475 (Magic.magic_prun): updated @prun to better handle the namespaces
6478 (Magic.magic_prun): updated @prun to better handle the namespaces
6476 the file will run in, including a fix for __name__ not being set
6479 the file will run in, including a fix for __name__ not being set
6477 before.
6480 before.
6478
6481
6479 2002-01-20 Fernando Perez <fperez@colorado.edu>
6482 2002-01-20 Fernando Perez <fperez@colorado.edu>
6480
6483
6481 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6484 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6482 extra garbage for Python 2.2. Need to look more carefully into
6485 extra garbage for Python 2.2. Need to look more carefully into
6483 this later.
6486 this later.
6484
6487
6485 2002-01-19 Fernando Perez <fperez@colorado.edu>
6488 2002-01-19 Fernando Perez <fperez@colorado.edu>
6486
6489
6487 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6490 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6488 display SyntaxError exceptions properly formatted when they occur
6491 display SyntaxError exceptions properly formatted when they occur
6489 (they can be triggered by imported code).
6492 (they can be triggered by imported code).
6490
6493
6491 2002-01-18 Fernando Perez <fperez@colorado.edu>
6494 2002-01-18 Fernando Perez <fperez@colorado.edu>
6492
6495
6493 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6496 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6494 SyntaxError exceptions are reported nicely formatted, instead of
6497 SyntaxError exceptions are reported nicely formatted, instead of
6495 spitting out only offset information as before.
6498 spitting out only offset information as before.
6496 (Magic.magic_prun): Added the @prun function for executing
6499 (Magic.magic_prun): Added the @prun function for executing
6497 programs with command line args inside IPython.
6500 programs with command line args inside IPython.
6498
6501
6499 2002-01-16 Fernando Perez <fperez@colorado.edu>
6502 2002-01-16 Fernando Perez <fperez@colorado.edu>
6500
6503
6501 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6504 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6502 to *not* include the last item given in a range. This brings their
6505 to *not* include the last item given in a range. This brings their
6503 behavior in line with Python's slicing:
6506 behavior in line with Python's slicing:
6504 a[n1:n2] -> a[n1]...a[n2-1]
6507 a[n1:n2] -> a[n1]...a[n2-1]
6505 It may be a bit less convenient, but I prefer to stick to Python's
6508 It may be a bit less convenient, but I prefer to stick to Python's
6506 conventions *everywhere*, so users never have to wonder.
6509 conventions *everywhere*, so users never have to wonder.
6507 (Magic.magic_macro): Added @macro function to ease the creation of
6510 (Magic.magic_macro): Added @macro function to ease the creation of
6508 macros.
6511 macros.
6509
6512
6510 2002-01-05 Fernando Perez <fperez@colorado.edu>
6513 2002-01-05 Fernando Perez <fperez@colorado.edu>
6511
6514
6512 * Released 0.2.4.
6515 * Released 0.2.4.
6513
6516
6514 * IPython/iplib.py (Magic.magic_pdef):
6517 * IPython/iplib.py (Magic.magic_pdef):
6515 (InteractiveShell.safe_execfile): report magic lines and error
6518 (InteractiveShell.safe_execfile): report magic lines and error
6516 lines without line numbers so one can easily copy/paste them for
6519 lines without line numbers so one can easily copy/paste them for
6517 re-execution.
6520 re-execution.
6518
6521
6519 * Updated manual with recent changes.
6522 * Updated manual with recent changes.
6520
6523
6521 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6524 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6522 docstring printing when class? is called. Very handy for knowing
6525 docstring printing when class? is called. Very handy for knowing
6523 how to create class instances (as long as __init__ is well
6526 how to create class instances (as long as __init__ is well
6524 documented, of course :)
6527 documented, of course :)
6525 (Magic.magic_doc): print both class and constructor docstrings.
6528 (Magic.magic_doc): print both class and constructor docstrings.
6526 (Magic.magic_pdef): give constructor info if passed a class and
6529 (Magic.magic_pdef): give constructor info if passed a class and
6527 __call__ info for callable object instances.
6530 __call__ info for callable object instances.
6528
6531
6529 2002-01-04 Fernando Perez <fperez@colorado.edu>
6532 2002-01-04 Fernando Perez <fperez@colorado.edu>
6530
6533
6531 * Made deep_reload() off by default. It doesn't always work
6534 * Made deep_reload() off by default. It doesn't always work
6532 exactly as intended, so it's probably safer to have it off. It's
6535 exactly as intended, so it's probably safer to have it off. It's
6533 still available as dreload() anyway, so nothing is lost.
6536 still available as dreload() anyway, so nothing is lost.
6534
6537
6535 2002-01-02 Fernando Perez <fperez@colorado.edu>
6538 2002-01-02 Fernando Perez <fperez@colorado.edu>
6536
6539
6537 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6540 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6538 so I wanted an updated release).
6541 so I wanted an updated release).
6539
6542
6540 2001-12-27 Fernando Perez <fperez@colorado.edu>
6543 2001-12-27 Fernando Perez <fperez@colorado.edu>
6541
6544
6542 * IPython/iplib.py (InteractiveShell.interact): Added the original
6545 * IPython/iplib.py (InteractiveShell.interact): Added the original
6543 code from 'code.py' for this module in order to change the
6546 code from 'code.py' for this module in order to change the
6544 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6547 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6545 the history cache would break when the user hit Ctrl-C, and
6548 the history cache would break when the user hit Ctrl-C, and
6546 interact() offers no way to add any hooks to it.
6549 interact() offers no way to add any hooks to it.
6547
6550
6548 2001-12-23 Fernando Perez <fperez@colorado.edu>
6551 2001-12-23 Fernando Perez <fperez@colorado.edu>
6549
6552
6550 * setup.py: added check for 'MANIFEST' before trying to remove
6553 * setup.py: added check for 'MANIFEST' before trying to remove
6551 it. Thanks to Sean Reifschneider.
6554 it. Thanks to Sean Reifschneider.
6552
6555
6553 2001-12-22 Fernando Perez <fperez@colorado.edu>
6556 2001-12-22 Fernando Perez <fperez@colorado.edu>
6554
6557
6555 * Released 0.2.2.
6558 * Released 0.2.2.
6556
6559
6557 * Finished (reasonably) writing the manual. Later will add the
6560 * Finished (reasonably) writing the manual. Later will add the
6558 python-standard navigation stylesheets, but for the time being
6561 python-standard navigation stylesheets, but for the time being
6559 it's fairly complete. Distribution will include html and pdf
6562 it's fairly complete. Distribution will include html and pdf
6560 versions.
6563 versions.
6561
6564
6562 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6565 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6563 (MayaVi author).
6566 (MayaVi author).
6564
6567
6565 2001-12-21 Fernando Perez <fperez@colorado.edu>
6568 2001-12-21 Fernando Perez <fperez@colorado.edu>
6566
6569
6567 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6570 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6568 good public release, I think (with the manual and the distutils
6571 good public release, I think (with the manual and the distutils
6569 installer). The manual can use some work, but that can go
6572 installer). The manual can use some work, but that can go
6570 slowly. Otherwise I think it's quite nice for end users. Next
6573 slowly. Otherwise I think it's quite nice for end users. Next
6571 summer, rewrite the guts of it...
6574 summer, rewrite the guts of it...
6572
6575
6573 * Changed format of ipythonrc files to use whitespace as the
6576 * Changed format of ipythonrc files to use whitespace as the
6574 separator instead of an explicit '='. Cleaner.
6577 separator instead of an explicit '='. Cleaner.
6575
6578
6576 2001-12-20 Fernando Perez <fperez@colorado.edu>
6579 2001-12-20 Fernando Perez <fperez@colorado.edu>
6577
6580
6578 * Started a manual in LyX. For now it's just a quick merge of the
6581 * Started a manual in LyX. For now it's just a quick merge of the
6579 various internal docstrings and READMEs. Later it may grow into a
6582 various internal docstrings and READMEs. Later it may grow into a
6580 nice, full-blown manual.
6583 nice, full-blown manual.
6581
6584
6582 * Set up a distutils based installer. Installation should now be
6585 * Set up a distutils based installer. Installation should now be
6583 trivially simple for end-users.
6586 trivially simple for end-users.
6584
6587
6585 2001-12-11 Fernando Perez <fperez@colorado.edu>
6588 2001-12-11 Fernando Perez <fperez@colorado.edu>
6586
6589
6587 * Released 0.2.0. First public release, announced it at
6590 * Released 0.2.0. First public release, announced it at
6588 comp.lang.python. From now on, just bugfixes...
6591 comp.lang.python. From now on, just bugfixes...
6589
6592
6590 * Went through all the files, set copyright/license notices and
6593 * Went through all the files, set copyright/license notices and
6591 cleaned up things. Ready for release.
6594 cleaned up things. Ready for release.
6592
6595
6593 2001-12-10 Fernando Perez <fperez@colorado.edu>
6596 2001-12-10 Fernando Perez <fperez@colorado.edu>
6594
6597
6595 * Changed the first-time installer not to use tarfiles. It's more
6598 * Changed the first-time installer not to use tarfiles. It's more
6596 robust now and less unix-dependent. Also makes it easier for
6599 robust now and less unix-dependent. Also makes it easier for
6597 people to later upgrade versions.
6600 people to later upgrade versions.
6598
6601
6599 * Changed @exit to @abort to reflect the fact that it's pretty
6602 * Changed @exit to @abort to reflect the fact that it's pretty
6600 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6603 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6601 becomes significant only when IPyhton is embedded: in that case,
6604 becomes significant only when IPyhton is embedded: in that case,
6602 C-D closes IPython only, but @abort kills the enclosing program
6605 C-D closes IPython only, but @abort kills the enclosing program
6603 too (unless it had called IPython inside a try catching
6606 too (unless it had called IPython inside a try catching
6604 SystemExit).
6607 SystemExit).
6605
6608
6606 * Created Shell module which exposes the actuall IPython Shell
6609 * Created Shell module which exposes the actuall IPython Shell
6607 classes, currently the normal and the embeddable one. This at
6610 classes, currently the normal and the embeddable one. This at
6608 least offers a stable interface we won't need to change when
6611 least offers a stable interface we won't need to change when
6609 (later) the internals are rewritten. That rewrite will be confined
6612 (later) the internals are rewritten. That rewrite will be confined
6610 to iplib and ipmaker, but the Shell interface should remain as is.
6613 to iplib and ipmaker, but the Shell interface should remain as is.
6611
6614
6612 * Added embed module which offers an embeddable IPShell object,
6615 * Added embed module which offers an embeddable IPShell object,
6613 useful to fire up IPython *inside* a running program. Great for
6616 useful to fire up IPython *inside* a running program. Great for
6614 debugging or dynamical data analysis.
6617 debugging or dynamical data analysis.
6615
6618
6616 2001-12-08 Fernando Perez <fperez@colorado.edu>
6619 2001-12-08 Fernando Perez <fperez@colorado.edu>
6617
6620
6618 * Fixed small bug preventing seeing info from methods of defined
6621 * Fixed small bug preventing seeing info from methods of defined
6619 objects (incorrect namespace in _ofind()).
6622 objects (incorrect namespace in _ofind()).
6620
6623
6621 * Documentation cleanup. Moved the main usage docstrings to a
6624 * Documentation cleanup. Moved the main usage docstrings to a
6622 separate file, usage.py (cleaner to maintain, and hopefully in the
6625 separate file, usage.py (cleaner to maintain, and hopefully in the
6623 future some perlpod-like way of producing interactive, man and
6626 future some perlpod-like way of producing interactive, man and
6624 html docs out of it will be found).
6627 html docs out of it will be found).
6625
6628
6626 * Added @profile to see your profile at any time.
6629 * Added @profile to see your profile at any time.
6627
6630
6628 * Added @p as an alias for 'print'. It's especially convenient if
6631 * Added @p as an alias for 'print'. It's especially convenient if
6629 using automagic ('p x' prints x).
6632 using automagic ('p x' prints x).
6630
6633
6631 * Small cleanups and fixes after a pychecker run.
6634 * Small cleanups and fixes after a pychecker run.
6632
6635
6633 * Changed the @cd command to handle @cd - and @cd -<n> for
6636 * Changed the @cd command to handle @cd - and @cd -<n> for
6634 visiting any directory in _dh.
6637 visiting any directory in _dh.
6635
6638
6636 * Introduced _dh, a history of visited directories. @dhist prints
6639 * Introduced _dh, a history of visited directories. @dhist prints
6637 it out with numbers.
6640 it out with numbers.
6638
6641
6639 2001-12-07 Fernando Perez <fperez@colorado.edu>
6642 2001-12-07 Fernando Perez <fperez@colorado.edu>
6640
6643
6641 * Released 0.1.22
6644 * Released 0.1.22
6642
6645
6643 * Made initialization a bit more robust against invalid color
6646 * Made initialization a bit more robust against invalid color
6644 options in user input (exit, not traceback-crash).
6647 options in user input (exit, not traceback-crash).
6645
6648
6646 * Changed the bug crash reporter to write the report only in the
6649 * Changed the bug crash reporter to write the report only in the
6647 user's .ipython directory. That way IPython won't litter people's
6650 user's .ipython directory. That way IPython won't litter people's
6648 hard disks with crash files all over the place. Also print on
6651 hard disks with crash files all over the place. Also print on
6649 screen the necessary mail command.
6652 screen the necessary mail command.
6650
6653
6651 * With the new ultraTB, implemented LightBG color scheme for light
6654 * With the new ultraTB, implemented LightBG color scheme for light
6652 background terminals. A lot of people like white backgrounds, so I
6655 background terminals. A lot of people like white backgrounds, so I
6653 guess we should at least give them something readable.
6656 guess we should at least give them something readable.
6654
6657
6655 2001-12-06 Fernando Perez <fperez@colorado.edu>
6658 2001-12-06 Fernando Perez <fperez@colorado.edu>
6656
6659
6657 * Modified the structure of ultraTB. Now there's a proper class
6660 * Modified the structure of ultraTB. Now there's a proper class
6658 for tables of color schemes which allow adding schemes easily and
6661 for tables of color schemes which allow adding schemes easily and
6659 switching the active scheme without creating a new instance every
6662 switching the active scheme without creating a new instance every
6660 time (which was ridiculous). The syntax for creating new schemes
6663 time (which was ridiculous). The syntax for creating new schemes
6661 is also cleaner. I think ultraTB is finally done, with a clean
6664 is also cleaner. I think ultraTB is finally done, with a clean
6662 class structure. Names are also much cleaner (now there's proper
6665 class structure. Names are also much cleaner (now there's proper
6663 color tables, no need for every variable to also have 'color' in
6666 color tables, no need for every variable to also have 'color' in
6664 its name).
6667 its name).
6665
6668
6666 * Broke down genutils into separate files. Now genutils only
6669 * Broke down genutils into separate files. Now genutils only
6667 contains utility functions, and classes have been moved to their
6670 contains utility functions, and classes have been moved to their
6668 own files (they had enough independent functionality to warrant
6671 own files (they had enough independent functionality to warrant
6669 it): ConfigLoader, OutputTrap, Struct.
6672 it): ConfigLoader, OutputTrap, Struct.
6670
6673
6671 2001-12-05 Fernando Perez <fperez@colorado.edu>
6674 2001-12-05 Fernando Perez <fperez@colorado.edu>
6672
6675
6673 * IPython turns 21! Released version 0.1.21, as a candidate for
6676 * IPython turns 21! Released version 0.1.21, as a candidate for
6674 public consumption. If all goes well, release in a few days.
6677 public consumption. If all goes well, release in a few days.
6675
6678
6676 * Fixed path bug (files in Extensions/ directory wouldn't be found
6679 * Fixed path bug (files in Extensions/ directory wouldn't be found
6677 unless IPython/ was explicitly in sys.path).
6680 unless IPython/ was explicitly in sys.path).
6678
6681
6679 * Extended the FlexCompleter class as MagicCompleter to allow
6682 * Extended the FlexCompleter class as MagicCompleter to allow
6680 completion of @-starting lines.
6683 completion of @-starting lines.
6681
6684
6682 * Created __release__.py file as a central repository for release
6685 * Created __release__.py file as a central repository for release
6683 info that other files can read from.
6686 info that other files can read from.
6684
6687
6685 * Fixed small bug in logging: when logging was turned on in
6688 * Fixed small bug in logging: when logging was turned on in
6686 mid-session, old lines with special meanings (!@?) were being
6689 mid-session, old lines with special meanings (!@?) were being
6687 logged without the prepended comment, which is necessary since
6690 logged without the prepended comment, which is necessary since
6688 they are not truly valid python syntax. This should make session
6691 they are not truly valid python syntax. This should make session
6689 restores produce less errors.
6692 restores produce less errors.
6690
6693
6691 * The namespace cleanup forced me to make a FlexCompleter class
6694 * The namespace cleanup forced me to make a FlexCompleter class
6692 which is nothing but a ripoff of rlcompleter, but with selectable
6695 which is nothing but a ripoff of rlcompleter, but with selectable
6693 namespace (rlcompleter only works in __main__.__dict__). I'll try
6696 namespace (rlcompleter only works in __main__.__dict__). I'll try
6694 to submit a note to the authors to see if this change can be
6697 to submit a note to the authors to see if this change can be
6695 incorporated in future rlcompleter releases (Dec.6: done)
6698 incorporated in future rlcompleter releases (Dec.6: done)
6696
6699
6697 * More fixes to namespace handling. It was a mess! Now all
6700 * More fixes to namespace handling. It was a mess! Now all
6698 explicit references to __main__.__dict__ are gone (except when
6701 explicit references to __main__.__dict__ are gone (except when
6699 really needed) and everything is handled through the namespace
6702 really needed) and everything is handled through the namespace
6700 dicts in the IPython instance. We seem to be getting somewhere
6703 dicts in the IPython instance. We seem to be getting somewhere
6701 with this, finally...
6704 with this, finally...
6702
6705
6703 * Small documentation updates.
6706 * Small documentation updates.
6704
6707
6705 * Created the Extensions directory under IPython (with an
6708 * Created the Extensions directory under IPython (with an
6706 __init__.py). Put the PhysicalQ stuff there. This directory should
6709 __init__.py). Put the PhysicalQ stuff there. This directory should
6707 be used for all special-purpose extensions.
6710 be used for all special-purpose extensions.
6708
6711
6709 * File renaming:
6712 * File renaming:
6710 ipythonlib --> ipmaker
6713 ipythonlib --> ipmaker
6711 ipplib --> iplib
6714 ipplib --> iplib
6712 This makes a bit more sense in terms of what these files actually do.
6715 This makes a bit more sense in terms of what these files actually do.
6713
6716
6714 * Moved all the classes and functions in ipythonlib to ipplib, so
6717 * Moved all the classes and functions in ipythonlib to ipplib, so
6715 now ipythonlib only has make_IPython(). This will ease up its
6718 now ipythonlib only has make_IPython(). This will ease up its
6716 splitting in smaller functional chunks later.
6719 splitting in smaller functional chunks later.
6717
6720
6718 * Cleaned up (done, I think) output of @whos. Better column
6721 * Cleaned up (done, I think) output of @whos. Better column
6719 formatting, and now shows str(var) for as much as it can, which is
6722 formatting, and now shows str(var) for as much as it can, which is
6720 typically what one gets with a 'print var'.
6723 typically what one gets with a 'print var'.
6721
6724
6722 2001-12-04 Fernando Perez <fperez@colorado.edu>
6725 2001-12-04 Fernando Perez <fperez@colorado.edu>
6723
6726
6724 * Fixed namespace problems. Now builtin/IPyhton/user names get
6727 * Fixed namespace problems. Now builtin/IPyhton/user names get
6725 properly reported in their namespace. Internal namespace handling
6728 properly reported in their namespace. Internal namespace handling
6726 is finally getting decent (not perfect yet, but much better than
6729 is finally getting decent (not perfect yet, but much better than
6727 the ad-hoc mess we had).
6730 the ad-hoc mess we had).
6728
6731
6729 * Removed -exit option. If people just want to run a python
6732 * Removed -exit option. If people just want to run a python
6730 script, that's what the normal interpreter is for. Less
6733 script, that's what the normal interpreter is for. Less
6731 unnecessary options, less chances for bugs.
6734 unnecessary options, less chances for bugs.
6732
6735
6733 * Added a crash handler which generates a complete post-mortem if
6736 * Added a crash handler which generates a complete post-mortem if
6734 IPython crashes. This will help a lot in tracking bugs down the
6737 IPython crashes. This will help a lot in tracking bugs down the
6735 road.
6738 road.
6736
6739
6737 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6740 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6738 which were boud to functions being reassigned would bypass the
6741 which were boud to functions being reassigned would bypass the
6739 logger, breaking the sync of _il with the prompt counter. This
6742 logger, breaking the sync of _il with the prompt counter. This
6740 would then crash IPython later when a new line was logged.
6743 would then crash IPython later when a new line was logged.
6741
6744
6742 2001-12-02 Fernando Perez <fperez@colorado.edu>
6745 2001-12-02 Fernando Perez <fperez@colorado.edu>
6743
6746
6744 * Made IPython a package. This means people don't have to clutter
6747 * Made IPython a package. This means people don't have to clutter
6745 their sys.path with yet another directory. Changed the INSTALL
6748 their sys.path with yet another directory. Changed the INSTALL
6746 file accordingly.
6749 file accordingly.
6747
6750
6748 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6751 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6749 sorts its output (so @who shows it sorted) and @whos formats the
6752 sorts its output (so @who shows it sorted) and @whos formats the
6750 table according to the width of the first column. Nicer, easier to
6753 table according to the width of the first column. Nicer, easier to
6751 read. Todo: write a generic table_format() which takes a list of
6754 read. Todo: write a generic table_format() which takes a list of
6752 lists and prints it nicely formatted, with optional row/column
6755 lists and prints it nicely formatted, with optional row/column
6753 separators and proper padding and justification.
6756 separators and proper padding and justification.
6754
6757
6755 * Released 0.1.20
6758 * Released 0.1.20
6756
6759
6757 * Fixed bug in @log which would reverse the inputcache list (a
6760 * Fixed bug in @log which would reverse the inputcache list (a
6758 copy operation was missing).
6761 copy operation was missing).
6759
6762
6760 * Code cleanup. @config was changed to use page(). Better, since
6763 * Code cleanup. @config was changed to use page(). Better, since
6761 its output is always quite long.
6764 its output is always quite long.
6762
6765
6763 * Itpl is back as a dependency. I was having too many problems
6766 * Itpl is back as a dependency. I was having too many problems
6764 getting the parametric aliases to work reliably, and it's just
6767 getting the parametric aliases to work reliably, and it's just
6765 easier to code weird string operations with it than playing %()s
6768 easier to code weird string operations with it than playing %()s
6766 games. It's only ~6k, so I don't think it's too big a deal.
6769 games. It's only ~6k, so I don't think it's too big a deal.
6767
6770
6768 * Found (and fixed) a very nasty bug with history. !lines weren't
6771 * Found (and fixed) a very nasty bug with history. !lines weren't
6769 getting cached, and the out of sync caches would crash
6772 getting cached, and the out of sync caches would crash
6770 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6773 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6771 division of labor a bit better. Bug fixed, cleaner structure.
6774 division of labor a bit better. Bug fixed, cleaner structure.
6772
6775
6773 2001-12-01 Fernando Perez <fperez@colorado.edu>
6776 2001-12-01 Fernando Perez <fperez@colorado.edu>
6774
6777
6775 * Released 0.1.19
6778 * Released 0.1.19
6776
6779
6777 * Added option -n to @hist to prevent line number printing. Much
6780 * Added option -n to @hist to prevent line number printing. Much
6778 easier to copy/paste code this way.
6781 easier to copy/paste code this way.
6779
6782
6780 * Created global _il to hold the input list. Allows easy
6783 * Created global _il to hold the input list. Allows easy
6781 re-execution of blocks of code by slicing it (inspired by Janko's
6784 re-execution of blocks of code by slicing it (inspired by Janko's
6782 comment on 'macros').
6785 comment on 'macros').
6783
6786
6784 * Small fixes and doc updates.
6787 * Small fixes and doc updates.
6785
6788
6786 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6789 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6787 much too fragile with automagic. Handles properly multi-line
6790 much too fragile with automagic. Handles properly multi-line
6788 statements and takes parameters.
6791 statements and takes parameters.
6789
6792
6790 2001-11-30 Fernando Perez <fperez@colorado.edu>
6793 2001-11-30 Fernando Perez <fperez@colorado.edu>
6791
6794
6792 * Version 0.1.18 released.
6795 * Version 0.1.18 released.
6793
6796
6794 * Fixed nasty namespace bug in initial module imports.
6797 * Fixed nasty namespace bug in initial module imports.
6795
6798
6796 * Added copyright/license notes to all code files (except
6799 * Added copyright/license notes to all code files (except
6797 DPyGetOpt). For the time being, LGPL. That could change.
6800 DPyGetOpt). For the time being, LGPL. That could change.
6798
6801
6799 * Rewrote a much nicer README, updated INSTALL, cleaned up
6802 * Rewrote a much nicer README, updated INSTALL, cleaned up
6800 ipythonrc-* samples.
6803 ipythonrc-* samples.
6801
6804
6802 * Overall code/documentation cleanup. Basically ready for
6805 * Overall code/documentation cleanup. Basically ready for
6803 release. Only remaining thing: licence decision (LGPL?).
6806 release. Only remaining thing: licence decision (LGPL?).
6804
6807
6805 * Converted load_config to a class, ConfigLoader. Now recursion
6808 * Converted load_config to a class, ConfigLoader. Now recursion
6806 control is better organized. Doesn't include the same file twice.
6809 control is better organized. Doesn't include the same file twice.
6807
6810
6808 2001-11-29 Fernando Perez <fperez@colorado.edu>
6811 2001-11-29 Fernando Perez <fperez@colorado.edu>
6809
6812
6810 * Got input history working. Changed output history variables from
6813 * Got input history working. Changed output history variables from
6811 _p to _o so that _i is for input and _o for output. Just cleaner
6814 _p to _o so that _i is for input and _o for output. Just cleaner
6812 convention.
6815 convention.
6813
6816
6814 * Implemented parametric aliases. This pretty much allows the
6817 * Implemented parametric aliases. This pretty much allows the
6815 alias system to offer full-blown shell convenience, I think.
6818 alias system to offer full-blown shell convenience, I think.
6816
6819
6817 * Version 0.1.17 released, 0.1.18 opened.
6820 * Version 0.1.17 released, 0.1.18 opened.
6818
6821
6819 * dot_ipython/ipythonrc (alias): added documentation.
6822 * dot_ipython/ipythonrc (alias): added documentation.
6820 (xcolor): Fixed small bug (xcolors -> xcolor)
6823 (xcolor): Fixed small bug (xcolors -> xcolor)
6821
6824
6822 * Changed the alias system. Now alias is a magic command to define
6825 * Changed the alias system. Now alias is a magic command to define
6823 aliases just like the shell. Rationale: the builtin magics should
6826 aliases just like the shell. Rationale: the builtin magics should
6824 be there for things deeply connected to IPython's
6827 be there for things deeply connected to IPython's
6825 architecture. And this is a much lighter system for what I think
6828 architecture. And this is a much lighter system for what I think
6826 is the really important feature: allowing users to define quickly
6829 is the really important feature: allowing users to define quickly
6827 magics that will do shell things for them, so they can customize
6830 magics that will do shell things for them, so they can customize
6828 IPython easily to match their work habits. If someone is really
6831 IPython easily to match their work habits. If someone is really
6829 desperate to have another name for a builtin alias, they can
6832 desperate to have another name for a builtin alias, they can
6830 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6833 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6831 works.
6834 works.
6832
6835
6833 2001-11-28 Fernando Perez <fperez@colorado.edu>
6836 2001-11-28 Fernando Perez <fperez@colorado.edu>
6834
6837
6835 * Changed @file so that it opens the source file at the proper
6838 * Changed @file so that it opens the source file at the proper
6836 line. Since it uses less, if your EDITOR environment is
6839 line. Since it uses less, if your EDITOR environment is
6837 configured, typing v will immediately open your editor of choice
6840 configured, typing v will immediately open your editor of choice
6838 right at the line where the object is defined. Not as quick as
6841 right at the line where the object is defined. Not as quick as
6839 having a direct @edit command, but for all intents and purposes it
6842 having a direct @edit command, but for all intents and purposes it
6840 works. And I don't have to worry about writing @edit to deal with
6843 works. And I don't have to worry about writing @edit to deal with
6841 all the editors, less does that.
6844 all the editors, less does that.
6842
6845
6843 * Version 0.1.16 released, 0.1.17 opened.
6846 * Version 0.1.16 released, 0.1.17 opened.
6844
6847
6845 * Fixed some nasty bugs in the page/page_dumb combo that could
6848 * Fixed some nasty bugs in the page/page_dumb combo that could
6846 crash IPython.
6849 crash IPython.
6847
6850
6848 2001-11-27 Fernando Perez <fperez@colorado.edu>
6851 2001-11-27 Fernando Perez <fperez@colorado.edu>
6849
6852
6850 * Version 0.1.15 released, 0.1.16 opened.
6853 * Version 0.1.15 released, 0.1.16 opened.
6851
6854
6852 * Finally got ? and ?? to work for undefined things: now it's
6855 * Finally got ? and ?? to work for undefined things: now it's
6853 possible to type {}.get? and get information about the get method
6856 possible to type {}.get? and get information about the get method
6854 of dicts, or os.path? even if only os is defined (so technically
6857 of dicts, or os.path? even if only os is defined (so technically
6855 os.path isn't). Works at any level. For example, after import os,
6858 os.path isn't). Works at any level. For example, after import os,
6856 os?, os.path?, os.path.abspath? all work. This is great, took some
6859 os?, os.path?, os.path.abspath? all work. This is great, took some
6857 work in _ofind.
6860 work in _ofind.
6858
6861
6859 * Fixed more bugs with logging. The sanest way to do it was to add
6862 * Fixed more bugs with logging. The sanest way to do it was to add
6860 to @log a 'mode' parameter. Killed two in one shot (this mode
6863 to @log a 'mode' parameter. Killed two in one shot (this mode
6861 option was a request of Janko's). I think it's finally clean
6864 option was a request of Janko's). I think it's finally clean
6862 (famous last words).
6865 (famous last words).
6863
6866
6864 * Added a page_dumb() pager which does a decent job of paging on
6867 * Added a page_dumb() pager which does a decent job of paging on
6865 screen, if better things (like less) aren't available. One less
6868 screen, if better things (like less) aren't available. One less
6866 unix dependency (someday maybe somebody will port this to
6869 unix dependency (someday maybe somebody will port this to
6867 windows).
6870 windows).
6868
6871
6869 * Fixed problem in magic_log: would lock of logging out if log
6872 * Fixed problem in magic_log: would lock of logging out if log
6870 creation failed (because it would still think it had succeeded).
6873 creation failed (because it would still think it had succeeded).
6871
6874
6872 * Improved the page() function using curses to auto-detect screen
6875 * Improved the page() function using curses to auto-detect screen
6873 size. Now it can make a much better decision on whether to print
6876 size. Now it can make a much better decision on whether to print
6874 or page a string. Option screen_length was modified: a value 0
6877 or page a string. Option screen_length was modified: a value 0
6875 means auto-detect, and that's the default now.
6878 means auto-detect, and that's the default now.
6876
6879
6877 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6880 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6878 go out. I'll test it for a few days, then talk to Janko about
6881 go out. I'll test it for a few days, then talk to Janko about
6879 licences and announce it.
6882 licences and announce it.
6880
6883
6881 * Fixed the length of the auto-generated ---> prompt which appears
6884 * Fixed the length of the auto-generated ---> prompt which appears
6882 for auto-parens and auto-quotes. Getting this right isn't trivial,
6885 for auto-parens and auto-quotes. Getting this right isn't trivial,
6883 with all the color escapes, different prompt types and optional
6886 with all the color escapes, different prompt types and optional
6884 separators. But it seems to be working in all the combinations.
6887 separators. But it seems to be working in all the combinations.
6885
6888
6886 2001-11-26 Fernando Perez <fperez@colorado.edu>
6889 2001-11-26 Fernando Perez <fperez@colorado.edu>
6887
6890
6888 * Wrote a regexp filter to get option types from the option names
6891 * Wrote a regexp filter to get option types from the option names
6889 string. This eliminates the need to manually keep two duplicate
6892 string. This eliminates the need to manually keep two duplicate
6890 lists.
6893 lists.
6891
6894
6892 * Removed the unneeded check_option_names. Now options are handled
6895 * Removed the unneeded check_option_names. Now options are handled
6893 in a much saner manner and it's easy to visually check that things
6896 in a much saner manner and it's easy to visually check that things
6894 are ok.
6897 are ok.
6895
6898
6896 * Updated version numbers on all files I modified to carry a
6899 * Updated version numbers on all files I modified to carry a
6897 notice so Janko and Nathan have clear version markers.
6900 notice so Janko and Nathan have clear version markers.
6898
6901
6899 * Updated docstring for ultraTB with my changes. I should send
6902 * Updated docstring for ultraTB with my changes. I should send
6900 this to Nathan.
6903 this to Nathan.
6901
6904
6902 * Lots of small fixes. Ran everything through pychecker again.
6905 * Lots of small fixes. Ran everything through pychecker again.
6903
6906
6904 * Made loading of deep_reload an cmd line option. If it's not too
6907 * Made loading of deep_reload an cmd line option. If it's not too
6905 kosher, now people can just disable it. With -nodeep_reload it's
6908 kosher, now people can just disable it. With -nodeep_reload it's
6906 still available as dreload(), it just won't overwrite reload().
6909 still available as dreload(), it just won't overwrite reload().
6907
6910
6908 * Moved many options to the no| form (-opt and -noopt
6911 * Moved many options to the no| form (-opt and -noopt
6909 accepted). Cleaner.
6912 accepted). Cleaner.
6910
6913
6911 * Changed magic_log so that if called with no parameters, it uses
6914 * Changed magic_log so that if called with no parameters, it uses
6912 'rotate' mode. That way auto-generated logs aren't automatically
6915 'rotate' mode. That way auto-generated logs aren't automatically
6913 over-written. For normal logs, now a backup is made if it exists
6916 over-written. For normal logs, now a backup is made if it exists
6914 (only 1 level of backups). A new 'backup' mode was added to the
6917 (only 1 level of backups). A new 'backup' mode was added to the
6915 Logger class to support this. This was a request by Janko.
6918 Logger class to support this. This was a request by Janko.
6916
6919
6917 * Added @logoff/@logon to stop/restart an active log.
6920 * Added @logoff/@logon to stop/restart an active log.
6918
6921
6919 * Fixed a lot of bugs in log saving/replay. It was pretty
6922 * Fixed a lot of bugs in log saving/replay. It was pretty
6920 broken. Now special lines (!@,/) appear properly in the command
6923 broken. Now special lines (!@,/) appear properly in the command
6921 history after a log replay.
6924 history after a log replay.
6922
6925
6923 * Tried and failed to implement full session saving via pickle. My
6926 * Tried and failed to implement full session saving via pickle. My
6924 idea was to pickle __main__.__dict__, but modules can't be
6927 idea was to pickle __main__.__dict__, but modules can't be
6925 pickled. This would be a better alternative to replaying logs, but
6928 pickled. This would be a better alternative to replaying logs, but
6926 seems quite tricky to get to work. Changed -session to be called
6929 seems quite tricky to get to work. Changed -session to be called
6927 -logplay, which more accurately reflects what it does. And if we
6930 -logplay, which more accurately reflects what it does. And if we
6928 ever get real session saving working, -session is now available.
6931 ever get real session saving working, -session is now available.
6929
6932
6930 * Implemented color schemes for prompts also. As for tracebacks,
6933 * Implemented color schemes for prompts also. As for tracebacks,
6931 currently only NoColor and Linux are supported. But now the
6934 currently only NoColor and Linux are supported. But now the
6932 infrastructure is in place, based on a generic ColorScheme
6935 infrastructure is in place, based on a generic ColorScheme
6933 class. So writing and activating new schemes both for the prompts
6936 class. So writing and activating new schemes both for the prompts
6934 and the tracebacks should be straightforward.
6937 and the tracebacks should be straightforward.
6935
6938
6936 * Version 0.1.13 released, 0.1.14 opened.
6939 * Version 0.1.13 released, 0.1.14 opened.
6937
6940
6938 * Changed handling of options for output cache. Now counter is
6941 * Changed handling of options for output cache. Now counter is
6939 hardwired starting at 1 and one specifies the maximum number of
6942 hardwired starting at 1 and one specifies the maximum number of
6940 entries *in the outcache* (not the max prompt counter). This is
6943 entries *in the outcache* (not the max prompt counter). This is
6941 much better, since many statements won't increase the cache
6944 much better, since many statements won't increase the cache
6942 count. It also eliminated some confusing options, now there's only
6945 count. It also eliminated some confusing options, now there's only
6943 one: cache_size.
6946 one: cache_size.
6944
6947
6945 * Added 'alias' magic function and magic_alias option in the
6948 * Added 'alias' magic function and magic_alias option in the
6946 ipythonrc file. Now the user can easily define whatever names he
6949 ipythonrc file. Now the user can easily define whatever names he
6947 wants for the magic functions without having to play weird
6950 wants for the magic functions without having to play weird
6948 namespace games. This gives IPython a real shell-like feel.
6951 namespace games. This gives IPython a real shell-like feel.
6949
6952
6950 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6953 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6951 @ or not).
6954 @ or not).
6952
6955
6953 This was one of the last remaining 'visible' bugs (that I know
6956 This was one of the last remaining 'visible' bugs (that I know
6954 of). I think if I can clean up the session loading so it works
6957 of). I think if I can clean up the session loading so it works
6955 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6958 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6956 about licensing).
6959 about licensing).
6957
6960
6958 2001-11-25 Fernando Perez <fperez@colorado.edu>
6961 2001-11-25 Fernando Perez <fperez@colorado.edu>
6959
6962
6960 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6963 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6961 there's a cleaner distinction between what ? and ?? show.
6964 there's a cleaner distinction between what ? and ?? show.
6962
6965
6963 * Added screen_length option. Now the user can define his own
6966 * Added screen_length option. Now the user can define his own
6964 screen size for page() operations.
6967 screen size for page() operations.
6965
6968
6966 * Implemented magic shell-like functions with automatic code
6969 * Implemented magic shell-like functions with automatic code
6967 generation. Now adding another function is just a matter of adding
6970 generation. Now adding another function is just a matter of adding
6968 an entry to a dict, and the function is dynamically generated at
6971 an entry to a dict, and the function is dynamically generated at
6969 run-time. Python has some really cool features!
6972 run-time. Python has some really cool features!
6970
6973
6971 * Renamed many options to cleanup conventions a little. Now all
6974 * Renamed many options to cleanup conventions a little. Now all
6972 are lowercase, and only underscores where needed. Also in the code
6975 are lowercase, and only underscores where needed. Also in the code
6973 option name tables are clearer.
6976 option name tables are clearer.
6974
6977
6975 * Changed prompts a little. Now input is 'In [n]:' instead of
6978 * Changed prompts a little. Now input is 'In [n]:' instead of
6976 'In[n]:='. This allows it the numbers to be aligned with the
6979 'In[n]:='. This allows it the numbers to be aligned with the
6977 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6980 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6978 Python (it was a Mathematica thing). The '...' continuation prompt
6981 Python (it was a Mathematica thing). The '...' continuation prompt
6979 was also changed a little to align better.
6982 was also changed a little to align better.
6980
6983
6981 * Fixed bug when flushing output cache. Not all _p<n> variables
6984 * Fixed bug when flushing output cache. Not all _p<n> variables
6982 exist, so their deletion needs to be wrapped in a try:
6985 exist, so their deletion needs to be wrapped in a try:
6983
6986
6984 * Figured out how to properly use inspect.formatargspec() (it
6987 * Figured out how to properly use inspect.formatargspec() (it
6985 requires the args preceded by *). So I removed all the code from
6988 requires the args preceded by *). So I removed all the code from
6986 _get_pdef in Magic, which was just replicating that.
6989 _get_pdef in Magic, which was just replicating that.
6987
6990
6988 * Added test to prefilter to allow redefining magic function names
6991 * Added test to prefilter to allow redefining magic function names
6989 as variables. This is ok, since the @ form is always available,
6992 as variables. This is ok, since the @ form is always available,
6990 but whe should allow the user to define a variable called 'ls' if
6993 but whe should allow the user to define a variable called 'ls' if
6991 he needs it.
6994 he needs it.
6992
6995
6993 * Moved the ToDo information from README into a separate ToDo.
6996 * Moved the ToDo information from README into a separate ToDo.
6994
6997
6995 * General code cleanup and small bugfixes. I think it's close to a
6998 * General code cleanup and small bugfixes. I think it's close to a
6996 state where it can be released, obviously with a big 'beta'
6999 state where it can be released, obviously with a big 'beta'
6997 warning on it.
7000 warning on it.
6998
7001
6999 * Got the magic function split to work. Now all magics are defined
7002 * Got the magic function split to work. Now all magics are defined
7000 in a separate class. It just organizes things a bit, and now
7003 in a separate class. It just organizes things a bit, and now
7001 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
7004 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
7002 was too long).
7005 was too long).
7003
7006
7004 * Changed @clear to @reset to avoid potential confusions with
7007 * Changed @clear to @reset to avoid potential confusions with
7005 the shell command clear. Also renamed @cl to @clear, which does
7008 the shell command clear. Also renamed @cl to @clear, which does
7006 exactly what people expect it to from their shell experience.
7009 exactly what people expect it to from their shell experience.
7007
7010
7008 Added a check to the @reset command (since it's so
7011 Added a check to the @reset command (since it's so
7009 destructive, it's probably a good idea to ask for confirmation).
7012 destructive, it's probably a good idea to ask for confirmation).
7010 But now reset only works for full namespace resetting. Since the
7013 But now reset only works for full namespace resetting. Since the
7011 del keyword is already there for deleting a few specific
7014 del keyword is already there for deleting a few specific
7012 variables, I don't see the point of having a redundant magic
7015 variables, I don't see the point of having a redundant magic
7013 function for the same task.
7016 function for the same task.
7014
7017
7015 2001-11-24 Fernando Perez <fperez@colorado.edu>
7018 2001-11-24 Fernando Perez <fperez@colorado.edu>
7016
7019
7017 * Updated the builtin docs (esp. the ? ones).
7020 * Updated the builtin docs (esp. the ? ones).
7018
7021
7019 * Ran all the code through pychecker. Not terribly impressed with
7022 * Ran all the code through pychecker. Not terribly impressed with
7020 it: lots of spurious warnings and didn't really find anything of
7023 it: lots of spurious warnings and didn't really find anything of
7021 substance (just a few modules being imported and not used).
7024 substance (just a few modules being imported and not used).
7022
7025
7023 * Implemented the new ultraTB functionality into IPython. New
7026 * Implemented the new ultraTB functionality into IPython. New
7024 option: xcolors. This chooses color scheme. xmode now only selects
7027 option: xcolors. This chooses color scheme. xmode now only selects
7025 between Plain and Verbose. Better orthogonality.
7028 between Plain and Verbose. Better orthogonality.
7026
7029
7027 * Large rewrite of ultraTB. Much cleaner now, with a separation of
7030 * Large rewrite of ultraTB. Much cleaner now, with a separation of
7028 mode and color scheme for the exception handlers. Now it's
7031 mode and color scheme for the exception handlers. Now it's
7029 possible to have the verbose traceback with no coloring.
7032 possible to have the verbose traceback with no coloring.
7030
7033
7031 2001-11-23 Fernando Perez <fperez@colorado.edu>
7034 2001-11-23 Fernando Perez <fperez@colorado.edu>
7032
7035
7033 * Version 0.1.12 released, 0.1.13 opened.
7036 * Version 0.1.12 released, 0.1.13 opened.
7034
7037
7035 * Removed option to set auto-quote and auto-paren escapes by
7038 * Removed option to set auto-quote and auto-paren escapes by
7036 user. The chances of breaking valid syntax are just too high. If
7039 user. The chances of breaking valid syntax are just too high. If
7037 someone *really* wants, they can always dig into the code.
7040 someone *really* wants, they can always dig into the code.
7038
7041
7039 * Made prompt separators configurable.
7042 * Made prompt separators configurable.
7040
7043
7041 2001-11-22 Fernando Perez <fperez@colorado.edu>
7044 2001-11-22 Fernando Perez <fperez@colorado.edu>
7042
7045
7043 * Small bugfixes in many places.
7046 * Small bugfixes in many places.
7044
7047
7045 * Removed the MyCompleter class from ipplib. It seemed redundant
7048 * Removed the MyCompleter class from ipplib. It seemed redundant
7046 with the C-p,C-n history search functionality. Less code to
7049 with the C-p,C-n history search functionality. Less code to
7047 maintain.
7050 maintain.
7048
7051
7049 * Moved all the original ipython.py code into ipythonlib.py. Right
7052 * Moved all the original ipython.py code into ipythonlib.py. Right
7050 now it's just one big dump into a function called make_IPython, so
7053 now it's just one big dump into a function called make_IPython, so
7051 no real modularity has been gained. But at least it makes the
7054 no real modularity has been gained. But at least it makes the
7052 wrapper script tiny, and since ipythonlib is a module, it gets
7055 wrapper script tiny, and since ipythonlib is a module, it gets
7053 compiled and startup is much faster.
7056 compiled and startup is much faster.
7054
7057
7055 This is a reasobably 'deep' change, so we should test it for a
7058 This is a reasobably 'deep' change, so we should test it for a
7056 while without messing too much more with the code.
7059 while without messing too much more with the code.
7057
7060
7058 2001-11-21 Fernando Perez <fperez@colorado.edu>
7061 2001-11-21 Fernando Perez <fperez@colorado.edu>
7059
7062
7060 * Version 0.1.11 released, 0.1.12 opened for further work.
7063 * Version 0.1.11 released, 0.1.12 opened for further work.
7061
7064
7062 * Removed dependency on Itpl. It was only needed in one place. It
7065 * Removed dependency on Itpl. It was only needed in one place. It
7063 would be nice if this became part of python, though. It makes life
7066 would be nice if this became part of python, though. It makes life
7064 *a lot* easier in some cases.
7067 *a lot* easier in some cases.
7065
7068
7066 * Simplified the prefilter code a bit. Now all handlers are
7069 * Simplified the prefilter code a bit. Now all handlers are
7067 expected to explicitly return a value (at least a blank string).
7070 expected to explicitly return a value (at least a blank string).
7068
7071
7069 * Heavy edits in ipplib. Removed the help system altogether. Now
7072 * Heavy edits in ipplib. Removed the help system altogether. Now
7070 obj?/?? is used for inspecting objects, a magic @doc prints
7073 obj?/?? is used for inspecting objects, a magic @doc prints
7071 docstrings, and full-blown Python help is accessed via the 'help'
7074 docstrings, and full-blown Python help is accessed via the 'help'
7072 keyword. This cleans up a lot of code (less to maintain) and does
7075 keyword. This cleans up a lot of code (less to maintain) and does
7073 the job. Since 'help' is now a standard Python component, might as
7076 the job. Since 'help' is now a standard Python component, might as
7074 well use it and remove duplicate functionality.
7077 well use it and remove duplicate functionality.
7075
7078
7076 Also removed the option to use ipplib as a standalone program. By
7079 Also removed the option to use ipplib as a standalone program. By
7077 now it's too dependent on other parts of IPython to function alone.
7080 now it's too dependent on other parts of IPython to function alone.
7078
7081
7079 * Fixed bug in genutils.pager. It would crash if the pager was
7082 * Fixed bug in genutils.pager. It would crash if the pager was
7080 exited immediately after opening (broken pipe).
7083 exited immediately after opening (broken pipe).
7081
7084
7082 * Trimmed down the VerboseTB reporting a little. The header is
7085 * Trimmed down the VerboseTB reporting a little. The header is
7083 much shorter now and the repeated exception arguments at the end
7086 much shorter now and the repeated exception arguments at the end
7084 have been removed. For interactive use the old header seemed a bit
7087 have been removed. For interactive use the old header seemed a bit
7085 excessive.
7088 excessive.
7086
7089
7087 * Fixed small bug in output of @whos for variables with multi-word
7090 * Fixed small bug in output of @whos for variables with multi-word
7088 types (only first word was displayed).
7091 types (only first word was displayed).
7089
7092
7090 2001-11-17 Fernando Perez <fperez@colorado.edu>
7093 2001-11-17 Fernando Perez <fperez@colorado.edu>
7091
7094
7092 * Version 0.1.10 released, 0.1.11 opened for further work.
7095 * Version 0.1.10 released, 0.1.11 opened for further work.
7093
7096
7094 * Modified dirs and friends. dirs now *returns* the stack (not
7097 * Modified dirs and friends. dirs now *returns* the stack (not
7095 prints), so one can manipulate it as a variable. Convenient to
7098 prints), so one can manipulate it as a variable. Convenient to
7096 travel along many directories.
7099 travel along many directories.
7097
7100
7098 * Fixed bug in magic_pdef: would only work with functions with
7101 * Fixed bug in magic_pdef: would only work with functions with
7099 arguments with default values.
7102 arguments with default values.
7100
7103
7101 2001-11-14 Fernando Perez <fperez@colorado.edu>
7104 2001-11-14 Fernando Perez <fperez@colorado.edu>
7102
7105
7103 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7106 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7104 example with IPython. Various other minor fixes and cleanups.
7107 example with IPython. Various other minor fixes and cleanups.
7105
7108
7106 * Version 0.1.9 released, 0.1.10 opened for further work.
7109 * Version 0.1.9 released, 0.1.10 opened for further work.
7107
7110
7108 * Added sys.path to the list of directories searched in the
7111 * Added sys.path to the list of directories searched in the
7109 execfile= option. It used to be the current directory and the
7112 execfile= option. It used to be the current directory and the
7110 user's IPYTHONDIR only.
7113 user's IPYTHONDIR only.
7111
7114
7112 2001-11-13 Fernando Perez <fperez@colorado.edu>
7115 2001-11-13 Fernando Perez <fperez@colorado.edu>
7113
7116
7114 * Reinstated the raw_input/prefilter separation that Janko had
7117 * Reinstated the raw_input/prefilter separation that Janko had
7115 initially. This gives a more convenient setup for extending the
7118 initially. This gives a more convenient setup for extending the
7116 pre-processor from the outside: raw_input always gets a string,
7119 pre-processor from the outside: raw_input always gets a string,
7117 and prefilter has to process it. We can then redefine prefilter
7120 and prefilter has to process it. We can then redefine prefilter
7118 from the outside and implement extensions for special
7121 from the outside and implement extensions for special
7119 purposes.
7122 purposes.
7120
7123
7121 Today I got one for inputting PhysicalQuantity objects
7124 Today I got one for inputting PhysicalQuantity objects
7122 (from Scientific) without needing any function calls at
7125 (from Scientific) without needing any function calls at
7123 all. Extremely convenient, and it's all done as a user-level
7126 all. Extremely convenient, and it's all done as a user-level
7124 extension (no IPython code was touched). Now instead of:
7127 extension (no IPython code was touched). Now instead of:
7125 a = PhysicalQuantity(4.2,'m/s**2')
7128 a = PhysicalQuantity(4.2,'m/s**2')
7126 one can simply say
7129 one can simply say
7127 a = 4.2 m/s**2
7130 a = 4.2 m/s**2
7128 or even
7131 or even
7129 a = 4.2 m/s^2
7132 a = 4.2 m/s^2
7130
7133
7131 I use this, but it's also a proof of concept: IPython really is
7134 I use this, but it's also a proof of concept: IPython really is
7132 fully user-extensible, even at the level of the parsing of the
7135 fully user-extensible, even at the level of the parsing of the
7133 command line. It's not trivial, but it's perfectly doable.
7136 command line. It's not trivial, but it's perfectly doable.
7134
7137
7135 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7138 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7136 the problem of modules being loaded in the inverse order in which
7139 the problem of modules being loaded in the inverse order in which
7137 they were defined in
7140 they were defined in
7138
7141
7139 * Version 0.1.8 released, 0.1.9 opened for further work.
7142 * Version 0.1.8 released, 0.1.9 opened for further work.
7140
7143
7141 * Added magics pdef, source and file. They respectively show the
7144 * Added magics pdef, source and file. They respectively show the
7142 definition line ('prototype' in C), source code and full python
7145 definition line ('prototype' in C), source code and full python
7143 file for any callable object. The object inspector oinfo uses
7146 file for any callable object. The object inspector oinfo uses
7144 these to show the same information.
7147 these to show the same information.
7145
7148
7146 * Version 0.1.7 released, 0.1.8 opened for further work.
7149 * Version 0.1.7 released, 0.1.8 opened for further work.
7147
7150
7148 * Separated all the magic functions into a class called Magic. The
7151 * Separated all the magic functions into a class called Magic. The
7149 InteractiveShell class was becoming too big for Xemacs to handle
7152 InteractiveShell class was becoming too big for Xemacs to handle
7150 (de-indenting a line would lock it up for 10 seconds while it
7153 (de-indenting a line would lock it up for 10 seconds while it
7151 backtracked on the whole class!)
7154 backtracked on the whole class!)
7152
7155
7153 FIXME: didn't work. It can be done, but right now namespaces are
7156 FIXME: didn't work. It can be done, but right now namespaces are
7154 all messed up. Do it later (reverted it for now, so at least
7157 all messed up. Do it later (reverted it for now, so at least
7155 everything works as before).
7158 everything works as before).
7156
7159
7157 * Got the object introspection system (magic_oinfo) working! I
7160 * Got the object introspection system (magic_oinfo) working! I
7158 think this is pretty much ready for release to Janko, so he can
7161 think this is pretty much ready for release to Janko, so he can
7159 test it for a while and then announce it. Pretty much 100% of what
7162 test it for a while and then announce it. Pretty much 100% of what
7160 I wanted for the 'phase 1' release is ready. Happy, tired.
7163 I wanted for the 'phase 1' release is ready. Happy, tired.
7161
7164
7162 2001-11-12 Fernando Perez <fperez@colorado.edu>
7165 2001-11-12 Fernando Perez <fperez@colorado.edu>
7163
7166
7164 * Version 0.1.6 released, 0.1.7 opened for further work.
7167 * Version 0.1.6 released, 0.1.7 opened for further work.
7165
7168
7166 * Fixed bug in printing: it used to test for truth before
7169 * Fixed bug in printing: it used to test for truth before
7167 printing, so 0 wouldn't print. Now checks for None.
7170 printing, so 0 wouldn't print. Now checks for None.
7168
7171
7169 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7172 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7170 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7173 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7171 reaches by hand into the outputcache. Think of a better way to do
7174 reaches by hand into the outputcache. Think of a better way to do
7172 this later.
7175 this later.
7173
7176
7174 * Various small fixes thanks to Nathan's comments.
7177 * Various small fixes thanks to Nathan's comments.
7175
7178
7176 * Changed magic_pprint to magic_Pprint. This way it doesn't
7179 * Changed magic_pprint to magic_Pprint. This way it doesn't
7177 collide with pprint() and the name is consistent with the command
7180 collide with pprint() and the name is consistent with the command
7178 line option.
7181 line option.
7179
7182
7180 * Changed prompt counter behavior to be fully like
7183 * Changed prompt counter behavior to be fully like
7181 Mathematica's. That is, even input that doesn't return a result
7184 Mathematica's. That is, even input that doesn't return a result
7182 raises the prompt counter. The old behavior was kind of confusing
7185 raises the prompt counter. The old behavior was kind of confusing
7183 (getting the same prompt number several times if the operation
7186 (getting the same prompt number several times if the operation
7184 didn't return a result).
7187 didn't return a result).
7185
7188
7186 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7189 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7187
7190
7188 * Fixed -Classic mode (wasn't working anymore).
7191 * Fixed -Classic mode (wasn't working anymore).
7189
7192
7190 * Added colored prompts using Nathan's new code. Colors are
7193 * Added colored prompts using Nathan's new code. Colors are
7191 currently hardwired, they can be user-configurable. For
7194 currently hardwired, they can be user-configurable. For
7192 developers, they can be chosen in file ipythonlib.py, at the
7195 developers, they can be chosen in file ipythonlib.py, at the
7193 beginning of the CachedOutput class def.
7196 beginning of the CachedOutput class def.
7194
7197
7195 2001-11-11 Fernando Perez <fperez@colorado.edu>
7198 2001-11-11 Fernando Perez <fperez@colorado.edu>
7196
7199
7197 * Version 0.1.5 released, 0.1.6 opened for further work.
7200 * Version 0.1.5 released, 0.1.6 opened for further work.
7198
7201
7199 * Changed magic_env to *return* the environment as a dict (not to
7202 * Changed magic_env to *return* the environment as a dict (not to
7200 print it). This way it prints, but it can also be processed.
7203 print it). This way it prints, but it can also be processed.
7201
7204
7202 * Added Verbose exception reporting to interactive
7205 * Added Verbose exception reporting to interactive
7203 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7206 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7204 traceback. Had to make some changes to the ultraTB file. This is
7207 traceback. Had to make some changes to the ultraTB file. This is
7205 probably the last 'big' thing in my mental todo list. This ties
7208 probably the last 'big' thing in my mental todo list. This ties
7206 in with the next entry:
7209 in with the next entry:
7207
7210
7208 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7211 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7209 has to specify is Plain, Color or Verbose for all exception
7212 has to specify is Plain, Color or Verbose for all exception
7210 handling.
7213 handling.
7211
7214
7212 * Removed ShellServices option. All this can really be done via
7215 * Removed ShellServices option. All this can really be done via
7213 the magic system. It's easier to extend, cleaner and has automatic
7216 the magic system. It's easier to extend, cleaner and has automatic
7214 namespace protection and documentation.
7217 namespace protection and documentation.
7215
7218
7216 2001-11-09 Fernando Perez <fperez@colorado.edu>
7219 2001-11-09 Fernando Perez <fperez@colorado.edu>
7217
7220
7218 * Fixed bug in output cache flushing (missing parameter to
7221 * Fixed bug in output cache flushing (missing parameter to
7219 __init__). Other small bugs fixed (found using pychecker).
7222 __init__). Other small bugs fixed (found using pychecker).
7220
7223
7221 * Version 0.1.4 opened for bugfixing.
7224 * Version 0.1.4 opened for bugfixing.
7222
7225
7223 2001-11-07 Fernando Perez <fperez@colorado.edu>
7226 2001-11-07 Fernando Perez <fperez@colorado.edu>
7224
7227
7225 * Version 0.1.3 released, mainly because of the raw_input bug.
7228 * Version 0.1.3 released, mainly because of the raw_input bug.
7226
7229
7227 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7230 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7228 and when testing for whether things were callable, a call could
7231 and when testing for whether things were callable, a call could
7229 actually be made to certain functions. They would get called again
7232 actually be made to certain functions. They would get called again
7230 once 'really' executed, with a resulting double call. A disaster
7233 once 'really' executed, with a resulting double call. A disaster
7231 in many cases (list.reverse() would never work!).
7234 in many cases (list.reverse() would never work!).
7232
7235
7233 * Removed prefilter() function, moved its code to raw_input (which
7236 * Removed prefilter() function, moved its code to raw_input (which
7234 after all was just a near-empty caller for prefilter). This saves
7237 after all was just a near-empty caller for prefilter). This saves
7235 a function call on every prompt, and simplifies the class a tiny bit.
7238 a function call on every prompt, and simplifies the class a tiny bit.
7236
7239
7237 * Fix _ip to __ip name in magic example file.
7240 * Fix _ip to __ip name in magic example file.
7238
7241
7239 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7242 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7240 work with non-gnu versions of tar.
7243 work with non-gnu versions of tar.
7241
7244
7242 2001-11-06 Fernando Perez <fperez@colorado.edu>
7245 2001-11-06 Fernando Perez <fperez@colorado.edu>
7243
7246
7244 * Version 0.1.2. Just to keep track of the recent changes.
7247 * Version 0.1.2. Just to keep track of the recent changes.
7245
7248
7246 * Fixed nasty bug in output prompt routine. It used to check 'if
7249 * Fixed nasty bug in output prompt routine. It used to check 'if
7247 arg != None...'. Problem is, this fails if arg implements a
7250 arg != None...'. Problem is, this fails if arg implements a
7248 special comparison (__cmp__) which disallows comparing to
7251 special comparison (__cmp__) which disallows comparing to
7249 None. Found it when trying to use the PhysicalQuantity module from
7252 None. Found it when trying to use the PhysicalQuantity module from
7250 ScientificPython.
7253 ScientificPython.
7251
7254
7252 2001-11-05 Fernando Perez <fperez@colorado.edu>
7255 2001-11-05 Fernando Perez <fperez@colorado.edu>
7253
7256
7254 * Also added dirs. Now the pushd/popd/dirs family functions
7257 * Also added dirs. Now the pushd/popd/dirs family functions
7255 basically like the shell, with the added convenience of going home
7258 basically like the shell, with the added convenience of going home
7256 when called with no args.
7259 when called with no args.
7257
7260
7258 * pushd/popd slightly modified to mimic shell behavior more
7261 * pushd/popd slightly modified to mimic shell behavior more
7259 closely.
7262 closely.
7260
7263
7261 * Added env,pushd,popd from ShellServices as magic functions. I
7264 * Added env,pushd,popd from ShellServices as magic functions. I
7262 think the cleanest will be to port all desired functions from
7265 think the cleanest will be to port all desired functions from
7263 ShellServices as magics and remove ShellServices altogether. This
7266 ShellServices as magics and remove ShellServices altogether. This
7264 will provide a single, clean way of adding functionality
7267 will provide a single, clean way of adding functionality
7265 (shell-type or otherwise) to IP.
7268 (shell-type or otherwise) to IP.
7266
7269
7267 2001-11-04 Fernando Perez <fperez@colorado.edu>
7270 2001-11-04 Fernando Perez <fperez@colorado.edu>
7268
7271
7269 * Added .ipython/ directory to sys.path. This way users can keep
7272 * Added .ipython/ directory to sys.path. This way users can keep
7270 customizations there and access them via import.
7273 customizations there and access them via import.
7271
7274
7272 2001-11-03 Fernando Perez <fperez@colorado.edu>
7275 2001-11-03 Fernando Perez <fperez@colorado.edu>
7273
7276
7274 * Opened version 0.1.1 for new changes.
7277 * Opened version 0.1.1 for new changes.
7275
7278
7276 * Changed version number to 0.1.0: first 'public' release, sent to
7279 * Changed version number to 0.1.0: first 'public' release, sent to
7277 Nathan and Janko.
7280 Nathan and Janko.
7278
7281
7279 * Lots of small fixes and tweaks.
7282 * Lots of small fixes and tweaks.
7280
7283
7281 * Minor changes to whos format. Now strings are shown, snipped if
7284 * Minor changes to whos format. Now strings are shown, snipped if
7282 too long.
7285 too long.
7283
7286
7284 * Changed ShellServices to work on __main__ so they show up in @who
7287 * Changed ShellServices to work on __main__ so they show up in @who
7285
7288
7286 * Help also works with ? at the end of a line:
7289 * Help also works with ? at the end of a line:
7287 ?sin and sin?
7290 ?sin and sin?
7288 both produce the same effect. This is nice, as often I use the
7291 both produce the same effect. This is nice, as often I use the
7289 tab-complete to find the name of a method, but I used to then have
7292 tab-complete to find the name of a method, but I used to then have
7290 to go to the beginning of the line to put a ? if I wanted more
7293 to go to the beginning of the line to put a ? if I wanted more
7291 info. Now I can just add the ? and hit return. Convenient.
7294 info. Now I can just add the ? and hit return. Convenient.
7292
7295
7293 2001-11-02 Fernando Perez <fperez@colorado.edu>
7296 2001-11-02 Fernando Perez <fperez@colorado.edu>
7294
7297
7295 * Python version check (>=2.1) added.
7298 * Python version check (>=2.1) added.
7296
7299
7297 * Added LazyPython documentation. At this point the docs are quite
7300 * Added LazyPython documentation. At this point the docs are quite
7298 a mess. A cleanup is in order.
7301 a mess. A cleanup is in order.
7299
7302
7300 * Auto-installer created. For some bizarre reason, the zipfiles
7303 * Auto-installer created. For some bizarre reason, the zipfiles
7301 module isn't working on my system. So I made a tar version
7304 module isn't working on my system. So I made a tar version
7302 (hopefully the command line options in various systems won't kill
7305 (hopefully the command line options in various systems won't kill
7303 me).
7306 me).
7304
7307
7305 * Fixes to Struct in genutils. Now all dictionary-like methods are
7308 * Fixes to Struct in genutils. Now all dictionary-like methods are
7306 protected (reasonably).
7309 protected (reasonably).
7307
7310
7308 * Added pager function to genutils and changed ? to print usage
7311 * Added pager function to genutils and changed ? to print usage
7309 note through it (it was too long).
7312 note through it (it was too long).
7310
7313
7311 * Added the LazyPython functionality. Works great! I changed the
7314 * Added the LazyPython functionality. Works great! I changed the
7312 auto-quote escape to ';', it's on home row and next to '. But
7315 auto-quote escape to ';', it's on home row and next to '. But
7313 both auto-quote and auto-paren (still /) escapes are command-line
7316 both auto-quote and auto-paren (still /) escapes are command-line
7314 parameters.
7317 parameters.
7315
7318
7316
7319
7317 2001-11-01 Fernando Perez <fperez@colorado.edu>
7320 2001-11-01 Fernando Perez <fperez@colorado.edu>
7318
7321
7319 * Version changed to 0.0.7. Fairly large change: configuration now
7322 * Version changed to 0.0.7. Fairly large change: configuration now
7320 is all stored in a directory, by default .ipython. There, all
7323 is all stored in a directory, by default .ipython. There, all
7321 config files have normal looking names (not .names)
7324 config files have normal looking names (not .names)
7322
7325
7323 * Version 0.0.6 Released first to Lucas and Archie as a test
7326 * Version 0.0.6 Released first to Lucas and Archie as a test
7324 run. Since it's the first 'semi-public' release, change version to
7327 run. Since it's the first 'semi-public' release, change version to
7325 > 0.0.6 for any changes now.
7328 > 0.0.6 for any changes now.
7326
7329
7327 * Stuff I had put in the ipplib.py changelog:
7330 * Stuff I had put in the ipplib.py changelog:
7328
7331
7329 Changes to InteractiveShell:
7332 Changes to InteractiveShell:
7330
7333
7331 - Made the usage message a parameter.
7334 - Made the usage message a parameter.
7332
7335
7333 - Require the name of the shell variable to be given. It's a bit
7336 - Require the name of the shell variable to be given. It's a bit
7334 of a hack, but allows the name 'shell' not to be hardwired in the
7337 of a hack, but allows the name 'shell' not to be hardwired in the
7335 magic (@) handler, which is problematic b/c it requires
7338 magic (@) handler, which is problematic b/c it requires
7336 polluting the global namespace with 'shell'. This in turn is
7339 polluting the global namespace with 'shell'. This in turn is
7337 fragile: if a user redefines a variable called shell, things
7340 fragile: if a user redefines a variable called shell, things
7338 break.
7341 break.
7339
7342
7340 - magic @: all functions available through @ need to be defined
7343 - magic @: all functions available through @ need to be defined
7341 as magic_<name>, even though they can be called simply as
7344 as magic_<name>, even though they can be called simply as
7342 @<name>. This allows the special command @magic to gather
7345 @<name>. This allows the special command @magic to gather
7343 information automatically about all existing magic functions,
7346 information automatically about all existing magic functions,
7344 even if they are run-time user extensions, by parsing the shell
7347 even if they are run-time user extensions, by parsing the shell
7345 instance __dict__ looking for special magic_ names.
7348 instance __dict__ looking for special magic_ names.
7346
7349
7347 - mainloop: added *two* local namespace parameters. This allows
7350 - mainloop: added *two* local namespace parameters. This allows
7348 the class to differentiate between parameters which were there
7351 the class to differentiate between parameters which were there
7349 before and after command line initialization was processed. This
7352 before and after command line initialization was processed. This
7350 way, later @who can show things loaded at startup by the
7353 way, later @who can show things loaded at startup by the
7351 user. This trick was necessary to make session saving/reloading
7354 user. This trick was necessary to make session saving/reloading
7352 really work: ideally after saving/exiting/reloading a session,
7355 really work: ideally after saving/exiting/reloading a session,
7353 *everything* should look the same, including the output of @who. I
7356 *everything* should look the same, including the output of @who. I
7354 was only able to make this work with this double namespace
7357 was only able to make this work with this double namespace
7355 trick.
7358 trick.
7356
7359
7357 - added a header to the logfile which allows (almost) full
7360 - added a header to the logfile which allows (almost) full
7358 session restoring.
7361 session restoring.
7359
7362
7360 - prepend lines beginning with @ or !, with a and log
7363 - prepend lines beginning with @ or !, with a and log
7361 them. Why? !lines: may be useful to know what you did @lines:
7364 them. Why? !lines: may be useful to know what you did @lines:
7362 they may affect session state. So when restoring a session, at
7365 they may affect session state. So when restoring a session, at
7363 least inform the user of their presence. I couldn't quite get
7366 least inform the user of their presence. I couldn't quite get
7364 them to properly re-execute, but at least the user is warned.
7367 them to properly re-execute, but at least the user is warned.
7365
7368
7366 * Started ChangeLog.
7369 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now