##// END OF EJS Templates
install stock completers in default user config. Ignore case in filtering possible custom completions
vivainio -
Show More
@@ -1,30 +1,34 b''
1 """ User configuration file for IPython
1 """ User configuration file for IPython
2
2
3 This is a more flexible and safe way to configure ipython than *rc files
3 This is a more flexible and safe way to configure ipython than *rc files
4 (ipythonrc, ipythonrc-pysh etc.)
4 (ipythonrc, ipythonrc-pysh etc.)
5
5
6 This file is always imported on ipython startup. You can import the
6 This file is always imported on ipython startup. You can import the
7 ipython extensions you need here (see IPython/Extensions directory).
7 ipython extensions you need here (see IPython/Extensions directory).
8
8
9 Feel free to edit this file to customize your ipython experience.
9 Feel free to edit this file to customize your ipython experience.
10
10
11 Note that as such this file does nothing, for backwards compatibility.
11 Note that as such this file does nothing, for backwards compatibility.
12 Consult e.g. file 'ipy_profile_sh.py' for an example of the things
12 Consult e.g. file 'ipy_profile_sh.py' for an example of the things
13 you can do here.
13 you can do here.
14
14
15 """
15 """
16
16
17 # Most of your config files and extensions will probably start with this import
17 # Most of your config files and extensions will probably start with this import
18
18
19 import IPython.ipapi
19 import IPython.ipapi
20 ip = IPython.ipapi.get()
20 ip = IPython.ipapi.get()
21
21
22 # You probably want to uncomment this if you did %upgrade -nolegacy
22 # You probably want to uncomment this if you did %upgrade -nolegacy
23 # import ipy_defaults
23 # import ipy_defaults
24
24
25 def main():
25 def main():
26 # Handy tab-completers for %cd, %run, import etc.
27 # Try commenting this out if you have completion problems/slowness
28 import ipy_stock_completers
29
26 o = ip.options
30 o = ip.options
27 # An example on how to set options
31 # An example on how to set options
28 #o.autocall = 1
32 #o.autocall = 1
29
33
30 main()
34 main()
@@ -1,627 +1,627 b''
1 """Word completion for IPython.
1 """Word completion for IPython.
2
2
3 This module is a fork of the rlcompleter module in the Python standard
3 This module is a fork of the rlcompleter module in the Python standard
4 library. The original enhancements made to rlcompleter have been sent
4 library. The original enhancements made to rlcompleter have been sent
5 upstream and were accepted as of Python 2.3, but we need a lot more
5 upstream and were accepted as of Python 2.3, but we need a lot more
6 functionality specific to IPython, so this module will continue to live as an
6 functionality specific to IPython, so this module will continue to live as an
7 IPython-specific utility.
7 IPython-specific utility.
8
8
9 ---------------------------------------------------------------------------
9 ---------------------------------------------------------------------------
10 Original rlcompleter documentation:
10 Original rlcompleter documentation:
11
11
12 This requires the latest extension to the readline module (the
12 This requires the latest extension to the readline module (the
13 completes keywords, built-ins and globals in __main__; when completing
13 completes keywords, built-ins and globals in __main__; when completing
14 NAME.NAME..., it evaluates (!) the expression up to the last dot and
14 NAME.NAME..., it evaluates (!) the expression up to the last dot and
15 completes its attributes.
15 completes its attributes.
16
16
17 It's very cool to do "import string" type "string.", hit the
17 It's very cool to do "import string" type "string.", hit the
18 completion key (twice), and see the list of names defined by the
18 completion key (twice), and see the list of names defined by the
19 string module!
19 string module!
20
20
21 Tip: to use the tab key as the completion key, call
21 Tip: to use the tab key as the completion key, call
22
22
23 readline.parse_and_bind("tab: complete")
23 readline.parse_and_bind("tab: complete")
24
24
25 Notes:
25 Notes:
26
26
27 - Exceptions raised by the completer function are *ignored* (and
27 - Exceptions raised by the completer function are *ignored* (and
28 generally cause the completion to fail). This is a feature -- since
28 generally cause the completion to fail). This is a feature -- since
29 readline sets the tty device in raw (or cbreak) mode, printing a
29 readline sets the tty device in raw (or cbreak) mode, printing a
30 traceback wouldn't work well without some complicated hoopla to save,
30 traceback wouldn't work well without some complicated hoopla to save,
31 reset and restore the tty state.
31 reset and restore the tty state.
32
32
33 - The evaluation of the NAME.NAME... form may cause arbitrary
33 - The evaluation of the NAME.NAME... form may cause arbitrary
34 application defined code to be executed if an object with a
34 application defined code to be executed if an object with a
35 __getattr__ hook is found. Since it is the responsibility of the
35 __getattr__ hook is found. Since it is the responsibility of the
36 application (or the user) to enable this feature, I consider this an
36 application (or the user) to enable this feature, I consider this an
37 acceptable risk. More complicated expressions (e.g. function calls or
37 acceptable risk. More complicated expressions (e.g. function calls or
38 indexing operations) are *not* evaluated.
38 indexing operations) are *not* evaluated.
39
39
40 - GNU readline is also used by the built-in functions input() and
40 - GNU readline is also used by the built-in functions input() and
41 raw_input(), and thus these also benefit/suffer from the completer
41 raw_input(), and thus these also benefit/suffer from the completer
42 features. Clearly an interactive application can benefit by
42 features. Clearly an interactive application can benefit by
43 specifying its own completer function and using raw_input() for all
43 specifying its own completer function and using raw_input() for all
44 its input.
44 its input.
45
45
46 - When the original stdin is not a tty device, GNU readline is never
46 - When the original stdin is not a tty device, GNU readline is never
47 used, and this module (and the readline module) are silently inactive.
47 used, and this module (and the readline module) are silently inactive.
48
48
49 """
49 """
50
50
51 #*****************************************************************************
51 #*****************************************************************************
52 #
52 #
53 # Since this file is essentially a minimally modified copy of the rlcompleter
53 # Since this file is essentially a minimally modified copy of the rlcompleter
54 # module which is part of the standard Python distribution, I assume that the
54 # module which is part of the standard Python distribution, I assume that the
55 # proper procedure is to maintain its copyright as belonging to the Python
55 # proper procedure is to maintain its copyright as belonging to the Python
56 # Software Foundation (in addition to my own, for all new code).
56 # Software Foundation (in addition to my own, for all new code).
57 #
57 #
58 # Copyright (C) 2001 Python Software Foundation, www.python.org
58 # Copyright (C) 2001 Python Software Foundation, www.python.org
59 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
59 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
60 #
60 #
61 # Distributed under the terms of the BSD License. The full license is in
61 # Distributed under the terms of the BSD License. The full license is in
62 # the file COPYING, distributed as part of this software.
62 # the file COPYING, distributed as part of this software.
63 #
63 #
64 #*****************************************************************************
64 #*****************************************************************************
65
65
66 import __builtin__
66 import __builtin__
67 import __main__
67 import __main__
68 import glob
68 import glob
69 import keyword
69 import keyword
70 import os
70 import os
71 import re
71 import re
72 import shlex
72 import shlex
73 import sys
73 import sys
74 import IPython.rlineimpl as readline
74 import IPython.rlineimpl as readline
75 import itertools
75 import itertools
76 from IPython.ipstruct import Struct
76 from IPython.ipstruct import Struct
77 from IPython import ipapi
77 from IPython import ipapi
78
78
79 import types
79 import types
80
80
81 # Python 2.4 offers sets as a builtin
81 # Python 2.4 offers sets as a builtin
82 try:
82 try:
83 set([1,2])
83 set([1,2])
84 except NameError:
84 except NameError:
85 from sets import Set as set
85 from sets import Set as set
86
86
87 from IPython.genutils import debugx
87 from IPython.genutils import debugx
88
88
89 __all__ = ['Completer','IPCompleter']
89 __all__ = ['Completer','IPCompleter']
90
90
91 def get_class_members(cls):
91 def get_class_members(cls):
92 ret = dir(cls)
92 ret = dir(cls)
93 if hasattr(cls,'__bases__'):
93 if hasattr(cls,'__bases__'):
94 for base in cls.__bases__:
94 for base in cls.__bases__:
95 ret.extend(get_class_members(base))
95 ret.extend(get_class_members(base))
96 return ret
96 return ret
97
97
98 class Completer:
98 class Completer:
99 def __init__(self,namespace=None,global_namespace=None):
99 def __init__(self,namespace=None,global_namespace=None):
100 """Create a new completer for the command line.
100 """Create a new completer for the command line.
101
101
102 Completer([namespace,global_namespace]) -> completer instance.
102 Completer([namespace,global_namespace]) -> completer instance.
103
103
104 If unspecified, the default namespace where completions are performed
104 If unspecified, the default namespace where completions are performed
105 is __main__ (technically, __main__.__dict__). Namespaces should be
105 is __main__ (technically, __main__.__dict__). Namespaces should be
106 given as dictionaries.
106 given as dictionaries.
107
107
108 An optional second namespace can be given. This allows the completer
108 An optional second namespace can be given. This allows the completer
109 to handle cases where both the local and global scopes need to be
109 to handle cases where both the local and global scopes need to be
110 distinguished.
110 distinguished.
111
111
112 Completer instances should be used as the completion mechanism of
112 Completer instances should be used as the completion mechanism of
113 readline via the set_completer() call:
113 readline via the set_completer() call:
114
114
115 readline.set_completer(Completer(my_namespace).complete)
115 readline.set_completer(Completer(my_namespace).complete)
116 """
116 """
117
117
118 # some minimal strict typechecks. For some core data structures, I
118 # some minimal strict typechecks. For some core data structures, I
119 # want actual basic python types, not just anything that looks like
119 # want actual basic python types, not just anything that looks like
120 # one. This is especially true for namespaces.
120 # one. This is especially true for namespaces.
121 for ns in (namespace,global_namespace):
121 for ns in (namespace,global_namespace):
122 if ns is not None and type(ns) != types.DictType:
122 if ns is not None and type(ns) != types.DictType:
123 raise TypeError,'namespace must be a dictionary'
123 raise TypeError,'namespace must be a dictionary'
124
124
125 # Don't bind to namespace quite yet, but flag whether the user wants a
125 # Don't bind to namespace quite yet, but flag whether the user wants a
126 # specific namespace or to use __main__.__dict__. This will allow us
126 # specific namespace or to use __main__.__dict__. This will allow us
127 # to bind to __main__.__dict__ at completion time, not now.
127 # to bind to __main__.__dict__ at completion time, not now.
128 if namespace is None:
128 if namespace is None:
129 self.use_main_ns = 1
129 self.use_main_ns = 1
130 else:
130 else:
131 self.use_main_ns = 0
131 self.use_main_ns = 0
132 self.namespace = namespace
132 self.namespace = namespace
133
133
134 # The global namespace, if given, can be bound directly
134 # The global namespace, if given, can be bound directly
135 if global_namespace is None:
135 if global_namespace is None:
136 self.global_namespace = {}
136 self.global_namespace = {}
137 else:
137 else:
138 self.global_namespace = global_namespace
138 self.global_namespace = global_namespace
139
139
140 def complete(self, text, state):
140 def complete(self, text, state):
141 """Return the next possible completion for 'text'.
141 """Return the next possible completion for 'text'.
142
142
143 This is called successively with state == 0, 1, 2, ... until it
143 This is called successively with state == 0, 1, 2, ... until it
144 returns None. The completion should begin with 'text'.
144 returns None. The completion should begin with 'text'.
145
145
146 """
146 """
147 if self.use_main_ns:
147 if self.use_main_ns:
148 self.namespace = __main__.__dict__
148 self.namespace = __main__.__dict__
149
149
150 if state == 0:
150 if state == 0:
151 if "." in text:
151 if "." in text:
152 self.matches = self.attr_matches(text)
152 self.matches = self.attr_matches(text)
153 else:
153 else:
154 self.matches = self.global_matches(text)
154 self.matches = self.global_matches(text)
155 try:
155 try:
156 return self.matches[state]
156 return self.matches[state]
157 except IndexError:
157 except IndexError:
158 return None
158 return None
159
159
160 def global_matches(self, text):
160 def global_matches(self, text):
161 """Compute matches when text is a simple name.
161 """Compute matches when text is a simple name.
162
162
163 Return a list of all keywords, built-in functions and names currently
163 Return a list of all keywords, built-in functions and names currently
164 defined in self.namespace or self.global_namespace that match.
164 defined in self.namespace or self.global_namespace that match.
165
165
166 """
166 """
167 matches = []
167 matches = []
168 match_append = matches.append
168 match_append = matches.append
169 n = len(text)
169 n = len(text)
170 for lst in [keyword.kwlist,
170 for lst in [keyword.kwlist,
171 __builtin__.__dict__.keys(),
171 __builtin__.__dict__.keys(),
172 self.namespace.keys(),
172 self.namespace.keys(),
173 self.global_namespace.keys()]:
173 self.global_namespace.keys()]:
174 for word in lst:
174 for word in lst:
175 if word[:n] == text and word != "__builtins__":
175 if word[:n] == text and word != "__builtins__":
176 match_append(word)
176 match_append(word)
177 return matches
177 return matches
178
178
179 def attr_matches(self, text):
179 def attr_matches(self, text):
180 """Compute matches when text contains a dot.
180 """Compute matches when text contains a dot.
181
181
182 Assuming the text is of the form NAME.NAME....[NAME], and is
182 Assuming the text is of the form NAME.NAME....[NAME], and is
183 evaluatable in self.namespace or self.global_namespace, it will be
183 evaluatable in self.namespace or self.global_namespace, it will be
184 evaluated and its attributes (as revealed by dir()) are used as
184 evaluated and its attributes (as revealed by dir()) are used as
185 possible completions. (For class instances, class members are are
185 possible completions. (For class instances, class members are are
186 also considered.)
186 also considered.)
187
187
188 WARNING: this can still invoke arbitrary C code, if an object
188 WARNING: this can still invoke arbitrary C code, if an object
189 with a __getattr__ hook is evaluated.
189 with a __getattr__ hook is evaluated.
190
190
191 """
191 """
192 import re
192 import re
193
193
194 # Another option, seems to work great. Catches things like ''.<tab>
194 # Another option, seems to work great. Catches things like ''.<tab>
195 m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)
195 m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)
196
196
197 if not m:
197 if not m:
198 return []
198 return []
199
199
200 expr, attr = m.group(1, 3)
200 expr, attr = m.group(1, 3)
201 try:
201 try:
202 object = eval(expr, self.namespace)
202 object = eval(expr, self.namespace)
203 except:
203 except:
204 object = eval(expr, self.global_namespace)
204 object = eval(expr, self.global_namespace)
205
205
206 # Start building the attribute list via dir(), and then complete it
206 # Start building the attribute list via dir(), and then complete it
207 # with a few extra special-purpose calls.
207 # with a few extra special-purpose calls.
208 words = dir(object)
208 words = dir(object)
209
209
210 if hasattr(object,'__class__'):
210 if hasattr(object,'__class__'):
211 words.append('__class__')
211 words.append('__class__')
212 words.extend(get_class_members(object.__class__))
212 words.extend(get_class_members(object.__class__))
213
213
214 # this is the 'dir' function for objects with Enthought's traits
214 # this is the 'dir' function for objects with Enthought's traits
215 if hasattr(object, 'trait_names'):
215 if hasattr(object, 'trait_names'):
216 try:
216 try:
217 words.extend(object.trait_names())
217 words.extend(object.trait_names())
218 # eliminate possible duplicates, as some traits may also
218 # eliminate possible duplicates, as some traits may also
219 # appear as normal attributes in the dir() call.
219 # appear as normal attributes in the dir() call.
220 words = set(words)
220 words = set(words)
221 except TypeError:
221 except TypeError:
222 # This will happen if `object` is a class and not an instance.
222 # This will happen if `object` is a class and not an instance.
223 pass
223 pass
224
224
225 # Support for PyCrust-style _getAttributeNames magic method.
225 # Support for PyCrust-style _getAttributeNames magic method.
226 if hasattr(object, '_getAttributeNames'):
226 if hasattr(object, '_getAttributeNames'):
227 try:
227 try:
228 words.extend(object._getAttributeNames())
228 words.extend(object._getAttributeNames())
229 # Eliminate duplicates.
229 # Eliminate duplicates.
230 words = set(words)
230 words = set(words)
231 except TypeError:
231 except TypeError:
232 # `object` is a class and not an instance. Ignore
232 # `object` is a class and not an instance. Ignore
233 # this error.
233 # this error.
234 pass
234 pass
235
235
236 # filter out non-string attributes which may be stuffed by dir() calls
236 # filter out non-string attributes which may be stuffed by dir() calls
237 # and poor coding in third-party modules
237 # and poor coding in third-party modules
238 words = [w for w in words
238 words = [w for w in words
239 if isinstance(w, basestring) and w != "__builtins__"]
239 if isinstance(w, basestring) and w != "__builtins__"]
240 # Build match list to return
240 # Build match list to return
241 n = len(attr)
241 n = len(attr)
242 return ["%s.%s" % (expr, w) for w in words if w[:n] == attr ]
242 return ["%s.%s" % (expr, w) for w in words if w[:n] == attr ]
243
243
244 class IPCompleter(Completer):
244 class IPCompleter(Completer):
245 """Extension of the completer class with IPython-specific features"""
245 """Extension of the completer class with IPython-specific features"""
246
246
247 def __init__(self,shell,namespace=None,global_namespace=None,
247 def __init__(self,shell,namespace=None,global_namespace=None,
248 omit__names=0,alias_table=None):
248 omit__names=0,alias_table=None):
249 """IPCompleter() -> completer
249 """IPCompleter() -> completer
250
250
251 Return a completer object suitable for use by the readline library
251 Return a completer object suitable for use by the readline library
252 via readline.set_completer().
252 via readline.set_completer().
253
253
254 Inputs:
254 Inputs:
255
255
256 - shell: a pointer to the ipython shell itself. This is needed
256 - shell: a pointer to the ipython shell itself. This is needed
257 because this completer knows about magic functions, and those can
257 because this completer knows about magic functions, and those can
258 only be accessed via the ipython instance.
258 only be accessed via the ipython instance.
259
259
260 - namespace: an optional dict where completions are performed.
260 - namespace: an optional dict where completions are performed.
261
261
262 - global_namespace: secondary optional dict for completions, to
262 - global_namespace: secondary optional dict for completions, to
263 handle cases (such as IPython embedded inside functions) where
263 handle cases (such as IPython embedded inside functions) where
264 both Python scopes are visible.
264 both Python scopes are visible.
265
265
266 - The optional omit__names parameter sets the completer to omit the
266 - The optional omit__names parameter sets the completer to omit the
267 'magic' names (__magicname__) for python objects unless the text
267 'magic' names (__magicname__) for python objects unless the text
268 to be completed explicitly starts with one or more underscores.
268 to be completed explicitly starts with one or more underscores.
269
269
270 - If alias_table is supplied, it should be a dictionary of aliases
270 - If alias_table is supplied, it should be a dictionary of aliases
271 to complete. """
271 to complete. """
272
272
273 Completer.__init__(self,namespace,global_namespace)
273 Completer.__init__(self,namespace,global_namespace)
274 self.magic_prefix = shell.name+'.magic_'
274 self.magic_prefix = shell.name+'.magic_'
275 self.magic_escape = shell.ESC_MAGIC
275 self.magic_escape = shell.ESC_MAGIC
276 self.readline = readline
276 self.readline = readline
277 delims = self.readline.get_completer_delims()
277 delims = self.readline.get_completer_delims()
278 delims = delims.replace(self.magic_escape,'')
278 delims = delims.replace(self.magic_escape,'')
279 self.readline.set_completer_delims(delims)
279 self.readline.set_completer_delims(delims)
280 self.get_line_buffer = self.readline.get_line_buffer
280 self.get_line_buffer = self.readline.get_line_buffer
281 self.omit__names = omit__names
281 self.omit__names = omit__names
282 self.merge_completions = shell.rc.readline_merge_completions
282 self.merge_completions = shell.rc.readline_merge_completions
283
283
284 if alias_table is None:
284 if alias_table is None:
285 alias_table = {}
285 alias_table = {}
286 self.alias_table = alias_table
286 self.alias_table = alias_table
287 # Regexp to split filenames with spaces in them
287 # Regexp to split filenames with spaces in them
288 self.space_name_re = re.compile(r'([^\\] )')
288 self.space_name_re = re.compile(r'([^\\] )')
289 # Hold a local ref. to glob.glob for speed
289 # Hold a local ref. to glob.glob for speed
290 self.glob = glob.glob
290 self.glob = glob.glob
291
291
292 # Determine if we are running on 'dumb' terminals, like (X)Emacs
292 # Determine if we are running on 'dumb' terminals, like (X)Emacs
293 # buffers, to avoid completion problems.
293 # buffers, to avoid completion problems.
294 term = os.environ.get('TERM','xterm')
294 term = os.environ.get('TERM','xterm')
295 self.dumb_terminal = term in ['dumb','emacs']
295 self.dumb_terminal = term in ['dumb','emacs']
296
296
297 # Special handling of backslashes needed in win32 platforms
297 # Special handling of backslashes needed in win32 platforms
298 if sys.platform == "win32":
298 if sys.platform == "win32":
299 self.clean_glob = self._clean_glob_win32
299 self.clean_glob = self._clean_glob_win32
300 else:
300 else:
301 self.clean_glob = self._clean_glob
301 self.clean_glob = self._clean_glob
302 self.matchers = [self.python_matches,
302 self.matchers = [self.python_matches,
303 self.file_matches,
303 self.file_matches,
304 self.alias_matches,
304 self.alias_matches,
305 self.python_func_kw_matches]
305 self.python_func_kw_matches]
306
306
307 # Code contributed by Alex Schmolck, for ipython/emacs integration
307 # Code contributed by Alex Schmolck, for ipython/emacs integration
308 def all_completions(self, text):
308 def all_completions(self, text):
309 """Return all possible completions for the benefit of emacs."""
309 """Return all possible completions for the benefit of emacs."""
310
310
311 completions = []
311 completions = []
312 comp_append = completions.append
312 comp_append = completions.append
313 try:
313 try:
314 for i in xrange(sys.maxint):
314 for i in xrange(sys.maxint):
315 res = self.complete(text, i)
315 res = self.complete(text, i)
316
316
317 if not res: break
317 if not res: break
318
318
319 comp_append(res)
319 comp_append(res)
320 #XXX workaround for ``notDefined.<tab>``
320 #XXX workaround for ``notDefined.<tab>``
321 except NameError:
321 except NameError:
322 pass
322 pass
323 return completions
323 return completions
324 # /end Alex Schmolck code.
324 # /end Alex Schmolck code.
325
325
326 def _clean_glob(self,text):
326 def _clean_glob(self,text):
327 return self.glob("%s*" % text)
327 return self.glob("%s*" % text)
328
328
329 def _clean_glob_win32(self,text):
329 def _clean_glob_win32(self,text):
330 return [f.replace("\\","/")
330 return [f.replace("\\","/")
331 for f in self.glob("%s*" % text)]
331 for f in self.glob("%s*" % text)]
332
332
333 def file_matches(self, text):
333 def file_matches(self, text):
334 """Match filneames, expanding ~USER type strings.
334 """Match filneames, expanding ~USER type strings.
335
335
336 Most of the seemingly convoluted logic in this completer is an
336 Most of the seemingly convoluted logic in this completer is an
337 attempt to handle filenames with spaces in them. And yet it's not
337 attempt to handle filenames with spaces in them. And yet it's not
338 quite perfect, because Python's readline doesn't expose all of the
338 quite perfect, because Python's readline doesn't expose all of the
339 GNU readline details needed for this to be done correctly.
339 GNU readline details needed for this to be done correctly.
340
340
341 For a filename with a space in it, the printed completions will be
341 For a filename with a space in it, the printed completions will be
342 only the parts after what's already been typed (instead of the
342 only the parts after what's already been typed (instead of the
343 full completions, as is normally done). I don't think with the
343 full completions, as is normally done). I don't think with the
344 current (as of Python 2.3) Python readline it's possible to do
344 current (as of Python 2.3) Python readline it's possible to do
345 better."""
345 better."""
346
346
347 # print 'Completer->file_matches: <%s>' % text # dbg
347 # print 'Completer->file_matches: <%s>' % text # dbg
348
348
349 # chars that require escaping with backslash - i.e. chars
349 # chars that require escaping with backslash - i.e. chars
350 # that readline treats incorrectly as delimiters, but we
350 # that readline treats incorrectly as delimiters, but we
351 # don't want to treat as delimiters in filename matching
351 # don't want to treat as delimiters in filename matching
352 # when escaped with backslash
352 # when escaped with backslash
353
353
354 protectables = ' ()[]{}'
354 protectables = ' ()[]{}'
355
355
356 def protect_filename(s):
356 def protect_filename(s):
357 return "".join([(ch in protectables and '\\' + ch or ch)
357 return "".join([(ch in protectables and '\\' + ch or ch)
358 for ch in s])
358 for ch in s])
359
359
360 lbuf = self.lbuf
360 lbuf = self.lbuf
361 open_quotes = 0 # track strings with open quotes
361 open_quotes = 0 # track strings with open quotes
362 try:
362 try:
363 lsplit = shlex.split(lbuf)[-1]
363 lsplit = shlex.split(lbuf)[-1]
364 except ValueError:
364 except ValueError:
365 # typically an unmatched ", or backslash without escaped char.
365 # typically an unmatched ", or backslash without escaped char.
366 if lbuf.count('"')==1:
366 if lbuf.count('"')==1:
367 open_quotes = 1
367 open_quotes = 1
368 lsplit = lbuf.split('"')[-1]
368 lsplit = lbuf.split('"')[-1]
369 elif lbuf.count("'")==1:
369 elif lbuf.count("'")==1:
370 open_quotes = 1
370 open_quotes = 1
371 lsplit = lbuf.split("'")[-1]
371 lsplit = lbuf.split("'")[-1]
372 else:
372 else:
373 return None
373 return None
374 except IndexError:
374 except IndexError:
375 # tab pressed on empty line
375 # tab pressed on empty line
376 lsplit = ""
376 lsplit = ""
377
377
378 if lsplit != protect_filename(lsplit):
378 if lsplit != protect_filename(lsplit):
379 # if protectables are found, do matching on the whole escaped
379 # if protectables are found, do matching on the whole escaped
380 # name
380 # name
381 has_protectables = 1
381 has_protectables = 1
382 text0,text = text,lsplit
382 text0,text = text,lsplit
383 else:
383 else:
384 has_protectables = 0
384 has_protectables = 0
385 text = os.path.expanduser(text)
385 text = os.path.expanduser(text)
386
386
387 if text == "":
387 if text == "":
388 return [protect_filename(f) for f in self.glob("*")]
388 return [protect_filename(f) for f in self.glob("*")]
389
389
390 m0 = self.clean_glob(text.replace('\\',''))
390 m0 = self.clean_glob(text.replace('\\',''))
391 if has_protectables:
391 if has_protectables:
392 # If we had protectables, we need to revert our changes to the
392 # If we had protectables, we need to revert our changes to the
393 # beginning of filename so that we don't double-write the part
393 # beginning of filename so that we don't double-write the part
394 # of the filename we have so far
394 # of the filename we have so far
395 len_lsplit = len(lsplit)
395 len_lsplit = len(lsplit)
396 matches = [text0 + protect_filename(f[len_lsplit:]) for f in m0]
396 matches = [text0 + protect_filename(f[len_lsplit:]) for f in m0]
397 else:
397 else:
398 if open_quotes:
398 if open_quotes:
399 # if we have a string with an open quote, we don't need to
399 # if we have a string with an open quote, we don't need to
400 # protect the names at all (and we _shouldn't_, as it
400 # protect the names at all (and we _shouldn't_, as it
401 # would cause bugs when the filesystem call is made).
401 # would cause bugs when the filesystem call is made).
402 matches = m0
402 matches = m0
403 else:
403 else:
404 matches = [protect_filename(f) for f in m0]
404 matches = [protect_filename(f) for f in m0]
405 if len(matches) == 1 and os.path.isdir(matches[0]):
405 if len(matches) == 1 and os.path.isdir(matches[0]):
406 # Takes care of links to directories also. Use '/'
406 # Takes care of links to directories also. Use '/'
407 # explicitly, even under Windows, so that name completions
407 # explicitly, even under Windows, so that name completions
408 # don't end up escaped.
408 # don't end up escaped.
409 matches[0] += '/'
409 matches[0] += '/'
410 return matches
410 return matches
411
411
412 def alias_matches(self, text):
412 def alias_matches(self, text):
413 """Match internal system aliases"""
413 """Match internal system aliases"""
414 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
414 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
415
415
416 # if we are not in the first 'item', alias matching
416 # if we are not in the first 'item', alias matching
417 # doesn't make sense
417 # doesn't make sense
418 if ' ' in self.lbuf:
418 if ' ' in self.lbuf:
419 return []
419 return []
420 text = os.path.expanduser(text)
420 text = os.path.expanduser(text)
421 aliases = self.alias_table.keys()
421 aliases = self.alias_table.keys()
422 if text == "":
422 if text == "":
423 return aliases
423 return aliases
424 else:
424 else:
425 return [alias for alias in aliases if alias.startswith(text)]
425 return [alias for alias in aliases if alias.startswith(text)]
426
426
427 def python_matches(self,text):
427 def python_matches(self,text):
428 """Match attributes or global python names"""
428 """Match attributes or global python names"""
429
429
430 #print 'Completer->python_matches, txt=<%s>' % text # dbg
430 #print 'Completer->python_matches, txt=<%s>' % text # dbg
431 if "." in text:
431 if "." in text:
432 try:
432 try:
433 matches = self.attr_matches(text)
433 matches = self.attr_matches(text)
434 if text.endswith('.') and self.omit__names:
434 if text.endswith('.') and self.omit__names:
435 if self.omit__names == 1:
435 if self.omit__names == 1:
436 # true if txt is _not_ a __ name, false otherwise:
436 # true if txt is _not_ a __ name, false otherwise:
437 no__name = (lambda txt:
437 no__name = (lambda txt:
438 re.match(r'.*\.__.*?__',txt) is None)
438 re.match(r'.*\.__.*?__',txt) is None)
439 else:
439 else:
440 # true if txt is _not_ a _ name, false otherwise:
440 # true if txt is _not_ a _ name, false otherwise:
441 no__name = (lambda txt:
441 no__name = (lambda txt:
442 re.match(r'.*\._.*?',txt) is None)
442 re.match(r'.*\._.*?',txt) is None)
443 matches = filter(no__name, matches)
443 matches = filter(no__name, matches)
444 except NameError:
444 except NameError:
445 # catches <undefined attributes>.<tab>
445 # catches <undefined attributes>.<tab>
446 matches = []
446 matches = []
447 else:
447 else:
448 matches = self.global_matches(text)
448 matches = self.global_matches(text)
449 # this is so completion finds magics when automagic is on:
449 # this is so completion finds magics when automagic is on:
450 if (matches == [] and
450 if (matches == [] and
451 not text.startswith(os.sep) and
451 not text.startswith(os.sep) and
452 not ' ' in self.lbuf):
452 not ' ' in self.lbuf):
453 matches = self.attr_matches(self.magic_prefix+text)
453 matches = self.attr_matches(self.magic_prefix+text)
454 return matches
454 return matches
455
455
456 def _default_arguments(self, obj):
456 def _default_arguments(self, obj):
457 """Return the list of default arguments of obj if it is callable,
457 """Return the list of default arguments of obj if it is callable,
458 or empty list otherwise."""
458 or empty list otherwise."""
459
459
460 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
460 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
461 # for classes, check for __init__,__new__
461 # for classes, check for __init__,__new__
462 if inspect.isclass(obj):
462 if inspect.isclass(obj):
463 obj = (getattr(obj,'__init__',None) or
463 obj = (getattr(obj,'__init__',None) or
464 getattr(obj,'__new__',None))
464 getattr(obj,'__new__',None))
465 # for all others, check if they are __call__able
465 # for all others, check if they are __call__able
466 elif hasattr(obj, '__call__'):
466 elif hasattr(obj, '__call__'):
467 obj = obj.__call__
467 obj = obj.__call__
468 # XXX: is there a way to handle the builtins ?
468 # XXX: is there a way to handle the builtins ?
469 try:
469 try:
470 args,_,_1,defaults = inspect.getargspec(obj)
470 args,_,_1,defaults = inspect.getargspec(obj)
471 if defaults:
471 if defaults:
472 return args[-len(defaults):]
472 return args[-len(defaults):]
473 except TypeError: pass
473 except TypeError: pass
474 return []
474 return []
475
475
476 def python_func_kw_matches(self,text):
476 def python_func_kw_matches(self,text):
477 """Match named parameters (kwargs) of the last open function"""
477 """Match named parameters (kwargs) of the last open function"""
478
478
479 if "." in text: # a parameter cannot be dotted
479 if "." in text: # a parameter cannot be dotted
480 return []
480 return []
481 try: regexp = self.__funcParamsRegex
481 try: regexp = self.__funcParamsRegex
482 except AttributeError:
482 except AttributeError:
483 regexp = self.__funcParamsRegex = re.compile(r'''
483 regexp = self.__funcParamsRegex = re.compile(r'''
484 '.*?' | # single quoted strings or
484 '.*?' | # single quoted strings or
485 ".*?" | # double quoted strings or
485 ".*?" | # double quoted strings or
486 \w+ | # identifier
486 \w+ | # identifier
487 \S # other characters
487 \S # other characters
488 ''', re.VERBOSE | re.DOTALL)
488 ''', re.VERBOSE | re.DOTALL)
489 # 1. find the nearest identifier that comes before an unclosed
489 # 1. find the nearest identifier that comes before an unclosed
490 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
490 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
491 tokens = regexp.findall(self.get_line_buffer())
491 tokens = regexp.findall(self.get_line_buffer())
492 tokens.reverse()
492 tokens.reverse()
493 iterTokens = iter(tokens); openPar = 0
493 iterTokens = iter(tokens); openPar = 0
494 for token in iterTokens:
494 for token in iterTokens:
495 if token == ')':
495 if token == ')':
496 openPar -= 1
496 openPar -= 1
497 elif token == '(':
497 elif token == '(':
498 openPar += 1
498 openPar += 1
499 if openPar > 0:
499 if openPar > 0:
500 # found the last unclosed parenthesis
500 # found the last unclosed parenthesis
501 break
501 break
502 else:
502 else:
503 return []
503 return []
504 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
504 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
505 ids = []
505 ids = []
506 isId = re.compile(r'\w+$').match
506 isId = re.compile(r'\w+$').match
507 while True:
507 while True:
508 try:
508 try:
509 ids.append(iterTokens.next())
509 ids.append(iterTokens.next())
510 if not isId(ids[-1]):
510 if not isId(ids[-1]):
511 ids.pop(); break
511 ids.pop(); break
512 if not iterTokens.next() == '.':
512 if not iterTokens.next() == '.':
513 break
513 break
514 except StopIteration:
514 except StopIteration:
515 break
515 break
516 # lookup the candidate callable matches either using global_matches
516 # lookup the candidate callable matches either using global_matches
517 # or attr_matches for dotted names
517 # or attr_matches for dotted names
518 if len(ids) == 1:
518 if len(ids) == 1:
519 callableMatches = self.global_matches(ids[0])
519 callableMatches = self.global_matches(ids[0])
520 else:
520 else:
521 callableMatches = self.attr_matches('.'.join(ids[::-1]))
521 callableMatches = self.attr_matches('.'.join(ids[::-1]))
522 argMatches = []
522 argMatches = []
523 for callableMatch in callableMatches:
523 for callableMatch in callableMatches:
524 try: namedArgs = self._default_arguments(eval(callableMatch,
524 try: namedArgs = self._default_arguments(eval(callableMatch,
525 self.namespace))
525 self.namespace))
526 except: continue
526 except: continue
527 for namedArg in namedArgs:
527 for namedArg in namedArgs:
528 if namedArg.startswith(text):
528 if namedArg.startswith(text):
529 argMatches.append("%s=" %namedArg)
529 argMatches.append("%s=" %namedArg)
530 return argMatches
530 return argMatches
531
531
532 def dispatch_custom_completer(self,text):
532 def dispatch_custom_completer(self,text):
533 # print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
533 # print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
534 line = self.full_lbuf
534 line = self.full_lbuf
535 if not line.strip():
535 if not line.strip():
536 return None
536 return None
537
537
538 event = Struct()
538 event = Struct()
539 event.line = line
539 event.line = line
540 event.symbol = text
540 event.symbol = text
541 cmd = line.split(None,1)[0]
541 cmd = line.split(None,1)[0]
542 event.command = cmd
542 event.command = cmd
543 #print "\ncustom:{%s]\n" % event # dbg
543 #print "\ncustom:{%s]\n" % event # dbg
544
544
545 # for foo etc, try also to find completer for %foo
545 # for foo etc, try also to find completer for %foo
546 if not cmd.startswith(self.magic_escape):
546 if not cmd.startswith(self.magic_escape):
547 try_magic = self.custom_completers.s_matches(
547 try_magic = self.custom_completers.s_matches(
548 self.magic_escape + cmd)
548 self.magic_escape + cmd)
549 else:
549 else:
550 try_magic = []
550 try_magic = []
551
551
552
552
553 for c in itertools.chain(
553 for c in itertools.chain(
554 self.custom_completers.s_matches(cmd),
554 self.custom_completers.s_matches(cmd),
555 try_magic,
555 try_magic,
556 self.custom_completers.flat_matches(self.lbuf)):
556 self.custom_completers.flat_matches(self.lbuf)):
557 # print "try",c # dbg
557 # print "try",c # dbg
558 try:
558 try:
559 res = c(event)
559 res = c(event)
560 return [r for r in res if r.startswith(text)]
560 return [r for r in res if r.lower().startswith(text.lower())]
561 except ipapi.TryNext:
561 except ipapi.TryNext:
562 pass
562 pass
563
563
564 return None
564 return None
565
565
566
566
567
567
568 def complete(self, text, state):
568 def complete(self, text, state):
569 """Return the next possible completion for 'text'.
569 """Return the next possible completion for 'text'.
570
570
571 This is called successively with state == 0, 1, 2, ... until it
571 This is called successively with state == 0, 1, 2, ... until it
572 returns None. The completion should begin with 'text'. """
572 returns None. The completion should begin with 'text'. """
573
573
574 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
574 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
575
575
576 # if there is only a tab on a line with only whitespace, instead
576 # if there is only a tab on a line with only whitespace, instead
577 # of the mostly useless 'do you want to see all million
577 # of the mostly useless 'do you want to see all million
578 # completions' message, just do the right thing and give the user
578 # completions' message, just do the right thing and give the user
579 # his tab! Incidentally, this enables pasting of tabbed text from
579 # his tab! Incidentally, this enables pasting of tabbed text from
580 # an editor (as long as autoindent is off).
580 # an editor (as long as autoindent is off).
581
581
582 # don't apply this on 'dumb' terminals, such as emacs buffers, so we
582 # don't apply this on 'dumb' terminals, such as emacs buffers, so we
583 # don't interfere with their own tab-completion mechanism.
583 # don't interfere with their own tab-completion mechanism.
584 self.full_lbuf = self.get_line_buffer()
584 self.full_lbuf = self.get_line_buffer()
585 self.lbuf = self.full_lbuf[:self.readline.get_endidx()]
585 self.lbuf = self.full_lbuf[:self.readline.get_endidx()]
586 if not (self.dumb_terminal or self.get_line_buffer().strip()):
586 if not (self.dumb_terminal or self.get_line_buffer().strip()):
587 self.readline.insert_text('\t')
587 self.readline.insert_text('\t')
588 return None
588 return None
589
589
590
590
591 magic_escape = self.magic_escape
591 magic_escape = self.magic_escape
592 magic_prefix = self.magic_prefix
592 magic_prefix = self.magic_prefix
593
593
594 try:
594 try:
595 if text.startswith(magic_escape):
595 if text.startswith(magic_escape):
596 text = text.replace(magic_escape,magic_prefix)
596 text = text.replace(magic_escape,magic_prefix)
597 elif text.startswith('~'):
597 elif text.startswith('~'):
598 text = os.path.expanduser(text)
598 text = os.path.expanduser(text)
599 if state == 0:
599 if state == 0:
600 custom_res = self.dispatch_custom_completer(text)
600 custom_res = self.dispatch_custom_completer(text)
601 if custom_res is not None:
601 if custom_res is not None:
602 # did custom completers produce something?
602 # did custom completers produce something?
603 self.matches = custom_res
603 self.matches = custom_res
604 else:
604 else:
605 # Extend the list of completions with the results of each
605 # Extend the list of completions with the results of each
606 # matcher, so we return results to the user from all
606 # matcher, so we return results to the user from all
607 # namespaces.
607 # namespaces.
608 if self.merge_completions:
608 if self.merge_completions:
609 self.matches = []
609 self.matches = []
610 for matcher in self.matchers:
610 for matcher in self.matchers:
611 self.matches.extend(matcher(text))
611 self.matches.extend(matcher(text))
612 else:
612 else:
613 for matcher in self.matchers:
613 for matcher in self.matchers:
614 self.matches = matcher(text)
614 self.matches = matcher(text)
615 if self.matches:
615 if self.matches:
616 break
616 break
617
617
618 try:
618 try:
619 return self.matches[state].replace(magic_prefix,magic_escape)
619 return self.matches[state].replace(magic_prefix,magic_escape)
620 except IndexError:
620 except IndexError:
621 return None
621 return None
622 except:
622 except:
623 from IPython.ultraTB import AutoFormattedTB; # dbg
623 from IPython.ultraTB import AutoFormattedTB; # dbg
624 tb=AutoFormattedTB('Verbose');tb() #dbg
624 tb=AutoFormattedTB('Verbose');tb() #dbg
625
625
626 # If completion fails, don't annoy the user.
626 # If completion fails, don't annoy the user.
627 return None
627 return None
@@ -1,5864 +1,5868 b''
1 2006-11-02 Ville Vainio <vivainio@gmail.com>
1 2006-11-02 Ville Vainio <vivainio@gmail.com>
2
2
3 * ipy_stock_completers.py: Add %run and %cd completers.
3 * ipy_stock_completers.py: Add %run and %cd completers.
4
4
5 * completer.py: Try running custom completer for both
5 * completer.py: Try running custom completer for both
6 "foo" and "%foo" if the command is just "foo".
6 "foo" and "%foo" if the command is just "foo". Ignore case
7 when filtering possible completions.
8
9 * UserConfig/ipy_user_conf.py: install stock completers as default
10
7
11
8 2006-10-31 Ville Vainio <vivainio@gmail.com>
12 2006-10-31 Ville Vainio <vivainio@gmail.com>
9
13
10 * strdispatch.py, completer.py, ipy_stock_completers.py:
14 * strdispatch.py, completer.py, ipy_stock_completers.py:
11 Allow str_key ("command") in completer hooks. Implement
15 Allow str_key ("command") in completer hooks. Implement
12 trivial completer for 'import' (stdlib modules only). Rename
16 trivial completer for 'import' (stdlib modules only). Rename
13 ipy_linux_package_managers.py to ipy_stock_completers.py.
17 ipy_linux_package_managers.py to ipy_stock_completers.py.
14 SVN completer.
18 SVN completer.
15
19
16 * Extensions/ledit.py: %magic line editor for easily and
20 * Extensions/ledit.py: %magic line editor for easily and
17 incrementally manipulating lists of strings. The magic command
21 incrementally manipulating lists of strings. The magic command
18 name is %led.
22 name is %led.
19
23
20 2006-10-30 Ville Vainio <vivainio@gmail.com>
24 2006-10-30 Ville Vainio <vivainio@gmail.com>
21
25
22 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
26 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
23 Bernsteins's patches for pydb integration.
27 Bernsteins's patches for pydb integration.
24 http://bashdb.sourceforge.net/pydb/
28 http://bashdb.sourceforge.net/pydb/
25
29
26 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
30 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
27 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
31 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
28 custom completer hook to allow the users to implement their own
32 custom completer hook to allow the users to implement their own
29 completers. See ipy_linux_package_managers.py for example. The
33 completers. See ipy_linux_package_managers.py for example. The
30 hook name is 'complete_command'.
34 hook name is 'complete_command'.
31
35
32 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
36 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
33
37
34 * IPython/UserConfig/ipythonrc-scipy: minor clenaups to remove old
38 * IPython/UserConfig/ipythonrc-scipy: minor clenaups to remove old
35 Numeric leftovers.
39 Numeric leftovers.
36
40
37 * ipython.el (py-execute-region): apply Stefan's patch to fix
41 * ipython.el (py-execute-region): apply Stefan's patch to fix
38 garbled results if the python shell hasn't been previously started.
42 garbled results if the python shell hasn't been previously started.
39
43
40 * IPython/genutils.py (arg_split): moved to genutils, since it's a
44 * IPython/genutils.py (arg_split): moved to genutils, since it's a
41 pretty generic function and useful for other things.
45 pretty generic function and useful for other things.
42
46
43 * IPython/OInspect.py (getsource): Add customizable source
47 * IPython/OInspect.py (getsource): Add customizable source
44 extractor. After a request/patch form W. Stein (SAGE).
48 extractor. After a request/patch form W. Stein (SAGE).
45
49
46 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
50 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
47 window size to a more reasonable value from what pexpect does,
51 window size to a more reasonable value from what pexpect does,
48 since their choice causes wrapping bugs with long input lines.
52 since their choice causes wrapping bugs with long input lines.
49
53
50 2006-10-28 Ville Vainio <vivainio@gmail.com>
54 2006-10-28 Ville Vainio <vivainio@gmail.com>
51
55
52 * Magic.py (%run): Save and restore the readline history from
56 * Magic.py (%run): Save and restore the readline history from
53 file around %run commands to prevent side effects from
57 file around %run commands to prevent side effects from
54 %runned programs that might use readline (e.g. pydb).
58 %runned programs that might use readline (e.g. pydb).
55
59
56 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
60 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
57 invoking the pydb enhanced debugger.
61 invoking the pydb enhanced debugger.
58
62
59 2006-10-23 Walter Doerwald <walter@livinglogic.de>
63 2006-10-23 Walter Doerwald <walter@livinglogic.de>
60
64
61 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
65 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
62 call the base class method and propagate the return value to
66 call the base class method and propagate the return value to
63 ifile. This is now done by path itself.
67 ifile. This is now done by path itself.
64
68
65 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
69 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
66
70
67 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
71 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
68 api: set_crash_handler(), to expose the ability to change the
72 api: set_crash_handler(), to expose the ability to change the
69 internal crash handler.
73 internal crash handler.
70
74
71 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
75 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
72 the various parameters of the crash handler so that apps using
76 the various parameters of the crash handler so that apps using
73 IPython as their engine can customize crash handling. Ipmlemented
77 IPython as their engine can customize crash handling. Ipmlemented
74 at the request of SAGE.
78 at the request of SAGE.
75
79
76 2006-10-14 Ville Vainio <vivainio@gmail.com>
80 2006-10-14 Ville Vainio <vivainio@gmail.com>
77
81
78 * Magic.py, ipython.el: applied first "safe" part of Rocky
82 * Magic.py, ipython.el: applied first "safe" part of Rocky
79 Bernstein's patch set for pydb integration.
83 Bernstein's patch set for pydb integration.
80
84
81 * Magic.py (%unalias, %alias): %store'd aliases can now be
85 * Magic.py (%unalias, %alias): %store'd aliases can now be
82 removed with '%unalias'. %alias w/o args now shows most
86 removed with '%unalias'. %alias w/o args now shows most
83 interesting (stored / manually defined) aliases last
87 interesting (stored / manually defined) aliases last
84 where they catch the eye w/o scrolling.
88 where they catch the eye w/o scrolling.
85
89
86 * Magic.py (%rehashx), ext_rehashdir.py: files with
90 * Magic.py (%rehashx), ext_rehashdir.py: files with
87 'py' extension are always considered executable, even
91 'py' extension are always considered executable, even
88 when not in PATHEXT environment variable.
92 when not in PATHEXT environment variable.
89
93
90 2006-10-12 Ville Vainio <vivainio@gmail.com>
94 2006-10-12 Ville Vainio <vivainio@gmail.com>
91
95
92 * jobctrl.py: Add new "jobctrl" extension for spawning background
96 * jobctrl.py: Add new "jobctrl" extension for spawning background
93 processes with "&find /". 'import jobctrl' to try it out. Requires
97 processes with "&find /". 'import jobctrl' to try it out. Requires
94 'subprocess' module, standard in python 2.4+.
98 'subprocess' module, standard in python 2.4+.
95
99
96 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
100 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
97 so if foo -> bar and bar -> baz, then foo -> baz.
101 so if foo -> bar and bar -> baz, then foo -> baz.
98
102
99 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
103 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
100
104
101 * IPython/Magic.py (Magic.parse_options): add a new posix option
105 * IPython/Magic.py (Magic.parse_options): add a new posix option
102 to allow parsing of input args in magics that doesn't strip quotes
106 to allow parsing of input args in magics that doesn't strip quotes
103 (if posix=False). This also closes %timeit bug reported by
107 (if posix=False). This also closes %timeit bug reported by
104 Stefan.
108 Stefan.
105
109
106 2006-10-03 Ville Vainio <vivainio@gmail.com>
110 2006-10-03 Ville Vainio <vivainio@gmail.com>
107
111
108 * iplib.py (raw_input, interact): Return ValueError catching for
112 * iplib.py (raw_input, interact): Return ValueError catching for
109 raw_input. Fixes infinite loop for sys.stdin.close() or
113 raw_input. Fixes infinite loop for sys.stdin.close() or
110 sys.stdout.close().
114 sys.stdout.close().
111
115
112 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
116 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
113
117
114 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
118 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
115 to help in handling doctests. irunner is now pretty useful for
119 to help in handling doctests. irunner is now pretty useful for
116 running standalone scripts and simulate a full interactive session
120 running standalone scripts and simulate a full interactive session
117 in a format that can be then pasted as a doctest.
121 in a format that can be then pasted as a doctest.
118
122
119 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
123 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
120 on top of the default (useless) ones. This also fixes the nasty
124 on top of the default (useless) ones. This also fixes the nasty
121 way in which 2.5's Quitter() exits (reverted [1785]).
125 way in which 2.5's Quitter() exits (reverted [1785]).
122
126
123 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
127 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
124 2.5.
128 2.5.
125
129
126 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
130 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
127 color scheme is updated as well when color scheme is changed
131 color scheme is updated as well when color scheme is changed
128 interactively.
132 interactively.
129
133
130 2006-09-27 Ville Vainio <vivainio@gmail.com>
134 2006-09-27 Ville Vainio <vivainio@gmail.com>
131
135
132 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
136 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
133 infinite loop and just exit. It's a hack, but will do for a while.
137 infinite loop and just exit. It's a hack, but will do for a while.
134
138
135 2006-08-25 Walter Doerwald <walter@livinglogic.de>
139 2006-08-25 Walter Doerwald <walter@livinglogic.de>
136
140
137 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
141 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
138 the constructor, this makes it possible to get a list of only directories
142 the constructor, this makes it possible to get a list of only directories
139 or only files.
143 or only files.
140
144
141 2006-08-12 Ville Vainio <vivainio@gmail.com>
145 2006-08-12 Ville Vainio <vivainio@gmail.com>
142
146
143 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
147 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
144 they broke unittest
148 they broke unittest
145
149
146 2006-08-11 Ville Vainio <vivainio@gmail.com>
150 2006-08-11 Ville Vainio <vivainio@gmail.com>
147
151
148 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
152 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
149 by resolving issue properly, i.e. by inheriting FakeModule
153 by resolving issue properly, i.e. by inheriting FakeModule
150 from types.ModuleType. Pickling ipython interactive data
154 from types.ModuleType. Pickling ipython interactive data
151 should still work as usual (testing appreciated).
155 should still work as usual (testing appreciated).
152
156
153 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
157 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
154
158
155 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
159 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
156 running under python 2.3 with code from 2.4 to fix a bug with
160 running under python 2.3 with code from 2.4 to fix a bug with
157 help(). Reported by the Debian maintainers, Norbert Tretkowski
161 help(). Reported by the Debian maintainers, Norbert Tretkowski
158 <norbert-AT-tretkowski.de> and Alexandre Fayolle
162 <norbert-AT-tretkowski.de> and Alexandre Fayolle
159 <afayolle-AT-debian.org>.
163 <afayolle-AT-debian.org>.
160
164
161 2006-08-04 Walter Doerwald <walter@livinglogic.de>
165 2006-08-04 Walter Doerwald <walter@livinglogic.de>
162
166
163 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
167 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
164 (which was displaying "quit" twice).
168 (which was displaying "quit" twice).
165
169
166 2006-07-28 Walter Doerwald <walter@livinglogic.de>
170 2006-07-28 Walter Doerwald <walter@livinglogic.de>
167
171
168 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
172 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
169 the mode argument).
173 the mode argument).
170
174
171 2006-07-27 Walter Doerwald <walter@livinglogic.de>
175 2006-07-27 Walter Doerwald <walter@livinglogic.de>
172
176
173 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
177 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
174 not running under IPython.
178 not running under IPython.
175
179
176 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
180 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
177 and make it iterable (iterating over the attribute itself). Add two new
181 and make it iterable (iterating over the attribute itself). Add two new
178 magic strings for __xattrs__(): If the string starts with "-", the attribute
182 magic strings for __xattrs__(): If the string starts with "-", the attribute
179 will not be displayed in ibrowse's detail view (but it can still be
183 will not be displayed in ibrowse's detail view (but it can still be
180 iterated over). This makes it possible to add attributes that are large
184 iterated over). This makes it possible to add attributes that are large
181 lists or generator methods to the detail view. Replace magic attribute names
185 lists or generator methods to the detail view. Replace magic attribute names
182 and _attrname() and _getattr() with "descriptors": For each type of magic
186 and _attrname() and _getattr() with "descriptors": For each type of magic
183 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
187 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
184 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
188 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
185 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
189 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
186 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
190 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
187 are still supported.
191 are still supported.
188
192
189 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
193 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
190 fails in ibrowse.fetch(), the exception object is added as the last item
194 fails in ibrowse.fetch(), the exception object is added as the last item
191 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
195 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
192 a generator throws an exception midway through execution.
196 a generator throws an exception midway through execution.
193
197
194 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
198 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
195 encoding into methods.
199 encoding into methods.
196
200
197 2006-07-26 Ville Vainio <vivainio@gmail.com>
201 2006-07-26 Ville Vainio <vivainio@gmail.com>
198
202
199 * iplib.py: history now stores multiline input as single
203 * iplib.py: history now stores multiline input as single
200 history entries. Patch by Jorgen Cederlof.
204 history entries. Patch by Jorgen Cederlof.
201
205
202 2006-07-18 Walter Doerwald <walter@livinglogic.de>
206 2006-07-18 Walter Doerwald <walter@livinglogic.de>
203
207
204 * IPython/Extensions/ibrowse.py: Make cursor visible over
208 * IPython/Extensions/ibrowse.py: Make cursor visible over
205 non existing attributes.
209 non existing attributes.
206
210
207 2006-07-14 Walter Doerwald <walter@livinglogic.de>
211 2006-07-14 Walter Doerwald <walter@livinglogic.de>
208
212
209 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
213 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
210 error output of the running command doesn't mess up the screen.
214 error output of the running command doesn't mess up the screen.
211
215
212 2006-07-13 Walter Doerwald <walter@livinglogic.de>
216 2006-07-13 Walter Doerwald <walter@livinglogic.de>
213
217
214 * IPython/Extensions/ipipe.py (isort): Make isort usable without
218 * IPython/Extensions/ipipe.py (isort): Make isort usable without
215 argument. This sorts the items themselves.
219 argument. This sorts the items themselves.
216
220
217 2006-07-12 Walter Doerwald <walter@livinglogic.de>
221 2006-07-12 Walter Doerwald <walter@livinglogic.de>
218
222
219 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
223 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
220 Compile expression strings into code objects. This should speed
224 Compile expression strings into code objects. This should speed
221 up ifilter and friends somewhat.
225 up ifilter and friends somewhat.
222
226
223 2006-07-08 Ville Vainio <vivainio@gmail.com>
227 2006-07-08 Ville Vainio <vivainio@gmail.com>
224
228
225 * Magic.py: %cpaste now strips > from the beginning of lines
229 * Magic.py: %cpaste now strips > from the beginning of lines
226 to ease pasting quoted code from emails. Contributed by
230 to ease pasting quoted code from emails. Contributed by
227 Stefan van der Walt.
231 Stefan van der Walt.
228
232
229 2006-06-29 Ville Vainio <vivainio@gmail.com>
233 2006-06-29 Ville Vainio <vivainio@gmail.com>
230
234
231 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
235 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
232 mode, patch contributed by Darren Dale. NEEDS TESTING!
236 mode, patch contributed by Darren Dale. NEEDS TESTING!
233
237
234 2006-06-28 Walter Doerwald <walter@livinglogic.de>
238 2006-06-28 Walter Doerwald <walter@livinglogic.de>
235
239
236 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
240 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
237 a blue background. Fix fetching new display rows when the browser
241 a blue background. Fix fetching new display rows when the browser
238 scrolls more than a screenful (e.g. by using the goto command).
242 scrolls more than a screenful (e.g. by using the goto command).
239
243
240 2006-06-27 Ville Vainio <vivainio@gmail.com>
244 2006-06-27 Ville Vainio <vivainio@gmail.com>
241
245
242 * Magic.py (_inspect, _ofind) Apply David Huard's
246 * Magic.py (_inspect, _ofind) Apply David Huard's
243 patch for displaying the correct docstring for 'property'
247 patch for displaying the correct docstring for 'property'
244 attributes.
248 attributes.
245
249
246 2006-06-23 Walter Doerwald <walter@livinglogic.de>
250 2006-06-23 Walter Doerwald <walter@livinglogic.de>
247
251
248 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
252 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
249 commands into the methods implementing them.
253 commands into the methods implementing them.
250
254
251 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
255 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
252
256
253 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
257 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
254 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
258 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
255 autoindent support was authored by Jin Liu.
259 autoindent support was authored by Jin Liu.
256
260
257 2006-06-22 Walter Doerwald <walter@livinglogic.de>
261 2006-06-22 Walter Doerwald <walter@livinglogic.de>
258
262
259 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
263 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
260 for keymaps with a custom class that simplifies handling.
264 for keymaps with a custom class that simplifies handling.
261
265
262 2006-06-19 Walter Doerwald <walter@livinglogic.de>
266 2006-06-19 Walter Doerwald <walter@livinglogic.de>
263
267
264 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
268 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
265 resizing. This requires Python 2.5 to work.
269 resizing. This requires Python 2.5 to work.
266
270
267 2006-06-16 Walter Doerwald <walter@livinglogic.de>
271 2006-06-16 Walter Doerwald <walter@livinglogic.de>
268
272
269 * IPython/Extensions/ibrowse.py: Add two new commands to
273 * IPython/Extensions/ibrowse.py: Add two new commands to
270 ibrowse: "hideattr" (mapped to "h") hides the attribute under
274 ibrowse: "hideattr" (mapped to "h") hides the attribute under
271 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
275 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
272 attributes again. Remapped the help command to "?". Display
276 attributes again. Remapped the help command to "?". Display
273 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
277 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
274 as keys for the "home" and "end" commands. Add three new commands
278 as keys for the "home" and "end" commands. Add three new commands
275 to the input mode for "find" and friends: "delend" (CTRL-K)
279 to the input mode for "find" and friends: "delend" (CTRL-K)
276 deletes to the end of line. "incsearchup" searches upwards in the
280 deletes to the end of line. "incsearchup" searches upwards in the
277 command history for an input that starts with the text before the cursor.
281 command history for an input that starts with the text before the cursor.
278 "incsearchdown" does the same downwards. Removed a bogus mapping of
282 "incsearchdown" does the same downwards. Removed a bogus mapping of
279 the x key to "delete".
283 the x key to "delete".
280
284
281 2006-06-15 Ville Vainio <vivainio@gmail.com>
285 2006-06-15 Ville Vainio <vivainio@gmail.com>
282
286
283 * iplib.py, hooks.py: Added new generate_prompt hook that can be
287 * iplib.py, hooks.py: Added new generate_prompt hook that can be
284 used to create prompts dynamically, instead of the "old" way of
288 used to create prompts dynamically, instead of the "old" way of
285 assigning "magic" strings to prompt_in1 and prompt_in2. The old
289 assigning "magic" strings to prompt_in1 and prompt_in2. The old
286 way still works (it's invoked by the default hook), of course.
290 way still works (it's invoked by the default hook), of course.
287
291
288 * Prompts.py: added generate_output_prompt hook for altering output
292 * Prompts.py: added generate_output_prompt hook for altering output
289 prompt
293 prompt
290
294
291 * Release.py: Changed version string to 0.7.3.svn.
295 * Release.py: Changed version string to 0.7.3.svn.
292
296
293 2006-06-15 Walter Doerwald <walter@livinglogic.de>
297 2006-06-15 Walter Doerwald <walter@livinglogic.de>
294
298
295 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
299 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
296 the call to fetch() always tries to fetch enough data for at least one
300 the call to fetch() always tries to fetch enough data for at least one
297 full screen. This makes it possible to simply call moveto(0,0,True) in
301 full screen. This makes it possible to simply call moveto(0,0,True) in
298 the constructor. Fix typos and removed the obsolete goto attribute.
302 the constructor. Fix typos and removed the obsolete goto attribute.
299
303
300 2006-06-12 Ville Vainio <vivainio@gmail.com>
304 2006-06-12 Ville Vainio <vivainio@gmail.com>
301
305
302 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
306 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
303 allowing $variable interpolation within multiline statements,
307 allowing $variable interpolation within multiline statements,
304 though so far only with "sh" profile for a testing period.
308 though so far only with "sh" profile for a testing period.
305 The patch also enables splitting long commands with \ but it
309 The patch also enables splitting long commands with \ but it
306 doesn't work properly yet.
310 doesn't work properly yet.
307
311
308 2006-06-12 Walter Doerwald <walter@livinglogic.de>
312 2006-06-12 Walter Doerwald <walter@livinglogic.de>
309
313
310 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
314 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
311 input history and the position of the cursor in the input history for
315 input history and the position of the cursor in the input history for
312 the find, findbackwards and goto command.
316 the find, findbackwards and goto command.
313
317
314 2006-06-10 Walter Doerwald <walter@livinglogic.de>
318 2006-06-10 Walter Doerwald <walter@livinglogic.de>
315
319
316 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
320 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
317 implements the basic functionality of browser commands that require
321 implements the basic functionality of browser commands that require
318 input. Reimplement the goto, find and findbackwards commands as
322 input. Reimplement the goto, find and findbackwards commands as
319 subclasses of _CommandInput. Add an input history and keymaps to those
323 subclasses of _CommandInput. Add an input history and keymaps to those
320 commands. Add "\r" as a keyboard shortcut for the enterdefault and
324 commands. Add "\r" as a keyboard shortcut for the enterdefault and
321 execute commands.
325 execute commands.
322
326
323 2006-06-07 Ville Vainio <vivainio@gmail.com>
327 2006-06-07 Ville Vainio <vivainio@gmail.com>
324
328
325 * iplib.py: ipython mybatch.ipy exits ipython immediately after
329 * iplib.py: ipython mybatch.ipy exits ipython immediately after
326 running the batch files instead of leaving the session open.
330 running the batch files instead of leaving the session open.
327
331
328 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
332 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
329
333
330 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
334 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
331 the original fix was incomplete. Patch submitted by W. Maier.
335 the original fix was incomplete. Patch submitted by W. Maier.
332
336
333 2006-06-07 Ville Vainio <vivainio@gmail.com>
337 2006-06-07 Ville Vainio <vivainio@gmail.com>
334
338
335 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
339 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
336 Confirmation prompts can be supressed by 'quiet' option.
340 Confirmation prompts can be supressed by 'quiet' option.
337 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
341 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
338
342
339 2006-06-06 *** Released version 0.7.2
343 2006-06-06 *** Released version 0.7.2
340
344
341 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
345 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
342
346
343 * IPython/Release.py (version): Made 0.7.2 final for release.
347 * IPython/Release.py (version): Made 0.7.2 final for release.
344 Repo tagged and release cut.
348 Repo tagged and release cut.
345
349
346 2006-06-05 Ville Vainio <vivainio@gmail.com>
350 2006-06-05 Ville Vainio <vivainio@gmail.com>
347
351
348 * Magic.py (magic_rehashx): Honor no_alias list earlier in
352 * Magic.py (magic_rehashx): Honor no_alias list earlier in
349 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
353 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
350
354
351 * upgrade_dir.py: try import 'path' module a bit harder
355 * upgrade_dir.py: try import 'path' module a bit harder
352 (for %upgrade)
356 (for %upgrade)
353
357
354 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
358 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
355
359
356 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
360 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
357 instead of looping 20 times.
361 instead of looping 20 times.
358
362
359 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
363 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
360 correctly at initialization time. Bug reported by Krishna Mohan
364 correctly at initialization time. Bug reported by Krishna Mohan
361 Gundu <gkmohan-AT-gmail.com> on the user list.
365 Gundu <gkmohan-AT-gmail.com> on the user list.
362
366
363 * IPython/Release.py (version): Mark 0.7.2 version to start
367 * IPython/Release.py (version): Mark 0.7.2 version to start
364 testing for release on 06/06.
368 testing for release on 06/06.
365
369
366 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
370 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
367
371
368 * scripts/irunner: thin script interface so users don't have to
372 * scripts/irunner: thin script interface so users don't have to
369 find the module and call it as an executable, since modules rarely
373 find the module and call it as an executable, since modules rarely
370 live in people's PATH.
374 live in people's PATH.
371
375
372 * IPython/irunner.py (InteractiveRunner.__init__): added
376 * IPython/irunner.py (InteractiveRunner.__init__): added
373 delaybeforesend attribute to control delays with newer versions of
377 delaybeforesend attribute to control delays with newer versions of
374 pexpect. Thanks to detailed help from pexpect's author, Noah
378 pexpect. Thanks to detailed help from pexpect's author, Noah
375 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
379 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
376 correctly (it works in NoColor mode).
380 correctly (it works in NoColor mode).
377
381
378 * IPython/iplib.py (handle_normal): fix nasty crash reported on
382 * IPython/iplib.py (handle_normal): fix nasty crash reported on
379 SAGE list, from improper log() calls.
383 SAGE list, from improper log() calls.
380
384
381 2006-05-31 Ville Vainio <vivainio@gmail.com>
385 2006-05-31 Ville Vainio <vivainio@gmail.com>
382
386
383 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
387 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
384 with args in parens to work correctly with dirs that have spaces.
388 with args in parens to work correctly with dirs that have spaces.
385
389
386 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
390 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
387
391
388 * IPython/Logger.py (Logger.logstart): add option to log raw input
392 * IPython/Logger.py (Logger.logstart): add option to log raw input
389 instead of the processed one. A -r flag was added to the
393 instead of the processed one. A -r flag was added to the
390 %logstart magic used for controlling logging.
394 %logstart magic used for controlling logging.
391
395
392 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
396 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
393
397
394 * IPython/iplib.py (InteractiveShell.__init__): add check for the
398 * IPython/iplib.py (InteractiveShell.__init__): add check for the
395 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
399 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
396 recognize the option. After a bug report by Will Maier. This
400 recognize the option. After a bug report by Will Maier. This
397 closes #64 (will do it after confirmation from W. Maier).
401 closes #64 (will do it after confirmation from W. Maier).
398
402
399 * IPython/irunner.py: New module to run scripts as if manually
403 * IPython/irunner.py: New module to run scripts as if manually
400 typed into an interactive environment, based on pexpect. After a
404 typed into an interactive environment, based on pexpect. After a
401 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
405 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
402 ipython-user list. Simple unittests in the tests/ directory.
406 ipython-user list. Simple unittests in the tests/ directory.
403
407
404 * tools/release: add Will Maier, OpenBSD port maintainer, to
408 * tools/release: add Will Maier, OpenBSD port maintainer, to
405 recepients list. We are now officially part of the OpenBSD ports:
409 recepients list. We are now officially part of the OpenBSD ports:
406 http://www.openbsd.org/ports.html ! Many thanks to Will for the
410 http://www.openbsd.org/ports.html ! Many thanks to Will for the
407 work.
411 work.
408
412
409 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
413 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
410
414
411 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
415 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
412 so that it doesn't break tkinter apps.
416 so that it doesn't break tkinter apps.
413
417
414 * IPython/iplib.py (_prefilter): fix bug where aliases would
418 * IPython/iplib.py (_prefilter): fix bug where aliases would
415 shadow variables when autocall was fully off. Reported by SAGE
419 shadow variables when autocall was fully off. Reported by SAGE
416 author William Stein.
420 author William Stein.
417
421
418 * IPython/OInspect.py (Inspector.__init__): add a flag to control
422 * IPython/OInspect.py (Inspector.__init__): add a flag to control
419 at what detail level strings are computed when foo? is requested.
423 at what detail level strings are computed when foo? is requested.
420 This allows users to ask for example that the string form of an
424 This allows users to ask for example that the string form of an
421 object is only computed when foo?? is called, or even never, by
425 object is only computed when foo?? is called, or even never, by
422 setting the object_info_string_level >= 2 in the configuration
426 setting the object_info_string_level >= 2 in the configuration
423 file. This new option has been added and documented. After a
427 file. This new option has been added and documented. After a
424 request by SAGE to be able to control the printing of very large
428 request by SAGE to be able to control the printing of very large
425 objects more easily.
429 objects more easily.
426
430
427 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
431 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
428
432
429 * IPython/ipmaker.py (make_IPython): remove the ipython call path
433 * IPython/ipmaker.py (make_IPython): remove the ipython call path
430 from sys.argv, to be 100% consistent with how Python itself works
434 from sys.argv, to be 100% consistent with how Python itself works
431 (as seen for example with python -i file.py). After a bug report
435 (as seen for example with python -i file.py). After a bug report
432 by Jeffrey Collins.
436 by Jeffrey Collins.
433
437
434 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
438 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
435 nasty bug which was preventing custom namespaces with -pylab,
439 nasty bug which was preventing custom namespaces with -pylab,
436 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
440 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
437 compatibility (long gone from mpl).
441 compatibility (long gone from mpl).
438
442
439 * IPython/ipapi.py (make_session): name change: create->make. We
443 * IPython/ipapi.py (make_session): name change: create->make. We
440 use make in other places (ipmaker,...), it's shorter and easier to
444 use make in other places (ipmaker,...), it's shorter and easier to
441 type and say, etc. I'm trying to clean things before 0.7.2 so
445 type and say, etc. I'm trying to clean things before 0.7.2 so
442 that I can keep things stable wrt to ipapi in the chainsaw branch.
446 that I can keep things stable wrt to ipapi in the chainsaw branch.
443
447
444 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
448 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
445 python-mode recognizes our debugger mode. Add support for
449 python-mode recognizes our debugger mode. Add support for
446 autoindent inside (X)emacs. After a patch sent in by Jin Liu
450 autoindent inside (X)emacs. After a patch sent in by Jin Liu
447 <m.liu.jin-AT-gmail.com> originally written by
451 <m.liu.jin-AT-gmail.com> originally written by
448 doxgen-AT-newsmth.net (with minor modifications for xemacs
452 doxgen-AT-newsmth.net (with minor modifications for xemacs
449 compatibility)
453 compatibility)
450
454
451 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
455 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
452 tracebacks when walking the stack so that the stack tracking system
456 tracebacks when walking the stack so that the stack tracking system
453 in emacs' python-mode can identify the frames correctly.
457 in emacs' python-mode can identify the frames correctly.
454
458
455 * IPython/ipmaker.py (make_IPython): make the internal (and
459 * IPython/ipmaker.py (make_IPython): make the internal (and
456 default config) autoedit_syntax value false by default. Too many
460 default config) autoedit_syntax value false by default. Too many
457 users have complained to me (both on and off-list) about problems
461 users have complained to me (both on and off-list) about problems
458 with this option being on by default, so I'm making it default to
462 with this option being on by default, so I'm making it default to
459 off. It can still be enabled by anyone via the usual mechanisms.
463 off. It can still be enabled by anyone via the usual mechanisms.
460
464
461 * IPython/completer.py (Completer.attr_matches): add support for
465 * IPython/completer.py (Completer.attr_matches): add support for
462 PyCrust-style _getAttributeNames magic method. Patch contributed
466 PyCrust-style _getAttributeNames magic method. Patch contributed
463 by <mscott-AT-goldenspud.com>. Closes #50.
467 by <mscott-AT-goldenspud.com>. Closes #50.
464
468
465 * IPython/iplib.py (InteractiveShell.__init__): remove the
469 * IPython/iplib.py (InteractiveShell.__init__): remove the
466 deletion of exit/quit from __builtin__, which can break
470 deletion of exit/quit from __builtin__, which can break
467 third-party tools like the Zope debugging console. The
471 third-party tools like the Zope debugging console. The
468 %exit/%quit magics remain. In general, it's probably a good idea
472 %exit/%quit magics remain. In general, it's probably a good idea
469 not to delete anything from __builtin__, since we never know what
473 not to delete anything from __builtin__, since we never know what
470 that will break. In any case, python now (for 2.5) will support
474 that will break. In any case, python now (for 2.5) will support
471 'real' exit/quit, so this issue is moot. Closes #55.
475 'real' exit/quit, so this issue is moot. Closes #55.
472
476
473 * IPython/genutils.py (with_obj): rename the 'with' function to
477 * IPython/genutils.py (with_obj): rename the 'with' function to
474 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
478 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
475 becomes a language keyword. Closes #53.
479 becomes a language keyword. Closes #53.
476
480
477 * IPython/FakeModule.py (FakeModule.__init__): add a proper
481 * IPython/FakeModule.py (FakeModule.__init__): add a proper
478 __file__ attribute to this so it fools more things into thinking
482 __file__ attribute to this so it fools more things into thinking
479 it is a real module. Closes #59.
483 it is a real module. Closes #59.
480
484
481 * IPython/Magic.py (magic_edit): add -n option to open the editor
485 * IPython/Magic.py (magic_edit): add -n option to open the editor
482 at a specific line number. After a patch by Stefan van der Walt.
486 at a specific line number. After a patch by Stefan van der Walt.
483
487
484 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
488 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
485
489
486 * IPython/iplib.py (edit_syntax_error): fix crash when for some
490 * IPython/iplib.py (edit_syntax_error): fix crash when for some
487 reason the file could not be opened. After automatic crash
491 reason the file could not be opened. After automatic crash
488 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
492 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
489 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
493 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
490 (_should_recompile): Don't fire editor if using %bg, since there
494 (_should_recompile): Don't fire editor if using %bg, since there
491 is no file in the first place. From the same report as above.
495 is no file in the first place. From the same report as above.
492 (raw_input): protect against faulty third-party prefilters. After
496 (raw_input): protect against faulty third-party prefilters. After
493 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
497 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
494 while running under SAGE.
498 while running under SAGE.
495
499
496 2006-05-23 Ville Vainio <vivainio@gmail.com>
500 2006-05-23 Ville Vainio <vivainio@gmail.com>
497
501
498 * ipapi.py: Stripped down ip.to_user_ns() to work only as
502 * ipapi.py: Stripped down ip.to_user_ns() to work only as
499 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
503 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
500 now returns None (again), unless dummy is specifically allowed by
504 now returns None (again), unless dummy is specifically allowed by
501 ipapi.get(allow_dummy=True).
505 ipapi.get(allow_dummy=True).
502
506
503 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
507 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
504
508
505 * IPython: remove all 2.2-compatibility objects and hacks from
509 * IPython: remove all 2.2-compatibility objects and hacks from
506 everywhere, since we only support 2.3 at this point. Docs
510 everywhere, since we only support 2.3 at this point. Docs
507 updated.
511 updated.
508
512
509 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
513 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
510 Anything requiring extra validation can be turned into a Python
514 Anything requiring extra validation can be turned into a Python
511 property in the future. I used a property for the db one b/c
515 property in the future. I used a property for the db one b/c
512 there was a nasty circularity problem with the initialization
516 there was a nasty circularity problem with the initialization
513 order, which right now I don't have time to clean up.
517 order, which right now I don't have time to clean up.
514
518
515 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
519 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
516 another locking bug reported by Jorgen. I'm not 100% sure though,
520 another locking bug reported by Jorgen. I'm not 100% sure though,
517 so more testing is needed...
521 so more testing is needed...
518
522
519 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
523 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
520
524
521 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
525 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
522 local variables from any routine in user code (typically executed
526 local variables from any routine in user code (typically executed
523 with %run) directly into the interactive namespace. Very useful
527 with %run) directly into the interactive namespace. Very useful
524 when doing complex debugging.
528 when doing complex debugging.
525 (IPythonNotRunning): Changed the default None object to a dummy
529 (IPythonNotRunning): Changed the default None object to a dummy
526 whose attributes can be queried as well as called without
530 whose attributes can be queried as well as called without
527 exploding, to ease writing code which works transparently both in
531 exploding, to ease writing code which works transparently both in
528 and out of ipython and uses some of this API.
532 and out of ipython and uses some of this API.
529
533
530 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
534 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
531
535
532 * IPython/hooks.py (result_display): Fix the fact that our display
536 * IPython/hooks.py (result_display): Fix the fact that our display
533 hook was using str() instead of repr(), as the default python
537 hook was using str() instead of repr(), as the default python
534 console does. This had gone unnoticed b/c it only happened if
538 console does. This had gone unnoticed b/c it only happened if
535 %Pprint was off, but the inconsistency was there.
539 %Pprint was off, but the inconsistency was there.
536
540
537 2006-05-15 Ville Vainio <vivainio@gmail.com>
541 2006-05-15 Ville Vainio <vivainio@gmail.com>
538
542
539 * Oinspect.py: Only show docstring for nonexisting/binary files
543 * Oinspect.py: Only show docstring for nonexisting/binary files
540 when doing object??, closing ticket #62
544 when doing object??, closing ticket #62
541
545
542 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
546 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
543
547
544 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
548 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
545 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
549 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
546 was being released in a routine which hadn't checked if it had
550 was being released in a routine which hadn't checked if it had
547 been the one to acquire it.
551 been the one to acquire it.
548
552
549 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
553 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
550
554
551 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
555 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
552
556
553 2006-04-11 Ville Vainio <vivainio@gmail.com>
557 2006-04-11 Ville Vainio <vivainio@gmail.com>
554
558
555 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
559 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
556 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
560 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
557 prefilters, allowing stuff like magics and aliases in the file.
561 prefilters, allowing stuff like magics and aliases in the file.
558
562
559 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
563 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
560 added. Supported now are "%clear in" and "%clear out" (clear input and
564 added. Supported now are "%clear in" and "%clear out" (clear input and
561 output history, respectively). Also fixed CachedOutput.flush to
565 output history, respectively). Also fixed CachedOutput.flush to
562 properly flush the output cache.
566 properly flush the output cache.
563
567
564 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
568 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
565 half-success (and fail explicitly).
569 half-success (and fail explicitly).
566
570
567 2006-03-28 Ville Vainio <vivainio@gmail.com>
571 2006-03-28 Ville Vainio <vivainio@gmail.com>
568
572
569 * iplib.py: Fix quoting of aliases so that only argless ones
573 * iplib.py: Fix quoting of aliases so that only argless ones
570 are quoted
574 are quoted
571
575
572 2006-03-28 Ville Vainio <vivainio@gmail.com>
576 2006-03-28 Ville Vainio <vivainio@gmail.com>
573
577
574 * iplib.py: Quote aliases with spaces in the name.
578 * iplib.py: Quote aliases with spaces in the name.
575 "c:\program files\blah\bin" is now legal alias target.
579 "c:\program files\blah\bin" is now legal alias target.
576
580
577 * ext_rehashdir.py: Space no longer allowed as arg
581 * ext_rehashdir.py: Space no longer allowed as arg
578 separator, since space is legal in path names.
582 separator, since space is legal in path names.
579
583
580 2006-03-16 Ville Vainio <vivainio@gmail.com>
584 2006-03-16 Ville Vainio <vivainio@gmail.com>
581
585
582 * upgrade_dir.py: Take path.py from Extensions, correcting
586 * upgrade_dir.py: Take path.py from Extensions, correcting
583 %upgrade magic
587 %upgrade magic
584
588
585 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
589 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
586
590
587 * hooks.py: Only enclose editor binary in quotes if legal and
591 * hooks.py: Only enclose editor binary in quotes if legal and
588 necessary (space in the name, and is an existing file). Fixes a bug
592 necessary (space in the name, and is an existing file). Fixes a bug
589 reported by Zachary Pincus.
593 reported by Zachary Pincus.
590
594
591 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
595 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
592
596
593 * Manual: thanks to a tip on proper color handling for Emacs, by
597 * Manual: thanks to a tip on proper color handling for Emacs, by
594 Eric J Haywiser <ejh1-AT-MIT.EDU>.
598 Eric J Haywiser <ejh1-AT-MIT.EDU>.
595
599
596 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
600 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
597 by applying the provided patch. Thanks to Liu Jin
601 by applying the provided patch. Thanks to Liu Jin
598 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
602 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
599 XEmacs/Linux, I'm trusting the submitter that it actually helps
603 XEmacs/Linux, I'm trusting the submitter that it actually helps
600 under win32/GNU Emacs. Will revisit if any problems are reported.
604 under win32/GNU Emacs. Will revisit if any problems are reported.
601
605
602 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
606 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
603
607
604 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
608 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
605 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
609 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
606
610
607 2006-03-12 Ville Vainio <vivainio@gmail.com>
611 2006-03-12 Ville Vainio <vivainio@gmail.com>
608
612
609 * Magic.py (magic_timeit): Added %timeit magic, contributed by
613 * Magic.py (magic_timeit): Added %timeit magic, contributed by
610 Torsten Marek.
614 Torsten Marek.
611
615
612 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
616 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
613
617
614 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
618 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
615 line ranges works again.
619 line ranges works again.
616
620
617 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
621 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
618
622
619 * IPython/iplib.py (showtraceback): add back sys.last_traceback
623 * IPython/iplib.py (showtraceback): add back sys.last_traceback
620 and friends, after a discussion with Zach Pincus on ipython-user.
624 and friends, after a discussion with Zach Pincus on ipython-user.
621 I'm not 100% sure, but after thinking about it quite a bit, it may
625 I'm not 100% sure, but after thinking about it quite a bit, it may
622 be OK. Testing with the multithreaded shells didn't reveal any
626 be OK. Testing with the multithreaded shells didn't reveal any
623 problems, but let's keep an eye out.
627 problems, but let's keep an eye out.
624
628
625 In the process, I fixed a few things which were calling
629 In the process, I fixed a few things which were calling
626 self.InteractiveTB() directly (like safe_execfile), which is a
630 self.InteractiveTB() directly (like safe_execfile), which is a
627 mistake: ALL exception reporting should be done by calling
631 mistake: ALL exception reporting should be done by calling
628 self.showtraceback(), which handles state and tab-completion and
632 self.showtraceback(), which handles state and tab-completion and
629 more.
633 more.
630
634
631 2006-03-01 Ville Vainio <vivainio@gmail.com>
635 2006-03-01 Ville Vainio <vivainio@gmail.com>
632
636
633 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
637 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
634 To use, do "from ipipe import *".
638 To use, do "from ipipe import *".
635
639
636 2006-02-24 Ville Vainio <vivainio@gmail.com>
640 2006-02-24 Ville Vainio <vivainio@gmail.com>
637
641
638 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
642 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
639 "cleanly" and safely than the older upgrade mechanism.
643 "cleanly" and safely than the older upgrade mechanism.
640
644
641 2006-02-21 Ville Vainio <vivainio@gmail.com>
645 2006-02-21 Ville Vainio <vivainio@gmail.com>
642
646
643 * Magic.py: %save works again.
647 * Magic.py: %save works again.
644
648
645 2006-02-15 Ville Vainio <vivainio@gmail.com>
649 2006-02-15 Ville Vainio <vivainio@gmail.com>
646
650
647 * Magic.py: %Pprint works again
651 * Magic.py: %Pprint works again
648
652
649 * Extensions/ipy_sane_defaults.py: Provide everything provided
653 * Extensions/ipy_sane_defaults.py: Provide everything provided
650 in default ipythonrc, to make it possible to have a completely empty
654 in default ipythonrc, to make it possible to have a completely empty
651 ipythonrc (and thus completely rc-file free configuration)
655 ipythonrc (and thus completely rc-file free configuration)
652
656
653 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
657 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
654
658
655 * IPython/hooks.py (editor): quote the call to the editor command,
659 * IPython/hooks.py (editor): quote the call to the editor command,
656 to allow commands with spaces in them. Problem noted by watching
660 to allow commands with spaces in them. Problem noted by watching
657 Ian Oswald's video about textpad under win32 at
661 Ian Oswald's video about textpad under win32 at
658 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
662 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
659
663
660 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
664 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
661 describing magics (we haven't used @ for a loong time).
665 describing magics (we haven't used @ for a loong time).
662
666
663 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
667 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
664 contributed by marienz to close
668 contributed by marienz to close
665 http://www.scipy.net/roundup/ipython/issue53.
669 http://www.scipy.net/roundup/ipython/issue53.
666
670
667 2006-02-10 Ville Vainio <vivainio@gmail.com>
671 2006-02-10 Ville Vainio <vivainio@gmail.com>
668
672
669 * genutils.py: getoutput now works in win32 too
673 * genutils.py: getoutput now works in win32 too
670
674
671 * completer.py: alias and magic completion only invoked
675 * completer.py: alias and magic completion only invoked
672 at the first "item" in the line, to avoid "cd %store"
676 at the first "item" in the line, to avoid "cd %store"
673 nonsense.
677 nonsense.
674
678
675 2006-02-09 Ville Vainio <vivainio@gmail.com>
679 2006-02-09 Ville Vainio <vivainio@gmail.com>
676
680
677 * test/*: Added a unit testing framework (finally).
681 * test/*: Added a unit testing framework (finally).
678 '%run runtests.py' to run test_*.
682 '%run runtests.py' to run test_*.
679
683
680 * ipapi.py: Exposed runlines and set_custom_exc
684 * ipapi.py: Exposed runlines and set_custom_exc
681
685
682 2006-02-07 Ville Vainio <vivainio@gmail.com>
686 2006-02-07 Ville Vainio <vivainio@gmail.com>
683
687
684 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
688 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
685 instead use "f(1 2)" as before.
689 instead use "f(1 2)" as before.
686
690
687 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
691 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
688
692
689 * IPython/demo.py (IPythonDemo): Add new classes to the demo
693 * IPython/demo.py (IPythonDemo): Add new classes to the demo
690 facilities, for demos processed by the IPython input filter
694 facilities, for demos processed by the IPython input filter
691 (IPythonDemo), and for running a script one-line-at-a-time as a
695 (IPythonDemo), and for running a script one-line-at-a-time as a
692 demo, both for pure Python (LineDemo) and for IPython-processed
696 demo, both for pure Python (LineDemo) and for IPython-processed
693 input (IPythonLineDemo). After a request by Dave Kohel, from the
697 input (IPythonLineDemo). After a request by Dave Kohel, from the
694 SAGE team.
698 SAGE team.
695 (Demo.edit): added an edit() method to the demo objects, to edit
699 (Demo.edit): added an edit() method to the demo objects, to edit
696 the in-memory copy of the last executed block.
700 the in-memory copy of the last executed block.
697
701
698 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
702 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
699 processing to %edit, %macro and %save. These commands can now be
703 processing to %edit, %macro and %save. These commands can now be
700 invoked on the unprocessed input as it was typed by the user
704 invoked on the unprocessed input as it was typed by the user
701 (without any prefilters applied). After requests by the SAGE team
705 (without any prefilters applied). After requests by the SAGE team
702 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
706 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
703
707
704 2006-02-01 Ville Vainio <vivainio@gmail.com>
708 2006-02-01 Ville Vainio <vivainio@gmail.com>
705
709
706 * setup.py, eggsetup.py: easy_install ipython==dev works
710 * setup.py, eggsetup.py: easy_install ipython==dev works
707 correctly now (on Linux)
711 correctly now (on Linux)
708
712
709 * ipy_user_conf,ipmaker: user config changes, removed spurious
713 * ipy_user_conf,ipmaker: user config changes, removed spurious
710 warnings
714 warnings
711
715
712 * iplib: if rc.banner is string, use it as is.
716 * iplib: if rc.banner is string, use it as is.
713
717
714 * Magic: %pycat accepts a string argument and pages it's contents.
718 * Magic: %pycat accepts a string argument and pages it's contents.
715
719
716
720
717 2006-01-30 Ville Vainio <vivainio@gmail.com>
721 2006-01-30 Ville Vainio <vivainio@gmail.com>
718
722
719 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
723 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
720 Now %store and bookmarks work through PickleShare, meaning that
724 Now %store and bookmarks work through PickleShare, meaning that
721 concurrent access is possible and all ipython sessions see the
725 concurrent access is possible and all ipython sessions see the
722 same database situation all the time, instead of snapshot of
726 same database situation all the time, instead of snapshot of
723 the situation when the session was started. Hence, %bookmark
727 the situation when the session was started. Hence, %bookmark
724 results are immediately accessible from othes sessions. The database
728 results are immediately accessible from othes sessions. The database
725 is also available for use by user extensions. See:
729 is also available for use by user extensions. See:
726 http://www.python.org/pypi/pickleshare
730 http://www.python.org/pypi/pickleshare
727
731
728 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
732 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
729
733
730 * aliases can now be %store'd
734 * aliases can now be %store'd
731
735
732 * path.py moved to Extensions so that pickleshare does not need
736 * path.py moved to Extensions so that pickleshare does not need
733 IPython-specific import. Extensions added to pythonpath right
737 IPython-specific import. Extensions added to pythonpath right
734 at __init__.
738 at __init__.
735
739
736 * iplib.py: ipalias deprecated/redundant; aliases are converted and
740 * iplib.py: ipalias deprecated/redundant; aliases are converted and
737 called with _ip.system and the pre-transformed command string.
741 called with _ip.system and the pre-transformed command string.
738
742
739 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
743 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
740
744
741 * IPython/iplib.py (interact): Fix that we were not catching
745 * IPython/iplib.py (interact): Fix that we were not catching
742 KeyboardInterrupt exceptions properly. I'm not quite sure why the
746 KeyboardInterrupt exceptions properly. I'm not quite sure why the
743 logic here had to change, but it's fixed now.
747 logic here had to change, but it's fixed now.
744
748
745 2006-01-29 Ville Vainio <vivainio@gmail.com>
749 2006-01-29 Ville Vainio <vivainio@gmail.com>
746
750
747 * iplib.py: Try to import pyreadline on Windows.
751 * iplib.py: Try to import pyreadline on Windows.
748
752
749 2006-01-27 Ville Vainio <vivainio@gmail.com>
753 2006-01-27 Ville Vainio <vivainio@gmail.com>
750
754
751 * iplib.py: Expose ipapi as _ip in builtin namespace.
755 * iplib.py: Expose ipapi as _ip in builtin namespace.
752 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
756 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
753 and ip_set_hook (-> _ip.set_hook) redundant. % and !
757 and ip_set_hook (-> _ip.set_hook) redundant. % and !
754 syntax now produce _ip.* variant of the commands.
758 syntax now produce _ip.* variant of the commands.
755
759
756 * "_ip.options().autoedit_syntax = 2" automatically throws
760 * "_ip.options().autoedit_syntax = 2" automatically throws
757 user to editor for syntax error correction without prompting.
761 user to editor for syntax error correction without prompting.
758
762
759 2006-01-27 Ville Vainio <vivainio@gmail.com>
763 2006-01-27 Ville Vainio <vivainio@gmail.com>
760
764
761 * ipmaker.py: Give "realistic" sys.argv for scripts (without
765 * ipmaker.py: Give "realistic" sys.argv for scripts (without
762 'ipython' at argv[0]) executed through command line.
766 'ipython' at argv[0]) executed through command line.
763 NOTE: this DEPRECATES calling ipython with multiple scripts
767 NOTE: this DEPRECATES calling ipython with multiple scripts
764 ("ipython a.py b.py c.py")
768 ("ipython a.py b.py c.py")
765
769
766 * iplib.py, hooks.py: Added configurable input prefilter,
770 * iplib.py, hooks.py: Added configurable input prefilter,
767 named 'input_prefilter'. See ext_rescapture.py for example
771 named 'input_prefilter'. See ext_rescapture.py for example
768 usage.
772 usage.
769
773
770 * ext_rescapture.py, Magic.py: Better system command output capture
774 * ext_rescapture.py, Magic.py: Better system command output capture
771 through 'var = !ls' (deprecates user-visible %sc). Same notation
775 through 'var = !ls' (deprecates user-visible %sc). Same notation
772 applies for magics, 'var = %alias' assigns alias list to var.
776 applies for magics, 'var = %alias' assigns alias list to var.
773
777
774 * ipapi.py: added meta() for accessing extension-usable data store.
778 * ipapi.py: added meta() for accessing extension-usable data store.
775
779
776 * iplib.py: added InteractiveShell.getapi(). New magics should be
780 * iplib.py: added InteractiveShell.getapi(). New magics should be
777 written doing self.getapi() instead of using the shell directly.
781 written doing self.getapi() instead of using the shell directly.
778
782
779 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
783 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
780 %store foo >> ~/myfoo.txt to store variables to files (in clean
784 %store foo >> ~/myfoo.txt to store variables to files (in clean
781 textual form, not a restorable pickle).
785 textual form, not a restorable pickle).
782
786
783 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
787 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
784
788
785 * usage.py, Magic.py: added %quickref
789 * usage.py, Magic.py: added %quickref
786
790
787 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
791 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
788
792
789 * GetoptErrors when invoking magics etc. with wrong args
793 * GetoptErrors when invoking magics etc. with wrong args
790 are now more helpful:
794 are now more helpful:
791 GetoptError: option -l not recognized (allowed: "qb" )
795 GetoptError: option -l not recognized (allowed: "qb" )
792
796
793 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
797 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
794
798
795 * IPython/demo.py (Demo.show): Flush stdout after each block, so
799 * IPython/demo.py (Demo.show): Flush stdout after each block, so
796 computationally intensive blocks don't appear to stall the demo.
800 computationally intensive blocks don't appear to stall the demo.
797
801
798 2006-01-24 Ville Vainio <vivainio@gmail.com>
802 2006-01-24 Ville Vainio <vivainio@gmail.com>
799
803
800 * iplib.py, hooks.py: 'result_display' hook can return a non-None
804 * iplib.py, hooks.py: 'result_display' hook can return a non-None
801 value to manipulate resulting history entry.
805 value to manipulate resulting history entry.
802
806
803 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
807 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
804 to instance methods of IPApi class, to make extending an embedded
808 to instance methods of IPApi class, to make extending an embedded
805 IPython feasible. See ext_rehashdir.py for example usage.
809 IPython feasible. See ext_rehashdir.py for example usage.
806
810
807 * Merged 1071-1076 from branches/0.7.1
811 * Merged 1071-1076 from branches/0.7.1
808
812
809
813
810 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
814 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
811
815
812 * tools/release (daystamp): Fix build tools to use the new
816 * tools/release (daystamp): Fix build tools to use the new
813 eggsetup.py script to build lightweight eggs.
817 eggsetup.py script to build lightweight eggs.
814
818
815 * Applied changesets 1062 and 1064 before 0.7.1 release.
819 * Applied changesets 1062 and 1064 before 0.7.1 release.
816
820
817 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
821 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
818 see the raw input history (without conversions like %ls ->
822 see the raw input history (without conversions like %ls ->
819 ipmagic("ls")). After a request from W. Stein, SAGE
823 ipmagic("ls")). After a request from W. Stein, SAGE
820 (http://modular.ucsd.edu/sage) developer. This information is
824 (http://modular.ucsd.edu/sage) developer. This information is
821 stored in the input_hist_raw attribute of the IPython instance, so
825 stored in the input_hist_raw attribute of the IPython instance, so
822 developers can access it if needed (it's an InputList instance).
826 developers can access it if needed (it's an InputList instance).
823
827
824 * Versionstring = 0.7.2.svn
828 * Versionstring = 0.7.2.svn
825
829
826 * eggsetup.py: A separate script for constructing eggs, creates
830 * eggsetup.py: A separate script for constructing eggs, creates
827 proper launch scripts even on Windows (an .exe file in
831 proper launch scripts even on Windows (an .exe file in
828 \python24\scripts).
832 \python24\scripts).
829
833
830 * ipapi.py: launch_new_instance, launch entry point needed for the
834 * ipapi.py: launch_new_instance, launch entry point needed for the
831 egg.
835 egg.
832
836
833 2006-01-23 Ville Vainio <vivainio@gmail.com>
837 2006-01-23 Ville Vainio <vivainio@gmail.com>
834
838
835 * Added %cpaste magic for pasting python code
839 * Added %cpaste magic for pasting python code
836
840
837 2006-01-22 Ville Vainio <vivainio@gmail.com>
841 2006-01-22 Ville Vainio <vivainio@gmail.com>
838
842
839 * Merge from branches/0.7.1 into trunk, revs 1052-1057
843 * Merge from branches/0.7.1 into trunk, revs 1052-1057
840
844
841 * Versionstring = 0.7.2.svn
845 * Versionstring = 0.7.2.svn
842
846
843 * eggsetup.py: A separate script for constructing eggs, creates
847 * eggsetup.py: A separate script for constructing eggs, creates
844 proper launch scripts even on Windows (an .exe file in
848 proper launch scripts even on Windows (an .exe file in
845 \python24\scripts).
849 \python24\scripts).
846
850
847 * ipapi.py: launch_new_instance, launch entry point needed for the
851 * ipapi.py: launch_new_instance, launch entry point needed for the
848 egg.
852 egg.
849
853
850 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
854 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
851
855
852 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
856 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
853 %pfile foo would print the file for foo even if it was a binary.
857 %pfile foo would print the file for foo even if it was a binary.
854 Now, extensions '.so' and '.dll' are skipped.
858 Now, extensions '.so' and '.dll' are skipped.
855
859
856 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
860 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
857 bug, where macros would fail in all threaded modes. I'm not 100%
861 bug, where macros would fail in all threaded modes. I'm not 100%
858 sure, so I'm going to put out an rc instead of making a release
862 sure, so I'm going to put out an rc instead of making a release
859 today, and wait for feedback for at least a few days.
863 today, and wait for feedback for at least a few days.
860
864
861 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
865 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
862 it...) the handling of pasting external code with autoindent on.
866 it...) the handling of pasting external code with autoindent on.
863 To get out of a multiline input, the rule will appear for most
867 To get out of a multiline input, the rule will appear for most
864 users unchanged: two blank lines or change the indent level
868 users unchanged: two blank lines or change the indent level
865 proposed by IPython. But there is a twist now: you can
869 proposed by IPython. But there is a twist now: you can
866 add/subtract only *one or two spaces*. If you add/subtract three
870 add/subtract only *one or two spaces*. If you add/subtract three
867 or more (unless you completely delete the line), IPython will
871 or more (unless you completely delete the line), IPython will
868 accept that line, and you'll need to enter a second one of pure
872 accept that line, and you'll need to enter a second one of pure
869 whitespace. I know it sounds complicated, but I can't find a
873 whitespace. I know it sounds complicated, but I can't find a
870 different solution that covers all the cases, with the right
874 different solution that covers all the cases, with the right
871 heuristics. Hopefully in actual use, nobody will really notice
875 heuristics. Hopefully in actual use, nobody will really notice
872 all these strange rules and things will 'just work'.
876 all these strange rules and things will 'just work'.
873
877
874 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
878 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
875
879
876 * IPython/iplib.py (interact): catch exceptions which can be
880 * IPython/iplib.py (interact): catch exceptions which can be
877 triggered asynchronously by signal handlers. Thanks to an
881 triggered asynchronously by signal handlers. Thanks to an
878 automatic crash report, submitted by Colin Kingsley
882 automatic crash report, submitted by Colin Kingsley
879 <tercel-AT-gentoo.org>.
883 <tercel-AT-gentoo.org>.
880
884
881 2006-01-20 Ville Vainio <vivainio@gmail.com>
885 2006-01-20 Ville Vainio <vivainio@gmail.com>
882
886
883 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
887 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
884 (%rehashdir, very useful, try it out) of how to extend ipython
888 (%rehashdir, very useful, try it out) of how to extend ipython
885 with new magics. Also added Extensions dir to pythonpath to make
889 with new magics. Also added Extensions dir to pythonpath to make
886 importing extensions easy.
890 importing extensions easy.
887
891
888 * %store now complains when trying to store interactively declared
892 * %store now complains when trying to store interactively declared
889 classes / instances of those classes.
893 classes / instances of those classes.
890
894
891 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
895 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
892 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
896 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
893 if they exist, and ipy_user_conf.py with some defaults is created for
897 if they exist, and ipy_user_conf.py with some defaults is created for
894 the user.
898 the user.
895
899
896 * Startup rehashing done by the config file, not InterpreterExec.
900 * Startup rehashing done by the config file, not InterpreterExec.
897 This means system commands are available even without selecting the
901 This means system commands are available even without selecting the
898 pysh profile. It's the sensible default after all.
902 pysh profile. It's the sensible default after all.
899
903
900 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
904 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
901
905
902 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
906 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
903 multiline code with autoindent on working. But I am really not
907 multiline code with autoindent on working. But I am really not
904 sure, so this needs more testing. Will commit a debug-enabled
908 sure, so this needs more testing. Will commit a debug-enabled
905 version for now, while I test it some more, so that Ville and
909 version for now, while I test it some more, so that Ville and
906 others may also catch any problems. Also made
910 others may also catch any problems. Also made
907 self.indent_current_str() a method, to ensure that there's no
911 self.indent_current_str() a method, to ensure that there's no
908 chance of the indent space count and the corresponding string
912 chance of the indent space count and the corresponding string
909 falling out of sync. All code needing the string should just call
913 falling out of sync. All code needing the string should just call
910 the method.
914 the method.
911
915
912 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
916 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
913
917
914 * IPython/Magic.py (magic_edit): fix check for when users don't
918 * IPython/Magic.py (magic_edit): fix check for when users don't
915 save their output files, the try/except was in the wrong section.
919 save their output files, the try/except was in the wrong section.
916
920
917 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
921 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
918
922
919 * IPython/Magic.py (magic_run): fix __file__ global missing from
923 * IPython/Magic.py (magic_run): fix __file__ global missing from
920 script's namespace when executed via %run. After a report by
924 script's namespace when executed via %run. After a report by
921 Vivian.
925 Vivian.
922
926
923 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
927 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
924 when using python 2.4. The parent constructor changed in 2.4, and
928 when using python 2.4. The parent constructor changed in 2.4, and
925 we need to track it directly (we can't call it, as it messes up
929 we need to track it directly (we can't call it, as it messes up
926 readline and tab-completion inside our pdb would stop working).
930 readline and tab-completion inside our pdb would stop working).
927 After a bug report by R. Bernstein <rocky-AT-panix.com>.
931 After a bug report by R. Bernstein <rocky-AT-panix.com>.
928
932
929 2006-01-16 Ville Vainio <vivainio@gmail.com>
933 2006-01-16 Ville Vainio <vivainio@gmail.com>
930
934
931 * Ipython/magic.py: Reverted back to old %edit functionality
935 * Ipython/magic.py: Reverted back to old %edit functionality
932 that returns file contents on exit.
936 that returns file contents on exit.
933
937
934 * IPython/path.py: Added Jason Orendorff's "path" module to
938 * IPython/path.py: Added Jason Orendorff's "path" module to
935 IPython tree, http://www.jorendorff.com/articles/python/path/.
939 IPython tree, http://www.jorendorff.com/articles/python/path/.
936 You can get path objects conveniently through %sc, and !!, e.g.:
940 You can get path objects conveniently through %sc, and !!, e.g.:
937 sc files=ls
941 sc files=ls
938 for p in files.paths: # or files.p
942 for p in files.paths: # or files.p
939 print p,p.mtime
943 print p,p.mtime
940
944
941 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
945 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
942 now work again without considering the exclusion regexp -
946 now work again without considering the exclusion regexp -
943 hence, things like ',foo my/path' turn to 'foo("my/path")'
947 hence, things like ',foo my/path' turn to 'foo("my/path")'
944 instead of syntax error.
948 instead of syntax error.
945
949
946
950
947 2006-01-14 Ville Vainio <vivainio@gmail.com>
951 2006-01-14 Ville Vainio <vivainio@gmail.com>
948
952
949 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
953 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
950 ipapi decorators for python 2.4 users, options() provides access to rc
954 ipapi decorators for python 2.4 users, options() provides access to rc
951 data.
955 data.
952
956
953 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
957 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
954 as path separators (even on Linux ;-). Space character after
958 as path separators (even on Linux ;-). Space character after
955 backslash (as yielded by tab completer) is still space;
959 backslash (as yielded by tab completer) is still space;
956 "%cd long\ name" works as expected.
960 "%cd long\ name" works as expected.
957
961
958 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
962 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
959 as "chain of command", with priority. API stays the same,
963 as "chain of command", with priority. API stays the same,
960 TryNext exception raised by a hook function signals that
964 TryNext exception raised by a hook function signals that
961 current hook failed and next hook should try handling it, as
965 current hook failed and next hook should try handling it, as
962 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
966 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
963 requested configurable display hook, which is now implemented.
967 requested configurable display hook, which is now implemented.
964
968
965 2006-01-13 Ville Vainio <vivainio@gmail.com>
969 2006-01-13 Ville Vainio <vivainio@gmail.com>
966
970
967 * IPython/platutils*.py: platform specific utility functions,
971 * IPython/platutils*.py: platform specific utility functions,
968 so far only set_term_title is implemented (change terminal
972 so far only set_term_title is implemented (change terminal
969 label in windowing systems). %cd now changes the title to
973 label in windowing systems). %cd now changes the title to
970 current dir.
974 current dir.
971
975
972 * IPython/Release.py: Added myself to "authors" list,
976 * IPython/Release.py: Added myself to "authors" list,
973 had to create new files.
977 had to create new files.
974
978
975 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
979 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
976 shell escape; not a known bug but had potential to be one in the
980 shell escape; not a known bug but had potential to be one in the
977 future.
981 future.
978
982
979 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
983 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
980 extension API for IPython! See the module for usage example. Fix
984 extension API for IPython! See the module for usage example. Fix
981 OInspect for docstring-less magic functions.
985 OInspect for docstring-less magic functions.
982
986
983
987
984 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
988 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
985
989
986 * IPython/iplib.py (raw_input): temporarily deactivate all
990 * IPython/iplib.py (raw_input): temporarily deactivate all
987 attempts at allowing pasting of code with autoindent on. It
991 attempts at allowing pasting of code with autoindent on. It
988 introduced bugs (reported by Prabhu) and I can't seem to find a
992 introduced bugs (reported by Prabhu) and I can't seem to find a
989 robust combination which works in all cases. Will have to revisit
993 robust combination which works in all cases. Will have to revisit
990 later.
994 later.
991
995
992 * IPython/genutils.py: remove isspace() function. We've dropped
996 * IPython/genutils.py: remove isspace() function. We've dropped
993 2.2 compatibility, so it's OK to use the string method.
997 2.2 compatibility, so it's OK to use the string method.
994
998
995 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
999 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
996
1000
997 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1001 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
998 matching what NOT to autocall on, to include all python binary
1002 matching what NOT to autocall on, to include all python binary
999 operators (including things like 'and', 'or', 'is' and 'in').
1003 operators (including things like 'and', 'or', 'is' and 'in').
1000 Prompted by a bug report on 'foo & bar', but I realized we had
1004 Prompted by a bug report on 'foo & bar', but I realized we had
1001 many more potential bug cases with other operators. The regexp is
1005 many more potential bug cases with other operators. The regexp is
1002 self.re_exclude_auto, it's fairly commented.
1006 self.re_exclude_auto, it's fairly commented.
1003
1007
1004 2006-01-12 Ville Vainio <vivainio@gmail.com>
1008 2006-01-12 Ville Vainio <vivainio@gmail.com>
1005
1009
1006 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1010 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1007 Prettified and hardened string/backslash quoting with ipsystem(),
1011 Prettified and hardened string/backslash quoting with ipsystem(),
1008 ipalias() and ipmagic(). Now even \ characters are passed to
1012 ipalias() and ipmagic(). Now even \ characters are passed to
1009 %magics, !shell escapes and aliases exactly as they are in the
1013 %magics, !shell escapes and aliases exactly as they are in the
1010 ipython command line. Should improve backslash experience,
1014 ipython command line. Should improve backslash experience,
1011 particularly in Windows (path delimiter for some commands that
1015 particularly in Windows (path delimiter for some commands that
1012 won't understand '/'), but Unix benefits as well (regexps). %cd
1016 won't understand '/'), but Unix benefits as well (regexps). %cd
1013 magic still doesn't support backslash path delimiters, though. Also
1017 magic still doesn't support backslash path delimiters, though. Also
1014 deleted all pretense of supporting multiline command strings in
1018 deleted all pretense of supporting multiline command strings in
1015 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1019 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1016
1020
1017 * doc/build_doc_instructions.txt added. Documentation on how to
1021 * doc/build_doc_instructions.txt added. Documentation on how to
1018 use doc/update_manual.py, added yesterday. Both files contributed
1022 use doc/update_manual.py, added yesterday. Both files contributed
1019 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1023 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1020 doc/*.sh for deprecation at a later date.
1024 doc/*.sh for deprecation at a later date.
1021
1025
1022 * /ipython.py Added ipython.py to root directory for
1026 * /ipython.py Added ipython.py to root directory for
1023 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1027 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1024 ipython.py) and development convenience (no need to keep doing
1028 ipython.py) and development convenience (no need to keep doing
1025 "setup.py install" between changes).
1029 "setup.py install" between changes).
1026
1030
1027 * Made ! and !! shell escapes work (again) in multiline expressions:
1031 * Made ! and !! shell escapes work (again) in multiline expressions:
1028 if 1:
1032 if 1:
1029 !ls
1033 !ls
1030 !!ls
1034 !!ls
1031
1035
1032 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1036 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1033
1037
1034 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1038 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1035 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1039 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1036 module in case-insensitive installation. Was causing crashes
1040 module in case-insensitive installation. Was causing crashes
1037 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1041 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1038
1042
1039 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1043 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1040 <marienz-AT-gentoo.org>, closes
1044 <marienz-AT-gentoo.org>, closes
1041 http://www.scipy.net/roundup/ipython/issue51.
1045 http://www.scipy.net/roundup/ipython/issue51.
1042
1046
1043 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1047 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1044
1048
1045 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1049 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1046 problem of excessive CPU usage under *nix and keyboard lag under
1050 problem of excessive CPU usage under *nix and keyboard lag under
1047 win32.
1051 win32.
1048
1052
1049 2006-01-10 *** Released version 0.7.0
1053 2006-01-10 *** Released version 0.7.0
1050
1054
1051 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1055 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1052
1056
1053 * IPython/Release.py (revision): tag version number to 0.7.0,
1057 * IPython/Release.py (revision): tag version number to 0.7.0,
1054 ready for release.
1058 ready for release.
1055
1059
1056 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1060 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1057 it informs the user of the name of the temp. file used. This can
1061 it informs the user of the name of the temp. file used. This can
1058 help if you decide later to reuse that same file, so you know
1062 help if you decide later to reuse that same file, so you know
1059 where to copy the info from.
1063 where to copy the info from.
1060
1064
1061 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1065 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1062
1066
1063 * setup_bdist_egg.py: little script to build an egg. Added
1067 * setup_bdist_egg.py: little script to build an egg. Added
1064 support in the release tools as well.
1068 support in the release tools as well.
1065
1069
1066 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1070 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1067
1071
1068 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1072 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1069 version selection (new -wxversion command line and ipythonrc
1073 version selection (new -wxversion command line and ipythonrc
1070 parameter). Patch contributed by Arnd Baecker
1074 parameter). Patch contributed by Arnd Baecker
1071 <arnd.baecker-AT-web.de>.
1075 <arnd.baecker-AT-web.de>.
1072
1076
1073 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1077 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1074 embedded instances, for variables defined at the interactive
1078 embedded instances, for variables defined at the interactive
1075 prompt of the embedded ipython. Reported by Arnd.
1079 prompt of the embedded ipython. Reported by Arnd.
1076
1080
1077 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1081 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1078 it can be used as a (stateful) toggle, or with a direct parameter.
1082 it can be used as a (stateful) toggle, or with a direct parameter.
1079
1083
1080 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1084 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1081 could be triggered in certain cases and cause the traceback
1085 could be triggered in certain cases and cause the traceback
1082 printer not to work.
1086 printer not to work.
1083
1087
1084 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1088 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1085
1089
1086 * IPython/iplib.py (_should_recompile): Small fix, closes
1090 * IPython/iplib.py (_should_recompile): Small fix, closes
1087 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1091 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1088
1092
1089 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1093 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1090
1094
1091 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1095 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1092 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1096 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1093 Moad for help with tracking it down.
1097 Moad for help with tracking it down.
1094
1098
1095 * IPython/iplib.py (handle_auto): fix autocall handling for
1099 * IPython/iplib.py (handle_auto): fix autocall handling for
1096 objects which support BOTH __getitem__ and __call__ (so that f [x]
1100 objects which support BOTH __getitem__ and __call__ (so that f [x]
1097 is left alone, instead of becoming f([x]) automatically).
1101 is left alone, instead of becoming f([x]) automatically).
1098
1102
1099 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1103 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1100 Ville's patch.
1104 Ville's patch.
1101
1105
1102 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1106 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1103
1107
1104 * IPython/iplib.py (handle_auto): changed autocall semantics to
1108 * IPython/iplib.py (handle_auto): changed autocall semantics to
1105 include 'smart' mode, where the autocall transformation is NOT
1109 include 'smart' mode, where the autocall transformation is NOT
1106 applied if there are no arguments on the line. This allows you to
1110 applied if there are no arguments on the line. This allows you to
1107 just type 'foo' if foo is a callable to see its internal form,
1111 just type 'foo' if foo is a callable to see its internal form,
1108 instead of having it called with no arguments (typically a
1112 instead of having it called with no arguments (typically a
1109 mistake). The old 'full' autocall still exists: for that, you
1113 mistake). The old 'full' autocall still exists: for that, you
1110 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1114 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1111
1115
1112 * IPython/completer.py (Completer.attr_matches): add
1116 * IPython/completer.py (Completer.attr_matches): add
1113 tab-completion support for Enthoughts' traits. After a report by
1117 tab-completion support for Enthoughts' traits. After a report by
1114 Arnd and a patch by Prabhu.
1118 Arnd and a patch by Prabhu.
1115
1119
1116 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1120 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1117
1121
1118 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1122 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1119 Schmolck's patch to fix inspect.getinnerframes().
1123 Schmolck's patch to fix inspect.getinnerframes().
1120
1124
1121 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1125 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1122 for embedded instances, regarding handling of namespaces and items
1126 for embedded instances, regarding handling of namespaces and items
1123 added to the __builtin__ one. Multiple embedded instances and
1127 added to the __builtin__ one. Multiple embedded instances and
1124 recursive embeddings should work better now (though I'm not sure
1128 recursive embeddings should work better now (though I'm not sure
1125 I've got all the corner cases fixed, that code is a bit of a brain
1129 I've got all the corner cases fixed, that code is a bit of a brain
1126 twister).
1130 twister).
1127
1131
1128 * IPython/Magic.py (magic_edit): added support to edit in-memory
1132 * IPython/Magic.py (magic_edit): added support to edit in-memory
1129 macros (automatically creates the necessary temp files). %edit
1133 macros (automatically creates the necessary temp files). %edit
1130 also doesn't return the file contents anymore, it's just noise.
1134 also doesn't return the file contents anymore, it's just noise.
1131
1135
1132 * IPython/completer.py (Completer.attr_matches): revert change to
1136 * IPython/completer.py (Completer.attr_matches): revert change to
1133 complete only on attributes listed in __all__. I realized it
1137 complete only on attributes listed in __all__. I realized it
1134 cripples the tab-completion system as a tool for exploring the
1138 cripples the tab-completion system as a tool for exploring the
1135 internals of unknown libraries (it renders any non-__all__
1139 internals of unknown libraries (it renders any non-__all__
1136 attribute off-limits). I got bit by this when trying to see
1140 attribute off-limits). I got bit by this when trying to see
1137 something inside the dis module.
1141 something inside the dis module.
1138
1142
1139 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1143 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1140
1144
1141 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1145 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1142 namespace for users and extension writers to hold data in. This
1146 namespace for users and extension writers to hold data in. This
1143 follows the discussion in
1147 follows the discussion in
1144 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1148 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1145
1149
1146 * IPython/completer.py (IPCompleter.complete): small patch to help
1150 * IPython/completer.py (IPCompleter.complete): small patch to help
1147 tab-completion under Emacs, after a suggestion by John Barnard
1151 tab-completion under Emacs, after a suggestion by John Barnard
1148 <barnarj-AT-ccf.org>.
1152 <barnarj-AT-ccf.org>.
1149
1153
1150 * IPython/Magic.py (Magic.extract_input_slices): added support for
1154 * IPython/Magic.py (Magic.extract_input_slices): added support for
1151 the slice notation in magics to use N-M to represent numbers N...M
1155 the slice notation in magics to use N-M to represent numbers N...M
1152 (closed endpoints). This is used by %macro and %save.
1156 (closed endpoints). This is used by %macro and %save.
1153
1157
1154 * IPython/completer.py (Completer.attr_matches): for modules which
1158 * IPython/completer.py (Completer.attr_matches): for modules which
1155 define __all__, complete only on those. After a patch by Jeffrey
1159 define __all__, complete only on those. After a patch by Jeffrey
1156 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1160 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1157 speed up this routine.
1161 speed up this routine.
1158
1162
1159 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1163 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1160 don't know if this is the end of it, but the behavior now is
1164 don't know if this is the end of it, but the behavior now is
1161 certainly much more correct. Note that coupled with macros,
1165 certainly much more correct. Note that coupled with macros,
1162 slightly surprising (at first) behavior may occur: a macro will in
1166 slightly surprising (at first) behavior may occur: a macro will in
1163 general expand to multiple lines of input, so upon exiting, the
1167 general expand to multiple lines of input, so upon exiting, the
1164 in/out counters will both be bumped by the corresponding amount
1168 in/out counters will both be bumped by the corresponding amount
1165 (as if the macro's contents had been typed interactively). Typing
1169 (as if the macro's contents had been typed interactively). Typing
1166 %hist will reveal the intermediate (silently processed) lines.
1170 %hist will reveal the intermediate (silently processed) lines.
1167
1171
1168 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1172 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1169 pickle to fail (%run was overwriting __main__ and not restoring
1173 pickle to fail (%run was overwriting __main__ and not restoring
1170 it, but pickle relies on __main__ to operate).
1174 it, but pickle relies on __main__ to operate).
1171
1175
1172 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1176 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1173 using properties, but forgot to make the main InteractiveShell
1177 using properties, but forgot to make the main InteractiveShell
1174 class a new-style class. Properties fail silently, and
1178 class a new-style class. Properties fail silently, and
1175 mysteriously, with old-style class (getters work, but
1179 mysteriously, with old-style class (getters work, but
1176 setters don't do anything).
1180 setters don't do anything).
1177
1181
1178 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1182 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1179
1183
1180 * IPython/Magic.py (magic_history): fix history reporting bug (I
1184 * IPython/Magic.py (magic_history): fix history reporting bug (I
1181 know some nasties are still there, I just can't seem to find a
1185 know some nasties are still there, I just can't seem to find a
1182 reproducible test case to track them down; the input history is
1186 reproducible test case to track them down; the input history is
1183 falling out of sync...)
1187 falling out of sync...)
1184
1188
1185 * IPython/iplib.py (handle_shell_escape): fix bug where both
1189 * IPython/iplib.py (handle_shell_escape): fix bug where both
1186 aliases and system accesses where broken for indented code (such
1190 aliases and system accesses where broken for indented code (such
1187 as loops).
1191 as loops).
1188
1192
1189 * IPython/genutils.py (shell): fix small but critical bug for
1193 * IPython/genutils.py (shell): fix small but critical bug for
1190 win32 system access.
1194 win32 system access.
1191
1195
1192 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1196 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1193
1197
1194 * IPython/iplib.py (showtraceback): remove use of the
1198 * IPython/iplib.py (showtraceback): remove use of the
1195 sys.last_{type/value/traceback} structures, which are non
1199 sys.last_{type/value/traceback} structures, which are non
1196 thread-safe.
1200 thread-safe.
1197 (_prefilter): change control flow to ensure that we NEVER
1201 (_prefilter): change control flow to ensure that we NEVER
1198 introspect objects when autocall is off. This will guarantee that
1202 introspect objects when autocall is off. This will guarantee that
1199 having an input line of the form 'x.y', where access to attribute
1203 having an input line of the form 'x.y', where access to attribute
1200 'y' has side effects, doesn't trigger the side effect TWICE. It
1204 'y' has side effects, doesn't trigger the side effect TWICE. It
1201 is important to note that, with autocall on, these side effects
1205 is important to note that, with autocall on, these side effects
1202 can still happen.
1206 can still happen.
1203 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1207 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1204 trio. IPython offers these three kinds of special calls which are
1208 trio. IPython offers these three kinds of special calls which are
1205 not python code, and it's a good thing to have their call method
1209 not python code, and it's a good thing to have their call method
1206 be accessible as pure python functions (not just special syntax at
1210 be accessible as pure python functions (not just special syntax at
1207 the command line). It gives us a better internal implementation
1211 the command line). It gives us a better internal implementation
1208 structure, as well as exposing these for user scripting more
1212 structure, as well as exposing these for user scripting more
1209 cleanly.
1213 cleanly.
1210
1214
1211 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1215 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1212 file. Now that they'll be more likely to be used with the
1216 file. Now that they'll be more likely to be used with the
1213 persistance system (%store), I want to make sure their module path
1217 persistance system (%store), I want to make sure their module path
1214 doesn't change in the future, so that we don't break things for
1218 doesn't change in the future, so that we don't break things for
1215 users' persisted data.
1219 users' persisted data.
1216
1220
1217 * IPython/iplib.py (autoindent_update): move indentation
1221 * IPython/iplib.py (autoindent_update): move indentation
1218 management into the _text_ processing loop, not the keyboard
1222 management into the _text_ processing loop, not the keyboard
1219 interactive one. This is necessary to correctly process non-typed
1223 interactive one. This is necessary to correctly process non-typed
1220 multiline input (such as macros).
1224 multiline input (such as macros).
1221
1225
1222 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1226 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1223 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1227 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1224 which was producing problems in the resulting manual.
1228 which was producing problems in the resulting manual.
1225 (magic_whos): improve reporting of instances (show their class,
1229 (magic_whos): improve reporting of instances (show their class,
1226 instead of simply printing 'instance' which isn't terribly
1230 instead of simply printing 'instance' which isn't terribly
1227 informative).
1231 informative).
1228
1232
1229 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1233 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1230 (minor mods) to support network shares under win32.
1234 (minor mods) to support network shares under win32.
1231
1235
1232 * IPython/winconsole.py (get_console_size): add new winconsole
1236 * IPython/winconsole.py (get_console_size): add new winconsole
1233 module and fixes to page_dumb() to improve its behavior under
1237 module and fixes to page_dumb() to improve its behavior under
1234 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1238 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1235
1239
1236 * IPython/Magic.py (Macro): simplified Macro class to just
1240 * IPython/Magic.py (Macro): simplified Macro class to just
1237 subclass list. We've had only 2.2 compatibility for a very long
1241 subclass list. We've had only 2.2 compatibility for a very long
1238 time, yet I was still avoiding subclassing the builtin types. No
1242 time, yet I was still avoiding subclassing the builtin types. No
1239 more (I'm also starting to use properties, though I won't shift to
1243 more (I'm also starting to use properties, though I won't shift to
1240 2.3-specific features quite yet).
1244 2.3-specific features quite yet).
1241 (magic_store): added Ville's patch for lightweight variable
1245 (magic_store): added Ville's patch for lightweight variable
1242 persistence, after a request on the user list by Matt Wilkie
1246 persistence, after a request on the user list by Matt Wilkie
1243 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1247 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1244 details.
1248 details.
1245
1249
1246 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1250 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1247 changed the default logfile name from 'ipython.log' to
1251 changed the default logfile name from 'ipython.log' to
1248 'ipython_log.py'. These logs are real python files, and now that
1252 'ipython_log.py'. These logs are real python files, and now that
1249 we have much better multiline support, people are more likely to
1253 we have much better multiline support, people are more likely to
1250 want to use them as such. Might as well name them correctly.
1254 want to use them as such. Might as well name them correctly.
1251
1255
1252 * IPython/Magic.py: substantial cleanup. While we can't stop
1256 * IPython/Magic.py: substantial cleanup. While we can't stop
1253 using magics as mixins, due to the existing customizations 'out
1257 using magics as mixins, due to the existing customizations 'out
1254 there' which rely on the mixin naming conventions, at least I
1258 there' which rely on the mixin naming conventions, at least I
1255 cleaned out all cross-class name usage. So once we are OK with
1259 cleaned out all cross-class name usage. So once we are OK with
1256 breaking compatibility, the two systems can be separated.
1260 breaking compatibility, the two systems can be separated.
1257
1261
1258 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1262 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1259 anymore, and the class is a fair bit less hideous as well. New
1263 anymore, and the class is a fair bit less hideous as well. New
1260 features were also introduced: timestamping of input, and logging
1264 features were also introduced: timestamping of input, and logging
1261 of output results. These are user-visible with the -t and -o
1265 of output results. These are user-visible with the -t and -o
1262 options to %logstart. Closes
1266 options to %logstart. Closes
1263 http://www.scipy.net/roundup/ipython/issue11 and a request by
1267 http://www.scipy.net/roundup/ipython/issue11 and a request by
1264 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1268 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1265
1269
1266 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1270 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1267
1271
1268 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1272 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1269 better handle backslashes in paths. See the thread 'More Windows
1273 better handle backslashes in paths. See the thread 'More Windows
1270 questions part 2 - \/ characters revisited' on the iypthon user
1274 questions part 2 - \/ characters revisited' on the iypthon user
1271 list:
1275 list:
1272 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1276 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1273
1277
1274 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1278 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1275
1279
1276 (InteractiveShell.__init__): change threaded shells to not use the
1280 (InteractiveShell.__init__): change threaded shells to not use the
1277 ipython crash handler. This was causing more problems than not,
1281 ipython crash handler. This was causing more problems than not,
1278 as exceptions in the main thread (GUI code, typically) would
1282 as exceptions in the main thread (GUI code, typically) would
1279 always show up as a 'crash', when they really weren't.
1283 always show up as a 'crash', when they really weren't.
1280
1284
1281 The colors and exception mode commands (%colors/%xmode) have been
1285 The colors and exception mode commands (%colors/%xmode) have been
1282 synchronized to also take this into account, so users can get
1286 synchronized to also take this into account, so users can get
1283 verbose exceptions for their threaded code as well. I also added
1287 verbose exceptions for their threaded code as well. I also added
1284 support for activating pdb inside this exception handler as well,
1288 support for activating pdb inside this exception handler as well,
1285 so now GUI authors can use IPython's enhanced pdb at runtime.
1289 so now GUI authors can use IPython's enhanced pdb at runtime.
1286
1290
1287 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1291 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1288 true by default, and add it to the shipped ipythonrc file. Since
1292 true by default, and add it to the shipped ipythonrc file. Since
1289 this asks the user before proceeding, I think it's OK to make it
1293 this asks the user before proceeding, I think it's OK to make it
1290 true by default.
1294 true by default.
1291
1295
1292 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1296 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1293 of the previous special-casing of input in the eval loop. I think
1297 of the previous special-casing of input in the eval loop. I think
1294 this is cleaner, as they really are commands and shouldn't have
1298 this is cleaner, as they really are commands and shouldn't have
1295 a special role in the middle of the core code.
1299 a special role in the middle of the core code.
1296
1300
1297 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1301 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1298
1302
1299 * IPython/iplib.py (edit_syntax_error): added support for
1303 * IPython/iplib.py (edit_syntax_error): added support for
1300 automatically reopening the editor if the file had a syntax error
1304 automatically reopening the editor if the file had a syntax error
1301 in it. Thanks to scottt who provided the patch at:
1305 in it. Thanks to scottt who provided the patch at:
1302 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1306 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1303 version committed).
1307 version committed).
1304
1308
1305 * IPython/iplib.py (handle_normal): add suport for multi-line
1309 * IPython/iplib.py (handle_normal): add suport for multi-line
1306 input with emtpy lines. This fixes
1310 input with emtpy lines. This fixes
1307 http://www.scipy.net/roundup/ipython/issue43 and a similar
1311 http://www.scipy.net/roundup/ipython/issue43 and a similar
1308 discussion on the user list.
1312 discussion on the user list.
1309
1313
1310 WARNING: a behavior change is necessarily introduced to support
1314 WARNING: a behavior change is necessarily introduced to support
1311 blank lines: now a single blank line with whitespace does NOT
1315 blank lines: now a single blank line with whitespace does NOT
1312 break the input loop, which means that when autoindent is on, by
1316 break the input loop, which means that when autoindent is on, by
1313 default hitting return on the next (indented) line does NOT exit.
1317 default hitting return on the next (indented) line does NOT exit.
1314
1318
1315 Instead, to exit a multiline input you can either have:
1319 Instead, to exit a multiline input you can either have:
1316
1320
1317 - TWO whitespace lines (just hit return again), or
1321 - TWO whitespace lines (just hit return again), or
1318 - a single whitespace line of a different length than provided
1322 - a single whitespace line of a different length than provided
1319 by the autoindent (add or remove a space).
1323 by the autoindent (add or remove a space).
1320
1324
1321 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1325 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1322 module to better organize all readline-related functionality.
1326 module to better organize all readline-related functionality.
1323 I've deleted FlexCompleter and put all completion clases here.
1327 I've deleted FlexCompleter and put all completion clases here.
1324
1328
1325 * IPython/iplib.py (raw_input): improve indentation management.
1329 * IPython/iplib.py (raw_input): improve indentation management.
1326 It is now possible to paste indented code with autoindent on, and
1330 It is now possible to paste indented code with autoindent on, and
1327 the code is interpreted correctly (though it still looks bad on
1331 the code is interpreted correctly (though it still looks bad on
1328 screen, due to the line-oriented nature of ipython).
1332 screen, due to the line-oriented nature of ipython).
1329 (MagicCompleter.complete): change behavior so that a TAB key on an
1333 (MagicCompleter.complete): change behavior so that a TAB key on an
1330 otherwise empty line actually inserts a tab, instead of completing
1334 otherwise empty line actually inserts a tab, instead of completing
1331 on the entire global namespace. This makes it easier to use the
1335 on the entire global namespace. This makes it easier to use the
1332 TAB key for indentation. After a request by Hans Meine
1336 TAB key for indentation. After a request by Hans Meine
1333 <hans_meine-AT-gmx.net>
1337 <hans_meine-AT-gmx.net>
1334 (_prefilter): add support so that typing plain 'exit' or 'quit'
1338 (_prefilter): add support so that typing plain 'exit' or 'quit'
1335 does a sensible thing. Originally I tried to deviate as little as
1339 does a sensible thing. Originally I tried to deviate as little as
1336 possible from the default python behavior, but even that one may
1340 possible from the default python behavior, but even that one may
1337 change in this direction (thread on python-dev to that effect).
1341 change in this direction (thread on python-dev to that effect).
1338 Regardless, ipython should do the right thing even if CPython's
1342 Regardless, ipython should do the right thing even if CPython's
1339 '>>>' prompt doesn't.
1343 '>>>' prompt doesn't.
1340 (InteractiveShell): removed subclassing code.InteractiveConsole
1344 (InteractiveShell): removed subclassing code.InteractiveConsole
1341 class. By now we'd overridden just about all of its methods: I've
1345 class. By now we'd overridden just about all of its methods: I've
1342 copied the remaining two over, and now ipython is a standalone
1346 copied the remaining two over, and now ipython is a standalone
1343 class. This will provide a clearer picture for the chainsaw
1347 class. This will provide a clearer picture for the chainsaw
1344 branch refactoring.
1348 branch refactoring.
1345
1349
1346 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1350 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1347
1351
1348 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1352 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1349 failures for objects which break when dir() is called on them.
1353 failures for objects which break when dir() is called on them.
1350
1354
1351 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1355 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1352 distinct local and global namespaces in the completer API. This
1356 distinct local and global namespaces in the completer API. This
1353 change allows us to properly handle completion with distinct
1357 change allows us to properly handle completion with distinct
1354 scopes, including in embedded instances (this had never really
1358 scopes, including in embedded instances (this had never really
1355 worked correctly).
1359 worked correctly).
1356
1360
1357 Note: this introduces a change in the constructor for
1361 Note: this introduces a change in the constructor for
1358 MagicCompleter, as a new global_namespace parameter is now the
1362 MagicCompleter, as a new global_namespace parameter is now the
1359 second argument (the others were bumped one position).
1363 second argument (the others were bumped one position).
1360
1364
1361 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1365 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1362
1366
1363 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1367 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1364 embedded instances (which can be done now thanks to Vivian's
1368 embedded instances (which can be done now thanks to Vivian's
1365 frame-handling fixes for pdb).
1369 frame-handling fixes for pdb).
1366 (InteractiveShell.__init__): Fix namespace handling problem in
1370 (InteractiveShell.__init__): Fix namespace handling problem in
1367 embedded instances. We were overwriting __main__ unconditionally,
1371 embedded instances. We were overwriting __main__ unconditionally,
1368 and this should only be done for 'full' (non-embedded) IPython;
1372 and this should only be done for 'full' (non-embedded) IPython;
1369 embedded instances must respect the caller's __main__. Thanks to
1373 embedded instances must respect the caller's __main__. Thanks to
1370 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1374 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1371
1375
1372 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1376 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1373
1377
1374 * setup.py: added download_url to setup(). This registers the
1378 * setup.py: added download_url to setup(). This registers the
1375 download address at PyPI, which is not only useful to humans
1379 download address at PyPI, which is not only useful to humans
1376 browsing the site, but is also picked up by setuptools (the Eggs
1380 browsing the site, but is also picked up by setuptools (the Eggs
1377 machinery). Thanks to Ville and R. Kern for the info/discussion
1381 machinery). Thanks to Ville and R. Kern for the info/discussion
1378 on this.
1382 on this.
1379
1383
1380 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1384 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1381
1385
1382 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1386 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1383 This brings a lot of nice functionality to the pdb mode, which now
1387 This brings a lot of nice functionality to the pdb mode, which now
1384 has tab-completion, syntax highlighting, and better stack handling
1388 has tab-completion, syntax highlighting, and better stack handling
1385 than before. Many thanks to Vivian De Smedt
1389 than before. Many thanks to Vivian De Smedt
1386 <vivian-AT-vdesmedt.com> for the original patches.
1390 <vivian-AT-vdesmedt.com> for the original patches.
1387
1391
1388 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1392 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1389
1393
1390 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1394 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1391 sequence to consistently accept the banner argument. The
1395 sequence to consistently accept the banner argument. The
1392 inconsistency was tripping SAGE, thanks to Gary Zablackis
1396 inconsistency was tripping SAGE, thanks to Gary Zablackis
1393 <gzabl-AT-yahoo.com> for the report.
1397 <gzabl-AT-yahoo.com> for the report.
1394
1398
1395 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1399 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1396
1400
1397 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1401 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1398 Fix bug where a naked 'alias' call in the ipythonrc file would
1402 Fix bug where a naked 'alias' call in the ipythonrc file would
1399 cause a crash. Bug reported by Jorgen Stenarson.
1403 cause a crash. Bug reported by Jorgen Stenarson.
1400
1404
1401 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1405 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1402
1406
1403 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1407 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1404 startup time.
1408 startup time.
1405
1409
1406 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1410 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1407 instances had introduced a bug with globals in normal code. Now
1411 instances had introduced a bug with globals in normal code. Now
1408 it's working in all cases.
1412 it's working in all cases.
1409
1413
1410 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1414 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1411 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1415 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1412 has been introduced to set the default case sensitivity of the
1416 has been introduced to set the default case sensitivity of the
1413 searches. Users can still select either mode at runtime on a
1417 searches. Users can still select either mode at runtime on a
1414 per-search basis.
1418 per-search basis.
1415
1419
1416 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1420 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1417
1421
1418 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1422 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1419 attributes in wildcard searches for subclasses. Modified version
1423 attributes in wildcard searches for subclasses. Modified version
1420 of a patch by Jorgen.
1424 of a patch by Jorgen.
1421
1425
1422 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1426 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1423
1427
1424 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1428 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1425 embedded instances. I added a user_global_ns attribute to the
1429 embedded instances. I added a user_global_ns attribute to the
1426 InteractiveShell class to handle this.
1430 InteractiveShell class to handle this.
1427
1431
1428 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1432 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1429
1433
1430 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1434 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1431 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1435 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1432 (reported under win32, but may happen also in other platforms).
1436 (reported under win32, but may happen also in other platforms).
1433 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1437 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1434
1438
1435 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1439 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1436
1440
1437 * IPython/Magic.py (magic_psearch): new support for wildcard
1441 * IPython/Magic.py (magic_psearch): new support for wildcard
1438 patterns. Now, typing ?a*b will list all names which begin with a
1442 patterns. Now, typing ?a*b will list all names which begin with a
1439 and end in b, for example. The %psearch magic has full
1443 and end in b, for example. The %psearch magic has full
1440 docstrings. Many thanks to JΓΆrgen Stenarson
1444 docstrings. Many thanks to JΓΆrgen Stenarson
1441 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1445 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1442 implementing this functionality.
1446 implementing this functionality.
1443
1447
1444 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1448 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1445
1449
1446 * Manual: fixed long-standing annoyance of double-dashes (as in
1450 * Manual: fixed long-standing annoyance of double-dashes (as in
1447 --prefix=~, for example) being stripped in the HTML version. This
1451 --prefix=~, for example) being stripped in the HTML version. This
1448 is a latex2html bug, but a workaround was provided. Many thanks
1452 is a latex2html bug, but a workaround was provided. Many thanks
1449 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1453 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1450 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1454 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1451 rolling. This seemingly small issue had tripped a number of users
1455 rolling. This seemingly small issue had tripped a number of users
1452 when first installing, so I'm glad to see it gone.
1456 when first installing, so I'm glad to see it gone.
1453
1457
1454 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1458 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1455
1459
1456 * IPython/Extensions/numeric_formats.py: fix missing import,
1460 * IPython/Extensions/numeric_formats.py: fix missing import,
1457 reported by Stephen Walton.
1461 reported by Stephen Walton.
1458
1462
1459 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1463 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1460
1464
1461 * IPython/demo.py: finish demo module, fully documented now.
1465 * IPython/demo.py: finish demo module, fully documented now.
1462
1466
1463 * IPython/genutils.py (file_read): simple little utility to read a
1467 * IPython/genutils.py (file_read): simple little utility to read a
1464 file and ensure it's closed afterwards.
1468 file and ensure it's closed afterwards.
1465
1469
1466 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1470 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1467
1471
1468 * IPython/demo.py (Demo.__init__): added support for individually
1472 * IPython/demo.py (Demo.__init__): added support for individually
1469 tagging blocks for automatic execution.
1473 tagging blocks for automatic execution.
1470
1474
1471 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1475 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1472 syntax-highlighted python sources, requested by John.
1476 syntax-highlighted python sources, requested by John.
1473
1477
1474 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1478 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1475
1479
1476 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1480 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1477 finishing.
1481 finishing.
1478
1482
1479 * IPython/genutils.py (shlex_split): moved from Magic to here,
1483 * IPython/genutils.py (shlex_split): moved from Magic to here,
1480 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1484 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1481
1485
1482 * IPython/demo.py (Demo.__init__): added support for silent
1486 * IPython/demo.py (Demo.__init__): added support for silent
1483 blocks, improved marks as regexps, docstrings written.
1487 blocks, improved marks as regexps, docstrings written.
1484 (Demo.__init__): better docstring, added support for sys.argv.
1488 (Demo.__init__): better docstring, added support for sys.argv.
1485
1489
1486 * IPython/genutils.py (marquee): little utility used by the demo
1490 * IPython/genutils.py (marquee): little utility used by the demo
1487 code, handy in general.
1491 code, handy in general.
1488
1492
1489 * IPython/demo.py (Demo.__init__): new class for interactive
1493 * IPython/demo.py (Demo.__init__): new class for interactive
1490 demos. Not documented yet, I just wrote it in a hurry for
1494 demos. Not documented yet, I just wrote it in a hurry for
1491 scipy'05. Will docstring later.
1495 scipy'05. Will docstring later.
1492
1496
1493 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1497 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1494
1498
1495 * IPython/Shell.py (sigint_handler): Drastic simplification which
1499 * IPython/Shell.py (sigint_handler): Drastic simplification which
1496 also seems to make Ctrl-C work correctly across threads! This is
1500 also seems to make Ctrl-C work correctly across threads! This is
1497 so simple, that I can't beleive I'd missed it before. Needs more
1501 so simple, that I can't beleive I'd missed it before. Needs more
1498 testing, though.
1502 testing, though.
1499 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1503 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1500 like this before...
1504 like this before...
1501
1505
1502 * IPython/genutils.py (get_home_dir): add protection against
1506 * IPython/genutils.py (get_home_dir): add protection against
1503 non-dirs in win32 registry.
1507 non-dirs in win32 registry.
1504
1508
1505 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1509 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1506 bug where dict was mutated while iterating (pysh crash).
1510 bug where dict was mutated while iterating (pysh crash).
1507
1511
1508 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1512 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1509
1513
1510 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1514 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1511 spurious newlines added by this routine. After a report by
1515 spurious newlines added by this routine. After a report by
1512 F. Mantegazza.
1516 F. Mantegazza.
1513
1517
1514 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1518 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1515
1519
1516 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1520 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1517 calls. These were a leftover from the GTK 1.x days, and can cause
1521 calls. These were a leftover from the GTK 1.x days, and can cause
1518 problems in certain cases (after a report by John Hunter).
1522 problems in certain cases (after a report by John Hunter).
1519
1523
1520 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1524 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1521 os.getcwd() fails at init time. Thanks to patch from David Remahl
1525 os.getcwd() fails at init time. Thanks to patch from David Remahl
1522 <chmod007-AT-mac.com>.
1526 <chmod007-AT-mac.com>.
1523 (InteractiveShell.__init__): prevent certain special magics from
1527 (InteractiveShell.__init__): prevent certain special magics from
1524 being shadowed by aliases. Closes
1528 being shadowed by aliases. Closes
1525 http://www.scipy.net/roundup/ipython/issue41.
1529 http://www.scipy.net/roundup/ipython/issue41.
1526
1530
1527 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1531 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1528
1532
1529 * IPython/iplib.py (InteractiveShell.complete): Added new
1533 * IPython/iplib.py (InteractiveShell.complete): Added new
1530 top-level completion method to expose the completion mechanism
1534 top-level completion method to expose the completion mechanism
1531 beyond readline-based environments.
1535 beyond readline-based environments.
1532
1536
1533 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1537 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1534
1538
1535 * tools/ipsvnc (svnversion): fix svnversion capture.
1539 * tools/ipsvnc (svnversion): fix svnversion capture.
1536
1540
1537 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1541 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1538 attribute to self, which was missing. Before, it was set by a
1542 attribute to self, which was missing. Before, it was set by a
1539 routine which in certain cases wasn't being called, so the
1543 routine which in certain cases wasn't being called, so the
1540 instance could end up missing the attribute. This caused a crash.
1544 instance could end up missing the attribute. This caused a crash.
1541 Closes http://www.scipy.net/roundup/ipython/issue40.
1545 Closes http://www.scipy.net/roundup/ipython/issue40.
1542
1546
1543 2005-08-16 Fernando Perez <fperez@colorado.edu>
1547 2005-08-16 Fernando Perez <fperez@colorado.edu>
1544
1548
1545 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1549 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1546 contains non-string attribute. Closes
1550 contains non-string attribute. Closes
1547 http://www.scipy.net/roundup/ipython/issue38.
1551 http://www.scipy.net/roundup/ipython/issue38.
1548
1552
1549 2005-08-14 Fernando Perez <fperez@colorado.edu>
1553 2005-08-14 Fernando Perez <fperez@colorado.edu>
1550
1554
1551 * tools/ipsvnc: Minor improvements, to add changeset info.
1555 * tools/ipsvnc: Minor improvements, to add changeset info.
1552
1556
1553 2005-08-12 Fernando Perez <fperez@colorado.edu>
1557 2005-08-12 Fernando Perez <fperez@colorado.edu>
1554
1558
1555 * IPython/iplib.py (runsource): remove self.code_to_run_src
1559 * IPython/iplib.py (runsource): remove self.code_to_run_src
1556 attribute. I realized this is nothing more than
1560 attribute. I realized this is nothing more than
1557 '\n'.join(self.buffer), and having the same data in two different
1561 '\n'.join(self.buffer), and having the same data in two different
1558 places is just asking for synchronization bugs. This may impact
1562 places is just asking for synchronization bugs. This may impact
1559 people who have custom exception handlers, so I need to warn
1563 people who have custom exception handlers, so I need to warn
1560 ipython-dev about it (F. Mantegazza may use them).
1564 ipython-dev about it (F. Mantegazza may use them).
1561
1565
1562 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1566 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1563
1567
1564 * IPython/genutils.py: fix 2.2 compatibility (generators)
1568 * IPython/genutils.py: fix 2.2 compatibility (generators)
1565
1569
1566 2005-07-18 Fernando Perez <fperez@colorado.edu>
1570 2005-07-18 Fernando Perez <fperez@colorado.edu>
1567
1571
1568 * IPython/genutils.py (get_home_dir): fix to help users with
1572 * IPython/genutils.py (get_home_dir): fix to help users with
1569 invalid $HOME under win32.
1573 invalid $HOME under win32.
1570
1574
1571 2005-07-17 Fernando Perez <fperez@colorado.edu>
1575 2005-07-17 Fernando Perez <fperez@colorado.edu>
1572
1576
1573 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1577 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1574 some old hacks and clean up a bit other routines; code should be
1578 some old hacks and clean up a bit other routines; code should be
1575 simpler and a bit faster.
1579 simpler and a bit faster.
1576
1580
1577 * IPython/iplib.py (interact): removed some last-resort attempts
1581 * IPython/iplib.py (interact): removed some last-resort attempts
1578 to survive broken stdout/stderr. That code was only making it
1582 to survive broken stdout/stderr. That code was only making it
1579 harder to abstract out the i/o (necessary for gui integration),
1583 harder to abstract out the i/o (necessary for gui integration),
1580 and the crashes it could prevent were extremely rare in practice
1584 and the crashes it could prevent were extremely rare in practice
1581 (besides being fully user-induced in a pretty violent manner).
1585 (besides being fully user-induced in a pretty violent manner).
1582
1586
1583 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1587 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1584 Nothing major yet, but the code is simpler to read; this should
1588 Nothing major yet, but the code is simpler to read; this should
1585 make it easier to do more serious modifications in the future.
1589 make it easier to do more serious modifications in the future.
1586
1590
1587 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1591 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1588 which broke in .15 (thanks to a report by Ville).
1592 which broke in .15 (thanks to a report by Ville).
1589
1593
1590 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1594 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1591 be quite correct, I know next to nothing about unicode). This
1595 be quite correct, I know next to nothing about unicode). This
1592 will allow unicode strings to be used in prompts, amongst other
1596 will allow unicode strings to be used in prompts, amongst other
1593 cases. It also will prevent ipython from crashing when unicode
1597 cases. It also will prevent ipython from crashing when unicode
1594 shows up unexpectedly in many places. If ascii encoding fails, we
1598 shows up unexpectedly in many places. If ascii encoding fails, we
1595 assume utf_8. Currently the encoding is not a user-visible
1599 assume utf_8. Currently the encoding is not a user-visible
1596 setting, though it could be made so if there is demand for it.
1600 setting, though it could be made so if there is demand for it.
1597
1601
1598 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1602 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1599
1603
1600 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1604 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1601
1605
1602 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1606 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1603
1607
1604 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1608 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1605 code can work transparently for 2.2/2.3.
1609 code can work transparently for 2.2/2.3.
1606
1610
1607 2005-07-16 Fernando Perez <fperez@colorado.edu>
1611 2005-07-16 Fernando Perez <fperez@colorado.edu>
1608
1612
1609 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1613 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1610 out of the color scheme table used for coloring exception
1614 out of the color scheme table used for coloring exception
1611 tracebacks. This allows user code to add new schemes at runtime.
1615 tracebacks. This allows user code to add new schemes at runtime.
1612 This is a minimally modified version of the patch at
1616 This is a minimally modified version of the patch at
1613 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1617 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1614 for the contribution.
1618 for the contribution.
1615
1619
1616 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1620 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1617 slightly modified version of the patch in
1621 slightly modified version of the patch in
1618 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1622 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1619 to remove the previous try/except solution (which was costlier).
1623 to remove the previous try/except solution (which was costlier).
1620 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1624 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1621
1625
1622 2005-06-08 Fernando Perez <fperez@colorado.edu>
1626 2005-06-08 Fernando Perez <fperez@colorado.edu>
1623
1627
1624 * IPython/iplib.py (write/write_err): Add methods to abstract all
1628 * IPython/iplib.py (write/write_err): Add methods to abstract all
1625 I/O a bit more.
1629 I/O a bit more.
1626
1630
1627 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1631 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1628 warning, reported by Aric Hagberg, fix by JD Hunter.
1632 warning, reported by Aric Hagberg, fix by JD Hunter.
1629
1633
1630 2005-06-02 *** Released version 0.6.15
1634 2005-06-02 *** Released version 0.6.15
1631
1635
1632 2005-06-01 Fernando Perez <fperez@colorado.edu>
1636 2005-06-01 Fernando Perez <fperez@colorado.edu>
1633
1637
1634 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1638 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1635 tab-completion of filenames within open-quoted strings. Note that
1639 tab-completion of filenames within open-quoted strings. Note that
1636 this requires that in ~/.ipython/ipythonrc, users change the
1640 this requires that in ~/.ipython/ipythonrc, users change the
1637 readline delimiters configuration to read:
1641 readline delimiters configuration to read:
1638
1642
1639 readline_remove_delims -/~
1643 readline_remove_delims -/~
1640
1644
1641
1645
1642 2005-05-31 *** Released version 0.6.14
1646 2005-05-31 *** Released version 0.6.14
1643
1647
1644 2005-05-29 Fernando Perez <fperez@colorado.edu>
1648 2005-05-29 Fernando Perez <fperez@colorado.edu>
1645
1649
1646 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1650 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1647 with files not on the filesystem. Reported by Eliyahu Sandler
1651 with files not on the filesystem. Reported by Eliyahu Sandler
1648 <eli@gondolin.net>
1652 <eli@gondolin.net>
1649
1653
1650 2005-05-22 Fernando Perez <fperez@colorado.edu>
1654 2005-05-22 Fernando Perez <fperez@colorado.edu>
1651
1655
1652 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1656 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1653 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1657 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1654
1658
1655 2005-05-19 Fernando Perez <fperez@colorado.edu>
1659 2005-05-19 Fernando Perez <fperez@colorado.edu>
1656
1660
1657 * IPython/iplib.py (safe_execfile): close a file which could be
1661 * IPython/iplib.py (safe_execfile): close a file which could be
1658 left open (causing problems in win32, which locks open files).
1662 left open (causing problems in win32, which locks open files).
1659 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1663 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1660
1664
1661 2005-05-18 Fernando Perez <fperez@colorado.edu>
1665 2005-05-18 Fernando Perez <fperez@colorado.edu>
1662
1666
1663 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1667 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1664 keyword arguments correctly to safe_execfile().
1668 keyword arguments correctly to safe_execfile().
1665
1669
1666 2005-05-13 Fernando Perez <fperez@colorado.edu>
1670 2005-05-13 Fernando Perez <fperez@colorado.edu>
1667
1671
1668 * ipython.1: Added info about Qt to manpage, and threads warning
1672 * ipython.1: Added info about Qt to manpage, and threads warning
1669 to usage page (invoked with --help).
1673 to usage page (invoked with --help).
1670
1674
1671 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1675 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1672 new matcher (it goes at the end of the priority list) to do
1676 new matcher (it goes at the end of the priority list) to do
1673 tab-completion on named function arguments. Submitted by George
1677 tab-completion on named function arguments. Submitted by George
1674 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1678 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1675 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1679 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1676 for more details.
1680 for more details.
1677
1681
1678 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1682 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1679 SystemExit exceptions in the script being run. Thanks to a report
1683 SystemExit exceptions in the script being run. Thanks to a report
1680 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1684 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1681 producing very annoying behavior when running unit tests.
1685 producing very annoying behavior when running unit tests.
1682
1686
1683 2005-05-12 Fernando Perez <fperez@colorado.edu>
1687 2005-05-12 Fernando Perez <fperez@colorado.edu>
1684
1688
1685 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1689 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1686 which I'd broken (again) due to a changed regexp. In the process,
1690 which I'd broken (again) due to a changed regexp. In the process,
1687 added ';' as an escape to auto-quote the whole line without
1691 added ';' as an escape to auto-quote the whole line without
1688 splitting its arguments. Thanks to a report by Jerry McRae
1692 splitting its arguments. Thanks to a report by Jerry McRae
1689 <qrs0xyc02-AT-sneakemail.com>.
1693 <qrs0xyc02-AT-sneakemail.com>.
1690
1694
1691 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1695 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1692 possible crashes caused by a TokenError. Reported by Ed Schofield
1696 possible crashes caused by a TokenError. Reported by Ed Schofield
1693 <schofield-AT-ftw.at>.
1697 <schofield-AT-ftw.at>.
1694
1698
1695 2005-05-06 Fernando Perez <fperez@colorado.edu>
1699 2005-05-06 Fernando Perez <fperez@colorado.edu>
1696
1700
1697 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1701 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1698
1702
1699 2005-04-29 Fernando Perez <fperez@colorado.edu>
1703 2005-04-29 Fernando Perez <fperez@colorado.edu>
1700
1704
1701 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1705 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1702 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1706 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1703 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1707 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1704 which provides support for Qt interactive usage (similar to the
1708 which provides support for Qt interactive usage (similar to the
1705 existing one for WX and GTK). This had been often requested.
1709 existing one for WX and GTK). This had been often requested.
1706
1710
1707 2005-04-14 *** Released version 0.6.13
1711 2005-04-14 *** Released version 0.6.13
1708
1712
1709 2005-04-08 Fernando Perez <fperez@colorado.edu>
1713 2005-04-08 Fernando Perez <fperez@colorado.edu>
1710
1714
1711 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1715 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1712 from _ofind, which gets called on almost every input line. Now,
1716 from _ofind, which gets called on almost every input line. Now,
1713 we only try to get docstrings if they are actually going to be
1717 we only try to get docstrings if they are actually going to be
1714 used (the overhead of fetching unnecessary docstrings can be
1718 used (the overhead of fetching unnecessary docstrings can be
1715 noticeable for certain objects, such as Pyro proxies).
1719 noticeable for certain objects, such as Pyro proxies).
1716
1720
1717 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1721 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1718 for completers. For some reason I had been passing them the state
1722 for completers. For some reason I had been passing them the state
1719 variable, which completers never actually need, and was in
1723 variable, which completers never actually need, and was in
1720 conflict with the rlcompleter API. Custom completers ONLY need to
1724 conflict with the rlcompleter API. Custom completers ONLY need to
1721 take the text parameter.
1725 take the text parameter.
1722
1726
1723 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1727 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1724 work correctly in pysh. I've also moved all the logic which used
1728 work correctly in pysh. I've also moved all the logic which used
1725 to be in pysh.py here, which will prevent problems with future
1729 to be in pysh.py here, which will prevent problems with future
1726 upgrades. However, this time I must warn users to update their
1730 upgrades. However, this time I must warn users to update their
1727 pysh profile to include the line
1731 pysh profile to include the line
1728
1732
1729 import_all IPython.Extensions.InterpreterExec
1733 import_all IPython.Extensions.InterpreterExec
1730
1734
1731 because otherwise things won't work for them. They MUST also
1735 because otherwise things won't work for them. They MUST also
1732 delete pysh.py and the line
1736 delete pysh.py and the line
1733
1737
1734 execfile pysh.py
1738 execfile pysh.py
1735
1739
1736 from their ipythonrc-pysh.
1740 from their ipythonrc-pysh.
1737
1741
1738 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1742 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1739 robust in the face of objects whose dir() returns non-strings
1743 robust in the face of objects whose dir() returns non-strings
1740 (which it shouldn't, but some broken libs like ITK do). Thanks to
1744 (which it shouldn't, but some broken libs like ITK do). Thanks to
1741 a patch by John Hunter (implemented differently, though). Also
1745 a patch by John Hunter (implemented differently, though). Also
1742 minor improvements by using .extend instead of + on lists.
1746 minor improvements by using .extend instead of + on lists.
1743
1747
1744 * pysh.py:
1748 * pysh.py:
1745
1749
1746 2005-04-06 Fernando Perez <fperez@colorado.edu>
1750 2005-04-06 Fernando Perez <fperez@colorado.edu>
1747
1751
1748 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1752 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1749 by default, so that all users benefit from it. Those who don't
1753 by default, so that all users benefit from it. Those who don't
1750 want it can still turn it off.
1754 want it can still turn it off.
1751
1755
1752 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1756 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1753 config file, I'd forgotten about this, so users were getting it
1757 config file, I'd forgotten about this, so users were getting it
1754 off by default.
1758 off by default.
1755
1759
1756 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1760 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1757 consistency. Now magics can be called in multiline statements,
1761 consistency. Now magics can be called in multiline statements,
1758 and python variables can be expanded in magic calls via $var.
1762 and python variables can be expanded in magic calls via $var.
1759 This makes the magic system behave just like aliases or !system
1763 This makes the magic system behave just like aliases or !system
1760 calls.
1764 calls.
1761
1765
1762 2005-03-28 Fernando Perez <fperez@colorado.edu>
1766 2005-03-28 Fernando Perez <fperez@colorado.edu>
1763
1767
1764 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1768 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1765 expensive string additions for building command. Add support for
1769 expensive string additions for building command. Add support for
1766 trailing ';' when autocall is used.
1770 trailing ';' when autocall is used.
1767
1771
1768 2005-03-26 Fernando Perez <fperez@colorado.edu>
1772 2005-03-26 Fernando Perez <fperez@colorado.edu>
1769
1773
1770 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1774 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1771 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1775 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1772 ipython.el robust against prompts with any number of spaces
1776 ipython.el robust against prompts with any number of spaces
1773 (including 0) after the ':' character.
1777 (including 0) after the ':' character.
1774
1778
1775 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1779 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1776 continuation prompt, which misled users to think the line was
1780 continuation prompt, which misled users to think the line was
1777 already indented. Closes debian Bug#300847, reported to me by
1781 already indented. Closes debian Bug#300847, reported to me by
1778 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1782 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1779
1783
1780 2005-03-23 Fernando Perez <fperez@colorado.edu>
1784 2005-03-23 Fernando Perez <fperez@colorado.edu>
1781
1785
1782 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1786 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1783 properly aligned if they have embedded newlines.
1787 properly aligned if they have embedded newlines.
1784
1788
1785 * IPython/iplib.py (runlines): Add a public method to expose
1789 * IPython/iplib.py (runlines): Add a public method to expose
1786 IPython's code execution machinery, so that users can run strings
1790 IPython's code execution machinery, so that users can run strings
1787 as if they had been typed at the prompt interactively.
1791 as if they had been typed at the prompt interactively.
1788 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1792 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1789 methods which can call the system shell, but with python variable
1793 methods which can call the system shell, but with python variable
1790 expansion. The three such methods are: __IPYTHON__.system,
1794 expansion. The three such methods are: __IPYTHON__.system,
1791 .getoutput and .getoutputerror. These need to be documented in a
1795 .getoutput and .getoutputerror. These need to be documented in a
1792 'public API' section (to be written) of the manual.
1796 'public API' section (to be written) of the manual.
1793
1797
1794 2005-03-20 Fernando Perez <fperez@colorado.edu>
1798 2005-03-20 Fernando Perez <fperez@colorado.edu>
1795
1799
1796 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1800 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1797 for custom exception handling. This is quite powerful, and it
1801 for custom exception handling. This is quite powerful, and it
1798 allows for user-installable exception handlers which can trap
1802 allows for user-installable exception handlers which can trap
1799 custom exceptions at runtime and treat them separately from
1803 custom exceptions at runtime and treat them separately from
1800 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1804 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1801 Mantegazza <mantegazza-AT-ill.fr>.
1805 Mantegazza <mantegazza-AT-ill.fr>.
1802 (InteractiveShell.set_custom_completer): public API function to
1806 (InteractiveShell.set_custom_completer): public API function to
1803 add new completers at runtime.
1807 add new completers at runtime.
1804
1808
1805 2005-03-19 Fernando Perez <fperez@colorado.edu>
1809 2005-03-19 Fernando Perez <fperez@colorado.edu>
1806
1810
1807 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1811 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1808 allow objects which provide their docstrings via non-standard
1812 allow objects which provide their docstrings via non-standard
1809 mechanisms (like Pyro proxies) to still be inspected by ipython's
1813 mechanisms (like Pyro proxies) to still be inspected by ipython's
1810 ? system.
1814 ? system.
1811
1815
1812 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1816 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1813 automatic capture system. I tried quite hard to make it work
1817 automatic capture system. I tried quite hard to make it work
1814 reliably, and simply failed. I tried many combinations with the
1818 reliably, and simply failed. I tried many combinations with the
1815 subprocess module, but eventually nothing worked in all needed
1819 subprocess module, but eventually nothing worked in all needed
1816 cases (not blocking stdin for the child, duplicating stdout
1820 cases (not blocking stdin for the child, duplicating stdout
1817 without blocking, etc). The new %sc/%sx still do capture to these
1821 without blocking, etc). The new %sc/%sx still do capture to these
1818 magical list/string objects which make shell use much more
1822 magical list/string objects which make shell use much more
1819 conveninent, so not all is lost.
1823 conveninent, so not all is lost.
1820
1824
1821 XXX - FIX MANUAL for the change above!
1825 XXX - FIX MANUAL for the change above!
1822
1826
1823 (runsource): I copied code.py's runsource() into ipython to modify
1827 (runsource): I copied code.py's runsource() into ipython to modify
1824 it a bit. Now the code object and source to be executed are
1828 it a bit. Now the code object and source to be executed are
1825 stored in ipython. This makes this info accessible to third-party
1829 stored in ipython. This makes this info accessible to third-party
1826 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1830 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1827 Mantegazza <mantegazza-AT-ill.fr>.
1831 Mantegazza <mantegazza-AT-ill.fr>.
1828
1832
1829 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1833 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1830 history-search via readline (like C-p/C-n). I'd wanted this for a
1834 history-search via readline (like C-p/C-n). I'd wanted this for a
1831 long time, but only recently found out how to do it. For users
1835 long time, but only recently found out how to do it. For users
1832 who already have their ipythonrc files made and want this, just
1836 who already have their ipythonrc files made and want this, just
1833 add:
1837 add:
1834
1838
1835 readline_parse_and_bind "\e[A": history-search-backward
1839 readline_parse_and_bind "\e[A": history-search-backward
1836 readline_parse_and_bind "\e[B": history-search-forward
1840 readline_parse_and_bind "\e[B": history-search-forward
1837
1841
1838 2005-03-18 Fernando Perez <fperez@colorado.edu>
1842 2005-03-18 Fernando Perez <fperez@colorado.edu>
1839
1843
1840 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1844 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1841 LSString and SList classes which allow transparent conversions
1845 LSString and SList classes which allow transparent conversions
1842 between list mode and whitespace-separated string.
1846 between list mode and whitespace-separated string.
1843 (magic_r): Fix recursion problem in %r.
1847 (magic_r): Fix recursion problem in %r.
1844
1848
1845 * IPython/genutils.py (LSString): New class to be used for
1849 * IPython/genutils.py (LSString): New class to be used for
1846 automatic storage of the results of all alias/system calls in _o
1850 automatic storage of the results of all alias/system calls in _o
1847 and _e (stdout/err). These provide a .l/.list attribute which
1851 and _e (stdout/err). These provide a .l/.list attribute which
1848 does automatic splitting on newlines. This means that for most
1852 does automatic splitting on newlines. This means that for most
1849 uses, you'll never need to do capturing of output with %sc/%sx
1853 uses, you'll never need to do capturing of output with %sc/%sx
1850 anymore, since ipython keeps this always done for you. Note that
1854 anymore, since ipython keeps this always done for you. Note that
1851 only the LAST results are stored, the _o/e variables are
1855 only the LAST results are stored, the _o/e variables are
1852 overwritten on each call. If you need to save their contents
1856 overwritten on each call. If you need to save their contents
1853 further, simply bind them to any other name.
1857 further, simply bind them to any other name.
1854
1858
1855 2005-03-17 Fernando Perez <fperez@colorado.edu>
1859 2005-03-17 Fernando Perez <fperez@colorado.edu>
1856
1860
1857 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1861 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1858 prompt namespace handling.
1862 prompt namespace handling.
1859
1863
1860 2005-03-16 Fernando Perez <fperez@colorado.edu>
1864 2005-03-16 Fernando Perez <fperez@colorado.edu>
1861
1865
1862 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1866 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1863 classic prompts to be '>>> ' (final space was missing, and it
1867 classic prompts to be '>>> ' (final space was missing, and it
1864 trips the emacs python mode).
1868 trips the emacs python mode).
1865 (BasePrompt.__str__): Added safe support for dynamic prompt
1869 (BasePrompt.__str__): Added safe support for dynamic prompt
1866 strings. Now you can set your prompt string to be '$x', and the
1870 strings. Now you can set your prompt string to be '$x', and the
1867 value of x will be printed from your interactive namespace. The
1871 value of x will be printed from your interactive namespace. The
1868 interpolation syntax includes the full Itpl support, so
1872 interpolation syntax includes the full Itpl support, so
1869 ${foo()+x+bar()} is a valid prompt string now, and the function
1873 ${foo()+x+bar()} is a valid prompt string now, and the function
1870 calls will be made at runtime.
1874 calls will be made at runtime.
1871
1875
1872 2005-03-15 Fernando Perez <fperez@colorado.edu>
1876 2005-03-15 Fernando Perez <fperez@colorado.edu>
1873
1877
1874 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1878 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1875 avoid name clashes in pylab. %hist still works, it just forwards
1879 avoid name clashes in pylab. %hist still works, it just forwards
1876 the call to %history.
1880 the call to %history.
1877
1881
1878 2005-03-02 *** Released version 0.6.12
1882 2005-03-02 *** Released version 0.6.12
1879
1883
1880 2005-03-02 Fernando Perez <fperez@colorado.edu>
1884 2005-03-02 Fernando Perez <fperez@colorado.edu>
1881
1885
1882 * IPython/iplib.py (handle_magic): log magic calls properly as
1886 * IPython/iplib.py (handle_magic): log magic calls properly as
1883 ipmagic() function calls.
1887 ipmagic() function calls.
1884
1888
1885 * IPython/Magic.py (magic_time): Improved %time to support
1889 * IPython/Magic.py (magic_time): Improved %time to support
1886 statements and provide wall-clock as well as CPU time.
1890 statements and provide wall-clock as well as CPU time.
1887
1891
1888 2005-02-27 Fernando Perez <fperez@colorado.edu>
1892 2005-02-27 Fernando Perez <fperez@colorado.edu>
1889
1893
1890 * IPython/hooks.py: New hooks module, to expose user-modifiable
1894 * IPython/hooks.py: New hooks module, to expose user-modifiable
1891 IPython functionality in a clean manner. For now only the editor
1895 IPython functionality in a clean manner. For now only the editor
1892 hook is actually written, and other thigns which I intend to turn
1896 hook is actually written, and other thigns which I intend to turn
1893 into proper hooks aren't yet there. The display and prefilter
1897 into proper hooks aren't yet there. The display and prefilter
1894 stuff, for example, should be hooks. But at least now the
1898 stuff, for example, should be hooks. But at least now the
1895 framework is in place, and the rest can be moved here with more
1899 framework is in place, and the rest can be moved here with more
1896 time later. IPython had had a .hooks variable for a long time for
1900 time later. IPython had had a .hooks variable for a long time for
1897 this purpose, but I'd never actually used it for anything.
1901 this purpose, but I'd never actually used it for anything.
1898
1902
1899 2005-02-26 Fernando Perez <fperez@colorado.edu>
1903 2005-02-26 Fernando Perez <fperez@colorado.edu>
1900
1904
1901 * IPython/ipmaker.py (make_IPython): make the default ipython
1905 * IPython/ipmaker.py (make_IPython): make the default ipython
1902 directory be called _ipython under win32, to follow more the
1906 directory be called _ipython under win32, to follow more the
1903 naming peculiarities of that platform (where buggy software like
1907 naming peculiarities of that platform (where buggy software like
1904 Visual Sourcesafe breaks with .named directories). Reported by
1908 Visual Sourcesafe breaks with .named directories). Reported by
1905 Ville Vainio.
1909 Ville Vainio.
1906
1910
1907 2005-02-23 Fernando Perez <fperez@colorado.edu>
1911 2005-02-23 Fernando Perez <fperez@colorado.edu>
1908
1912
1909 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1913 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1910 auto_aliases for win32 which were causing problems. Users can
1914 auto_aliases for win32 which were causing problems. Users can
1911 define the ones they personally like.
1915 define the ones they personally like.
1912
1916
1913 2005-02-21 Fernando Perez <fperez@colorado.edu>
1917 2005-02-21 Fernando Perez <fperez@colorado.edu>
1914
1918
1915 * IPython/Magic.py (magic_time): new magic to time execution of
1919 * IPython/Magic.py (magic_time): new magic to time execution of
1916 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1920 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1917
1921
1918 2005-02-19 Fernando Perez <fperez@colorado.edu>
1922 2005-02-19 Fernando Perez <fperez@colorado.edu>
1919
1923
1920 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1924 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1921 into keys (for prompts, for example).
1925 into keys (for prompts, for example).
1922
1926
1923 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1927 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1924 prompts in case users want them. This introduces a small behavior
1928 prompts in case users want them. This introduces a small behavior
1925 change: ipython does not automatically add a space to all prompts
1929 change: ipython does not automatically add a space to all prompts
1926 anymore. To get the old prompts with a space, users should add it
1930 anymore. To get the old prompts with a space, users should add it
1927 manually to their ipythonrc file, so for example prompt_in1 should
1931 manually to their ipythonrc file, so for example prompt_in1 should
1928 now read 'In [\#]: ' instead of 'In [\#]:'.
1932 now read 'In [\#]: ' instead of 'In [\#]:'.
1929 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1933 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1930 file) to control left-padding of secondary prompts.
1934 file) to control left-padding of secondary prompts.
1931
1935
1932 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1936 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1933 the profiler can't be imported. Fix for Debian, which removed
1937 the profiler can't be imported. Fix for Debian, which removed
1934 profile.py because of License issues. I applied a slightly
1938 profile.py because of License issues. I applied a slightly
1935 modified version of the original Debian patch at
1939 modified version of the original Debian patch at
1936 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1940 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1937
1941
1938 2005-02-17 Fernando Perez <fperez@colorado.edu>
1942 2005-02-17 Fernando Perez <fperez@colorado.edu>
1939
1943
1940 * IPython/genutils.py (native_line_ends): Fix bug which would
1944 * IPython/genutils.py (native_line_ends): Fix bug which would
1941 cause improper line-ends under win32 b/c I was not opening files
1945 cause improper line-ends under win32 b/c I was not opening files
1942 in binary mode. Bug report and fix thanks to Ville.
1946 in binary mode. Bug report and fix thanks to Ville.
1943
1947
1944 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1948 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1945 trying to catch spurious foo[1] autocalls. My fix actually broke
1949 trying to catch spurious foo[1] autocalls. My fix actually broke
1946 ',/' autoquote/call with explicit escape (bad regexp).
1950 ',/' autoquote/call with explicit escape (bad regexp).
1947
1951
1948 2005-02-15 *** Released version 0.6.11
1952 2005-02-15 *** Released version 0.6.11
1949
1953
1950 2005-02-14 Fernando Perez <fperez@colorado.edu>
1954 2005-02-14 Fernando Perez <fperez@colorado.edu>
1951
1955
1952 * IPython/background_jobs.py: New background job management
1956 * IPython/background_jobs.py: New background job management
1953 subsystem. This is implemented via a new set of classes, and
1957 subsystem. This is implemented via a new set of classes, and
1954 IPython now provides a builtin 'jobs' object for background job
1958 IPython now provides a builtin 'jobs' object for background job
1955 execution. A convenience %bg magic serves as a lightweight
1959 execution. A convenience %bg magic serves as a lightweight
1956 frontend for starting the more common type of calls. This was
1960 frontend for starting the more common type of calls. This was
1957 inspired by discussions with B. Granger and the BackgroundCommand
1961 inspired by discussions with B. Granger and the BackgroundCommand
1958 class described in the book Python Scripting for Computational
1962 class described in the book Python Scripting for Computational
1959 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1963 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1960 (although ultimately no code from this text was used, as IPython's
1964 (although ultimately no code from this text was used, as IPython's
1961 system is a separate implementation).
1965 system is a separate implementation).
1962
1966
1963 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1967 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1964 to control the completion of single/double underscore names
1968 to control the completion of single/double underscore names
1965 separately. As documented in the example ipytonrc file, the
1969 separately. As documented in the example ipytonrc file, the
1966 readline_omit__names variable can now be set to 2, to omit even
1970 readline_omit__names variable can now be set to 2, to omit even
1967 single underscore names. Thanks to a patch by Brian Wong
1971 single underscore names. Thanks to a patch by Brian Wong
1968 <BrianWong-AT-AirgoNetworks.Com>.
1972 <BrianWong-AT-AirgoNetworks.Com>.
1969 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1973 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1970 be autocalled as foo([1]) if foo were callable. A problem for
1974 be autocalled as foo([1]) if foo were callable. A problem for
1971 things which are both callable and implement __getitem__.
1975 things which are both callable and implement __getitem__.
1972 (init_readline): Fix autoindentation for win32. Thanks to a patch
1976 (init_readline): Fix autoindentation for win32. Thanks to a patch
1973 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1977 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1974
1978
1975 2005-02-12 Fernando Perez <fperez@colorado.edu>
1979 2005-02-12 Fernando Perez <fperez@colorado.edu>
1976
1980
1977 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1981 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1978 which I had written long ago to sort out user error messages which
1982 which I had written long ago to sort out user error messages which
1979 may occur during startup. This seemed like a good idea initially,
1983 may occur during startup. This seemed like a good idea initially,
1980 but it has proven a disaster in retrospect. I don't want to
1984 but it has proven a disaster in retrospect. I don't want to
1981 change much code for now, so my fix is to set the internal 'debug'
1985 change much code for now, so my fix is to set the internal 'debug'
1982 flag to true everywhere, whose only job was precisely to control
1986 flag to true everywhere, whose only job was precisely to control
1983 this subsystem. This closes issue 28 (as well as avoiding all
1987 this subsystem. This closes issue 28 (as well as avoiding all
1984 sorts of strange hangups which occur from time to time).
1988 sorts of strange hangups which occur from time to time).
1985
1989
1986 2005-02-07 Fernando Perez <fperez@colorado.edu>
1990 2005-02-07 Fernando Perez <fperez@colorado.edu>
1987
1991
1988 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1992 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1989 previous call produced a syntax error.
1993 previous call produced a syntax error.
1990
1994
1991 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1995 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1992 classes without constructor.
1996 classes without constructor.
1993
1997
1994 2005-02-06 Fernando Perez <fperez@colorado.edu>
1998 2005-02-06 Fernando Perez <fperez@colorado.edu>
1995
1999
1996 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2000 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1997 completions with the results of each matcher, so we return results
2001 completions with the results of each matcher, so we return results
1998 to the user from all namespaces. This breaks with ipython
2002 to the user from all namespaces. This breaks with ipython
1999 tradition, but I think it's a nicer behavior. Now you get all
2003 tradition, but I think it's a nicer behavior. Now you get all
2000 possible completions listed, from all possible namespaces (python,
2004 possible completions listed, from all possible namespaces (python,
2001 filesystem, magics...) After a request by John Hunter
2005 filesystem, magics...) After a request by John Hunter
2002 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2006 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2003
2007
2004 2005-02-05 Fernando Perez <fperez@colorado.edu>
2008 2005-02-05 Fernando Perez <fperez@colorado.edu>
2005
2009
2006 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2010 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2007 the call had quote characters in it (the quotes were stripped).
2011 the call had quote characters in it (the quotes were stripped).
2008
2012
2009 2005-01-31 Fernando Perez <fperez@colorado.edu>
2013 2005-01-31 Fernando Perez <fperez@colorado.edu>
2010
2014
2011 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2015 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2012 Itpl.itpl() to make the code more robust against psyco
2016 Itpl.itpl() to make the code more robust against psyco
2013 optimizations.
2017 optimizations.
2014
2018
2015 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2019 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2016 of causing an exception. Quicker, cleaner.
2020 of causing an exception. Quicker, cleaner.
2017
2021
2018 2005-01-28 Fernando Perez <fperez@colorado.edu>
2022 2005-01-28 Fernando Perez <fperez@colorado.edu>
2019
2023
2020 * scripts/ipython_win_post_install.py (install): hardcode
2024 * scripts/ipython_win_post_install.py (install): hardcode
2021 sys.prefix+'python.exe' as the executable path. It turns out that
2025 sys.prefix+'python.exe' as the executable path. It turns out that
2022 during the post-installation run, sys.executable resolves to the
2026 during the post-installation run, sys.executable resolves to the
2023 name of the binary installer! I should report this as a distutils
2027 name of the binary installer! I should report this as a distutils
2024 bug, I think. I updated the .10 release with this tiny fix, to
2028 bug, I think. I updated the .10 release with this tiny fix, to
2025 avoid annoying the lists further.
2029 avoid annoying the lists further.
2026
2030
2027 2005-01-27 *** Released version 0.6.10
2031 2005-01-27 *** Released version 0.6.10
2028
2032
2029 2005-01-27 Fernando Perez <fperez@colorado.edu>
2033 2005-01-27 Fernando Perez <fperez@colorado.edu>
2030
2034
2031 * IPython/numutils.py (norm): Added 'inf' as optional name for
2035 * IPython/numutils.py (norm): Added 'inf' as optional name for
2032 L-infinity norm, included references to mathworld.com for vector
2036 L-infinity norm, included references to mathworld.com for vector
2033 norm definitions.
2037 norm definitions.
2034 (amin/amax): added amin/amax for array min/max. Similar to what
2038 (amin/amax): added amin/amax for array min/max. Similar to what
2035 pylab ships with after the recent reorganization of names.
2039 pylab ships with after the recent reorganization of names.
2036 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2040 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2037
2041
2038 * ipython.el: committed Alex's recent fixes and improvements.
2042 * ipython.el: committed Alex's recent fixes and improvements.
2039 Tested with python-mode from CVS, and it looks excellent. Since
2043 Tested with python-mode from CVS, and it looks excellent. Since
2040 python-mode hasn't released anything in a while, I'm temporarily
2044 python-mode hasn't released anything in a while, I'm temporarily
2041 putting a copy of today's CVS (v 4.70) of python-mode in:
2045 putting a copy of today's CVS (v 4.70) of python-mode in:
2042 http://ipython.scipy.org/tmp/python-mode.el
2046 http://ipython.scipy.org/tmp/python-mode.el
2043
2047
2044 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2048 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2045 sys.executable for the executable name, instead of assuming it's
2049 sys.executable for the executable name, instead of assuming it's
2046 called 'python.exe' (the post-installer would have produced broken
2050 called 'python.exe' (the post-installer would have produced broken
2047 setups on systems with a differently named python binary).
2051 setups on systems with a differently named python binary).
2048
2052
2049 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2053 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2050 references to os.linesep, to make the code more
2054 references to os.linesep, to make the code more
2051 platform-independent. This is also part of the win32 coloring
2055 platform-independent. This is also part of the win32 coloring
2052 fixes.
2056 fixes.
2053
2057
2054 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2058 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2055 lines, which actually cause coloring bugs because the length of
2059 lines, which actually cause coloring bugs because the length of
2056 the line is very difficult to correctly compute with embedded
2060 the line is very difficult to correctly compute with embedded
2057 escapes. This was the source of all the coloring problems under
2061 escapes. This was the source of all the coloring problems under
2058 Win32. I think that _finally_, Win32 users have a properly
2062 Win32. I think that _finally_, Win32 users have a properly
2059 working ipython in all respects. This would never have happened
2063 working ipython in all respects. This would never have happened
2060 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2064 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2061
2065
2062 2005-01-26 *** Released version 0.6.9
2066 2005-01-26 *** Released version 0.6.9
2063
2067
2064 2005-01-25 Fernando Perez <fperez@colorado.edu>
2068 2005-01-25 Fernando Perez <fperez@colorado.edu>
2065
2069
2066 * setup.py: finally, we have a true Windows installer, thanks to
2070 * setup.py: finally, we have a true Windows installer, thanks to
2067 the excellent work of Viktor Ransmayr
2071 the excellent work of Viktor Ransmayr
2068 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2072 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2069 Windows users. The setup routine is quite a bit cleaner thanks to
2073 Windows users. The setup routine is quite a bit cleaner thanks to
2070 this, and the post-install script uses the proper functions to
2074 this, and the post-install script uses the proper functions to
2071 allow a clean de-installation using the standard Windows Control
2075 allow a clean de-installation using the standard Windows Control
2072 Panel.
2076 Panel.
2073
2077
2074 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2078 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2075 environment variable under all OSes (including win32) if
2079 environment variable under all OSes (including win32) if
2076 available. This will give consistency to win32 users who have set
2080 available. This will give consistency to win32 users who have set
2077 this variable for any reason. If os.environ['HOME'] fails, the
2081 this variable for any reason. If os.environ['HOME'] fails, the
2078 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2082 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2079
2083
2080 2005-01-24 Fernando Perez <fperez@colorado.edu>
2084 2005-01-24 Fernando Perez <fperez@colorado.edu>
2081
2085
2082 * IPython/numutils.py (empty_like): add empty_like(), similar to
2086 * IPython/numutils.py (empty_like): add empty_like(), similar to
2083 zeros_like() but taking advantage of the new empty() Numeric routine.
2087 zeros_like() but taking advantage of the new empty() Numeric routine.
2084
2088
2085 2005-01-23 *** Released version 0.6.8
2089 2005-01-23 *** Released version 0.6.8
2086
2090
2087 2005-01-22 Fernando Perez <fperez@colorado.edu>
2091 2005-01-22 Fernando Perez <fperez@colorado.edu>
2088
2092
2089 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2093 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2090 automatic show() calls. After discussing things with JDH, it
2094 automatic show() calls. After discussing things with JDH, it
2091 turns out there are too many corner cases where this can go wrong.
2095 turns out there are too many corner cases where this can go wrong.
2092 It's best not to try to be 'too smart', and simply have ipython
2096 It's best not to try to be 'too smart', and simply have ipython
2093 reproduce as much as possible the default behavior of a normal
2097 reproduce as much as possible the default behavior of a normal
2094 python shell.
2098 python shell.
2095
2099
2096 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2100 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2097 line-splitting regexp and _prefilter() to avoid calling getattr()
2101 line-splitting regexp and _prefilter() to avoid calling getattr()
2098 on assignments. This closes
2102 on assignments. This closes
2099 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2103 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2100 readline uses getattr(), so a simple <TAB> keypress is still
2104 readline uses getattr(), so a simple <TAB> keypress is still
2101 enough to trigger getattr() calls on an object.
2105 enough to trigger getattr() calls on an object.
2102
2106
2103 2005-01-21 Fernando Perez <fperez@colorado.edu>
2107 2005-01-21 Fernando Perez <fperez@colorado.edu>
2104
2108
2105 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2109 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2106 docstring under pylab so it doesn't mask the original.
2110 docstring under pylab so it doesn't mask the original.
2107
2111
2108 2005-01-21 *** Released version 0.6.7
2112 2005-01-21 *** Released version 0.6.7
2109
2113
2110 2005-01-21 Fernando Perez <fperez@colorado.edu>
2114 2005-01-21 Fernando Perez <fperez@colorado.edu>
2111
2115
2112 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2116 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2113 signal handling for win32 users in multithreaded mode.
2117 signal handling for win32 users in multithreaded mode.
2114
2118
2115 2005-01-17 Fernando Perez <fperez@colorado.edu>
2119 2005-01-17 Fernando Perez <fperez@colorado.edu>
2116
2120
2117 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2121 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2118 instances with no __init__. After a crash report by Norbert Nemec
2122 instances with no __init__. After a crash report by Norbert Nemec
2119 <Norbert-AT-nemec-online.de>.
2123 <Norbert-AT-nemec-online.de>.
2120
2124
2121 2005-01-14 Fernando Perez <fperez@colorado.edu>
2125 2005-01-14 Fernando Perez <fperez@colorado.edu>
2122
2126
2123 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2127 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2124 names for verbose exceptions, when multiple dotted names and the
2128 names for verbose exceptions, when multiple dotted names and the
2125 'parent' object were present on the same line.
2129 'parent' object were present on the same line.
2126
2130
2127 2005-01-11 Fernando Perez <fperez@colorado.edu>
2131 2005-01-11 Fernando Perez <fperez@colorado.edu>
2128
2132
2129 * IPython/genutils.py (flag_calls): new utility to trap and flag
2133 * IPython/genutils.py (flag_calls): new utility to trap and flag
2130 calls in functions. I need it to clean up matplotlib support.
2134 calls in functions. I need it to clean up matplotlib support.
2131 Also removed some deprecated code in genutils.
2135 Also removed some deprecated code in genutils.
2132
2136
2133 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2137 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2134 that matplotlib scripts called with %run, which don't call show()
2138 that matplotlib scripts called with %run, which don't call show()
2135 themselves, still have their plotting windows open.
2139 themselves, still have their plotting windows open.
2136
2140
2137 2005-01-05 Fernando Perez <fperez@colorado.edu>
2141 2005-01-05 Fernando Perez <fperez@colorado.edu>
2138
2142
2139 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2143 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2140 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2144 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2141
2145
2142 2004-12-19 Fernando Perez <fperez@colorado.edu>
2146 2004-12-19 Fernando Perez <fperez@colorado.edu>
2143
2147
2144 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2148 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2145 parent_runcode, which was an eyesore. The same result can be
2149 parent_runcode, which was an eyesore. The same result can be
2146 obtained with Python's regular superclass mechanisms.
2150 obtained with Python's regular superclass mechanisms.
2147
2151
2148 2004-12-17 Fernando Perez <fperez@colorado.edu>
2152 2004-12-17 Fernando Perez <fperez@colorado.edu>
2149
2153
2150 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2154 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2151 reported by Prabhu.
2155 reported by Prabhu.
2152 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2156 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2153 sys.stderr) instead of explicitly calling sys.stderr. This helps
2157 sys.stderr) instead of explicitly calling sys.stderr. This helps
2154 maintain our I/O abstractions clean, for future GUI embeddings.
2158 maintain our I/O abstractions clean, for future GUI embeddings.
2155
2159
2156 * IPython/genutils.py (info): added new utility for sys.stderr
2160 * IPython/genutils.py (info): added new utility for sys.stderr
2157 unified info message handling (thin wrapper around warn()).
2161 unified info message handling (thin wrapper around warn()).
2158
2162
2159 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2163 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2160 composite (dotted) names on verbose exceptions.
2164 composite (dotted) names on verbose exceptions.
2161 (VerboseTB.nullrepr): harden against another kind of errors which
2165 (VerboseTB.nullrepr): harden against another kind of errors which
2162 Python's inspect module can trigger, and which were crashing
2166 Python's inspect module can trigger, and which were crashing
2163 IPython. Thanks to a report by Marco Lombardi
2167 IPython. Thanks to a report by Marco Lombardi
2164 <mlombard-AT-ma010192.hq.eso.org>.
2168 <mlombard-AT-ma010192.hq.eso.org>.
2165
2169
2166 2004-12-13 *** Released version 0.6.6
2170 2004-12-13 *** Released version 0.6.6
2167
2171
2168 2004-12-12 Fernando Perez <fperez@colorado.edu>
2172 2004-12-12 Fernando Perez <fperez@colorado.edu>
2169
2173
2170 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2174 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2171 generated by pygtk upon initialization if it was built without
2175 generated by pygtk upon initialization if it was built without
2172 threads (for matplotlib users). After a crash reported by
2176 threads (for matplotlib users). After a crash reported by
2173 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2177 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2174
2178
2175 * IPython/ipmaker.py (make_IPython): fix small bug in the
2179 * IPython/ipmaker.py (make_IPython): fix small bug in the
2176 import_some parameter for multiple imports.
2180 import_some parameter for multiple imports.
2177
2181
2178 * IPython/iplib.py (ipmagic): simplified the interface of
2182 * IPython/iplib.py (ipmagic): simplified the interface of
2179 ipmagic() to take a single string argument, just as it would be
2183 ipmagic() to take a single string argument, just as it would be
2180 typed at the IPython cmd line.
2184 typed at the IPython cmd line.
2181 (ipalias): Added new ipalias() with an interface identical to
2185 (ipalias): Added new ipalias() with an interface identical to
2182 ipmagic(). This completes exposing a pure python interface to the
2186 ipmagic(). This completes exposing a pure python interface to the
2183 alias and magic system, which can be used in loops or more complex
2187 alias and magic system, which can be used in loops or more complex
2184 code where IPython's automatic line mangling is not active.
2188 code where IPython's automatic line mangling is not active.
2185
2189
2186 * IPython/genutils.py (timing): changed interface of timing to
2190 * IPython/genutils.py (timing): changed interface of timing to
2187 simply run code once, which is the most common case. timings()
2191 simply run code once, which is the most common case. timings()
2188 remains unchanged, for the cases where you want multiple runs.
2192 remains unchanged, for the cases where you want multiple runs.
2189
2193
2190 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2194 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2191 bug where Python2.2 crashes with exec'ing code which does not end
2195 bug where Python2.2 crashes with exec'ing code which does not end
2192 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2196 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2193 before.
2197 before.
2194
2198
2195 2004-12-10 Fernando Perez <fperez@colorado.edu>
2199 2004-12-10 Fernando Perez <fperez@colorado.edu>
2196
2200
2197 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2201 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2198 -t to -T, to accomodate the new -t flag in %run (the %run and
2202 -t to -T, to accomodate the new -t flag in %run (the %run and
2199 %prun options are kind of intermixed, and it's not easy to change
2203 %prun options are kind of intermixed, and it's not easy to change
2200 this with the limitations of python's getopt).
2204 this with the limitations of python's getopt).
2201
2205
2202 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2206 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2203 the execution of scripts. It's not as fine-tuned as timeit.py,
2207 the execution of scripts. It's not as fine-tuned as timeit.py,
2204 but it works from inside ipython (and under 2.2, which lacks
2208 but it works from inside ipython (and under 2.2, which lacks
2205 timeit.py). Optionally a number of runs > 1 can be given for
2209 timeit.py). Optionally a number of runs > 1 can be given for
2206 timing very short-running code.
2210 timing very short-running code.
2207
2211
2208 * IPython/genutils.py (uniq_stable): new routine which returns a
2212 * IPython/genutils.py (uniq_stable): new routine which returns a
2209 list of unique elements in any iterable, but in stable order of
2213 list of unique elements in any iterable, but in stable order of
2210 appearance. I needed this for the ultraTB fixes, and it's a handy
2214 appearance. I needed this for the ultraTB fixes, and it's a handy
2211 utility.
2215 utility.
2212
2216
2213 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2217 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2214 dotted names in Verbose exceptions. This had been broken since
2218 dotted names in Verbose exceptions. This had been broken since
2215 the very start, now x.y will properly be printed in a Verbose
2219 the very start, now x.y will properly be printed in a Verbose
2216 traceback, instead of x being shown and y appearing always as an
2220 traceback, instead of x being shown and y appearing always as an
2217 'undefined global'. Getting this to work was a bit tricky,
2221 'undefined global'. Getting this to work was a bit tricky,
2218 because by default python tokenizers are stateless. Saved by
2222 because by default python tokenizers are stateless. Saved by
2219 python's ability to easily add a bit of state to an arbitrary
2223 python's ability to easily add a bit of state to an arbitrary
2220 function (without needing to build a full-blown callable object).
2224 function (without needing to build a full-blown callable object).
2221
2225
2222 Also big cleanup of this code, which had horrendous runtime
2226 Also big cleanup of this code, which had horrendous runtime
2223 lookups of zillions of attributes for colorization. Moved all
2227 lookups of zillions of attributes for colorization. Moved all
2224 this code into a few templates, which make it cleaner and quicker.
2228 this code into a few templates, which make it cleaner and quicker.
2225
2229
2226 Printout quality was also improved for Verbose exceptions: one
2230 Printout quality was also improved for Verbose exceptions: one
2227 variable per line, and memory addresses are printed (this can be
2231 variable per line, and memory addresses are printed (this can be
2228 quite handy in nasty debugging situations, which is what Verbose
2232 quite handy in nasty debugging situations, which is what Verbose
2229 is for).
2233 is for).
2230
2234
2231 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2235 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2232 the command line as scripts to be loaded by embedded instances.
2236 the command line as scripts to be loaded by embedded instances.
2233 Doing so has the potential for an infinite recursion if there are
2237 Doing so has the potential for an infinite recursion if there are
2234 exceptions thrown in the process. This fixes a strange crash
2238 exceptions thrown in the process. This fixes a strange crash
2235 reported by Philippe MULLER <muller-AT-irit.fr>.
2239 reported by Philippe MULLER <muller-AT-irit.fr>.
2236
2240
2237 2004-12-09 Fernando Perez <fperez@colorado.edu>
2241 2004-12-09 Fernando Perez <fperez@colorado.edu>
2238
2242
2239 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2243 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2240 to reflect new names in matplotlib, which now expose the
2244 to reflect new names in matplotlib, which now expose the
2241 matlab-compatible interface via a pylab module instead of the
2245 matlab-compatible interface via a pylab module instead of the
2242 'matlab' name. The new code is backwards compatible, so users of
2246 'matlab' name. The new code is backwards compatible, so users of
2243 all matplotlib versions are OK. Patch by J. Hunter.
2247 all matplotlib versions are OK. Patch by J. Hunter.
2244
2248
2245 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2249 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2246 of __init__ docstrings for instances (class docstrings are already
2250 of __init__ docstrings for instances (class docstrings are already
2247 automatically printed). Instances with customized docstrings
2251 automatically printed). Instances with customized docstrings
2248 (indep. of the class) are also recognized and all 3 separate
2252 (indep. of the class) are also recognized and all 3 separate
2249 docstrings are printed (instance, class, constructor). After some
2253 docstrings are printed (instance, class, constructor). After some
2250 comments/suggestions by J. Hunter.
2254 comments/suggestions by J. Hunter.
2251
2255
2252 2004-12-05 Fernando Perez <fperez@colorado.edu>
2256 2004-12-05 Fernando Perez <fperez@colorado.edu>
2253
2257
2254 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2258 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2255 warnings when tab-completion fails and triggers an exception.
2259 warnings when tab-completion fails and triggers an exception.
2256
2260
2257 2004-12-03 Fernando Perez <fperez@colorado.edu>
2261 2004-12-03 Fernando Perez <fperez@colorado.edu>
2258
2262
2259 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2263 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2260 be triggered when using 'run -p'. An incorrect option flag was
2264 be triggered when using 'run -p'. An incorrect option flag was
2261 being set ('d' instead of 'D').
2265 being set ('d' instead of 'D').
2262 (manpage): fix missing escaped \- sign.
2266 (manpage): fix missing escaped \- sign.
2263
2267
2264 2004-11-30 *** Released version 0.6.5
2268 2004-11-30 *** Released version 0.6.5
2265
2269
2266 2004-11-30 Fernando Perez <fperez@colorado.edu>
2270 2004-11-30 Fernando Perez <fperez@colorado.edu>
2267
2271
2268 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2272 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2269 setting with -d option.
2273 setting with -d option.
2270
2274
2271 * setup.py (docfiles): Fix problem where the doc glob I was using
2275 * setup.py (docfiles): Fix problem where the doc glob I was using
2272 was COMPLETELY BROKEN. It was giving the right files by pure
2276 was COMPLETELY BROKEN. It was giving the right files by pure
2273 accident, but failed once I tried to include ipython.el. Note:
2277 accident, but failed once I tried to include ipython.el. Note:
2274 glob() does NOT allow you to do exclusion on multiple endings!
2278 glob() does NOT allow you to do exclusion on multiple endings!
2275
2279
2276 2004-11-29 Fernando Perez <fperez@colorado.edu>
2280 2004-11-29 Fernando Perez <fperez@colorado.edu>
2277
2281
2278 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2282 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2279 the manpage as the source. Better formatting & consistency.
2283 the manpage as the source. Better formatting & consistency.
2280
2284
2281 * IPython/Magic.py (magic_run): Added new -d option, to run
2285 * IPython/Magic.py (magic_run): Added new -d option, to run
2282 scripts under the control of the python pdb debugger. Note that
2286 scripts under the control of the python pdb debugger. Note that
2283 this required changing the %prun option -d to -D, to avoid a clash
2287 this required changing the %prun option -d to -D, to avoid a clash
2284 (since %run must pass options to %prun, and getopt is too dumb to
2288 (since %run must pass options to %prun, and getopt is too dumb to
2285 handle options with string values with embedded spaces). Thanks
2289 handle options with string values with embedded spaces). Thanks
2286 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2290 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2287 (magic_who_ls): added type matching to %who and %whos, so that one
2291 (magic_who_ls): added type matching to %who and %whos, so that one
2288 can filter their output to only include variables of certain
2292 can filter their output to only include variables of certain
2289 types. Another suggestion by Matthew.
2293 types. Another suggestion by Matthew.
2290 (magic_whos): Added memory summaries in kb and Mb for arrays.
2294 (magic_whos): Added memory summaries in kb and Mb for arrays.
2291 (magic_who): Improve formatting (break lines every 9 vars).
2295 (magic_who): Improve formatting (break lines every 9 vars).
2292
2296
2293 2004-11-28 Fernando Perez <fperez@colorado.edu>
2297 2004-11-28 Fernando Perez <fperez@colorado.edu>
2294
2298
2295 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2299 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2296 cache when empty lines were present.
2300 cache when empty lines were present.
2297
2301
2298 2004-11-24 Fernando Perez <fperez@colorado.edu>
2302 2004-11-24 Fernando Perez <fperez@colorado.edu>
2299
2303
2300 * IPython/usage.py (__doc__): document the re-activated threading
2304 * IPython/usage.py (__doc__): document the re-activated threading
2301 options for WX and GTK.
2305 options for WX and GTK.
2302
2306
2303 2004-11-23 Fernando Perez <fperez@colorado.edu>
2307 2004-11-23 Fernando Perez <fperez@colorado.edu>
2304
2308
2305 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2309 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2306 the -wthread and -gthread options, along with a new -tk one to try
2310 the -wthread and -gthread options, along with a new -tk one to try
2307 and coordinate Tk threading with wx/gtk. The tk support is very
2311 and coordinate Tk threading with wx/gtk. The tk support is very
2308 platform dependent, since it seems to require Tcl and Tk to be
2312 platform dependent, since it seems to require Tcl and Tk to be
2309 built with threads (Fedora1/2 appears NOT to have it, but in
2313 built with threads (Fedora1/2 appears NOT to have it, but in
2310 Prabhu's Debian boxes it works OK). But even with some Tk
2314 Prabhu's Debian boxes it works OK). But even with some Tk
2311 limitations, this is a great improvement.
2315 limitations, this is a great improvement.
2312
2316
2313 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2317 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2314 info in user prompts. Patch by Prabhu.
2318 info in user prompts. Patch by Prabhu.
2315
2319
2316 2004-11-18 Fernando Perez <fperez@colorado.edu>
2320 2004-11-18 Fernando Perez <fperez@colorado.edu>
2317
2321
2318 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2322 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2319 EOFErrors and bail, to avoid infinite loops if a non-terminating
2323 EOFErrors and bail, to avoid infinite loops if a non-terminating
2320 file is fed into ipython. Patch submitted in issue 19 by user,
2324 file is fed into ipython. Patch submitted in issue 19 by user,
2321 many thanks.
2325 many thanks.
2322
2326
2323 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2327 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2324 autoquote/parens in continuation prompts, which can cause lots of
2328 autoquote/parens in continuation prompts, which can cause lots of
2325 problems. Closes roundup issue 20.
2329 problems. Closes roundup issue 20.
2326
2330
2327 2004-11-17 Fernando Perez <fperez@colorado.edu>
2331 2004-11-17 Fernando Perez <fperez@colorado.edu>
2328
2332
2329 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2333 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2330 reported as debian bug #280505. I'm not sure my local changelog
2334 reported as debian bug #280505. I'm not sure my local changelog
2331 entry has the proper debian format (Jack?).
2335 entry has the proper debian format (Jack?).
2332
2336
2333 2004-11-08 *** Released version 0.6.4
2337 2004-11-08 *** Released version 0.6.4
2334
2338
2335 2004-11-08 Fernando Perez <fperez@colorado.edu>
2339 2004-11-08 Fernando Perez <fperez@colorado.edu>
2336
2340
2337 * IPython/iplib.py (init_readline): Fix exit message for Windows
2341 * IPython/iplib.py (init_readline): Fix exit message for Windows
2338 when readline is active. Thanks to a report by Eric Jones
2342 when readline is active. Thanks to a report by Eric Jones
2339 <eric-AT-enthought.com>.
2343 <eric-AT-enthought.com>.
2340
2344
2341 2004-11-07 Fernando Perez <fperez@colorado.edu>
2345 2004-11-07 Fernando Perez <fperez@colorado.edu>
2342
2346
2343 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2347 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2344 sometimes seen by win2k/cygwin users.
2348 sometimes seen by win2k/cygwin users.
2345
2349
2346 2004-11-06 Fernando Perez <fperez@colorado.edu>
2350 2004-11-06 Fernando Perez <fperez@colorado.edu>
2347
2351
2348 * IPython/iplib.py (interact): Change the handling of %Exit from
2352 * IPython/iplib.py (interact): Change the handling of %Exit from
2349 trying to propagate a SystemExit to an internal ipython flag.
2353 trying to propagate a SystemExit to an internal ipython flag.
2350 This is less elegant than using Python's exception mechanism, but
2354 This is less elegant than using Python's exception mechanism, but
2351 I can't get that to work reliably with threads, so under -pylab
2355 I can't get that to work reliably with threads, so under -pylab
2352 %Exit was hanging IPython. Cross-thread exception handling is
2356 %Exit was hanging IPython. Cross-thread exception handling is
2353 really a bitch. Thaks to a bug report by Stephen Walton
2357 really a bitch. Thaks to a bug report by Stephen Walton
2354 <stephen.walton-AT-csun.edu>.
2358 <stephen.walton-AT-csun.edu>.
2355
2359
2356 2004-11-04 Fernando Perez <fperez@colorado.edu>
2360 2004-11-04 Fernando Perez <fperez@colorado.edu>
2357
2361
2358 * IPython/iplib.py (raw_input_original): store a pointer to the
2362 * IPython/iplib.py (raw_input_original): store a pointer to the
2359 true raw_input to harden against code which can modify it
2363 true raw_input to harden against code which can modify it
2360 (wx.py.PyShell does this and would otherwise crash ipython).
2364 (wx.py.PyShell does this and would otherwise crash ipython).
2361 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2365 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2362
2366
2363 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2367 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2364 Ctrl-C problem, which does not mess up the input line.
2368 Ctrl-C problem, which does not mess up the input line.
2365
2369
2366 2004-11-03 Fernando Perez <fperez@colorado.edu>
2370 2004-11-03 Fernando Perez <fperez@colorado.edu>
2367
2371
2368 * IPython/Release.py: Changed licensing to BSD, in all files.
2372 * IPython/Release.py: Changed licensing to BSD, in all files.
2369 (name): lowercase name for tarball/RPM release.
2373 (name): lowercase name for tarball/RPM release.
2370
2374
2371 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2375 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2372 use throughout ipython.
2376 use throughout ipython.
2373
2377
2374 * IPython/Magic.py (Magic._ofind): Switch to using the new
2378 * IPython/Magic.py (Magic._ofind): Switch to using the new
2375 OInspect.getdoc() function.
2379 OInspect.getdoc() function.
2376
2380
2377 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2381 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2378 of the line currently being canceled via Ctrl-C. It's extremely
2382 of the line currently being canceled via Ctrl-C. It's extremely
2379 ugly, but I don't know how to do it better (the problem is one of
2383 ugly, but I don't know how to do it better (the problem is one of
2380 handling cross-thread exceptions).
2384 handling cross-thread exceptions).
2381
2385
2382 2004-10-28 Fernando Perez <fperez@colorado.edu>
2386 2004-10-28 Fernando Perez <fperez@colorado.edu>
2383
2387
2384 * IPython/Shell.py (signal_handler): add signal handlers to trap
2388 * IPython/Shell.py (signal_handler): add signal handlers to trap
2385 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2389 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2386 report by Francesc Alted.
2390 report by Francesc Alted.
2387
2391
2388 2004-10-21 Fernando Perez <fperez@colorado.edu>
2392 2004-10-21 Fernando Perez <fperez@colorado.edu>
2389
2393
2390 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2394 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2391 to % for pysh syntax extensions.
2395 to % for pysh syntax extensions.
2392
2396
2393 2004-10-09 Fernando Perez <fperez@colorado.edu>
2397 2004-10-09 Fernando Perez <fperez@colorado.edu>
2394
2398
2395 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2399 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2396 arrays to print a more useful summary, without calling str(arr).
2400 arrays to print a more useful summary, without calling str(arr).
2397 This avoids the problem of extremely lengthy computations which
2401 This avoids the problem of extremely lengthy computations which
2398 occur if arr is large, and appear to the user as a system lockup
2402 occur if arr is large, and appear to the user as a system lockup
2399 with 100% cpu activity. After a suggestion by Kristian Sandberg
2403 with 100% cpu activity. After a suggestion by Kristian Sandberg
2400 <Kristian.Sandberg@colorado.edu>.
2404 <Kristian.Sandberg@colorado.edu>.
2401 (Magic.__init__): fix bug in global magic escapes not being
2405 (Magic.__init__): fix bug in global magic escapes not being
2402 correctly set.
2406 correctly set.
2403
2407
2404 2004-10-08 Fernando Perez <fperez@colorado.edu>
2408 2004-10-08 Fernando Perez <fperez@colorado.edu>
2405
2409
2406 * IPython/Magic.py (__license__): change to absolute imports of
2410 * IPython/Magic.py (__license__): change to absolute imports of
2407 ipython's own internal packages, to start adapting to the absolute
2411 ipython's own internal packages, to start adapting to the absolute
2408 import requirement of PEP-328.
2412 import requirement of PEP-328.
2409
2413
2410 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2414 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2411 files, and standardize author/license marks through the Release
2415 files, and standardize author/license marks through the Release
2412 module instead of having per/file stuff (except for files with
2416 module instead of having per/file stuff (except for files with
2413 particular licenses, like the MIT/PSF-licensed codes).
2417 particular licenses, like the MIT/PSF-licensed codes).
2414
2418
2415 * IPython/Debugger.py: remove dead code for python 2.1
2419 * IPython/Debugger.py: remove dead code for python 2.1
2416
2420
2417 2004-10-04 Fernando Perez <fperez@colorado.edu>
2421 2004-10-04 Fernando Perez <fperez@colorado.edu>
2418
2422
2419 * IPython/iplib.py (ipmagic): New function for accessing magics
2423 * IPython/iplib.py (ipmagic): New function for accessing magics
2420 via a normal python function call.
2424 via a normal python function call.
2421
2425
2422 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2426 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2423 from '@' to '%', to accomodate the new @decorator syntax of python
2427 from '@' to '%', to accomodate the new @decorator syntax of python
2424 2.4.
2428 2.4.
2425
2429
2426 2004-09-29 Fernando Perez <fperez@colorado.edu>
2430 2004-09-29 Fernando Perez <fperez@colorado.edu>
2427
2431
2428 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2432 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2429 matplotlib.use to prevent running scripts which try to switch
2433 matplotlib.use to prevent running scripts which try to switch
2430 interactive backends from within ipython. This will just crash
2434 interactive backends from within ipython. This will just crash
2431 the python interpreter, so we can't allow it (but a detailed error
2435 the python interpreter, so we can't allow it (but a detailed error
2432 is given to the user).
2436 is given to the user).
2433
2437
2434 2004-09-28 Fernando Perez <fperez@colorado.edu>
2438 2004-09-28 Fernando Perez <fperez@colorado.edu>
2435
2439
2436 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2440 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2437 matplotlib-related fixes so that using @run with non-matplotlib
2441 matplotlib-related fixes so that using @run with non-matplotlib
2438 scripts doesn't pop up spurious plot windows. This requires
2442 scripts doesn't pop up spurious plot windows. This requires
2439 matplotlib >= 0.63, where I had to make some changes as well.
2443 matplotlib >= 0.63, where I had to make some changes as well.
2440
2444
2441 * IPython/ipmaker.py (make_IPython): update version requirement to
2445 * IPython/ipmaker.py (make_IPython): update version requirement to
2442 python 2.2.
2446 python 2.2.
2443
2447
2444 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2448 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2445 banner arg for embedded customization.
2449 banner arg for embedded customization.
2446
2450
2447 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2451 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2448 explicit uses of __IP as the IPython's instance name. Now things
2452 explicit uses of __IP as the IPython's instance name. Now things
2449 are properly handled via the shell.name value. The actual code
2453 are properly handled via the shell.name value. The actual code
2450 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2454 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2451 is much better than before. I'll clean things completely when the
2455 is much better than before. I'll clean things completely when the
2452 magic stuff gets a real overhaul.
2456 magic stuff gets a real overhaul.
2453
2457
2454 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2458 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2455 minor changes to debian dir.
2459 minor changes to debian dir.
2456
2460
2457 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2461 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2458 pointer to the shell itself in the interactive namespace even when
2462 pointer to the shell itself in the interactive namespace even when
2459 a user-supplied dict is provided. This is needed for embedding
2463 a user-supplied dict is provided. This is needed for embedding
2460 purposes (found by tests with Michel Sanner).
2464 purposes (found by tests with Michel Sanner).
2461
2465
2462 2004-09-27 Fernando Perez <fperez@colorado.edu>
2466 2004-09-27 Fernando Perez <fperez@colorado.edu>
2463
2467
2464 * IPython/UserConfig/ipythonrc: remove []{} from
2468 * IPython/UserConfig/ipythonrc: remove []{} from
2465 readline_remove_delims, so that things like [modname.<TAB> do
2469 readline_remove_delims, so that things like [modname.<TAB> do
2466 proper completion. This disables [].TAB, but that's a less common
2470 proper completion. This disables [].TAB, but that's a less common
2467 case than module names in list comprehensions, for example.
2471 case than module names in list comprehensions, for example.
2468 Thanks to a report by Andrea Riciputi.
2472 Thanks to a report by Andrea Riciputi.
2469
2473
2470 2004-09-09 Fernando Perez <fperez@colorado.edu>
2474 2004-09-09 Fernando Perez <fperez@colorado.edu>
2471
2475
2472 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2476 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2473 blocking problems in win32 and osx. Fix by John.
2477 blocking problems in win32 and osx. Fix by John.
2474
2478
2475 2004-09-08 Fernando Perez <fperez@colorado.edu>
2479 2004-09-08 Fernando Perez <fperez@colorado.edu>
2476
2480
2477 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2481 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2478 for Win32 and OSX. Fix by John Hunter.
2482 for Win32 and OSX. Fix by John Hunter.
2479
2483
2480 2004-08-30 *** Released version 0.6.3
2484 2004-08-30 *** Released version 0.6.3
2481
2485
2482 2004-08-30 Fernando Perez <fperez@colorado.edu>
2486 2004-08-30 Fernando Perez <fperez@colorado.edu>
2483
2487
2484 * setup.py (isfile): Add manpages to list of dependent files to be
2488 * setup.py (isfile): Add manpages to list of dependent files to be
2485 updated.
2489 updated.
2486
2490
2487 2004-08-27 Fernando Perez <fperez@colorado.edu>
2491 2004-08-27 Fernando Perez <fperez@colorado.edu>
2488
2492
2489 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2493 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2490 for now. They don't really work with standalone WX/GTK code
2494 for now. They don't really work with standalone WX/GTK code
2491 (though matplotlib IS working fine with both of those backends).
2495 (though matplotlib IS working fine with both of those backends).
2492 This will neeed much more testing. I disabled most things with
2496 This will neeed much more testing. I disabled most things with
2493 comments, so turning it back on later should be pretty easy.
2497 comments, so turning it back on later should be pretty easy.
2494
2498
2495 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2499 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2496 autocalling of expressions like r'foo', by modifying the line
2500 autocalling of expressions like r'foo', by modifying the line
2497 split regexp. Closes
2501 split regexp. Closes
2498 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2502 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2499 Riley <ipythonbugs-AT-sabi.net>.
2503 Riley <ipythonbugs-AT-sabi.net>.
2500 (InteractiveShell.mainloop): honor --nobanner with banner
2504 (InteractiveShell.mainloop): honor --nobanner with banner
2501 extensions.
2505 extensions.
2502
2506
2503 * IPython/Shell.py: Significant refactoring of all classes, so
2507 * IPython/Shell.py: Significant refactoring of all classes, so
2504 that we can really support ALL matplotlib backends and threading
2508 that we can really support ALL matplotlib backends and threading
2505 models (John spotted a bug with Tk which required this). Now we
2509 models (John spotted a bug with Tk which required this). Now we
2506 should support single-threaded, WX-threads and GTK-threads, both
2510 should support single-threaded, WX-threads and GTK-threads, both
2507 for generic code and for matplotlib.
2511 for generic code and for matplotlib.
2508
2512
2509 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2513 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2510 -pylab, to simplify things for users. Will also remove the pylab
2514 -pylab, to simplify things for users. Will also remove the pylab
2511 profile, since now all of matplotlib configuration is directly
2515 profile, since now all of matplotlib configuration is directly
2512 handled here. This also reduces startup time.
2516 handled here. This also reduces startup time.
2513
2517
2514 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2518 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2515 shell wasn't being correctly called. Also in IPShellWX.
2519 shell wasn't being correctly called. Also in IPShellWX.
2516
2520
2517 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2521 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2518 fine-tune banner.
2522 fine-tune banner.
2519
2523
2520 * IPython/numutils.py (spike): Deprecate these spike functions,
2524 * IPython/numutils.py (spike): Deprecate these spike functions,
2521 delete (long deprecated) gnuplot_exec handler.
2525 delete (long deprecated) gnuplot_exec handler.
2522
2526
2523 2004-08-26 Fernando Perez <fperez@colorado.edu>
2527 2004-08-26 Fernando Perez <fperez@colorado.edu>
2524
2528
2525 * ipython.1: Update for threading options, plus some others which
2529 * ipython.1: Update for threading options, plus some others which
2526 were missing.
2530 were missing.
2527
2531
2528 * IPython/ipmaker.py (__call__): Added -wthread option for
2532 * IPython/ipmaker.py (__call__): Added -wthread option for
2529 wxpython thread handling. Make sure threading options are only
2533 wxpython thread handling. Make sure threading options are only
2530 valid at the command line.
2534 valid at the command line.
2531
2535
2532 * scripts/ipython: moved shell selection into a factory function
2536 * scripts/ipython: moved shell selection into a factory function
2533 in Shell.py, to keep the starter script to a minimum.
2537 in Shell.py, to keep the starter script to a minimum.
2534
2538
2535 2004-08-25 Fernando Perez <fperez@colorado.edu>
2539 2004-08-25 Fernando Perez <fperez@colorado.edu>
2536
2540
2537 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2541 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2538 John. Along with some recent changes he made to matplotlib, the
2542 John. Along with some recent changes he made to matplotlib, the
2539 next versions of both systems should work very well together.
2543 next versions of both systems should work very well together.
2540
2544
2541 2004-08-24 Fernando Perez <fperez@colorado.edu>
2545 2004-08-24 Fernando Perez <fperez@colorado.edu>
2542
2546
2543 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2547 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2544 tried to switch the profiling to using hotshot, but I'm getting
2548 tried to switch the profiling to using hotshot, but I'm getting
2545 strange errors from prof.runctx() there. I may be misreading the
2549 strange errors from prof.runctx() there. I may be misreading the
2546 docs, but it looks weird. For now the profiling code will
2550 docs, but it looks weird. For now the profiling code will
2547 continue to use the standard profiler.
2551 continue to use the standard profiler.
2548
2552
2549 2004-08-23 Fernando Perez <fperez@colorado.edu>
2553 2004-08-23 Fernando Perez <fperez@colorado.edu>
2550
2554
2551 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2555 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2552 threaded shell, by John Hunter. It's not quite ready yet, but
2556 threaded shell, by John Hunter. It's not quite ready yet, but
2553 close.
2557 close.
2554
2558
2555 2004-08-22 Fernando Perez <fperez@colorado.edu>
2559 2004-08-22 Fernando Perez <fperez@colorado.edu>
2556
2560
2557 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2561 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2558 in Magic and ultraTB.
2562 in Magic and ultraTB.
2559
2563
2560 * ipython.1: document threading options in manpage.
2564 * ipython.1: document threading options in manpage.
2561
2565
2562 * scripts/ipython: Changed name of -thread option to -gthread,
2566 * scripts/ipython: Changed name of -thread option to -gthread,
2563 since this is GTK specific. I want to leave the door open for a
2567 since this is GTK specific. I want to leave the door open for a
2564 -wthread option for WX, which will most likely be necessary. This
2568 -wthread option for WX, which will most likely be necessary. This
2565 change affects usage and ipmaker as well.
2569 change affects usage and ipmaker as well.
2566
2570
2567 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2571 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2568 handle the matplotlib shell issues. Code by John Hunter
2572 handle the matplotlib shell issues. Code by John Hunter
2569 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2573 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2570 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2574 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2571 broken (and disabled for end users) for now, but it puts the
2575 broken (and disabled for end users) for now, but it puts the
2572 infrastructure in place.
2576 infrastructure in place.
2573
2577
2574 2004-08-21 Fernando Perez <fperez@colorado.edu>
2578 2004-08-21 Fernando Perez <fperez@colorado.edu>
2575
2579
2576 * ipythonrc-pylab: Add matplotlib support.
2580 * ipythonrc-pylab: Add matplotlib support.
2577
2581
2578 * matplotlib_config.py: new files for matplotlib support, part of
2582 * matplotlib_config.py: new files for matplotlib support, part of
2579 the pylab profile.
2583 the pylab profile.
2580
2584
2581 * IPython/usage.py (__doc__): documented the threading options.
2585 * IPython/usage.py (__doc__): documented the threading options.
2582
2586
2583 2004-08-20 Fernando Perez <fperez@colorado.edu>
2587 2004-08-20 Fernando Perez <fperez@colorado.edu>
2584
2588
2585 * ipython: Modified the main calling routine to handle the -thread
2589 * ipython: Modified the main calling routine to handle the -thread
2586 and -mpthread options. This needs to be done as a top-level hack,
2590 and -mpthread options. This needs to be done as a top-level hack,
2587 because it determines which class to instantiate for IPython
2591 because it determines which class to instantiate for IPython
2588 itself.
2592 itself.
2589
2593
2590 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2594 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2591 classes to support multithreaded GTK operation without blocking,
2595 classes to support multithreaded GTK operation without blocking,
2592 and matplotlib with all backends. This is a lot of still very
2596 and matplotlib with all backends. This is a lot of still very
2593 experimental code, and threads are tricky. So it may still have a
2597 experimental code, and threads are tricky. So it may still have a
2594 few rough edges... This code owes a lot to
2598 few rough edges... This code owes a lot to
2595 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2599 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2596 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2600 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2597 to John Hunter for all the matplotlib work.
2601 to John Hunter for all the matplotlib work.
2598
2602
2599 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2603 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2600 options for gtk thread and matplotlib support.
2604 options for gtk thread and matplotlib support.
2601
2605
2602 2004-08-16 Fernando Perez <fperez@colorado.edu>
2606 2004-08-16 Fernando Perez <fperez@colorado.edu>
2603
2607
2604 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2608 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2605 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2609 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2606 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2610 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2607
2611
2608 2004-08-11 Fernando Perez <fperez@colorado.edu>
2612 2004-08-11 Fernando Perez <fperez@colorado.edu>
2609
2613
2610 * setup.py (isfile): Fix build so documentation gets updated for
2614 * setup.py (isfile): Fix build so documentation gets updated for
2611 rpms (it was only done for .tgz builds).
2615 rpms (it was only done for .tgz builds).
2612
2616
2613 2004-08-10 Fernando Perez <fperez@colorado.edu>
2617 2004-08-10 Fernando Perez <fperez@colorado.edu>
2614
2618
2615 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2619 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2616
2620
2617 * iplib.py : Silence syntax error exceptions in tab-completion.
2621 * iplib.py : Silence syntax error exceptions in tab-completion.
2618
2622
2619 2004-08-05 Fernando Perez <fperez@colorado.edu>
2623 2004-08-05 Fernando Perez <fperez@colorado.edu>
2620
2624
2621 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2625 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2622 'color off' mark for continuation prompts. This was causing long
2626 'color off' mark for continuation prompts. This was causing long
2623 continuation lines to mis-wrap.
2627 continuation lines to mis-wrap.
2624
2628
2625 2004-08-01 Fernando Perez <fperez@colorado.edu>
2629 2004-08-01 Fernando Perez <fperez@colorado.edu>
2626
2630
2627 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2631 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2628 for building ipython to be a parameter. All this is necessary
2632 for building ipython to be a parameter. All this is necessary
2629 right now to have a multithreaded version, but this insane
2633 right now to have a multithreaded version, but this insane
2630 non-design will be cleaned up soon. For now, it's a hack that
2634 non-design will be cleaned up soon. For now, it's a hack that
2631 works.
2635 works.
2632
2636
2633 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2637 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2634 args in various places. No bugs so far, but it's a dangerous
2638 args in various places. No bugs so far, but it's a dangerous
2635 practice.
2639 practice.
2636
2640
2637 2004-07-31 Fernando Perez <fperez@colorado.edu>
2641 2004-07-31 Fernando Perez <fperez@colorado.edu>
2638
2642
2639 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2643 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2640 fix completion of files with dots in their names under most
2644 fix completion of files with dots in their names under most
2641 profiles (pysh was OK because the completion order is different).
2645 profiles (pysh was OK because the completion order is different).
2642
2646
2643 2004-07-27 Fernando Perez <fperez@colorado.edu>
2647 2004-07-27 Fernando Perez <fperez@colorado.edu>
2644
2648
2645 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2649 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2646 keywords manually, b/c the one in keyword.py was removed in python
2650 keywords manually, b/c the one in keyword.py was removed in python
2647 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2651 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2648 This is NOT a bug under python 2.3 and earlier.
2652 This is NOT a bug under python 2.3 and earlier.
2649
2653
2650 2004-07-26 Fernando Perez <fperez@colorado.edu>
2654 2004-07-26 Fernando Perez <fperez@colorado.edu>
2651
2655
2652 * IPython/ultraTB.py (VerboseTB.text): Add another
2656 * IPython/ultraTB.py (VerboseTB.text): Add another
2653 linecache.checkcache() call to try to prevent inspect.py from
2657 linecache.checkcache() call to try to prevent inspect.py from
2654 crashing under python 2.3. I think this fixes
2658 crashing under python 2.3. I think this fixes
2655 http://www.scipy.net/roundup/ipython/issue17.
2659 http://www.scipy.net/roundup/ipython/issue17.
2656
2660
2657 2004-07-26 *** Released version 0.6.2
2661 2004-07-26 *** Released version 0.6.2
2658
2662
2659 2004-07-26 Fernando Perez <fperez@colorado.edu>
2663 2004-07-26 Fernando Perez <fperez@colorado.edu>
2660
2664
2661 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2665 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2662 fail for any number.
2666 fail for any number.
2663 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2667 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2664 empty bookmarks.
2668 empty bookmarks.
2665
2669
2666 2004-07-26 *** Released version 0.6.1
2670 2004-07-26 *** Released version 0.6.1
2667
2671
2668 2004-07-26 Fernando Perez <fperez@colorado.edu>
2672 2004-07-26 Fernando Perez <fperez@colorado.edu>
2669
2673
2670 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2674 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2671
2675
2672 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2676 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2673 escaping '()[]{}' in filenames.
2677 escaping '()[]{}' in filenames.
2674
2678
2675 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2679 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2676 Python 2.2 users who lack a proper shlex.split.
2680 Python 2.2 users who lack a proper shlex.split.
2677
2681
2678 2004-07-19 Fernando Perez <fperez@colorado.edu>
2682 2004-07-19 Fernando Perez <fperez@colorado.edu>
2679
2683
2680 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2684 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2681 for reading readline's init file. I follow the normal chain:
2685 for reading readline's init file. I follow the normal chain:
2682 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2686 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2683 report by Mike Heeter. This closes
2687 report by Mike Heeter. This closes
2684 http://www.scipy.net/roundup/ipython/issue16.
2688 http://www.scipy.net/roundup/ipython/issue16.
2685
2689
2686 2004-07-18 Fernando Perez <fperez@colorado.edu>
2690 2004-07-18 Fernando Perez <fperez@colorado.edu>
2687
2691
2688 * IPython/iplib.py (__init__): Add better handling of '\' under
2692 * IPython/iplib.py (__init__): Add better handling of '\' under
2689 Win32 for filenames. After a patch by Ville.
2693 Win32 for filenames. After a patch by Ville.
2690
2694
2691 2004-07-17 Fernando Perez <fperez@colorado.edu>
2695 2004-07-17 Fernando Perez <fperez@colorado.edu>
2692
2696
2693 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2697 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2694 autocalling would be triggered for 'foo is bar' if foo is
2698 autocalling would be triggered for 'foo is bar' if foo is
2695 callable. I also cleaned up the autocall detection code to use a
2699 callable. I also cleaned up the autocall detection code to use a
2696 regexp, which is faster. Bug reported by Alexander Schmolck.
2700 regexp, which is faster. Bug reported by Alexander Schmolck.
2697
2701
2698 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2702 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2699 '?' in them would confuse the help system. Reported by Alex
2703 '?' in them would confuse the help system. Reported by Alex
2700 Schmolck.
2704 Schmolck.
2701
2705
2702 2004-07-16 Fernando Perez <fperez@colorado.edu>
2706 2004-07-16 Fernando Perez <fperez@colorado.edu>
2703
2707
2704 * IPython/GnuplotInteractive.py (__all__): added plot2.
2708 * IPython/GnuplotInteractive.py (__all__): added plot2.
2705
2709
2706 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2710 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2707 plotting dictionaries, lists or tuples of 1d arrays.
2711 plotting dictionaries, lists or tuples of 1d arrays.
2708
2712
2709 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2713 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2710 optimizations.
2714 optimizations.
2711
2715
2712 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2716 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2713 the information which was there from Janko's original IPP code:
2717 the information which was there from Janko's original IPP code:
2714
2718
2715 03.05.99 20:53 porto.ifm.uni-kiel.de
2719 03.05.99 20:53 porto.ifm.uni-kiel.de
2716 --Started changelog.
2720 --Started changelog.
2717 --make clear do what it say it does
2721 --make clear do what it say it does
2718 --added pretty output of lines from inputcache
2722 --added pretty output of lines from inputcache
2719 --Made Logger a mixin class, simplifies handling of switches
2723 --Made Logger a mixin class, simplifies handling of switches
2720 --Added own completer class. .string<TAB> expands to last history
2724 --Added own completer class. .string<TAB> expands to last history
2721 line which starts with string. The new expansion is also present
2725 line which starts with string. The new expansion is also present
2722 with Ctrl-r from the readline library. But this shows, who this
2726 with Ctrl-r from the readline library. But this shows, who this
2723 can be done for other cases.
2727 can be done for other cases.
2724 --Added convention that all shell functions should accept a
2728 --Added convention that all shell functions should accept a
2725 parameter_string This opens the door for different behaviour for
2729 parameter_string This opens the door for different behaviour for
2726 each function. @cd is a good example of this.
2730 each function. @cd is a good example of this.
2727
2731
2728 04.05.99 12:12 porto.ifm.uni-kiel.de
2732 04.05.99 12:12 porto.ifm.uni-kiel.de
2729 --added logfile rotation
2733 --added logfile rotation
2730 --added new mainloop method which freezes first the namespace
2734 --added new mainloop method which freezes first the namespace
2731
2735
2732 07.05.99 21:24 porto.ifm.uni-kiel.de
2736 07.05.99 21:24 porto.ifm.uni-kiel.de
2733 --added the docreader classes. Now there is a help system.
2737 --added the docreader classes. Now there is a help system.
2734 -This is only a first try. Currently it's not easy to put new
2738 -This is only a first try. Currently it's not easy to put new
2735 stuff in the indices. But this is the way to go. Info would be
2739 stuff in the indices. But this is the way to go. Info would be
2736 better, but HTML is every where and not everybody has an info
2740 better, but HTML is every where and not everybody has an info
2737 system installed and it's not so easy to change html-docs to info.
2741 system installed and it's not so easy to change html-docs to info.
2738 --added global logfile option
2742 --added global logfile option
2739 --there is now a hook for object inspection method pinfo needs to
2743 --there is now a hook for object inspection method pinfo needs to
2740 be provided for this. Can be reached by two '??'.
2744 be provided for this. Can be reached by two '??'.
2741
2745
2742 08.05.99 20:51 porto.ifm.uni-kiel.de
2746 08.05.99 20:51 porto.ifm.uni-kiel.de
2743 --added a README
2747 --added a README
2744 --bug in rc file. Something has changed so functions in the rc
2748 --bug in rc file. Something has changed so functions in the rc
2745 file need to reference the shell and not self. Not clear if it's a
2749 file need to reference the shell and not self. Not clear if it's a
2746 bug or feature.
2750 bug or feature.
2747 --changed rc file for new behavior
2751 --changed rc file for new behavior
2748
2752
2749 2004-07-15 Fernando Perez <fperez@colorado.edu>
2753 2004-07-15 Fernando Perez <fperez@colorado.edu>
2750
2754
2751 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2755 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2752 cache was falling out of sync in bizarre manners when multi-line
2756 cache was falling out of sync in bizarre manners when multi-line
2753 input was present. Minor optimizations and cleanup.
2757 input was present. Minor optimizations and cleanup.
2754
2758
2755 (Logger): Remove old Changelog info for cleanup. This is the
2759 (Logger): Remove old Changelog info for cleanup. This is the
2756 information which was there from Janko's original code:
2760 information which was there from Janko's original code:
2757
2761
2758 Changes to Logger: - made the default log filename a parameter
2762 Changes to Logger: - made the default log filename a parameter
2759
2763
2760 - put a check for lines beginning with !@? in log(). Needed
2764 - put a check for lines beginning with !@? in log(). Needed
2761 (even if the handlers properly log their lines) for mid-session
2765 (even if the handlers properly log their lines) for mid-session
2762 logging activation to work properly. Without this, lines logged
2766 logging activation to work properly. Without this, lines logged
2763 in mid session, which get read from the cache, would end up
2767 in mid session, which get read from the cache, would end up
2764 'bare' (with !@? in the open) in the log. Now they are caught
2768 'bare' (with !@? in the open) in the log. Now they are caught
2765 and prepended with a #.
2769 and prepended with a #.
2766
2770
2767 * IPython/iplib.py (InteractiveShell.init_readline): added check
2771 * IPython/iplib.py (InteractiveShell.init_readline): added check
2768 in case MagicCompleter fails to be defined, so we don't crash.
2772 in case MagicCompleter fails to be defined, so we don't crash.
2769
2773
2770 2004-07-13 Fernando Perez <fperez@colorado.edu>
2774 2004-07-13 Fernando Perez <fperez@colorado.edu>
2771
2775
2772 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2776 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2773 of EPS if the requested filename ends in '.eps'.
2777 of EPS if the requested filename ends in '.eps'.
2774
2778
2775 2004-07-04 Fernando Perez <fperez@colorado.edu>
2779 2004-07-04 Fernando Perez <fperez@colorado.edu>
2776
2780
2777 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2781 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2778 escaping of quotes when calling the shell.
2782 escaping of quotes when calling the shell.
2779
2783
2780 2004-07-02 Fernando Perez <fperez@colorado.edu>
2784 2004-07-02 Fernando Perez <fperez@colorado.edu>
2781
2785
2782 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2786 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2783 gettext not working because we were clobbering '_'. Fixes
2787 gettext not working because we were clobbering '_'. Fixes
2784 http://www.scipy.net/roundup/ipython/issue6.
2788 http://www.scipy.net/roundup/ipython/issue6.
2785
2789
2786 2004-07-01 Fernando Perez <fperez@colorado.edu>
2790 2004-07-01 Fernando Perez <fperez@colorado.edu>
2787
2791
2788 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2792 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2789 into @cd. Patch by Ville.
2793 into @cd. Patch by Ville.
2790
2794
2791 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2795 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2792 new function to store things after ipmaker runs. Patch by Ville.
2796 new function to store things after ipmaker runs. Patch by Ville.
2793 Eventually this will go away once ipmaker is removed and the class
2797 Eventually this will go away once ipmaker is removed and the class
2794 gets cleaned up, but for now it's ok. Key functionality here is
2798 gets cleaned up, but for now it's ok. Key functionality here is
2795 the addition of the persistent storage mechanism, a dict for
2799 the addition of the persistent storage mechanism, a dict for
2796 keeping data across sessions (for now just bookmarks, but more can
2800 keeping data across sessions (for now just bookmarks, but more can
2797 be implemented later).
2801 be implemented later).
2798
2802
2799 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2803 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2800 persistent across sections. Patch by Ville, I modified it
2804 persistent across sections. Patch by Ville, I modified it
2801 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2805 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2802 added a '-l' option to list all bookmarks.
2806 added a '-l' option to list all bookmarks.
2803
2807
2804 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2808 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2805 center for cleanup. Registered with atexit.register(). I moved
2809 center for cleanup. Registered with atexit.register(). I moved
2806 here the old exit_cleanup(). After a patch by Ville.
2810 here the old exit_cleanup(). After a patch by Ville.
2807
2811
2808 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2812 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2809 characters in the hacked shlex_split for python 2.2.
2813 characters in the hacked shlex_split for python 2.2.
2810
2814
2811 * IPython/iplib.py (file_matches): more fixes to filenames with
2815 * IPython/iplib.py (file_matches): more fixes to filenames with
2812 whitespace in them. It's not perfect, but limitations in python's
2816 whitespace in them. It's not perfect, but limitations in python's
2813 readline make it impossible to go further.
2817 readline make it impossible to go further.
2814
2818
2815 2004-06-29 Fernando Perez <fperez@colorado.edu>
2819 2004-06-29 Fernando Perez <fperez@colorado.edu>
2816
2820
2817 * IPython/iplib.py (file_matches): escape whitespace correctly in
2821 * IPython/iplib.py (file_matches): escape whitespace correctly in
2818 filename completions. Bug reported by Ville.
2822 filename completions. Bug reported by Ville.
2819
2823
2820 2004-06-28 Fernando Perez <fperez@colorado.edu>
2824 2004-06-28 Fernando Perez <fperez@colorado.edu>
2821
2825
2822 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2826 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2823 the history file will be called 'history-PROFNAME' (or just
2827 the history file will be called 'history-PROFNAME' (or just
2824 'history' if no profile is loaded). I was getting annoyed at
2828 'history' if no profile is loaded). I was getting annoyed at
2825 getting my Numerical work history clobbered by pysh sessions.
2829 getting my Numerical work history clobbered by pysh sessions.
2826
2830
2827 * IPython/iplib.py (InteractiveShell.__init__): Internal
2831 * IPython/iplib.py (InteractiveShell.__init__): Internal
2828 getoutputerror() function so that we can honor the system_verbose
2832 getoutputerror() function so that we can honor the system_verbose
2829 flag for _all_ system calls. I also added escaping of #
2833 flag for _all_ system calls. I also added escaping of #
2830 characters here to avoid confusing Itpl.
2834 characters here to avoid confusing Itpl.
2831
2835
2832 * IPython/Magic.py (shlex_split): removed call to shell in
2836 * IPython/Magic.py (shlex_split): removed call to shell in
2833 parse_options and replaced it with shlex.split(). The annoying
2837 parse_options and replaced it with shlex.split(). The annoying
2834 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2838 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2835 to backport it from 2.3, with several frail hacks (the shlex
2839 to backport it from 2.3, with several frail hacks (the shlex
2836 module is rather limited in 2.2). Thanks to a suggestion by Ville
2840 module is rather limited in 2.2). Thanks to a suggestion by Ville
2837 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2841 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2838 problem.
2842 problem.
2839
2843
2840 (Magic.magic_system_verbose): new toggle to print the actual
2844 (Magic.magic_system_verbose): new toggle to print the actual
2841 system calls made by ipython. Mainly for debugging purposes.
2845 system calls made by ipython. Mainly for debugging purposes.
2842
2846
2843 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2847 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2844 doesn't support persistence. Reported (and fix suggested) by
2848 doesn't support persistence. Reported (and fix suggested) by
2845 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2849 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2846
2850
2847 2004-06-26 Fernando Perez <fperez@colorado.edu>
2851 2004-06-26 Fernando Perez <fperez@colorado.edu>
2848
2852
2849 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2853 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2850 continue prompts.
2854 continue prompts.
2851
2855
2852 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2856 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2853 function (basically a big docstring) and a few more things here to
2857 function (basically a big docstring) and a few more things here to
2854 speedup startup. pysh.py is now very lightweight. We want because
2858 speedup startup. pysh.py is now very lightweight. We want because
2855 it gets execfile'd, while InterpreterExec gets imported, so
2859 it gets execfile'd, while InterpreterExec gets imported, so
2856 byte-compilation saves time.
2860 byte-compilation saves time.
2857
2861
2858 2004-06-25 Fernando Perez <fperez@colorado.edu>
2862 2004-06-25 Fernando Perez <fperez@colorado.edu>
2859
2863
2860 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2864 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2861 -NUM', which was recently broken.
2865 -NUM', which was recently broken.
2862
2866
2863 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2867 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2864 in multi-line input (but not !!, which doesn't make sense there).
2868 in multi-line input (but not !!, which doesn't make sense there).
2865
2869
2866 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2870 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2867 It's just too useful, and people can turn it off in the less
2871 It's just too useful, and people can turn it off in the less
2868 common cases where it's a problem.
2872 common cases where it's a problem.
2869
2873
2870 2004-06-24 Fernando Perez <fperez@colorado.edu>
2874 2004-06-24 Fernando Perez <fperez@colorado.edu>
2871
2875
2872 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2876 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2873 special syntaxes (like alias calling) is now allied in multi-line
2877 special syntaxes (like alias calling) is now allied in multi-line
2874 input. This is still _very_ experimental, but it's necessary for
2878 input. This is still _very_ experimental, but it's necessary for
2875 efficient shell usage combining python looping syntax with system
2879 efficient shell usage combining python looping syntax with system
2876 calls. For now it's restricted to aliases, I don't think it
2880 calls. For now it's restricted to aliases, I don't think it
2877 really even makes sense to have this for magics.
2881 really even makes sense to have this for magics.
2878
2882
2879 2004-06-23 Fernando Perez <fperez@colorado.edu>
2883 2004-06-23 Fernando Perez <fperez@colorado.edu>
2880
2884
2881 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2885 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2882 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2886 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2883
2887
2884 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2888 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2885 extensions under Windows (after code sent by Gary Bishop). The
2889 extensions under Windows (after code sent by Gary Bishop). The
2886 extensions considered 'executable' are stored in IPython's rc
2890 extensions considered 'executable' are stored in IPython's rc
2887 structure as win_exec_ext.
2891 structure as win_exec_ext.
2888
2892
2889 * IPython/genutils.py (shell): new function, like system() but
2893 * IPython/genutils.py (shell): new function, like system() but
2890 without return value. Very useful for interactive shell work.
2894 without return value. Very useful for interactive shell work.
2891
2895
2892 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2896 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2893 delete aliases.
2897 delete aliases.
2894
2898
2895 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2899 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2896 sure that the alias table doesn't contain python keywords.
2900 sure that the alias table doesn't contain python keywords.
2897
2901
2898 2004-06-21 Fernando Perez <fperez@colorado.edu>
2902 2004-06-21 Fernando Perez <fperez@colorado.edu>
2899
2903
2900 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2904 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2901 non-existent items are found in $PATH. Reported by Thorsten.
2905 non-existent items are found in $PATH. Reported by Thorsten.
2902
2906
2903 2004-06-20 Fernando Perez <fperez@colorado.edu>
2907 2004-06-20 Fernando Perez <fperez@colorado.edu>
2904
2908
2905 * IPython/iplib.py (complete): modified the completer so that the
2909 * IPython/iplib.py (complete): modified the completer so that the
2906 order of priorities can be easily changed at runtime.
2910 order of priorities can be easily changed at runtime.
2907
2911
2908 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2912 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2909 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2913 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2910
2914
2911 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2915 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2912 expand Python variables prepended with $ in all system calls. The
2916 expand Python variables prepended with $ in all system calls. The
2913 same was done to InteractiveShell.handle_shell_escape. Now all
2917 same was done to InteractiveShell.handle_shell_escape. Now all
2914 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2918 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2915 expansion of python variables and expressions according to the
2919 expansion of python variables and expressions according to the
2916 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2920 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2917
2921
2918 Though PEP-215 has been rejected, a similar (but simpler) one
2922 Though PEP-215 has been rejected, a similar (but simpler) one
2919 seems like it will go into Python 2.4, PEP-292 -
2923 seems like it will go into Python 2.4, PEP-292 -
2920 http://www.python.org/peps/pep-0292.html.
2924 http://www.python.org/peps/pep-0292.html.
2921
2925
2922 I'll keep the full syntax of PEP-215, since IPython has since the
2926 I'll keep the full syntax of PEP-215, since IPython has since the
2923 start used Ka-Ping Yee's reference implementation discussed there
2927 start used Ka-Ping Yee's reference implementation discussed there
2924 (Itpl), and I actually like the powerful semantics it offers.
2928 (Itpl), and I actually like the powerful semantics it offers.
2925
2929
2926 In order to access normal shell variables, the $ has to be escaped
2930 In order to access normal shell variables, the $ has to be escaped
2927 via an extra $. For example:
2931 via an extra $. For example:
2928
2932
2929 In [7]: PATH='a python variable'
2933 In [7]: PATH='a python variable'
2930
2934
2931 In [8]: !echo $PATH
2935 In [8]: !echo $PATH
2932 a python variable
2936 a python variable
2933
2937
2934 In [9]: !echo $$PATH
2938 In [9]: !echo $$PATH
2935 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2939 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2936
2940
2937 (Magic.parse_options): escape $ so the shell doesn't evaluate
2941 (Magic.parse_options): escape $ so the shell doesn't evaluate
2938 things prematurely.
2942 things prematurely.
2939
2943
2940 * IPython/iplib.py (InteractiveShell.call_alias): added the
2944 * IPython/iplib.py (InteractiveShell.call_alias): added the
2941 ability for aliases to expand python variables via $.
2945 ability for aliases to expand python variables via $.
2942
2946
2943 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2947 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2944 system, now there's a @rehash/@rehashx pair of magics. These work
2948 system, now there's a @rehash/@rehashx pair of magics. These work
2945 like the csh rehash command, and can be invoked at any time. They
2949 like the csh rehash command, and can be invoked at any time. They
2946 build a table of aliases to everything in the user's $PATH
2950 build a table of aliases to everything in the user's $PATH
2947 (@rehash uses everything, @rehashx is slower but only adds
2951 (@rehash uses everything, @rehashx is slower but only adds
2948 executable files). With this, the pysh.py-based shell profile can
2952 executable files). With this, the pysh.py-based shell profile can
2949 now simply call rehash upon startup, and full access to all
2953 now simply call rehash upon startup, and full access to all
2950 programs in the user's path is obtained.
2954 programs in the user's path is obtained.
2951
2955
2952 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2956 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2953 functionality is now fully in place. I removed the old dynamic
2957 functionality is now fully in place. I removed the old dynamic
2954 code generation based approach, in favor of a much lighter one
2958 code generation based approach, in favor of a much lighter one
2955 based on a simple dict. The advantage is that this allows me to
2959 based on a simple dict. The advantage is that this allows me to
2956 now have thousands of aliases with negligible cost (unthinkable
2960 now have thousands of aliases with negligible cost (unthinkable
2957 with the old system).
2961 with the old system).
2958
2962
2959 2004-06-19 Fernando Perez <fperez@colorado.edu>
2963 2004-06-19 Fernando Perez <fperez@colorado.edu>
2960
2964
2961 * IPython/iplib.py (__init__): extended MagicCompleter class to
2965 * IPython/iplib.py (__init__): extended MagicCompleter class to
2962 also complete (last in priority) on user aliases.
2966 also complete (last in priority) on user aliases.
2963
2967
2964 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2968 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2965 call to eval.
2969 call to eval.
2966 (ItplNS.__init__): Added a new class which functions like Itpl,
2970 (ItplNS.__init__): Added a new class which functions like Itpl,
2967 but allows configuring the namespace for the evaluation to occur
2971 but allows configuring the namespace for the evaluation to occur
2968 in.
2972 in.
2969
2973
2970 2004-06-18 Fernando Perez <fperez@colorado.edu>
2974 2004-06-18 Fernando Perez <fperez@colorado.edu>
2971
2975
2972 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2976 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2973 better message when 'exit' or 'quit' are typed (a common newbie
2977 better message when 'exit' or 'quit' are typed (a common newbie
2974 confusion).
2978 confusion).
2975
2979
2976 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2980 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2977 check for Windows users.
2981 check for Windows users.
2978
2982
2979 * IPython/iplib.py (InteractiveShell.user_setup): removed
2983 * IPython/iplib.py (InteractiveShell.user_setup): removed
2980 disabling of colors for Windows. I'll test at runtime and issue a
2984 disabling of colors for Windows. I'll test at runtime and issue a
2981 warning if Gary's readline isn't found, as to nudge users to
2985 warning if Gary's readline isn't found, as to nudge users to
2982 download it.
2986 download it.
2983
2987
2984 2004-06-16 Fernando Perez <fperez@colorado.edu>
2988 2004-06-16 Fernando Perez <fperez@colorado.edu>
2985
2989
2986 * IPython/genutils.py (Stream.__init__): changed to print errors
2990 * IPython/genutils.py (Stream.__init__): changed to print errors
2987 to sys.stderr. I had a circular dependency here. Now it's
2991 to sys.stderr. I had a circular dependency here. Now it's
2988 possible to run ipython as IDLE's shell (consider this pre-alpha,
2992 possible to run ipython as IDLE's shell (consider this pre-alpha,
2989 since true stdout things end up in the starting terminal instead
2993 since true stdout things end up in the starting terminal instead
2990 of IDLE's out).
2994 of IDLE's out).
2991
2995
2992 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2996 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2993 users who haven't # updated their prompt_in2 definitions. Remove
2997 users who haven't # updated their prompt_in2 definitions. Remove
2994 eventually.
2998 eventually.
2995 (multiple_replace): added credit to original ASPN recipe.
2999 (multiple_replace): added credit to original ASPN recipe.
2996
3000
2997 2004-06-15 Fernando Perez <fperez@colorado.edu>
3001 2004-06-15 Fernando Perez <fperez@colorado.edu>
2998
3002
2999 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3003 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3000 list of auto-defined aliases.
3004 list of auto-defined aliases.
3001
3005
3002 2004-06-13 Fernando Perez <fperez@colorado.edu>
3006 2004-06-13 Fernando Perez <fperez@colorado.edu>
3003
3007
3004 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3008 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3005 install was really requested (so setup.py can be used for other
3009 install was really requested (so setup.py can be used for other
3006 things under Windows).
3010 things under Windows).
3007
3011
3008 2004-06-10 Fernando Perez <fperez@colorado.edu>
3012 2004-06-10 Fernando Perez <fperez@colorado.edu>
3009
3013
3010 * IPython/Logger.py (Logger.create_log): Manually remove any old
3014 * IPython/Logger.py (Logger.create_log): Manually remove any old
3011 backup, since os.remove may fail under Windows. Fixes bug
3015 backup, since os.remove may fail under Windows. Fixes bug
3012 reported by Thorsten.
3016 reported by Thorsten.
3013
3017
3014 2004-06-09 Fernando Perez <fperez@colorado.edu>
3018 2004-06-09 Fernando Perez <fperez@colorado.edu>
3015
3019
3016 * examples/example-embed.py: fixed all references to %n (replaced
3020 * examples/example-embed.py: fixed all references to %n (replaced
3017 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3021 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3018 for all examples and the manual as well.
3022 for all examples and the manual as well.
3019
3023
3020 2004-06-08 Fernando Perez <fperez@colorado.edu>
3024 2004-06-08 Fernando Perez <fperez@colorado.edu>
3021
3025
3022 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3026 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3023 alignment and color management. All 3 prompt subsystems now
3027 alignment and color management. All 3 prompt subsystems now
3024 inherit from BasePrompt.
3028 inherit from BasePrompt.
3025
3029
3026 * tools/release: updates for windows installer build and tag rpms
3030 * tools/release: updates for windows installer build and tag rpms
3027 with python version (since paths are fixed).
3031 with python version (since paths are fixed).
3028
3032
3029 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3033 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3030 which will become eventually obsolete. Also fixed the default
3034 which will become eventually obsolete. Also fixed the default
3031 prompt_in2 to use \D, so at least new users start with the correct
3035 prompt_in2 to use \D, so at least new users start with the correct
3032 defaults.
3036 defaults.
3033 WARNING: Users with existing ipythonrc files will need to apply
3037 WARNING: Users with existing ipythonrc files will need to apply
3034 this fix manually!
3038 this fix manually!
3035
3039
3036 * setup.py: make windows installer (.exe). This is finally the
3040 * setup.py: make windows installer (.exe). This is finally the
3037 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3041 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3038 which I hadn't included because it required Python 2.3 (or recent
3042 which I hadn't included because it required Python 2.3 (or recent
3039 distutils).
3043 distutils).
3040
3044
3041 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3045 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3042 usage of new '\D' escape.
3046 usage of new '\D' escape.
3043
3047
3044 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3048 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3045 lacks os.getuid())
3049 lacks os.getuid())
3046 (CachedOutput.set_colors): Added the ability to turn coloring
3050 (CachedOutput.set_colors): Added the ability to turn coloring
3047 on/off with @colors even for manually defined prompt colors. It
3051 on/off with @colors even for manually defined prompt colors. It
3048 uses a nasty global, but it works safely and via the generic color
3052 uses a nasty global, but it works safely and via the generic color
3049 handling mechanism.
3053 handling mechanism.
3050 (Prompt2.__init__): Introduced new escape '\D' for continuation
3054 (Prompt2.__init__): Introduced new escape '\D' for continuation
3051 prompts. It represents the counter ('\#') as dots.
3055 prompts. It represents the counter ('\#') as dots.
3052 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3056 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3053 need to update their ipythonrc files and replace '%n' with '\D' in
3057 need to update their ipythonrc files and replace '%n' with '\D' in
3054 their prompt_in2 settings everywhere. Sorry, but there's
3058 their prompt_in2 settings everywhere. Sorry, but there's
3055 otherwise no clean way to get all prompts to properly align. The
3059 otherwise no clean way to get all prompts to properly align. The
3056 ipythonrc shipped with IPython has been updated.
3060 ipythonrc shipped with IPython has been updated.
3057
3061
3058 2004-06-07 Fernando Perez <fperez@colorado.edu>
3062 2004-06-07 Fernando Perez <fperez@colorado.edu>
3059
3063
3060 * setup.py (isfile): Pass local_icons option to latex2html, so the
3064 * setup.py (isfile): Pass local_icons option to latex2html, so the
3061 resulting HTML file is self-contained. Thanks to
3065 resulting HTML file is self-contained. Thanks to
3062 dryice-AT-liu.com.cn for the tip.
3066 dryice-AT-liu.com.cn for the tip.
3063
3067
3064 * pysh.py: I created a new profile 'shell', which implements a
3068 * pysh.py: I created a new profile 'shell', which implements a
3065 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3069 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3066 system shell, nor will it become one anytime soon. It's mainly
3070 system shell, nor will it become one anytime soon. It's mainly
3067 meant to illustrate the use of the new flexible bash-like prompts.
3071 meant to illustrate the use of the new flexible bash-like prompts.
3068 I guess it could be used by hardy souls for true shell management,
3072 I guess it could be used by hardy souls for true shell management,
3069 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3073 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3070 profile. This uses the InterpreterExec extension provided by
3074 profile. This uses the InterpreterExec extension provided by
3071 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3075 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3072
3076
3073 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3077 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3074 auto-align itself with the length of the previous input prompt
3078 auto-align itself with the length of the previous input prompt
3075 (taking into account the invisible color escapes).
3079 (taking into account the invisible color escapes).
3076 (CachedOutput.__init__): Large restructuring of this class. Now
3080 (CachedOutput.__init__): Large restructuring of this class. Now
3077 all three prompts (primary1, primary2, output) are proper objects,
3081 all three prompts (primary1, primary2, output) are proper objects,
3078 managed by the 'parent' CachedOutput class. The code is still a
3082 managed by the 'parent' CachedOutput class. The code is still a
3079 bit hackish (all prompts share state via a pointer to the cache),
3083 bit hackish (all prompts share state via a pointer to the cache),
3080 but it's overall far cleaner than before.
3084 but it's overall far cleaner than before.
3081
3085
3082 * IPython/genutils.py (getoutputerror): modified to add verbose,
3086 * IPython/genutils.py (getoutputerror): modified to add verbose,
3083 debug and header options. This makes the interface of all getout*
3087 debug and header options. This makes the interface of all getout*
3084 functions uniform.
3088 functions uniform.
3085 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3089 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3086
3090
3087 * IPython/Magic.py (Magic.default_option): added a function to
3091 * IPython/Magic.py (Magic.default_option): added a function to
3088 allow registering default options for any magic command. This
3092 allow registering default options for any magic command. This
3089 makes it easy to have profiles which customize the magics globally
3093 makes it easy to have profiles which customize the magics globally
3090 for a certain use. The values set through this function are
3094 for a certain use. The values set through this function are
3091 picked up by the parse_options() method, which all magics should
3095 picked up by the parse_options() method, which all magics should
3092 use to parse their options.
3096 use to parse their options.
3093
3097
3094 * IPython/genutils.py (warn): modified the warnings framework to
3098 * IPython/genutils.py (warn): modified the warnings framework to
3095 use the Term I/O class. I'm trying to slowly unify all of
3099 use the Term I/O class. I'm trying to slowly unify all of
3096 IPython's I/O operations to pass through Term.
3100 IPython's I/O operations to pass through Term.
3097
3101
3098 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3102 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3099 the secondary prompt to correctly match the length of the primary
3103 the secondary prompt to correctly match the length of the primary
3100 one for any prompt. Now multi-line code will properly line up
3104 one for any prompt. Now multi-line code will properly line up
3101 even for path dependent prompts, such as the new ones available
3105 even for path dependent prompts, such as the new ones available
3102 via the prompt_specials.
3106 via the prompt_specials.
3103
3107
3104 2004-06-06 Fernando Perez <fperez@colorado.edu>
3108 2004-06-06 Fernando Perez <fperez@colorado.edu>
3105
3109
3106 * IPython/Prompts.py (prompt_specials): Added the ability to have
3110 * IPython/Prompts.py (prompt_specials): Added the ability to have
3107 bash-like special sequences in the prompts, which get
3111 bash-like special sequences in the prompts, which get
3108 automatically expanded. Things like hostname, current working
3112 automatically expanded. Things like hostname, current working
3109 directory and username are implemented already, but it's easy to
3113 directory and username are implemented already, but it's easy to
3110 add more in the future. Thanks to a patch by W.J. van der Laan
3114 add more in the future. Thanks to a patch by W.J. van der Laan
3111 <gnufnork-AT-hetdigitalegat.nl>
3115 <gnufnork-AT-hetdigitalegat.nl>
3112 (prompt_specials): Added color support for prompt strings, so
3116 (prompt_specials): Added color support for prompt strings, so
3113 users can define arbitrary color setups for their prompts.
3117 users can define arbitrary color setups for their prompts.
3114
3118
3115 2004-06-05 Fernando Perez <fperez@colorado.edu>
3119 2004-06-05 Fernando Perez <fperez@colorado.edu>
3116
3120
3117 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3121 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3118 code to load Gary Bishop's readline and configure it
3122 code to load Gary Bishop's readline and configure it
3119 automatically. Thanks to Gary for help on this.
3123 automatically. Thanks to Gary for help on this.
3120
3124
3121 2004-06-01 Fernando Perez <fperez@colorado.edu>
3125 2004-06-01 Fernando Perez <fperez@colorado.edu>
3122
3126
3123 * IPython/Logger.py (Logger.create_log): fix bug for logging
3127 * IPython/Logger.py (Logger.create_log): fix bug for logging
3124 with no filename (previous fix was incomplete).
3128 with no filename (previous fix was incomplete).
3125
3129
3126 2004-05-25 Fernando Perez <fperez@colorado.edu>
3130 2004-05-25 Fernando Perez <fperez@colorado.edu>
3127
3131
3128 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3132 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3129 parens would get passed to the shell.
3133 parens would get passed to the shell.
3130
3134
3131 2004-05-20 Fernando Perez <fperez@colorado.edu>
3135 2004-05-20 Fernando Perez <fperez@colorado.edu>
3132
3136
3133 * IPython/Magic.py (Magic.magic_prun): changed default profile
3137 * IPython/Magic.py (Magic.magic_prun): changed default profile
3134 sort order to 'time' (the more common profiling need).
3138 sort order to 'time' (the more common profiling need).
3135
3139
3136 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3140 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3137 so that source code shown is guaranteed in sync with the file on
3141 so that source code shown is guaranteed in sync with the file on
3138 disk (also changed in psource). Similar fix to the one for
3142 disk (also changed in psource). Similar fix to the one for
3139 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3143 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3140 <yann.ledu-AT-noos.fr>.
3144 <yann.ledu-AT-noos.fr>.
3141
3145
3142 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3146 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3143 with a single option would not be correctly parsed. Closes
3147 with a single option would not be correctly parsed. Closes
3144 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3148 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3145 introduced in 0.6.0 (on 2004-05-06).
3149 introduced in 0.6.0 (on 2004-05-06).
3146
3150
3147 2004-05-13 *** Released version 0.6.0
3151 2004-05-13 *** Released version 0.6.0
3148
3152
3149 2004-05-13 Fernando Perez <fperez@colorado.edu>
3153 2004-05-13 Fernando Perez <fperez@colorado.edu>
3150
3154
3151 * debian/: Added debian/ directory to CVS, so that debian support
3155 * debian/: Added debian/ directory to CVS, so that debian support
3152 is publicly accessible. The debian package is maintained by Jack
3156 is publicly accessible. The debian package is maintained by Jack
3153 Moffit <jack-AT-xiph.org>.
3157 Moffit <jack-AT-xiph.org>.
3154
3158
3155 * Documentation: included the notes about an ipython-based system
3159 * Documentation: included the notes about an ipython-based system
3156 shell (the hypothetical 'pysh') into the new_design.pdf document,
3160 shell (the hypothetical 'pysh') into the new_design.pdf document,
3157 so that these ideas get distributed to users along with the
3161 so that these ideas get distributed to users along with the
3158 official documentation.
3162 official documentation.
3159
3163
3160 2004-05-10 Fernando Perez <fperez@colorado.edu>
3164 2004-05-10 Fernando Perez <fperez@colorado.edu>
3161
3165
3162 * IPython/Logger.py (Logger.create_log): fix recently introduced
3166 * IPython/Logger.py (Logger.create_log): fix recently introduced
3163 bug (misindented line) where logstart would fail when not given an
3167 bug (misindented line) where logstart would fail when not given an
3164 explicit filename.
3168 explicit filename.
3165
3169
3166 2004-05-09 Fernando Perez <fperez@colorado.edu>
3170 2004-05-09 Fernando Perez <fperez@colorado.edu>
3167
3171
3168 * IPython/Magic.py (Magic.parse_options): skip system call when
3172 * IPython/Magic.py (Magic.parse_options): skip system call when
3169 there are no options to look for. Faster, cleaner for the common
3173 there are no options to look for. Faster, cleaner for the common
3170 case.
3174 case.
3171
3175
3172 * Documentation: many updates to the manual: describing Windows
3176 * Documentation: many updates to the manual: describing Windows
3173 support better, Gnuplot updates, credits, misc small stuff. Also
3177 support better, Gnuplot updates, credits, misc small stuff. Also
3174 updated the new_design doc a bit.
3178 updated the new_design doc a bit.
3175
3179
3176 2004-05-06 *** Released version 0.6.0.rc1
3180 2004-05-06 *** Released version 0.6.0.rc1
3177
3181
3178 2004-05-06 Fernando Perez <fperez@colorado.edu>
3182 2004-05-06 Fernando Perez <fperez@colorado.edu>
3179
3183
3180 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3184 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3181 operations to use the vastly more efficient list/''.join() method.
3185 operations to use the vastly more efficient list/''.join() method.
3182 (FormattedTB.text): Fix
3186 (FormattedTB.text): Fix
3183 http://www.scipy.net/roundup/ipython/issue12 - exception source
3187 http://www.scipy.net/roundup/ipython/issue12 - exception source
3184 extract not updated after reload. Thanks to Mike Salib
3188 extract not updated after reload. Thanks to Mike Salib
3185 <msalib-AT-mit.edu> for pinning the source of the problem.
3189 <msalib-AT-mit.edu> for pinning the source of the problem.
3186 Fortunately, the solution works inside ipython and doesn't require
3190 Fortunately, the solution works inside ipython and doesn't require
3187 any changes to python proper.
3191 any changes to python proper.
3188
3192
3189 * IPython/Magic.py (Magic.parse_options): Improved to process the
3193 * IPython/Magic.py (Magic.parse_options): Improved to process the
3190 argument list as a true shell would (by actually using the
3194 argument list as a true shell would (by actually using the
3191 underlying system shell). This way, all @magics automatically get
3195 underlying system shell). This way, all @magics automatically get
3192 shell expansion for variables. Thanks to a comment by Alex
3196 shell expansion for variables. Thanks to a comment by Alex
3193 Schmolck.
3197 Schmolck.
3194
3198
3195 2004-04-04 Fernando Perez <fperez@colorado.edu>
3199 2004-04-04 Fernando Perez <fperez@colorado.edu>
3196
3200
3197 * IPython/iplib.py (InteractiveShell.interact): Added a special
3201 * IPython/iplib.py (InteractiveShell.interact): Added a special
3198 trap for a debugger quit exception, which is basically impossible
3202 trap for a debugger quit exception, which is basically impossible
3199 to handle by normal mechanisms, given what pdb does to the stack.
3203 to handle by normal mechanisms, given what pdb does to the stack.
3200 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3204 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3201
3205
3202 2004-04-03 Fernando Perez <fperez@colorado.edu>
3206 2004-04-03 Fernando Perez <fperez@colorado.edu>
3203
3207
3204 * IPython/genutils.py (Term): Standardized the names of the Term
3208 * IPython/genutils.py (Term): Standardized the names of the Term
3205 class streams to cin/cout/cerr, following C++ naming conventions
3209 class streams to cin/cout/cerr, following C++ naming conventions
3206 (I can't use in/out/err because 'in' is not a valid attribute
3210 (I can't use in/out/err because 'in' is not a valid attribute
3207 name).
3211 name).
3208
3212
3209 * IPython/iplib.py (InteractiveShell.interact): don't increment
3213 * IPython/iplib.py (InteractiveShell.interact): don't increment
3210 the prompt if there's no user input. By Daniel 'Dang' Griffith
3214 the prompt if there's no user input. By Daniel 'Dang' Griffith
3211 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3215 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3212 Francois Pinard.
3216 Francois Pinard.
3213
3217
3214 2004-04-02 Fernando Perez <fperez@colorado.edu>
3218 2004-04-02 Fernando Perez <fperez@colorado.edu>
3215
3219
3216 * IPython/genutils.py (Stream.__init__): Modified to survive at
3220 * IPython/genutils.py (Stream.__init__): Modified to survive at
3217 least importing in contexts where stdin/out/err aren't true file
3221 least importing in contexts where stdin/out/err aren't true file
3218 objects, such as PyCrust (they lack fileno() and mode). However,
3222 objects, such as PyCrust (they lack fileno() and mode). However,
3219 the recovery facilities which rely on these things existing will
3223 the recovery facilities which rely on these things existing will
3220 not work.
3224 not work.
3221
3225
3222 2004-04-01 Fernando Perez <fperez@colorado.edu>
3226 2004-04-01 Fernando Perez <fperez@colorado.edu>
3223
3227
3224 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3228 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3225 use the new getoutputerror() function, so it properly
3229 use the new getoutputerror() function, so it properly
3226 distinguishes stdout/err.
3230 distinguishes stdout/err.
3227
3231
3228 * IPython/genutils.py (getoutputerror): added a function to
3232 * IPython/genutils.py (getoutputerror): added a function to
3229 capture separately the standard output and error of a command.
3233 capture separately the standard output and error of a command.
3230 After a comment from dang on the mailing lists. This code is
3234 After a comment from dang on the mailing lists. This code is
3231 basically a modified version of commands.getstatusoutput(), from
3235 basically a modified version of commands.getstatusoutput(), from
3232 the standard library.
3236 the standard library.
3233
3237
3234 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3238 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3235 '!!' as a special syntax (shorthand) to access @sx.
3239 '!!' as a special syntax (shorthand) to access @sx.
3236
3240
3237 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3241 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3238 command and return its output as a list split on '\n'.
3242 command and return its output as a list split on '\n'.
3239
3243
3240 2004-03-31 Fernando Perez <fperez@colorado.edu>
3244 2004-03-31 Fernando Perez <fperez@colorado.edu>
3241
3245
3242 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3246 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3243 method to dictionaries used as FakeModule instances if they lack
3247 method to dictionaries used as FakeModule instances if they lack
3244 it. At least pydoc in python2.3 breaks for runtime-defined
3248 it. At least pydoc in python2.3 breaks for runtime-defined
3245 functions without this hack. At some point I need to _really_
3249 functions without this hack. At some point I need to _really_
3246 understand what FakeModule is doing, because it's a gross hack.
3250 understand what FakeModule is doing, because it's a gross hack.
3247 But it solves Arnd's problem for now...
3251 But it solves Arnd's problem for now...
3248
3252
3249 2004-02-27 Fernando Perez <fperez@colorado.edu>
3253 2004-02-27 Fernando Perez <fperez@colorado.edu>
3250
3254
3251 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3255 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3252 mode would behave erratically. Also increased the number of
3256 mode would behave erratically. Also increased the number of
3253 possible logs in rotate mod to 999. Thanks to Rod Holland
3257 possible logs in rotate mod to 999. Thanks to Rod Holland
3254 <rhh@StructureLABS.com> for the report and fixes.
3258 <rhh@StructureLABS.com> for the report and fixes.
3255
3259
3256 2004-02-26 Fernando Perez <fperez@colorado.edu>
3260 2004-02-26 Fernando Perez <fperez@colorado.edu>
3257
3261
3258 * IPython/genutils.py (page): Check that the curses module really
3262 * IPython/genutils.py (page): Check that the curses module really
3259 has the initscr attribute before trying to use it. For some
3263 has the initscr attribute before trying to use it. For some
3260 reason, the Solaris curses module is missing this. I think this
3264 reason, the Solaris curses module is missing this. I think this
3261 should be considered a Solaris python bug, but I'm not sure.
3265 should be considered a Solaris python bug, but I'm not sure.
3262
3266
3263 2004-01-17 Fernando Perez <fperez@colorado.edu>
3267 2004-01-17 Fernando Perez <fperez@colorado.edu>
3264
3268
3265 * IPython/genutils.py (Stream.__init__): Changes to try to make
3269 * IPython/genutils.py (Stream.__init__): Changes to try to make
3266 ipython robust against stdin/out/err being closed by the user.
3270 ipython robust against stdin/out/err being closed by the user.
3267 This is 'user error' (and blocks a normal python session, at least
3271 This is 'user error' (and blocks a normal python session, at least
3268 the stdout case). However, Ipython should be able to survive such
3272 the stdout case). However, Ipython should be able to survive such
3269 instances of abuse as gracefully as possible. To simplify the
3273 instances of abuse as gracefully as possible. To simplify the
3270 coding and maintain compatibility with Gary Bishop's Term
3274 coding and maintain compatibility with Gary Bishop's Term
3271 contributions, I've made use of classmethods for this. I think
3275 contributions, I've made use of classmethods for this. I think
3272 this introduces a dependency on python 2.2.
3276 this introduces a dependency on python 2.2.
3273
3277
3274 2004-01-13 Fernando Perez <fperez@colorado.edu>
3278 2004-01-13 Fernando Perez <fperez@colorado.edu>
3275
3279
3276 * IPython/numutils.py (exp_safe): simplified the code a bit and
3280 * IPython/numutils.py (exp_safe): simplified the code a bit and
3277 removed the need for importing the kinds module altogether.
3281 removed the need for importing the kinds module altogether.
3278
3282
3279 2004-01-06 Fernando Perez <fperez@colorado.edu>
3283 2004-01-06 Fernando Perez <fperez@colorado.edu>
3280
3284
3281 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3285 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3282 a magic function instead, after some community feedback. No
3286 a magic function instead, after some community feedback. No
3283 special syntax will exist for it, but its name is deliberately
3287 special syntax will exist for it, but its name is deliberately
3284 very short.
3288 very short.
3285
3289
3286 2003-12-20 Fernando Perez <fperez@colorado.edu>
3290 2003-12-20 Fernando Perez <fperez@colorado.edu>
3287
3291
3288 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3292 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3289 new functionality, to automagically assign the result of a shell
3293 new functionality, to automagically assign the result of a shell
3290 command to a variable. I'll solicit some community feedback on
3294 command to a variable. I'll solicit some community feedback on
3291 this before making it permanent.
3295 this before making it permanent.
3292
3296
3293 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3297 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3294 requested about callables for which inspect couldn't obtain a
3298 requested about callables for which inspect couldn't obtain a
3295 proper argspec. Thanks to a crash report sent by Etienne
3299 proper argspec. Thanks to a crash report sent by Etienne
3296 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3300 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3297
3301
3298 2003-12-09 Fernando Perez <fperez@colorado.edu>
3302 2003-12-09 Fernando Perez <fperez@colorado.edu>
3299
3303
3300 * IPython/genutils.py (page): patch for the pager to work across
3304 * IPython/genutils.py (page): patch for the pager to work across
3301 various versions of Windows. By Gary Bishop.
3305 various versions of Windows. By Gary Bishop.
3302
3306
3303 2003-12-04 Fernando Perez <fperez@colorado.edu>
3307 2003-12-04 Fernando Perez <fperez@colorado.edu>
3304
3308
3305 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3309 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3306 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3310 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3307 While I tested this and it looks ok, there may still be corner
3311 While I tested this and it looks ok, there may still be corner
3308 cases I've missed.
3312 cases I've missed.
3309
3313
3310 2003-12-01 Fernando Perez <fperez@colorado.edu>
3314 2003-12-01 Fernando Perez <fperez@colorado.edu>
3311
3315
3312 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3316 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3313 where a line like 'p,q=1,2' would fail because the automagic
3317 where a line like 'p,q=1,2' would fail because the automagic
3314 system would be triggered for @p.
3318 system would be triggered for @p.
3315
3319
3316 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3320 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3317 cleanups, code unmodified.
3321 cleanups, code unmodified.
3318
3322
3319 * IPython/genutils.py (Term): added a class for IPython to handle
3323 * IPython/genutils.py (Term): added a class for IPython to handle
3320 output. In most cases it will just be a proxy for stdout/err, but
3324 output. In most cases it will just be a proxy for stdout/err, but
3321 having this allows modifications to be made for some platforms,
3325 having this allows modifications to be made for some platforms,
3322 such as handling color escapes under Windows. All of this code
3326 such as handling color escapes under Windows. All of this code
3323 was contributed by Gary Bishop, with minor modifications by me.
3327 was contributed by Gary Bishop, with minor modifications by me.
3324 The actual changes affect many files.
3328 The actual changes affect many files.
3325
3329
3326 2003-11-30 Fernando Perez <fperez@colorado.edu>
3330 2003-11-30 Fernando Perez <fperez@colorado.edu>
3327
3331
3328 * IPython/iplib.py (file_matches): new completion code, courtesy
3332 * IPython/iplib.py (file_matches): new completion code, courtesy
3329 of Jeff Collins. This enables filename completion again under
3333 of Jeff Collins. This enables filename completion again under
3330 python 2.3, which disabled it at the C level.
3334 python 2.3, which disabled it at the C level.
3331
3335
3332 2003-11-11 Fernando Perez <fperez@colorado.edu>
3336 2003-11-11 Fernando Perez <fperez@colorado.edu>
3333
3337
3334 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3338 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3335 for Numeric.array(map(...)), but often convenient.
3339 for Numeric.array(map(...)), but often convenient.
3336
3340
3337 2003-11-05 Fernando Perez <fperez@colorado.edu>
3341 2003-11-05 Fernando Perez <fperez@colorado.edu>
3338
3342
3339 * IPython/numutils.py (frange): Changed a call from int() to
3343 * IPython/numutils.py (frange): Changed a call from int() to
3340 int(round()) to prevent a problem reported with arange() in the
3344 int(round()) to prevent a problem reported with arange() in the
3341 numpy list.
3345 numpy list.
3342
3346
3343 2003-10-06 Fernando Perez <fperez@colorado.edu>
3347 2003-10-06 Fernando Perez <fperez@colorado.edu>
3344
3348
3345 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3349 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3346 prevent crashes if sys lacks an argv attribute (it happens with
3350 prevent crashes if sys lacks an argv attribute (it happens with
3347 embedded interpreters which build a bare-bones sys module).
3351 embedded interpreters which build a bare-bones sys module).
3348 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3352 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3349
3353
3350 2003-09-24 Fernando Perez <fperez@colorado.edu>
3354 2003-09-24 Fernando Perez <fperez@colorado.edu>
3351
3355
3352 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3356 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3353 to protect against poorly written user objects where __getattr__
3357 to protect against poorly written user objects where __getattr__
3354 raises exceptions other than AttributeError. Thanks to a bug
3358 raises exceptions other than AttributeError. Thanks to a bug
3355 report by Oliver Sander <osander-AT-gmx.de>.
3359 report by Oliver Sander <osander-AT-gmx.de>.
3356
3360
3357 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3361 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3358 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3362 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3359
3363
3360 2003-09-09 Fernando Perez <fperez@colorado.edu>
3364 2003-09-09 Fernando Perez <fperez@colorado.edu>
3361
3365
3362 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3366 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3363 unpacking a list whith a callable as first element would
3367 unpacking a list whith a callable as first element would
3364 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3368 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3365 Collins.
3369 Collins.
3366
3370
3367 2003-08-25 *** Released version 0.5.0
3371 2003-08-25 *** Released version 0.5.0
3368
3372
3369 2003-08-22 Fernando Perez <fperez@colorado.edu>
3373 2003-08-22 Fernando Perez <fperez@colorado.edu>
3370
3374
3371 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3375 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3372 improperly defined user exceptions. Thanks to feedback from Mark
3376 improperly defined user exceptions. Thanks to feedback from Mark
3373 Russell <mrussell-AT-verio.net>.
3377 Russell <mrussell-AT-verio.net>.
3374
3378
3375 2003-08-20 Fernando Perez <fperez@colorado.edu>
3379 2003-08-20 Fernando Perez <fperez@colorado.edu>
3376
3380
3377 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3381 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3378 printing so that it would print multi-line string forms starting
3382 printing so that it would print multi-line string forms starting
3379 with a new line. This way the formatting is better respected for
3383 with a new line. This way the formatting is better respected for
3380 objects which work hard to make nice string forms.
3384 objects which work hard to make nice string forms.
3381
3385
3382 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3386 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3383 autocall would overtake data access for objects with both
3387 autocall would overtake data access for objects with both
3384 __getitem__ and __call__.
3388 __getitem__ and __call__.
3385
3389
3386 2003-08-19 *** Released version 0.5.0-rc1
3390 2003-08-19 *** Released version 0.5.0-rc1
3387
3391
3388 2003-08-19 Fernando Perez <fperez@colorado.edu>
3392 2003-08-19 Fernando Perez <fperez@colorado.edu>
3389
3393
3390 * IPython/deep_reload.py (load_tail): single tiny change here
3394 * IPython/deep_reload.py (load_tail): single tiny change here
3391 seems to fix the long-standing bug of dreload() failing to work
3395 seems to fix the long-standing bug of dreload() failing to work
3392 for dotted names. But this module is pretty tricky, so I may have
3396 for dotted names. But this module is pretty tricky, so I may have
3393 missed some subtlety. Needs more testing!.
3397 missed some subtlety. Needs more testing!.
3394
3398
3395 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3399 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3396 exceptions which have badly implemented __str__ methods.
3400 exceptions which have badly implemented __str__ methods.
3397 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3401 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3398 which I've been getting reports about from Python 2.3 users. I
3402 which I've been getting reports about from Python 2.3 users. I
3399 wish I had a simple test case to reproduce the problem, so I could
3403 wish I had a simple test case to reproduce the problem, so I could
3400 either write a cleaner workaround or file a bug report if
3404 either write a cleaner workaround or file a bug report if
3401 necessary.
3405 necessary.
3402
3406
3403 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3407 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3404 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3408 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3405 a bug report by Tjabo Kloppenburg.
3409 a bug report by Tjabo Kloppenburg.
3406
3410
3407 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3411 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3408 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3412 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3409 seems rather unstable. Thanks to a bug report by Tjabo
3413 seems rather unstable. Thanks to a bug report by Tjabo
3410 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3414 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3411
3415
3412 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3416 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3413 this out soon because of the critical fixes in the inner loop for
3417 this out soon because of the critical fixes in the inner loop for
3414 generators.
3418 generators.
3415
3419
3416 * IPython/Magic.py (Magic.getargspec): removed. This (and
3420 * IPython/Magic.py (Magic.getargspec): removed. This (and
3417 _get_def) have been obsoleted by OInspect for a long time, I
3421 _get_def) have been obsoleted by OInspect for a long time, I
3418 hadn't noticed that they were dead code.
3422 hadn't noticed that they were dead code.
3419 (Magic._ofind): restored _ofind functionality for a few literals
3423 (Magic._ofind): restored _ofind functionality for a few literals
3420 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3424 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3421 for things like "hello".capitalize?, since that would require a
3425 for things like "hello".capitalize?, since that would require a
3422 potentially dangerous eval() again.
3426 potentially dangerous eval() again.
3423
3427
3424 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3428 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3425 logic a bit more to clean up the escapes handling and minimize the
3429 logic a bit more to clean up the escapes handling and minimize the
3426 use of _ofind to only necessary cases. The interactive 'feel' of
3430 use of _ofind to only necessary cases. The interactive 'feel' of
3427 IPython should have improved quite a bit with the changes in
3431 IPython should have improved quite a bit with the changes in
3428 _prefilter and _ofind (besides being far safer than before).
3432 _prefilter and _ofind (besides being far safer than before).
3429
3433
3430 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3434 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3431 obscure, never reported). Edit would fail to find the object to
3435 obscure, never reported). Edit would fail to find the object to
3432 edit under some circumstances.
3436 edit under some circumstances.
3433 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3437 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3434 which were causing double-calling of generators. Those eval calls
3438 which were causing double-calling of generators. Those eval calls
3435 were _very_ dangerous, since code with side effects could be
3439 were _very_ dangerous, since code with side effects could be
3436 triggered. As they say, 'eval is evil'... These were the
3440 triggered. As they say, 'eval is evil'... These were the
3437 nastiest evals in IPython. Besides, _ofind is now far simpler,
3441 nastiest evals in IPython. Besides, _ofind is now far simpler,
3438 and it should also be quite a bit faster. Its use of inspect is
3442 and it should also be quite a bit faster. Its use of inspect is
3439 also safer, so perhaps some of the inspect-related crashes I've
3443 also safer, so perhaps some of the inspect-related crashes I've
3440 seen lately with Python 2.3 might be taken care of. That will
3444 seen lately with Python 2.3 might be taken care of. That will
3441 need more testing.
3445 need more testing.
3442
3446
3443 2003-08-17 Fernando Perez <fperez@colorado.edu>
3447 2003-08-17 Fernando Perez <fperez@colorado.edu>
3444
3448
3445 * IPython/iplib.py (InteractiveShell._prefilter): significant
3449 * IPython/iplib.py (InteractiveShell._prefilter): significant
3446 simplifications to the logic for handling user escapes. Faster
3450 simplifications to the logic for handling user escapes. Faster
3447 and simpler code.
3451 and simpler code.
3448
3452
3449 2003-08-14 Fernando Perez <fperez@colorado.edu>
3453 2003-08-14 Fernando Perez <fperez@colorado.edu>
3450
3454
3451 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3455 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3452 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3456 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3453 but it should be quite a bit faster. And the recursive version
3457 but it should be quite a bit faster. And the recursive version
3454 generated O(log N) intermediate storage for all rank>1 arrays,
3458 generated O(log N) intermediate storage for all rank>1 arrays,
3455 even if they were contiguous.
3459 even if they were contiguous.
3456 (l1norm): Added this function.
3460 (l1norm): Added this function.
3457 (norm): Added this function for arbitrary norms (including
3461 (norm): Added this function for arbitrary norms (including
3458 l-infinity). l1 and l2 are still special cases for convenience
3462 l-infinity). l1 and l2 are still special cases for convenience
3459 and speed.
3463 and speed.
3460
3464
3461 2003-08-03 Fernando Perez <fperez@colorado.edu>
3465 2003-08-03 Fernando Perez <fperez@colorado.edu>
3462
3466
3463 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3467 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3464 exceptions, which now raise PendingDeprecationWarnings in Python
3468 exceptions, which now raise PendingDeprecationWarnings in Python
3465 2.3. There were some in Magic and some in Gnuplot2.
3469 2.3. There were some in Magic and some in Gnuplot2.
3466
3470
3467 2003-06-30 Fernando Perez <fperez@colorado.edu>
3471 2003-06-30 Fernando Perez <fperez@colorado.edu>
3468
3472
3469 * IPython/genutils.py (page): modified to call curses only for
3473 * IPython/genutils.py (page): modified to call curses only for
3470 terminals where TERM=='xterm'. After problems under many other
3474 terminals where TERM=='xterm'. After problems under many other
3471 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3475 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3472
3476
3473 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3477 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3474 would be triggered when readline was absent. This was just an old
3478 would be triggered when readline was absent. This was just an old
3475 debugging statement I'd forgotten to take out.
3479 debugging statement I'd forgotten to take out.
3476
3480
3477 2003-06-20 Fernando Perez <fperez@colorado.edu>
3481 2003-06-20 Fernando Perez <fperez@colorado.edu>
3478
3482
3479 * IPython/genutils.py (clock): modified to return only user time
3483 * IPython/genutils.py (clock): modified to return only user time
3480 (not counting system time), after a discussion on scipy. While
3484 (not counting system time), after a discussion on scipy. While
3481 system time may be a useful quantity occasionally, it may much
3485 system time may be a useful quantity occasionally, it may much
3482 more easily be skewed by occasional swapping or other similar
3486 more easily be skewed by occasional swapping or other similar
3483 activity.
3487 activity.
3484
3488
3485 2003-06-05 Fernando Perez <fperez@colorado.edu>
3489 2003-06-05 Fernando Perez <fperez@colorado.edu>
3486
3490
3487 * IPython/numutils.py (identity): new function, for building
3491 * IPython/numutils.py (identity): new function, for building
3488 arbitrary rank Kronecker deltas (mostly backwards compatible with
3492 arbitrary rank Kronecker deltas (mostly backwards compatible with
3489 Numeric.identity)
3493 Numeric.identity)
3490
3494
3491 2003-06-03 Fernando Perez <fperez@colorado.edu>
3495 2003-06-03 Fernando Perez <fperez@colorado.edu>
3492
3496
3493 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3497 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3494 arguments passed to magics with spaces, to allow trailing '\' to
3498 arguments passed to magics with spaces, to allow trailing '\' to
3495 work normally (mainly for Windows users).
3499 work normally (mainly for Windows users).
3496
3500
3497 2003-05-29 Fernando Perez <fperez@colorado.edu>
3501 2003-05-29 Fernando Perez <fperez@colorado.edu>
3498
3502
3499 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3503 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3500 instead of pydoc.help. This fixes a bizarre behavior where
3504 instead of pydoc.help. This fixes a bizarre behavior where
3501 printing '%s' % locals() would trigger the help system. Now
3505 printing '%s' % locals() would trigger the help system. Now
3502 ipython behaves like normal python does.
3506 ipython behaves like normal python does.
3503
3507
3504 Note that if one does 'from pydoc import help', the bizarre
3508 Note that if one does 'from pydoc import help', the bizarre
3505 behavior returns, but this will also happen in normal python, so
3509 behavior returns, but this will also happen in normal python, so
3506 it's not an ipython bug anymore (it has to do with how pydoc.help
3510 it's not an ipython bug anymore (it has to do with how pydoc.help
3507 is implemented).
3511 is implemented).
3508
3512
3509 2003-05-22 Fernando Perez <fperez@colorado.edu>
3513 2003-05-22 Fernando Perez <fperez@colorado.edu>
3510
3514
3511 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3515 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3512 return [] instead of None when nothing matches, also match to end
3516 return [] instead of None when nothing matches, also match to end
3513 of line. Patch by Gary Bishop.
3517 of line. Patch by Gary Bishop.
3514
3518
3515 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3519 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3516 protection as before, for files passed on the command line. This
3520 protection as before, for files passed on the command line. This
3517 prevents the CrashHandler from kicking in if user files call into
3521 prevents the CrashHandler from kicking in if user files call into
3518 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3522 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3519 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3523 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3520
3524
3521 2003-05-20 *** Released version 0.4.0
3525 2003-05-20 *** Released version 0.4.0
3522
3526
3523 2003-05-20 Fernando Perez <fperez@colorado.edu>
3527 2003-05-20 Fernando Perez <fperez@colorado.edu>
3524
3528
3525 * setup.py: added support for manpages. It's a bit hackish b/c of
3529 * setup.py: added support for manpages. It's a bit hackish b/c of
3526 a bug in the way the bdist_rpm distutils target handles gzipped
3530 a bug in the way the bdist_rpm distutils target handles gzipped
3527 manpages, but it works. After a patch by Jack.
3531 manpages, but it works. After a patch by Jack.
3528
3532
3529 2003-05-19 Fernando Perez <fperez@colorado.edu>
3533 2003-05-19 Fernando Perez <fperez@colorado.edu>
3530
3534
3531 * IPython/numutils.py: added a mockup of the kinds module, since
3535 * IPython/numutils.py: added a mockup of the kinds module, since
3532 it was recently removed from Numeric. This way, numutils will
3536 it was recently removed from Numeric. This way, numutils will
3533 work for all users even if they are missing kinds.
3537 work for all users even if they are missing kinds.
3534
3538
3535 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3539 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3536 failure, which can occur with SWIG-wrapped extensions. After a
3540 failure, which can occur with SWIG-wrapped extensions. After a
3537 crash report from Prabhu.
3541 crash report from Prabhu.
3538
3542
3539 2003-05-16 Fernando Perez <fperez@colorado.edu>
3543 2003-05-16 Fernando Perez <fperez@colorado.edu>
3540
3544
3541 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3545 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3542 protect ipython from user code which may call directly
3546 protect ipython from user code which may call directly
3543 sys.excepthook (this looks like an ipython crash to the user, even
3547 sys.excepthook (this looks like an ipython crash to the user, even
3544 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3548 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3545 This is especially important to help users of WxWindows, but may
3549 This is especially important to help users of WxWindows, but may
3546 also be useful in other cases.
3550 also be useful in other cases.
3547
3551
3548 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3552 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3549 an optional tb_offset to be specified, and to preserve exception
3553 an optional tb_offset to be specified, and to preserve exception
3550 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3554 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3551
3555
3552 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3556 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3553
3557
3554 2003-05-15 Fernando Perez <fperez@colorado.edu>
3558 2003-05-15 Fernando Perez <fperez@colorado.edu>
3555
3559
3556 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3560 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3557 installing for a new user under Windows.
3561 installing for a new user under Windows.
3558
3562
3559 2003-05-12 Fernando Perez <fperez@colorado.edu>
3563 2003-05-12 Fernando Perez <fperez@colorado.edu>
3560
3564
3561 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3565 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3562 handler for Emacs comint-based lines. Currently it doesn't do
3566 handler for Emacs comint-based lines. Currently it doesn't do
3563 much (but importantly, it doesn't update the history cache). In
3567 much (but importantly, it doesn't update the history cache). In
3564 the future it may be expanded if Alex needs more functionality
3568 the future it may be expanded if Alex needs more functionality
3565 there.
3569 there.
3566
3570
3567 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3571 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3568 info to crash reports.
3572 info to crash reports.
3569
3573
3570 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3574 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3571 just like Python's -c. Also fixed crash with invalid -color
3575 just like Python's -c. Also fixed crash with invalid -color
3572 option value at startup. Thanks to Will French
3576 option value at startup. Thanks to Will French
3573 <wfrench-AT-bestweb.net> for the bug report.
3577 <wfrench-AT-bestweb.net> for the bug report.
3574
3578
3575 2003-05-09 Fernando Perez <fperez@colorado.edu>
3579 2003-05-09 Fernando Perez <fperez@colorado.edu>
3576
3580
3577 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3581 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3578 to EvalDict (it's a mapping, after all) and simplified its code
3582 to EvalDict (it's a mapping, after all) and simplified its code
3579 quite a bit, after a nice discussion on c.l.py where Gustavo
3583 quite a bit, after a nice discussion on c.l.py where Gustavo
3580 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3584 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3581
3585
3582 2003-04-30 Fernando Perez <fperez@colorado.edu>
3586 2003-04-30 Fernando Perez <fperez@colorado.edu>
3583
3587
3584 * IPython/genutils.py (timings_out): modified it to reduce its
3588 * IPython/genutils.py (timings_out): modified it to reduce its
3585 overhead in the common reps==1 case.
3589 overhead in the common reps==1 case.
3586
3590
3587 2003-04-29 Fernando Perez <fperez@colorado.edu>
3591 2003-04-29 Fernando Perez <fperez@colorado.edu>
3588
3592
3589 * IPython/genutils.py (timings_out): Modified to use the resource
3593 * IPython/genutils.py (timings_out): Modified to use the resource
3590 module, which avoids the wraparound problems of time.clock().
3594 module, which avoids the wraparound problems of time.clock().
3591
3595
3592 2003-04-17 *** Released version 0.2.15pre4
3596 2003-04-17 *** Released version 0.2.15pre4
3593
3597
3594 2003-04-17 Fernando Perez <fperez@colorado.edu>
3598 2003-04-17 Fernando Perez <fperez@colorado.edu>
3595
3599
3596 * setup.py (scriptfiles): Split windows-specific stuff over to a
3600 * setup.py (scriptfiles): Split windows-specific stuff over to a
3597 separate file, in an attempt to have a Windows GUI installer.
3601 separate file, in an attempt to have a Windows GUI installer.
3598 That didn't work, but part of the groundwork is done.
3602 That didn't work, but part of the groundwork is done.
3599
3603
3600 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3604 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3601 indent/unindent with 4 spaces. Particularly useful in combination
3605 indent/unindent with 4 spaces. Particularly useful in combination
3602 with the new auto-indent option.
3606 with the new auto-indent option.
3603
3607
3604 2003-04-16 Fernando Perez <fperez@colorado.edu>
3608 2003-04-16 Fernando Perez <fperez@colorado.edu>
3605
3609
3606 * IPython/Magic.py: various replacements of self.rc for
3610 * IPython/Magic.py: various replacements of self.rc for
3607 self.shell.rc. A lot more remains to be done to fully disentangle
3611 self.shell.rc. A lot more remains to be done to fully disentangle
3608 this class from the main Shell class.
3612 this class from the main Shell class.
3609
3613
3610 * IPython/GnuplotRuntime.py: added checks for mouse support so
3614 * IPython/GnuplotRuntime.py: added checks for mouse support so
3611 that we don't try to enable it if the current gnuplot doesn't
3615 that we don't try to enable it if the current gnuplot doesn't
3612 really support it. Also added checks so that we don't try to
3616 really support it. Also added checks so that we don't try to
3613 enable persist under Windows (where Gnuplot doesn't recognize the
3617 enable persist under Windows (where Gnuplot doesn't recognize the
3614 option).
3618 option).
3615
3619
3616 * IPython/iplib.py (InteractiveShell.interact): Added optional
3620 * IPython/iplib.py (InteractiveShell.interact): Added optional
3617 auto-indenting code, after a patch by King C. Shu
3621 auto-indenting code, after a patch by King C. Shu
3618 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3622 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3619 get along well with pasting indented code. If I ever figure out
3623 get along well with pasting indented code. If I ever figure out
3620 how to make that part go well, it will become on by default.
3624 how to make that part go well, it will become on by default.
3621
3625
3622 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3626 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3623 crash ipython if there was an unmatched '%' in the user's prompt
3627 crash ipython if there was an unmatched '%' in the user's prompt
3624 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3628 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3625
3629
3626 * IPython/iplib.py (InteractiveShell.interact): removed the
3630 * IPython/iplib.py (InteractiveShell.interact): removed the
3627 ability to ask the user whether he wants to crash or not at the
3631 ability to ask the user whether he wants to crash or not at the
3628 'last line' exception handler. Calling functions at that point
3632 'last line' exception handler. Calling functions at that point
3629 changes the stack, and the error reports would have incorrect
3633 changes the stack, and the error reports would have incorrect
3630 tracebacks.
3634 tracebacks.
3631
3635
3632 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3636 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3633 pass through a peger a pretty-printed form of any object. After a
3637 pass through a peger a pretty-printed form of any object. After a
3634 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3638 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3635
3639
3636 2003-04-14 Fernando Perez <fperez@colorado.edu>
3640 2003-04-14 Fernando Perez <fperez@colorado.edu>
3637
3641
3638 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3642 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3639 all files in ~ would be modified at first install (instead of
3643 all files in ~ would be modified at first install (instead of
3640 ~/.ipython). This could be potentially disastrous, as the
3644 ~/.ipython). This could be potentially disastrous, as the
3641 modification (make line-endings native) could damage binary files.
3645 modification (make line-endings native) could damage binary files.
3642
3646
3643 2003-04-10 Fernando Perez <fperez@colorado.edu>
3647 2003-04-10 Fernando Perez <fperez@colorado.edu>
3644
3648
3645 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3649 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3646 handle only lines which are invalid python. This now means that
3650 handle only lines which are invalid python. This now means that
3647 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3651 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3648 for the bug report.
3652 for the bug report.
3649
3653
3650 2003-04-01 Fernando Perez <fperez@colorado.edu>
3654 2003-04-01 Fernando Perez <fperez@colorado.edu>
3651
3655
3652 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3656 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3653 where failing to set sys.last_traceback would crash pdb.pm().
3657 where failing to set sys.last_traceback would crash pdb.pm().
3654 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3658 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3655 report.
3659 report.
3656
3660
3657 2003-03-25 Fernando Perez <fperez@colorado.edu>
3661 2003-03-25 Fernando Perez <fperez@colorado.edu>
3658
3662
3659 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3663 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3660 before printing it (it had a lot of spurious blank lines at the
3664 before printing it (it had a lot of spurious blank lines at the
3661 end).
3665 end).
3662
3666
3663 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3667 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3664 output would be sent 21 times! Obviously people don't use this
3668 output would be sent 21 times! Obviously people don't use this
3665 too often, or I would have heard about it.
3669 too often, or I would have heard about it.
3666
3670
3667 2003-03-24 Fernando Perez <fperez@colorado.edu>
3671 2003-03-24 Fernando Perez <fperez@colorado.edu>
3668
3672
3669 * setup.py (scriptfiles): renamed the data_files parameter from
3673 * setup.py (scriptfiles): renamed the data_files parameter from
3670 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3674 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3671 for the patch.
3675 for the patch.
3672
3676
3673 2003-03-20 Fernando Perez <fperez@colorado.edu>
3677 2003-03-20 Fernando Perez <fperez@colorado.edu>
3674
3678
3675 * IPython/genutils.py (error): added error() and fatal()
3679 * IPython/genutils.py (error): added error() and fatal()
3676 functions.
3680 functions.
3677
3681
3678 2003-03-18 *** Released version 0.2.15pre3
3682 2003-03-18 *** Released version 0.2.15pre3
3679
3683
3680 2003-03-18 Fernando Perez <fperez@colorado.edu>
3684 2003-03-18 Fernando Perez <fperez@colorado.edu>
3681
3685
3682 * setupext/install_data_ext.py
3686 * setupext/install_data_ext.py
3683 (install_data_ext.initialize_options): Class contributed by Jack
3687 (install_data_ext.initialize_options): Class contributed by Jack
3684 Moffit for fixing the old distutils hack. He is sending this to
3688 Moffit for fixing the old distutils hack. He is sending this to
3685 the distutils folks so in the future we may not need it as a
3689 the distutils folks so in the future we may not need it as a
3686 private fix.
3690 private fix.
3687
3691
3688 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3692 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3689 changes for Debian packaging. See his patch for full details.
3693 changes for Debian packaging. See his patch for full details.
3690 The old distutils hack of making the ipythonrc* files carry a
3694 The old distutils hack of making the ipythonrc* files carry a
3691 bogus .py extension is gone, at last. Examples were moved to a
3695 bogus .py extension is gone, at last. Examples were moved to a
3692 separate subdir under doc/, and the separate executable scripts
3696 separate subdir under doc/, and the separate executable scripts
3693 now live in their own directory. Overall a great cleanup. The
3697 now live in their own directory. Overall a great cleanup. The
3694 manual was updated to use the new files, and setup.py has been
3698 manual was updated to use the new files, and setup.py has been
3695 fixed for this setup.
3699 fixed for this setup.
3696
3700
3697 * IPython/PyColorize.py (Parser.usage): made non-executable and
3701 * IPython/PyColorize.py (Parser.usage): made non-executable and
3698 created a pycolor wrapper around it to be included as a script.
3702 created a pycolor wrapper around it to be included as a script.
3699
3703
3700 2003-03-12 *** Released version 0.2.15pre2
3704 2003-03-12 *** Released version 0.2.15pre2
3701
3705
3702 2003-03-12 Fernando Perez <fperez@colorado.edu>
3706 2003-03-12 Fernando Perez <fperez@colorado.edu>
3703
3707
3704 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3708 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3705 long-standing problem with garbage characters in some terminals.
3709 long-standing problem with garbage characters in some terminals.
3706 The issue was really that the \001 and \002 escapes must _only_ be
3710 The issue was really that the \001 and \002 escapes must _only_ be
3707 passed to input prompts (which call readline), but _never_ to
3711 passed to input prompts (which call readline), but _never_ to
3708 normal text to be printed on screen. I changed ColorANSI to have
3712 normal text to be printed on screen. I changed ColorANSI to have
3709 two classes: TermColors and InputTermColors, each with the
3713 two classes: TermColors and InputTermColors, each with the
3710 appropriate escapes for input prompts or normal text. The code in
3714 appropriate escapes for input prompts or normal text. The code in
3711 Prompts.py got slightly more complicated, but this very old and
3715 Prompts.py got slightly more complicated, but this very old and
3712 annoying bug is finally fixed.
3716 annoying bug is finally fixed.
3713
3717
3714 All the credit for nailing down the real origin of this problem
3718 All the credit for nailing down the real origin of this problem
3715 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3719 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3716 *Many* thanks to him for spending quite a bit of effort on this.
3720 *Many* thanks to him for spending quite a bit of effort on this.
3717
3721
3718 2003-03-05 *** Released version 0.2.15pre1
3722 2003-03-05 *** Released version 0.2.15pre1
3719
3723
3720 2003-03-03 Fernando Perez <fperez@colorado.edu>
3724 2003-03-03 Fernando Perez <fperez@colorado.edu>
3721
3725
3722 * IPython/FakeModule.py: Moved the former _FakeModule to a
3726 * IPython/FakeModule.py: Moved the former _FakeModule to a
3723 separate file, because it's also needed by Magic (to fix a similar
3727 separate file, because it's also needed by Magic (to fix a similar
3724 pickle-related issue in @run).
3728 pickle-related issue in @run).
3725
3729
3726 2003-03-02 Fernando Perez <fperez@colorado.edu>
3730 2003-03-02 Fernando Perez <fperez@colorado.edu>
3727
3731
3728 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3732 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3729 the autocall option at runtime.
3733 the autocall option at runtime.
3730 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3734 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3731 across Magic.py to start separating Magic from InteractiveShell.
3735 across Magic.py to start separating Magic from InteractiveShell.
3732 (Magic._ofind): Fixed to return proper namespace for dotted
3736 (Magic._ofind): Fixed to return proper namespace for dotted
3733 names. Before, a dotted name would always return 'not currently
3737 names. Before, a dotted name would always return 'not currently
3734 defined', because it would find the 'parent'. s.x would be found,
3738 defined', because it would find the 'parent'. s.x would be found,
3735 but since 'x' isn't defined by itself, it would get confused.
3739 but since 'x' isn't defined by itself, it would get confused.
3736 (Magic.magic_run): Fixed pickling problems reported by Ralf
3740 (Magic.magic_run): Fixed pickling problems reported by Ralf
3737 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3741 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3738 that I'd used when Mike Heeter reported similar issues at the
3742 that I'd used when Mike Heeter reported similar issues at the
3739 top-level, but now for @run. It boils down to injecting the
3743 top-level, but now for @run. It boils down to injecting the
3740 namespace where code is being executed with something that looks
3744 namespace where code is being executed with something that looks
3741 enough like a module to fool pickle.dump(). Since a pickle stores
3745 enough like a module to fool pickle.dump(). Since a pickle stores
3742 a named reference to the importing module, we need this for
3746 a named reference to the importing module, we need this for
3743 pickles to save something sensible.
3747 pickles to save something sensible.
3744
3748
3745 * IPython/ipmaker.py (make_IPython): added an autocall option.
3749 * IPython/ipmaker.py (make_IPython): added an autocall option.
3746
3750
3747 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3751 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3748 the auto-eval code. Now autocalling is an option, and the code is
3752 the auto-eval code. Now autocalling is an option, and the code is
3749 also vastly safer. There is no more eval() involved at all.
3753 also vastly safer. There is no more eval() involved at all.
3750
3754
3751 2003-03-01 Fernando Perez <fperez@colorado.edu>
3755 2003-03-01 Fernando Perez <fperez@colorado.edu>
3752
3756
3753 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3757 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3754 dict with named keys instead of a tuple.
3758 dict with named keys instead of a tuple.
3755
3759
3756 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3760 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3757
3761
3758 * setup.py (make_shortcut): Fixed message about directories
3762 * setup.py (make_shortcut): Fixed message about directories
3759 created during Windows installation (the directories were ok, just
3763 created during Windows installation (the directories were ok, just
3760 the printed message was misleading). Thanks to Chris Liechti
3764 the printed message was misleading). Thanks to Chris Liechti
3761 <cliechti-AT-gmx.net> for the heads up.
3765 <cliechti-AT-gmx.net> for the heads up.
3762
3766
3763 2003-02-21 Fernando Perez <fperez@colorado.edu>
3767 2003-02-21 Fernando Perez <fperez@colorado.edu>
3764
3768
3765 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3769 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3766 of ValueError exception when checking for auto-execution. This
3770 of ValueError exception when checking for auto-execution. This
3767 one is raised by things like Numeric arrays arr.flat when the
3771 one is raised by things like Numeric arrays arr.flat when the
3768 array is non-contiguous.
3772 array is non-contiguous.
3769
3773
3770 2003-01-31 Fernando Perez <fperez@colorado.edu>
3774 2003-01-31 Fernando Perez <fperez@colorado.edu>
3771
3775
3772 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3776 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3773 not return any value at all (even though the command would get
3777 not return any value at all (even though the command would get
3774 executed).
3778 executed).
3775 (xsys): Flush stdout right after printing the command to ensure
3779 (xsys): Flush stdout right after printing the command to ensure
3776 proper ordering of commands and command output in the total
3780 proper ordering of commands and command output in the total
3777 output.
3781 output.
3778 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3782 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3779 system/getoutput as defaults. The old ones are kept for
3783 system/getoutput as defaults. The old ones are kept for
3780 compatibility reasons, so no code which uses this library needs
3784 compatibility reasons, so no code which uses this library needs
3781 changing.
3785 changing.
3782
3786
3783 2003-01-27 *** Released version 0.2.14
3787 2003-01-27 *** Released version 0.2.14
3784
3788
3785 2003-01-25 Fernando Perez <fperez@colorado.edu>
3789 2003-01-25 Fernando Perez <fperez@colorado.edu>
3786
3790
3787 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3791 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3788 functions defined in previous edit sessions could not be re-edited
3792 functions defined in previous edit sessions could not be re-edited
3789 (because the temp files were immediately removed). Now temp files
3793 (because the temp files were immediately removed). Now temp files
3790 are removed only at IPython's exit.
3794 are removed only at IPython's exit.
3791 (Magic.magic_run): Improved @run to perform shell-like expansions
3795 (Magic.magic_run): Improved @run to perform shell-like expansions
3792 on its arguments (~users and $VARS). With this, @run becomes more
3796 on its arguments (~users and $VARS). With this, @run becomes more
3793 like a normal command-line.
3797 like a normal command-line.
3794
3798
3795 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3799 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3796 bugs related to embedding and cleaned up that code. A fairly
3800 bugs related to embedding and cleaned up that code. A fairly
3797 important one was the impossibility to access the global namespace
3801 important one was the impossibility to access the global namespace
3798 through the embedded IPython (only local variables were visible).
3802 through the embedded IPython (only local variables were visible).
3799
3803
3800 2003-01-14 Fernando Perez <fperez@colorado.edu>
3804 2003-01-14 Fernando Perez <fperez@colorado.edu>
3801
3805
3802 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3806 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3803 auto-calling to be a bit more conservative. Now it doesn't get
3807 auto-calling to be a bit more conservative. Now it doesn't get
3804 triggered if any of '!=()<>' are in the rest of the input line, to
3808 triggered if any of '!=()<>' are in the rest of the input line, to
3805 allow comparing callables. Thanks to Alex for the heads up.
3809 allow comparing callables. Thanks to Alex for the heads up.
3806
3810
3807 2003-01-07 Fernando Perez <fperez@colorado.edu>
3811 2003-01-07 Fernando Perez <fperez@colorado.edu>
3808
3812
3809 * IPython/genutils.py (page): fixed estimation of the number of
3813 * IPython/genutils.py (page): fixed estimation of the number of
3810 lines in a string to be paged to simply count newlines. This
3814 lines in a string to be paged to simply count newlines. This
3811 prevents over-guessing due to embedded escape sequences. A better
3815 prevents over-guessing due to embedded escape sequences. A better
3812 long-term solution would involve stripping out the control chars
3816 long-term solution would involve stripping out the control chars
3813 for the count, but it's potentially so expensive I just don't
3817 for the count, but it's potentially so expensive I just don't
3814 think it's worth doing.
3818 think it's worth doing.
3815
3819
3816 2002-12-19 *** Released version 0.2.14pre50
3820 2002-12-19 *** Released version 0.2.14pre50
3817
3821
3818 2002-12-19 Fernando Perez <fperez@colorado.edu>
3822 2002-12-19 Fernando Perez <fperez@colorado.edu>
3819
3823
3820 * tools/release (version): Changed release scripts to inform
3824 * tools/release (version): Changed release scripts to inform
3821 Andrea and build a NEWS file with a list of recent changes.
3825 Andrea and build a NEWS file with a list of recent changes.
3822
3826
3823 * IPython/ColorANSI.py (__all__): changed terminal detection
3827 * IPython/ColorANSI.py (__all__): changed terminal detection
3824 code. Seems to work better for xterms without breaking
3828 code. Seems to work better for xterms without breaking
3825 konsole. Will need more testing to determine if WinXP and Mac OSX
3829 konsole. Will need more testing to determine if WinXP and Mac OSX
3826 also work ok.
3830 also work ok.
3827
3831
3828 2002-12-18 *** Released version 0.2.14pre49
3832 2002-12-18 *** Released version 0.2.14pre49
3829
3833
3830 2002-12-18 Fernando Perez <fperez@colorado.edu>
3834 2002-12-18 Fernando Perez <fperez@colorado.edu>
3831
3835
3832 * Docs: added new info about Mac OSX, from Andrea.
3836 * Docs: added new info about Mac OSX, from Andrea.
3833
3837
3834 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3838 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3835 allow direct plotting of python strings whose format is the same
3839 allow direct plotting of python strings whose format is the same
3836 of gnuplot data files.
3840 of gnuplot data files.
3837
3841
3838 2002-12-16 Fernando Perez <fperez@colorado.edu>
3842 2002-12-16 Fernando Perez <fperez@colorado.edu>
3839
3843
3840 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3844 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3841 value of exit question to be acknowledged.
3845 value of exit question to be acknowledged.
3842
3846
3843 2002-12-03 Fernando Perez <fperez@colorado.edu>
3847 2002-12-03 Fernando Perez <fperez@colorado.edu>
3844
3848
3845 * IPython/ipmaker.py: removed generators, which had been added
3849 * IPython/ipmaker.py: removed generators, which had been added
3846 by mistake in an earlier debugging run. This was causing trouble
3850 by mistake in an earlier debugging run. This was causing trouble
3847 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3851 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3848 for pointing this out.
3852 for pointing this out.
3849
3853
3850 2002-11-17 Fernando Perez <fperez@colorado.edu>
3854 2002-11-17 Fernando Perez <fperez@colorado.edu>
3851
3855
3852 * Manual: updated the Gnuplot section.
3856 * Manual: updated the Gnuplot section.
3853
3857
3854 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3858 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3855 a much better split of what goes in Runtime and what goes in
3859 a much better split of what goes in Runtime and what goes in
3856 Interactive.
3860 Interactive.
3857
3861
3858 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3862 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3859 being imported from iplib.
3863 being imported from iplib.
3860
3864
3861 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3865 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3862 for command-passing. Now the global Gnuplot instance is called
3866 for command-passing. Now the global Gnuplot instance is called
3863 'gp' instead of 'g', which was really a far too fragile and
3867 'gp' instead of 'g', which was really a far too fragile and
3864 common name.
3868 common name.
3865
3869
3866 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3870 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3867 bounding boxes generated by Gnuplot for square plots.
3871 bounding boxes generated by Gnuplot for square plots.
3868
3872
3869 * IPython/genutils.py (popkey): new function added. I should
3873 * IPython/genutils.py (popkey): new function added. I should
3870 suggest this on c.l.py as a dict method, it seems useful.
3874 suggest this on c.l.py as a dict method, it seems useful.
3871
3875
3872 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3876 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3873 to transparently handle PostScript generation. MUCH better than
3877 to transparently handle PostScript generation. MUCH better than
3874 the previous plot_eps/replot_eps (which I removed now). The code
3878 the previous plot_eps/replot_eps (which I removed now). The code
3875 is also fairly clean and well documented now (including
3879 is also fairly clean and well documented now (including
3876 docstrings).
3880 docstrings).
3877
3881
3878 2002-11-13 Fernando Perez <fperez@colorado.edu>
3882 2002-11-13 Fernando Perez <fperez@colorado.edu>
3879
3883
3880 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3884 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3881 (inconsistent with options).
3885 (inconsistent with options).
3882
3886
3883 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3887 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3884 manually disabled, I don't know why. Fixed it.
3888 manually disabled, I don't know why. Fixed it.
3885 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3889 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3886 eps output.
3890 eps output.
3887
3891
3888 2002-11-12 Fernando Perez <fperez@colorado.edu>
3892 2002-11-12 Fernando Perez <fperez@colorado.edu>
3889
3893
3890 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3894 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3891 don't propagate up to caller. Fixes crash reported by François
3895 don't propagate up to caller. Fixes crash reported by François
3892 Pinard.
3896 Pinard.
3893
3897
3894 2002-11-09 Fernando Perez <fperez@colorado.edu>
3898 2002-11-09 Fernando Perez <fperez@colorado.edu>
3895
3899
3896 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3900 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3897 history file for new users.
3901 history file for new users.
3898 (make_IPython): fixed bug where initial install would leave the
3902 (make_IPython): fixed bug where initial install would leave the
3899 user running in the .ipython dir.
3903 user running in the .ipython dir.
3900 (make_IPython): fixed bug where config dir .ipython would be
3904 (make_IPython): fixed bug where config dir .ipython would be
3901 created regardless of the given -ipythondir option. Thanks to Cory
3905 created regardless of the given -ipythondir option. Thanks to Cory
3902 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3906 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3903
3907
3904 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3908 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3905 type confirmations. Will need to use it in all of IPython's code
3909 type confirmations. Will need to use it in all of IPython's code
3906 consistently.
3910 consistently.
3907
3911
3908 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3912 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3909 context to print 31 lines instead of the default 5. This will make
3913 context to print 31 lines instead of the default 5. This will make
3910 the crash reports extremely detailed in case the problem is in
3914 the crash reports extremely detailed in case the problem is in
3911 libraries I don't have access to.
3915 libraries I don't have access to.
3912
3916
3913 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3917 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3914 line of defense' code to still crash, but giving users fair
3918 line of defense' code to still crash, but giving users fair
3915 warning. I don't want internal errors to go unreported: if there's
3919 warning. I don't want internal errors to go unreported: if there's
3916 an internal problem, IPython should crash and generate a full
3920 an internal problem, IPython should crash and generate a full
3917 report.
3921 report.
3918
3922
3919 2002-11-08 Fernando Perez <fperez@colorado.edu>
3923 2002-11-08 Fernando Perez <fperez@colorado.edu>
3920
3924
3921 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3925 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3922 otherwise uncaught exceptions which can appear if people set
3926 otherwise uncaught exceptions which can appear if people set
3923 sys.stdout to something badly broken. Thanks to a crash report
3927 sys.stdout to something badly broken. Thanks to a crash report
3924 from henni-AT-mail.brainbot.com.
3928 from henni-AT-mail.brainbot.com.
3925
3929
3926 2002-11-04 Fernando Perez <fperez@colorado.edu>
3930 2002-11-04 Fernando Perez <fperez@colorado.edu>
3927
3931
3928 * IPython/iplib.py (InteractiveShell.interact): added
3932 * IPython/iplib.py (InteractiveShell.interact): added
3929 __IPYTHON__active to the builtins. It's a flag which goes on when
3933 __IPYTHON__active to the builtins. It's a flag which goes on when
3930 the interaction starts and goes off again when it stops. This
3934 the interaction starts and goes off again when it stops. This
3931 allows embedding code to detect being inside IPython. Before this
3935 allows embedding code to detect being inside IPython. Before this
3932 was done via __IPYTHON__, but that only shows that an IPython
3936 was done via __IPYTHON__, but that only shows that an IPython
3933 instance has been created.
3937 instance has been created.
3934
3938
3935 * IPython/Magic.py (Magic.magic_env): I realized that in a
3939 * IPython/Magic.py (Magic.magic_env): I realized that in a
3936 UserDict, instance.data holds the data as a normal dict. So I
3940 UserDict, instance.data holds the data as a normal dict. So I
3937 modified @env to return os.environ.data instead of rebuilding a
3941 modified @env to return os.environ.data instead of rebuilding a
3938 dict by hand.
3942 dict by hand.
3939
3943
3940 2002-11-02 Fernando Perez <fperez@colorado.edu>
3944 2002-11-02 Fernando Perez <fperez@colorado.edu>
3941
3945
3942 * IPython/genutils.py (warn): changed so that level 1 prints no
3946 * IPython/genutils.py (warn): changed so that level 1 prints no
3943 header. Level 2 is now the default (with 'WARNING' header, as
3947 header. Level 2 is now the default (with 'WARNING' header, as
3944 before). I think I tracked all places where changes were needed in
3948 before). I think I tracked all places where changes were needed in
3945 IPython, but outside code using the old level numbering may have
3949 IPython, but outside code using the old level numbering may have
3946 broken.
3950 broken.
3947
3951
3948 * IPython/iplib.py (InteractiveShell.runcode): added this to
3952 * IPython/iplib.py (InteractiveShell.runcode): added this to
3949 handle the tracebacks in SystemExit traps correctly. The previous
3953 handle the tracebacks in SystemExit traps correctly. The previous
3950 code (through interact) was printing more of the stack than
3954 code (through interact) was printing more of the stack than
3951 necessary, showing IPython internal code to the user.
3955 necessary, showing IPython internal code to the user.
3952
3956
3953 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3957 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3954 default. Now that the default at the confirmation prompt is yes,
3958 default. Now that the default at the confirmation prompt is yes,
3955 it's not so intrusive. François' argument that ipython sessions
3959 it's not so intrusive. François' argument that ipython sessions
3956 tend to be complex enough not to lose them from an accidental C-d,
3960 tend to be complex enough not to lose them from an accidental C-d,
3957 is a valid one.
3961 is a valid one.
3958
3962
3959 * IPython/iplib.py (InteractiveShell.interact): added a
3963 * IPython/iplib.py (InteractiveShell.interact): added a
3960 showtraceback() call to the SystemExit trap, and modified the exit
3964 showtraceback() call to the SystemExit trap, and modified the exit
3961 confirmation to have yes as the default.
3965 confirmation to have yes as the default.
3962
3966
3963 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3967 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3964 this file. It's been gone from the code for a long time, this was
3968 this file. It's been gone from the code for a long time, this was
3965 simply leftover junk.
3969 simply leftover junk.
3966
3970
3967 2002-11-01 Fernando Perez <fperez@colorado.edu>
3971 2002-11-01 Fernando Perez <fperez@colorado.edu>
3968
3972
3969 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3973 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3970 added. If set, IPython now traps EOF and asks for
3974 added. If set, IPython now traps EOF and asks for
3971 confirmation. After a request by François Pinard.
3975 confirmation. After a request by François Pinard.
3972
3976
3973 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3977 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3974 of @abort, and with a new (better) mechanism for handling the
3978 of @abort, and with a new (better) mechanism for handling the
3975 exceptions.
3979 exceptions.
3976
3980
3977 2002-10-27 Fernando Perez <fperez@colorado.edu>
3981 2002-10-27 Fernando Perez <fperez@colorado.edu>
3978
3982
3979 * IPython/usage.py (__doc__): updated the --help information and
3983 * IPython/usage.py (__doc__): updated the --help information and
3980 the ipythonrc file to indicate that -log generates
3984 the ipythonrc file to indicate that -log generates
3981 ./ipython.log. Also fixed the corresponding info in @logstart.
3985 ./ipython.log. Also fixed the corresponding info in @logstart.
3982 This and several other fixes in the manuals thanks to reports by
3986 This and several other fixes in the manuals thanks to reports by
3983 François Pinard <pinard-AT-iro.umontreal.ca>.
3987 François Pinard <pinard-AT-iro.umontreal.ca>.
3984
3988
3985 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3989 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3986 refer to @logstart (instead of @log, which doesn't exist).
3990 refer to @logstart (instead of @log, which doesn't exist).
3987
3991
3988 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3992 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3989 AttributeError crash. Thanks to Christopher Armstrong
3993 AttributeError crash. Thanks to Christopher Armstrong
3990 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3994 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3991 introduced recently (in 0.2.14pre37) with the fix to the eval
3995 introduced recently (in 0.2.14pre37) with the fix to the eval
3992 problem mentioned below.
3996 problem mentioned below.
3993
3997
3994 2002-10-17 Fernando Perez <fperez@colorado.edu>
3998 2002-10-17 Fernando Perez <fperez@colorado.edu>
3995
3999
3996 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4000 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3997 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4001 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3998
4002
3999 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4003 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4000 this function to fix a problem reported by Alex Schmolck. He saw
4004 this function to fix a problem reported by Alex Schmolck. He saw
4001 it with list comprehensions and generators, which were getting
4005 it with list comprehensions and generators, which were getting
4002 called twice. The real problem was an 'eval' call in testing for
4006 called twice. The real problem was an 'eval' call in testing for
4003 automagic which was evaluating the input line silently.
4007 automagic which was evaluating the input line silently.
4004
4008
4005 This is a potentially very nasty bug, if the input has side
4009 This is a potentially very nasty bug, if the input has side
4006 effects which must not be repeated. The code is much cleaner now,
4010 effects which must not be repeated. The code is much cleaner now,
4007 without any blanket 'except' left and with a regexp test for
4011 without any blanket 'except' left and with a regexp test for
4008 actual function names.
4012 actual function names.
4009
4013
4010 But an eval remains, which I'm not fully comfortable with. I just
4014 But an eval remains, which I'm not fully comfortable with. I just
4011 don't know how to find out if an expression could be a callable in
4015 don't know how to find out if an expression could be a callable in
4012 the user's namespace without doing an eval on the string. However
4016 the user's namespace without doing an eval on the string. However
4013 that string is now much more strictly checked so that no code
4017 that string is now much more strictly checked so that no code
4014 slips by, so the eval should only happen for things that can
4018 slips by, so the eval should only happen for things that can
4015 really be only function/method names.
4019 really be only function/method names.
4016
4020
4017 2002-10-15 Fernando Perez <fperez@colorado.edu>
4021 2002-10-15 Fernando Perez <fperez@colorado.edu>
4018
4022
4019 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4023 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4020 OSX information to main manual, removed README_Mac_OSX file from
4024 OSX information to main manual, removed README_Mac_OSX file from
4021 distribution. Also updated credits for recent additions.
4025 distribution. Also updated credits for recent additions.
4022
4026
4023 2002-10-10 Fernando Perez <fperez@colorado.edu>
4027 2002-10-10 Fernando Perez <fperez@colorado.edu>
4024
4028
4025 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4029 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4026 terminal-related issues. Many thanks to Andrea Riciputi
4030 terminal-related issues. Many thanks to Andrea Riciputi
4027 <andrea.riciputi-AT-libero.it> for writing it.
4031 <andrea.riciputi-AT-libero.it> for writing it.
4028
4032
4029 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4033 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4030 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4034 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4031
4035
4032 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4036 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4033 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4037 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4034 <syver-en-AT-online.no> who both submitted patches for this problem.
4038 <syver-en-AT-online.no> who both submitted patches for this problem.
4035
4039
4036 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4040 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4037 global embedding to make sure that things don't overwrite user
4041 global embedding to make sure that things don't overwrite user
4038 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4042 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4039
4043
4040 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4044 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4041 compatibility. Thanks to Hayden Callow
4045 compatibility. Thanks to Hayden Callow
4042 <h.callow-AT-elec.canterbury.ac.nz>
4046 <h.callow-AT-elec.canterbury.ac.nz>
4043
4047
4044 2002-10-04 Fernando Perez <fperez@colorado.edu>
4048 2002-10-04 Fernando Perez <fperez@colorado.edu>
4045
4049
4046 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4050 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4047 Gnuplot.File objects.
4051 Gnuplot.File objects.
4048
4052
4049 2002-07-23 Fernando Perez <fperez@colorado.edu>
4053 2002-07-23 Fernando Perez <fperez@colorado.edu>
4050
4054
4051 * IPython/genutils.py (timing): Added timings() and timing() for
4055 * IPython/genutils.py (timing): Added timings() and timing() for
4052 quick access to the most commonly needed data, the execution
4056 quick access to the most commonly needed data, the execution
4053 times. Old timing() renamed to timings_out().
4057 times. Old timing() renamed to timings_out().
4054
4058
4055 2002-07-18 Fernando Perez <fperez@colorado.edu>
4059 2002-07-18 Fernando Perez <fperez@colorado.edu>
4056
4060
4057 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4061 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4058 bug with nested instances disrupting the parent's tab completion.
4062 bug with nested instances disrupting the parent's tab completion.
4059
4063
4060 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4064 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4061 all_completions code to begin the emacs integration.
4065 all_completions code to begin the emacs integration.
4062
4066
4063 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4067 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4064 argument to allow titling individual arrays when plotting.
4068 argument to allow titling individual arrays when plotting.
4065
4069
4066 2002-07-15 Fernando Perez <fperez@colorado.edu>
4070 2002-07-15 Fernando Perez <fperez@colorado.edu>
4067
4071
4068 * setup.py (make_shortcut): changed to retrieve the value of
4072 * setup.py (make_shortcut): changed to retrieve the value of
4069 'Program Files' directory from the registry (this value changes in
4073 'Program Files' directory from the registry (this value changes in
4070 non-english versions of Windows). Thanks to Thomas Fanslau
4074 non-english versions of Windows). Thanks to Thomas Fanslau
4071 <tfanslau-AT-gmx.de> for the report.
4075 <tfanslau-AT-gmx.de> for the report.
4072
4076
4073 2002-07-10 Fernando Perez <fperez@colorado.edu>
4077 2002-07-10 Fernando Perez <fperez@colorado.edu>
4074
4078
4075 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4079 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4076 a bug in pdb, which crashes if a line with only whitespace is
4080 a bug in pdb, which crashes if a line with only whitespace is
4077 entered. Bug report submitted to sourceforge.
4081 entered. Bug report submitted to sourceforge.
4078
4082
4079 2002-07-09 Fernando Perez <fperez@colorado.edu>
4083 2002-07-09 Fernando Perez <fperez@colorado.edu>
4080
4084
4081 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4085 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4082 reporting exceptions (it's a bug in inspect.py, I just set a
4086 reporting exceptions (it's a bug in inspect.py, I just set a
4083 workaround).
4087 workaround).
4084
4088
4085 2002-07-08 Fernando Perez <fperez@colorado.edu>
4089 2002-07-08 Fernando Perez <fperez@colorado.edu>
4086
4090
4087 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4091 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4088 __IPYTHON__ in __builtins__ to show up in user_ns.
4092 __IPYTHON__ in __builtins__ to show up in user_ns.
4089
4093
4090 2002-07-03 Fernando Perez <fperez@colorado.edu>
4094 2002-07-03 Fernando Perez <fperez@colorado.edu>
4091
4095
4092 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4096 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4093 name from @gp_set_instance to @gp_set_default.
4097 name from @gp_set_instance to @gp_set_default.
4094
4098
4095 * IPython/ipmaker.py (make_IPython): default editor value set to
4099 * IPython/ipmaker.py (make_IPython): default editor value set to
4096 '0' (a string), to match the rc file. Otherwise will crash when
4100 '0' (a string), to match the rc file. Otherwise will crash when
4097 .strip() is called on it.
4101 .strip() is called on it.
4098
4102
4099
4103
4100 2002-06-28 Fernando Perez <fperez@colorado.edu>
4104 2002-06-28 Fernando Perez <fperez@colorado.edu>
4101
4105
4102 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4106 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4103 of files in current directory when a file is executed via
4107 of files in current directory when a file is executed via
4104 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4108 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4105
4109
4106 * setup.py (manfiles): fix for rpm builds, submitted by RA
4110 * setup.py (manfiles): fix for rpm builds, submitted by RA
4107 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4111 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4108
4112
4109 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4113 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4110 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4114 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4111 string!). A. Schmolck caught this one.
4115 string!). A. Schmolck caught this one.
4112
4116
4113 2002-06-27 Fernando Perez <fperez@colorado.edu>
4117 2002-06-27 Fernando Perez <fperez@colorado.edu>
4114
4118
4115 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4119 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4116 defined files at the cmd line. __name__ wasn't being set to
4120 defined files at the cmd line. __name__ wasn't being set to
4117 __main__.
4121 __main__.
4118
4122
4119 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4123 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4120 regular lists and tuples besides Numeric arrays.
4124 regular lists and tuples besides Numeric arrays.
4121
4125
4122 * IPython/Prompts.py (CachedOutput.__call__): Added output
4126 * IPython/Prompts.py (CachedOutput.__call__): Added output
4123 supression for input ending with ';'. Similar to Mathematica and
4127 supression for input ending with ';'. Similar to Mathematica and
4124 Matlab. The _* vars and Out[] list are still updated, just like
4128 Matlab. The _* vars and Out[] list are still updated, just like
4125 Mathematica behaves.
4129 Mathematica behaves.
4126
4130
4127 2002-06-25 Fernando Perez <fperez@colorado.edu>
4131 2002-06-25 Fernando Perez <fperez@colorado.edu>
4128
4132
4129 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4133 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4130 .ini extensions for profiels under Windows.
4134 .ini extensions for profiels under Windows.
4131
4135
4132 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4136 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4133 string form. Fix contributed by Alexander Schmolck
4137 string form. Fix contributed by Alexander Schmolck
4134 <a.schmolck-AT-gmx.net>
4138 <a.schmolck-AT-gmx.net>
4135
4139
4136 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4140 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4137 pre-configured Gnuplot instance.
4141 pre-configured Gnuplot instance.
4138
4142
4139 2002-06-21 Fernando Perez <fperez@colorado.edu>
4143 2002-06-21 Fernando Perez <fperez@colorado.edu>
4140
4144
4141 * IPython/numutils.py (exp_safe): new function, works around the
4145 * IPython/numutils.py (exp_safe): new function, works around the
4142 underflow problems in Numeric.
4146 underflow problems in Numeric.
4143 (log2): New fn. Safe log in base 2: returns exact integer answer
4147 (log2): New fn. Safe log in base 2: returns exact integer answer
4144 for exact integer powers of 2.
4148 for exact integer powers of 2.
4145
4149
4146 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4150 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4147 properly.
4151 properly.
4148
4152
4149 2002-06-20 Fernando Perez <fperez@colorado.edu>
4153 2002-06-20 Fernando Perez <fperez@colorado.edu>
4150
4154
4151 * IPython/genutils.py (timing): new function like
4155 * IPython/genutils.py (timing): new function like
4152 Mathematica's. Similar to time_test, but returns more info.
4156 Mathematica's. Similar to time_test, but returns more info.
4153
4157
4154 2002-06-18 Fernando Perez <fperez@colorado.edu>
4158 2002-06-18 Fernando Perez <fperez@colorado.edu>
4155
4159
4156 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4160 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4157 according to Mike Heeter's suggestions.
4161 according to Mike Heeter's suggestions.
4158
4162
4159 2002-06-16 Fernando Perez <fperez@colorado.edu>
4163 2002-06-16 Fernando Perez <fperez@colorado.edu>
4160
4164
4161 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4165 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4162 system. GnuplotMagic is gone as a user-directory option. New files
4166 system. GnuplotMagic is gone as a user-directory option. New files
4163 make it easier to use all the gnuplot stuff both from external
4167 make it easier to use all the gnuplot stuff both from external
4164 programs as well as from IPython. Had to rewrite part of
4168 programs as well as from IPython. Had to rewrite part of
4165 hardcopy() b/c of a strange bug: often the ps files simply don't
4169 hardcopy() b/c of a strange bug: often the ps files simply don't
4166 get created, and require a repeat of the command (often several
4170 get created, and require a repeat of the command (often several
4167 times).
4171 times).
4168
4172
4169 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4173 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4170 resolve output channel at call time, so that if sys.stderr has
4174 resolve output channel at call time, so that if sys.stderr has
4171 been redirected by user this gets honored.
4175 been redirected by user this gets honored.
4172
4176
4173 2002-06-13 Fernando Perez <fperez@colorado.edu>
4177 2002-06-13 Fernando Perez <fperez@colorado.edu>
4174
4178
4175 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4179 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4176 IPShell. Kept a copy with the old names to avoid breaking people's
4180 IPShell. Kept a copy with the old names to avoid breaking people's
4177 embedded code.
4181 embedded code.
4178
4182
4179 * IPython/ipython: simplified it to the bare minimum after
4183 * IPython/ipython: simplified it to the bare minimum after
4180 Holger's suggestions. Added info about how to use it in
4184 Holger's suggestions. Added info about how to use it in
4181 PYTHONSTARTUP.
4185 PYTHONSTARTUP.
4182
4186
4183 * IPython/Shell.py (IPythonShell): changed the options passing
4187 * IPython/Shell.py (IPythonShell): changed the options passing
4184 from a string with funky %s replacements to a straight list. Maybe
4188 from a string with funky %s replacements to a straight list. Maybe
4185 a bit more typing, but it follows sys.argv conventions, so there's
4189 a bit more typing, but it follows sys.argv conventions, so there's
4186 less special-casing to remember.
4190 less special-casing to remember.
4187
4191
4188 2002-06-12 Fernando Perez <fperez@colorado.edu>
4192 2002-06-12 Fernando Perez <fperez@colorado.edu>
4189
4193
4190 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4194 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4191 command. Thanks to a suggestion by Mike Heeter.
4195 command. Thanks to a suggestion by Mike Heeter.
4192 (Magic.magic_pfile): added behavior to look at filenames if given
4196 (Magic.magic_pfile): added behavior to look at filenames if given
4193 arg is not a defined object.
4197 arg is not a defined object.
4194 (Magic.magic_save): New @save function to save code snippets. Also
4198 (Magic.magic_save): New @save function to save code snippets. Also
4195 a Mike Heeter idea.
4199 a Mike Heeter idea.
4196
4200
4197 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4201 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4198 plot() and replot(). Much more convenient now, especially for
4202 plot() and replot(). Much more convenient now, especially for
4199 interactive use.
4203 interactive use.
4200
4204
4201 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4205 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4202 filenames.
4206 filenames.
4203
4207
4204 2002-06-02 Fernando Perez <fperez@colorado.edu>
4208 2002-06-02 Fernando Perez <fperez@colorado.edu>
4205
4209
4206 * IPython/Struct.py (Struct.__init__): modified to admit
4210 * IPython/Struct.py (Struct.__init__): modified to admit
4207 initialization via another struct.
4211 initialization via another struct.
4208
4212
4209 * IPython/genutils.py (SystemExec.__init__): New stateful
4213 * IPython/genutils.py (SystemExec.__init__): New stateful
4210 interface to xsys and bq. Useful for writing system scripts.
4214 interface to xsys and bq. Useful for writing system scripts.
4211
4215
4212 2002-05-30 Fernando Perez <fperez@colorado.edu>
4216 2002-05-30 Fernando Perez <fperez@colorado.edu>
4213
4217
4214 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4218 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4215 documents. This will make the user download smaller (it's getting
4219 documents. This will make the user download smaller (it's getting
4216 too big).
4220 too big).
4217
4221
4218 2002-05-29 Fernando Perez <fperez@colorado.edu>
4222 2002-05-29 Fernando Perez <fperez@colorado.edu>
4219
4223
4220 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4224 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4221 fix problems with shelve and pickle. Seems to work, but I don't
4225 fix problems with shelve and pickle. Seems to work, but I don't
4222 know if corner cases break it. Thanks to Mike Heeter
4226 know if corner cases break it. Thanks to Mike Heeter
4223 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4227 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4224
4228
4225 2002-05-24 Fernando Perez <fperez@colorado.edu>
4229 2002-05-24 Fernando Perez <fperez@colorado.edu>
4226
4230
4227 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4231 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4228 macros having broken.
4232 macros having broken.
4229
4233
4230 2002-05-21 Fernando Perez <fperez@colorado.edu>
4234 2002-05-21 Fernando Perez <fperez@colorado.edu>
4231
4235
4232 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4236 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4233 introduced logging bug: all history before logging started was
4237 introduced logging bug: all history before logging started was
4234 being written one character per line! This came from the redesign
4238 being written one character per line! This came from the redesign
4235 of the input history as a special list which slices to strings,
4239 of the input history as a special list which slices to strings,
4236 not to lists.
4240 not to lists.
4237
4241
4238 2002-05-20 Fernando Perez <fperez@colorado.edu>
4242 2002-05-20 Fernando Perez <fperez@colorado.edu>
4239
4243
4240 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4244 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4241 be an attribute of all classes in this module. The design of these
4245 be an attribute of all classes in this module. The design of these
4242 classes needs some serious overhauling.
4246 classes needs some serious overhauling.
4243
4247
4244 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4248 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4245 which was ignoring '_' in option names.
4249 which was ignoring '_' in option names.
4246
4250
4247 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4251 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4248 'Verbose_novars' to 'Context' and made it the new default. It's a
4252 'Verbose_novars' to 'Context' and made it the new default. It's a
4249 bit more readable and also safer than verbose.
4253 bit more readable and also safer than verbose.
4250
4254
4251 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4255 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4252 triple-quoted strings.
4256 triple-quoted strings.
4253
4257
4254 * IPython/OInspect.py (__all__): new module exposing the object
4258 * IPython/OInspect.py (__all__): new module exposing the object
4255 introspection facilities. Now the corresponding magics are dummy
4259 introspection facilities. Now the corresponding magics are dummy
4256 wrappers around this. Having this module will make it much easier
4260 wrappers around this. Having this module will make it much easier
4257 to put these functions into our modified pdb.
4261 to put these functions into our modified pdb.
4258 This new object inspector system uses the new colorizing module,
4262 This new object inspector system uses the new colorizing module,
4259 so source code and other things are nicely syntax highlighted.
4263 so source code and other things are nicely syntax highlighted.
4260
4264
4261 2002-05-18 Fernando Perez <fperez@colorado.edu>
4265 2002-05-18 Fernando Perez <fperez@colorado.edu>
4262
4266
4263 * IPython/ColorANSI.py: Split the coloring tools into a separate
4267 * IPython/ColorANSI.py: Split the coloring tools into a separate
4264 module so I can use them in other code easier (they were part of
4268 module so I can use them in other code easier (they were part of
4265 ultraTB).
4269 ultraTB).
4266
4270
4267 2002-05-17 Fernando Perez <fperez@colorado.edu>
4271 2002-05-17 Fernando Perez <fperez@colorado.edu>
4268
4272
4269 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4273 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4270 fixed it to set the global 'g' also to the called instance, as
4274 fixed it to set the global 'g' also to the called instance, as
4271 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4275 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4272 user's 'g' variables).
4276 user's 'g' variables).
4273
4277
4274 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4278 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4275 global variables (aliases to _ih,_oh) so that users which expect
4279 global variables (aliases to _ih,_oh) so that users which expect
4276 In[5] or Out[7] to work aren't unpleasantly surprised.
4280 In[5] or Out[7] to work aren't unpleasantly surprised.
4277 (InputList.__getslice__): new class to allow executing slices of
4281 (InputList.__getslice__): new class to allow executing slices of
4278 input history directly. Very simple class, complements the use of
4282 input history directly. Very simple class, complements the use of
4279 macros.
4283 macros.
4280
4284
4281 2002-05-16 Fernando Perez <fperez@colorado.edu>
4285 2002-05-16 Fernando Perez <fperez@colorado.edu>
4282
4286
4283 * setup.py (docdirbase): make doc directory be just doc/IPython
4287 * setup.py (docdirbase): make doc directory be just doc/IPython
4284 without version numbers, it will reduce clutter for users.
4288 without version numbers, it will reduce clutter for users.
4285
4289
4286 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4290 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4287 execfile call to prevent possible memory leak. See for details:
4291 execfile call to prevent possible memory leak. See for details:
4288 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4292 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4289
4293
4290 2002-05-15 Fernando Perez <fperez@colorado.edu>
4294 2002-05-15 Fernando Perez <fperez@colorado.edu>
4291
4295
4292 * IPython/Magic.py (Magic.magic_psource): made the object
4296 * IPython/Magic.py (Magic.magic_psource): made the object
4293 introspection names be more standard: pdoc, pdef, pfile and
4297 introspection names be more standard: pdoc, pdef, pfile and
4294 psource. They all print/page their output, and it makes
4298 psource. They all print/page their output, and it makes
4295 remembering them easier. Kept old names for compatibility as
4299 remembering them easier. Kept old names for compatibility as
4296 aliases.
4300 aliases.
4297
4301
4298 2002-05-14 Fernando Perez <fperez@colorado.edu>
4302 2002-05-14 Fernando Perez <fperez@colorado.edu>
4299
4303
4300 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4304 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4301 what the mouse problem was. The trick is to use gnuplot with temp
4305 what the mouse problem was. The trick is to use gnuplot with temp
4302 files and NOT with pipes (for data communication), because having
4306 files and NOT with pipes (for data communication), because having
4303 both pipes and the mouse on is bad news.
4307 both pipes and the mouse on is bad news.
4304
4308
4305 2002-05-13 Fernando Perez <fperez@colorado.edu>
4309 2002-05-13 Fernando Perez <fperez@colorado.edu>
4306
4310
4307 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4311 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4308 bug. Information would be reported about builtins even when
4312 bug. Information would be reported about builtins even when
4309 user-defined functions overrode them.
4313 user-defined functions overrode them.
4310
4314
4311 2002-05-11 Fernando Perez <fperez@colorado.edu>
4315 2002-05-11 Fernando Perez <fperez@colorado.edu>
4312
4316
4313 * IPython/__init__.py (__all__): removed FlexCompleter from
4317 * IPython/__init__.py (__all__): removed FlexCompleter from
4314 __all__ so that things don't fail in platforms without readline.
4318 __all__ so that things don't fail in platforms without readline.
4315
4319
4316 2002-05-10 Fernando Perez <fperez@colorado.edu>
4320 2002-05-10 Fernando Perez <fperez@colorado.edu>
4317
4321
4318 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4322 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4319 it requires Numeric, effectively making Numeric a dependency for
4323 it requires Numeric, effectively making Numeric a dependency for
4320 IPython.
4324 IPython.
4321
4325
4322 * Released 0.2.13
4326 * Released 0.2.13
4323
4327
4324 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4328 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4325 profiler interface. Now all the major options from the profiler
4329 profiler interface. Now all the major options from the profiler
4326 module are directly supported in IPython, both for single
4330 module are directly supported in IPython, both for single
4327 expressions (@prun) and for full programs (@run -p).
4331 expressions (@prun) and for full programs (@run -p).
4328
4332
4329 2002-05-09 Fernando Perez <fperez@colorado.edu>
4333 2002-05-09 Fernando Perez <fperez@colorado.edu>
4330
4334
4331 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4335 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4332 magic properly formatted for screen.
4336 magic properly formatted for screen.
4333
4337
4334 * setup.py (make_shortcut): Changed things to put pdf version in
4338 * setup.py (make_shortcut): Changed things to put pdf version in
4335 doc/ instead of doc/manual (had to change lyxport a bit).
4339 doc/ instead of doc/manual (had to change lyxport a bit).
4336
4340
4337 * IPython/Magic.py (Profile.string_stats): made profile runs go
4341 * IPython/Magic.py (Profile.string_stats): made profile runs go
4338 through pager (they are long and a pager allows searching, saving,
4342 through pager (they are long and a pager allows searching, saving,
4339 etc.)
4343 etc.)
4340
4344
4341 2002-05-08 Fernando Perez <fperez@colorado.edu>
4345 2002-05-08 Fernando Perez <fperez@colorado.edu>
4342
4346
4343 * Released 0.2.12
4347 * Released 0.2.12
4344
4348
4345 2002-05-06 Fernando Perez <fperez@colorado.edu>
4349 2002-05-06 Fernando Perez <fperez@colorado.edu>
4346
4350
4347 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4351 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4348 introduced); 'hist n1 n2' was broken.
4352 introduced); 'hist n1 n2' was broken.
4349 (Magic.magic_pdb): added optional on/off arguments to @pdb
4353 (Magic.magic_pdb): added optional on/off arguments to @pdb
4350 (Magic.magic_run): added option -i to @run, which executes code in
4354 (Magic.magic_run): added option -i to @run, which executes code in
4351 the IPython namespace instead of a clean one. Also added @irun as
4355 the IPython namespace instead of a clean one. Also added @irun as
4352 an alias to @run -i.
4356 an alias to @run -i.
4353
4357
4354 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4358 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4355 fixed (it didn't really do anything, the namespaces were wrong).
4359 fixed (it didn't really do anything, the namespaces were wrong).
4356
4360
4357 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4361 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4358
4362
4359 * IPython/__init__.py (__all__): Fixed package namespace, now
4363 * IPython/__init__.py (__all__): Fixed package namespace, now
4360 'import IPython' does give access to IPython.<all> as
4364 'import IPython' does give access to IPython.<all> as
4361 expected. Also renamed __release__ to Release.
4365 expected. Also renamed __release__ to Release.
4362
4366
4363 * IPython/Debugger.py (__license__): created new Pdb class which
4367 * IPython/Debugger.py (__license__): created new Pdb class which
4364 functions like a drop-in for the normal pdb.Pdb but does NOT
4368 functions like a drop-in for the normal pdb.Pdb but does NOT
4365 import readline by default. This way it doesn't muck up IPython's
4369 import readline by default. This way it doesn't muck up IPython's
4366 readline handling, and now tab-completion finally works in the
4370 readline handling, and now tab-completion finally works in the
4367 debugger -- sort of. It completes things globally visible, but the
4371 debugger -- sort of. It completes things globally visible, but the
4368 completer doesn't track the stack as pdb walks it. That's a bit
4372 completer doesn't track the stack as pdb walks it. That's a bit
4369 tricky, and I'll have to implement it later.
4373 tricky, and I'll have to implement it later.
4370
4374
4371 2002-05-05 Fernando Perez <fperez@colorado.edu>
4375 2002-05-05 Fernando Perez <fperez@colorado.edu>
4372
4376
4373 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4377 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4374 magic docstrings when printed via ? (explicit \'s were being
4378 magic docstrings when printed via ? (explicit \'s were being
4375 printed).
4379 printed).
4376
4380
4377 * IPython/ipmaker.py (make_IPython): fixed namespace
4381 * IPython/ipmaker.py (make_IPython): fixed namespace
4378 identification bug. Now variables loaded via logs or command-line
4382 identification bug. Now variables loaded via logs or command-line
4379 files are recognized in the interactive namespace by @who.
4383 files are recognized in the interactive namespace by @who.
4380
4384
4381 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4385 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4382 log replay system stemming from the string form of Structs.
4386 log replay system stemming from the string form of Structs.
4383
4387
4384 * IPython/Magic.py (Macro.__init__): improved macros to properly
4388 * IPython/Magic.py (Macro.__init__): improved macros to properly
4385 handle magic commands in them.
4389 handle magic commands in them.
4386 (Magic.magic_logstart): usernames are now expanded so 'logstart
4390 (Magic.magic_logstart): usernames are now expanded so 'logstart
4387 ~/mylog' now works.
4391 ~/mylog' now works.
4388
4392
4389 * IPython/iplib.py (complete): fixed bug where paths starting with
4393 * IPython/iplib.py (complete): fixed bug where paths starting with
4390 '/' would be completed as magic names.
4394 '/' would be completed as magic names.
4391
4395
4392 2002-05-04 Fernando Perez <fperez@colorado.edu>
4396 2002-05-04 Fernando Perez <fperez@colorado.edu>
4393
4397
4394 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4398 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4395 allow running full programs under the profiler's control.
4399 allow running full programs under the profiler's control.
4396
4400
4397 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4401 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4398 mode to report exceptions verbosely but without formatting
4402 mode to report exceptions verbosely but without formatting
4399 variables. This addresses the issue of ipython 'freezing' (it's
4403 variables. This addresses the issue of ipython 'freezing' (it's
4400 not frozen, but caught in an expensive formatting loop) when huge
4404 not frozen, but caught in an expensive formatting loop) when huge
4401 variables are in the context of an exception.
4405 variables are in the context of an exception.
4402 (VerboseTB.text): Added '--->' markers at line where exception was
4406 (VerboseTB.text): Added '--->' markers at line where exception was
4403 triggered. Much clearer to read, especially in NoColor modes.
4407 triggered. Much clearer to read, especially in NoColor modes.
4404
4408
4405 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4409 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4406 implemented in reverse when changing to the new parse_options().
4410 implemented in reverse when changing to the new parse_options().
4407
4411
4408 2002-05-03 Fernando Perez <fperez@colorado.edu>
4412 2002-05-03 Fernando Perez <fperez@colorado.edu>
4409
4413
4410 * IPython/Magic.py (Magic.parse_options): new function so that
4414 * IPython/Magic.py (Magic.parse_options): new function so that
4411 magics can parse options easier.
4415 magics can parse options easier.
4412 (Magic.magic_prun): new function similar to profile.run(),
4416 (Magic.magic_prun): new function similar to profile.run(),
4413 suggested by Chris Hart.
4417 suggested by Chris Hart.
4414 (Magic.magic_cd): fixed behavior so that it only changes if
4418 (Magic.magic_cd): fixed behavior so that it only changes if
4415 directory actually is in history.
4419 directory actually is in history.
4416
4420
4417 * IPython/usage.py (__doc__): added information about potential
4421 * IPython/usage.py (__doc__): added information about potential
4418 slowness of Verbose exception mode when there are huge data
4422 slowness of Verbose exception mode when there are huge data
4419 structures to be formatted (thanks to Archie Paulson).
4423 structures to be formatted (thanks to Archie Paulson).
4420
4424
4421 * IPython/ipmaker.py (make_IPython): Changed default logging
4425 * IPython/ipmaker.py (make_IPython): Changed default logging
4422 (when simply called with -log) to use curr_dir/ipython.log in
4426 (when simply called with -log) to use curr_dir/ipython.log in
4423 rotate mode. Fixed crash which was occuring with -log before
4427 rotate mode. Fixed crash which was occuring with -log before
4424 (thanks to Jim Boyle).
4428 (thanks to Jim Boyle).
4425
4429
4426 2002-05-01 Fernando Perez <fperez@colorado.edu>
4430 2002-05-01 Fernando Perez <fperez@colorado.edu>
4427
4431
4428 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4432 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4429 was nasty -- though somewhat of a corner case).
4433 was nasty -- though somewhat of a corner case).
4430
4434
4431 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4435 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4432 text (was a bug).
4436 text (was a bug).
4433
4437
4434 2002-04-30 Fernando Perez <fperez@colorado.edu>
4438 2002-04-30 Fernando Perez <fperez@colorado.edu>
4435
4439
4436 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4440 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4437 a print after ^D or ^C from the user so that the In[] prompt
4441 a print after ^D or ^C from the user so that the In[] prompt
4438 doesn't over-run the gnuplot one.
4442 doesn't over-run the gnuplot one.
4439
4443
4440 2002-04-29 Fernando Perez <fperez@colorado.edu>
4444 2002-04-29 Fernando Perez <fperez@colorado.edu>
4441
4445
4442 * Released 0.2.10
4446 * Released 0.2.10
4443
4447
4444 * IPython/__release__.py (version): get date dynamically.
4448 * IPython/__release__.py (version): get date dynamically.
4445
4449
4446 * Misc. documentation updates thanks to Arnd's comments. Also ran
4450 * Misc. documentation updates thanks to Arnd's comments. Also ran
4447 a full spellcheck on the manual (hadn't been done in a while).
4451 a full spellcheck on the manual (hadn't been done in a while).
4448
4452
4449 2002-04-27 Fernando Perez <fperez@colorado.edu>
4453 2002-04-27 Fernando Perez <fperez@colorado.edu>
4450
4454
4451 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4455 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4452 starting a log in mid-session would reset the input history list.
4456 starting a log in mid-session would reset the input history list.
4453
4457
4454 2002-04-26 Fernando Perez <fperez@colorado.edu>
4458 2002-04-26 Fernando Perez <fperez@colorado.edu>
4455
4459
4456 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4460 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4457 all files were being included in an update. Now anything in
4461 all files were being included in an update. Now anything in
4458 UserConfig that matches [A-Za-z]*.py will go (this excludes
4462 UserConfig that matches [A-Za-z]*.py will go (this excludes
4459 __init__.py)
4463 __init__.py)
4460
4464
4461 2002-04-25 Fernando Perez <fperez@colorado.edu>
4465 2002-04-25 Fernando Perez <fperez@colorado.edu>
4462
4466
4463 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4467 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4464 to __builtins__ so that any form of embedded or imported code can
4468 to __builtins__ so that any form of embedded or imported code can
4465 test for being inside IPython.
4469 test for being inside IPython.
4466
4470
4467 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4471 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4468 changed to GnuplotMagic because it's now an importable module,
4472 changed to GnuplotMagic because it's now an importable module,
4469 this makes the name follow that of the standard Gnuplot module.
4473 this makes the name follow that of the standard Gnuplot module.
4470 GnuplotMagic can now be loaded at any time in mid-session.
4474 GnuplotMagic can now be loaded at any time in mid-session.
4471
4475
4472 2002-04-24 Fernando Perez <fperez@colorado.edu>
4476 2002-04-24 Fernando Perez <fperez@colorado.edu>
4473
4477
4474 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4478 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4475 the globals (IPython has its own namespace) and the
4479 the globals (IPython has its own namespace) and the
4476 PhysicalQuantity stuff is much better anyway.
4480 PhysicalQuantity stuff is much better anyway.
4477
4481
4478 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4482 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4479 embedding example to standard user directory for
4483 embedding example to standard user directory for
4480 distribution. Also put it in the manual.
4484 distribution. Also put it in the manual.
4481
4485
4482 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4486 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4483 instance as first argument (so it doesn't rely on some obscure
4487 instance as first argument (so it doesn't rely on some obscure
4484 hidden global).
4488 hidden global).
4485
4489
4486 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4490 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4487 delimiters. While it prevents ().TAB from working, it allows
4491 delimiters. While it prevents ().TAB from working, it allows
4488 completions in open (... expressions. This is by far a more common
4492 completions in open (... expressions. This is by far a more common
4489 case.
4493 case.
4490
4494
4491 2002-04-23 Fernando Perez <fperez@colorado.edu>
4495 2002-04-23 Fernando Perez <fperez@colorado.edu>
4492
4496
4493 * IPython/Extensions/InterpreterPasteInput.py: new
4497 * IPython/Extensions/InterpreterPasteInput.py: new
4494 syntax-processing module for pasting lines with >>> or ... at the
4498 syntax-processing module for pasting lines with >>> or ... at the
4495 start.
4499 start.
4496
4500
4497 * IPython/Extensions/PhysicalQ_Interactive.py
4501 * IPython/Extensions/PhysicalQ_Interactive.py
4498 (PhysicalQuantityInteractive.__int__): fixed to work with either
4502 (PhysicalQuantityInteractive.__int__): fixed to work with either
4499 Numeric or math.
4503 Numeric or math.
4500
4504
4501 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4505 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4502 provided profiles. Now we have:
4506 provided profiles. Now we have:
4503 -math -> math module as * and cmath with its own namespace.
4507 -math -> math module as * and cmath with its own namespace.
4504 -numeric -> Numeric as *, plus gnuplot & grace
4508 -numeric -> Numeric as *, plus gnuplot & grace
4505 -physics -> same as before
4509 -physics -> same as before
4506
4510
4507 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4511 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4508 user-defined magics wouldn't be found by @magic if they were
4512 user-defined magics wouldn't be found by @magic if they were
4509 defined as class methods. Also cleaned up the namespace search
4513 defined as class methods. Also cleaned up the namespace search
4510 logic and the string building (to use %s instead of many repeated
4514 logic and the string building (to use %s instead of many repeated
4511 string adds).
4515 string adds).
4512
4516
4513 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4517 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4514 of user-defined magics to operate with class methods (cleaner, in
4518 of user-defined magics to operate with class methods (cleaner, in
4515 line with the gnuplot code).
4519 line with the gnuplot code).
4516
4520
4517 2002-04-22 Fernando Perez <fperez@colorado.edu>
4521 2002-04-22 Fernando Perez <fperez@colorado.edu>
4518
4522
4519 * setup.py: updated dependency list so that manual is updated when
4523 * setup.py: updated dependency list so that manual is updated when
4520 all included files change.
4524 all included files change.
4521
4525
4522 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4526 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4523 the delimiter removal option (the fix is ugly right now).
4527 the delimiter removal option (the fix is ugly right now).
4524
4528
4525 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4529 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4526 all of the math profile (quicker loading, no conflict between
4530 all of the math profile (quicker loading, no conflict between
4527 g-9.8 and g-gnuplot).
4531 g-9.8 and g-gnuplot).
4528
4532
4529 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4533 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4530 name of post-mortem files to IPython_crash_report.txt.
4534 name of post-mortem files to IPython_crash_report.txt.
4531
4535
4532 * Cleanup/update of the docs. Added all the new readline info and
4536 * Cleanup/update of the docs. Added all the new readline info and
4533 formatted all lists as 'real lists'.
4537 formatted all lists as 'real lists'.
4534
4538
4535 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4539 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4536 tab-completion options, since the full readline parse_and_bind is
4540 tab-completion options, since the full readline parse_and_bind is
4537 now accessible.
4541 now accessible.
4538
4542
4539 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4543 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4540 handling of readline options. Now users can specify any string to
4544 handling of readline options. Now users can specify any string to
4541 be passed to parse_and_bind(), as well as the delimiters to be
4545 be passed to parse_and_bind(), as well as the delimiters to be
4542 removed.
4546 removed.
4543 (InteractiveShell.__init__): Added __name__ to the global
4547 (InteractiveShell.__init__): Added __name__ to the global
4544 namespace so that things like Itpl which rely on its existence
4548 namespace so that things like Itpl which rely on its existence
4545 don't crash.
4549 don't crash.
4546 (InteractiveShell._prefilter): Defined the default with a _ so
4550 (InteractiveShell._prefilter): Defined the default with a _ so
4547 that prefilter() is easier to override, while the default one
4551 that prefilter() is easier to override, while the default one
4548 remains available.
4552 remains available.
4549
4553
4550 2002-04-18 Fernando Perez <fperez@colorado.edu>
4554 2002-04-18 Fernando Perez <fperez@colorado.edu>
4551
4555
4552 * Added information about pdb in the docs.
4556 * Added information about pdb in the docs.
4553
4557
4554 2002-04-17 Fernando Perez <fperez@colorado.edu>
4558 2002-04-17 Fernando Perez <fperez@colorado.edu>
4555
4559
4556 * IPython/ipmaker.py (make_IPython): added rc_override option to
4560 * IPython/ipmaker.py (make_IPython): added rc_override option to
4557 allow passing config options at creation time which may override
4561 allow passing config options at creation time which may override
4558 anything set in the config files or command line. This is
4562 anything set in the config files or command line. This is
4559 particularly useful for configuring embedded instances.
4563 particularly useful for configuring embedded instances.
4560
4564
4561 2002-04-15 Fernando Perez <fperez@colorado.edu>
4565 2002-04-15 Fernando Perez <fperez@colorado.edu>
4562
4566
4563 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4567 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4564 crash embedded instances because of the input cache falling out of
4568 crash embedded instances because of the input cache falling out of
4565 sync with the output counter.
4569 sync with the output counter.
4566
4570
4567 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4571 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4568 mode which calls pdb after an uncaught exception in IPython itself.
4572 mode which calls pdb after an uncaught exception in IPython itself.
4569
4573
4570 2002-04-14 Fernando Perez <fperez@colorado.edu>
4574 2002-04-14 Fernando Perez <fperez@colorado.edu>
4571
4575
4572 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4576 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4573 readline, fix it back after each call.
4577 readline, fix it back after each call.
4574
4578
4575 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4579 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4576 method to force all access via __call__(), which guarantees that
4580 method to force all access via __call__(), which guarantees that
4577 traceback references are properly deleted.
4581 traceback references are properly deleted.
4578
4582
4579 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4583 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4580 improve printing when pprint is in use.
4584 improve printing when pprint is in use.
4581
4585
4582 2002-04-13 Fernando Perez <fperez@colorado.edu>
4586 2002-04-13 Fernando Perez <fperez@colorado.edu>
4583
4587
4584 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4588 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4585 exceptions aren't caught anymore. If the user triggers one, he
4589 exceptions aren't caught anymore. If the user triggers one, he
4586 should know why he's doing it and it should go all the way up,
4590 should know why he's doing it and it should go all the way up,
4587 just like any other exception. So now @abort will fully kill the
4591 just like any other exception. So now @abort will fully kill the
4588 embedded interpreter and the embedding code (unless that happens
4592 embedded interpreter and the embedding code (unless that happens
4589 to catch SystemExit).
4593 to catch SystemExit).
4590
4594
4591 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4595 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4592 and a debugger() method to invoke the interactive pdb debugger
4596 and a debugger() method to invoke the interactive pdb debugger
4593 after printing exception information. Also added the corresponding
4597 after printing exception information. Also added the corresponding
4594 -pdb option and @pdb magic to control this feature, and updated
4598 -pdb option and @pdb magic to control this feature, and updated
4595 the docs. After a suggestion from Christopher Hart
4599 the docs. After a suggestion from Christopher Hart
4596 (hart-AT-caltech.edu).
4600 (hart-AT-caltech.edu).
4597
4601
4598 2002-04-12 Fernando Perez <fperez@colorado.edu>
4602 2002-04-12 Fernando Perez <fperez@colorado.edu>
4599
4603
4600 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4604 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4601 the exception handlers defined by the user (not the CrashHandler)
4605 the exception handlers defined by the user (not the CrashHandler)
4602 so that user exceptions don't trigger an ipython bug report.
4606 so that user exceptions don't trigger an ipython bug report.
4603
4607
4604 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4608 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4605 configurable (it should have always been so).
4609 configurable (it should have always been so).
4606
4610
4607 2002-03-26 Fernando Perez <fperez@colorado.edu>
4611 2002-03-26 Fernando Perez <fperez@colorado.edu>
4608
4612
4609 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4613 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4610 and there to fix embedding namespace issues. This should all be
4614 and there to fix embedding namespace issues. This should all be
4611 done in a more elegant way.
4615 done in a more elegant way.
4612
4616
4613 2002-03-25 Fernando Perez <fperez@colorado.edu>
4617 2002-03-25 Fernando Perez <fperez@colorado.edu>
4614
4618
4615 * IPython/genutils.py (get_home_dir): Try to make it work under
4619 * IPython/genutils.py (get_home_dir): Try to make it work under
4616 win9x also.
4620 win9x also.
4617
4621
4618 2002-03-20 Fernando Perez <fperez@colorado.edu>
4622 2002-03-20 Fernando Perez <fperez@colorado.edu>
4619
4623
4620 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4624 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4621 sys.displayhook untouched upon __init__.
4625 sys.displayhook untouched upon __init__.
4622
4626
4623 2002-03-19 Fernando Perez <fperez@colorado.edu>
4627 2002-03-19 Fernando Perez <fperez@colorado.edu>
4624
4628
4625 * Released 0.2.9 (for embedding bug, basically).
4629 * Released 0.2.9 (for embedding bug, basically).
4626
4630
4627 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4631 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4628 exceptions so that enclosing shell's state can be restored.
4632 exceptions so that enclosing shell's state can be restored.
4629
4633
4630 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4634 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4631 naming conventions in the .ipython/ dir.
4635 naming conventions in the .ipython/ dir.
4632
4636
4633 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4637 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4634 from delimiters list so filenames with - in them get expanded.
4638 from delimiters list so filenames with - in them get expanded.
4635
4639
4636 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4640 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4637 sys.displayhook not being properly restored after an embedded call.
4641 sys.displayhook not being properly restored after an embedded call.
4638
4642
4639 2002-03-18 Fernando Perez <fperez@colorado.edu>
4643 2002-03-18 Fernando Perez <fperez@colorado.edu>
4640
4644
4641 * Released 0.2.8
4645 * Released 0.2.8
4642
4646
4643 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4647 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4644 some files weren't being included in a -upgrade.
4648 some files weren't being included in a -upgrade.
4645 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4649 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4646 on' so that the first tab completes.
4650 on' so that the first tab completes.
4647 (InteractiveShell.handle_magic): fixed bug with spaces around
4651 (InteractiveShell.handle_magic): fixed bug with spaces around
4648 quotes breaking many magic commands.
4652 quotes breaking many magic commands.
4649
4653
4650 * setup.py: added note about ignoring the syntax error messages at
4654 * setup.py: added note about ignoring the syntax error messages at
4651 installation.
4655 installation.
4652
4656
4653 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4657 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4654 streamlining the gnuplot interface, now there's only one magic @gp.
4658 streamlining the gnuplot interface, now there's only one magic @gp.
4655
4659
4656 2002-03-17 Fernando Perez <fperez@colorado.edu>
4660 2002-03-17 Fernando Perez <fperez@colorado.edu>
4657
4661
4658 * IPython/UserConfig/magic_gnuplot.py: new name for the
4662 * IPython/UserConfig/magic_gnuplot.py: new name for the
4659 example-magic_pm.py file. Much enhanced system, now with a shell
4663 example-magic_pm.py file. Much enhanced system, now with a shell
4660 for communicating directly with gnuplot, one command at a time.
4664 for communicating directly with gnuplot, one command at a time.
4661
4665
4662 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4666 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4663 setting __name__=='__main__'.
4667 setting __name__=='__main__'.
4664
4668
4665 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4669 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4666 mini-shell for accessing gnuplot from inside ipython. Should
4670 mini-shell for accessing gnuplot from inside ipython. Should
4667 extend it later for grace access too. Inspired by Arnd's
4671 extend it later for grace access too. Inspired by Arnd's
4668 suggestion.
4672 suggestion.
4669
4673
4670 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4674 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4671 calling magic functions with () in their arguments. Thanks to Arnd
4675 calling magic functions with () in their arguments. Thanks to Arnd
4672 Baecker for pointing this to me.
4676 Baecker for pointing this to me.
4673
4677
4674 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4678 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4675 infinitely for integer or complex arrays (only worked with floats).
4679 infinitely for integer or complex arrays (only worked with floats).
4676
4680
4677 2002-03-16 Fernando Perez <fperez@colorado.edu>
4681 2002-03-16 Fernando Perez <fperez@colorado.edu>
4678
4682
4679 * setup.py: Merged setup and setup_windows into a single script
4683 * setup.py: Merged setup and setup_windows into a single script
4680 which properly handles things for windows users.
4684 which properly handles things for windows users.
4681
4685
4682 2002-03-15 Fernando Perez <fperez@colorado.edu>
4686 2002-03-15 Fernando Perez <fperez@colorado.edu>
4683
4687
4684 * Big change to the manual: now the magics are all automatically
4688 * Big change to the manual: now the magics are all automatically
4685 documented. This information is generated from their docstrings
4689 documented. This information is generated from their docstrings
4686 and put in a latex file included by the manual lyx file. This way
4690 and put in a latex file included by the manual lyx file. This way
4687 we get always up to date information for the magics. The manual
4691 we get always up to date information for the magics. The manual
4688 now also has proper version information, also auto-synced.
4692 now also has proper version information, also auto-synced.
4689
4693
4690 For this to work, an undocumented --magic_docstrings option was added.
4694 For this to work, an undocumented --magic_docstrings option was added.
4691
4695
4692 2002-03-13 Fernando Perez <fperez@colorado.edu>
4696 2002-03-13 Fernando Perez <fperez@colorado.edu>
4693
4697
4694 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4698 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4695 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4699 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4696
4700
4697 2002-03-12 Fernando Perez <fperez@colorado.edu>
4701 2002-03-12 Fernando Perez <fperez@colorado.edu>
4698
4702
4699 * IPython/ultraTB.py (TermColors): changed color escapes again to
4703 * IPython/ultraTB.py (TermColors): changed color escapes again to
4700 fix the (old, reintroduced) line-wrapping bug. Basically, if
4704 fix the (old, reintroduced) line-wrapping bug. Basically, if
4701 \001..\002 aren't given in the color escapes, lines get wrapped
4705 \001..\002 aren't given in the color escapes, lines get wrapped
4702 weirdly. But giving those screws up old xterms and emacs terms. So
4706 weirdly. But giving those screws up old xterms and emacs terms. So
4703 I added some logic for emacs terms to be ok, but I can't identify old
4707 I added some logic for emacs terms to be ok, but I can't identify old
4704 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4708 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4705
4709
4706 2002-03-10 Fernando Perez <fperez@colorado.edu>
4710 2002-03-10 Fernando Perez <fperez@colorado.edu>
4707
4711
4708 * IPython/usage.py (__doc__): Various documentation cleanups and
4712 * IPython/usage.py (__doc__): Various documentation cleanups and
4709 updates, both in usage docstrings and in the manual.
4713 updates, both in usage docstrings and in the manual.
4710
4714
4711 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4715 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4712 handling of caching. Set minimum acceptabe value for having a
4716 handling of caching. Set minimum acceptabe value for having a
4713 cache at 20 values.
4717 cache at 20 values.
4714
4718
4715 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4719 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4716 install_first_time function to a method, renamed it and added an
4720 install_first_time function to a method, renamed it and added an
4717 'upgrade' mode. Now people can update their config directory with
4721 'upgrade' mode. Now people can update their config directory with
4718 a simple command line switch (-upgrade, also new).
4722 a simple command line switch (-upgrade, also new).
4719
4723
4720 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4724 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4721 @file (convenient for automagic users under Python >= 2.2).
4725 @file (convenient for automagic users under Python >= 2.2).
4722 Removed @files (it seemed more like a plural than an abbrev. of
4726 Removed @files (it seemed more like a plural than an abbrev. of
4723 'file show').
4727 'file show').
4724
4728
4725 * IPython/iplib.py (install_first_time): Fixed crash if there were
4729 * IPython/iplib.py (install_first_time): Fixed crash if there were
4726 backup files ('~') in .ipython/ install directory.
4730 backup files ('~') in .ipython/ install directory.
4727
4731
4728 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4732 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4729 system. Things look fine, but these changes are fairly
4733 system. Things look fine, but these changes are fairly
4730 intrusive. Test them for a few days.
4734 intrusive. Test them for a few days.
4731
4735
4732 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4736 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4733 the prompts system. Now all in/out prompt strings are user
4737 the prompts system. Now all in/out prompt strings are user
4734 controllable. This is particularly useful for embedding, as one
4738 controllable. This is particularly useful for embedding, as one
4735 can tag embedded instances with particular prompts.
4739 can tag embedded instances with particular prompts.
4736
4740
4737 Also removed global use of sys.ps1/2, which now allows nested
4741 Also removed global use of sys.ps1/2, which now allows nested
4738 embeddings without any problems. Added command-line options for
4742 embeddings without any problems. Added command-line options for
4739 the prompt strings.
4743 the prompt strings.
4740
4744
4741 2002-03-08 Fernando Perez <fperez@colorado.edu>
4745 2002-03-08 Fernando Perez <fperez@colorado.edu>
4742
4746
4743 * IPython/UserConfig/example-embed-short.py (ipshell): added
4747 * IPython/UserConfig/example-embed-short.py (ipshell): added
4744 example file with the bare minimum code for embedding.
4748 example file with the bare minimum code for embedding.
4745
4749
4746 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4750 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4747 functionality for the embeddable shell to be activated/deactivated
4751 functionality for the embeddable shell to be activated/deactivated
4748 either globally or at each call.
4752 either globally or at each call.
4749
4753
4750 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4754 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4751 rewriting the prompt with '--->' for auto-inputs with proper
4755 rewriting the prompt with '--->' for auto-inputs with proper
4752 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4756 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4753 this is handled by the prompts class itself, as it should.
4757 this is handled by the prompts class itself, as it should.
4754
4758
4755 2002-03-05 Fernando Perez <fperez@colorado.edu>
4759 2002-03-05 Fernando Perez <fperez@colorado.edu>
4756
4760
4757 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4761 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4758 @logstart to avoid name clashes with the math log function.
4762 @logstart to avoid name clashes with the math log function.
4759
4763
4760 * Big updates to X/Emacs section of the manual.
4764 * Big updates to X/Emacs section of the manual.
4761
4765
4762 * Removed ipython_emacs. Milan explained to me how to pass
4766 * Removed ipython_emacs. Milan explained to me how to pass
4763 arguments to ipython through Emacs. Some day I'm going to end up
4767 arguments to ipython through Emacs. Some day I'm going to end up
4764 learning some lisp...
4768 learning some lisp...
4765
4769
4766 2002-03-04 Fernando Perez <fperez@colorado.edu>
4770 2002-03-04 Fernando Perez <fperez@colorado.edu>
4767
4771
4768 * IPython/ipython_emacs: Created script to be used as the
4772 * IPython/ipython_emacs: Created script to be used as the
4769 py-python-command Emacs variable so we can pass IPython
4773 py-python-command Emacs variable so we can pass IPython
4770 parameters. I can't figure out how to tell Emacs directly to pass
4774 parameters. I can't figure out how to tell Emacs directly to pass
4771 parameters to IPython, so a dummy shell script will do it.
4775 parameters to IPython, so a dummy shell script will do it.
4772
4776
4773 Other enhancements made for things to work better under Emacs'
4777 Other enhancements made for things to work better under Emacs'
4774 various types of terminals. Many thanks to Milan Zamazal
4778 various types of terminals. Many thanks to Milan Zamazal
4775 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4779 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4776
4780
4777 2002-03-01 Fernando Perez <fperez@colorado.edu>
4781 2002-03-01 Fernando Perez <fperez@colorado.edu>
4778
4782
4779 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4783 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4780 that loading of readline is now optional. This gives better
4784 that loading of readline is now optional. This gives better
4781 control to emacs users.
4785 control to emacs users.
4782
4786
4783 * IPython/ultraTB.py (__date__): Modified color escape sequences
4787 * IPython/ultraTB.py (__date__): Modified color escape sequences
4784 and now things work fine under xterm and in Emacs' term buffers
4788 and now things work fine under xterm and in Emacs' term buffers
4785 (though not shell ones). Well, in emacs you get colors, but all
4789 (though not shell ones). Well, in emacs you get colors, but all
4786 seem to be 'light' colors (no difference between dark and light
4790 seem to be 'light' colors (no difference between dark and light
4787 ones). But the garbage chars are gone, and also in xterms. It
4791 ones). But the garbage chars are gone, and also in xterms. It
4788 seems that now I'm using 'cleaner' ansi sequences.
4792 seems that now I'm using 'cleaner' ansi sequences.
4789
4793
4790 2002-02-21 Fernando Perez <fperez@colorado.edu>
4794 2002-02-21 Fernando Perez <fperez@colorado.edu>
4791
4795
4792 * Released 0.2.7 (mainly to publish the scoping fix).
4796 * Released 0.2.7 (mainly to publish the scoping fix).
4793
4797
4794 * IPython/Logger.py (Logger.logstate): added. A corresponding
4798 * IPython/Logger.py (Logger.logstate): added. A corresponding
4795 @logstate magic was created.
4799 @logstate magic was created.
4796
4800
4797 * IPython/Magic.py: fixed nested scoping problem under Python
4801 * IPython/Magic.py: fixed nested scoping problem under Python
4798 2.1.x (automagic wasn't working).
4802 2.1.x (automagic wasn't working).
4799
4803
4800 2002-02-20 Fernando Perez <fperez@colorado.edu>
4804 2002-02-20 Fernando Perez <fperez@colorado.edu>
4801
4805
4802 * Released 0.2.6.
4806 * Released 0.2.6.
4803
4807
4804 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4808 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4805 option so that logs can come out without any headers at all.
4809 option so that logs can come out without any headers at all.
4806
4810
4807 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4811 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4808 SciPy.
4812 SciPy.
4809
4813
4810 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4814 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4811 that embedded IPython calls don't require vars() to be explicitly
4815 that embedded IPython calls don't require vars() to be explicitly
4812 passed. Now they are extracted from the caller's frame (code
4816 passed. Now they are extracted from the caller's frame (code
4813 snatched from Eric Jones' weave). Added better documentation to
4817 snatched from Eric Jones' weave). Added better documentation to
4814 the section on embedding and the example file.
4818 the section on embedding and the example file.
4815
4819
4816 * IPython/genutils.py (page): Changed so that under emacs, it just
4820 * IPython/genutils.py (page): Changed so that under emacs, it just
4817 prints the string. You can then page up and down in the emacs
4821 prints the string. You can then page up and down in the emacs
4818 buffer itself. This is how the builtin help() works.
4822 buffer itself. This is how the builtin help() works.
4819
4823
4820 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4824 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4821 macro scoping: macros need to be executed in the user's namespace
4825 macro scoping: macros need to be executed in the user's namespace
4822 to work as if they had been typed by the user.
4826 to work as if they had been typed by the user.
4823
4827
4824 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4828 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4825 execute automatically (no need to type 'exec...'). They then
4829 execute automatically (no need to type 'exec...'). They then
4826 behave like 'true macros'. The printing system was also modified
4830 behave like 'true macros'. The printing system was also modified
4827 for this to work.
4831 for this to work.
4828
4832
4829 2002-02-19 Fernando Perez <fperez@colorado.edu>
4833 2002-02-19 Fernando Perez <fperez@colorado.edu>
4830
4834
4831 * IPython/genutils.py (page_file): new function for paging files
4835 * IPython/genutils.py (page_file): new function for paging files
4832 in an OS-independent way. Also necessary for file viewing to work
4836 in an OS-independent way. Also necessary for file viewing to work
4833 well inside Emacs buffers.
4837 well inside Emacs buffers.
4834 (page): Added checks for being in an emacs buffer.
4838 (page): Added checks for being in an emacs buffer.
4835 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4839 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4836 same bug in iplib.
4840 same bug in iplib.
4837
4841
4838 2002-02-18 Fernando Perez <fperez@colorado.edu>
4842 2002-02-18 Fernando Perez <fperez@colorado.edu>
4839
4843
4840 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4844 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4841 of readline so that IPython can work inside an Emacs buffer.
4845 of readline so that IPython can work inside an Emacs buffer.
4842
4846
4843 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4847 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4844 method signatures (they weren't really bugs, but it looks cleaner
4848 method signatures (they weren't really bugs, but it looks cleaner
4845 and keeps PyChecker happy).
4849 and keeps PyChecker happy).
4846
4850
4847 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4851 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4848 for implementing various user-defined hooks. Currently only
4852 for implementing various user-defined hooks. Currently only
4849 display is done.
4853 display is done.
4850
4854
4851 * IPython/Prompts.py (CachedOutput._display): changed display
4855 * IPython/Prompts.py (CachedOutput._display): changed display
4852 functions so that they can be dynamically changed by users easily.
4856 functions so that they can be dynamically changed by users easily.
4853
4857
4854 * IPython/Extensions/numeric_formats.py (num_display): added an
4858 * IPython/Extensions/numeric_formats.py (num_display): added an
4855 extension for printing NumPy arrays in flexible manners. It
4859 extension for printing NumPy arrays in flexible manners. It
4856 doesn't do anything yet, but all the structure is in
4860 doesn't do anything yet, but all the structure is in
4857 place. Ultimately the plan is to implement output format control
4861 place. Ultimately the plan is to implement output format control
4858 like in Octave.
4862 like in Octave.
4859
4863
4860 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4864 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4861 methods are found at run-time by all the automatic machinery.
4865 methods are found at run-time by all the automatic machinery.
4862
4866
4863 2002-02-17 Fernando Perez <fperez@colorado.edu>
4867 2002-02-17 Fernando Perez <fperez@colorado.edu>
4864
4868
4865 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4869 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4866 whole file a little.
4870 whole file a little.
4867
4871
4868 * ToDo: closed this document. Now there's a new_design.lyx
4872 * ToDo: closed this document. Now there's a new_design.lyx
4869 document for all new ideas. Added making a pdf of it for the
4873 document for all new ideas. Added making a pdf of it for the
4870 end-user distro.
4874 end-user distro.
4871
4875
4872 * IPython/Logger.py (Logger.switch_log): Created this to replace
4876 * IPython/Logger.py (Logger.switch_log): Created this to replace
4873 logon() and logoff(). It also fixes a nasty crash reported by
4877 logon() and logoff(). It also fixes a nasty crash reported by
4874 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4878 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4875
4879
4876 * IPython/iplib.py (complete): got auto-completion to work with
4880 * IPython/iplib.py (complete): got auto-completion to work with
4877 automagic (I had wanted this for a long time).
4881 automagic (I had wanted this for a long time).
4878
4882
4879 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4883 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4880 to @file, since file() is now a builtin and clashes with automagic
4884 to @file, since file() is now a builtin and clashes with automagic
4881 for @file.
4885 for @file.
4882
4886
4883 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4887 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4884 of this was previously in iplib, which had grown to more than 2000
4888 of this was previously in iplib, which had grown to more than 2000
4885 lines, way too long. No new functionality, but it makes managing
4889 lines, way too long. No new functionality, but it makes managing
4886 the code a bit easier.
4890 the code a bit easier.
4887
4891
4888 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4892 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4889 information to crash reports.
4893 information to crash reports.
4890
4894
4891 2002-02-12 Fernando Perez <fperez@colorado.edu>
4895 2002-02-12 Fernando Perez <fperez@colorado.edu>
4892
4896
4893 * Released 0.2.5.
4897 * Released 0.2.5.
4894
4898
4895 2002-02-11 Fernando Perez <fperez@colorado.edu>
4899 2002-02-11 Fernando Perez <fperez@colorado.edu>
4896
4900
4897 * Wrote a relatively complete Windows installer. It puts
4901 * Wrote a relatively complete Windows installer. It puts
4898 everything in place, creates Start Menu entries and fixes the
4902 everything in place, creates Start Menu entries and fixes the
4899 color issues. Nothing fancy, but it works.
4903 color issues. Nothing fancy, but it works.
4900
4904
4901 2002-02-10 Fernando Perez <fperez@colorado.edu>
4905 2002-02-10 Fernando Perez <fperez@colorado.edu>
4902
4906
4903 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4907 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4904 os.path.expanduser() call so that we can type @run ~/myfile.py and
4908 os.path.expanduser() call so that we can type @run ~/myfile.py and
4905 have thigs work as expected.
4909 have thigs work as expected.
4906
4910
4907 * IPython/genutils.py (page): fixed exception handling so things
4911 * IPython/genutils.py (page): fixed exception handling so things
4908 work both in Unix and Windows correctly. Quitting a pager triggers
4912 work both in Unix and Windows correctly. Quitting a pager triggers
4909 an IOError/broken pipe in Unix, and in windows not finding a pager
4913 an IOError/broken pipe in Unix, and in windows not finding a pager
4910 is also an IOError, so I had to actually look at the return value
4914 is also an IOError, so I had to actually look at the return value
4911 of the exception, not just the exception itself. Should be ok now.
4915 of the exception, not just the exception itself. Should be ok now.
4912
4916
4913 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4917 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4914 modified to allow case-insensitive color scheme changes.
4918 modified to allow case-insensitive color scheme changes.
4915
4919
4916 2002-02-09 Fernando Perez <fperez@colorado.edu>
4920 2002-02-09 Fernando Perez <fperez@colorado.edu>
4917
4921
4918 * IPython/genutils.py (native_line_ends): new function to leave
4922 * IPython/genutils.py (native_line_ends): new function to leave
4919 user config files with os-native line-endings.
4923 user config files with os-native line-endings.
4920
4924
4921 * README and manual updates.
4925 * README and manual updates.
4922
4926
4923 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4927 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4924 instead of StringType to catch Unicode strings.
4928 instead of StringType to catch Unicode strings.
4925
4929
4926 * IPython/genutils.py (filefind): fixed bug for paths with
4930 * IPython/genutils.py (filefind): fixed bug for paths with
4927 embedded spaces (very common in Windows).
4931 embedded spaces (very common in Windows).
4928
4932
4929 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4933 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4930 files under Windows, so that they get automatically associated
4934 files under Windows, so that they get automatically associated
4931 with a text editor. Windows makes it a pain to handle
4935 with a text editor. Windows makes it a pain to handle
4932 extension-less files.
4936 extension-less files.
4933
4937
4934 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4938 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4935 warning about readline only occur for Posix. In Windows there's no
4939 warning about readline only occur for Posix. In Windows there's no
4936 way to get readline, so why bother with the warning.
4940 way to get readline, so why bother with the warning.
4937
4941
4938 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4942 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4939 for __str__ instead of dir(self), since dir() changed in 2.2.
4943 for __str__ instead of dir(self), since dir() changed in 2.2.
4940
4944
4941 * Ported to Windows! Tested on XP, I suspect it should work fine
4945 * Ported to Windows! Tested on XP, I suspect it should work fine
4942 on NT/2000, but I don't think it will work on 98 et al. That
4946 on NT/2000, but I don't think it will work on 98 et al. That
4943 series of Windows is such a piece of junk anyway that I won't try
4947 series of Windows is such a piece of junk anyway that I won't try
4944 porting it there. The XP port was straightforward, showed a few
4948 porting it there. The XP port was straightforward, showed a few
4945 bugs here and there (fixed all), in particular some string
4949 bugs here and there (fixed all), in particular some string
4946 handling stuff which required considering Unicode strings (which
4950 handling stuff which required considering Unicode strings (which
4947 Windows uses). This is good, but hasn't been too tested :) No
4951 Windows uses). This is good, but hasn't been too tested :) No
4948 fancy installer yet, I'll put a note in the manual so people at
4952 fancy installer yet, I'll put a note in the manual so people at
4949 least make manually a shortcut.
4953 least make manually a shortcut.
4950
4954
4951 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4955 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4952 into a single one, "colors". This now controls both prompt and
4956 into a single one, "colors". This now controls both prompt and
4953 exception color schemes, and can be changed both at startup
4957 exception color schemes, and can be changed both at startup
4954 (either via command-line switches or via ipythonrc files) and at
4958 (either via command-line switches or via ipythonrc files) and at
4955 runtime, with @colors.
4959 runtime, with @colors.
4956 (Magic.magic_run): renamed @prun to @run and removed the old
4960 (Magic.magic_run): renamed @prun to @run and removed the old
4957 @run. The two were too similar to warrant keeping both.
4961 @run. The two were too similar to warrant keeping both.
4958
4962
4959 2002-02-03 Fernando Perez <fperez@colorado.edu>
4963 2002-02-03 Fernando Perez <fperez@colorado.edu>
4960
4964
4961 * IPython/iplib.py (install_first_time): Added comment on how to
4965 * IPython/iplib.py (install_first_time): Added comment on how to
4962 configure the color options for first-time users. Put a <return>
4966 configure the color options for first-time users. Put a <return>
4963 request at the end so that small-terminal users get a chance to
4967 request at the end so that small-terminal users get a chance to
4964 read the startup info.
4968 read the startup info.
4965
4969
4966 2002-01-23 Fernando Perez <fperez@colorado.edu>
4970 2002-01-23 Fernando Perez <fperez@colorado.edu>
4967
4971
4968 * IPython/iplib.py (CachedOutput.update): Changed output memory
4972 * IPython/iplib.py (CachedOutput.update): Changed output memory
4969 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4973 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4970 input history we still use _i. Did this b/c these variable are
4974 input history we still use _i. Did this b/c these variable are
4971 very commonly used in interactive work, so the less we need to
4975 very commonly used in interactive work, so the less we need to
4972 type the better off we are.
4976 type the better off we are.
4973 (Magic.magic_prun): updated @prun to better handle the namespaces
4977 (Magic.magic_prun): updated @prun to better handle the namespaces
4974 the file will run in, including a fix for __name__ not being set
4978 the file will run in, including a fix for __name__ not being set
4975 before.
4979 before.
4976
4980
4977 2002-01-20 Fernando Perez <fperez@colorado.edu>
4981 2002-01-20 Fernando Perez <fperez@colorado.edu>
4978
4982
4979 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4983 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4980 extra garbage for Python 2.2. Need to look more carefully into
4984 extra garbage for Python 2.2. Need to look more carefully into
4981 this later.
4985 this later.
4982
4986
4983 2002-01-19 Fernando Perez <fperez@colorado.edu>
4987 2002-01-19 Fernando Perez <fperez@colorado.edu>
4984
4988
4985 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4989 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4986 display SyntaxError exceptions properly formatted when they occur
4990 display SyntaxError exceptions properly formatted when they occur
4987 (they can be triggered by imported code).
4991 (they can be triggered by imported code).
4988
4992
4989 2002-01-18 Fernando Perez <fperez@colorado.edu>
4993 2002-01-18 Fernando Perez <fperez@colorado.edu>
4990
4994
4991 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4995 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4992 SyntaxError exceptions are reported nicely formatted, instead of
4996 SyntaxError exceptions are reported nicely formatted, instead of
4993 spitting out only offset information as before.
4997 spitting out only offset information as before.
4994 (Magic.magic_prun): Added the @prun function for executing
4998 (Magic.magic_prun): Added the @prun function for executing
4995 programs with command line args inside IPython.
4999 programs with command line args inside IPython.
4996
5000
4997 2002-01-16 Fernando Perez <fperez@colorado.edu>
5001 2002-01-16 Fernando Perez <fperez@colorado.edu>
4998
5002
4999 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5003 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5000 to *not* include the last item given in a range. This brings their
5004 to *not* include the last item given in a range. This brings their
5001 behavior in line with Python's slicing:
5005 behavior in line with Python's slicing:
5002 a[n1:n2] -> a[n1]...a[n2-1]
5006 a[n1:n2] -> a[n1]...a[n2-1]
5003 It may be a bit less convenient, but I prefer to stick to Python's
5007 It may be a bit less convenient, but I prefer to stick to Python's
5004 conventions *everywhere*, so users never have to wonder.
5008 conventions *everywhere*, so users never have to wonder.
5005 (Magic.magic_macro): Added @macro function to ease the creation of
5009 (Magic.magic_macro): Added @macro function to ease the creation of
5006 macros.
5010 macros.
5007
5011
5008 2002-01-05 Fernando Perez <fperez@colorado.edu>
5012 2002-01-05 Fernando Perez <fperez@colorado.edu>
5009
5013
5010 * Released 0.2.4.
5014 * Released 0.2.4.
5011
5015
5012 * IPython/iplib.py (Magic.magic_pdef):
5016 * IPython/iplib.py (Magic.magic_pdef):
5013 (InteractiveShell.safe_execfile): report magic lines and error
5017 (InteractiveShell.safe_execfile): report magic lines and error
5014 lines without line numbers so one can easily copy/paste them for
5018 lines without line numbers so one can easily copy/paste them for
5015 re-execution.
5019 re-execution.
5016
5020
5017 * Updated manual with recent changes.
5021 * Updated manual with recent changes.
5018
5022
5019 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5023 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5020 docstring printing when class? is called. Very handy for knowing
5024 docstring printing when class? is called. Very handy for knowing
5021 how to create class instances (as long as __init__ is well
5025 how to create class instances (as long as __init__ is well
5022 documented, of course :)
5026 documented, of course :)
5023 (Magic.magic_doc): print both class and constructor docstrings.
5027 (Magic.magic_doc): print both class and constructor docstrings.
5024 (Magic.magic_pdef): give constructor info if passed a class and
5028 (Magic.magic_pdef): give constructor info if passed a class and
5025 __call__ info for callable object instances.
5029 __call__ info for callable object instances.
5026
5030
5027 2002-01-04 Fernando Perez <fperez@colorado.edu>
5031 2002-01-04 Fernando Perez <fperez@colorado.edu>
5028
5032
5029 * Made deep_reload() off by default. It doesn't always work
5033 * Made deep_reload() off by default. It doesn't always work
5030 exactly as intended, so it's probably safer to have it off. It's
5034 exactly as intended, so it's probably safer to have it off. It's
5031 still available as dreload() anyway, so nothing is lost.
5035 still available as dreload() anyway, so nothing is lost.
5032
5036
5033 2002-01-02 Fernando Perez <fperez@colorado.edu>
5037 2002-01-02 Fernando Perez <fperez@colorado.edu>
5034
5038
5035 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5039 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5036 so I wanted an updated release).
5040 so I wanted an updated release).
5037
5041
5038 2001-12-27 Fernando Perez <fperez@colorado.edu>
5042 2001-12-27 Fernando Perez <fperez@colorado.edu>
5039
5043
5040 * IPython/iplib.py (InteractiveShell.interact): Added the original
5044 * IPython/iplib.py (InteractiveShell.interact): Added the original
5041 code from 'code.py' for this module in order to change the
5045 code from 'code.py' for this module in order to change the
5042 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5046 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5043 the history cache would break when the user hit Ctrl-C, and
5047 the history cache would break when the user hit Ctrl-C, and
5044 interact() offers no way to add any hooks to it.
5048 interact() offers no way to add any hooks to it.
5045
5049
5046 2001-12-23 Fernando Perez <fperez@colorado.edu>
5050 2001-12-23 Fernando Perez <fperez@colorado.edu>
5047
5051
5048 * setup.py: added check for 'MANIFEST' before trying to remove
5052 * setup.py: added check for 'MANIFEST' before trying to remove
5049 it. Thanks to Sean Reifschneider.
5053 it. Thanks to Sean Reifschneider.
5050
5054
5051 2001-12-22 Fernando Perez <fperez@colorado.edu>
5055 2001-12-22 Fernando Perez <fperez@colorado.edu>
5052
5056
5053 * Released 0.2.2.
5057 * Released 0.2.2.
5054
5058
5055 * Finished (reasonably) writing the manual. Later will add the
5059 * Finished (reasonably) writing the manual. Later will add the
5056 python-standard navigation stylesheets, but for the time being
5060 python-standard navigation stylesheets, but for the time being
5057 it's fairly complete. Distribution will include html and pdf
5061 it's fairly complete. Distribution will include html and pdf
5058 versions.
5062 versions.
5059
5063
5060 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5064 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5061 (MayaVi author).
5065 (MayaVi author).
5062
5066
5063 2001-12-21 Fernando Perez <fperez@colorado.edu>
5067 2001-12-21 Fernando Perez <fperez@colorado.edu>
5064
5068
5065 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5069 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5066 good public release, I think (with the manual and the distutils
5070 good public release, I think (with the manual and the distutils
5067 installer). The manual can use some work, but that can go
5071 installer). The manual can use some work, but that can go
5068 slowly. Otherwise I think it's quite nice for end users. Next
5072 slowly. Otherwise I think it's quite nice for end users. Next
5069 summer, rewrite the guts of it...
5073 summer, rewrite the guts of it...
5070
5074
5071 * Changed format of ipythonrc files to use whitespace as the
5075 * Changed format of ipythonrc files to use whitespace as the
5072 separator instead of an explicit '='. Cleaner.
5076 separator instead of an explicit '='. Cleaner.
5073
5077
5074 2001-12-20 Fernando Perez <fperez@colorado.edu>
5078 2001-12-20 Fernando Perez <fperez@colorado.edu>
5075
5079
5076 * Started a manual in LyX. For now it's just a quick merge of the
5080 * Started a manual in LyX. For now it's just a quick merge of the
5077 various internal docstrings and READMEs. Later it may grow into a
5081 various internal docstrings and READMEs. Later it may grow into a
5078 nice, full-blown manual.
5082 nice, full-blown manual.
5079
5083
5080 * Set up a distutils based installer. Installation should now be
5084 * Set up a distutils based installer. Installation should now be
5081 trivially simple for end-users.
5085 trivially simple for end-users.
5082
5086
5083 2001-12-11 Fernando Perez <fperez@colorado.edu>
5087 2001-12-11 Fernando Perez <fperez@colorado.edu>
5084
5088
5085 * Released 0.2.0. First public release, announced it at
5089 * Released 0.2.0. First public release, announced it at
5086 comp.lang.python. From now on, just bugfixes...
5090 comp.lang.python. From now on, just bugfixes...
5087
5091
5088 * Went through all the files, set copyright/license notices and
5092 * Went through all the files, set copyright/license notices and
5089 cleaned up things. Ready for release.
5093 cleaned up things. Ready for release.
5090
5094
5091 2001-12-10 Fernando Perez <fperez@colorado.edu>
5095 2001-12-10 Fernando Perez <fperez@colorado.edu>
5092
5096
5093 * Changed the first-time installer not to use tarfiles. It's more
5097 * Changed the first-time installer not to use tarfiles. It's more
5094 robust now and less unix-dependent. Also makes it easier for
5098 robust now and less unix-dependent. Also makes it easier for
5095 people to later upgrade versions.
5099 people to later upgrade versions.
5096
5100
5097 * Changed @exit to @abort to reflect the fact that it's pretty
5101 * Changed @exit to @abort to reflect the fact that it's pretty
5098 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5102 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5099 becomes significant only when IPyhton is embedded: in that case,
5103 becomes significant only when IPyhton is embedded: in that case,
5100 C-D closes IPython only, but @abort kills the enclosing program
5104 C-D closes IPython only, but @abort kills the enclosing program
5101 too (unless it had called IPython inside a try catching
5105 too (unless it had called IPython inside a try catching
5102 SystemExit).
5106 SystemExit).
5103
5107
5104 * Created Shell module which exposes the actuall IPython Shell
5108 * Created Shell module which exposes the actuall IPython Shell
5105 classes, currently the normal and the embeddable one. This at
5109 classes, currently the normal and the embeddable one. This at
5106 least offers a stable interface we won't need to change when
5110 least offers a stable interface we won't need to change when
5107 (later) the internals are rewritten. That rewrite will be confined
5111 (later) the internals are rewritten. That rewrite will be confined
5108 to iplib and ipmaker, but the Shell interface should remain as is.
5112 to iplib and ipmaker, but the Shell interface should remain as is.
5109
5113
5110 * Added embed module which offers an embeddable IPShell object,
5114 * Added embed module which offers an embeddable IPShell object,
5111 useful to fire up IPython *inside* a running program. Great for
5115 useful to fire up IPython *inside* a running program. Great for
5112 debugging or dynamical data analysis.
5116 debugging or dynamical data analysis.
5113
5117
5114 2001-12-08 Fernando Perez <fperez@colorado.edu>
5118 2001-12-08 Fernando Perez <fperez@colorado.edu>
5115
5119
5116 * Fixed small bug preventing seeing info from methods of defined
5120 * Fixed small bug preventing seeing info from methods of defined
5117 objects (incorrect namespace in _ofind()).
5121 objects (incorrect namespace in _ofind()).
5118
5122
5119 * Documentation cleanup. Moved the main usage docstrings to a
5123 * Documentation cleanup. Moved the main usage docstrings to a
5120 separate file, usage.py (cleaner to maintain, and hopefully in the
5124 separate file, usage.py (cleaner to maintain, and hopefully in the
5121 future some perlpod-like way of producing interactive, man and
5125 future some perlpod-like way of producing interactive, man and
5122 html docs out of it will be found).
5126 html docs out of it will be found).
5123
5127
5124 * Added @profile to see your profile at any time.
5128 * Added @profile to see your profile at any time.
5125
5129
5126 * Added @p as an alias for 'print'. It's especially convenient if
5130 * Added @p as an alias for 'print'. It's especially convenient if
5127 using automagic ('p x' prints x).
5131 using automagic ('p x' prints x).
5128
5132
5129 * Small cleanups and fixes after a pychecker run.
5133 * Small cleanups and fixes after a pychecker run.
5130
5134
5131 * Changed the @cd command to handle @cd - and @cd -<n> for
5135 * Changed the @cd command to handle @cd - and @cd -<n> for
5132 visiting any directory in _dh.
5136 visiting any directory in _dh.
5133
5137
5134 * Introduced _dh, a history of visited directories. @dhist prints
5138 * Introduced _dh, a history of visited directories. @dhist prints
5135 it out with numbers.
5139 it out with numbers.
5136
5140
5137 2001-12-07 Fernando Perez <fperez@colorado.edu>
5141 2001-12-07 Fernando Perez <fperez@colorado.edu>
5138
5142
5139 * Released 0.1.22
5143 * Released 0.1.22
5140
5144
5141 * Made initialization a bit more robust against invalid color
5145 * Made initialization a bit more robust against invalid color
5142 options in user input (exit, not traceback-crash).
5146 options in user input (exit, not traceback-crash).
5143
5147
5144 * Changed the bug crash reporter to write the report only in the
5148 * Changed the bug crash reporter to write the report only in the
5145 user's .ipython directory. That way IPython won't litter people's
5149 user's .ipython directory. That way IPython won't litter people's
5146 hard disks with crash files all over the place. Also print on
5150 hard disks with crash files all over the place. Also print on
5147 screen the necessary mail command.
5151 screen the necessary mail command.
5148
5152
5149 * With the new ultraTB, implemented LightBG color scheme for light
5153 * With the new ultraTB, implemented LightBG color scheme for light
5150 background terminals. A lot of people like white backgrounds, so I
5154 background terminals. A lot of people like white backgrounds, so I
5151 guess we should at least give them something readable.
5155 guess we should at least give them something readable.
5152
5156
5153 2001-12-06 Fernando Perez <fperez@colorado.edu>
5157 2001-12-06 Fernando Perez <fperez@colorado.edu>
5154
5158
5155 * Modified the structure of ultraTB. Now there's a proper class
5159 * Modified the structure of ultraTB. Now there's a proper class
5156 for tables of color schemes which allow adding schemes easily and
5160 for tables of color schemes which allow adding schemes easily and
5157 switching the active scheme without creating a new instance every
5161 switching the active scheme without creating a new instance every
5158 time (which was ridiculous). The syntax for creating new schemes
5162 time (which was ridiculous). The syntax for creating new schemes
5159 is also cleaner. I think ultraTB is finally done, with a clean
5163 is also cleaner. I think ultraTB is finally done, with a clean
5160 class structure. Names are also much cleaner (now there's proper
5164 class structure. Names are also much cleaner (now there's proper
5161 color tables, no need for every variable to also have 'color' in
5165 color tables, no need for every variable to also have 'color' in
5162 its name).
5166 its name).
5163
5167
5164 * Broke down genutils into separate files. Now genutils only
5168 * Broke down genutils into separate files. Now genutils only
5165 contains utility functions, and classes have been moved to their
5169 contains utility functions, and classes have been moved to their
5166 own files (they had enough independent functionality to warrant
5170 own files (they had enough independent functionality to warrant
5167 it): ConfigLoader, OutputTrap, Struct.
5171 it): ConfigLoader, OutputTrap, Struct.
5168
5172
5169 2001-12-05 Fernando Perez <fperez@colorado.edu>
5173 2001-12-05 Fernando Perez <fperez@colorado.edu>
5170
5174
5171 * IPython turns 21! Released version 0.1.21, as a candidate for
5175 * IPython turns 21! Released version 0.1.21, as a candidate for
5172 public consumption. If all goes well, release in a few days.
5176 public consumption. If all goes well, release in a few days.
5173
5177
5174 * Fixed path bug (files in Extensions/ directory wouldn't be found
5178 * Fixed path bug (files in Extensions/ directory wouldn't be found
5175 unless IPython/ was explicitly in sys.path).
5179 unless IPython/ was explicitly in sys.path).
5176
5180
5177 * Extended the FlexCompleter class as MagicCompleter to allow
5181 * Extended the FlexCompleter class as MagicCompleter to allow
5178 completion of @-starting lines.
5182 completion of @-starting lines.
5179
5183
5180 * Created __release__.py file as a central repository for release
5184 * Created __release__.py file as a central repository for release
5181 info that other files can read from.
5185 info that other files can read from.
5182
5186
5183 * Fixed small bug in logging: when logging was turned on in
5187 * Fixed small bug in logging: when logging was turned on in
5184 mid-session, old lines with special meanings (!@?) were being
5188 mid-session, old lines with special meanings (!@?) were being
5185 logged without the prepended comment, which is necessary since
5189 logged without the prepended comment, which is necessary since
5186 they are not truly valid python syntax. This should make session
5190 they are not truly valid python syntax. This should make session
5187 restores produce less errors.
5191 restores produce less errors.
5188
5192
5189 * The namespace cleanup forced me to make a FlexCompleter class
5193 * The namespace cleanup forced me to make a FlexCompleter class
5190 which is nothing but a ripoff of rlcompleter, but with selectable
5194 which is nothing but a ripoff of rlcompleter, but with selectable
5191 namespace (rlcompleter only works in __main__.__dict__). I'll try
5195 namespace (rlcompleter only works in __main__.__dict__). I'll try
5192 to submit a note to the authors to see if this change can be
5196 to submit a note to the authors to see if this change can be
5193 incorporated in future rlcompleter releases (Dec.6: done)
5197 incorporated in future rlcompleter releases (Dec.6: done)
5194
5198
5195 * More fixes to namespace handling. It was a mess! Now all
5199 * More fixes to namespace handling. It was a mess! Now all
5196 explicit references to __main__.__dict__ are gone (except when
5200 explicit references to __main__.__dict__ are gone (except when
5197 really needed) and everything is handled through the namespace
5201 really needed) and everything is handled through the namespace
5198 dicts in the IPython instance. We seem to be getting somewhere
5202 dicts in the IPython instance. We seem to be getting somewhere
5199 with this, finally...
5203 with this, finally...
5200
5204
5201 * Small documentation updates.
5205 * Small documentation updates.
5202
5206
5203 * Created the Extensions directory under IPython (with an
5207 * Created the Extensions directory under IPython (with an
5204 __init__.py). Put the PhysicalQ stuff there. This directory should
5208 __init__.py). Put the PhysicalQ stuff there. This directory should
5205 be used for all special-purpose extensions.
5209 be used for all special-purpose extensions.
5206
5210
5207 * File renaming:
5211 * File renaming:
5208 ipythonlib --> ipmaker
5212 ipythonlib --> ipmaker
5209 ipplib --> iplib
5213 ipplib --> iplib
5210 This makes a bit more sense in terms of what these files actually do.
5214 This makes a bit more sense in terms of what these files actually do.
5211
5215
5212 * Moved all the classes and functions in ipythonlib to ipplib, so
5216 * Moved all the classes and functions in ipythonlib to ipplib, so
5213 now ipythonlib only has make_IPython(). This will ease up its
5217 now ipythonlib only has make_IPython(). This will ease up its
5214 splitting in smaller functional chunks later.
5218 splitting in smaller functional chunks later.
5215
5219
5216 * Cleaned up (done, I think) output of @whos. Better column
5220 * Cleaned up (done, I think) output of @whos. Better column
5217 formatting, and now shows str(var) for as much as it can, which is
5221 formatting, and now shows str(var) for as much as it can, which is
5218 typically what one gets with a 'print var'.
5222 typically what one gets with a 'print var'.
5219
5223
5220 2001-12-04 Fernando Perez <fperez@colorado.edu>
5224 2001-12-04 Fernando Perez <fperez@colorado.edu>
5221
5225
5222 * Fixed namespace problems. Now builtin/IPyhton/user names get
5226 * Fixed namespace problems. Now builtin/IPyhton/user names get
5223 properly reported in their namespace. Internal namespace handling
5227 properly reported in their namespace. Internal namespace handling
5224 is finally getting decent (not perfect yet, but much better than
5228 is finally getting decent (not perfect yet, but much better than
5225 the ad-hoc mess we had).
5229 the ad-hoc mess we had).
5226
5230
5227 * Removed -exit option. If people just want to run a python
5231 * Removed -exit option. If people just want to run a python
5228 script, that's what the normal interpreter is for. Less
5232 script, that's what the normal interpreter is for. Less
5229 unnecessary options, less chances for bugs.
5233 unnecessary options, less chances for bugs.
5230
5234
5231 * Added a crash handler which generates a complete post-mortem if
5235 * Added a crash handler which generates a complete post-mortem if
5232 IPython crashes. This will help a lot in tracking bugs down the
5236 IPython crashes. This will help a lot in tracking bugs down the
5233 road.
5237 road.
5234
5238
5235 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5239 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5236 which were boud to functions being reassigned would bypass the
5240 which were boud to functions being reassigned would bypass the
5237 logger, breaking the sync of _il with the prompt counter. This
5241 logger, breaking the sync of _il with the prompt counter. This
5238 would then crash IPython later when a new line was logged.
5242 would then crash IPython later when a new line was logged.
5239
5243
5240 2001-12-02 Fernando Perez <fperez@colorado.edu>
5244 2001-12-02 Fernando Perez <fperez@colorado.edu>
5241
5245
5242 * Made IPython a package. This means people don't have to clutter
5246 * Made IPython a package. This means people don't have to clutter
5243 their sys.path with yet another directory. Changed the INSTALL
5247 their sys.path with yet another directory. Changed the INSTALL
5244 file accordingly.
5248 file accordingly.
5245
5249
5246 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5250 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5247 sorts its output (so @who shows it sorted) and @whos formats the
5251 sorts its output (so @who shows it sorted) and @whos formats the
5248 table according to the width of the first column. Nicer, easier to
5252 table according to the width of the first column. Nicer, easier to
5249 read. Todo: write a generic table_format() which takes a list of
5253 read. Todo: write a generic table_format() which takes a list of
5250 lists and prints it nicely formatted, with optional row/column
5254 lists and prints it nicely formatted, with optional row/column
5251 separators and proper padding and justification.
5255 separators and proper padding and justification.
5252
5256
5253 * Released 0.1.20
5257 * Released 0.1.20
5254
5258
5255 * Fixed bug in @log which would reverse the inputcache list (a
5259 * Fixed bug in @log which would reverse the inputcache list (a
5256 copy operation was missing).
5260 copy operation was missing).
5257
5261
5258 * Code cleanup. @config was changed to use page(). Better, since
5262 * Code cleanup. @config was changed to use page(). Better, since
5259 its output is always quite long.
5263 its output is always quite long.
5260
5264
5261 * Itpl is back as a dependency. I was having too many problems
5265 * Itpl is back as a dependency. I was having too many problems
5262 getting the parametric aliases to work reliably, and it's just
5266 getting the parametric aliases to work reliably, and it's just
5263 easier to code weird string operations with it than playing %()s
5267 easier to code weird string operations with it than playing %()s
5264 games. It's only ~6k, so I don't think it's too big a deal.
5268 games. It's only ~6k, so I don't think it's too big a deal.
5265
5269
5266 * Found (and fixed) a very nasty bug with history. !lines weren't
5270 * Found (and fixed) a very nasty bug with history. !lines weren't
5267 getting cached, and the out of sync caches would crash
5271 getting cached, and the out of sync caches would crash
5268 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5272 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5269 division of labor a bit better. Bug fixed, cleaner structure.
5273 division of labor a bit better. Bug fixed, cleaner structure.
5270
5274
5271 2001-12-01 Fernando Perez <fperez@colorado.edu>
5275 2001-12-01 Fernando Perez <fperez@colorado.edu>
5272
5276
5273 * Released 0.1.19
5277 * Released 0.1.19
5274
5278
5275 * Added option -n to @hist to prevent line number printing. Much
5279 * Added option -n to @hist to prevent line number printing. Much
5276 easier to copy/paste code this way.
5280 easier to copy/paste code this way.
5277
5281
5278 * Created global _il to hold the input list. Allows easy
5282 * Created global _il to hold the input list. Allows easy
5279 re-execution of blocks of code by slicing it (inspired by Janko's
5283 re-execution of blocks of code by slicing it (inspired by Janko's
5280 comment on 'macros').
5284 comment on 'macros').
5281
5285
5282 * Small fixes and doc updates.
5286 * Small fixes and doc updates.
5283
5287
5284 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5288 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5285 much too fragile with automagic. Handles properly multi-line
5289 much too fragile with automagic. Handles properly multi-line
5286 statements and takes parameters.
5290 statements and takes parameters.
5287
5291
5288 2001-11-30 Fernando Perez <fperez@colorado.edu>
5292 2001-11-30 Fernando Perez <fperez@colorado.edu>
5289
5293
5290 * Version 0.1.18 released.
5294 * Version 0.1.18 released.
5291
5295
5292 * Fixed nasty namespace bug in initial module imports.
5296 * Fixed nasty namespace bug in initial module imports.
5293
5297
5294 * Added copyright/license notes to all code files (except
5298 * Added copyright/license notes to all code files (except
5295 DPyGetOpt). For the time being, LGPL. That could change.
5299 DPyGetOpt). For the time being, LGPL. That could change.
5296
5300
5297 * Rewrote a much nicer README, updated INSTALL, cleaned up
5301 * Rewrote a much nicer README, updated INSTALL, cleaned up
5298 ipythonrc-* samples.
5302 ipythonrc-* samples.
5299
5303
5300 * Overall code/documentation cleanup. Basically ready for
5304 * Overall code/documentation cleanup. Basically ready for
5301 release. Only remaining thing: licence decision (LGPL?).
5305 release. Only remaining thing: licence decision (LGPL?).
5302
5306
5303 * Converted load_config to a class, ConfigLoader. Now recursion
5307 * Converted load_config to a class, ConfigLoader. Now recursion
5304 control is better organized. Doesn't include the same file twice.
5308 control is better organized. Doesn't include the same file twice.
5305
5309
5306 2001-11-29 Fernando Perez <fperez@colorado.edu>
5310 2001-11-29 Fernando Perez <fperez@colorado.edu>
5307
5311
5308 * Got input history working. Changed output history variables from
5312 * Got input history working. Changed output history variables from
5309 _p to _o so that _i is for input and _o for output. Just cleaner
5313 _p to _o so that _i is for input and _o for output. Just cleaner
5310 convention.
5314 convention.
5311
5315
5312 * Implemented parametric aliases. This pretty much allows the
5316 * Implemented parametric aliases. This pretty much allows the
5313 alias system to offer full-blown shell convenience, I think.
5317 alias system to offer full-blown shell convenience, I think.
5314
5318
5315 * Version 0.1.17 released, 0.1.18 opened.
5319 * Version 0.1.17 released, 0.1.18 opened.
5316
5320
5317 * dot_ipython/ipythonrc (alias): added documentation.
5321 * dot_ipython/ipythonrc (alias): added documentation.
5318 (xcolor): Fixed small bug (xcolors -> xcolor)
5322 (xcolor): Fixed small bug (xcolors -> xcolor)
5319
5323
5320 * Changed the alias system. Now alias is a magic command to define
5324 * Changed the alias system. Now alias is a magic command to define
5321 aliases just like the shell. Rationale: the builtin magics should
5325 aliases just like the shell. Rationale: the builtin magics should
5322 be there for things deeply connected to IPython's
5326 be there for things deeply connected to IPython's
5323 architecture. And this is a much lighter system for what I think
5327 architecture. And this is a much lighter system for what I think
5324 is the really important feature: allowing users to define quickly
5328 is the really important feature: allowing users to define quickly
5325 magics that will do shell things for them, so they can customize
5329 magics that will do shell things for them, so they can customize
5326 IPython easily to match their work habits. If someone is really
5330 IPython easily to match their work habits. If someone is really
5327 desperate to have another name for a builtin alias, they can
5331 desperate to have another name for a builtin alias, they can
5328 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5332 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5329 works.
5333 works.
5330
5334
5331 2001-11-28 Fernando Perez <fperez@colorado.edu>
5335 2001-11-28 Fernando Perez <fperez@colorado.edu>
5332
5336
5333 * Changed @file so that it opens the source file at the proper
5337 * Changed @file so that it opens the source file at the proper
5334 line. Since it uses less, if your EDITOR environment is
5338 line. Since it uses less, if your EDITOR environment is
5335 configured, typing v will immediately open your editor of choice
5339 configured, typing v will immediately open your editor of choice
5336 right at the line where the object is defined. Not as quick as
5340 right at the line where the object is defined. Not as quick as
5337 having a direct @edit command, but for all intents and purposes it
5341 having a direct @edit command, but for all intents and purposes it
5338 works. And I don't have to worry about writing @edit to deal with
5342 works. And I don't have to worry about writing @edit to deal with
5339 all the editors, less does that.
5343 all the editors, less does that.
5340
5344
5341 * Version 0.1.16 released, 0.1.17 opened.
5345 * Version 0.1.16 released, 0.1.17 opened.
5342
5346
5343 * Fixed some nasty bugs in the page/page_dumb combo that could
5347 * Fixed some nasty bugs in the page/page_dumb combo that could
5344 crash IPython.
5348 crash IPython.
5345
5349
5346 2001-11-27 Fernando Perez <fperez@colorado.edu>
5350 2001-11-27 Fernando Perez <fperez@colorado.edu>
5347
5351
5348 * Version 0.1.15 released, 0.1.16 opened.
5352 * Version 0.1.15 released, 0.1.16 opened.
5349
5353
5350 * Finally got ? and ?? to work for undefined things: now it's
5354 * Finally got ? and ?? to work for undefined things: now it's
5351 possible to type {}.get? and get information about the get method
5355 possible to type {}.get? and get information about the get method
5352 of dicts, or os.path? even if only os is defined (so technically
5356 of dicts, or os.path? even if only os is defined (so technically
5353 os.path isn't). Works at any level. For example, after import os,
5357 os.path isn't). Works at any level. For example, after import os,
5354 os?, os.path?, os.path.abspath? all work. This is great, took some
5358 os?, os.path?, os.path.abspath? all work. This is great, took some
5355 work in _ofind.
5359 work in _ofind.
5356
5360
5357 * Fixed more bugs with logging. The sanest way to do it was to add
5361 * Fixed more bugs with logging. The sanest way to do it was to add
5358 to @log a 'mode' parameter. Killed two in one shot (this mode
5362 to @log a 'mode' parameter. Killed two in one shot (this mode
5359 option was a request of Janko's). I think it's finally clean
5363 option was a request of Janko's). I think it's finally clean
5360 (famous last words).
5364 (famous last words).
5361
5365
5362 * Added a page_dumb() pager which does a decent job of paging on
5366 * Added a page_dumb() pager which does a decent job of paging on
5363 screen, if better things (like less) aren't available. One less
5367 screen, if better things (like less) aren't available. One less
5364 unix dependency (someday maybe somebody will port this to
5368 unix dependency (someday maybe somebody will port this to
5365 windows).
5369 windows).
5366
5370
5367 * Fixed problem in magic_log: would lock of logging out if log
5371 * Fixed problem in magic_log: would lock of logging out if log
5368 creation failed (because it would still think it had succeeded).
5372 creation failed (because it would still think it had succeeded).
5369
5373
5370 * Improved the page() function using curses to auto-detect screen
5374 * Improved the page() function using curses to auto-detect screen
5371 size. Now it can make a much better decision on whether to print
5375 size. Now it can make a much better decision on whether to print
5372 or page a string. Option screen_length was modified: a value 0
5376 or page a string. Option screen_length was modified: a value 0
5373 means auto-detect, and that's the default now.
5377 means auto-detect, and that's the default now.
5374
5378
5375 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5379 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5376 go out. I'll test it for a few days, then talk to Janko about
5380 go out. I'll test it for a few days, then talk to Janko about
5377 licences and announce it.
5381 licences and announce it.
5378
5382
5379 * Fixed the length of the auto-generated ---> prompt which appears
5383 * Fixed the length of the auto-generated ---> prompt which appears
5380 for auto-parens and auto-quotes. Getting this right isn't trivial,
5384 for auto-parens and auto-quotes. Getting this right isn't trivial,
5381 with all the color escapes, different prompt types and optional
5385 with all the color escapes, different prompt types and optional
5382 separators. But it seems to be working in all the combinations.
5386 separators. But it seems to be working in all the combinations.
5383
5387
5384 2001-11-26 Fernando Perez <fperez@colorado.edu>
5388 2001-11-26 Fernando Perez <fperez@colorado.edu>
5385
5389
5386 * Wrote a regexp filter to get option types from the option names
5390 * Wrote a regexp filter to get option types from the option names
5387 string. This eliminates the need to manually keep two duplicate
5391 string. This eliminates the need to manually keep two duplicate
5388 lists.
5392 lists.
5389
5393
5390 * Removed the unneeded check_option_names. Now options are handled
5394 * Removed the unneeded check_option_names. Now options are handled
5391 in a much saner manner and it's easy to visually check that things
5395 in a much saner manner and it's easy to visually check that things
5392 are ok.
5396 are ok.
5393
5397
5394 * Updated version numbers on all files I modified to carry a
5398 * Updated version numbers on all files I modified to carry a
5395 notice so Janko and Nathan have clear version markers.
5399 notice so Janko and Nathan have clear version markers.
5396
5400
5397 * Updated docstring for ultraTB with my changes. I should send
5401 * Updated docstring for ultraTB with my changes. I should send
5398 this to Nathan.
5402 this to Nathan.
5399
5403
5400 * Lots of small fixes. Ran everything through pychecker again.
5404 * Lots of small fixes. Ran everything through pychecker again.
5401
5405
5402 * Made loading of deep_reload an cmd line option. If it's not too
5406 * Made loading of deep_reload an cmd line option. If it's not too
5403 kosher, now people can just disable it. With -nodeep_reload it's
5407 kosher, now people can just disable it. With -nodeep_reload it's
5404 still available as dreload(), it just won't overwrite reload().
5408 still available as dreload(), it just won't overwrite reload().
5405
5409
5406 * Moved many options to the no| form (-opt and -noopt
5410 * Moved many options to the no| form (-opt and -noopt
5407 accepted). Cleaner.
5411 accepted). Cleaner.
5408
5412
5409 * Changed magic_log so that if called with no parameters, it uses
5413 * Changed magic_log so that if called with no parameters, it uses
5410 'rotate' mode. That way auto-generated logs aren't automatically
5414 'rotate' mode. That way auto-generated logs aren't automatically
5411 over-written. For normal logs, now a backup is made if it exists
5415 over-written. For normal logs, now a backup is made if it exists
5412 (only 1 level of backups). A new 'backup' mode was added to the
5416 (only 1 level of backups). A new 'backup' mode was added to the
5413 Logger class to support this. This was a request by Janko.
5417 Logger class to support this. This was a request by Janko.
5414
5418
5415 * Added @logoff/@logon to stop/restart an active log.
5419 * Added @logoff/@logon to stop/restart an active log.
5416
5420
5417 * Fixed a lot of bugs in log saving/replay. It was pretty
5421 * Fixed a lot of bugs in log saving/replay. It was pretty
5418 broken. Now special lines (!@,/) appear properly in the command
5422 broken. Now special lines (!@,/) appear properly in the command
5419 history after a log replay.
5423 history after a log replay.
5420
5424
5421 * Tried and failed to implement full session saving via pickle. My
5425 * Tried and failed to implement full session saving via pickle. My
5422 idea was to pickle __main__.__dict__, but modules can't be
5426 idea was to pickle __main__.__dict__, but modules can't be
5423 pickled. This would be a better alternative to replaying logs, but
5427 pickled. This would be a better alternative to replaying logs, but
5424 seems quite tricky to get to work. Changed -session to be called
5428 seems quite tricky to get to work. Changed -session to be called
5425 -logplay, which more accurately reflects what it does. And if we
5429 -logplay, which more accurately reflects what it does. And if we
5426 ever get real session saving working, -session is now available.
5430 ever get real session saving working, -session is now available.
5427
5431
5428 * Implemented color schemes for prompts also. As for tracebacks,
5432 * Implemented color schemes for prompts also. As for tracebacks,
5429 currently only NoColor and Linux are supported. But now the
5433 currently only NoColor and Linux are supported. But now the
5430 infrastructure is in place, based on a generic ColorScheme
5434 infrastructure is in place, based on a generic ColorScheme
5431 class. So writing and activating new schemes both for the prompts
5435 class. So writing and activating new schemes both for the prompts
5432 and the tracebacks should be straightforward.
5436 and the tracebacks should be straightforward.
5433
5437
5434 * Version 0.1.13 released, 0.1.14 opened.
5438 * Version 0.1.13 released, 0.1.14 opened.
5435
5439
5436 * Changed handling of options for output cache. Now counter is
5440 * Changed handling of options for output cache. Now counter is
5437 hardwired starting at 1 and one specifies the maximum number of
5441 hardwired starting at 1 and one specifies the maximum number of
5438 entries *in the outcache* (not the max prompt counter). This is
5442 entries *in the outcache* (not the max prompt counter). This is
5439 much better, since many statements won't increase the cache
5443 much better, since many statements won't increase the cache
5440 count. It also eliminated some confusing options, now there's only
5444 count. It also eliminated some confusing options, now there's only
5441 one: cache_size.
5445 one: cache_size.
5442
5446
5443 * Added 'alias' magic function and magic_alias option in the
5447 * Added 'alias' magic function and magic_alias option in the
5444 ipythonrc file. Now the user can easily define whatever names he
5448 ipythonrc file. Now the user can easily define whatever names he
5445 wants for the magic functions without having to play weird
5449 wants for the magic functions without having to play weird
5446 namespace games. This gives IPython a real shell-like feel.
5450 namespace games. This gives IPython a real shell-like feel.
5447
5451
5448 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5452 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5449 @ or not).
5453 @ or not).
5450
5454
5451 This was one of the last remaining 'visible' bugs (that I know
5455 This was one of the last remaining 'visible' bugs (that I know
5452 of). I think if I can clean up the session loading so it works
5456 of). I think if I can clean up the session loading so it works
5453 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5457 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5454 about licensing).
5458 about licensing).
5455
5459
5456 2001-11-25 Fernando Perez <fperez@colorado.edu>
5460 2001-11-25 Fernando Perez <fperez@colorado.edu>
5457
5461
5458 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5462 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5459 there's a cleaner distinction between what ? and ?? show.
5463 there's a cleaner distinction between what ? and ?? show.
5460
5464
5461 * Added screen_length option. Now the user can define his own
5465 * Added screen_length option. Now the user can define his own
5462 screen size for page() operations.
5466 screen size for page() operations.
5463
5467
5464 * Implemented magic shell-like functions with automatic code
5468 * Implemented magic shell-like functions with automatic code
5465 generation. Now adding another function is just a matter of adding
5469 generation. Now adding another function is just a matter of adding
5466 an entry to a dict, and the function is dynamically generated at
5470 an entry to a dict, and the function is dynamically generated at
5467 run-time. Python has some really cool features!
5471 run-time. Python has some really cool features!
5468
5472
5469 * Renamed many options to cleanup conventions a little. Now all
5473 * Renamed many options to cleanup conventions a little. Now all
5470 are lowercase, and only underscores where needed. Also in the code
5474 are lowercase, and only underscores where needed. Also in the code
5471 option name tables are clearer.
5475 option name tables are clearer.
5472
5476
5473 * Changed prompts a little. Now input is 'In [n]:' instead of
5477 * Changed prompts a little. Now input is 'In [n]:' instead of
5474 'In[n]:='. This allows it the numbers to be aligned with the
5478 'In[n]:='. This allows it the numbers to be aligned with the
5475 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5479 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5476 Python (it was a Mathematica thing). The '...' continuation prompt
5480 Python (it was a Mathematica thing). The '...' continuation prompt
5477 was also changed a little to align better.
5481 was also changed a little to align better.
5478
5482
5479 * Fixed bug when flushing output cache. Not all _p<n> variables
5483 * Fixed bug when flushing output cache. Not all _p<n> variables
5480 exist, so their deletion needs to be wrapped in a try:
5484 exist, so their deletion needs to be wrapped in a try:
5481
5485
5482 * Figured out how to properly use inspect.formatargspec() (it
5486 * Figured out how to properly use inspect.formatargspec() (it
5483 requires the args preceded by *). So I removed all the code from
5487 requires the args preceded by *). So I removed all the code from
5484 _get_pdef in Magic, which was just replicating that.
5488 _get_pdef in Magic, which was just replicating that.
5485
5489
5486 * Added test to prefilter to allow redefining magic function names
5490 * Added test to prefilter to allow redefining magic function names
5487 as variables. This is ok, since the @ form is always available,
5491 as variables. This is ok, since the @ form is always available,
5488 but whe should allow the user to define a variable called 'ls' if
5492 but whe should allow the user to define a variable called 'ls' if
5489 he needs it.
5493 he needs it.
5490
5494
5491 * Moved the ToDo information from README into a separate ToDo.
5495 * Moved the ToDo information from README into a separate ToDo.
5492
5496
5493 * General code cleanup and small bugfixes. I think it's close to a
5497 * General code cleanup and small bugfixes. I think it's close to a
5494 state where it can be released, obviously with a big 'beta'
5498 state where it can be released, obviously with a big 'beta'
5495 warning on it.
5499 warning on it.
5496
5500
5497 * Got the magic function split to work. Now all magics are defined
5501 * Got the magic function split to work. Now all magics are defined
5498 in a separate class. It just organizes things a bit, and now
5502 in a separate class. It just organizes things a bit, and now
5499 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5503 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5500 was too long).
5504 was too long).
5501
5505
5502 * Changed @clear to @reset to avoid potential confusions with
5506 * Changed @clear to @reset to avoid potential confusions with
5503 the shell command clear. Also renamed @cl to @clear, which does
5507 the shell command clear. Also renamed @cl to @clear, which does
5504 exactly what people expect it to from their shell experience.
5508 exactly what people expect it to from their shell experience.
5505
5509
5506 Added a check to the @reset command (since it's so
5510 Added a check to the @reset command (since it's so
5507 destructive, it's probably a good idea to ask for confirmation).
5511 destructive, it's probably a good idea to ask for confirmation).
5508 But now reset only works for full namespace resetting. Since the
5512 But now reset only works for full namespace resetting. Since the
5509 del keyword is already there for deleting a few specific
5513 del keyword is already there for deleting a few specific
5510 variables, I don't see the point of having a redundant magic
5514 variables, I don't see the point of having a redundant magic
5511 function for the same task.
5515 function for the same task.
5512
5516
5513 2001-11-24 Fernando Perez <fperez@colorado.edu>
5517 2001-11-24 Fernando Perez <fperez@colorado.edu>
5514
5518
5515 * Updated the builtin docs (esp. the ? ones).
5519 * Updated the builtin docs (esp. the ? ones).
5516
5520
5517 * Ran all the code through pychecker. Not terribly impressed with
5521 * Ran all the code through pychecker. Not terribly impressed with
5518 it: lots of spurious warnings and didn't really find anything of
5522 it: lots of spurious warnings and didn't really find anything of
5519 substance (just a few modules being imported and not used).
5523 substance (just a few modules being imported and not used).
5520
5524
5521 * Implemented the new ultraTB functionality into IPython. New
5525 * Implemented the new ultraTB functionality into IPython. New
5522 option: xcolors. This chooses color scheme. xmode now only selects
5526 option: xcolors. This chooses color scheme. xmode now only selects
5523 between Plain and Verbose. Better orthogonality.
5527 between Plain and Verbose. Better orthogonality.
5524
5528
5525 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5529 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5526 mode and color scheme for the exception handlers. Now it's
5530 mode and color scheme for the exception handlers. Now it's
5527 possible to have the verbose traceback with no coloring.
5531 possible to have the verbose traceback with no coloring.
5528
5532
5529 2001-11-23 Fernando Perez <fperez@colorado.edu>
5533 2001-11-23 Fernando Perez <fperez@colorado.edu>
5530
5534
5531 * Version 0.1.12 released, 0.1.13 opened.
5535 * Version 0.1.12 released, 0.1.13 opened.
5532
5536
5533 * Removed option to set auto-quote and auto-paren escapes by
5537 * Removed option to set auto-quote and auto-paren escapes by
5534 user. The chances of breaking valid syntax are just too high. If
5538 user. The chances of breaking valid syntax are just too high. If
5535 someone *really* wants, they can always dig into the code.
5539 someone *really* wants, they can always dig into the code.
5536
5540
5537 * Made prompt separators configurable.
5541 * Made prompt separators configurable.
5538
5542
5539 2001-11-22 Fernando Perez <fperez@colorado.edu>
5543 2001-11-22 Fernando Perez <fperez@colorado.edu>
5540
5544
5541 * Small bugfixes in many places.
5545 * Small bugfixes in many places.
5542
5546
5543 * Removed the MyCompleter class from ipplib. It seemed redundant
5547 * Removed the MyCompleter class from ipplib. It seemed redundant
5544 with the C-p,C-n history search functionality. Less code to
5548 with the C-p,C-n history search functionality. Less code to
5545 maintain.
5549 maintain.
5546
5550
5547 * Moved all the original ipython.py code into ipythonlib.py. Right
5551 * Moved all the original ipython.py code into ipythonlib.py. Right
5548 now it's just one big dump into a function called make_IPython, so
5552 now it's just one big dump into a function called make_IPython, so
5549 no real modularity has been gained. But at least it makes the
5553 no real modularity has been gained. But at least it makes the
5550 wrapper script tiny, and since ipythonlib is a module, it gets
5554 wrapper script tiny, and since ipythonlib is a module, it gets
5551 compiled and startup is much faster.
5555 compiled and startup is much faster.
5552
5556
5553 This is a reasobably 'deep' change, so we should test it for a
5557 This is a reasobably 'deep' change, so we should test it for a
5554 while without messing too much more with the code.
5558 while without messing too much more with the code.
5555
5559
5556 2001-11-21 Fernando Perez <fperez@colorado.edu>
5560 2001-11-21 Fernando Perez <fperez@colorado.edu>
5557
5561
5558 * Version 0.1.11 released, 0.1.12 opened for further work.
5562 * Version 0.1.11 released, 0.1.12 opened for further work.
5559
5563
5560 * Removed dependency on Itpl. It was only needed in one place. It
5564 * Removed dependency on Itpl. It was only needed in one place. It
5561 would be nice if this became part of python, though. It makes life
5565 would be nice if this became part of python, though. It makes life
5562 *a lot* easier in some cases.
5566 *a lot* easier in some cases.
5563
5567
5564 * Simplified the prefilter code a bit. Now all handlers are
5568 * Simplified the prefilter code a bit. Now all handlers are
5565 expected to explicitly return a value (at least a blank string).
5569 expected to explicitly return a value (at least a blank string).
5566
5570
5567 * Heavy edits in ipplib. Removed the help system altogether. Now
5571 * Heavy edits in ipplib. Removed the help system altogether. Now
5568 obj?/?? is used for inspecting objects, a magic @doc prints
5572 obj?/?? is used for inspecting objects, a magic @doc prints
5569 docstrings, and full-blown Python help is accessed via the 'help'
5573 docstrings, and full-blown Python help is accessed via the 'help'
5570 keyword. This cleans up a lot of code (less to maintain) and does
5574 keyword. This cleans up a lot of code (less to maintain) and does
5571 the job. Since 'help' is now a standard Python component, might as
5575 the job. Since 'help' is now a standard Python component, might as
5572 well use it and remove duplicate functionality.
5576 well use it and remove duplicate functionality.
5573
5577
5574 Also removed the option to use ipplib as a standalone program. By
5578 Also removed the option to use ipplib as a standalone program. By
5575 now it's too dependent on other parts of IPython to function alone.
5579 now it's too dependent on other parts of IPython to function alone.
5576
5580
5577 * Fixed bug in genutils.pager. It would crash if the pager was
5581 * Fixed bug in genutils.pager. It would crash if the pager was
5578 exited immediately after opening (broken pipe).
5582 exited immediately after opening (broken pipe).
5579
5583
5580 * Trimmed down the VerboseTB reporting a little. The header is
5584 * Trimmed down the VerboseTB reporting a little. The header is
5581 much shorter now and the repeated exception arguments at the end
5585 much shorter now and the repeated exception arguments at the end
5582 have been removed. For interactive use the old header seemed a bit
5586 have been removed. For interactive use the old header seemed a bit
5583 excessive.
5587 excessive.
5584
5588
5585 * Fixed small bug in output of @whos for variables with multi-word
5589 * Fixed small bug in output of @whos for variables with multi-word
5586 types (only first word was displayed).
5590 types (only first word was displayed).
5587
5591
5588 2001-11-17 Fernando Perez <fperez@colorado.edu>
5592 2001-11-17 Fernando Perez <fperez@colorado.edu>
5589
5593
5590 * Version 0.1.10 released, 0.1.11 opened for further work.
5594 * Version 0.1.10 released, 0.1.11 opened for further work.
5591
5595
5592 * Modified dirs and friends. dirs now *returns* the stack (not
5596 * Modified dirs and friends. dirs now *returns* the stack (not
5593 prints), so one can manipulate it as a variable. Convenient to
5597 prints), so one can manipulate it as a variable. Convenient to
5594 travel along many directories.
5598 travel along many directories.
5595
5599
5596 * Fixed bug in magic_pdef: would only work with functions with
5600 * Fixed bug in magic_pdef: would only work with functions with
5597 arguments with default values.
5601 arguments with default values.
5598
5602
5599 2001-11-14 Fernando Perez <fperez@colorado.edu>
5603 2001-11-14 Fernando Perez <fperez@colorado.edu>
5600
5604
5601 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5605 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5602 example with IPython. Various other minor fixes and cleanups.
5606 example with IPython. Various other minor fixes and cleanups.
5603
5607
5604 * Version 0.1.9 released, 0.1.10 opened for further work.
5608 * Version 0.1.9 released, 0.1.10 opened for further work.
5605
5609
5606 * Added sys.path to the list of directories searched in the
5610 * Added sys.path to the list of directories searched in the
5607 execfile= option. It used to be the current directory and the
5611 execfile= option. It used to be the current directory and the
5608 user's IPYTHONDIR only.
5612 user's IPYTHONDIR only.
5609
5613
5610 2001-11-13 Fernando Perez <fperez@colorado.edu>
5614 2001-11-13 Fernando Perez <fperez@colorado.edu>
5611
5615
5612 * Reinstated the raw_input/prefilter separation that Janko had
5616 * Reinstated the raw_input/prefilter separation that Janko had
5613 initially. This gives a more convenient setup for extending the
5617 initially. This gives a more convenient setup for extending the
5614 pre-processor from the outside: raw_input always gets a string,
5618 pre-processor from the outside: raw_input always gets a string,
5615 and prefilter has to process it. We can then redefine prefilter
5619 and prefilter has to process it. We can then redefine prefilter
5616 from the outside and implement extensions for special
5620 from the outside and implement extensions for special
5617 purposes.
5621 purposes.
5618
5622
5619 Today I got one for inputting PhysicalQuantity objects
5623 Today I got one for inputting PhysicalQuantity objects
5620 (from Scientific) without needing any function calls at
5624 (from Scientific) without needing any function calls at
5621 all. Extremely convenient, and it's all done as a user-level
5625 all. Extremely convenient, and it's all done as a user-level
5622 extension (no IPython code was touched). Now instead of:
5626 extension (no IPython code was touched). Now instead of:
5623 a = PhysicalQuantity(4.2,'m/s**2')
5627 a = PhysicalQuantity(4.2,'m/s**2')
5624 one can simply say
5628 one can simply say
5625 a = 4.2 m/s**2
5629 a = 4.2 m/s**2
5626 or even
5630 or even
5627 a = 4.2 m/s^2
5631 a = 4.2 m/s^2
5628
5632
5629 I use this, but it's also a proof of concept: IPython really is
5633 I use this, but it's also a proof of concept: IPython really is
5630 fully user-extensible, even at the level of the parsing of the
5634 fully user-extensible, even at the level of the parsing of the
5631 command line. It's not trivial, but it's perfectly doable.
5635 command line. It's not trivial, but it's perfectly doable.
5632
5636
5633 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5637 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5634 the problem of modules being loaded in the inverse order in which
5638 the problem of modules being loaded in the inverse order in which
5635 they were defined in
5639 they were defined in
5636
5640
5637 * Version 0.1.8 released, 0.1.9 opened for further work.
5641 * Version 0.1.8 released, 0.1.9 opened for further work.
5638
5642
5639 * Added magics pdef, source and file. They respectively show the
5643 * Added magics pdef, source and file. They respectively show the
5640 definition line ('prototype' in C), source code and full python
5644 definition line ('prototype' in C), source code and full python
5641 file for any callable object. The object inspector oinfo uses
5645 file for any callable object. The object inspector oinfo uses
5642 these to show the same information.
5646 these to show the same information.
5643
5647
5644 * Version 0.1.7 released, 0.1.8 opened for further work.
5648 * Version 0.1.7 released, 0.1.8 opened for further work.
5645
5649
5646 * Separated all the magic functions into a class called Magic. The
5650 * Separated all the magic functions into a class called Magic. The
5647 InteractiveShell class was becoming too big for Xemacs to handle
5651 InteractiveShell class was becoming too big for Xemacs to handle
5648 (de-indenting a line would lock it up for 10 seconds while it
5652 (de-indenting a line would lock it up for 10 seconds while it
5649 backtracked on the whole class!)
5653 backtracked on the whole class!)
5650
5654
5651 FIXME: didn't work. It can be done, but right now namespaces are
5655 FIXME: didn't work. It can be done, but right now namespaces are
5652 all messed up. Do it later (reverted it for now, so at least
5656 all messed up. Do it later (reverted it for now, so at least
5653 everything works as before).
5657 everything works as before).
5654
5658
5655 * Got the object introspection system (magic_oinfo) working! I
5659 * Got the object introspection system (magic_oinfo) working! I
5656 think this is pretty much ready for release to Janko, so he can
5660 think this is pretty much ready for release to Janko, so he can
5657 test it for a while and then announce it. Pretty much 100% of what
5661 test it for a while and then announce it. Pretty much 100% of what
5658 I wanted for the 'phase 1' release is ready. Happy, tired.
5662 I wanted for the 'phase 1' release is ready. Happy, tired.
5659
5663
5660 2001-11-12 Fernando Perez <fperez@colorado.edu>
5664 2001-11-12 Fernando Perez <fperez@colorado.edu>
5661
5665
5662 * Version 0.1.6 released, 0.1.7 opened for further work.
5666 * Version 0.1.6 released, 0.1.7 opened for further work.
5663
5667
5664 * Fixed bug in printing: it used to test for truth before
5668 * Fixed bug in printing: it used to test for truth before
5665 printing, so 0 wouldn't print. Now checks for None.
5669 printing, so 0 wouldn't print. Now checks for None.
5666
5670
5667 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5671 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5668 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5672 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5669 reaches by hand into the outputcache. Think of a better way to do
5673 reaches by hand into the outputcache. Think of a better way to do
5670 this later.
5674 this later.
5671
5675
5672 * Various small fixes thanks to Nathan's comments.
5676 * Various small fixes thanks to Nathan's comments.
5673
5677
5674 * Changed magic_pprint to magic_Pprint. This way it doesn't
5678 * Changed magic_pprint to magic_Pprint. This way it doesn't
5675 collide with pprint() and the name is consistent with the command
5679 collide with pprint() and the name is consistent with the command
5676 line option.
5680 line option.
5677
5681
5678 * Changed prompt counter behavior to be fully like
5682 * Changed prompt counter behavior to be fully like
5679 Mathematica's. That is, even input that doesn't return a result
5683 Mathematica's. That is, even input that doesn't return a result
5680 raises the prompt counter. The old behavior was kind of confusing
5684 raises the prompt counter. The old behavior was kind of confusing
5681 (getting the same prompt number several times if the operation
5685 (getting the same prompt number several times if the operation
5682 didn't return a result).
5686 didn't return a result).
5683
5687
5684 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5688 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5685
5689
5686 * Fixed -Classic mode (wasn't working anymore).
5690 * Fixed -Classic mode (wasn't working anymore).
5687
5691
5688 * Added colored prompts using Nathan's new code. Colors are
5692 * Added colored prompts using Nathan's new code. Colors are
5689 currently hardwired, they can be user-configurable. For
5693 currently hardwired, they can be user-configurable. For
5690 developers, they can be chosen in file ipythonlib.py, at the
5694 developers, they can be chosen in file ipythonlib.py, at the
5691 beginning of the CachedOutput class def.
5695 beginning of the CachedOutput class def.
5692
5696
5693 2001-11-11 Fernando Perez <fperez@colorado.edu>
5697 2001-11-11 Fernando Perez <fperez@colorado.edu>
5694
5698
5695 * Version 0.1.5 released, 0.1.6 opened for further work.
5699 * Version 0.1.5 released, 0.1.6 opened for further work.
5696
5700
5697 * Changed magic_env to *return* the environment as a dict (not to
5701 * Changed magic_env to *return* the environment as a dict (not to
5698 print it). This way it prints, but it can also be processed.
5702 print it). This way it prints, but it can also be processed.
5699
5703
5700 * Added Verbose exception reporting to interactive
5704 * Added Verbose exception reporting to interactive
5701 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5705 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5702 traceback. Had to make some changes to the ultraTB file. This is
5706 traceback. Had to make some changes to the ultraTB file. This is
5703 probably the last 'big' thing in my mental todo list. This ties
5707 probably the last 'big' thing in my mental todo list. This ties
5704 in with the next entry:
5708 in with the next entry:
5705
5709
5706 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5710 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5707 has to specify is Plain, Color or Verbose for all exception
5711 has to specify is Plain, Color or Verbose for all exception
5708 handling.
5712 handling.
5709
5713
5710 * Removed ShellServices option. All this can really be done via
5714 * Removed ShellServices option. All this can really be done via
5711 the magic system. It's easier to extend, cleaner and has automatic
5715 the magic system. It's easier to extend, cleaner and has automatic
5712 namespace protection and documentation.
5716 namespace protection and documentation.
5713
5717
5714 2001-11-09 Fernando Perez <fperez@colorado.edu>
5718 2001-11-09 Fernando Perez <fperez@colorado.edu>
5715
5719
5716 * Fixed bug in output cache flushing (missing parameter to
5720 * Fixed bug in output cache flushing (missing parameter to
5717 __init__). Other small bugs fixed (found using pychecker).
5721 __init__). Other small bugs fixed (found using pychecker).
5718
5722
5719 * Version 0.1.4 opened for bugfixing.
5723 * Version 0.1.4 opened for bugfixing.
5720
5724
5721 2001-11-07 Fernando Perez <fperez@colorado.edu>
5725 2001-11-07 Fernando Perez <fperez@colorado.edu>
5722
5726
5723 * Version 0.1.3 released, mainly because of the raw_input bug.
5727 * Version 0.1.3 released, mainly because of the raw_input bug.
5724
5728
5725 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5729 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5726 and when testing for whether things were callable, a call could
5730 and when testing for whether things were callable, a call could
5727 actually be made to certain functions. They would get called again
5731 actually be made to certain functions. They would get called again
5728 once 'really' executed, with a resulting double call. A disaster
5732 once 'really' executed, with a resulting double call. A disaster
5729 in many cases (list.reverse() would never work!).
5733 in many cases (list.reverse() would never work!).
5730
5734
5731 * Removed prefilter() function, moved its code to raw_input (which
5735 * Removed prefilter() function, moved its code to raw_input (which
5732 after all was just a near-empty caller for prefilter). This saves
5736 after all was just a near-empty caller for prefilter). This saves
5733 a function call on every prompt, and simplifies the class a tiny bit.
5737 a function call on every prompt, and simplifies the class a tiny bit.
5734
5738
5735 * Fix _ip to __ip name in magic example file.
5739 * Fix _ip to __ip name in magic example file.
5736
5740
5737 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5741 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5738 work with non-gnu versions of tar.
5742 work with non-gnu versions of tar.
5739
5743
5740 2001-11-06 Fernando Perez <fperez@colorado.edu>
5744 2001-11-06 Fernando Perez <fperez@colorado.edu>
5741
5745
5742 * Version 0.1.2. Just to keep track of the recent changes.
5746 * Version 0.1.2. Just to keep track of the recent changes.
5743
5747
5744 * Fixed nasty bug in output prompt routine. It used to check 'if
5748 * Fixed nasty bug in output prompt routine. It used to check 'if
5745 arg != None...'. Problem is, this fails if arg implements a
5749 arg != None...'. Problem is, this fails if arg implements a
5746 special comparison (__cmp__) which disallows comparing to
5750 special comparison (__cmp__) which disallows comparing to
5747 None. Found it when trying to use the PhysicalQuantity module from
5751 None. Found it when trying to use the PhysicalQuantity module from
5748 ScientificPython.
5752 ScientificPython.
5749
5753
5750 2001-11-05 Fernando Perez <fperez@colorado.edu>
5754 2001-11-05 Fernando Perez <fperez@colorado.edu>
5751
5755
5752 * Also added dirs. Now the pushd/popd/dirs family functions
5756 * Also added dirs. Now the pushd/popd/dirs family functions
5753 basically like the shell, with the added convenience of going home
5757 basically like the shell, with the added convenience of going home
5754 when called with no args.
5758 when called with no args.
5755
5759
5756 * pushd/popd slightly modified to mimic shell behavior more
5760 * pushd/popd slightly modified to mimic shell behavior more
5757 closely.
5761 closely.
5758
5762
5759 * Added env,pushd,popd from ShellServices as magic functions. I
5763 * Added env,pushd,popd from ShellServices as magic functions. I
5760 think the cleanest will be to port all desired functions from
5764 think the cleanest will be to port all desired functions from
5761 ShellServices as magics and remove ShellServices altogether. This
5765 ShellServices as magics and remove ShellServices altogether. This
5762 will provide a single, clean way of adding functionality
5766 will provide a single, clean way of adding functionality
5763 (shell-type or otherwise) to IP.
5767 (shell-type or otherwise) to IP.
5764
5768
5765 2001-11-04 Fernando Perez <fperez@colorado.edu>
5769 2001-11-04 Fernando Perez <fperez@colorado.edu>
5766
5770
5767 * Added .ipython/ directory to sys.path. This way users can keep
5771 * Added .ipython/ directory to sys.path. This way users can keep
5768 customizations there and access them via import.
5772 customizations there and access them via import.
5769
5773
5770 2001-11-03 Fernando Perez <fperez@colorado.edu>
5774 2001-11-03 Fernando Perez <fperez@colorado.edu>
5771
5775
5772 * Opened version 0.1.1 for new changes.
5776 * Opened version 0.1.1 for new changes.
5773
5777
5774 * Changed version number to 0.1.0: first 'public' release, sent to
5778 * Changed version number to 0.1.0: first 'public' release, sent to
5775 Nathan and Janko.
5779 Nathan and Janko.
5776
5780
5777 * Lots of small fixes and tweaks.
5781 * Lots of small fixes and tweaks.
5778
5782
5779 * Minor changes to whos format. Now strings are shown, snipped if
5783 * Minor changes to whos format. Now strings are shown, snipped if
5780 too long.
5784 too long.
5781
5785
5782 * Changed ShellServices to work on __main__ so they show up in @who
5786 * Changed ShellServices to work on __main__ so they show up in @who
5783
5787
5784 * Help also works with ? at the end of a line:
5788 * Help also works with ? at the end of a line:
5785 ?sin and sin?
5789 ?sin and sin?
5786 both produce the same effect. This is nice, as often I use the
5790 both produce the same effect. This is nice, as often I use the
5787 tab-complete to find the name of a method, but I used to then have
5791 tab-complete to find the name of a method, but I used to then have
5788 to go to the beginning of the line to put a ? if I wanted more
5792 to go to the beginning of the line to put a ? if I wanted more
5789 info. Now I can just add the ? and hit return. Convenient.
5793 info. Now I can just add the ? and hit return. Convenient.
5790
5794
5791 2001-11-02 Fernando Perez <fperez@colorado.edu>
5795 2001-11-02 Fernando Perez <fperez@colorado.edu>
5792
5796
5793 * Python version check (>=2.1) added.
5797 * Python version check (>=2.1) added.
5794
5798
5795 * Added LazyPython documentation. At this point the docs are quite
5799 * Added LazyPython documentation. At this point the docs are quite
5796 a mess. A cleanup is in order.
5800 a mess. A cleanup is in order.
5797
5801
5798 * Auto-installer created. For some bizarre reason, the zipfiles
5802 * Auto-installer created. For some bizarre reason, the zipfiles
5799 module isn't working on my system. So I made a tar version
5803 module isn't working on my system. So I made a tar version
5800 (hopefully the command line options in various systems won't kill
5804 (hopefully the command line options in various systems won't kill
5801 me).
5805 me).
5802
5806
5803 * Fixes to Struct in genutils. Now all dictionary-like methods are
5807 * Fixes to Struct in genutils. Now all dictionary-like methods are
5804 protected (reasonably).
5808 protected (reasonably).
5805
5809
5806 * Added pager function to genutils and changed ? to print usage
5810 * Added pager function to genutils and changed ? to print usage
5807 note through it (it was too long).
5811 note through it (it was too long).
5808
5812
5809 * Added the LazyPython functionality. Works great! I changed the
5813 * Added the LazyPython functionality. Works great! I changed the
5810 auto-quote escape to ';', it's on home row and next to '. But
5814 auto-quote escape to ';', it's on home row and next to '. But
5811 both auto-quote and auto-paren (still /) escapes are command-line
5815 both auto-quote and auto-paren (still /) escapes are command-line
5812 parameters.
5816 parameters.
5813
5817
5814
5818
5815 2001-11-01 Fernando Perez <fperez@colorado.edu>
5819 2001-11-01 Fernando Perez <fperez@colorado.edu>
5816
5820
5817 * Version changed to 0.0.7. Fairly large change: configuration now
5821 * Version changed to 0.0.7. Fairly large change: configuration now
5818 is all stored in a directory, by default .ipython. There, all
5822 is all stored in a directory, by default .ipython. There, all
5819 config files have normal looking names (not .names)
5823 config files have normal looking names (not .names)
5820
5824
5821 * Version 0.0.6 Released first to Lucas and Archie as a test
5825 * Version 0.0.6 Released first to Lucas and Archie as a test
5822 run. Since it's the first 'semi-public' release, change version to
5826 run. Since it's the first 'semi-public' release, change version to
5823 > 0.0.6 for any changes now.
5827 > 0.0.6 for any changes now.
5824
5828
5825 * Stuff I had put in the ipplib.py changelog:
5829 * Stuff I had put in the ipplib.py changelog:
5826
5830
5827 Changes to InteractiveShell:
5831 Changes to InteractiveShell:
5828
5832
5829 - Made the usage message a parameter.
5833 - Made the usage message a parameter.
5830
5834
5831 - Require the name of the shell variable to be given. It's a bit
5835 - Require the name of the shell variable to be given. It's a bit
5832 of a hack, but allows the name 'shell' not to be hardwired in the
5836 of a hack, but allows the name 'shell' not to be hardwired in the
5833 magic (@) handler, which is problematic b/c it requires
5837 magic (@) handler, which is problematic b/c it requires
5834 polluting the global namespace with 'shell'. This in turn is
5838 polluting the global namespace with 'shell'. This in turn is
5835 fragile: if a user redefines a variable called shell, things
5839 fragile: if a user redefines a variable called shell, things
5836 break.
5840 break.
5837
5841
5838 - magic @: all functions available through @ need to be defined
5842 - magic @: all functions available through @ need to be defined
5839 as magic_<name>, even though they can be called simply as
5843 as magic_<name>, even though they can be called simply as
5840 @<name>. This allows the special command @magic to gather
5844 @<name>. This allows the special command @magic to gather
5841 information automatically about all existing magic functions,
5845 information automatically about all existing magic functions,
5842 even if they are run-time user extensions, by parsing the shell
5846 even if they are run-time user extensions, by parsing the shell
5843 instance __dict__ looking for special magic_ names.
5847 instance __dict__ looking for special magic_ names.
5844
5848
5845 - mainloop: added *two* local namespace parameters. This allows
5849 - mainloop: added *two* local namespace parameters. This allows
5846 the class to differentiate between parameters which were there
5850 the class to differentiate between parameters which were there
5847 before and after command line initialization was processed. This
5851 before and after command line initialization was processed. This
5848 way, later @who can show things loaded at startup by the
5852 way, later @who can show things loaded at startup by the
5849 user. This trick was necessary to make session saving/reloading
5853 user. This trick was necessary to make session saving/reloading
5850 really work: ideally after saving/exiting/reloading a session,
5854 really work: ideally after saving/exiting/reloading a session,
5851 *everything* should look the same, including the output of @who. I
5855 *everything* should look the same, including the output of @who. I
5852 was only able to make this work with this double namespace
5856 was only able to make this work with this double namespace
5853 trick.
5857 trick.
5854
5858
5855 - added a header to the logfile which allows (almost) full
5859 - added a header to the logfile which allows (almost) full
5856 session restoring.
5860 session restoring.
5857
5861
5858 - prepend lines beginning with @ or !, with a and log
5862 - prepend lines beginning with @ or !, with a and log
5859 them. Why? !lines: may be useful to know what you did @lines:
5863 them. Why? !lines: may be useful to know what you did @lines:
5860 they may affect session state. So when restoring a session, at
5864 they may affect session state. So when restoring a session, at
5861 least inform the user of their presence. I couldn't quite get
5865 least inform the user of their presence. I couldn't quite get
5862 them to properly re-execute, but at least the user is warned.
5866 them to properly re-execute, but at least the user is warned.
5863
5867
5864 * Started ChangeLog.
5868 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now