##// END OF EJS Templates
- Fix tab-completion so that quotes are not closed unless the completion is...
fptest -
Show More
@@ -1,130 +1,133 b''
1 """ Tab completion support for a couple of linux package managers
1 """ Tab completion support for a couple of linux package managers
2
2
3 This is also an example of how to write custom completer plugins
3 This is also an example of how to write custom completer plugins
4 or hooks.
4 or hooks.
5
5
6 Practical use:
6 Practical use:
7
7
8 [ipython]|1> import ipy_linux_package_managers
8 [ipython]|1> import ipy_linux_package_managers
9 [ipython]|2> apt-get u<<< press tab here >>>
9 [ipython]|2> apt-get u<<< press tab here >>>
10 update upgrade
10 update upgrade
11 [ipython]|2> apt-get up
11 [ipython]|2> apt-get up
12
12
13 """
13 """
14 import IPython.ipapi
14 import IPython.ipapi
15 import glob,os,shlex,sys
15 import glob,os,shlex,sys
16
16
17 ip = IPython.ipapi.get()
17 ip = IPython.ipapi.get()
18
18
19 def apt_completers(self, event):
19 def apt_completers(self, event):
20 """ This should return a list of strings with possible completions.
20 """ This should return a list of strings with possible completions.
21
21
22 Note that all the included strings that don't start with event.symbol
22 Note that all the included strings that don't start with event.symbol
23 are removed, in order to not confuse readline.
23 are removed, in order to not confuse readline.
24
24
25 """
25 """
26 # print event # dbg
26 # print event # dbg
27
27
28 # commands are only suggested for the 'command' part of package manager
28 # commands are only suggested for the 'command' part of package manager
29 # invocation
29 # invocation
30
30
31 cmd = (event.line + "<placeholder>").rsplit(None,1)[0]
31 cmd = (event.line + "<placeholder>").rsplit(None,1)[0]
32 # print cmd
32 # print cmd
33 if cmd.endswith('apt-get') or cmd.endswith('yum'):
33 if cmd.endswith('apt-get') or cmd.endswith('yum'):
34 return ['update', 'upgrade', 'install', 'remove']
34 return ['update', 'upgrade', 'install', 'remove']
35
35
36 # later on, add dpkg -l / whatever to get list of possible
36 # later on, add dpkg -l / whatever to get list of possible
37 # packages, add switches etc. for the rest of command line
37 # packages, add switches etc. for the rest of command line
38 # filling
38 # filling
39
39
40 raise IPython.ipapi.TryNext
40 raise IPython.ipapi.TryNext
41
41
42
42
43 # re_key specifies the regexp that triggers the specified completer
43 # re_key specifies the regexp that triggers the specified completer
44
44
45 ip.set_hook('complete_command', apt_completers, re_key = '.*apt-get')
45 ip.set_hook('complete_command', apt_completers, re_key = '.*apt-get')
46 ip.set_hook('complete_command', apt_completers, re_key = '.*yum')
46 ip.set_hook('complete_command', apt_completers, re_key = '.*yum')
47
47
48 pkg_cache = None
48 pkg_cache = None
49
49
50 def module_completer(self,event):
50 def module_completer(self,event):
51 """ Give completions after user has typed 'import' """
51 """ Give completions after user has typed 'import' """
52
52
53 # only a local version for py 2.4, pkgutil has no walk_packages() there
53 # only a local version for py 2.4, pkgutil has no walk_packages() there
54 if sys.version_info < (2,5):
54 if sys.version_info < (2,5):
55 for el in [f[:-3] for f in glob.glob("*.py")]:
55 for el in [f[:-3] for f in glob.glob("*.py")]:
56 yield el
56 yield el
57 return
57 return
58
58
59 global pkg_cache
59 global pkg_cache
60 import pkgutil,imp,time
60 import pkgutil,imp,time
61 #current =
61 #current =
62 if pkg_cache is None:
62 if pkg_cache is None:
63 print "\n\n[Standby while scanning modules, this can take a while]\n\n"
63 print "\n\n[Standby while scanning modules, this can take a while]\n\n"
64 pkg_cache = list(pkgutil.walk_packages())
64 pkg_cache = list(pkgutil.walk_packages())
65
65
66 already = set()
66 already = set()
67 for ld, name, ispkg in pkg_cache:
67 for ld, name, ispkg in pkg_cache:
68 if name.count('.') < event.symbol.count('.') + 1:
68 if name.count('.') < event.symbol.count('.') + 1:
69 if name not in already:
69 if name not in already:
70 already.add(name)
70 already.add(name)
71 yield name + (ispkg and '.' or '')
71 yield name + (ispkg and '.' or '')
72 return
72 return
73
73
74 ip.set_hook('complete_command', module_completer, str_key = 'import')
74 ip.set_hook('complete_command', module_completer, str_key = 'import')
75 ip.set_hook('complete_command', module_completer, str_key = 'from')
75 ip.set_hook('complete_command', module_completer, str_key = 'from')
76
76
77 svn_commands = """\
77 svn_commands = """\
78 add blame praise annotate ann cat checkout co cleanup commit ci copy
78 add blame praise annotate ann cat checkout co cleanup commit ci copy
79 cp delete del remove rm diff di export help ? h import info list ls
79 cp delete del remove rm diff di export help ? h import info list ls
80 lock log merge mkdir move mv rename ren propdel pdel pd propedit pedit
80 lock log merge mkdir move mv rename ren propdel pdel pd propedit pedit
81 pe propget pget pg proplist plist pl propset pset ps resolved revert
81 pe propget pget pg proplist plist pl propset pset ps resolved revert
82 status stat st switch sw unlock update
82 status stat st switch sw unlock update
83 """
83 """
84
84
85 def svn_completer(self,event):
85 def svn_completer(self,event):
86 if len((event.line + 'placeholder').split()) > 2:
86 if len((event.line + 'placeholder').split()) > 2:
87 # the rest are probably file names
87 # the rest are probably file names
88 return ip.IP.Completer.file_matches(event.symbol)
88 return ip.IP.Completer.file_matches(event.symbol)
89
89
90 return svn_commands.split()
90 return svn_commands.split()
91
91
92 ip.set_hook('complete_command', svn_completer, str_key = 'svn')
92 ip.set_hook('complete_command', svn_completer, str_key = 'svn')
93
93
94 def runlistpy(self, event):
94 def runlistpy(self, event):
95 comps = shlex.split(event.line)
95 comps = shlex.split(event.line)
96 relpath = (len(comps) > 1 and comps[-1] or '')
96 relpath = (len(comps) > 1 and comps[-1] or '')
97
97
98 print "rp",relpath
98 #print "rp",relpath # dbg
99 glob = glob.glob
100 isdir = os.path.isdir
99 if relpath.startswith('~'):
101 if relpath.startswith('~'):
100 relpath = os.path.expanduser(relpath)
102 relpath = os.path.expanduser(relpath)
101 dirs = [f.replace('\\','/') + "/" for f in glob.glob(relpath+'*') if os.path.isdir(f)]
103 dirs = [f.replace('\\','/') + "/" for f in glob(relpath+'*')
102 pys = [f.replace('\\','/') for f in glob.glob(relpath+'*.py')]
104 if isdir(f)]
105 pys = [f.replace('\\','/') for f in glob(relpath+'*.py')]
103 return dirs + pys
106 return dirs + pys
104
107
105 ip.set_hook('complete_command', runlistpy, str_key = '%run')
108 ip.set_hook('complete_command', runlistpy, str_key = '%run')
106
109
107 def cd_completer(self, event):
110 def cd_completer(self, event):
108 relpath = event.symbol
111 relpath = event.symbol
109
112
110 if '-b' in event.line:
113 if '-b' in event.line:
111 # return only bookmark completions
114 # return only bookmark completions
112 bkms = self.db.get('bookmarks',{})
115 bkms = self.db.get('bookmarks',{})
113 return bkms.keys()
116 return bkms.keys()
114
117
115 if event.symbol == '-':
118 if event.symbol == '-':
116 # jump in directory history by number
119 # jump in directory history by number
117 ents = ['-%d [%s]' % (i,s) for i,s in enumerate(ip.user_ns['_dh'])]
120 ents = ['-%d [%s]' % (i,s) for i,s in enumerate(ip.user_ns['_dh'])]
118 if len(ents) > 1:
121 if len(ents) > 1:
119 return ents
122 return ents
120 return []
123 return []
121
124
122
125
123 if relpath.startswith('~'):
126 if relpath.startswith('~'):
124 relpath = os.path.expanduser(relpath).replace('\\','/')
127 relpath = os.path.expanduser(relpath).replace('\\','/')
125 found = [f.replace('\\','/')+'/' for f in glob.glob(relpath+'*') if os.path.isdir(f)]
128 found = [f.replace('\\','/')+'/' for f in glob.glob(relpath+'*') if os.path.isdir(f)]
126 if not found:
129 if not found:
127 return [relpath]
130 return [relpath]
128 return found
131 return found
129
132
130 ip.set_hook('complete_command', cd_completer, str_key = '%cd')
133 ip.set_hook('complete_command', cd_completer, str_key = '%cd')
@@ -1,627 +1,629 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 pjoin = os.path.join
410 d = matches[0]
411 matches = [ pjoin(d,p) for p in os.listdir(d) ]
410 return matches
412 return matches
411
413
412 def alias_matches(self, text):
414 def alias_matches(self, text):
413 """Match internal system aliases"""
415 """Match internal system aliases"""
414 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
416 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
415
417
416 # if we are not in the first 'item', alias matching
418 # if we are not in the first 'item', alias matching
417 # doesn't make sense
419 # doesn't make sense
418 if ' ' in self.lbuf:
420 if ' ' in self.lbuf:
419 return []
421 return []
420 text = os.path.expanduser(text)
422 text = os.path.expanduser(text)
421 aliases = self.alias_table.keys()
423 aliases = self.alias_table.keys()
422 if text == "":
424 if text == "":
423 return aliases
425 return aliases
424 else:
426 else:
425 return [alias for alias in aliases if alias.startswith(text)]
427 return [alias for alias in aliases if alias.startswith(text)]
426
428
427 def python_matches(self,text):
429 def python_matches(self,text):
428 """Match attributes or global python names"""
430 """Match attributes or global python names"""
429
431
430 #print 'Completer->python_matches, txt=<%s>' % text # dbg
432 #print 'Completer->python_matches, txt=<%s>' % text # dbg
431 if "." in text:
433 if "." in text:
432 try:
434 try:
433 matches = self.attr_matches(text)
435 matches = self.attr_matches(text)
434 if text.endswith('.') and self.omit__names:
436 if text.endswith('.') and self.omit__names:
435 if self.omit__names == 1:
437 if self.omit__names == 1:
436 # true if txt is _not_ a __ name, false otherwise:
438 # true if txt is _not_ a __ name, false otherwise:
437 no__name = (lambda txt:
439 no__name = (lambda txt:
438 re.match(r'.*\.__.*?__',txt) is None)
440 re.match(r'.*\.__.*?__',txt) is None)
439 else:
441 else:
440 # true if txt is _not_ a _ name, false otherwise:
442 # true if txt is _not_ a _ name, false otherwise:
441 no__name = (lambda txt:
443 no__name = (lambda txt:
442 re.match(r'.*\._.*?',txt) is None)
444 re.match(r'.*\._.*?',txt) is None)
443 matches = filter(no__name, matches)
445 matches = filter(no__name, matches)
444 except NameError:
446 except NameError:
445 # catches <undefined attributes>.<tab>
447 # catches <undefined attributes>.<tab>
446 matches = []
448 matches = []
447 else:
449 else:
448 matches = self.global_matches(text)
450 matches = self.global_matches(text)
449 # this is so completion finds magics when automagic is on:
451 # this is so completion finds magics when automagic is on:
450 if (matches == [] and
452 if (matches == [] and
451 not text.startswith(os.sep) and
453 not text.startswith(os.sep) and
452 not ' ' in self.lbuf):
454 not ' ' in self.lbuf):
453 matches = self.attr_matches(self.magic_prefix+text)
455 matches = self.attr_matches(self.magic_prefix+text)
454 return matches
456 return matches
455
457
456 def _default_arguments(self, obj):
458 def _default_arguments(self, obj):
457 """Return the list of default arguments of obj if it is callable,
459 """Return the list of default arguments of obj if it is callable,
458 or empty list otherwise."""
460 or empty list otherwise."""
459
461
460 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
462 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
461 # for classes, check for __init__,__new__
463 # for classes, check for __init__,__new__
462 if inspect.isclass(obj):
464 if inspect.isclass(obj):
463 obj = (getattr(obj,'__init__',None) or
465 obj = (getattr(obj,'__init__',None) or
464 getattr(obj,'__new__',None))
466 getattr(obj,'__new__',None))
465 # for all others, check if they are __call__able
467 # for all others, check if they are __call__able
466 elif hasattr(obj, '__call__'):
468 elif hasattr(obj, '__call__'):
467 obj = obj.__call__
469 obj = obj.__call__
468 # XXX: is there a way to handle the builtins ?
470 # XXX: is there a way to handle the builtins ?
469 try:
471 try:
470 args,_,_1,defaults = inspect.getargspec(obj)
472 args,_,_1,defaults = inspect.getargspec(obj)
471 if defaults:
473 if defaults:
472 return args[-len(defaults):]
474 return args[-len(defaults):]
473 except TypeError: pass
475 except TypeError: pass
474 return []
476 return []
475
477
476 def python_func_kw_matches(self,text):
478 def python_func_kw_matches(self,text):
477 """Match named parameters (kwargs) of the last open function"""
479 """Match named parameters (kwargs) of the last open function"""
478
480
479 if "." in text: # a parameter cannot be dotted
481 if "." in text: # a parameter cannot be dotted
480 return []
482 return []
481 try: regexp = self.__funcParamsRegex
483 try: regexp = self.__funcParamsRegex
482 except AttributeError:
484 except AttributeError:
483 regexp = self.__funcParamsRegex = re.compile(r'''
485 regexp = self.__funcParamsRegex = re.compile(r'''
484 '.*?' | # single quoted strings or
486 '.*?' | # single quoted strings or
485 ".*?" | # double quoted strings or
487 ".*?" | # double quoted strings or
486 \w+ | # identifier
488 \w+ | # identifier
487 \S # other characters
489 \S # other characters
488 ''', re.VERBOSE | re.DOTALL)
490 ''', re.VERBOSE | re.DOTALL)
489 # 1. find the nearest identifier that comes before an unclosed
491 # 1. find the nearest identifier that comes before an unclosed
490 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
492 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
491 tokens = regexp.findall(self.get_line_buffer())
493 tokens = regexp.findall(self.get_line_buffer())
492 tokens.reverse()
494 tokens.reverse()
493 iterTokens = iter(tokens); openPar = 0
495 iterTokens = iter(tokens); openPar = 0
494 for token in iterTokens:
496 for token in iterTokens:
495 if token == ')':
497 if token == ')':
496 openPar -= 1
498 openPar -= 1
497 elif token == '(':
499 elif token == '(':
498 openPar += 1
500 openPar += 1
499 if openPar > 0:
501 if openPar > 0:
500 # found the last unclosed parenthesis
502 # found the last unclosed parenthesis
501 break
503 break
502 else:
504 else:
503 return []
505 return []
504 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
506 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
505 ids = []
507 ids = []
506 isId = re.compile(r'\w+$').match
508 isId = re.compile(r'\w+$').match
507 while True:
509 while True:
508 try:
510 try:
509 ids.append(iterTokens.next())
511 ids.append(iterTokens.next())
510 if not isId(ids[-1]):
512 if not isId(ids[-1]):
511 ids.pop(); break
513 ids.pop(); break
512 if not iterTokens.next() == '.':
514 if not iterTokens.next() == '.':
513 break
515 break
514 except StopIteration:
516 except StopIteration:
515 break
517 break
516 # lookup the candidate callable matches either using global_matches
518 # lookup the candidate callable matches either using global_matches
517 # or attr_matches for dotted names
519 # or attr_matches for dotted names
518 if len(ids) == 1:
520 if len(ids) == 1:
519 callableMatches = self.global_matches(ids[0])
521 callableMatches = self.global_matches(ids[0])
520 else:
522 else:
521 callableMatches = self.attr_matches('.'.join(ids[::-1]))
523 callableMatches = self.attr_matches('.'.join(ids[::-1]))
522 argMatches = []
524 argMatches = []
523 for callableMatch in callableMatches:
525 for callableMatch in callableMatches:
524 try: namedArgs = self._default_arguments(eval(callableMatch,
526 try: namedArgs = self._default_arguments(eval(callableMatch,
525 self.namespace))
527 self.namespace))
526 except: continue
528 except: continue
527 for namedArg in namedArgs:
529 for namedArg in namedArgs:
528 if namedArg.startswith(text):
530 if namedArg.startswith(text):
529 argMatches.append("%s=" %namedArg)
531 argMatches.append("%s=" %namedArg)
530 return argMatches
532 return argMatches
531
533
532 def dispatch_custom_completer(self,text):
534 def dispatch_custom_completer(self,text):
533 # print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
535 # print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
534 line = self.full_lbuf
536 line = self.full_lbuf
535 if not line.strip():
537 if not line.strip():
536 return None
538 return None
537
539
538 event = Struct()
540 event = Struct()
539 event.line = line
541 event.line = line
540 event.symbol = text
542 event.symbol = text
541 cmd = line.split(None,1)[0]
543 cmd = line.split(None,1)[0]
542 event.command = cmd
544 event.command = cmd
543 #print "\ncustom:{%s]\n" % event # dbg
545 #print "\ncustom:{%s]\n" % event # dbg
544
546
545 # for foo etc, try also to find completer for %foo
547 # for foo etc, try also to find completer for %foo
546 if not cmd.startswith(self.magic_escape):
548 if not cmd.startswith(self.magic_escape):
547 try_magic = self.custom_completers.s_matches(
549 try_magic = self.custom_completers.s_matches(
548 self.magic_escape + cmd)
550 self.magic_escape + cmd)
549 else:
551 else:
550 try_magic = []
552 try_magic = []
551
553
552
554
553 for c in itertools.chain(
555 for c in itertools.chain(
554 self.custom_completers.s_matches(cmd),
556 self.custom_completers.s_matches(cmd),
555 try_magic,
557 try_magic,
556 self.custom_completers.flat_matches(self.lbuf)):
558 self.custom_completers.flat_matches(self.lbuf)):
557 # print "try",c # dbg
559 # print "try",c # dbg
558 try:
560 try:
559 res = c(event)
561 res = c(event)
560 return [r for r in res if r.lower().startswith(text.lower())]
562 return [r for r in res if r.lower().startswith(text.lower())]
561 except ipapi.TryNext:
563 except ipapi.TryNext:
562 pass
564 pass
563
565
564 return None
566 return None
565
567
566
568
567
569
568 def complete(self, text, state):
570 def complete(self, text, state):
569 """Return the next possible completion for 'text'.
571 """Return the next possible completion for 'text'.
570
572
571 This is called successively with state == 0, 1, 2, ... until it
573 This is called successively with state == 0, 1, 2, ... until it
572 returns None. The completion should begin with 'text'. """
574 returns None. The completion should begin with 'text'. """
573
575
574 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
576 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
575
577
576 # if there is only a tab on a line with only whitespace, instead
578 # 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
579 # of the mostly useless 'do you want to see all million
578 # completions' message, just do the right thing and give the user
580 # completions' message, just do the right thing and give the user
579 # his tab! Incidentally, this enables pasting of tabbed text from
581 # his tab! Incidentally, this enables pasting of tabbed text from
580 # an editor (as long as autoindent is off).
582 # an editor (as long as autoindent is off).
581
583
582 # don't apply this on 'dumb' terminals, such as emacs buffers, so we
584 # don't apply this on 'dumb' terminals, such as emacs buffers, so we
583 # don't interfere with their own tab-completion mechanism.
585 # don't interfere with their own tab-completion mechanism.
584 self.full_lbuf = self.get_line_buffer()
586 self.full_lbuf = self.get_line_buffer()
585 self.lbuf = self.full_lbuf[:self.readline.get_endidx()]
587 self.lbuf = self.full_lbuf[:self.readline.get_endidx()]
586 if not (self.dumb_terminal or self.get_line_buffer().strip()):
588 if not (self.dumb_terminal or self.get_line_buffer().strip()):
587 self.readline.insert_text('\t')
589 self.readline.insert_text('\t')
588 return None
590 return None
589
591
590
592
591 magic_escape = self.magic_escape
593 magic_escape = self.magic_escape
592 magic_prefix = self.magic_prefix
594 magic_prefix = self.magic_prefix
593
595
594 try:
596 try:
595 if text.startswith(magic_escape):
597 if text.startswith(magic_escape):
596 text = text.replace(magic_escape,magic_prefix)
598 text = text.replace(magic_escape,magic_prefix)
597 elif text.startswith('~'):
599 elif text.startswith('~'):
598 text = os.path.expanduser(text)
600 text = os.path.expanduser(text)
599 if state == 0:
601 if state == 0:
600 custom_res = self.dispatch_custom_completer(text)
602 custom_res = self.dispatch_custom_completer(text)
601 if custom_res is not None:
603 if custom_res is not None:
602 # did custom completers produce something?
604 # did custom completers produce something?
603 self.matches = custom_res
605 self.matches = custom_res
604 else:
606 else:
605 # Extend the list of completions with the results of each
607 # Extend the list of completions with the results of each
606 # matcher, so we return results to the user from all
608 # matcher, so we return results to the user from all
607 # namespaces.
609 # namespaces.
608 if self.merge_completions:
610 if self.merge_completions:
609 self.matches = []
611 self.matches = []
610 for matcher in self.matchers:
612 for matcher in self.matchers:
611 self.matches.extend(matcher(text))
613 self.matches.extend(matcher(text))
612 else:
614 else:
613 for matcher in self.matchers:
615 for matcher in self.matchers:
614 self.matches = matcher(text)
616 self.matches = matcher(text)
615 if self.matches:
617 if self.matches:
616 break
618 break
617
619
618 try:
620 try:
619 return self.matches[state].replace(magic_prefix,magic_escape)
621 return self.matches[state].replace(magic_prefix,magic_escape)
620 except IndexError:
622 except IndexError:
621 return None
623 return None
622 except:
624 except:
623 from IPython.ultraTB import AutoFormattedTB; # dbg
625 from IPython.ultraTB import AutoFormattedTB; # dbg
624 tb=AutoFormattedTB('Verbose');tb() #dbg
626 tb=AutoFormattedTB('Verbose');tb() #dbg
625
627
626 # If completion fails, don't annoy the user.
628 # If completion fails, don't annoy the user.
627 return None
629 return None
@@ -1,5872 +1,5879 b''
1 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
2
3 * IPython/completer.py (IPCompleter.file_matches): Fix
4 tab-completion so that quotes are not closed unless the completion
5 is unambiguous. After a request by Stefan. Minor cleanups in
6 ipy_stock_completers.
7
1 2006-11-02 Ville Vainio <vivainio@gmail.com>
8 2006-11-02 Ville Vainio <vivainio@gmail.com>
2
9
3 * ipy_stock_completers.py: Add %run and %cd completers.
10 * ipy_stock_completers.py: Add %run and %cd completers.
4
11
5 * completer.py: Try running custom completer for both
12 * completer.py: Try running custom completer for both
6 "foo" and "%foo" if the command is just "foo". Ignore case
13 "foo" and "%foo" if the command is just "foo". Ignore case
7 when filtering possible completions.
14 when filtering possible completions.
8
15
9 * UserConfig/ipy_user_conf.py: install stock completers as default
16 * UserConfig/ipy_user_conf.py: install stock completers as default
10
17
11 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
18 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
12 simplified readline history save / restore through a wrapper
19 simplified readline history save / restore through a wrapper
13 function
20 function
14
21
15
22
16 2006-10-31 Ville Vainio <vivainio@gmail.com>
23 2006-10-31 Ville Vainio <vivainio@gmail.com>
17
24
18 * strdispatch.py, completer.py, ipy_stock_completers.py:
25 * strdispatch.py, completer.py, ipy_stock_completers.py:
19 Allow str_key ("command") in completer hooks. Implement
26 Allow str_key ("command") in completer hooks. Implement
20 trivial completer for 'import' (stdlib modules only). Rename
27 trivial completer for 'import' (stdlib modules only). Rename
21 ipy_linux_package_managers.py to ipy_stock_completers.py.
28 ipy_linux_package_managers.py to ipy_stock_completers.py.
22 SVN completer.
29 SVN completer.
23
30
24 * Extensions/ledit.py: %magic line editor for easily and
31 * Extensions/ledit.py: %magic line editor for easily and
25 incrementally manipulating lists of strings. The magic command
32 incrementally manipulating lists of strings. The magic command
26 name is %led.
33 name is %led.
27
34
28 2006-10-30 Ville Vainio <vivainio@gmail.com>
35 2006-10-30 Ville Vainio <vivainio@gmail.com>
29
36
30 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
37 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
31 Bernsteins's patches for pydb integration.
38 Bernsteins's patches for pydb integration.
32 http://bashdb.sourceforge.net/pydb/
39 http://bashdb.sourceforge.net/pydb/
33
40
34 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
41 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
35 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
42 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
36 custom completer hook to allow the users to implement their own
43 custom completer hook to allow the users to implement their own
37 completers. See ipy_linux_package_managers.py for example. The
44 completers. See ipy_linux_package_managers.py for example. The
38 hook name is 'complete_command'.
45 hook name is 'complete_command'.
39
46
40 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
47 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
41
48
42 * IPython/UserConfig/ipythonrc-scipy: minor clenaups to remove old
49 * IPython/UserConfig/ipythonrc-scipy: minor clenaups to remove old
43 Numeric leftovers.
50 Numeric leftovers.
44
51
45 * ipython.el (py-execute-region): apply Stefan's patch to fix
52 * ipython.el (py-execute-region): apply Stefan's patch to fix
46 garbled results if the python shell hasn't been previously started.
53 garbled results if the python shell hasn't been previously started.
47
54
48 * IPython/genutils.py (arg_split): moved to genutils, since it's a
55 * IPython/genutils.py (arg_split): moved to genutils, since it's a
49 pretty generic function and useful for other things.
56 pretty generic function and useful for other things.
50
57
51 * IPython/OInspect.py (getsource): Add customizable source
58 * IPython/OInspect.py (getsource): Add customizable source
52 extractor. After a request/patch form W. Stein (SAGE).
59 extractor. After a request/patch form W. Stein (SAGE).
53
60
54 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
61 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
55 window size to a more reasonable value from what pexpect does,
62 window size to a more reasonable value from what pexpect does,
56 since their choice causes wrapping bugs with long input lines.
63 since their choice causes wrapping bugs with long input lines.
57
64
58 2006-10-28 Ville Vainio <vivainio@gmail.com>
65 2006-10-28 Ville Vainio <vivainio@gmail.com>
59
66
60 * Magic.py (%run): Save and restore the readline history from
67 * Magic.py (%run): Save and restore the readline history from
61 file around %run commands to prevent side effects from
68 file around %run commands to prevent side effects from
62 %runned programs that might use readline (e.g. pydb).
69 %runned programs that might use readline (e.g. pydb).
63
70
64 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
71 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
65 invoking the pydb enhanced debugger.
72 invoking the pydb enhanced debugger.
66
73
67 2006-10-23 Walter Doerwald <walter@livinglogic.de>
74 2006-10-23 Walter Doerwald <walter@livinglogic.de>
68
75
69 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
76 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
70 call the base class method and propagate the return value to
77 call the base class method and propagate the return value to
71 ifile. This is now done by path itself.
78 ifile. This is now done by path itself.
72
79
73 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
80 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
74
81
75 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
82 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
76 api: set_crash_handler(), to expose the ability to change the
83 api: set_crash_handler(), to expose the ability to change the
77 internal crash handler.
84 internal crash handler.
78
85
79 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
86 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
80 the various parameters of the crash handler so that apps using
87 the various parameters of the crash handler so that apps using
81 IPython as their engine can customize crash handling. Ipmlemented
88 IPython as their engine can customize crash handling. Ipmlemented
82 at the request of SAGE.
89 at the request of SAGE.
83
90
84 2006-10-14 Ville Vainio <vivainio@gmail.com>
91 2006-10-14 Ville Vainio <vivainio@gmail.com>
85
92
86 * Magic.py, ipython.el: applied first "safe" part of Rocky
93 * Magic.py, ipython.el: applied first "safe" part of Rocky
87 Bernstein's patch set for pydb integration.
94 Bernstein's patch set for pydb integration.
88
95
89 * Magic.py (%unalias, %alias): %store'd aliases can now be
96 * Magic.py (%unalias, %alias): %store'd aliases can now be
90 removed with '%unalias'. %alias w/o args now shows most
97 removed with '%unalias'. %alias w/o args now shows most
91 interesting (stored / manually defined) aliases last
98 interesting (stored / manually defined) aliases last
92 where they catch the eye w/o scrolling.
99 where they catch the eye w/o scrolling.
93
100
94 * Magic.py (%rehashx), ext_rehashdir.py: files with
101 * Magic.py (%rehashx), ext_rehashdir.py: files with
95 'py' extension are always considered executable, even
102 'py' extension are always considered executable, even
96 when not in PATHEXT environment variable.
103 when not in PATHEXT environment variable.
97
104
98 2006-10-12 Ville Vainio <vivainio@gmail.com>
105 2006-10-12 Ville Vainio <vivainio@gmail.com>
99
106
100 * jobctrl.py: Add new "jobctrl" extension for spawning background
107 * jobctrl.py: Add new "jobctrl" extension for spawning background
101 processes with "&find /". 'import jobctrl' to try it out. Requires
108 processes with "&find /". 'import jobctrl' to try it out. Requires
102 'subprocess' module, standard in python 2.4+.
109 'subprocess' module, standard in python 2.4+.
103
110
104 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
111 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
105 so if foo -> bar and bar -> baz, then foo -> baz.
112 so if foo -> bar and bar -> baz, then foo -> baz.
106
113
107 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
114 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
108
115
109 * IPython/Magic.py (Magic.parse_options): add a new posix option
116 * IPython/Magic.py (Magic.parse_options): add a new posix option
110 to allow parsing of input args in magics that doesn't strip quotes
117 to allow parsing of input args in magics that doesn't strip quotes
111 (if posix=False). This also closes %timeit bug reported by
118 (if posix=False). This also closes %timeit bug reported by
112 Stefan.
119 Stefan.
113
120
114 2006-10-03 Ville Vainio <vivainio@gmail.com>
121 2006-10-03 Ville Vainio <vivainio@gmail.com>
115
122
116 * iplib.py (raw_input, interact): Return ValueError catching for
123 * iplib.py (raw_input, interact): Return ValueError catching for
117 raw_input. Fixes infinite loop for sys.stdin.close() or
124 raw_input. Fixes infinite loop for sys.stdin.close() or
118 sys.stdout.close().
125 sys.stdout.close().
119
126
120 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
127 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
121
128
122 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
129 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
123 to help in handling doctests. irunner is now pretty useful for
130 to help in handling doctests. irunner is now pretty useful for
124 running standalone scripts and simulate a full interactive session
131 running standalone scripts and simulate a full interactive session
125 in a format that can be then pasted as a doctest.
132 in a format that can be then pasted as a doctest.
126
133
127 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
134 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
128 on top of the default (useless) ones. This also fixes the nasty
135 on top of the default (useless) ones. This also fixes the nasty
129 way in which 2.5's Quitter() exits (reverted [1785]).
136 way in which 2.5's Quitter() exits (reverted [1785]).
130
137
131 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
138 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
132 2.5.
139 2.5.
133
140
134 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
141 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
135 color scheme is updated as well when color scheme is changed
142 color scheme is updated as well when color scheme is changed
136 interactively.
143 interactively.
137
144
138 2006-09-27 Ville Vainio <vivainio@gmail.com>
145 2006-09-27 Ville Vainio <vivainio@gmail.com>
139
146
140 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
147 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
141 infinite loop and just exit. It's a hack, but will do for a while.
148 infinite loop and just exit. It's a hack, but will do for a while.
142
149
143 2006-08-25 Walter Doerwald <walter@livinglogic.de>
150 2006-08-25 Walter Doerwald <walter@livinglogic.de>
144
151
145 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
152 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
146 the constructor, this makes it possible to get a list of only directories
153 the constructor, this makes it possible to get a list of only directories
147 or only files.
154 or only files.
148
155
149 2006-08-12 Ville Vainio <vivainio@gmail.com>
156 2006-08-12 Ville Vainio <vivainio@gmail.com>
150
157
151 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
158 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
152 they broke unittest
159 they broke unittest
153
160
154 2006-08-11 Ville Vainio <vivainio@gmail.com>
161 2006-08-11 Ville Vainio <vivainio@gmail.com>
155
162
156 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
163 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
157 by resolving issue properly, i.e. by inheriting FakeModule
164 by resolving issue properly, i.e. by inheriting FakeModule
158 from types.ModuleType. Pickling ipython interactive data
165 from types.ModuleType. Pickling ipython interactive data
159 should still work as usual (testing appreciated).
166 should still work as usual (testing appreciated).
160
167
161 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
168 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
162
169
163 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
170 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
164 running under python 2.3 with code from 2.4 to fix a bug with
171 running under python 2.3 with code from 2.4 to fix a bug with
165 help(). Reported by the Debian maintainers, Norbert Tretkowski
172 help(). Reported by the Debian maintainers, Norbert Tretkowski
166 <norbert-AT-tretkowski.de> and Alexandre Fayolle
173 <norbert-AT-tretkowski.de> and Alexandre Fayolle
167 <afayolle-AT-debian.org>.
174 <afayolle-AT-debian.org>.
168
175
169 2006-08-04 Walter Doerwald <walter@livinglogic.de>
176 2006-08-04 Walter Doerwald <walter@livinglogic.de>
170
177
171 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
178 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
172 (which was displaying "quit" twice).
179 (which was displaying "quit" twice).
173
180
174 2006-07-28 Walter Doerwald <walter@livinglogic.de>
181 2006-07-28 Walter Doerwald <walter@livinglogic.de>
175
182
176 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
183 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
177 the mode argument).
184 the mode argument).
178
185
179 2006-07-27 Walter Doerwald <walter@livinglogic.de>
186 2006-07-27 Walter Doerwald <walter@livinglogic.de>
180
187
181 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
188 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
182 not running under IPython.
189 not running under IPython.
183
190
184 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
191 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
185 and make it iterable (iterating over the attribute itself). Add two new
192 and make it iterable (iterating over the attribute itself). Add two new
186 magic strings for __xattrs__(): If the string starts with "-", the attribute
193 magic strings for __xattrs__(): If the string starts with "-", the attribute
187 will not be displayed in ibrowse's detail view (but it can still be
194 will not be displayed in ibrowse's detail view (but it can still be
188 iterated over). This makes it possible to add attributes that are large
195 iterated over). This makes it possible to add attributes that are large
189 lists or generator methods to the detail view. Replace magic attribute names
196 lists or generator methods to the detail view. Replace magic attribute names
190 and _attrname() and _getattr() with "descriptors": For each type of magic
197 and _attrname() and _getattr() with "descriptors": For each type of magic
191 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
198 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
192 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
199 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
193 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
200 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
194 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
201 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
195 are still supported.
202 are still supported.
196
203
197 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
204 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
198 fails in ibrowse.fetch(), the exception object is added as the last item
205 fails in ibrowse.fetch(), the exception object is added as the last item
199 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
206 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
200 a generator throws an exception midway through execution.
207 a generator throws an exception midway through execution.
201
208
202 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
209 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
203 encoding into methods.
210 encoding into methods.
204
211
205 2006-07-26 Ville Vainio <vivainio@gmail.com>
212 2006-07-26 Ville Vainio <vivainio@gmail.com>
206
213
207 * iplib.py: history now stores multiline input as single
214 * iplib.py: history now stores multiline input as single
208 history entries. Patch by Jorgen Cederlof.
215 history entries. Patch by Jorgen Cederlof.
209
216
210 2006-07-18 Walter Doerwald <walter@livinglogic.de>
217 2006-07-18 Walter Doerwald <walter@livinglogic.de>
211
218
212 * IPython/Extensions/ibrowse.py: Make cursor visible over
219 * IPython/Extensions/ibrowse.py: Make cursor visible over
213 non existing attributes.
220 non existing attributes.
214
221
215 2006-07-14 Walter Doerwald <walter@livinglogic.de>
222 2006-07-14 Walter Doerwald <walter@livinglogic.de>
216
223
217 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
224 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
218 error output of the running command doesn't mess up the screen.
225 error output of the running command doesn't mess up the screen.
219
226
220 2006-07-13 Walter Doerwald <walter@livinglogic.de>
227 2006-07-13 Walter Doerwald <walter@livinglogic.de>
221
228
222 * IPython/Extensions/ipipe.py (isort): Make isort usable without
229 * IPython/Extensions/ipipe.py (isort): Make isort usable without
223 argument. This sorts the items themselves.
230 argument. This sorts the items themselves.
224
231
225 2006-07-12 Walter Doerwald <walter@livinglogic.de>
232 2006-07-12 Walter Doerwald <walter@livinglogic.de>
226
233
227 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
234 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
228 Compile expression strings into code objects. This should speed
235 Compile expression strings into code objects. This should speed
229 up ifilter and friends somewhat.
236 up ifilter and friends somewhat.
230
237
231 2006-07-08 Ville Vainio <vivainio@gmail.com>
238 2006-07-08 Ville Vainio <vivainio@gmail.com>
232
239
233 * Magic.py: %cpaste now strips > from the beginning of lines
240 * Magic.py: %cpaste now strips > from the beginning of lines
234 to ease pasting quoted code from emails. Contributed by
241 to ease pasting quoted code from emails. Contributed by
235 Stefan van der Walt.
242 Stefan van der Walt.
236
243
237 2006-06-29 Ville Vainio <vivainio@gmail.com>
244 2006-06-29 Ville Vainio <vivainio@gmail.com>
238
245
239 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
246 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
240 mode, patch contributed by Darren Dale. NEEDS TESTING!
247 mode, patch contributed by Darren Dale. NEEDS TESTING!
241
248
242 2006-06-28 Walter Doerwald <walter@livinglogic.de>
249 2006-06-28 Walter Doerwald <walter@livinglogic.de>
243
250
244 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
251 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
245 a blue background. Fix fetching new display rows when the browser
252 a blue background. Fix fetching new display rows when the browser
246 scrolls more than a screenful (e.g. by using the goto command).
253 scrolls more than a screenful (e.g. by using the goto command).
247
254
248 2006-06-27 Ville Vainio <vivainio@gmail.com>
255 2006-06-27 Ville Vainio <vivainio@gmail.com>
249
256
250 * Magic.py (_inspect, _ofind) Apply David Huard's
257 * Magic.py (_inspect, _ofind) Apply David Huard's
251 patch for displaying the correct docstring for 'property'
258 patch for displaying the correct docstring for 'property'
252 attributes.
259 attributes.
253
260
254 2006-06-23 Walter Doerwald <walter@livinglogic.de>
261 2006-06-23 Walter Doerwald <walter@livinglogic.de>
255
262
256 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
263 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
257 commands into the methods implementing them.
264 commands into the methods implementing them.
258
265
259 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
266 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
260
267
261 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
268 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
262 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
269 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
263 autoindent support was authored by Jin Liu.
270 autoindent support was authored by Jin Liu.
264
271
265 2006-06-22 Walter Doerwald <walter@livinglogic.de>
272 2006-06-22 Walter Doerwald <walter@livinglogic.de>
266
273
267 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
274 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
268 for keymaps with a custom class that simplifies handling.
275 for keymaps with a custom class that simplifies handling.
269
276
270 2006-06-19 Walter Doerwald <walter@livinglogic.de>
277 2006-06-19 Walter Doerwald <walter@livinglogic.de>
271
278
272 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
279 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
273 resizing. This requires Python 2.5 to work.
280 resizing. This requires Python 2.5 to work.
274
281
275 2006-06-16 Walter Doerwald <walter@livinglogic.de>
282 2006-06-16 Walter Doerwald <walter@livinglogic.de>
276
283
277 * IPython/Extensions/ibrowse.py: Add two new commands to
284 * IPython/Extensions/ibrowse.py: Add two new commands to
278 ibrowse: "hideattr" (mapped to "h") hides the attribute under
285 ibrowse: "hideattr" (mapped to "h") hides the attribute under
279 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
286 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
280 attributes again. Remapped the help command to "?". Display
287 attributes again. Remapped the help command to "?". Display
281 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
288 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
282 as keys for the "home" and "end" commands. Add three new commands
289 as keys for the "home" and "end" commands. Add three new commands
283 to the input mode for "find" and friends: "delend" (CTRL-K)
290 to the input mode for "find" and friends: "delend" (CTRL-K)
284 deletes to the end of line. "incsearchup" searches upwards in the
291 deletes to the end of line. "incsearchup" searches upwards in the
285 command history for an input that starts with the text before the cursor.
292 command history for an input that starts with the text before the cursor.
286 "incsearchdown" does the same downwards. Removed a bogus mapping of
293 "incsearchdown" does the same downwards. Removed a bogus mapping of
287 the x key to "delete".
294 the x key to "delete".
288
295
289 2006-06-15 Ville Vainio <vivainio@gmail.com>
296 2006-06-15 Ville Vainio <vivainio@gmail.com>
290
297
291 * iplib.py, hooks.py: Added new generate_prompt hook that can be
298 * iplib.py, hooks.py: Added new generate_prompt hook that can be
292 used to create prompts dynamically, instead of the "old" way of
299 used to create prompts dynamically, instead of the "old" way of
293 assigning "magic" strings to prompt_in1 and prompt_in2. The old
300 assigning "magic" strings to prompt_in1 and prompt_in2. The old
294 way still works (it's invoked by the default hook), of course.
301 way still works (it's invoked by the default hook), of course.
295
302
296 * Prompts.py: added generate_output_prompt hook for altering output
303 * Prompts.py: added generate_output_prompt hook for altering output
297 prompt
304 prompt
298
305
299 * Release.py: Changed version string to 0.7.3.svn.
306 * Release.py: Changed version string to 0.7.3.svn.
300
307
301 2006-06-15 Walter Doerwald <walter@livinglogic.de>
308 2006-06-15 Walter Doerwald <walter@livinglogic.de>
302
309
303 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
310 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
304 the call to fetch() always tries to fetch enough data for at least one
311 the call to fetch() always tries to fetch enough data for at least one
305 full screen. This makes it possible to simply call moveto(0,0,True) in
312 full screen. This makes it possible to simply call moveto(0,0,True) in
306 the constructor. Fix typos and removed the obsolete goto attribute.
313 the constructor. Fix typos and removed the obsolete goto attribute.
307
314
308 2006-06-12 Ville Vainio <vivainio@gmail.com>
315 2006-06-12 Ville Vainio <vivainio@gmail.com>
309
316
310 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
317 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
311 allowing $variable interpolation within multiline statements,
318 allowing $variable interpolation within multiline statements,
312 though so far only with "sh" profile for a testing period.
319 though so far only with "sh" profile for a testing period.
313 The patch also enables splitting long commands with \ but it
320 The patch also enables splitting long commands with \ but it
314 doesn't work properly yet.
321 doesn't work properly yet.
315
322
316 2006-06-12 Walter Doerwald <walter@livinglogic.de>
323 2006-06-12 Walter Doerwald <walter@livinglogic.de>
317
324
318 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
325 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
319 input history and the position of the cursor in the input history for
326 input history and the position of the cursor in the input history for
320 the find, findbackwards and goto command.
327 the find, findbackwards and goto command.
321
328
322 2006-06-10 Walter Doerwald <walter@livinglogic.de>
329 2006-06-10 Walter Doerwald <walter@livinglogic.de>
323
330
324 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
331 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
325 implements the basic functionality of browser commands that require
332 implements the basic functionality of browser commands that require
326 input. Reimplement the goto, find and findbackwards commands as
333 input. Reimplement the goto, find and findbackwards commands as
327 subclasses of _CommandInput. Add an input history and keymaps to those
334 subclasses of _CommandInput. Add an input history and keymaps to those
328 commands. Add "\r" as a keyboard shortcut for the enterdefault and
335 commands. Add "\r" as a keyboard shortcut for the enterdefault and
329 execute commands.
336 execute commands.
330
337
331 2006-06-07 Ville Vainio <vivainio@gmail.com>
338 2006-06-07 Ville Vainio <vivainio@gmail.com>
332
339
333 * iplib.py: ipython mybatch.ipy exits ipython immediately after
340 * iplib.py: ipython mybatch.ipy exits ipython immediately after
334 running the batch files instead of leaving the session open.
341 running the batch files instead of leaving the session open.
335
342
336 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
343 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
337
344
338 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
345 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
339 the original fix was incomplete. Patch submitted by W. Maier.
346 the original fix was incomplete. Patch submitted by W. Maier.
340
347
341 2006-06-07 Ville Vainio <vivainio@gmail.com>
348 2006-06-07 Ville Vainio <vivainio@gmail.com>
342
349
343 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
350 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
344 Confirmation prompts can be supressed by 'quiet' option.
351 Confirmation prompts can be supressed by 'quiet' option.
345 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
352 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
346
353
347 2006-06-06 *** Released version 0.7.2
354 2006-06-06 *** Released version 0.7.2
348
355
349 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
356 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
350
357
351 * IPython/Release.py (version): Made 0.7.2 final for release.
358 * IPython/Release.py (version): Made 0.7.2 final for release.
352 Repo tagged and release cut.
359 Repo tagged and release cut.
353
360
354 2006-06-05 Ville Vainio <vivainio@gmail.com>
361 2006-06-05 Ville Vainio <vivainio@gmail.com>
355
362
356 * Magic.py (magic_rehashx): Honor no_alias list earlier in
363 * Magic.py (magic_rehashx): Honor no_alias list earlier in
357 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
364 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
358
365
359 * upgrade_dir.py: try import 'path' module a bit harder
366 * upgrade_dir.py: try import 'path' module a bit harder
360 (for %upgrade)
367 (for %upgrade)
361
368
362 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
369 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
363
370
364 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
371 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
365 instead of looping 20 times.
372 instead of looping 20 times.
366
373
367 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
374 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
368 correctly at initialization time. Bug reported by Krishna Mohan
375 correctly at initialization time. Bug reported by Krishna Mohan
369 Gundu <gkmohan-AT-gmail.com> on the user list.
376 Gundu <gkmohan-AT-gmail.com> on the user list.
370
377
371 * IPython/Release.py (version): Mark 0.7.2 version to start
378 * IPython/Release.py (version): Mark 0.7.2 version to start
372 testing for release on 06/06.
379 testing for release on 06/06.
373
380
374 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
381 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
375
382
376 * scripts/irunner: thin script interface so users don't have to
383 * scripts/irunner: thin script interface so users don't have to
377 find the module and call it as an executable, since modules rarely
384 find the module and call it as an executable, since modules rarely
378 live in people's PATH.
385 live in people's PATH.
379
386
380 * IPython/irunner.py (InteractiveRunner.__init__): added
387 * IPython/irunner.py (InteractiveRunner.__init__): added
381 delaybeforesend attribute to control delays with newer versions of
388 delaybeforesend attribute to control delays with newer versions of
382 pexpect. Thanks to detailed help from pexpect's author, Noah
389 pexpect. Thanks to detailed help from pexpect's author, Noah
383 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
390 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
384 correctly (it works in NoColor mode).
391 correctly (it works in NoColor mode).
385
392
386 * IPython/iplib.py (handle_normal): fix nasty crash reported on
393 * IPython/iplib.py (handle_normal): fix nasty crash reported on
387 SAGE list, from improper log() calls.
394 SAGE list, from improper log() calls.
388
395
389 2006-05-31 Ville Vainio <vivainio@gmail.com>
396 2006-05-31 Ville Vainio <vivainio@gmail.com>
390
397
391 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
398 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
392 with args in parens to work correctly with dirs that have spaces.
399 with args in parens to work correctly with dirs that have spaces.
393
400
394 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
401 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
395
402
396 * IPython/Logger.py (Logger.logstart): add option to log raw input
403 * IPython/Logger.py (Logger.logstart): add option to log raw input
397 instead of the processed one. A -r flag was added to the
404 instead of the processed one. A -r flag was added to the
398 %logstart magic used for controlling logging.
405 %logstart magic used for controlling logging.
399
406
400 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
407 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
401
408
402 * IPython/iplib.py (InteractiveShell.__init__): add check for the
409 * IPython/iplib.py (InteractiveShell.__init__): add check for the
403 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
410 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
404 recognize the option. After a bug report by Will Maier. This
411 recognize the option. After a bug report by Will Maier. This
405 closes #64 (will do it after confirmation from W. Maier).
412 closes #64 (will do it after confirmation from W. Maier).
406
413
407 * IPython/irunner.py: New module to run scripts as if manually
414 * IPython/irunner.py: New module to run scripts as if manually
408 typed into an interactive environment, based on pexpect. After a
415 typed into an interactive environment, based on pexpect. After a
409 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
416 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
410 ipython-user list. Simple unittests in the tests/ directory.
417 ipython-user list. Simple unittests in the tests/ directory.
411
418
412 * tools/release: add Will Maier, OpenBSD port maintainer, to
419 * tools/release: add Will Maier, OpenBSD port maintainer, to
413 recepients list. We are now officially part of the OpenBSD ports:
420 recepients list. We are now officially part of the OpenBSD ports:
414 http://www.openbsd.org/ports.html ! Many thanks to Will for the
421 http://www.openbsd.org/ports.html ! Many thanks to Will for the
415 work.
422 work.
416
423
417 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
424 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
418
425
419 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
426 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
420 so that it doesn't break tkinter apps.
427 so that it doesn't break tkinter apps.
421
428
422 * IPython/iplib.py (_prefilter): fix bug where aliases would
429 * IPython/iplib.py (_prefilter): fix bug where aliases would
423 shadow variables when autocall was fully off. Reported by SAGE
430 shadow variables when autocall was fully off. Reported by SAGE
424 author William Stein.
431 author William Stein.
425
432
426 * IPython/OInspect.py (Inspector.__init__): add a flag to control
433 * IPython/OInspect.py (Inspector.__init__): add a flag to control
427 at what detail level strings are computed when foo? is requested.
434 at what detail level strings are computed when foo? is requested.
428 This allows users to ask for example that the string form of an
435 This allows users to ask for example that the string form of an
429 object is only computed when foo?? is called, or even never, by
436 object is only computed when foo?? is called, or even never, by
430 setting the object_info_string_level >= 2 in the configuration
437 setting the object_info_string_level >= 2 in the configuration
431 file. This new option has been added and documented. After a
438 file. This new option has been added and documented. After a
432 request by SAGE to be able to control the printing of very large
439 request by SAGE to be able to control the printing of very large
433 objects more easily.
440 objects more easily.
434
441
435 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
442 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
436
443
437 * IPython/ipmaker.py (make_IPython): remove the ipython call path
444 * IPython/ipmaker.py (make_IPython): remove the ipython call path
438 from sys.argv, to be 100% consistent with how Python itself works
445 from sys.argv, to be 100% consistent with how Python itself works
439 (as seen for example with python -i file.py). After a bug report
446 (as seen for example with python -i file.py). After a bug report
440 by Jeffrey Collins.
447 by Jeffrey Collins.
441
448
442 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
449 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
443 nasty bug which was preventing custom namespaces with -pylab,
450 nasty bug which was preventing custom namespaces with -pylab,
444 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
451 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
445 compatibility (long gone from mpl).
452 compatibility (long gone from mpl).
446
453
447 * IPython/ipapi.py (make_session): name change: create->make. We
454 * IPython/ipapi.py (make_session): name change: create->make. We
448 use make in other places (ipmaker,...), it's shorter and easier to
455 use make in other places (ipmaker,...), it's shorter and easier to
449 type and say, etc. I'm trying to clean things before 0.7.2 so
456 type and say, etc. I'm trying to clean things before 0.7.2 so
450 that I can keep things stable wrt to ipapi in the chainsaw branch.
457 that I can keep things stable wrt to ipapi in the chainsaw branch.
451
458
452 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
459 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
453 python-mode recognizes our debugger mode. Add support for
460 python-mode recognizes our debugger mode. Add support for
454 autoindent inside (X)emacs. After a patch sent in by Jin Liu
461 autoindent inside (X)emacs. After a patch sent in by Jin Liu
455 <m.liu.jin-AT-gmail.com> originally written by
462 <m.liu.jin-AT-gmail.com> originally written by
456 doxgen-AT-newsmth.net (with minor modifications for xemacs
463 doxgen-AT-newsmth.net (with minor modifications for xemacs
457 compatibility)
464 compatibility)
458
465
459 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
466 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
460 tracebacks when walking the stack so that the stack tracking system
467 tracebacks when walking the stack so that the stack tracking system
461 in emacs' python-mode can identify the frames correctly.
468 in emacs' python-mode can identify the frames correctly.
462
469
463 * IPython/ipmaker.py (make_IPython): make the internal (and
470 * IPython/ipmaker.py (make_IPython): make the internal (and
464 default config) autoedit_syntax value false by default. Too many
471 default config) autoedit_syntax value false by default. Too many
465 users have complained to me (both on and off-list) about problems
472 users have complained to me (both on and off-list) about problems
466 with this option being on by default, so I'm making it default to
473 with this option being on by default, so I'm making it default to
467 off. It can still be enabled by anyone via the usual mechanisms.
474 off. It can still be enabled by anyone via the usual mechanisms.
468
475
469 * IPython/completer.py (Completer.attr_matches): add support for
476 * IPython/completer.py (Completer.attr_matches): add support for
470 PyCrust-style _getAttributeNames magic method. Patch contributed
477 PyCrust-style _getAttributeNames magic method. Patch contributed
471 by <mscott-AT-goldenspud.com>. Closes #50.
478 by <mscott-AT-goldenspud.com>. Closes #50.
472
479
473 * IPython/iplib.py (InteractiveShell.__init__): remove the
480 * IPython/iplib.py (InteractiveShell.__init__): remove the
474 deletion of exit/quit from __builtin__, which can break
481 deletion of exit/quit from __builtin__, which can break
475 third-party tools like the Zope debugging console. The
482 third-party tools like the Zope debugging console. The
476 %exit/%quit magics remain. In general, it's probably a good idea
483 %exit/%quit magics remain. In general, it's probably a good idea
477 not to delete anything from __builtin__, since we never know what
484 not to delete anything from __builtin__, since we never know what
478 that will break. In any case, python now (for 2.5) will support
485 that will break. In any case, python now (for 2.5) will support
479 'real' exit/quit, so this issue is moot. Closes #55.
486 'real' exit/quit, so this issue is moot. Closes #55.
480
487
481 * IPython/genutils.py (with_obj): rename the 'with' function to
488 * IPython/genutils.py (with_obj): rename the 'with' function to
482 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
489 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
483 becomes a language keyword. Closes #53.
490 becomes a language keyword. Closes #53.
484
491
485 * IPython/FakeModule.py (FakeModule.__init__): add a proper
492 * IPython/FakeModule.py (FakeModule.__init__): add a proper
486 __file__ attribute to this so it fools more things into thinking
493 __file__ attribute to this so it fools more things into thinking
487 it is a real module. Closes #59.
494 it is a real module. Closes #59.
488
495
489 * IPython/Magic.py (magic_edit): add -n option to open the editor
496 * IPython/Magic.py (magic_edit): add -n option to open the editor
490 at a specific line number. After a patch by Stefan van der Walt.
497 at a specific line number. After a patch by Stefan van der Walt.
491
498
492 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
499 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
493
500
494 * IPython/iplib.py (edit_syntax_error): fix crash when for some
501 * IPython/iplib.py (edit_syntax_error): fix crash when for some
495 reason the file could not be opened. After automatic crash
502 reason the file could not be opened. After automatic crash
496 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
503 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
497 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
504 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
498 (_should_recompile): Don't fire editor if using %bg, since there
505 (_should_recompile): Don't fire editor if using %bg, since there
499 is no file in the first place. From the same report as above.
506 is no file in the first place. From the same report as above.
500 (raw_input): protect against faulty third-party prefilters. After
507 (raw_input): protect against faulty third-party prefilters. After
501 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
508 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
502 while running under SAGE.
509 while running under SAGE.
503
510
504 2006-05-23 Ville Vainio <vivainio@gmail.com>
511 2006-05-23 Ville Vainio <vivainio@gmail.com>
505
512
506 * ipapi.py: Stripped down ip.to_user_ns() to work only as
513 * ipapi.py: Stripped down ip.to_user_ns() to work only as
507 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
514 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
508 now returns None (again), unless dummy is specifically allowed by
515 now returns None (again), unless dummy is specifically allowed by
509 ipapi.get(allow_dummy=True).
516 ipapi.get(allow_dummy=True).
510
517
511 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
518 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
512
519
513 * IPython: remove all 2.2-compatibility objects and hacks from
520 * IPython: remove all 2.2-compatibility objects and hacks from
514 everywhere, since we only support 2.3 at this point. Docs
521 everywhere, since we only support 2.3 at this point. Docs
515 updated.
522 updated.
516
523
517 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
524 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
518 Anything requiring extra validation can be turned into a Python
525 Anything requiring extra validation can be turned into a Python
519 property in the future. I used a property for the db one b/c
526 property in the future. I used a property for the db one b/c
520 there was a nasty circularity problem with the initialization
527 there was a nasty circularity problem with the initialization
521 order, which right now I don't have time to clean up.
528 order, which right now I don't have time to clean up.
522
529
523 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
530 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
524 another locking bug reported by Jorgen. I'm not 100% sure though,
531 another locking bug reported by Jorgen. I'm not 100% sure though,
525 so more testing is needed...
532 so more testing is needed...
526
533
527 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
534 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
528
535
529 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
536 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
530 local variables from any routine in user code (typically executed
537 local variables from any routine in user code (typically executed
531 with %run) directly into the interactive namespace. Very useful
538 with %run) directly into the interactive namespace. Very useful
532 when doing complex debugging.
539 when doing complex debugging.
533 (IPythonNotRunning): Changed the default None object to a dummy
540 (IPythonNotRunning): Changed the default None object to a dummy
534 whose attributes can be queried as well as called without
541 whose attributes can be queried as well as called without
535 exploding, to ease writing code which works transparently both in
542 exploding, to ease writing code which works transparently both in
536 and out of ipython and uses some of this API.
543 and out of ipython and uses some of this API.
537
544
538 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
545 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
539
546
540 * IPython/hooks.py (result_display): Fix the fact that our display
547 * IPython/hooks.py (result_display): Fix the fact that our display
541 hook was using str() instead of repr(), as the default python
548 hook was using str() instead of repr(), as the default python
542 console does. This had gone unnoticed b/c it only happened if
549 console does. This had gone unnoticed b/c it only happened if
543 %Pprint was off, but the inconsistency was there.
550 %Pprint was off, but the inconsistency was there.
544
551
545 2006-05-15 Ville Vainio <vivainio@gmail.com>
552 2006-05-15 Ville Vainio <vivainio@gmail.com>
546
553
547 * Oinspect.py: Only show docstring for nonexisting/binary files
554 * Oinspect.py: Only show docstring for nonexisting/binary files
548 when doing object??, closing ticket #62
555 when doing object??, closing ticket #62
549
556
550 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
557 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
551
558
552 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
559 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
553 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
560 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
554 was being released in a routine which hadn't checked if it had
561 was being released in a routine which hadn't checked if it had
555 been the one to acquire it.
562 been the one to acquire it.
556
563
557 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
564 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
558
565
559 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
566 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
560
567
561 2006-04-11 Ville Vainio <vivainio@gmail.com>
568 2006-04-11 Ville Vainio <vivainio@gmail.com>
562
569
563 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
570 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
564 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
571 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
565 prefilters, allowing stuff like magics and aliases in the file.
572 prefilters, allowing stuff like magics and aliases in the file.
566
573
567 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
574 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
568 added. Supported now are "%clear in" and "%clear out" (clear input and
575 added. Supported now are "%clear in" and "%clear out" (clear input and
569 output history, respectively). Also fixed CachedOutput.flush to
576 output history, respectively). Also fixed CachedOutput.flush to
570 properly flush the output cache.
577 properly flush the output cache.
571
578
572 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
579 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
573 half-success (and fail explicitly).
580 half-success (and fail explicitly).
574
581
575 2006-03-28 Ville Vainio <vivainio@gmail.com>
582 2006-03-28 Ville Vainio <vivainio@gmail.com>
576
583
577 * iplib.py: Fix quoting of aliases so that only argless ones
584 * iplib.py: Fix quoting of aliases so that only argless ones
578 are quoted
585 are quoted
579
586
580 2006-03-28 Ville Vainio <vivainio@gmail.com>
587 2006-03-28 Ville Vainio <vivainio@gmail.com>
581
588
582 * iplib.py: Quote aliases with spaces in the name.
589 * iplib.py: Quote aliases with spaces in the name.
583 "c:\program files\blah\bin" is now legal alias target.
590 "c:\program files\blah\bin" is now legal alias target.
584
591
585 * ext_rehashdir.py: Space no longer allowed as arg
592 * ext_rehashdir.py: Space no longer allowed as arg
586 separator, since space is legal in path names.
593 separator, since space is legal in path names.
587
594
588 2006-03-16 Ville Vainio <vivainio@gmail.com>
595 2006-03-16 Ville Vainio <vivainio@gmail.com>
589
596
590 * upgrade_dir.py: Take path.py from Extensions, correcting
597 * upgrade_dir.py: Take path.py from Extensions, correcting
591 %upgrade magic
598 %upgrade magic
592
599
593 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
600 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
594
601
595 * hooks.py: Only enclose editor binary in quotes if legal and
602 * hooks.py: Only enclose editor binary in quotes if legal and
596 necessary (space in the name, and is an existing file). Fixes a bug
603 necessary (space in the name, and is an existing file). Fixes a bug
597 reported by Zachary Pincus.
604 reported by Zachary Pincus.
598
605
599 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
606 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
600
607
601 * Manual: thanks to a tip on proper color handling for Emacs, by
608 * Manual: thanks to a tip on proper color handling for Emacs, by
602 Eric J Haywiser <ejh1-AT-MIT.EDU>.
609 Eric J Haywiser <ejh1-AT-MIT.EDU>.
603
610
604 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
611 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
605 by applying the provided patch. Thanks to Liu Jin
612 by applying the provided patch. Thanks to Liu Jin
606 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
613 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
607 XEmacs/Linux, I'm trusting the submitter that it actually helps
614 XEmacs/Linux, I'm trusting the submitter that it actually helps
608 under win32/GNU Emacs. Will revisit if any problems are reported.
615 under win32/GNU Emacs. Will revisit if any problems are reported.
609
616
610 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
617 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
611
618
612 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
619 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
613 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
620 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
614
621
615 2006-03-12 Ville Vainio <vivainio@gmail.com>
622 2006-03-12 Ville Vainio <vivainio@gmail.com>
616
623
617 * Magic.py (magic_timeit): Added %timeit magic, contributed by
624 * Magic.py (magic_timeit): Added %timeit magic, contributed by
618 Torsten Marek.
625 Torsten Marek.
619
626
620 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
627 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
621
628
622 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
629 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
623 line ranges works again.
630 line ranges works again.
624
631
625 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
632 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
626
633
627 * IPython/iplib.py (showtraceback): add back sys.last_traceback
634 * IPython/iplib.py (showtraceback): add back sys.last_traceback
628 and friends, after a discussion with Zach Pincus on ipython-user.
635 and friends, after a discussion with Zach Pincus on ipython-user.
629 I'm not 100% sure, but after thinking about it quite a bit, it may
636 I'm not 100% sure, but after thinking about it quite a bit, it may
630 be OK. Testing with the multithreaded shells didn't reveal any
637 be OK. Testing with the multithreaded shells didn't reveal any
631 problems, but let's keep an eye out.
638 problems, but let's keep an eye out.
632
639
633 In the process, I fixed a few things which were calling
640 In the process, I fixed a few things which were calling
634 self.InteractiveTB() directly (like safe_execfile), which is a
641 self.InteractiveTB() directly (like safe_execfile), which is a
635 mistake: ALL exception reporting should be done by calling
642 mistake: ALL exception reporting should be done by calling
636 self.showtraceback(), which handles state and tab-completion and
643 self.showtraceback(), which handles state and tab-completion and
637 more.
644 more.
638
645
639 2006-03-01 Ville Vainio <vivainio@gmail.com>
646 2006-03-01 Ville Vainio <vivainio@gmail.com>
640
647
641 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
648 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
642 To use, do "from ipipe import *".
649 To use, do "from ipipe import *".
643
650
644 2006-02-24 Ville Vainio <vivainio@gmail.com>
651 2006-02-24 Ville Vainio <vivainio@gmail.com>
645
652
646 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
653 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
647 "cleanly" and safely than the older upgrade mechanism.
654 "cleanly" and safely than the older upgrade mechanism.
648
655
649 2006-02-21 Ville Vainio <vivainio@gmail.com>
656 2006-02-21 Ville Vainio <vivainio@gmail.com>
650
657
651 * Magic.py: %save works again.
658 * Magic.py: %save works again.
652
659
653 2006-02-15 Ville Vainio <vivainio@gmail.com>
660 2006-02-15 Ville Vainio <vivainio@gmail.com>
654
661
655 * Magic.py: %Pprint works again
662 * Magic.py: %Pprint works again
656
663
657 * Extensions/ipy_sane_defaults.py: Provide everything provided
664 * Extensions/ipy_sane_defaults.py: Provide everything provided
658 in default ipythonrc, to make it possible to have a completely empty
665 in default ipythonrc, to make it possible to have a completely empty
659 ipythonrc (and thus completely rc-file free configuration)
666 ipythonrc (and thus completely rc-file free configuration)
660
667
661 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
668 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
662
669
663 * IPython/hooks.py (editor): quote the call to the editor command,
670 * IPython/hooks.py (editor): quote the call to the editor command,
664 to allow commands with spaces in them. Problem noted by watching
671 to allow commands with spaces in them. Problem noted by watching
665 Ian Oswald's video about textpad under win32 at
672 Ian Oswald's video about textpad under win32 at
666 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
673 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
667
674
668 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
675 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
669 describing magics (we haven't used @ for a loong time).
676 describing magics (we haven't used @ for a loong time).
670
677
671 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
678 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
672 contributed by marienz to close
679 contributed by marienz to close
673 http://www.scipy.net/roundup/ipython/issue53.
680 http://www.scipy.net/roundup/ipython/issue53.
674
681
675 2006-02-10 Ville Vainio <vivainio@gmail.com>
682 2006-02-10 Ville Vainio <vivainio@gmail.com>
676
683
677 * genutils.py: getoutput now works in win32 too
684 * genutils.py: getoutput now works in win32 too
678
685
679 * completer.py: alias and magic completion only invoked
686 * completer.py: alias and magic completion only invoked
680 at the first "item" in the line, to avoid "cd %store"
687 at the first "item" in the line, to avoid "cd %store"
681 nonsense.
688 nonsense.
682
689
683 2006-02-09 Ville Vainio <vivainio@gmail.com>
690 2006-02-09 Ville Vainio <vivainio@gmail.com>
684
691
685 * test/*: Added a unit testing framework (finally).
692 * test/*: Added a unit testing framework (finally).
686 '%run runtests.py' to run test_*.
693 '%run runtests.py' to run test_*.
687
694
688 * ipapi.py: Exposed runlines and set_custom_exc
695 * ipapi.py: Exposed runlines and set_custom_exc
689
696
690 2006-02-07 Ville Vainio <vivainio@gmail.com>
697 2006-02-07 Ville Vainio <vivainio@gmail.com>
691
698
692 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
699 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
693 instead use "f(1 2)" as before.
700 instead use "f(1 2)" as before.
694
701
695 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
702 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
696
703
697 * IPython/demo.py (IPythonDemo): Add new classes to the demo
704 * IPython/demo.py (IPythonDemo): Add new classes to the demo
698 facilities, for demos processed by the IPython input filter
705 facilities, for demos processed by the IPython input filter
699 (IPythonDemo), and for running a script one-line-at-a-time as a
706 (IPythonDemo), and for running a script one-line-at-a-time as a
700 demo, both for pure Python (LineDemo) and for IPython-processed
707 demo, both for pure Python (LineDemo) and for IPython-processed
701 input (IPythonLineDemo). After a request by Dave Kohel, from the
708 input (IPythonLineDemo). After a request by Dave Kohel, from the
702 SAGE team.
709 SAGE team.
703 (Demo.edit): added an edit() method to the demo objects, to edit
710 (Demo.edit): added an edit() method to the demo objects, to edit
704 the in-memory copy of the last executed block.
711 the in-memory copy of the last executed block.
705
712
706 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
713 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
707 processing to %edit, %macro and %save. These commands can now be
714 processing to %edit, %macro and %save. These commands can now be
708 invoked on the unprocessed input as it was typed by the user
715 invoked on the unprocessed input as it was typed by the user
709 (without any prefilters applied). After requests by the SAGE team
716 (without any prefilters applied). After requests by the SAGE team
710 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
717 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
711
718
712 2006-02-01 Ville Vainio <vivainio@gmail.com>
719 2006-02-01 Ville Vainio <vivainio@gmail.com>
713
720
714 * setup.py, eggsetup.py: easy_install ipython==dev works
721 * setup.py, eggsetup.py: easy_install ipython==dev works
715 correctly now (on Linux)
722 correctly now (on Linux)
716
723
717 * ipy_user_conf,ipmaker: user config changes, removed spurious
724 * ipy_user_conf,ipmaker: user config changes, removed spurious
718 warnings
725 warnings
719
726
720 * iplib: if rc.banner is string, use it as is.
727 * iplib: if rc.banner is string, use it as is.
721
728
722 * Magic: %pycat accepts a string argument and pages it's contents.
729 * Magic: %pycat accepts a string argument and pages it's contents.
723
730
724
731
725 2006-01-30 Ville Vainio <vivainio@gmail.com>
732 2006-01-30 Ville Vainio <vivainio@gmail.com>
726
733
727 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
734 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
728 Now %store and bookmarks work through PickleShare, meaning that
735 Now %store and bookmarks work through PickleShare, meaning that
729 concurrent access is possible and all ipython sessions see the
736 concurrent access is possible and all ipython sessions see the
730 same database situation all the time, instead of snapshot of
737 same database situation all the time, instead of snapshot of
731 the situation when the session was started. Hence, %bookmark
738 the situation when the session was started. Hence, %bookmark
732 results are immediately accessible from othes sessions. The database
739 results are immediately accessible from othes sessions. The database
733 is also available for use by user extensions. See:
740 is also available for use by user extensions. See:
734 http://www.python.org/pypi/pickleshare
741 http://www.python.org/pypi/pickleshare
735
742
736 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
743 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
737
744
738 * aliases can now be %store'd
745 * aliases can now be %store'd
739
746
740 * path.py moved to Extensions so that pickleshare does not need
747 * path.py moved to Extensions so that pickleshare does not need
741 IPython-specific import. Extensions added to pythonpath right
748 IPython-specific import. Extensions added to pythonpath right
742 at __init__.
749 at __init__.
743
750
744 * iplib.py: ipalias deprecated/redundant; aliases are converted and
751 * iplib.py: ipalias deprecated/redundant; aliases are converted and
745 called with _ip.system and the pre-transformed command string.
752 called with _ip.system and the pre-transformed command string.
746
753
747 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
754 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
748
755
749 * IPython/iplib.py (interact): Fix that we were not catching
756 * IPython/iplib.py (interact): Fix that we were not catching
750 KeyboardInterrupt exceptions properly. I'm not quite sure why the
757 KeyboardInterrupt exceptions properly. I'm not quite sure why the
751 logic here had to change, but it's fixed now.
758 logic here had to change, but it's fixed now.
752
759
753 2006-01-29 Ville Vainio <vivainio@gmail.com>
760 2006-01-29 Ville Vainio <vivainio@gmail.com>
754
761
755 * iplib.py: Try to import pyreadline on Windows.
762 * iplib.py: Try to import pyreadline on Windows.
756
763
757 2006-01-27 Ville Vainio <vivainio@gmail.com>
764 2006-01-27 Ville Vainio <vivainio@gmail.com>
758
765
759 * iplib.py: Expose ipapi as _ip in builtin namespace.
766 * iplib.py: Expose ipapi as _ip in builtin namespace.
760 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
767 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
761 and ip_set_hook (-> _ip.set_hook) redundant. % and !
768 and ip_set_hook (-> _ip.set_hook) redundant. % and !
762 syntax now produce _ip.* variant of the commands.
769 syntax now produce _ip.* variant of the commands.
763
770
764 * "_ip.options().autoedit_syntax = 2" automatically throws
771 * "_ip.options().autoedit_syntax = 2" automatically throws
765 user to editor for syntax error correction without prompting.
772 user to editor for syntax error correction without prompting.
766
773
767 2006-01-27 Ville Vainio <vivainio@gmail.com>
774 2006-01-27 Ville Vainio <vivainio@gmail.com>
768
775
769 * ipmaker.py: Give "realistic" sys.argv for scripts (without
776 * ipmaker.py: Give "realistic" sys.argv for scripts (without
770 'ipython' at argv[0]) executed through command line.
777 'ipython' at argv[0]) executed through command line.
771 NOTE: this DEPRECATES calling ipython with multiple scripts
778 NOTE: this DEPRECATES calling ipython with multiple scripts
772 ("ipython a.py b.py c.py")
779 ("ipython a.py b.py c.py")
773
780
774 * iplib.py, hooks.py: Added configurable input prefilter,
781 * iplib.py, hooks.py: Added configurable input prefilter,
775 named 'input_prefilter'. See ext_rescapture.py for example
782 named 'input_prefilter'. See ext_rescapture.py for example
776 usage.
783 usage.
777
784
778 * ext_rescapture.py, Magic.py: Better system command output capture
785 * ext_rescapture.py, Magic.py: Better system command output capture
779 through 'var = !ls' (deprecates user-visible %sc). Same notation
786 through 'var = !ls' (deprecates user-visible %sc). Same notation
780 applies for magics, 'var = %alias' assigns alias list to var.
787 applies for magics, 'var = %alias' assigns alias list to var.
781
788
782 * ipapi.py: added meta() for accessing extension-usable data store.
789 * ipapi.py: added meta() for accessing extension-usable data store.
783
790
784 * iplib.py: added InteractiveShell.getapi(). New magics should be
791 * iplib.py: added InteractiveShell.getapi(). New magics should be
785 written doing self.getapi() instead of using the shell directly.
792 written doing self.getapi() instead of using the shell directly.
786
793
787 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
794 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
788 %store foo >> ~/myfoo.txt to store variables to files (in clean
795 %store foo >> ~/myfoo.txt to store variables to files (in clean
789 textual form, not a restorable pickle).
796 textual form, not a restorable pickle).
790
797
791 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
798 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
792
799
793 * usage.py, Magic.py: added %quickref
800 * usage.py, Magic.py: added %quickref
794
801
795 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
802 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
796
803
797 * GetoptErrors when invoking magics etc. with wrong args
804 * GetoptErrors when invoking magics etc. with wrong args
798 are now more helpful:
805 are now more helpful:
799 GetoptError: option -l not recognized (allowed: "qb" )
806 GetoptError: option -l not recognized (allowed: "qb" )
800
807
801 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
808 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
802
809
803 * IPython/demo.py (Demo.show): Flush stdout after each block, so
810 * IPython/demo.py (Demo.show): Flush stdout after each block, so
804 computationally intensive blocks don't appear to stall the demo.
811 computationally intensive blocks don't appear to stall the demo.
805
812
806 2006-01-24 Ville Vainio <vivainio@gmail.com>
813 2006-01-24 Ville Vainio <vivainio@gmail.com>
807
814
808 * iplib.py, hooks.py: 'result_display' hook can return a non-None
815 * iplib.py, hooks.py: 'result_display' hook can return a non-None
809 value to manipulate resulting history entry.
816 value to manipulate resulting history entry.
810
817
811 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
818 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
812 to instance methods of IPApi class, to make extending an embedded
819 to instance methods of IPApi class, to make extending an embedded
813 IPython feasible. See ext_rehashdir.py for example usage.
820 IPython feasible. See ext_rehashdir.py for example usage.
814
821
815 * Merged 1071-1076 from branches/0.7.1
822 * Merged 1071-1076 from branches/0.7.1
816
823
817
824
818 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
825 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
819
826
820 * tools/release (daystamp): Fix build tools to use the new
827 * tools/release (daystamp): Fix build tools to use the new
821 eggsetup.py script to build lightweight eggs.
828 eggsetup.py script to build lightweight eggs.
822
829
823 * Applied changesets 1062 and 1064 before 0.7.1 release.
830 * Applied changesets 1062 and 1064 before 0.7.1 release.
824
831
825 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
832 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
826 see the raw input history (without conversions like %ls ->
833 see the raw input history (without conversions like %ls ->
827 ipmagic("ls")). After a request from W. Stein, SAGE
834 ipmagic("ls")). After a request from W. Stein, SAGE
828 (http://modular.ucsd.edu/sage) developer. This information is
835 (http://modular.ucsd.edu/sage) developer. This information is
829 stored in the input_hist_raw attribute of the IPython instance, so
836 stored in the input_hist_raw attribute of the IPython instance, so
830 developers can access it if needed (it's an InputList instance).
837 developers can access it if needed (it's an InputList instance).
831
838
832 * Versionstring = 0.7.2.svn
839 * Versionstring = 0.7.2.svn
833
840
834 * eggsetup.py: A separate script for constructing eggs, creates
841 * eggsetup.py: A separate script for constructing eggs, creates
835 proper launch scripts even on Windows (an .exe file in
842 proper launch scripts even on Windows (an .exe file in
836 \python24\scripts).
843 \python24\scripts).
837
844
838 * ipapi.py: launch_new_instance, launch entry point needed for the
845 * ipapi.py: launch_new_instance, launch entry point needed for the
839 egg.
846 egg.
840
847
841 2006-01-23 Ville Vainio <vivainio@gmail.com>
848 2006-01-23 Ville Vainio <vivainio@gmail.com>
842
849
843 * Added %cpaste magic for pasting python code
850 * Added %cpaste magic for pasting python code
844
851
845 2006-01-22 Ville Vainio <vivainio@gmail.com>
852 2006-01-22 Ville Vainio <vivainio@gmail.com>
846
853
847 * Merge from branches/0.7.1 into trunk, revs 1052-1057
854 * Merge from branches/0.7.1 into trunk, revs 1052-1057
848
855
849 * Versionstring = 0.7.2.svn
856 * Versionstring = 0.7.2.svn
850
857
851 * eggsetup.py: A separate script for constructing eggs, creates
858 * eggsetup.py: A separate script for constructing eggs, creates
852 proper launch scripts even on Windows (an .exe file in
859 proper launch scripts even on Windows (an .exe file in
853 \python24\scripts).
860 \python24\scripts).
854
861
855 * ipapi.py: launch_new_instance, launch entry point needed for the
862 * ipapi.py: launch_new_instance, launch entry point needed for the
856 egg.
863 egg.
857
864
858 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
865 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
859
866
860 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
867 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
861 %pfile foo would print the file for foo even if it was a binary.
868 %pfile foo would print the file for foo even if it was a binary.
862 Now, extensions '.so' and '.dll' are skipped.
869 Now, extensions '.so' and '.dll' are skipped.
863
870
864 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
871 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
865 bug, where macros would fail in all threaded modes. I'm not 100%
872 bug, where macros would fail in all threaded modes. I'm not 100%
866 sure, so I'm going to put out an rc instead of making a release
873 sure, so I'm going to put out an rc instead of making a release
867 today, and wait for feedback for at least a few days.
874 today, and wait for feedback for at least a few days.
868
875
869 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
876 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
870 it...) the handling of pasting external code with autoindent on.
877 it...) the handling of pasting external code with autoindent on.
871 To get out of a multiline input, the rule will appear for most
878 To get out of a multiline input, the rule will appear for most
872 users unchanged: two blank lines or change the indent level
879 users unchanged: two blank lines or change the indent level
873 proposed by IPython. But there is a twist now: you can
880 proposed by IPython. But there is a twist now: you can
874 add/subtract only *one or two spaces*. If you add/subtract three
881 add/subtract only *one or two spaces*. If you add/subtract three
875 or more (unless you completely delete the line), IPython will
882 or more (unless you completely delete the line), IPython will
876 accept that line, and you'll need to enter a second one of pure
883 accept that line, and you'll need to enter a second one of pure
877 whitespace. I know it sounds complicated, but I can't find a
884 whitespace. I know it sounds complicated, but I can't find a
878 different solution that covers all the cases, with the right
885 different solution that covers all the cases, with the right
879 heuristics. Hopefully in actual use, nobody will really notice
886 heuristics. Hopefully in actual use, nobody will really notice
880 all these strange rules and things will 'just work'.
887 all these strange rules and things will 'just work'.
881
888
882 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
889 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
883
890
884 * IPython/iplib.py (interact): catch exceptions which can be
891 * IPython/iplib.py (interact): catch exceptions which can be
885 triggered asynchronously by signal handlers. Thanks to an
892 triggered asynchronously by signal handlers. Thanks to an
886 automatic crash report, submitted by Colin Kingsley
893 automatic crash report, submitted by Colin Kingsley
887 <tercel-AT-gentoo.org>.
894 <tercel-AT-gentoo.org>.
888
895
889 2006-01-20 Ville Vainio <vivainio@gmail.com>
896 2006-01-20 Ville Vainio <vivainio@gmail.com>
890
897
891 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
898 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
892 (%rehashdir, very useful, try it out) of how to extend ipython
899 (%rehashdir, very useful, try it out) of how to extend ipython
893 with new magics. Also added Extensions dir to pythonpath to make
900 with new magics. Also added Extensions dir to pythonpath to make
894 importing extensions easy.
901 importing extensions easy.
895
902
896 * %store now complains when trying to store interactively declared
903 * %store now complains when trying to store interactively declared
897 classes / instances of those classes.
904 classes / instances of those classes.
898
905
899 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
906 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
900 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
907 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
901 if they exist, and ipy_user_conf.py with some defaults is created for
908 if they exist, and ipy_user_conf.py with some defaults is created for
902 the user.
909 the user.
903
910
904 * Startup rehashing done by the config file, not InterpreterExec.
911 * Startup rehashing done by the config file, not InterpreterExec.
905 This means system commands are available even without selecting the
912 This means system commands are available even without selecting the
906 pysh profile. It's the sensible default after all.
913 pysh profile. It's the sensible default after all.
907
914
908 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
915 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
909
916
910 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
917 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
911 multiline code with autoindent on working. But I am really not
918 multiline code with autoindent on working. But I am really not
912 sure, so this needs more testing. Will commit a debug-enabled
919 sure, so this needs more testing. Will commit a debug-enabled
913 version for now, while I test it some more, so that Ville and
920 version for now, while I test it some more, so that Ville and
914 others may also catch any problems. Also made
921 others may also catch any problems. Also made
915 self.indent_current_str() a method, to ensure that there's no
922 self.indent_current_str() a method, to ensure that there's no
916 chance of the indent space count and the corresponding string
923 chance of the indent space count and the corresponding string
917 falling out of sync. All code needing the string should just call
924 falling out of sync. All code needing the string should just call
918 the method.
925 the method.
919
926
920 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
927 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
921
928
922 * IPython/Magic.py (magic_edit): fix check for when users don't
929 * IPython/Magic.py (magic_edit): fix check for when users don't
923 save their output files, the try/except was in the wrong section.
930 save their output files, the try/except was in the wrong section.
924
931
925 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
932 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
926
933
927 * IPython/Magic.py (magic_run): fix __file__ global missing from
934 * IPython/Magic.py (magic_run): fix __file__ global missing from
928 script's namespace when executed via %run. After a report by
935 script's namespace when executed via %run. After a report by
929 Vivian.
936 Vivian.
930
937
931 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
938 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
932 when using python 2.4. The parent constructor changed in 2.4, and
939 when using python 2.4. The parent constructor changed in 2.4, and
933 we need to track it directly (we can't call it, as it messes up
940 we need to track it directly (we can't call it, as it messes up
934 readline and tab-completion inside our pdb would stop working).
941 readline and tab-completion inside our pdb would stop working).
935 After a bug report by R. Bernstein <rocky-AT-panix.com>.
942 After a bug report by R. Bernstein <rocky-AT-panix.com>.
936
943
937 2006-01-16 Ville Vainio <vivainio@gmail.com>
944 2006-01-16 Ville Vainio <vivainio@gmail.com>
938
945
939 * Ipython/magic.py: Reverted back to old %edit functionality
946 * Ipython/magic.py: Reverted back to old %edit functionality
940 that returns file contents on exit.
947 that returns file contents on exit.
941
948
942 * IPython/path.py: Added Jason Orendorff's "path" module to
949 * IPython/path.py: Added Jason Orendorff's "path" module to
943 IPython tree, http://www.jorendorff.com/articles/python/path/.
950 IPython tree, http://www.jorendorff.com/articles/python/path/.
944 You can get path objects conveniently through %sc, and !!, e.g.:
951 You can get path objects conveniently through %sc, and !!, e.g.:
945 sc files=ls
952 sc files=ls
946 for p in files.paths: # or files.p
953 for p in files.paths: # or files.p
947 print p,p.mtime
954 print p,p.mtime
948
955
949 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
956 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
950 now work again without considering the exclusion regexp -
957 now work again without considering the exclusion regexp -
951 hence, things like ',foo my/path' turn to 'foo("my/path")'
958 hence, things like ',foo my/path' turn to 'foo("my/path")'
952 instead of syntax error.
959 instead of syntax error.
953
960
954
961
955 2006-01-14 Ville Vainio <vivainio@gmail.com>
962 2006-01-14 Ville Vainio <vivainio@gmail.com>
956
963
957 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
964 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
958 ipapi decorators for python 2.4 users, options() provides access to rc
965 ipapi decorators for python 2.4 users, options() provides access to rc
959 data.
966 data.
960
967
961 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
968 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
962 as path separators (even on Linux ;-). Space character after
969 as path separators (even on Linux ;-). Space character after
963 backslash (as yielded by tab completer) is still space;
970 backslash (as yielded by tab completer) is still space;
964 "%cd long\ name" works as expected.
971 "%cd long\ name" works as expected.
965
972
966 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
973 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
967 as "chain of command", with priority. API stays the same,
974 as "chain of command", with priority. API stays the same,
968 TryNext exception raised by a hook function signals that
975 TryNext exception raised by a hook function signals that
969 current hook failed and next hook should try handling it, as
976 current hook failed and next hook should try handling it, as
970 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
977 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
971 requested configurable display hook, which is now implemented.
978 requested configurable display hook, which is now implemented.
972
979
973 2006-01-13 Ville Vainio <vivainio@gmail.com>
980 2006-01-13 Ville Vainio <vivainio@gmail.com>
974
981
975 * IPython/platutils*.py: platform specific utility functions,
982 * IPython/platutils*.py: platform specific utility functions,
976 so far only set_term_title is implemented (change terminal
983 so far only set_term_title is implemented (change terminal
977 label in windowing systems). %cd now changes the title to
984 label in windowing systems). %cd now changes the title to
978 current dir.
985 current dir.
979
986
980 * IPython/Release.py: Added myself to "authors" list,
987 * IPython/Release.py: Added myself to "authors" list,
981 had to create new files.
988 had to create new files.
982
989
983 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
990 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
984 shell escape; not a known bug but had potential to be one in the
991 shell escape; not a known bug but had potential to be one in the
985 future.
992 future.
986
993
987 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
994 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
988 extension API for IPython! See the module for usage example. Fix
995 extension API for IPython! See the module for usage example. Fix
989 OInspect for docstring-less magic functions.
996 OInspect for docstring-less magic functions.
990
997
991
998
992 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
999 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
993
1000
994 * IPython/iplib.py (raw_input): temporarily deactivate all
1001 * IPython/iplib.py (raw_input): temporarily deactivate all
995 attempts at allowing pasting of code with autoindent on. It
1002 attempts at allowing pasting of code with autoindent on. It
996 introduced bugs (reported by Prabhu) and I can't seem to find a
1003 introduced bugs (reported by Prabhu) and I can't seem to find a
997 robust combination which works in all cases. Will have to revisit
1004 robust combination which works in all cases. Will have to revisit
998 later.
1005 later.
999
1006
1000 * IPython/genutils.py: remove isspace() function. We've dropped
1007 * IPython/genutils.py: remove isspace() function. We've dropped
1001 2.2 compatibility, so it's OK to use the string method.
1008 2.2 compatibility, so it's OK to use the string method.
1002
1009
1003 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1010 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1004
1011
1005 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1012 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1006 matching what NOT to autocall on, to include all python binary
1013 matching what NOT to autocall on, to include all python binary
1007 operators (including things like 'and', 'or', 'is' and 'in').
1014 operators (including things like 'and', 'or', 'is' and 'in').
1008 Prompted by a bug report on 'foo & bar', but I realized we had
1015 Prompted by a bug report on 'foo & bar', but I realized we had
1009 many more potential bug cases with other operators. The regexp is
1016 many more potential bug cases with other operators. The regexp is
1010 self.re_exclude_auto, it's fairly commented.
1017 self.re_exclude_auto, it's fairly commented.
1011
1018
1012 2006-01-12 Ville Vainio <vivainio@gmail.com>
1019 2006-01-12 Ville Vainio <vivainio@gmail.com>
1013
1020
1014 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1021 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1015 Prettified and hardened string/backslash quoting with ipsystem(),
1022 Prettified and hardened string/backslash quoting with ipsystem(),
1016 ipalias() and ipmagic(). Now even \ characters are passed to
1023 ipalias() and ipmagic(). Now even \ characters are passed to
1017 %magics, !shell escapes and aliases exactly as they are in the
1024 %magics, !shell escapes and aliases exactly as they are in the
1018 ipython command line. Should improve backslash experience,
1025 ipython command line. Should improve backslash experience,
1019 particularly in Windows (path delimiter for some commands that
1026 particularly in Windows (path delimiter for some commands that
1020 won't understand '/'), but Unix benefits as well (regexps). %cd
1027 won't understand '/'), but Unix benefits as well (regexps). %cd
1021 magic still doesn't support backslash path delimiters, though. Also
1028 magic still doesn't support backslash path delimiters, though. Also
1022 deleted all pretense of supporting multiline command strings in
1029 deleted all pretense of supporting multiline command strings in
1023 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1030 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1024
1031
1025 * doc/build_doc_instructions.txt added. Documentation on how to
1032 * doc/build_doc_instructions.txt added. Documentation on how to
1026 use doc/update_manual.py, added yesterday. Both files contributed
1033 use doc/update_manual.py, added yesterday. Both files contributed
1027 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1034 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1028 doc/*.sh for deprecation at a later date.
1035 doc/*.sh for deprecation at a later date.
1029
1036
1030 * /ipython.py Added ipython.py to root directory for
1037 * /ipython.py Added ipython.py to root directory for
1031 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1038 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1032 ipython.py) and development convenience (no need to keep doing
1039 ipython.py) and development convenience (no need to keep doing
1033 "setup.py install" between changes).
1040 "setup.py install" between changes).
1034
1041
1035 * Made ! and !! shell escapes work (again) in multiline expressions:
1042 * Made ! and !! shell escapes work (again) in multiline expressions:
1036 if 1:
1043 if 1:
1037 !ls
1044 !ls
1038 !!ls
1045 !!ls
1039
1046
1040 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1047 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1041
1048
1042 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1049 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1043 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1050 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1044 module in case-insensitive installation. Was causing crashes
1051 module in case-insensitive installation. Was causing crashes
1045 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1052 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1046
1053
1047 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1054 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1048 <marienz-AT-gentoo.org>, closes
1055 <marienz-AT-gentoo.org>, closes
1049 http://www.scipy.net/roundup/ipython/issue51.
1056 http://www.scipy.net/roundup/ipython/issue51.
1050
1057
1051 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1058 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1052
1059
1053 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1060 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1054 problem of excessive CPU usage under *nix and keyboard lag under
1061 problem of excessive CPU usage under *nix and keyboard lag under
1055 win32.
1062 win32.
1056
1063
1057 2006-01-10 *** Released version 0.7.0
1064 2006-01-10 *** Released version 0.7.0
1058
1065
1059 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1066 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1060
1067
1061 * IPython/Release.py (revision): tag version number to 0.7.0,
1068 * IPython/Release.py (revision): tag version number to 0.7.0,
1062 ready for release.
1069 ready for release.
1063
1070
1064 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1071 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1065 it informs the user of the name of the temp. file used. This can
1072 it informs the user of the name of the temp. file used. This can
1066 help if you decide later to reuse that same file, so you know
1073 help if you decide later to reuse that same file, so you know
1067 where to copy the info from.
1074 where to copy the info from.
1068
1075
1069 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1076 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1070
1077
1071 * setup_bdist_egg.py: little script to build an egg. Added
1078 * setup_bdist_egg.py: little script to build an egg. Added
1072 support in the release tools as well.
1079 support in the release tools as well.
1073
1080
1074 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1081 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1075
1082
1076 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1083 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1077 version selection (new -wxversion command line and ipythonrc
1084 version selection (new -wxversion command line and ipythonrc
1078 parameter). Patch contributed by Arnd Baecker
1085 parameter). Patch contributed by Arnd Baecker
1079 <arnd.baecker-AT-web.de>.
1086 <arnd.baecker-AT-web.de>.
1080
1087
1081 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1088 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1082 embedded instances, for variables defined at the interactive
1089 embedded instances, for variables defined at the interactive
1083 prompt of the embedded ipython. Reported by Arnd.
1090 prompt of the embedded ipython. Reported by Arnd.
1084
1091
1085 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1092 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1086 it can be used as a (stateful) toggle, or with a direct parameter.
1093 it can be used as a (stateful) toggle, or with a direct parameter.
1087
1094
1088 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1095 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1089 could be triggered in certain cases and cause the traceback
1096 could be triggered in certain cases and cause the traceback
1090 printer not to work.
1097 printer not to work.
1091
1098
1092 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1099 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1093
1100
1094 * IPython/iplib.py (_should_recompile): Small fix, closes
1101 * IPython/iplib.py (_should_recompile): Small fix, closes
1095 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1102 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1096
1103
1097 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1104 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1098
1105
1099 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1106 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1100 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1107 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1101 Moad for help with tracking it down.
1108 Moad for help with tracking it down.
1102
1109
1103 * IPython/iplib.py (handle_auto): fix autocall handling for
1110 * IPython/iplib.py (handle_auto): fix autocall handling for
1104 objects which support BOTH __getitem__ and __call__ (so that f [x]
1111 objects which support BOTH __getitem__ and __call__ (so that f [x]
1105 is left alone, instead of becoming f([x]) automatically).
1112 is left alone, instead of becoming f([x]) automatically).
1106
1113
1107 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1114 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1108 Ville's patch.
1115 Ville's patch.
1109
1116
1110 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1117 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1111
1118
1112 * IPython/iplib.py (handle_auto): changed autocall semantics to
1119 * IPython/iplib.py (handle_auto): changed autocall semantics to
1113 include 'smart' mode, where the autocall transformation is NOT
1120 include 'smart' mode, where the autocall transformation is NOT
1114 applied if there are no arguments on the line. This allows you to
1121 applied if there are no arguments on the line. This allows you to
1115 just type 'foo' if foo is a callable to see its internal form,
1122 just type 'foo' if foo is a callable to see its internal form,
1116 instead of having it called with no arguments (typically a
1123 instead of having it called with no arguments (typically a
1117 mistake). The old 'full' autocall still exists: for that, you
1124 mistake). The old 'full' autocall still exists: for that, you
1118 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1125 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1119
1126
1120 * IPython/completer.py (Completer.attr_matches): add
1127 * IPython/completer.py (Completer.attr_matches): add
1121 tab-completion support for Enthoughts' traits. After a report by
1128 tab-completion support for Enthoughts' traits. After a report by
1122 Arnd and a patch by Prabhu.
1129 Arnd and a patch by Prabhu.
1123
1130
1124 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1131 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1125
1132
1126 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1133 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1127 Schmolck's patch to fix inspect.getinnerframes().
1134 Schmolck's patch to fix inspect.getinnerframes().
1128
1135
1129 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1136 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1130 for embedded instances, regarding handling of namespaces and items
1137 for embedded instances, regarding handling of namespaces and items
1131 added to the __builtin__ one. Multiple embedded instances and
1138 added to the __builtin__ one. Multiple embedded instances and
1132 recursive embeddings should work better now (though I'm not sure
1139 recursive embeddings should work better now (though I'm not sure
1133 I've got all the corner cases fixed, that code is a bit of a brain
1140 I've got all the corner cases fixed, that code is a bit of a brain
1134 twister).
1141 twister).
1135
1142
1136 * IPython/Magic.py (magic_edit): added support to edit in-memory
1143 * IPython/Magic.py (magic_edit): added support to edit in-memory
1137 macros (automatically creates the necessary temp files). %edit
1144 macros (automatically creates the necessary temp files). %edit
1138 also doesn't return the file contents anymore, it's just noise.
1145 also doesn't return the file contents anymore, it's just noise.
1139
1146
1140 * IPython/completer.py (Completer.attr_matches): revert change to
1147 * IPython/completer.py (Completer.attr_matches): revert change to
1141 complete only on attributes listed in __all__. I realized it
1148 complete only on attributes listed in __all__. I realized it
1142 cripples the tab-completion system as a tool for exploring the
1149 cripples the tab-completion system as a tool for exploring the
1143 internals of unknown libraries (it renders any non-__all__
1150 internals of unknown libraries (it renders any non-__all__
1144 attribute off-limits). I got bit by this when trying to see
1151 attribute off-limits). I got bit by this when trying to see
1145 something inside the dis module.
1152 something inside the dis module.
1146
1153
1147 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1154 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1148
1155
1149 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1156 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1150 namespace for users and extension writers to hold data in. This
1157 namespace for users and extension writers to hold data in. This
1151 follows the discussion in
1158 follows the discussion in
1152 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1159 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1153
1160
1154 * IPython/completer.py (IPCompleter.complete): small patch to help
1161 * IPython/completer.py (IPCompleter.complete): small patch to help
1155 tab-completion under Emacs, after a suggestion by John Barnard
1162 tab-completion under Emacs, after a suggestion by John Barnard
1156 <barnarj-AT-ccf.org>.
1163 <barnarj-AT-ccf.org>.
1157
1164
1158 * IPython/Magic.py (Magic.extract_input_slices): added support for
1165 * IPython/Magic.py (Magic.extract_input_slices): added support for
1159 the slice notation in magics to use N-M to represent numbers N...M
1166 the slice notation in magics to use N-M to represent numbers N...M
1160 (closed endpoints). This is used by %macro and %save.
1167 (closed endpoints). This is used by %macro and %save.
1161
1168
1162 * IPython/completer.py (Completer.attr_matches): for modules which
1169 * IPython/completer.py (Completer.attr_matches): for modules which
1163 define __all__, complete only on those. After a patch by Jeffrey
1170 define __all__, complete only on those. After a patch by Jeffrey
1164 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1171 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1165 speed up this routine.
1172 speed up this routine.
1166
1173
1167 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1174 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1168 don't know if this is the end of it, but the behavior now is
1175 don't know if this is the end of it, but the behavior now is
1169 certainly much more correct. Note that coupled with macros,
1176 certainly much more correct. Note that coupled with macros,
1170 slightly surprising (at first) behavior may occur: a macro will in
1177 slightly surprising (at first) behavior may occur: a macro will in
1171 general expand to multiple lines of input, so upon exiting, the
1178 general expand to multiple lines of input, so upon exiting, the
1172 in/out counters will both be bumped by the corresponding amount
1179 in/out counters will both be bumped by the corresponding amount
1173 (as if the macro's contents had been typed interactively). Typing
1180 (as if the macro's contents had been typed interactively). Typing
1174 %hist will reveal the intermediate (silently processed) lines.
1181 %hist will reveal the intermediate (silently processed) lines.
1175
1182
1176 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1183 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1177 pickle to fail (%run was overwriting __main__ and not restoring
1184 pickle to fail (%run was overwriting __main__ and not restoring
1178 it, but pickle relies on __main__ to operate).
1185 it, but pickle relies on __main__ to operate).
1179
1186
1180 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1187 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1181 using properties, but forgot to make the main InteractiveShell
1188 using properties, but forgot to make the main InteractiveShell
1182 class a new-style class. Properties fail silently, and
1189 class a new-style class. Properties fail silently, and
1183 mysteriously, with old-style class (getters work, but
1190 mysteriously, with old-style class (getters work, but
1184 setters don't do anything).
1191 setters don't do anything).
1185
1192
1186 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1193 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1187
1194
1188 * IPython/Magic.py (magic_history): fix history reporting bug (I
1195 * IPython/Magic.py (magic_history): fix history reporting bug (I
1189 know some nasties are still there, I just can't seem to find a
1196 know some nasties are still there, I just can't seem to find a
1190 reproducible test case to track them down; the input history is
1197 reproducible test case to track them down; the input history is
1191 falling out of sync...)
1198 falling out of sync...)
1192
1199
1193 * IPython/iplib.py (handle_shell_escape): fix bug where both
1200 * IPython/iplib.py (handle_shell_escape): fix bug where both
1194 aliases and system accesses where broken for indented code (such
1201 aliases and system accesses where broken for indented code (such
1195 as loops).
1202 as loops).
1196
1203
1197 * IPython/genutils.py (shell): fix small but critical bug for
1204 * IPython/genutils.py (shell): fix small but critical bug for
1198 win32 system access.
1205 win32 system access.
1199
1206
1200 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1207 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1201
1208
1202 * IPython/iplib.py (showtraceback): remove use of the
1209 * IPython/iplib.py (showtraceback): remove use of the
1203 sys.last_{type/value/traceback} structures, which are non
1210 sys.last_{type/value/traceback} structures, which are non
1204 thread-safe.
1211 thread-safe.
1205 (_prefilter): change control flow to ensure that we NEVER
1212 (_prefilter): change control flow to ensure that we NEVER
1206 introspect objects when autocall is off. This will guarantee that
1213 introspect objects when autocall is off. This will guarantee that
1207 having an input line of the form 'x.y', where access to attribute
1214 having an input line of the form 'x.y', where access to attribute
1208 'y' has side effects, doesn't trigger the side effect TWICE. It
1215 'y' has side effects, doesn't trigger the side effect TWICE. It
1209 is important to note that, with autocall on, these side effects
1216 is important to note that, with autocall on, these side effects
1210 can still happen.
1217 can still happen.
1211 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1218 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1212 trio. IPython offers these three kinds of special calls which are
1219 trio. IPython offers these three kinds of special calls which are
1213 not python code, and it's a good thing to have their call method
1220 not python code, and it's a good thing to have their call method
1214 be accessible as pure python functions (not just special syntax at
1221 be accessible as pure python functions (not just special syntax at
1215 the command line). It gives us a better internal implementation
1222 the command line). It gives us a better internal implementation
1216 structure, as well as exposing these for user scripting more
1223 structure, as well as exposing these for user scripting more
1217 cleanly.
1224 cleanly.
1218
1225
1219 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1226 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1220 file. Now that they'll be more likely to be used with the
1227 file. Now that they'll be more likely to be used with the
1221 persistance system (%store), I want to make sure their module path
1228 persistance system (%store), I want to make sure their module path
1222 doesn't change in the future, so that we don't break things for
1229 doesn't change in the future, so that we don't break things for
1223 users' persisted data.
1230 users' persisted data.
1224
1231
1225 * IPython/iplib.py (autoindent_update): move indentation
1232 * IPython/iplib.py (autoindent_update): move indentation
1226 management into the _text_ processing loop, not the keyboard
1233 management into the _text_ processing loop, not the keyboard
1227 interactive one. This is necessary to correctly process non-typed
1234 interactive one. This is necessary to correctly process non-typed
1228 multiline input (such as macros).
1235 multiline input (such as macros).
1229
1236
1230 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1237 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1231 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1238 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1232 which was producing problems in the resulting manual.
1239 which was producing problems in the resulting manual.
1233 (magic_whos): improve reporting of instances (show their class,
1240 (magic_whos): improve reporting of instances (show their class,
1234 instead of simply printing 'instance' which isn't terribly
1241 instead of simply printing 'instance' which isn't terribly
1235 informative).
1242 informative).
1236
1243
1237 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1244 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1238 (minor mods) to support network shares under win32.
1245 (minor mods) to support network shares under win32.
1239
1246
1240 * IPython/winconsole.py (get_console_size): add new winconsole
1247 * IPython/winconsole.py (get_console_size): add new winconsole
1241 module and fixes to page_dumb() to improve its behavior under
1248 module and fixes to page_dumb() to improve its behavior under
1242 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1249 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1243
1250
1244 * IPython/Magic.py (Macro): simplified Macro class to just
1251 * IPython/Magic.py (Macro): simplified Macro class to just
1245 subclass list. We've had only 2.2 compatibility for a very long
1252 subclass list. We've had only 2.2 compatibility for a very long
1246 time, yet I was still avoiding subclassing the builtin types. No
1253 time, yet I was still avoiding subclassing the builtin types. No
1247 more (I'm also starting to use properties, though I won't shift to
1254 more (I'm also starting to use properties, though I won't shift to
1248 2.3-specific features quite yet).
1255 2.3-specific features quite yet).
1249 (magic_store): added Ville's patch for lightweight variable
1256 (magic_store): added Ville's patch for lightweight variable
1250 persistence, after a request on the user list by Matt Wilkie
1257 persistence, after a request on the user list by Matt Wilkie
1251 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1258 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1252 details.
1259 details.
1253
1260
1254 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1261 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1255 changed the default logfile name from 'ipython.log' to
1262 changed the default logfile name from 'ipython.log' to
1256 'ipython_log.py'. These logs are real python files, and now that
1263 'ipython_log.py'. These logs are real python files, and now that
1257 we have much better multiline support, people are more likely to
1264 we have much better multiline support, people are more likely to
1258 want to use them as such. Might as well name them correctly.
1265 want to use them as such. Might as well name them correctly.
1259
1266
1260 * IPython/Magic.py: substantial cleanup. While we can't stop
1267 * IPython/Magic.py: substantial cleanup. While we can't stop
1261 using magics as mixins, due to the existing customizations 'out
1268 using magics as mixins, due to the existing customizations 'out
1262 there' which rely on the mixin naming conventions, at least I
1269 there' which rely on the mixin naming conventions, at least I
1263 cleaned out all cross-class name usage. So once we are OK with
1270 cleaned out all cross-class name usage. So once we are OK with
1264 breaking compatibility, the two systems can be separated.
1271 breaking compatibility, the two systems can be separated.
1265
1272
1266 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1273 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1267 anymore, and the class is a fair bit less hideous as well. New
1274 anymore, and the class is a fair bit less hideous as well. New
1268 features were also introduced: timestamping of input, and logging
1275 features were also introduced: timestamping of input, and logging
1269 of output results. These are user-visible with the -t and -o
1276 of output results. These are user-visible with the -t and -o
1270 options to %logstart. Closes
1277 options to %logstart. Closes
1271 http://www.scipy.net/roundup/ipython/issue11 and a request by
1278 http://www.scipy.net/roundup/ipython/issue11 and a request by
1272 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1279 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1273
1280
1274 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1281 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1275
1282
1276 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1283 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1277 better handle backslashes in paths. See the thread 'More Windows
1284 better handle backslashes in paths. See the thread 'More Windows
1278 questions part 2 - \/ characters revisited' on the iypthon user
1285 questions part 2 - \/ characters revisited' on the iypthon user
1279 list:
1286 list:
1280 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1287 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1281
1288
1282 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1289 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1283
1290
1284 (InteractiveShell.__init__): change threaded shells to not use the
1291 (InteractiveShell.__init__): change threaded shells to not use the
1285 ipython crash handler. This was causing more problems than not,
1292 ipython crash handler. This was causing more problems than not,
1286 as exceptions in the main thread (GUI code, typically) would
1293 as exceptions in the main thread (GUI code, typically) would
1287 always show up as a 'crash', when they really weren't.
1294 always show up as a 'crash', when they really weren't.
1288
1295
1289 The colors and exception mode commands (%colors/%xmode) have been
1296 The colors and exception mode commands (%colors/%xmode) have been
1290 synchronized to also take this into account, so users can get
1297 synchronized to also take this into account, so users can get
1291 verbose exceptions for their threaded code as well. I also added
1298 verbose exceptions for their threaded code as well. I also added
1292 support for activating pdb inside this exception handler as well,
1299 support for activating pdb inside this exception handler as well,
1293 so now GUI authors can use IPython's enhanced pdb at runtime.
1300 so now GUI authors can use IPython's enhanced pdb at runtime.
1294
1301
1295 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1302 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1296 true by default, and add it to the shipped ipythonrc file. Since
1303 true by default, and add it to the shipped ipythonrc file. Since
1297 this asks the user before proceeding, I think it's OK to make it
1304 this asks the user before proceeding, I think it's OK to make it
1298 true by default.
1305 true by default.
1299
1306
1300 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1307 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1301 of the previous special-casing of input in the eval loop. I think
1308 of the previous special-casing of input in the eval loop. I think
1302 this is cleaner, as they really are commands and shouldn't have
1309 this is cleaner, as they really are commands and shouldn't have
1303 a special role in the middle of the core code.
1310 a special role in the middle of the core code.
1304
1311
1305 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1312 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1306
1313
1307 * IPython/iplib.py (edit_syntax_error): added support for
1314 * IPython/iplib.py (edit_syntax_error): added support for
1308 automatically reopening the editor if the file had a syntax error
1315 automatically reopening the editor if the file had a syntax error
1309 in it. Thanks to scottt who provided the patch at:
1316 in it. Thanks to scottt who provided the patch at:
1310 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1317 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1311 version committed).
1318 version committed).
1312
1319
1313 * IPython/iplib.py (handle_normal): add suport for multi-line
1320 * IPython/iplib.py (handle_normal): add suport for multi-line
1314 input with emtpy lines. This fixes
1321 input with emtpy lines. This fixes
1315 http://www.scipy.net/roundup/ipython/issue43 and a similar
1322 http://www.scipy.net/roundup/ipython/issue43 and a similar
1316 discussion on the user list.
1323 discussion on the user list.
1317
1324
1318 WARNING: a behavior change is necessarily introduced to support
1325 WARNING: a behavior change is necessarily introduced to support
1319 blank lines: now a single blank line with whitespace does NOT
1326 blank lines: now a single blank line with whitespace does NOT
1320 break the input loop, which means that when autoindent is on, by
1327 break the input loop, which means that when autoindent is on, by
1321 default hitting return on the next (indented) line does NOT exit.
1328 default hitting return on the next (indented) line does NOT exit.
1322
1329
1323 Instead, to exit a multiline input you can either have:
1330 Instead, to exit a multiline input you can either have:
1324
1331
1325 - TWO whitespace lines (just hit return again), or
1332 - TWO whitespace lines (just hit return again), or
1326 - a single whitespace line of a different length than provided
1333 - a single whitespace line of a different length than provided
1327 by the autoindent (add or remove a space).
1334 by the autoindent (add or remove a space).
1328
1335
1329 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1336 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1330 module to better organize all readline-related functionality.
1337 module to better organize all readline-related functionality.
1331 I've deleted FlexCompleter and put all completion clases here.
1338 I've deleted FlexCompleter and put all completion clases here.
1332
1339
1333 * IPython/iplib.py (raw_input): improve indentation management.
1340 * IPython/iplib.py (raw_input): improve indentation management.
1334 It is now possible to paste indented code with autoindent on, and
1341 It is now possible to paste indented code with autoindent on, and
1335 the code is interpreted correctly (though it still looks bad on
1342 the code is interpreted correctly (though it still looks bad on
1336 screen, due to the line-oriented nature of ipython).
1343 screen, due to the line-oriented nature of ipython).
1337 (MagicCompleter.complete): change behavior so that a TAB key on an
1344 (MagicCompleter.complete): change behavior so that a TAB key on an
1338 otherwise empty line actually inserts a tab, instead of completing
1345 otherwise empty line actually inserts a tab, instead of completing
1339 on the entire global namespace. This makes it easier to use the
1346 on the entire global namespace. This makes it easier to use the
1340 TAB key for indentation. After a request by Hans Meine
1347 TAB key for indentation. After a request by Hans Meine
1341 <hans_meine-AT-gmx.net>
1348 <hans_meine-AT-gmx.net>
1342 (_prefilter): add support so that typing plain 'exit' or 'quit'
1349 (_prefilter): add support so that typing plain 'exit' or 'quit'
1343 does a sensible thing. Originally I tried to deviate as little as
1350 does a sensible thing. Originally I tried to deviate as little as
1344 possible from the default python behavior, but even that one may
1351 possible from the default python behavior, but even that one may
1345 change in this direction (thread on python-dev to that effect).
1352 change in this direction (thread on python-dev to that effect).
1346 Regardless, ipython should do the right thing even if CPython's
1353 Regardless, ipython should do the right thing even if CPython's
1347 '>>>' prompt doesn't.
1354 '>>>' prompt doesn't.
1348 (InteractiveShell): removed subclassing code.InteractiveConsole
1355 (InteractiveShell): removed subclassing code.InteractiveConsole
1349 class. By now we'd overridden just about all of its methods: I've
1356 class. By now we'd overridden just about all of its methods: I've
1350 copied the remaining two over, and now ipython is a standalone
1357 copied the remaining two over, and now ipython is a standalone
1351 class. This will provide a clearer picture for the chainsaw
1358 class. This will provide a clearer picture for the chainsaw
1352 branch refactoring.
1359 branch refactoring.
1353
1360
1354 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1361 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1355
1362
1356 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1363 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1357 failures for objects which break when dir() is called on them.
1364 failures for objects which break when dir() is called on them.
1358
1365
1359 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1366 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1360 distinct local and global namespaces in the completer API. This
1367 distinct local and global namespaces in the completer API. This
1361 change allows us to properly handle completion with distinct
1368 change allows us to properly handle completion with distinct
1362 scopes, including in embedded instances (this had never really
1369 scopes, including in embedded instances (this had never really
1363 worked correctly).
1370 worked correctly).
1364
1371
1365 Note: this introduces a change in the constructor for
1372 Note: this introduces a change in the constructor for
1366 MagicCompleter, as a new global_namespace parameter is now the
1373 MagicCompleter, as a new global_namespace parameter is now the
1367 second argument (the others were bumped one position).
1374 second argument (the others were bumped one position).
1368
1375
1369 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1376 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1370
1377
1371 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1378 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1372 embedded instances (which can be done now thanks to Vivian's
1379 embedded instances (which can be done now thanks to Vivian's
1373 frame-handling fixes for pdb).
1380 frame-handling fixes for pdb).
1374 (InteractiveShell.__init__): Fix namespace handling problem in
1381 (InteractiveShell.__init__): Fix namespace handling problem in
1375 embedded instances. We were overwriting __main__ unconditionally,
1382 embedded instances. We were overwriting __main__ unconditionally,
1376 and this should only be done for 'full' (non-embedded) IPython;
1383 and this should only be done for 'full' (non-embedded) IPython;
1377 embedded instances must respect the caller's __main__. Thanks to
1384 embedded instances must respect the caller's __main__. Thanks to
1378 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1385 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1379
1386
1380 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1387 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1381
1388
1382 * setup.py: added download_url to setup(). This registers the
1389 * setup.py: added download_url to setup(). This registers the
1383 download address at PyPI, which is not only useful to humans
1390 download address at PyPI, which is not only useful to humans
1384 browsing the site, but is also picked up by setuptools (the Eggs
1391 browsing the site, but is also picked up by setuptools (the Eggs
1385 machinery). Thanks to Ville and R. Kern for the info/discussion
1392 machinery). Thanks to Ville and R. Kern for the info/discussion
1386 on this.
1393 on this.
1387
1394
1388 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1395 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1389
1396
1390 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1397 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1391 This brings a lot of nice functionality to the pdb mode, which now
1398 This brings a lot of nice functionality to the pdb mode, which now
1392 has tab-completion, syntax highlighting, and better stack handling
1399 has tab-completion, syntax highlighting, and better stack handling
1393 than before. Many thanks to Vivian De Smedt
1400 than before. Many thanks to Vivian De Smedt
1394 <vivian-AT-vdesmedt.com> for the original patches.
1401 <vivian-AT-vdesmedt.com> for the original patches.
1395
1402
1396 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1403 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1397
1404
1398 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1405 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1399 sequence to consistently accept the banner argument. The
1406 sequence to consistently accept the banner argument. The
1400 inconsistency was tripping SAGE, thanks to Gary Zablackis
1407 inconsistency was tripping SAGE, thanks to Gary Zablackis
1401 <gzabl-AT-yahoo.com> for the report.
1408 <gzabl-AT-yahoo.com> for the report.
1402
1409
1403 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1410 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1404
1411
1405 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1412 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1406 Fix bug where a naked 'alias' call in the ipythonrc file would
1413 Fix bug where a naked 'alias' call in the ipythonrc file would
1407 cause a crash. Bug reported by Jorgen Stenarson.
1414 cause a crash. Bug reported by Jorgen Stenarson.
1408
1415
1409 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1416 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1410
1417
1411 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1418 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1412 startup time.
1419 startup time.
1413
1420
1414 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1421 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1415 instances had introduced a bug with globals in normal code. Now
1422 instances had introduced a bug with globals in normal code. Now
1416 it's working in all cases.
1423 it's working in all cases.
1417
1424
1418 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1425 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1419 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1426 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1420 has been introduced to set the default case sensitivity of the
1427 has been introduced to set the default case sensitivity of the
1421 searches. Users can still select either mode at runtime on a
1428 searches. Users can still select either mode at runtime on a
1422 per-search basis.
1429 per-search basis.
1423
1430
1424 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1431 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1425
1432
1426 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1433 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1427 attributes in wildcard searches for subclasses. Modified version
1434 attributes in wildcard searches for subclasses. Modified version
1428 of a patch by Jorgen.
1435 of a patch by Jorgen.
1429
1436
1430 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1437 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1431
1438
1432 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1439 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1433 embedded instances. I added a user_global_ns attribute to the
1440 embedded instances. I added a user_global_ns attribute to the
1434 InteractiveShell class to handle this.
1441 InteractiveShell class to handle this.
1435
1442
1436 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1443 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1437
1444
1438 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1445 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1439 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1446 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1440 (reported under win32, but may happen also in other platforms).
1447 (reported under win32, but may happen also in other platforms).
1441 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1448 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1442
1449
1443 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1450 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1444
1451
1445 * IPython/Magic.py (magic_psearch): new support for wildcard
1452 * IPython/Magic.py (magic_psearch): new support for wildcard
1446 patterns. Now, typing ?a*b will list all names which begin with a
1453 patterns. Now, typing ?a*b will list all names which begin with a
1447 and end in b, for example. The %psearch magic has full
1454 and end in b, for example. The %psearch magic has full
1448 docstrings. Many thanks to JΓΆrgen Stenarson
1455 docstrings. Many thanks to JΓΆrgen Stenarson
1449 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1456 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1450 implementing this functionality.
1457 implementing this functionality.
1451
1458
1452 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1459 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1453
1460
1454 * Manual: fixed long-standing annoyance of double-dashes (as in
1461 * Manual: fixed long-standing annoyance of double-dashes (as in
1455 --prefix=~, for example) being stripped in the HTML version. This
1462 --prefix=~, for example) being stripped in the HTML version. This
1456 is a latex2html bug, but a workaround was provided. Many thanks
1463 is a latex2html bug, but a workaround was provided. Many thanks
1457 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1464 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1458 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1465 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1459 rolling. This seemingly small issue had tripped a number of users
1466 rolling. This seemingly small issue had tripped a number of users
1460 when first installing, so I'm glad to see it gone.
1467 when first installing, so I'm glad to see it gone.
1461
1468
1462 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1469 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1463
1470
1464 * IPython/Extensions/numeric_formats.py: fix missing import,
1471 * IPython/Extensions/numeric_formats.py: fix missing import,
1465 reported by Stephen Walton.
1472 reported by Stephen Walton.
1466
1473
1467 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1474 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1468
1475
1469 * IPython/demo.py: finish demo module, fully documented now.
1476 * IPython/demo.py: finish demo module, fully documented now.
1470
1477
1471 * IPython/genutils.py (file_read): simple little utility to read a
1478 * IPython/genutils.py (file_read): simple little utility to read a
1472 file and ensure it's closed afterwards.
1479 file and ensure it's closed afterwards.
1473
1480
1474 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1481 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1475
1482
1476 * IPython/demo.py (Demo.__init__): added support for individually
1483 * IPython/demo.py (Demo.__init__): added support for individually
1477 tagging blocks for automatic execution.
1484 tagging blocks for automatic execution.
1478
1485
1479 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1486 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1480 syntax-highlighted python sources, requested by John.
1487 syntax-highlighted python sources, requested by John.
1481
1488
1482 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1489 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1483
1490
1484 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1491 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1485 finishing.
1492 finishing.
1486
1493
1487 * IPython/genutils.py (shlex_split): moved from Magic to here,
1494 * IPython/genutils.py (shlex_split): moved from Magic to here,
1488 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1495 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1489
1496
1490 * IPython/demo.py (Demo.__init__): added support for silent
1497 * IPython/demo.py (Demo.__init__): added support for silent
1491 blocks, improved marks as regexps, docstrings written.
1498 blocks, improved marks as regexps, docstrings written.
1492 (Demo.__init__): better docstring, added support for sys.argv.
1499 (Demo.__init__): better docstring, added support for sys.argv.
1493
1500
1494 * IPython/genutils.py (marquee): little utility used by the demo
1501 * IPython/genutils.py (marquee): little utility used by the demo
1495 code, handy in general.
1502 code, handy in general.
1496
1503
1497 * IPython/demo.py (Demo.__init__): new class for interactive
1504 * IPython/demo.py (Demo.__init__): new class for interactive
1498 demos. Not documented yet, I just wrote it in a hurry for
1505 demos. Not documented yet, I just wrote it in a hurry for
1499 scipy'05. Will docstring later.
1506 scipy'05. Will docstring later.
1500
1507
1501 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1508 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1502
1509
1503 * IPython/Shell.py (sigint_handler): Drastic simplification which
1510 * IPython/Shell.py (sigint_handler): Drastic simplification which
1504 also seems to make Ctrl-C work correctly across threads! This is
1511 also seems to make Ctrl-C work correctly across threads! This is
1505 so simple, that I can't beleive I'd missed it before. Needs more
1512 so simple, that I can't beleive I'd missed it before. Needs more
1506 testing, though.
1513 testing, though.
1507 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1514 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1508 like this before...
1515 like this before...
1509
1516
1510 * IPython/genutils.py (get_home_dir): add protection against
1517 * IPython/genutils.py (get_home_dir): add protection against
1511 non-dirs in win32 registry.
1518 non-dirs in win32 registry.
1512
1519
1513 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1520 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1514 bug where dict was mutated while iterating (pysh crash).
1521 bug where dict was mutated while iterating (pysh crash).
1515
1522
1516 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1523 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1517
1524
1518 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1525 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1519 spurious newlines added by this routine. After a report by
1526 spurious newlines added by this routine. After a report by
1520 F. Mantegazza.
1527 F. Mantegazza.
1521
1528
1522 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1529 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1523
1530
1524 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1531 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1525 calls. These were a leftover from the GTK 1.x days, and can cause
1532 calls. These were a leftover from the GTK 1.x days, and can cause
1526 problems in certain cases (after a report by John Hunter).
1533 problems in certain cases (after a report by John Hunter).
1527
1534
1528 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1535 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1529 os.getcwd() fails at init time. Thanks to patch from David Remahl
1536 os.getcwd() fails at init time. Thanks to patch from David Remahl
1530 <chmod007-AT-mac.com>.
1537 <chmod007-AT-mac.com>.
1531 (InteractiveShell.__init__): prevent certain special magics from
1538 (InteractiveShell.__init__): prevent certain special magics from
1532 being shadowed by aliases. Closes
1539 being shadowed by aliases. Closes
1533 http://www.scipy.net/roundup/ipython/issue41.
1540 http://www.scipy.net/roundup/ipython/issue41.
1534
1541
1535 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1542 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1536
1543
1537 * IPython/iplib.py (InteractiveShell.complete): Added new
1544 * IPython/iplib.py (InteractiveShell.complete): Added new
1538 top-level completion method to expose the completion mechanism
1545 top-level completion method to expose the completion mechanism
1539 beyond readline-based environments.
1546 beyond readline-based environments.
1540
1547
1541 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1548 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1542
1549
1543 * tools/ipsvnc (svnversion): fix svnversion capture.
1550 * tools/ipsvnc (svnversion): fix svnversion capture.
1544
1551
1545 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1552 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1546 attribute to self, which was missing. Before, it was set by a
1553 attribute to self, which was missing. Before, it was set by a
1547 routine which in certain cases wasn't being called, so the
1554 routine which in certain cases wasn't being called, so the
1548 instance could end up missing the attribute. This caused a crash.
1555 instance could end up missing the attribute. This caused a crash.
1549 Closes http://www.scipy.net/roundup/ipython/issue40.
1556 Closes http://www.scipy.net/roundup/ipython/issue40.
1550
1557
1551 2005-08-16 Fernando Perez <fperez@colorado.edu>
1558 2005-08-16 Fernando Perez <fperez@colorado.edu>
1552
1559
1553 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1560 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1554 contains non-string attribute. Closes
1561 contains non-string attribute. Closes
1555 http://www.scipy.net/roundup/ipython/issue38.
1562 http://www.scipy.net/roundup/ipython/issue38.
1556
1563
1557 2005-08-14 Fernando Perez <fperez@colorado.edu>
1564 2005-08-14 Fernando Perez <fperez@colorado.edu>
1558
1565
1559 * tools/ipsvnc: Minor improvements, to add changeset info.
1566 * tools/ipsvnc: Minor improvements, to add changeset info.
1560
1567
1561 2005-08-12 Fernando Perez <fperez@colorado.edu>
1568 2005-08-12 Fernando Perez <fperez@colorado.edu>
1562
1569
1563 * IPython/iplib.py (runsource): remove self.code_to_run_src
1570 * IPython/iplib.py (runsource): remove self.code_to_run_src
1564 attribute. I realized this is nothing more than
1571 attribute. I realized this is nothing more than
1565 '\n'.join(self.buffer), and having the same data in two different
1572 '\n'.join(self.buffer), and having the same data in two different
1566 places is just asking for synchronization bugs. This may impact
1573 places is just asking for synchronization bugs. This may impact
1567 people who have custom exception handlers, so I need to warn
1574 people who have custom exception handlers, so I need to warn
1568 ipython-dev about it (F. Mantegazza may use them).
1575 ipython-dev about it (F. Mantegazza may use them).
1569
1576
1570 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1577 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1571
1578
1572 * IPython/genutils.py: fix 2.2 compatibility (generators)
1579 * IPython/genutils.py: fix 2.2 compatibility (generators)
1573
1580
1574 2005-07-18 Fernando Perez <fperez@colorado.edu>
1581 2005-07-18 Fernando Perez <fperez@colorado.edu>
1575
1582
1576 * IPython/genutils.py (get_home_dir): fix to help users with
1583 * IPython/genutils.py (get_home_dir): fix to help users with
1577 invalid $HOME under win32.
1584 invalid $HOME under win32.
1578
1585
1579 2005-07-17 Fernando Perez <fperez@colorado.edu>
1586 2005-07-17 Fernando Perez <fperez@colorado.edu>
1580
1587
1581 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1588 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1582 some old hacks and clean up a bit other routines; code should be
1589 some old hacks and clean up a bit other routines; code should be
1583 simpler and a bit faster.
1590 simpler and a bit faster.
1584
1591
1585 * IPython/iplib.py (interact): removed some last-resort attempts
1592 * IPython/iplib.py (interact): removed some last-resort attempts
1586 to survive broken stdout/stderr. That code was only making it
1593 to survive broken stdout/stderr. That code was only making it
1587 harder to abstract out the i/o (necessary for gui integration),
1594 harder to abstract out the i/o (necessary for gui integration),
1588 and the crashes it could prevent were extremely rare in practice
1595 and the crashes it could prevent were extremely rare in practice
1589 (besides being fully user-induced in a pretty violent manner).
1596 (besides being fully user-induced in a pretty violent manner).
1590
1597
1591 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1598 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1592 Nothing major yet, but the code is simpler to read; this should
1599 Nothing major yet, but the code is simpler to read; this should
1593 make it easier to do more serious modifications in the future.
1600 make it easier to do more serious modifications in the future.
1594
1601
1595 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1602 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1596 which broke in .15 (thanks to a report by Ville).
1603 which broke in .15 (thanks to a report by Ville).
1597
1604
1598 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1605 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1599 be quite correct, I know next to nothing about unicode). This
1606 be quite correct, I know next to nothing about unicode). This
1600 will allow unicode strings to be used in prompts, amongst other
1607 will allow unicode strings to be used in prompts, amongst other
1601 cases. It also will prevent ipython from crashing when unicode
1608 cases. It also will prevent ipython from crashing when unicode
1602 shows up unexpectedly in many places. If ascii encoding fails, we
1609 shows up unexpectedly in many places. If ascii encoding fails, we
1603 assume utf_8. Currently the encoding is not a user-visible
1610 assume utf_8. Currently the encoding is not a user-visible
1604 setting, though it could be made so if there is demand for it.
1611 setting, though it could be made so if there is demand for it.
1605
1612
1606 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1613 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1607
1614
1608 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1615 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1609
1616
1610 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1617 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1611
1618
1612 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1619 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1613 code can work transparently for 2.2/2.3.
1620 code can work transparently for 2.2/2.3.
1614
1621
1615 2005-07-16 Fernando Perez <fperez@colorado.edu>
1622 2005-07-16 Fernando Perez <fperez@colorado.edu>
1616
1623
1617 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1624 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1618 out of the color scheme table used for coloring exception
1625 out of the color scheme table used for coloring exception
1619 tracebacks. This allows user code to add new schemes at runtime.
1626 tracebacks. This allows user code to add new schemes at runtime.
1620 This is a minimally modified version of the patch at
1627 This is a minimally modified version of the patch at
1621 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1628 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1622 for the contribution.
1629 for the contribution.
1623
1630
1624 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1631 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1625 slightly modified version of the patch in
1632 slightly modified version of the patch in
1626 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1633 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1627 to remove the previous try/except solution (which was costlier).
1634 to remove the previous try/except solution (which was costlier).
1628 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1635 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1629
1636
1630 2005-06-08 Fernando Perez <fperez@colorado.edu>
1637 2005-06-08 Fernando Perez <fperez@colorado.edu>
1631
1638
1632 * IPython/iplib.py (write/write_err): Add methods to abstract all
1639 * IPython/iplib.py (write/write_err): Add methods to abstract all
1633 I/O a bit more.
1640 I/O a bit more.
1634
1641
1635 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1642 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1636 warning, reported by Aric Hagberg, fix by JD Hunter.
1643 warning, reported by Aric Hagberg, fix by JD Hunter.
1637
1644
1638 2005-06-02 *** Released version 0.6.15
1645 2005-06-02 *** Released version 0.6.15
1639
1646
1640 2005-06-01 Fernando Perez <fperez@colorado.edu>
1647 2005-06-01 Fernando Perez <fperez@colorado.edu>
1641
1648
1642 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1649 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1643 tab-completion of filenames within open-quoted strings. Note that
1650 tab-completion of filenames within open-quoted strings. Note that
1644 this requires that in ~/.ipython/ipythonrc, users change the
1651 this requires that in ~/.ipython/ipythonrc, users change the
1645 readline delimiters configuration to read:
1652 readline delimiters configuration to read:
1646
1653
1647 readline_remove_delims -/~
1654 readline_remove_delims -/~
1648
1655
1649
1656
1650 2005-05-31 *** Released version 0.6.14
1657 2005-05-31 *** Released version 0.6.14
1651
1658
1652 2005-05-29 Fernando Perez <fperez@colorado.edu>
1659 2005-05-29 Fernando Perez <fperez@colorado.edu>
1653
1660
1654 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1661 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1655 with files not on the filesystem. Reported by Eliyahu Sandler
1662 with files not on the filesystem. Reported by Eliyahu Sandler
1656 <eli@gondolin.net>
1663 <eli@gondolin.net>
1657
1664
1658 2005-05-22 Fernando Perez <fperez@colorado.edu>
1665 2005-05-22 Fernando Perez <fperez@colorado.edu>
1659
1666
1660 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1667 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1661 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1668 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1662
1669
1663 2005-05-19 Fernando Perez <fperez@colorado.edu>
1670 2005-05-19 Fernando Perez <fperez@colorado.edu>
1664
1671
1665 * IPython/iplib.py (safe_execfile): close a file which could be
1672 * IPython/iplib.py (safe_execfile): close a file which could be
1666 left open (causing problems in win32, which locks open files).
1673 left open (causing problems in win32, which locks open files).
1667 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1674 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1668
1675
1669 2005-05-18 Fernando Perez <fperez@colorado.edu>
1676 2005-05-18 Fernando Perez <fperez@colorado.edu>
1670
1677
1671 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1678 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1672 keyword arguments correctly to safe_execfile().
1679 keyword arguments correctly to safe_execfile().
1673
1680
1674 2005-05-13 Fernando Perez <fperez@colorado.edu>
1681 2005-05-13 Fernando Perez <fperez@colorado.edu>
1675
1682
1676 * ipython.1: Added info about Qt to manpage, and threads warning
1683 * ipython.1: Added info about Qt to manpage, and threads warning
1677 to usage page (invoked with --help).
1684 to usage page (invoked with --help).
1678
1685
1679 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1686 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1680 new matcher (it goes at the end of the priority list) to do
1687 new matcher (it goes at the end of the priority list) to do
1681 tab-completion on named function arguments. Submitted by George
1688 tab-completion on named function arguments. Submitted by George
1682 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1689 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1683 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1690 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1684 for more details.
1691 for more details.
1685
1692
1686 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1693 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1687 SystemExit exceptions in the script being run. Thanks to a report
1694 SystemExit exceptions in the script being run. Thanks to a report
1688 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1695 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1689 producing very annoying behavior when running unit tests.
1696 producing very annoying behavior when running unit tests.
1690
1697
1691 2005-05-12 Fernando Perez <fperez@colorado.edu>
1698 2005-05-12 Fernando Perez <fperez@colorado.edu>
1692
1699
1693 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1700 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1694 which I'd broken (again) due to a changed regexp. In the process,
1701 which I'd broken (again) due to a changed regexp. In the process,
1695 added ';' as an escape to auto-quote the whole line without
1702 added ';' as an escape to auto-quote the whole line without
1696 splitting its arguments. Thanks to a report by Jerry McRae
1703 splitting its arguments. Thanks to a report by Jerry McRae
1697 <qrs0xyc02-AT-sneakemail.com>.
1704 <qrs0xyc02-AT-sneakemail.com>.
1698
1705
1699 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1706 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1700 possible crashes caused by a TokenError. Reported by Ed Schofield
1707 possible crashes caused by a TokenError. Reported by Ed Schofield
1701 <schofield-AT-ftw.at>.
1708 <schofield-AT-ftw.at>.
1702
1709
1703 2005-05-06 Fernando Perez <fperez@colorado.edu>
1710 2005-05-06 Fernando Perez <fperez@colorado.edu>
1704
1711
1705 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1712 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1706
1713
1707 2005-04-29 Fernando Perez <fperez@colorado.edu>
1714 2005-04-29 Fernando Perez <fperez@colorado.edu>
1708
1715
1709 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1716 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1710 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1717 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1711 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1718 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1712 which provides support for Qt interactive usage (similar to the
1719 which provides support for Qt interactive usage (similar to the
1713 existing one for WX and GTK). This had been often requested.
1720 existing one for WX and GTK). This had been often requested.
1714
1721
1715 2005-04-14 *** Released version 0.6.13
1722 2005-04-14 *** Released version 0.6.13
1716
1723
1717 2005-04-08 Fernando Perez <fperez@colorado.edu>
1724 2005-04-08 Fernando Perez <fperez@colorado.edu>
1718
1725
1719 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1726 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1720 from _ofind, which gets called on almost every input line. Now,
1727 from _ofind, which gets called on almost every input line. Now,
1721 we only try to get docstrings if they are actually going to be
1728 we only try to get docstrings if they are actually going to be
1722 used (the overhead of fetching unnecessary docstrings can be
1729 used (the overhead of fetching unnecessary docstrings can be
1723 noticeable for certain objects, such as Pyro proxies).
1730 noticeable for certain objects, such as Pyro proxies).
1724
1731
1725 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1732 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1726 for completers. For some reason I had been passing them the state
1733 for completers. For some reason I had been passing them the state
1727 variable, which completers never actually need, and was in
1734 variable, which completers never actually need, and was in
1728 conflict with the rlcompleter API. Custom completers ONLY need to
1735 conflict with the rlcompleter API. Custom completers ONLY need to
1729 take the text parameter.
1736 take the text parameter.
1730
1737
1731 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1738 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1732 work correctly in pysh. I've also moved all the logic which used
1739 work correctly in pysh. I've also moved all the logic which used
1733 to be in pysh.py here, which will prevent problems with future
1740 to be in pysh.py here, which will prevent problems with future
1734 upgrades. However, this time I must warn users to update their
1741 upgrades. However, this time I must warn users to update their
1735 pysh profile to include the line
1742 pysh profile to include the line
1736
1743
1737 import_all IPython.Extensions.InterpreterExec
1744 import_all IPython.Extensions.InterpreterExec
1738
1745
1739 because otherwise things won't work for them. They MUST also
1746 because otherwise things won't work for them. They MUST also
1740 delete pysh.py and the line
1747 delete pysh.py and the line
1741
1748
1742 execfile pysh.py
1749 execfile pysh.py
1743
1750
1744 from their ipythonrc-pysh.
1751 from their ipythonrc-pysh.
1745
1752
1746 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1753 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1747 robust in the face of objects whose dir() returns non-strings
1754 robust in the face of objects whose dir() returns non-strings
1748 (which it shouldn't, but some broken libs like ITK do). Thanks to
1755 (which it shouldn't, but some broken libs like ITK do). Thanks to
1749 a patch by John Hunter (implemented differently, though). Also
1756 a patch by John Hunter (implemented differently, though). Also
1750 minor improvements by using .extend instead of + on lists.
1757 minor improvements by using .extend instead of + on lists.
1751
1758
1752 * pysh.py:
1759 * pysh.py:
1753
1760
1754 2005-04-06 Fernando Perez <fperez@colorado.edu>
1761 2005-04-06 Fernando Perez <fperez@colorado.edu>
1755
1762
1756 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1763 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1757 by default, so that all users benefit from it. Those who don't
1764 by default, so that all users benefit from it. Those who don't
1758 want it can still turn it off.
1765 want it can still turn it off.
1759
1766
1760 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1767 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1761 config file, I'd forgotten about this, so users were getting it
1768 config file, I'd forgotten about this, so users were getting it
1762 off by default.
1769 off by default.
1763
1770
1764 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1771 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1765 consistency. Now magics can be called in multiline statements,
1772 consistency. Now magics can be called in multiline statements,
1766 and python variables can be expanded in magic calls via $var.
1773 and python variables can be expanded in magic calls via $var.
1767 This makes the magic system behave just like aliases or !system
1774 This makes the magic system behave just like aliases or !system
1768 calls.
1775 calls.
1769
1776
1770 2005-03-28 Fernando Perez <fperez@colorado.edu>
1777 2005-03-28 Fernando Perez <fperez@colorado.edu>
1771
1778
1772 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1779 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1773 expensive string additions for building command. Add support for
1780 expensive string additions for building command. Add support for
1774 trailing ';' when autocall is used.
1781 trailing ';' when autocall is used.
1775
1782
1776 2005-03-26 Fernando Perez <fperez@colorado.edu>
1783 2005-03-26 Fernando Perez <fperez@colorado.edu>
1777
1784
1778 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1785 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1779 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1786 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1780 ipython.el robust against prompts with any number of spaces
1787 ipython.el robust against prompts with any number of spaces
1781 (including 0) after the ':' character.
1788 (including 0) after the ':' character.
1782
1789
1783 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1790 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1784 continuation prompt, which misled users to think the line was
1791 continuation prompt, which misled users to think the line was
1785 already indented. Closes debian Bug#300847, reported to me by
1792 already indented. Closes debian Bug#300847, reported to me by
1786 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1793 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1787
1794
1788 2005-03-23 Fernando Perez <fperez@colorado.edu>
1795 2005-03-23 Fernando Perez <fperez@colorado.edu>
1789
1796
1790 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1797 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1791 properly aligned if they have embedded newlines.
1798 properly aligned if they have embedded newlines.
1792
1799
1793 * IPython/iplib.py (runlines): Add a public method to expose
1800 * IPython/iplib.py (runlines): Add a public method to expose
1794 IPython's code execution machinery, so that users can run strings
1801 IPython's code execution machinery, so that users can run strings
1795 as if they had been typed at the prompt interactively.
1802 as if they had been typed at the prompt interactively.
1796 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1803 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1797 methods which can call the system shell, but with python variable
1804 methods which can call the system shell, but with python variable
1798 expansion. The three such methods are: __IPYTHON__.system,
1805 expansion. The three such methods are: __IPYTHON__.system,
1799 .getoutput and .getoutputerror. These need to be documented in a
1806 .getoutput and .getoutputerror. These need to be documented in a
1800 'public API' section (to be written) of the manual.
1807 'public API' section (to be written) of the manual.
1801
1808
1802 2005-03-20 Fernando Perez <fperez@colorado.edu>
1809 2005-03-20 Fernando Perez <fperez@colorado.edu>
1803
1810
1804 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1811 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1805 for custom exception handling. This is quite powerful, and it
1812 for custom exception handling. This is quite powerful, and it
1806 allows for user-installable exception handlers which can trap
1813 allows for user-installable exception handlers which can trap
1807 custom exceptions at runtime and treat them separately from
1814 custom exceptions at runtime and treat them separately from
1808 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1815 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1809 Mantegazza <mantegazza-AT-ill.fr>.
1816 Mantegazza <mantegazza-AT-ill.fr>.
1810 (InteractiveShell.set_custom_completer): public API function to
1817 (InteractiveShell.set_custom_completer): public API function to
1811 add new completers at runtime.
1818 add new completers at runtime.
1812
1819
1813 2005-03-19 Fernando Perez <fperez@colorado.edu>
1820 2005-03-19 Fernando Perez <fperez@colorado.edu>
1814
1821
1815 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1822 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1816 allow objects which provide their docstrings via non-standard
1823 allow objects which provide their docstrings via non-standard
1817 mechanisms (like Pyro proxies) to still be inspected by ipython's
1824 mechanisms (like Pyro proxies) to still be inspected by ipython's
1818 ? system.
1825 ? system.
1819
1826
1820 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1827 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1821 automatic capture system. I tried quite hard to make it work
1828 automatic capture system. I tried quite hard to make it work
1822 reliably, and simply failed. I tried many combinations with the
1829 reliably, and simply failed. I tried many combinations with the
1823 subprocess module, but eventually nothing worked in all needed
1830 subprocess module, but eventually nothing worked in all needed
1824 cases (not blocking stdin for the child, duplicating stdout
1831 cases (not blocking stdin for the child, duplicating stdout
1825 without blocking, etc). The new %sc/%sx still do capture to these
1832 without blocking, etc). The new %sc/%sx still do capture to these
1826 magical list/string objects which make shell use much more
1833 magical list/string objects which make shell use much more
1827 conveninent, so not all is lost.
1834 conveninent, so not all is lost.
1828
1835
1829 XXX - FIX MANUAL for the change above!
1836 XXX - FIX MANUAL for the change above!
1830
1837
1831 (runsource): I copied code.py's runsource() into ipython to modify
1838 (runsource): I copied code.py's runsource() into ipython to modify
1832 it a bit. Now the code object and source to be executed are
1839 it a bit. Now the code object and source to be executed are
1833 stored in ipython. This makes this info accessible to third-party
1840 stored in ipython. This makes this info accessible to third-party
1834 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1841 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1835 Mantegazza <mantegazza-AT-ill.fr>.
1842 Mantegazza <mantegazza-AT-ill.fr>.
1836
1843
1837 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1844 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1838 history-search via readline (like C-p/C-n). I'd wanted this for a
1845 history-search via readline (like C-p/C-n). I'd wanted this for a
1839 long time, but only recently found out how to do it. For users
1846 long time, but only recently found out how to do it. For users
1840 who already have their ipythonrc files made and want this, just
1847 who already have their ipythonrc files made and want this, just
1841 add:
1848 add:
1842
1849
1843 readline_parse_and_bind "\e[A": history-search-backward
1850 readline_parse_and_bind "\e[A": history-search-backward
1844 readline_parse_and_bind "\e[B": history-search-forward
1851 readline_parse_and_bind "\e[B": history-search-forward
1845
1852
1846 2005-03-18 Fernando Perez <fperez@colorado.edu>
1853 2005-03-18 Fernando Perez <fperez@colorado.edu>
1847
1854
1848 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1855 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1849 LSString and SList classes which allow transparent conversions
1856 LSString and SList classes which allow transparent conversions
1850 between list mode and whitespace-separated string.
1857 between list mode and whitespace-separated string.
1851 (magic_r): Fix recursion problem in %r.
1858 (magic_r): Fix recursion problem in %r.
1852
1859
1853 * IPython/genutils.py (LSString): New class to be used for
1860 * IPython/genutils.py (LSString): New class to be used for
1854 automatic storage of the results of all alias/system calls in _o
1861 automatic storage of the results of all alias/system calls in _o
1855 and _e (stdout/err). These provide a .l/.list attribute which
1862 and _e (stdout/err). These provide a .l/.list attribute which
1856 does automatic splitting on newlines. This means that for most
1863 does automatic splitting on newlines. This means that for most
1857 uses, you'll never need to do capturing of output with %sc/%sx
1864 uses, you'll never need to do capturing of output with %sc/%sx
1858 anymore, since ipython keeps this always done for you. Note that
1865 anymore, since ipython keeps this always done for you. Note that
1859 only the LAST results are stored, the _o/e variables are
1866 only the LAST results are stored, the _o/e variables are
1860 overwritten on each call. If you need to save their contents
1867 overwritten on each call. If you need to save their contents
1861 further, simply bind them to any other name.
1868 further, simply bind them to any other name.
1862
1869
1863 2005-03-17 Fernando Perez <fperez@colorado.edu>
1870 2005-03-17 Fernando Perez <fperez@colorado.edu>
1864
1871
1865 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1872 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1866 prompt namespace handling.
1873 prompt namespace handling.
1867
1874
1868 2005-03-16 Fernando Perez <fperez@colorado.edu>
1875 2005-03-16 Fernando Perez <fperez@colorado.edu>
1869
1876
1870 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1877 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1871 classic prompts to be '>>> ' (final space was missing, and it
1878 classic prompts to be '>>> ' (final space was missing, and it
1872 trips the emacs python mode).
1879 trips the emacs python mode).
1873 (BasePrompt.__str__): Added safe support for dynamic prompt
1880 (BasePrompt.__str__): Added safe support for dynamic prompt
1874 strings. Now you can set your prompt string to be '$x', and the
1881 strings. Now you can set your prompt string to be '$x', and the
1875 value of x will be printed from your interactive namespace. The
1882 value of x will be printed from your interactive namespace. The
1876 interpolation syntax includes the full Itpl support, so
1883 interpolation syntax includes the full Itpl support, so
1877 ${foo()+x+bar()} is a valid prompt string now, and the function
1884 ${foo()+x+bar()} is a valid prompt string now, and the function
1878 calls will be made at runtime.
1885 calls will be made at runtime.
1879
1886
1880 2005-03-15 Fernando Perez <fperez@colorado.edu>
1887 2005-03-15 Fernando Perez <fperez@colorado.edu>
1881
1888
1882 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1889 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1883 avoid name clashes in pylab. %hist still works, it just forwards
1890 avoid name clashes in pylab. %hist still works, it just forwards
1884 the call to %history.
1891 the call to %history.
1885
1892
1886 2005-03-02 *** Released version 0.6.12
1893 2005-03-02 *** Released version 0.6.12
1887
1894
1888 2005-03-02 Fernando Perez <fperez@colorado.edu>
1895 2005-03-02 Fernando Perez <fperez@colorado.edu>
1889
1896
1890 * IPython/iplib.py (handle_magic): log magic calls properly as
1897 * IPython/iplib.py (handle_magic): log magic calls properly as
1891 ipmagic() function calls.
1898 ipmagic() function calls.
1892
1899
1893 * IPython/Magic.py (magic_time): Improved %time to support
1900 * IPython/Magic.py (magic_time): Improved %time to support
1894 statements and provide wall-clock as well as CPU time.
1901 statements and provide wall-clock as well as CPU time.
1895
1902
1896 2005-02-27 Fernando Perez <fperez@colorado.edu>
1903 2005-02-27 Fernando Perez <fperez@colorado.edu>
1897
1904
1898 * IPython/hooks.py: New hooks module, to expose user-modifiable
1905 * IPython/hooks.py: New hooks module, to expose user-modifiable
1899 IPython functionality in a clean manner. For now only the editor
1906 IPython functionality in a clean manner. For now only the editor
1900 hook is actually written, and other thigns which I intend to turn
1907 hook is actually written, and other thigns which I intend to turn
1901 into proper hooks aren't yet there. The display and prefilter
1908 into proper hooks aren't yet there. The display and prefilter
1902 stuff, for example, should be hooks. But at least now the
1909 stuff, for example, should be hooks. But at least now the
1903 framework is in place, and the rest can be moved here with more
1910 framework is in place, and the rest can be moved here with more
1904 time later. IPython had had a .hooks variable for a long time for
1911 time later. IPython had had a .hooks variable for a long time for
1905 this purpose, but I'd never actually used it for anything.
1912 this purpose, but I'd never actually used it for anything.
1906
1913
1907 2005-02-26 Fernando Perez <fperez@colorado.edu>
1914 2005-02-26 Fernando Perez <fperez@colorado.edu>
1908
1915
1909 * IPython/ipmaker.py (make_IPython): make the default ipython
1916 * IPython/ipmaker.py (make_IPython): make the default ipython
1910 directory be called _ipython under win32, to follow more the
1917 directory be called _ipython under win32, to follow more the
1911 naming peculiarities of that platform (where buggy software like
1918 naming peculiarities of that platform (where buggy software like
1912 Visual Sourcesafe breaks with .named directories). Reported by
1919 Visual Sourcesafe breaks with .named directories). Reported by
1913 Ville Vainio.
1920 Ville Vainio.
1914
1921
1915 2005-02-23 Fernando Perez <fperez@colorado.edu>
1922 2005-02-23 Fernando Perez <fperez@colorado.edu>
1916
1923
1917 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1924 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1918 auto_aliases for win32 which were causing problems. Users can
1925 auto_aliases for win32 which were causing problems. Users can
1919 define the ones they personally like.
1926 define the ones they personally like.
1920
1927
1921 2005-02-21 Fernando Perez <fperez@colorado.edu>
1928 2005-02-21 Fernando Perez <fperez@colorado.edu>
1922
1929
1923 * IPython/Magic.py (magic_time): new magic to time execution of
1930 * IPython/Magic.py (magic_time): new magic to time execution of
1924 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1931 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1925
1932
1926 2005-02-19 Fernando Perez <fperez@colorado.edu>
1933 2005-02-19 Fernando Perez <fperez@colorado.edu>
1927
1934
1928 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1935 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1929 into keys (for prompts, for example).
1936 into keys (for prompts, for example).
1930
1937
1931 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1938 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1932 prompts in case users want them. This introduces a small behavior
1939 prompts in case users want them. This introduces a small behavior
1933 change: ipython does not automatically add a space to all prompts
1940 change: ipython does not automatically add a space to all prompts
1934 anymore. To get the old prompts with a space, users should add it
1941 anymore. To get the old prompts with a space, users should add it
1935 manually to their ipythonrc file, so for example prompt_in1 should
1942 manually to their ipythonrc file, so for example prompt_in1 should
1936 now read 'In [\#]: ' instead of 'In [\#]:'.
1943 now read 'In [\#]: ' instead of 'In [\#]:'.
1937 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1944 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1938 file) to control left-padding of secondary prompts.
1945 file) to control left-padding of secondary prompts.
1939
1946
1940 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1947 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1941 the profiler can't be imported. Fix for Debian, which removed
1948 the profiler can't be imported. Fix for Debian, which removed
1942 profile.py because of License issues. I applied a slightly
1949 profile.py because of License issues. I applied a slightly
1943 modified version of the original Debian patch at
1950 modified version of the original Debian patch at
1944 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1951 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1945
1952
1946 2005-02-17 Fernando Perez <fperez@colorado.edu>
1953 2005-02-17 Fernando Perez <fperez@colorado.edu>
1947
1954
1948 * IPython/genutils.py (native_line_ends): Fix bug which would
1955 * IPython/genutils.py (native_line_ends): Fix bug which would
1949 cause improper line-ends under win32 b/c I was not opening files
1956 cause improper line-ends under win32 b/c I was not opening files
1950 in binary mode. Bug report and fix thanks to Ville.
1957 in binary mode. Bug report and fix thanks to Ville.
1951
1958
1952 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1959 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1953 trying to catch spurious foo[1] autocalls. My fix actually broke
1960 trying to catch spurious foo[1] autocalls. My fix actually broke
1954 ',/' autoquote/call with explicit escape (bad regexp).
1961 ',/' autoquote/call with explicit escape (bad regexp).
1955
1962
1956 2005-02-15 *** Released version 0.6.11
1963 2005-02-15 *** Released version 0.6.11
1957
1964
1958 2005-02-14 Fernando Perez <fperez@colorado.edu>
1965 2005-02-14 Fernando Perez <fperez@colorado.edu>
1959
1966
1960 * IPython/background_jobs.py: New background job management
1967 * IPython/background_jobs.py: New background job management
1961 subsystem. This is implemented via a new set of classes, and
1968 subsystem. This is implemented via a new set of classes, and
1962 IPython now provides a builtin 'jobs' object for background job
1969 IPython now provides a builtin 'jobs' object for background job
1963 execution. A convenience %bg magic serves as a lightweight
1970 execution. A convenience %bg magic serves as a lightweight
1964 frontend for starting the more common type of calls. This was
1971 frontend for starting the more common type of calls. This was
1965 inspired by discussions with B. Granger and the BackgroundCommand
1972 inspired by discussions with B. Granger and the BackgroundCommand
1966 class described in the book Python Scripting for Computational
1973 class described in the book Python Scripting for Computational
1967 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1974 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1968 (although ultimately no code from this text was used, as IPython's
1975 (although ultimately no code from this text was used, as IPython's
1969 system is a separate implementation).
1976 system is a separate implementation).
1970
1977
1971 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1978 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1972 to control the completion of single/double underscore names
1979 to control the completion of single/double underscore names
1973 separately. As documented in the example ipytonrc file, the
1980 separately. As documented in the example ipytonrc file, the
1974 readline_omit__names variable can now be set to 2, to omit even
1981 readline_omit__names variable can now be set to 2, to omit even
1975 single underscore names. Thanks to a patch by Brian Wong
1982 single underscore names. Thanks to a patch by Brian Wong
1976 <BrianWong-AT-AirgoNetworks.Com>.
1983 <BrianWong-AT-AirgoNetworks.Com>.
1977 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1984 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1978 be autocalled as foo([1]) if foo were callable. A problem for
1985 be autocalled as foo([1]) if foo were callable. A problem for
1979 things which are both callable and implement __getitem__.
1986 things which are both callable and implement __getitem__.
1980 (init_readline): Fix autoindentation for win32. Thanks to a patch
1987 (init_readline): Fix autoindentation for win32. Thanks to a patch
1981 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1988 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1982
1989
1983 2005-02-12 Fernando Perez <fperez@colorado.edu>
1990 2005-02-12 Fernando Perez <fperez@colorado.edu>
1984
1991
1985 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1992 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1986 which I had written long ago to sort out user error messages which
1993 which I had written long ago to sort out user error messages which
1987 may occur during startup. This seemed like a good idea initially,
1994 may occur during startup. This seemed like a good idea initially,
1988 but it has proven a disaster in retrospect. I don't want to
1995 but it has proven a disaster in retrospect. I don't want to
1989 change much code for now, so my fix is to set the internal 'debug'
1996 change much code for now, so my fix is to set the internal 'debug'
1990 flag to true everywhere, whose only job was precisely to control
1997 flag to true everywhere, whose only job was precisely to control
1991 this subsystem. This closes issue 28 (as well as avoiding all
1998 this subsystem. This closes issue 28 (as well as avoiding all
1992 sorts of strange hangups which occur from time to time).
1999 sorts of strange hangups which occur from time to time).
1993
2000
1994 2005-02-07 Fernando Perez <fperez@colorado.edu>
2001 2005-02-07 Fernando Perez <fperez@colorado.edu>
1995
2002
1996 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2003 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1997 previous call produced a syntax error.
2004 previous call produced a syntax error.
1998
2005
1999 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2006 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2000 classes without constructor.
2007 classes without constructor.
2001
2008
2002 2005-02-06 Fernando Perez <fperez@colorado.edu>
2009 2005-02-06 Fernando Perez <fperez@colorado.edu>
2003
2010
2004 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2011 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2005 completions with the results of each matcher, so we return results
2012 completions with the results of each matcher, so we return results
2006 to the user from all namespaces. This breaks with ipython
2013 to the user from all namespaces. This breaks with ipython
2007 tradition, but I think it's a nicer behavior. Now you get all
2014 tradition, but I think it's a nicer behavior. Now you get all
2008 possible completions listed, from all possible namespaces (python,
2015 possible completions listed, from all possible namespaces (python,
2009 filesystem, magics...) After a request by John Hunter
2016 filesystem, magics...) After a request by John Hunter
2010 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2017 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2011
2018
2012 2005-02-05 Fernando Perez <fperez@colorado.edu>
2019 2005-02-05 Fernando Perez <fperez@colorado.edu>
2013
2020
2014 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2021 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2015 the call had quote characters in it (the quotes were stripped).
2022 the call had quote characters in it (the quotes were stripped).
2016
2023
2017 2005-01-31 Fernando Perez <fperez@colorado.edu>
2024 2005-01-31 Fernando Perez <fperez@colorado.edu>
2018
2025
2019 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2026 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2020 Itpl.itpl() to make the code more robust against psyco
2027 Itpl.itpl() to make the code more robust against psyco
2021 optimizations.
2028 optimizations.
2022
2029
2023 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2030 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2024 of causing an exception. Quicker, cleaner.
2031 of causing an exception. Quicker, cleaner.
2025
2032
2026 2005-01-28 Fernando Perez <fperez@colorado.edu>
2033 2005-01-28 Fernando Perez <fperez@colorado.edu>
2027
2034
2028 * scripts/ipython_win_post_install.py (install): hardcode
2035 * scripts/ipython_win_post_install.py (install): hardcode
2029 sys.prefix+'python.exe' as the executable path. It turns out that
2036 sys.prefix+'python.exe' as the executable path. It turns out that
2030 during the post-installation run, sys.executable resolves to the
2037 during the post-installation run, sys.executable resolves to the
2031 name of the binary installer! I should report this as a distutils
2038 name of the binary installer! I should report this as a distutils
2032 bug, I think. I updated the .10 release with this tiny fix, to
2039 bug, I think. I updated the .10 release with this tiny fix, to
2033 avoid annoying the lists further.
2040 avoid annoying the lists further.
2034
2041
2035 2005-01-27 *** Released version 0.6.10
2042 2005-01-27 *** Released version 0.6.10
2036
2043
2037 2005-01-27 Fernando Perez <fperez@colorado.edu>
2044 2005-01-27 Fernando Perez <fperez@colorado.edu>
2038
2045
2039 * IPython/numutils.py (norm): Added 'inf' as optional name for
2046 * IPython/numutils.py (norm): Added 'inf' as optional name for
2040 L-infinity norm, included references to mathworld.com for vector
2047 L-infinity norm, included references to mathworld.com for vector
2041 norm definitions.
2048 norm definitions.
2042 (amin/amax): added amin/amax for array min/max. Similar to what
2049 (amin/amax): added amin/amax for array min/max. Similar to what
2043 pylab ships with after the recent reorganization of names.
2050 pylab ships with after the recent reorganization of names.
2044 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2051 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2045
2052
2046 * ipython.el: committed Alex's recent fixes and improvements.
2053 * ipython.el: committed Alex's recent fixes and improvements.
2047 Tested with python-mode from CVS, and it looks excellent. Since
2054 Tested with python-mode from CVS, and it looks excellent. Since
2048 python-mode hasn't released anything in a while, I'm temporarily
2055 python-mode hasn't released anything in a while, I'm temporarily
2049 putting a copy of today's CVS (v 4.70) of python-mode in:
2056 putting a copy of today's CVS (v 4.70) of python-mode in:
2050 http://ipython.scipy.org/tmp/python-mode.el
2057 http://ipython.scipy.org/tmp/python-mode.el
2051
2058
2052 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2059 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2053 sys.executable for the executable name, instead of assuming it's
2060 sys.executable for the executable name, instead of assuming it's
2054 called 'python.exe' (the post-installer would have produced broken
2061 called 'python.exe' (the post-installer would have produced broken
2055 setups on systems with a differently named python binary).
2062 setups on systems with a differently named python binary).
2056
2063
2057 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2064 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2058 references to os.linesep, to make the code more
2065 references to os.linesep, to make the code more
2059 platform-independent. This is also part of the win32 coloring
2066 platform-independent. This is also part of the win32 coloring
2060 fixes.
2067 fixes.
2061
2068
2062 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2069 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2063 lines, which actually cause coloring bugs because the length of
2070 lines, which actually cause coloring bugs because the length of
2064 the line is very difficult to correctly compute with embedded
2071 the line is very difficult to correctly compute with embedded
2065 escapes. This was the source of all the coloring problems under
2072 escapes. This was the source of all the coloring problems under
2066 Win32. I think that _finally_, Win32 users have a properly
2073 Win32. I think that _finally_, Win32 users have a properly
2067 working ipython in all respects. This would never have happened
2074 working ipython in all respects. This would never have happened
2068 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2075 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2069
2076
2070 2005-01-26 *** Released version 0.6.9
2077 2005-01-26 *** Released version 0.6.9
2071
2078
2072 2005-01-25 Fernando Perez <fperez@colorado.edu>
2079 2005-01-25 Fernando Perez <fperez@colorado.edu>
2073
2080
2074 * setup.py: finally, we have a true Windows installer, thanks to
2081 * setup.py: finally, we have a true Windows installer, thanks to
2075 the excellent work of Viktor Ransmayr
2082 the excellent work of Viktor Ransmayr
2076 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2083 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2077 Windows users. The setup routine is quite a bit cleaner thanks to
2084 Windows users. The setup routine is quite a bit cleaner thanks to
2078 this, and the post-install script uses the proper functions to
2085 this, and the post-install script uses the proper functions to
2079 allow a clean de-installation using the standard Windows Control
2086 allow a clean de-installation using the standard Windows Control
2080 Panel.
2087 Panel.
2081
2088
2082 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2089 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2083 environment variable under all OSes (including win32) if
2090 environment variable under all OSes (including win32) if
2084 available. This will give consistency to win32 users who have set
2091 available. This will give consistency to win32 users who have set
2085 this variable for any reason. If os.environ['HOME'] fails, the
2092 this variable for any reason. If os.environ['HOME'] fails, the
2086 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2093 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2087
2094
2088 2005-01-24 Fernando Perez <fperez@colorado.edu>
2095 2005-01-24 Fernando Perez <fperez@colorado.edu>
2089
2096
2090 * IPython/numutils.py (empty_like): add empty_like(), similar to
2097 * IPython/numutils.py (empty_like): add empty_like(), similar to
2091 zeros_like() but taking advantage of the new empty() Numeric routine.
2098 zeros_like() but taking advantage of the new empty() Numeric routine.
2092
2099
2093 2005-01-23 *** Released version 0.6.8
2100 2005-01-23 *** Released version 0.6.8
2094
2101
2095 2005-01-22 Fernando Perez <fperez@colorado.edu>
2102 2005-01-22 Fernando Perez <fperez@colorado.edu>
2096
2103
2097 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2104 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2098 automatic show() calls. After discussing things with JDH, it
2105 automatic show() calls. After discussing things with JDH, it
2099 turns out there are too many corner cases where this can go wrong.
2106 turns out there are too many corner cases where this can go wrong.
2100 It's best not to try to be 'too smart', and simply have ipython
2107 It's best not to try to be 'too smart', and simply have ipython
2101 reproduce as much as possible the default behavior of a normal
2108 reproduce as much as possible the default behavior of a normal
2102 python shell.
2109 python shell.
2103
2110
2104 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2111 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2105 line-splitting regexp and _prefilter() to avoid calling getattr()
2112 line-splitting regexp and _prefilter() to avoid calling getattr()
2106 on assignments. This closes
2113 on assignments. This closes
2107 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2114 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2108 readline uses getattr(), so a simple <TAB> keypress is still
2115 readline uses getattr(), so a simple <TAB> keypress is still
2109 enough to trigger getattr() calls on an object.
2116 enough to trigger getattr() calls on an object.
2110
2117
2111 2005-01-21 Fernando Perez <fperez@colorado.edu>
2118 2005-01-21 Fernando Perez <fperez@colorado.edu>
2112
2119
2113 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2120 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2114 docstring under pylab so it doesn't mask the original.
2121 docstring under pylab so it doesn't mask the original.
2115
2122
2116 2005-01-21 *** Released version 0.6.7
2123 2005-01-21 *** Released version 0.6.7
2117
2124
2118 2005-01-21 Fernando Perez <fperez@colorado.edu>
2125 2005-01-21 Fernando Perez <fperez@colorado.edu>
2119
2126
2120 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2127 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2121 signal handling for win32 users in multithreaded mode.
2128 signal handling for win32 users in multithreaded mode.
2122
2129
2123 2005-01-17 Fernando Perez <fperez@colorado.edu>
2130 2005-01-17 Fernando Perez <fperez@colorado.edu>
2124
2131
2125 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2132 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2126 instances with no __init__. After a crash report by Norbert Nemec
2133 instances with no __init__. After a crash report by Norbert Nemec
2127 <Norbert-AT-nemec-online.de>.
2134 <Norbert-AT-nemec-online.de>.
2128
2135
2129 2005-01-14 Fernando Perez <fperez@colorado.edu>
2136 2005-01-14 Fernando Perez <fperez@colorado.edu>
2130
2137
2131 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2138 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2132 names for verbose exceptions, when multiple dotted names and the
2139 names for verbose exceptions, when multiple dotted names and the
2133 'parent' object were present on the same line.
2140 'parent' object were present on the same line.
2134
2141
2135 2005-01-11 Fernando Perez <fperez@colorado.edu>
2142 2005-01-11 Fernando Perez <fperez@colorado.edu>
2136
2143
2137 * IPython/genutils.py (flag_calls): new utility to trap and flag
2144 * IPython/genutils.py (flag_calls): new utility to trap and flag
2138 calls in functions. I need it to clean up matplotlib support.
2145 calls in functions. I need it to clean up matplotlib support.
2139 Also removed some deprecated code in genutils.
2146 Also removed some deprecated code in genutils.
2140
2147
2141 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2148 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2142 that matplotlib scripts called with %run, which don't call show()
2149 that matplotlib scripts called with %run, which don't call show()
2143 themselves, still have their plotting windows open.
2150 themselves, still have their plotting windows open.
2144
2151
2145 2005-01-05 Fernando Perez <fperez@colorado.edu>
2152 2005-01-05 Fernando Perez <fperez@colorado.edu>
2146
2153
2147 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2154 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2148 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2155 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2149
2156
2150 2004-12-19 Fernando Perez <fperez@colorado.edu>
2157 2004-12-19 Fernando Perez <fperez@colorado.edu>
2151
2158
2152 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2159 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2153 parent_runcode, which was an eyesore. The same result can be
2160 parent_runcode, which was an eyesore. The same result can be
2154 obtained with Python's regular superclass mechanisms.
2161 obtained with Python's regular superclass mechanisms.
2155
2162
2156 2004-12-17 Fernando Perez <fperez@colorado.edu>
2163 2004-12-17 Fernando Perez <fperez@colorado.edu>
2157
2164
2158 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2165 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2159 reported by Prabhu.
2166 reported by Prabhu.
2160 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2167 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2161 sys.stderr) instead of explicitly calling sys.stderr. This helps
2168 sys.stderr) instead of explicitly calling sys.stderr. This helps
2162 maintain our I/O abstractions clean, for future GUI embeddings.
2169 maintain our I/O abstractions clean, for future GUI embeddings.
2163
2170
2164 * IPython/genutils.py (info): added new utility for sys.stderr
2171 * IPython/genutils.py (info): added new utility for sys.stderr
2165 unified info message handling (thin wrapper around warn()).
2172 unified info message handling (thin wrapper around warn()).
2166
2173
2167 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2174 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2168 composite (dotted) names on verbose exceptions.
2175 composite (dotted) names on verbose exceptions.
2169 (VerboseTB.nullrepr): harden against another kind of errors which
2176 (VerboseTB.nullrepr): harden against another kind of errors which
2170 Python's inspect module can trigger, and which were crashing
2177 Python's inspect module can trigger, and which were crashing
2171 IPython. Thanks to a report by Marco Lombardi
2178 IPython. Thanks to a report by Marco Lombardi
2172 <mlombard-AT-ma010192.hq.eso.org>.
2179 <mlombard-AT-ma010192.hq.eso.org>.
2173
2180
2174 2004-12-13 *** Released version 0.6.6
2181 2004-12-13 *** Released version 0.6.6
2175
2182
2176 2004-12-12 Fernando Perez <fperez@colorado.edu>
2183 2004-12-12 Fernando Perez <fperez@colorado.edu>
2177
2184
2178 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2185 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2179 generated by pygtk upon initialization if it was built without
2186 generated by pygtk upon initialization if it was built without
2180 threads (for matplotlib users). After a crash reported by
2187 threads (for matplotlib users). After a crash reported by
2181 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2188 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2182
2189
2183 * IPython/ipmaker.py (make_IPython): fix small bug in the
2190 * IPython/ipmaker.py (make_IPython): fix small bug in the
2184 import_some parameter for multiple imports.
2191 import_some parameter for multiple imports.
2185
2192
2186 * IPython/iplib.py (ipmagic): simplified the interface of
2193 * IPython/iplib.py (ipmagic): simplified the interface of
2187 ipmagic() to take a single string argument, just as it would be
2194 ipmagic() to take a single string argument, just as it would be
2188 typed at the IPython cmd line.
2195 typed at the IPython cmd line.
2189 (ipalias): Added new ipalias() with an interface identical to
2196 (ipalias): Added new ipalias() with an interface identical to
2190 ipmagic(). This completes exposing a pure python interface to the
2197 ipmagic(). This completes exposing a pure python interface to the
2191 alias and magic system, which can be used in loops or more complex
2198 alias and magic system, which can be used in loops or more complex
2192 code where IPython's automatic line mangling is not active.
2199 code where IPython's automatic line mangling is not active.
2193
2200
2194 * IPython/genutils.py (timing): changed interface of timing to
2201 * IPython/genutils.py (timing): changed interface of timing to
2195 simply run code once, which is the most common case. timings()
2202 simply run code once, which is the most common case. timings()
2196 remains unchanged, for the cases where you want multiple runs.
2203 remains unchanged, for the cases where you want multiple runs.
2197
2204
2198 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2205 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2199 bug where Python2.2 crashes with exec'ing code which does not end
2206 bug where Python2.2 crashes with exec'ing code which does not end
2200 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2207 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2201 before.
2208 before.
2202
2209
2203 2004-12-10 Fernando Perez <fperez@colorado.edu>
2210 2004-12-10 Fernando Perez <fperez@colorado.edu>
2204
2211
2205 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2212 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2206 -t to -T, to accomodate the new -t flag in %run (the %run and
2213 -t to -T, to accomodate the new -t flag in %run (the %run and
2207 %prun options are kind of intermixed, and it's not easy to change
2214 %prun options are kind of intermixed, and it's not easy to change
2208 this with the limitations of python's getopt).
2215 this with the limitations of python's getopt).
2209
2216
2210 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2217 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2211 the execution of scripts. It's not as fine-tuned as timeit.py,
2218 the execution of scripts. It's not as fine-tuned as timeit.py,
2212 but it works from inside ipython (and under 2.2, which lacks
2219 but it works from inside ipython (and under 2.2, which lacks
2213 timeit.py). Optionally a number of runs > 1 can be given for
2220 timeit.py). Optionally a number of runs > 1 can be given for
2214 timing very short-running code.
2221 timing very short-running code.
2215
2222
2216 * IPython/genutils.py (uniq_stable): new routine which returns a
2223 * IPython/genutils.py (uniq_stable): new routine which returns a
2217 list of unique elements in any iterable, but in stable order of
2224 list of unique elements in any iterable, but in stable order of
2218 appearance. I needed this for the ultraTB fixes, and it's a handy
2225 appearance. I needed this for the ultraTB fixes, and it's a handy
2219 utility.
2226 utility.
2220
2227
2221 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2228 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2222 dotted names in Verbose exceptions. This had been broken since
2229 dotted names in Verbose exceptions. This had been broken since
2223 the very start, now x.y will properly be printed in a Verbose
2230 the very start, now x.y will properly be printed in a Verbose
2224 traceback, instead of x being shown and y appearing always as an
2231 traceback, instead of x being shown and y appearing always as an
2225 'undefined global'. Getting this to work was a bit tricky,
2232 'undefined global'. Getting this to work was a bit tricky,
2226 because by default python tokenizers are stateless. Saved by
2233 because by default python tokenizers are stateless. Saved by
2227 python's ability to easily add a bit of state to an arbitrary
2234 python's ability to easily add a bit of state to an arbitrary
2228 function (without needing to build a full-blown callable object).
2235 function (without needing to build a full-blown callable object).
2229
2236
2230 Also big cleanup of this code, which had horrendous runtime
2237 Also big cleanup of this code, which had horrendous runtime
2231 lookups of zillions of attributes for colorization. Moved all
2238 lookups of zillions of attributes for colorization. Moved all
2232 this code into a few templates, which make it cleaner and quicker.
2239 this code into a few templates, which make it cleaner and quicker.
2233
2240
2234 Printout quality was also improved for Verbose exceptions: one
2241 Printout quality was also improved for Verbose exceptions: one
2235 variable per line, and memory addresses are printed (this can be
2242 variable per line, and memory addresses are printed (this can be
2236 quite handy in nasty debugging situations, which is what Verbose
2243 quite handy in nasty debugging situations, which is what Verbose
2237 is for).
2244 is for).
2238
2245
2239 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2246 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2240 the command line as scripts to be loaded by embedded instances.
2247 the command line as scripts to be loaded by embedded instances.
2241 Doing so has the potential for an infinite recursion if there are
2248 Doing so has the potential for an infinite recursion if there are
2242 exceptions thrown in the process. This fixes a strange crash
2249 exceptions thrown in the process. This fixes a strange crash
2243 reported by Philippe MULLER <muller-AT-irit.fr>.
2250 reported by Philippe MULLER <muller-AT-irit.fr>.
2244
2251
2245 2004-12-09 Fernando Perez <fperez@colorado.edu>
2252 2004-12-09 Fernando Perez <fperez@colorado.edu>
2246
2253
2247 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2254 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2248 to reflect new names in matplotlib, which now expose the
2255 to reflect new names in matplotlib, which now expose the
2249 matlab-compatible interface via a pylab module instead of the
2256 matlab-compatible interface via a pylab module instead of the
2250 'matlab' name. The new code is backwards compatible, so users of
2257 'matlab' name. The new code is backwards compatible, so users of
2251 all matplotlib versions are OK. Patch by J. Hunter.
2258 all matplotlib versions are OK. Patch by J. Hunter.
2252
2259
2253 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2260 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2254 of __init__ docstrings for instances (class docstrings are already
2261 of __init__ docstrings for instances (class docstrings are already
2255 automatically printed). Instances with customized docstrings
2262 automatically printed). Instances with customized docstrings
2256 (indep. of the class) are also recognized and all 3 separate
2263 (indep. of the class) are also recognized and all 3 separate
2257 docstrings are printed (instance, class, constructor). After some
2264 docstrings are printed (instance, class, constructor). After some
2258 comments/suggestions by J. Hunter.
2265 comments/suggestions by J. Hunter.
2259
2266
2260 2004-12-05 Fernando Perez <fperez@colorado.edu>
2267 2004-12-05 Fernando Perez <fperez@colorado.edu>
2261
2268
2262 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2269 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2263 warnings when tab-completion fails and triggers an exception.
2270 warnings when tab-completion fails and triggers an exception.
2264
2271
2265 2004-12-03 Fernando Perez <fperez@colorado.edu>
2272 2004-12-03 Fernando Perez <fperez@colorado.edu>
2266
2273
2267 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2274 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2268 be triggered when using 'run -p'. An incorrect option flag was
2275 be triggered when using 'run -p'. An incorrect option flag was
2269 being set ('d' instead of 'D').
2276 being set ('d' instead of 'D').
2270 (manpage): fix missing escaped \- sign.
2277 (manpage): fix missing escaped \- sign.
2271
2278
2272 2004-11-30 *** Released version 0.6.5
2279 2004-11-30 *** Released version 0.6.5
2273
2280
2274 2004-11-30 Fernando Perez <fperez@colorado.edu>
2281 2004-11-30 Fernando Perez <fperez@colorado.edu>
2275
2282
2276 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2283 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2277 setting with -d option.
2284 setting with -d option.
2278
2285
2279 * setup.py (docfiles): Fix problem where the doc glob I was using
2286 * setup.py (docfiles): Fix problem where the doc glob I was using
2280 was COMPLETELY BROKEN. It was giving the right files by pure
2287 was COMPLETELY BROKEN. It was giving the right files by pure
2281 accident, but failed once I tried to include ipython.el. Note:
2288 accident, but failed once I tried to include ipython.el. Note:
2282 glob() does NOT allow you to do exclusion on multiple endings!
2289 glob() does NOT allow you to do exclusion on multiple endings!
2283
2290
2284 2004-11-29 Fernando Perez <fperez@colorado.edu>
2291 2004-11-29 Fernando Perez <fperez@colorado.edu>
2285
2292
2286 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2293 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2287 the manpage as the source. Better formatting & consistency.
2294 the manpage as the source. Better formatting & consistency.
2288
2295
2289 * IPython/Magic.py (magic_run): Added new -d option, to run
2296 * IPython/Magic.py (magic_run): Added new -d option, to run
2290 scripts under the control of the python pdb debugger. Note that
2297 scripts under the control of the python pdb debugger. Note that
2291 this required changing the %prun option -d to -D, to avoid a clash
2298 this required changing the %prun option -d to -D, to avoid a clash
2292 (since %run must pass options to %prun, and getopt is too dumb to
2299 (since %run must pass options to %prun, and getopt is too dumb to
2293 handle options with string values with embedded spaces). Thanks
2300 handle options with string values with embedded spaces). Thanks
2294 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2301 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2295 (magic_who_ls): added type matching to %who and %whos, so that one
2302 (magic_who_ls): added type matching to %who and %whos, so that one
2296 can filter their output to only include variables of certain
2303 can filter their output to only include variables of certain
2297 types. Another suggestion by Matthew.
2304 types. Another suggestion by Matthew.
2298 (magic_whos): Added memory summaries in kb and Mb for arrays.
2305 (magic_whos): Added memory summaries in kb and Mb for arrays.
2299 (magic_who): Improve formatting (break lines every 9 vars).
2306 (magic_who): Improve formatting (break lines every 9 vars).
2300
2307
2301 2004-11-28 Fernando Perez <fperez@colorado.edu>
2308 2004-11-28 Fernando Perez <fperez@colorado.edu>
2302
2309
2303 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2310 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2304 cache when empty lines were present.
2311 cache when empty lines were present.
2305
2312
2306 2004-11-24 Fernando Perez <fperez@colorado.edu>
2313 2004-11-24 Fernando Perez <fperez@colorado.edu>
2307
2314
2308 * IPython/usage.py (__doc__): document the re-activated threading
2315 * IPython/usage.py (__doc__): document the re-activated threading
2309 options for WX and GTK.
2316 options for WX and GTK.
2310
2317
2311 2004-11-23 Fernando Perez <fperez@colorado.edu>
2318 2004-11-23 Fernando Perez <fperez@colorado.edu>
2312
2319
2313 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2320 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2314 the -wthread and -gthread options, along with a new -tk one to try
2321 the -wthread and -gthread options, along with a new -tk one to try
2315 and coordinate Tk threading with wx/gtk. The tk support is very
2322 and coordinate Tk threading with wx/gtk. The tk support is very
2316 platform dependent, since it seems to require Tcl and Tk to be
2323 platform dependent, since it seems to require Tcl and Tk to be
2317 built with threads (Fedora1/2 appears NOT to have it, but in
2324 built with threads (Fedora1/2 appears NOT to have it, but in
2318 Prabhu's Debian boxes it works OK). But even with some Tk
2325 Prabhu's Debian boxes it works OK). But even with some Tk
2319 limitations, this is a great improvement.
2326 limitations, this is a great improvement.
2320
2327
2321 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2328 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2322 info in user prompts. Patch by Prabhu.
2329 info in user prompts. Patch by Prabhu.
2323
2330
2324 2004-11-18 Fernando Perez <fperez@colorado.edu>
2331 2004-11-18 Fernando Perez <fperez@colorado.edu>
2325
2332
2326 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2333 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2327 EOFErrors and bail, to avoid infinite loops if a non-terminating
2334 EOFErrors and bail, to avoid infinite loops if a non-terminating
2328 file is fed into ipython. Patch submitted in issue 19 by user,
2335 file is fed into ipython. Patch submitted in issue 19 by user,
2329 many thanks.
2336 many thanks.
2330
2337
2331 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2338 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2332 autoquote/parens in continuation prompts, which can cause lots of
2339 autoquote/parens in continuation prompts, which can cause lots of
2333 problems. Closes roundup issue 20.
2340 problems. Closes roundup issue 20.
2334
2341
2335 2004-11-17 Fernando Perez <fperez@colorado.edu>
2342 2004-11-17 Fernando Perez <fperez@colorado.edu>
2336
2343
2337 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2344 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2338 reported as debian bug #280505. I'm not sure my local changelog
2345 reported as debian bug #280505. I'm not sure my local changelog
2339 entry has the proper debian format (Jack?).
2346 entry has the proper debian format (Jack?).
2340
2347
2341 2004-11-08 *** Released version 0.6.4
2348 2004-11-08 *** Released version 0.6.4
2342
2349
2343 2004-11-08 Fernando Perez <fperez@colorado.edu>
2350 2004-11-08 Fernando Perez <fperez@colorado.edu>
2344
2351
2345 * IPython/iplib.py (init_readline): Fix exit message for Windows
2352 * IPython/iplib.py (init_readline): Fix exit message for Windows
2346 when readline is active. Thanks to a report by Eric Jones
2353 when readline is active. Thanks to a report by Eric Jones
2347 <eric-AT-enthought.com>.
2354 <eric-AT-enthought.com>.
2348
2355
2349 2004-11-07 Fernando Perez <fperez@colorado.edu>
2356 2004-11-07 Fernando Perez <fperez@colorado.edu>
2350
2357
2351 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2358 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2352 sometimes seen by win2k/cygwin users.
2359 sometimes seen by win2k/cygwin users.
2353
2360
2354 2004-11-06 Fernando Perez <fperez@colorado.edu>
2361 2004-11-06 Fernando Perez <fperez@colorado.edu>
2355
2362
2356 * IPython/iplib.py (interact): Change the handling of %Exit from
2363 * IPython/iplib.py (interact): Change the handling of %Exit from
2357 trying to propagate a SystemExit to an internal ipython flag.
2364 trying to propagate a SystemExit to an internal ipython flag.
2358 This is less elegant than using Python's exception mechanism, but
2365 This is less elegant than using Python's exception mechanism, but
2359 I can't get that to work reliably with threads, so under -pylab
2366 I can't get that to work reliably with threads, so under -pylab
2360 %Exit was hanging IPython. Cross-thread exception handling is
2367 %Exit was hanging IPython. Cross-thread exception handling is
2361 really a bitch. Thaks to a bug report by Stephen Walton
2368 really a bitch. Thaks to a bug report by Stephen Walton
2362 <stephen.walton-AT-csun.edu>.
2369 <stephen.walton-AT-csun.edu>.
2363
2370
2364 2004-11-04 Fernando Perez <fperez@colorado.edu>
2371 2004-11-04 Fernando Perez <fperez@colorado.edu>
2365
2372
2366 * IPython/iplib.py (raw_input_original): store a pointer to the
2373 * IPython/iplib.py (raw_input_original): store a pointer to the
2367 true raw_input to harden against code which can modify it
2374 true raw_input to harden against code which can modify it
2368 (wx.py.PyShell does this and would otherwise crash ipython).
2375 (wx.py.PyShell does this and would otherwise crash ipython).
2369 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2376 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2370
2377
2371 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2378 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2372 Ctrl-C problem, which does not mess up the input line.
2379 Ctrl-C problem, which does not mess up the input line.
2373
2380
2374 2004-11-03 Fernando Perez <fperez@colorado.edu>
2381 2004-11-03 Fernando Perez <fperez@colorado.edu>
2375
2382
2376 * IPython/Release.py: Changed licensing to BSD, in all files.
2383 * IPython/Release.py: Changed licensing to BSD, in all files.
2377 (name): lowercase name for tarball/RPM release.
2384 (name): lowercase name for tarball/RPM release.
2378
2385
2379 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2386 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2380 use throughout ipython.
2387 use throughout ipython.
2381
2388
2382 * IPython/Magic.py (Magic._ofind): Switch to using the new
2389 * IPython/Magic.py (Magic._ofind): Switch to using the new
2383 OInspect.getdoc() function.
2390 OInspect.getdoc() function.
2384
2391
2385 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2392 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2386 of the line currently being canceled via Ctrl-C. It's extremely
2393 of the line currently being canceled via Ctrl-C. It's extremely
2387 ugly, but I don't know how to do it better (the problem is one of
2394 ugly, but I don't know how to do it better (the problem is one of
2388 handling cross-thread exceptions).
2395 handling cross-thread exceptions).
2389
2396
2390 2004-10-28 Fernando Perez <fperez@colorado.edu>
2397 2004-10-28 Fernando Perez <fperez@colorado.edu>
2391
2398
2392 * IPython/Shell.py (signal_handler): add signal handlers to trap
2399 * IPython/Shell.py (signal_handler): add signal handlers to trap
2393 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2400 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2394 report by Francesc Alted.
2401 report by Francesc Alted.
2395
2402
2396 2004-10-21 Fernando Perez <fperez@colorado.edu>
2403 2004-10-21 Fernando Perez <fperez@colorado.edu>
2397
2404
2398 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2405 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2399 to % for pysh syntax extensions.
2406 to % for pysh syntax extensions.
2400
2407
2401 2004-10-09 Fernando Perez <fperez@colorado.edu>
2408 2004-10-09 Fernando Perez <fperez@colorado.edu>
2402
2409
2403 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2410 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2404 arrays to print a more useful summary, without calling str(arr).
2411 arrays to print a more useful summary, without calling str(arr).
2405 This avoids the problem of extremely lengthy computations which
2412 This avoids the problem of extremely lengthy computations which
2406 occur if arr is large, and appear to the user as a system lockup
2413 occur if arr is large, and appear to the user as a system lockup
2407 with 100% cpu activity. After a suggestion by Kristian Sandberg
2414 with 100% cpu activity. After a suggestion by Kristian Sandberg
2408 <Kristian.Sandberg@colorado.edu>.
2415 <Kristian.Sandberg@colorado.edu>.
2409 (Magic.__init__): fix bug in global magic escapes not being
2416 (Magic.__init__): fix bug in global magic escapes not being
2410 correctly set.
2417 correctly set.
2411
2418
2412 2004-10-08 Fernando Perez <fperez@colorado.edu>
2419 2004-10-08 Fernando Perez <fperez@colorado.edu>
2413
2420
2414 * IPython/Magic.py (__license__): change to absolute imports of
2421 * IPython/Magic.py (__license__): change to absolute imports of
2415 ipython's own internal packages, to start adapting to the absolute
2422 ipython's own internal packages, to start adapting to the absolute
2416 import requirement of PEP-328.
2423 import requirement of PEP-328.
2417
2424
2418 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2425 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2419 files, and standardize author/license marks through the Release
2426 files, and standardize author/license marks through the Release
2420 module instead of having per/file stuff (except for files with
2427 module instead of having per/file stuff (except for files with
2421 particular licenses, like the MIT/PSF-licensed codes).
2428 particular licenses, like the MIT/PSF-licensed codes).
2422
2429
2423 * IPython/Debugger.py: remove dead code for python 2.1
2430 * IPython/Debugger.py: remove dead code for python 2.1
2424
2431
2425 2004-10-04 Fernando Perez <fperez@colorado.edu>
2432 2004-10-04 Fernando Perez <fperez@colorado.edu>
2426
2433
2427 * IPython/iplib.py (ipmagic): New function for accessing magics
2434 * IPython/iplib.py (ipmagic): New function for accessing magics
2428 via a normal python function call.
2435 via a normal python function call.
2429
2436
2430 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2437 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2431 from '@' to '%', to accomodate the new @decorator syntax of python
2438 from '@' to '%', to accomodate the new @decorator syntax of python
2432 2.4.
2439 2.4.
2433
2440
2434 2004-09-29 Fernando Perez <fperez@colorado.edu>
2441 2004-09-29 Fernando Perez <fperez@colorado.edu>
2435
2442
2436 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2443 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2437 matplotlib.use to prevent running scripts which try to switch
2444 matplotlib.use to prevent running scripts which try to switch
2438 interactive backends from within ipython. This will just crash
2445 interactive backends from within ipython. This will just crash
2439 the python interpreter, so we can't allow it (but a detailed error
2446 the python interpreter, so we can't allow it (but a detailed error
2440 is given to the user).
2447 is given to the user).
2441
2448
2442 2004-09-28 Fernando Perez <fperez@colorado.edu>
2449 2004-09-28 Fernando Perez <fperez@colorado.edu>
2443
2450
2444 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2451 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2445 matplotlib-related fixes so that using @run with non-matplotlib
2452 matplotlib-related fixes so that using @run with non-matplotlib
2446 scripts doesn't pop up spurious plot windows. This requires
2453 scripts doesn't pop up spurious plot windows. This requires
2447 matplotlib >= 0.63, where I had to make some changes as well.
2454 matplotlib >= 0.63, where I had to make some changes as well.
2448
2455
2449 * IPython/ipmaker.py (make_IPython): update version requirement to
2456 * IPython/ipmaker.py (make_IPython): update version requirement to
2450 python 2.2.
2457 python 2.2.
2451
2458
2452 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2459 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2453 banner arg for embedded customization.
2460 banner arg for embedded customization.
2454
2461
2455 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2462 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2456 explicit uses of __IP as the IPython's instance name. Now things
2463 explicit uses of __IP as the IPython's instance name. Now things
2457 are properly handled via the shell.name value. The actual code
2464 are properly handled via the shell.name value. The actual code
2458 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2465 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2459 is much better than before. I'll clean things completely when the
2466 is much better than before. I'll clean things completely when the
2460 magic stuff gets a real overhaul.
2467 magic stuff gets a real overhaul.
2461
2468
2462 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2469 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2463 minor changes to debian dir.
2470 minor changes to debian dir.
2464
2471
2465 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2472 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2466 pointer to the shell itself in the interactive namespace even when
2473 pointer to the shell itself in the interactive namespace even when
2467 a user-supplied dict is provided. This is needed for embedding
2474 a user-supplied dict is provided. This is needed for embedding
2468 purposes (found by tests with Michel Sanner).
2475 purposes (found by tests with Michel Sanner).
2469
2476
2470 2004-09-27 Fernando Perez <fperez@colorado.edu>
2477 2004-09-27 Fernando Perez <fperez@colorado.edu>
2471
2478
2472 * IPython/UserConfig/ipythonrc: remove []{} from
2479 * IPython/UserConfig/ipythonrc: remove []{} from
2473 readline_remove_delims, so that things like [modname.<TAB> do
2480 readline_remove_delims, so that things like [modname.<TAB> do
2474 proper completion. This disables [].TAB, but that's a less common
2481 proper completion. This disables [].TAB, but that's a less common
2475 case than module names in list comprehensions, for example.
2482 case than module names in list comprehensions, for example.
2476 Thanks to a report by Andrea Riciputi.
2483 Thanks to a report by Andrea Riciputi.
2477
2484
2478 2004-09-09 Fernando Perez <fperez@colorado.edu>
2485 2004-09-09 Fernando Perez <fperez@colorado.edu>
2479
2486
2480 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2487 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2481 blocking problems in win32 and osx. Fix by John.
2488 blocking problems in win32 and osx. Fix by John.
2482
2489
2483 2004-09-08 Fernando Perez <fperez@colorado.edu>
2490 2004-09-08 Fernando Perez <fperez@colorado.edu>
2484
2491
2485 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2492 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2486 for Win32 and OSX. Fix by John Hunter.
2493 for Win32 and OSX. Fix by John Hunter.
2487
2494
2488 2004-08-30 *** Released version 0.6.3
2495 2004-08-30 *** Released version 0.6.3
2489
2496
2490 2004-08-30 Fernando Perez <fperez@colorado.edu>
2497 2004-08-30 Fernando Perez <fperez@colorado.edu>
2491
2498
2492 * setup.py (isfile): Add manpages to list of dependent files to be
2499 * setup.py (isfile): Add manpages to list of dependent files to be
2493 updated.
2500 updated.
2494
2501
2495 2004-08-27 Fernando Perez <fperez@colorado.edu>
2502 2004-08-27 Fernando Perez <fperez@colorado.edu>
2496
2503
2497 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2504 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2498 for now. They don't really work with standalone WX/GTK code
2505 for now. They don't really work with standalone WX/GTK code
2499 (though matplotlib IS working fine with both of those backends).
2506 (though matplotlib IS working fine with both of those backends).
2500 This will neeed much more testing. I disabled most things with
2507 This will neeed much more testing. I disabled most things with
2501 comments, so turning it back on later should be pretty easy.
2508 comments, so turning it back on later should be pretty easy.
2502
2509
2503 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2510 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2504 autocalling of expressions like r'foo', by modifying the line
2511 autocalling of expressions like r'foo', by modifying the line
2505 split regexp. Closes
2512 split regexp. Closes
2506 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2513 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2507 Riley <ipythonbugs-AT-sabi.net>.
2514 Riley <ipythonbugs-AT-sabi.net>.
2508 (InteractiveShell.mainloop): honor --nobanner with banner
2515 (InteractiveShell.mainloop): honor --nobanner with banner
2509 extensions.
2516 extensions.
2510
2517
2511 * IPython/Shell.py: Significant refactoring of all classes, so
2518 * IPython/Shell.py: Significant refactoring of all classes, so
2512 that we can really support ALL matplotlib backends and threading
2519 that we can really support ALL matplotlib backends and threading
2513 models (John spotted a bug with Tk which required this). Now we
2520 models (John spotted a bug with Tk which required this). Now we
2514 should support single-threaded, WX-threads and GTK-threads, both
2521 should support single-threaded, WX-threads and GTK-threads, both
2515 for generic code and for matplotlib.
2522 for generic code and for matplotlib.
2516
2523
2517 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2524 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2518 -pylab, to simplify things for users. Will also remove the pylab
2525 -pylab, to simplify things for users. Will also remove the pylab
2519 profile, since now all of matplotlib configuration is directly
2526 profile, since now all of matplotlib configuration is directly
2520 handled here. This also reduces startup time.
2527 handled here. This also reduces startup time.
2521
2528
2522 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2529 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2523 shell wasn't being correctly called. Also in IPShellWX.
2530 shell wasn't being correctly called. Also in IPShellWX.
2524
2531
2525 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2532 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2526 fine-tune banner.
2533 fine-tune banner.
2527
2534
2528 * IPython/numutils.py (spike): Deprecate these spike functions,
2535 * IPython/numutils.py (spike): Deprecate these spike functions,
2529 delete (long deprecated) gnuplot_exec handler.
2536 delete (long deprecated) gnuplot_exec handler.
2530
2537
2531 2004-08-26 Fernando Perez <fperez@colorado.edu>
2538 2004-08-26 Fernando Perez <fperez@colorado.edu>
2532
2539
2533 * ipython.1: Update for threading options, plus some others which
2540 * ipython.1: Update for threading options, plus some others which
2534 were missing.
2541 were missing.
2535
2542
2536 * IPython/ipmaker.py (__call__): Added -wthread option for
2543 * IPython/ipmaker.py (__call__): Added -wthread option for
2537 wxpython thread handling. Make sure threading options are only
2544 wxpython thread handling. Make sure threading options are only
2538 valid at the command line.
2545 valid at the command line.
2539
2546
2540 * scripts/ipython: moved shell selection into a factory function
2547 * scripts/ipython: moved shell selection into a factory function
2541 in Shell.py, to keep the starter script to a minimum.
2548 in Shell.py, to keep the starter script to a minimum.
2542
2549
2543 2004-08-25 Fernando Perez <fperez@colorado.edu>
2550 2004-08-25 Fernando Perez <fperez@colorado.edu>
2544
2551
2545 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2552 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2546 John. Along with some recent changes he made to matplotlib, the
2553 John. Along with some recent changes he made to matplotlib, the
2547 next versions of both systems should work very well together.
2554 next versions of both systems should work very well together.
2548
2555
2549 2004-08-24 Fernando Perez <fperez@colorado.edu>
2556 2004-08-24 Fernando Perez <fperez@colorado.edu>
2550
2557
2551 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2558 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2552 tried to switch the profiling to using hotshot, but I'm getting
2559 tried to switch the profiling to using hotshot, but I'm getting
2553 strange errors from prof.runctx() there. I may be misreading the
2560 strange errors from prof.runctx() there. I may be misreading the
2554 docs, but it looks weird. For now the profiling code will
2561 docs, but it looks weird. For now the profiling code will
2555 continue to use the standard profiler.
2562 continue to use the standard profiler.
2556
2563
2557 2004-08-23 Fernando Perez <fperez@colorado.edu>
2564 2004-08-23 Fernando Perez <fperez@colorado.edu>
2558
2565
2559 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2566 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2560 threaded shell, by John Hunter. It's not quite ready yet, but
2567 threaded shell, by John Hunter. It's not quite ready yet, but
2561 close.
2568 close.
2562
2569
2563 2004-08-22 Fernando Perez <fperez@colorado.edu>
2570 2004-08-22 Fernando Perez <fperez@colorado.edu>
2564
2571
2565 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2572 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2566 in Magic and ultraTB.
2573 in Magic and ultraTB.
2567
2574
2568 * ipython.1: document threading options in manpage.
2575 * ipython.1: document threading options in manpage.
2569
2576
2570 * scripts/ipython: Changed name of -thread option to -gthread,
2577 * scripts/ipython: Changed name of -thread option to -gthread,
2571 since this is GTK specific. I want to leave the door open for a
2578 since this is GTK specific. I want to leave the door open for a
2572 -wthread option for WX, which will most likely be necessary. This
2579 -wthread option for WX, which will most likely be necessary. This
2573 change affects usage and ipmaker as well.
2580 change affects usage and ipmaker as well.
2574
2581
2575 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2582 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2576 handle the matplotlib shell issues. Code by John Hunter
2583 handle the matplotlib shell issues. Code by John Hunter
2577 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2584 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2578 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2585 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2579 broken (and disabled for end users) for now, but it puts the
2586 broken (and disabled for end users) for now, but it puts the
2580 infrastructure in place.
2587 infrastructure in place.
2581
2588
2582 2004-08-21 Fernando Perez <fperez@colorado.edu>
2589 2004-08-21 Fernando Perez <fperez@colorado.edu>
2583
2590
2584 * ipythonrc-pylab: Add matplotlib support.
2591 * ipythonrc-pylab: Add matplotlib support.
2585
2592
2586 * matplotlib_config.py: new files for matplotlib support, part of
2593 * matplotlib_config.py: new files for matplotlib support, part of
2587 the pylab profile.
2594 the pylab profile.
2588
2595
2589 * IPython/usage.py (__doc__): documented the threading options.
2596 * IPython/usage.py (__doc__): documented the threading options.
2590
2597
2591 2004-08-20 Fernando Perez <fperez@colorado.edu>
2598 2004-08-20 Fernando Perez <fperez@colorado.edu>
2592
2599
2593 * ipython: Modified the main calling routine to handle the -thread
2600 * ipython: Modified the main calling routine to handle the -thread
2594 and -mpthread options. This needs to be done as a top-level hack,
2601 and -mpthread options. This needs to be done as a top-level hack,
2595 because it determines which class to instantiate for IPython
2602 because it determines which class to instantiate for IPython
2596 itself.
2603 itself.
2597
2604
2598 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2605 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2599 classes to support multithreaded GTK operation without blocking,
2606 classes to support multithreaded GTK operation without blocking,
2600 and matplotlib with all backends. This is a lot of still very
2607 and matplotlib with all backends. This is a lot of still very
2601 experimental code, and threads are tricky. So it may still have a
2608 experimental code, and threads are tricky. So it may still have a
2602 few rough edges... This code owes a lot to
2609 few rough edges... This code owes a lot to
2603 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2610 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2604 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2611 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2605 to John Hunter for all the matplotlib work.
2612 to John Hunter for all the matplotlib work.
2606
2613
2607 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2614 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2608 options for gtk thread and matplotlib support.
2615 options for gtk thread and matplotlib support.
2609
2616
2610 2004-08-16 Fernando Perez <fperez@colorado.edu>
2617 2004-08-16 Fernando Perez <fperez@colorado.edu>
2611
2618
2612 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2619 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2613 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2620 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2614 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2621 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2615
2622
2616 2004-08-11 Fernando Perez <fperez@colorado.edu>
2623 2004-08-11 Fernando Perez <fperez@colorado.edu>
2617
2624
2618 * setup.py (isfile): Fix build so documentation gets updated for
2625 * setup.py (isfile): Fix build so documentation gets updated for
2619 rpms (it was only done for .tgz builds).
2626 rpms (it was only done for .tgz builds).
2620
2627
2621 2004-08-10 Fernando Perez <fperez@colorado.edu>
2628 2004-08-10 Fernando Perez <fperez@colorado.edu>
2622
2629
2623 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2630 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2624
2631
2625 * iplib.py : Silence syntax error exceptions in tab-completion.
2632 * iplib.py : Silence syntax error exceptions in tab-completion.
2626
2633
2627 2004-08-05 Fernando Perez <fperez@colorado.edu>
2634 2004-08-05 Fernando Perez <fperez@colorado.edu>
2628
2635
2629 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2636 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2630 'color off' mark for continuation prompts. This was causing long
2637 'color off' mark for continuation prompts. This was causing long
2631 continuation lines to mis-wrap.
2638 continuation lines to mis-wrap.
2632
2639
2633 2004-08-01 Fernando Perez <fperez@colorado.edu>
2640 2004-08-01 Fernando Perez <fperez@colorado.edu>
2634
2641
2635 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2642 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2636 for building ipython to be a parameter. All this is necessary
2643 for building ipython to be a parameter. All this is necessary
2637 right now to have a multithreaded version, but this insane
2644 right now to have a multithreaded version, but this insane
2638 non-design will be cleaned up soon. For now, it's a hack that
2645 non-design will be cleaned up soon. For now, it's a hack that
2639 works.
2646 works.
2640
2647
2641 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2648 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2642 args in various places. No bugs so far, but it's a dangerous
2649 args in various places. No bugs so far, but it's a dangerous
2643 practice.
2650 practice.
2644
2651
2645 2004-07-31 Fernando Perez <fperez@colorado.edu>
2652 2004-07-31 Fernando Perez <fperez@colorado.edu>
2646
2653
2647 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2654 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2648 fix completion of files with dots in their names under most
2655 fix completion of files with dots in their names under most
2649 profiles (pysh was OK because the completion order is different).
2656 profiles (pysh was OK because the completion order is different).
2650
2657
2651 2004-07-27 Fernando Perez <fperez@colorado.edu>
2658 2004-07-27 Fernando Perez <fperez@colorado.edu>
2652
2659
2653 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2660 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2654 keywords manually, b/c the one in keyword.py was removed in python
2661 keywords manually, b/c the one in keyword.py was removed in python
2655 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2662 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2656 This is NOT a bug under python 2.3 and earlier.
2663 This is NOT a bug under python 2.3 and earlier.
2657
2664
2658 2004-07-26 Fernando Perez <fperez@colorado.edu>
2665 2004-07-26 Fernando Perez <fperez@colorado.edu>
2659
2666
2660 * IPython/ultraTB.py (VerboseTB.text): Add another
2667 * IPython/ultraTB.py (VerboseTB.text): Add another
2661 linecache.checkcache() call to try to prevent inspect.py from
2668 linecache.checkcache() call to try to prevent inspect.py from
2662 crashing under python 2.3. I think this fixes
2669 crashing under python 2.3. I think this fixes
2663 http://www.scipy.net/roundup/ipython/issue17.
2670 http://www.scipy.net/roundup/ipython/issue17.
2664
2671
2665 2004-07-26 *** Released version 0.6.2
2672 2004-07-26 *** Released version 0.6.2
2666
2673
2667 2004-07-26 Fernando Perez <fperez@colorado.edu>
2674 2004-07-26 Fernando Perez <fperez@colorado.edu>
2668
2675
2669 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2676 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2670 fail for any number.
2677 fail for any number.
2671 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2678 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2672 empty bookmarks.
2679 empty bookmarks.
2673
2680
2674 2004-07-26 *** Released version 0.6.1
2681 2004-07-26 *** Released version 0.6.1
2675
2682
2676 2004-07-26 Fernando Perez <fperez@colorado.edu>
2683 2004-07-26 Fernando Perez <fperez@colorado.edu>
2677
2684
2678 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2685 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2679
2686
2680 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2687 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2681 escaping '()[]{}' in filenames.
2688 escaping '()[]{}' in filenames.
2682
2689
2683 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2690 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2684 Python 2.2 users who lack a proper shlex.split.
2691 Python 2.2 users who lack a proper shlex.split.
2685
2692
2686 2004-07-19 Fernando Perez <fperez@colorado.edu>
2693 2004-07-19 Fernando Perez <fperez@colorado.edu>
2687
2694
2688 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2695 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2689 for reading readline's init file. I follow the normal chain:
2696 for reading readline's init file. I follow the normal chain:
2690 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2697 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2691 report by Mike Heeter. This closes
2698 report by Mike Heeter. This closes
2692 http://www.scipy.net/roundup/ipython/issue16.
2699 http://www.scipy.net/roundup/ipython/issue16.
2693
2700
2694 2004-07-18 Fernando Perez <fperez@colorado.edu>
2701 2004-07-18 Fernando Perez <fperez@colorado.edu>
2695
2702
2696 * IPython/iplib.py (__init__): Add better handling of '\' under
2703 * IPython/iplib.py (__init__): Add better handling of '\' under
2697 Win32 for filenames. After a patch by Ville.
2704 Win32 for filenames. After a patch by Ville.
2698
2705
2699 2004-07-17 Fernando Perez <fperez@colorado.edu>
2706 2004-07-17 Fernando Perez <fperez@colorado.edu>
2700
2707
2701 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2708 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2702 autocalling would be triggered for 'foo is bar' if foo is
2709 autocalling would be triggered for 'foo is bar' if foo is
2703 callable. I also cleaned up the autocall detection code to use a
2710 callable. I also cleaned up the autocall detection code to use a
2704 regexp, which is faster. Bug reported by Alexander Schmolck.
2711 regexp, which is faster. Bug reported by Alexander Schmolck.
2705
2712
2706 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2713 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2707 '?' in them would confuse the help system. Reported by Alex
2714 '?' in them would confuse the help system. Reported by Alex
2708 Schmolck.
2715 Schmolck.
2709
2716
2710 2004-07-16 Fernando Perez <fperez@colorado.edu>
2717 2004-07-16 Fernando Perez <fperez@colorado.edu>
2711
2718
2712 * IPython/GnuplotInteractive.py (__all__): added plot2.
2719 * IPython/GnuplotInteractive.py (__all__): added plot2.
2713
2720
2714 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2721 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2715 plotting dictionaries, lists or tuples of 1d arrays.
2722 plotting dictionaries, lists or tuples of 1d arrays.
2716
2723
2717 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2724 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2718 optimizations.
2725 optimizations.
2719
2726
2720 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2727 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2721 the information which was there from Janko's original IPP code:
2728 the information which was there from Janko's original IPP code:
2722
2729
2723 03.05.99 20:53 porto.ifm.uni-kiel.de
2730 03.05.99 20:53 porto.ifm.uni-kiel.de
2724 --Started changelog.
2731 --Started changelog.
2725 --make clear do what it say it does
2732 --make clear do what it say it does
2726 --added pretty output of lines from inputcache
2733 --added pretty output of lines from inputcache
2727 --Made Logger a mixin class, simplifies handling of switches
2734 --Made Logger a mixin class, simplifies handling of switches
2728 --Added own completer class. .string<TAB> expands to last history
2735 --Added own completer class. .string<TAB> expands to last history
2729 line which starts with string. The new expansion is also present
2736 line which starts with string. The new expansion is also present
2730 with Ctrl-r from the readline library. But this shows, who this
2737 with Ctrl-r from the readline library. But this shows, who this
2731 can be done for other cases.
2738 can be done for other cases.
2732 --Added convention that all shell functions should accept a
2739 --Added convention that all shell functions should accept a
2733 parameter_string This opens the door for different behaviour for
2740 parameter_string This opens the door for different behaviour for
2734 each function. @cd is a good example of this.
2741 each function. @cd is a good example of this.
2735
2742
2736 04.05.99 12:12 porto.ifm.uni-kiel.de
2743 04.05.99 12:12 porto.ifm.uni-kiel.de
2737 --added logfile rotation
2744 --added logfile rotation
2738 --added new mainloop method which freezes first the namespace
2745 --added new mainloop method which freezes first the namespace
2739
2746
2740 07.05.99 21:24 porto.ifm.uni-kiel.de
2747 07.05.99 21:24 porto.ifm.uni-kiel.de
2741 --added the docreader classes. Now there is a help system.
2748 --added the docreader classes. Now there is a help system.
2742 -This is only a first try. Currently it's not easy to put new
2749 -This is only a first try. Currently it's not easy to put new
2743 stuff in the indices. But this is the way to go. Info would be
2750 stuff in the indices. But this is the way to go. Info would be
2744 better, but HTML is every where and not everybody has an info
2751 better, but HTML is every where and not everybody has an info
2745 system installed and it's not so easy to change html-docs to info.
2752 system installed and it's not so easy to change html-docs to info.
2746 --added global logfile option
2753 --added global logfile option
2747 --there is now a hook for object inspection method pinfo needs to
2754 --there is now a hook for object inspection method pinfo needs to
2748 be provided for this. Can be reached by two '??'.
2755 be provided for this. Can be reached by two '??'.
2749
2756
2750 08.05.99 20:51 porto.ifm.uni-kiel.de
2757 08.05.99 20:51 porto.ifm.uni-kiel.de
2751 --added a README
2758 --added a README
2752 --bug in rc file. Something has changed so functions in the rc
2759 --bug in rc file. Something has changed so functions in the rc
2753 file need to reference the shell and not self. Not clear if it's a
2760 file need to reference the shell and not self. Not clear if it's a
2754 bug or feature.
2761 bug or feature.
2755 --changed rc file for new behavior
2762 --changed rc file for new behavior
2756
2763
2757 2004-07-15 Fernando Perez <fperez@colorado.edu>
2764 2004-07-15 Fernando Perez <fperez@colorado.edu>
2758
2765
2759 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2766 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2760 cache was falling out of sync in bizarre manners when multi-line
2767 cache was falling out of sync in bizarre manners when multi-line
2761 input was present. Minor optimizations and cleanup.
2768 input was present. Minor optimizations and cleanup.
2762
2769
2763 (Logger): Remove old Changelog info for cleanup. This is the
2770 (Logger): Remove old Changelog info for cleanup. This is the
2764 information which was there from Janko's original code:
2771 information which was there from Janko's original code:
2765
2772
2766 Changes to Logger: - made the default log filename a parameter
2773 Changes to Logger: - made the default log filename a parameter
2767
2774
2768 - put a check for lines beginning with !@? in log(). Needed
2775 - put a check for lines beginning with !@? in log(). Needed
2769 (even if the handlers properly log their lines) for mid-session
2776 (even if the handlers properly log their lines) for mid-session
2770 logging activation to work properly. Without this, lines logged
2777 logging activation to work properly. Without this, lines logged
2771 in mid session, which get read from the cache, would end up
2778 in mid session, which get read from the cache, would end up
2772 'bare' (with !@? in the open) in the log. Now they are caught
2779 'bare' (with !@? in the open) in the log. Now they are caught
2773 and prepended with a #.
2780 and prepended with a #.
2774
2781
2775 * IPython/iplib.py (InteractiveShell.init_readline): added check
2782 * IPython/iplib.py (InteractiveShell.init_readline): added check
2776 in case MagicCompleter fails to be defined, so we don't crash.
2783 in case MagicCompleter fails to be defined, so we don't crash.
2777
2784
2778 2004-07-13 Fernando Perez <fperez@colorado.edu>
2785 2004-07-13 Fernando Perez <fperez@colorado.edu>
2779
2786
2780 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2787 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2781 of EPS if the requested filename ends in '.eps'.
2788 of EPS if the requested filename ends in '.eps'.
2782
2789
2783 2004-07-04 Fernando Perez <fperez@colorado.edu>
2790 2004-07-04 Fernando Perez <fperez@colorado.edu>
2784
2791
2785 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2792 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2786 escaping of quotes when calling the shell.
2793 escaping of quotes when calling the shell.
2787
2794
2788 2004-07-02 Fernando Perez <fperez@colorado.edu>
2795 2004-07-02 Fernando Perez <fperez@colorado.edu>
2789
2796
2790 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2797 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2791 gettext not working because we were clobbering '_'. Fixes
2798 gettext not working because we were clobbering '_'. Fixes
2792 http://www.scipy.net/roundup/ipython/issue6.
2799 http://www.scipy.net/roundup/ipython/issue6.
2793
2800
2794 2004-07-01 Fernando Perez <fperez@colorado.edu>
2801 2004-07-01 Fernando Perez <fperez@colorado.edu>
2795
2802
2796 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2803 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2797 into @cd. Patch by Ville.
2804 into @cd. Patch by Ville.
2798
2805
2799 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2806 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2800 new function to store things after ipmaker runs. Patch by Ville.
2807 new function to store things after ipmaker runs. Patch by Ville.
2801 Eventually this will go away once ipmaker is removed and the class
2808 Eventually this will go away once ipmaker is removed and the class
2802 gets cleaned up, but for now it's ok. Key functionality here is
2809 gets cleaned up, but for now it's ok. Key functionality here is
2803 the addition of the persistent storage mechanism, a dict for
2810 the addition of the persistent storage mechanism, a dict for
2804 keeping data across sessions (for now just bookmarks, but more can
2811 keeping data across sessions (for now just bookmarks, but more can
2805 be implemented later).
2812 be implemented later).
2806
2813
2807 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2814 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2808 persistent across sections. Patch by Ville, I modified it
2815 persistent across sections. Patch by Ville, I modified it
2809 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2816 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2810 added a '-l' option to list all bookmarks.
2817 added a '-l' option to list all bookmarks.
2811
2818
2812 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2819 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2813 center for cleanup. Registered with atexit.register(). I moved
2820 center for cleanup. Registered with atexit.register(). I moved
2814 here the old exit_cleanup(). After a patch by Ville.
2821 here the old exit_cleanup(). After a patch by Ville.
2815
2822
2816 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2823 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2817 characters in the hacked shlex_split for python 2.2.
2824 characters in the hacked shlex_split for python 2.2.
2818
2825
2819 * IPython/iplib.py (file_matches): more fixes to filenames with
2826 * IPython/iplib.py (file_matches): more fixes to filenames with
2820 whitespace in them. It's not perfect, but limitations in python's
2827 whitespace in them. It's not perfect, but limitations in python's
2821 readline make it impossible to go further.
2828 readline make it impossible to go further.
2822
2829
2823 2004-06-29 Fernando Perez <fperez@colorado.edu>
2830 2004-06-29 Fernando Perez <fperez@colorado.edu>
2824
2831
2825 * IPython/iplib.py (file_matches): escape whitespace correctly in
2832 * IPython/iplib.py (file_matches): escape whitespace correctly in
2826 filename completions. Bug reported by Ville.
2833 filename completions. Bug reported by Ville.
2827
2834
2828 2004-06-28 Fernando Perez <fperez@colorado.edu>
2835 2004-06-28 Fernando Perez <fperez@colorado.edu>
2829
2836
2830 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2837 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2831 the history file will be called 'history-PROFNAME' (or just
2838 the history file will be called 'history-PROFNAME' (or just
2832 'history' if no profile is loaded). I was getting annoyed at
2839 'history' if no profile is loaded). I was getting annoyed at
2833 getting my Numerical work history clobbered by pysh sessions.
2840 getting my Numerical work history clobbered by pysh sessions.
2834
2841
2835 * IPython/iplib.py (InteractiveShell.__init__): Internal
2842 * IPython/iplib.py (InteractiveShell.__init__): Internal
2836 getoutputerror() function so that we can honor the system_verbose
2843 getoutputerror() function so that we can honor the system_verbose
2837 flag for _all_ system calls. I also added escaping of #
2844 flag for _all_ system calls. I also added escaping of #
2838 characters here to avoid confusing Itpl.
2845 characters here to avoid confusing Itpl.
2839
2846
2840 * IPython/Magic.py (shlex_split): removed call to shell in
2847 * IPython/Magic.py (shlex_split): removed call to shell in
2841 parse_options and replaced it with shlex.split(). The annoying
2848 parse_options and replaced it with shlex.split(). The annoying
2842 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2849 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2843 to backport it from 2.3, with several frail hacks (the shlex
2850 to backport it from 2.3, with several frail hacks (the shlex
2844 module is rather limited in 2.2). Thanks to a suggestion by Ville
2851 module is rather limited in 2.2). Thanks to a suggestion by Ville
2845 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2852 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2846 problem.
2853 problem.
2847
2854
2848 (Magic.magic_system_verbose): new toggle to print the actual
2855 (Magic.magic_system_verbose): new toggle to print the actual
2849 system calls made by ipython. Mainly for debugging purposes.
2856 system calls made by ipython. Mainly for debugging purposes.
2850
2857
2851 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2858 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2852 doesn't support persistence. Reported (and fix suggested) by
2859 doesn't support persistence. Reported (and fix suggested) by
2853 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2860 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2854
2861
2855 2004-06-26 Fernando Perez <fperez@colorado.edu>
2862 2004-06-26 Fernando Perez <fperez@colorado.edu>
2856
2863
2857 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2864 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2858 continue prompts.
2865 continue prompts.
2859
2866
2860 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2867 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2861 function (basically a big docstring) and a few more things here to
2868 function (basically a big docstring) and a few more things here to
2862 speedup startup. pysh.py is now very lightweight. We want because
2869 speedup startup. pysh.py is now very lightweight. We want because
2863 it gets execfile'd, while InterpreterExec gets imported, so
2870 it gets execfile'd, while InterpreterExec gets imported, so
2864 byte-compilation saves time.
2871 byte-compilation saves time.
2865
2872
2866 2004-06-25 Fernando Perez <fperez@colorado.edu>
2873 2004-06-25 Fernando Perez <fperez@colorado.edu>
2867
2874
2868 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2875 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2869 -NUM', which was recently broken.
2876 -NUM', which was recently broken.
2870
2877
2871 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2878 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2872 in multi-line input (but not !!, which doesn't make sense there).
2879 in multi-line input (but not !!, which doesn't make sense there).
2873
2880
2874 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2881 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2875 It's just too useful, and people can turn it off in the less
2882 It's just too useful, and people can turn it off in the less
2876 common cases where it's a problem.
2883 common cases where it's a problem.
2877
2884
2878 2004-06-24 Fernando Perez <fperez@colorado.edu>
2885 2004-06-24 Fernando Perez <fperez@colorado.edu>
2879
2886
2880 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2887 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2881 special syntaxes (like alias calling) is now allied in multi-line
2888 special syntaxes (like alias calling) is now allied in multi-line
2882 input. This is still _very_ experimental, but it's necessary for
2889 input. This is still _very_ experimental, but it's necessary for
2883 efficient shell usage combining python looping syntax with system
2890 efficient shell usage combining python looping syntax with system
2884 calls. For now it's restricted to aliases, I don't think it
2891 calls. For now it's restricted to aliases, I don't think it
2885 really even makes sense to have this for magics.
2892 really even makes sense to have this for magics.
2886
2893
2887 2004-06-23 Fernando Perez <fperez@colorado.edu>
2894 2004-06-23 Fernando Perez <fperez@colorado.edu>
2888
2895
2889 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2896 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2890 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2897 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2891
2898
2892 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2899 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2893 extensions under Windows (after code sent by Gary Bishop). The
2900 extensions under Windows (after code sent by Gary Bishop). The
2894 extensions considered 'executable' are stored in IPython's rc
2901 extensions considered 'executable' are stored in IPython's rc
2895 structure as win_exec_ext.
2902 structure as win_exec_ext.
2896
2903
2897 * IPython/genutils.py (shell): new function, like system() but
2904 * IPython/genutils.py (shell): new function, like system() but
2898 without return value. Very useful for interactive shell work.
2905 without return value. Very useful for interactive shell work.
2899
2906
2900 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2907 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2901 delete aliases.
2908 delete aliases.
2902
2909
2903 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2910 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2904 sure that the alias table doesn't contain python keywords.
2911 sure that the alias table doesn't contain python keywords.
2905
2912
2906 2004-06-21 Fernando Perez <fperez@colorado.edu>
2913 2004-06-21 Fernando Perez <fperez@colorado.edu>
2907
2914
2908 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2915 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2909 non-existent items are found in $PATH. Reported by Thorsten.
2916 non-existent items are found in $PATH. Reported by Thorsten.
2910
2917
2911 2004-06-20 Fernando Perez <fperez@colorado.edu>
2918 2004-06-20 Fernando Perez <fperez@colorado.edu>
2912
2919
2913 * IPython/iplib.py (complete): modified the completer so that the
2920 * IPython/iplib.py (complete): modified the completer so that the
2914 order of priorities can be easily changed at runtime.
2921 order of priorities can be easily changed at runtime.
2915
2922
2916 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2923 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2917 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2924 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2918
2925
2919 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2926 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2920 expand Python variables prepended with $ in all system calls. The
2927 expand Python variables prepended with $ in all system calls. The
2921 same was done to InteractiveShell.handle_shell_escape. Now all
2928 same was done to InteractiveShell.handle_shell_escape. Now all
2922 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2929 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2923 expansion of python variables and expressions according to the
2930 expansion of python variables and expressions according to the
2924 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2931 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2925
2932
2926 Though PEP-215 has been rejected, a similar (but simpler) one
2933 Though PEP-215 has been rejected, a similar (but simpler) one
2927 seems like it will go into Python 2.4, PEP-292 -
2934 seems like it will go into Python 2.4, PEP-292 -
2928 http://www.python.org/peps/pep-0292.html.
2935 http://www.python.org/peps/pep-0292.html.
2929
2936
2930 I'll keep the full syntax of PEP-215, since IPython has since the
2937 I'll keep the full syntax of PEP-215, since IPython has since the
2931 start used Ka-Ping Yee's reference implementation discussed there
2938 start used Ka-Ping Yee's reference implementation discussed there
2932 (Itpl), and I actually like the powerful semantics it offers.
2939 (Itpl), and I actually like the powerful semantics it offers.
2933
2940
2934 In order to access normal shell variables, the $ has to be escaped
2941 In order to access normal shell variables, the $ has to be escaped
2935 via an extra $. For example:
2942 via an extra $. For example:
2936
2943
2937 In [7]: PATH='a python variable'
2944 In [7]: PATH='a python variable'
2938
2945
2939 In [8]: !echo $PATH
2946 In [8]: !echo $PATH
2940 a python variable
2947 a python variable
2941
2948
2942 In [9]: !echo $$PATH
2949 In [9]: !echo $$PATH
2943 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2950 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2944
2951
2945 (Magic.parse_options): escape $ so the shell doesn't evaluate
2952 (Magic.parse_options): escape $ so the shell doesn't evaluate
2946 things prematurely.
2953 things prematurely.
2947
2954
2948 * IPython/iplib.py (InteractiveShell.call_alias): added the
2955 * IPython/iplib.py (InteractiveShell.call_alias): added the
2949 ability for aliases to expand python variables via $.
2956 ability for aliases to expand python variables via $.
2950
2957
2951 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2958 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2952 system, now there's a @rehash/@rehashx pair of magics. These work
2959 system, now there's a @rehash/@rehashx pair of magics. These work
2953 like the csh rehash command, and can be invoked at any time. They
2960 like the csh rehash command, and can be invoked at any time. They
2954 build a table of aliases to everything in the user's $PATH
2961 build a table of aliases to everything in the user's $PATH
2955 (@rehash uses everything, @rehashx is slower but only adds
2962 (@rehash uses everything, @rehashx is slower but only adds
2956 executable files). With this, the pysh.py-based shell profile can
2963 executable files). With this, the pysh.py-based shell profile can
2957 now simply call rehash upon startup, and full access to all
2964 now simply call rehash upon startup, and full access to all
2958 programs in the user's path is obtained.
2965 programs in the user's path is obtained.
2959
2966
2960 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2967 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2961 functionality is now fully in place. I removed the old dynamic
2968 functionality is now fully in place. I removed the old dynamic
2962 code generation based approach, in favor of a much lighter one
2969 code generation based approach, in favor of a much lighter one
2963 based on a simple dict. The advantage is that this allows me to
2970 based on a simple dict. The advantage is that this allows me to
2964 now have thousands of aliases with negligible cost (unthinkable
2971 now have thousands of aliases with negligible cost (unthinkable
2965 with the old system).
2972 with the old system).
2966
2973
2967 2004-06-19 Fernando Perez <fperez@colorado.edu>
2974 2004-06-19 Fernando Perez <fperez@colorado.edu>
2968
2975
2969 * IPython/iplib.py (__init__): extended MagicCompleter class to
2976 * IPython/iplib.py (__init__): extended MagicCompleter class to
2970 also complete (last in priority) on user aliases.
2977 also complete (last in priority) on user aliases.
2971
2978
2972 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2979 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2973 call to eval.
2980 call to eval.
2974 (ItplNS.__init__): Added a new class which functions like Itpl,
2981 (ItplNS.__init__): Added a new class which functions like Itpl,
2975 but allows configuring the namespace for the evaluation to occur
2982 but allows configuring the namespace for the evaluation to occur
2976 in.
2983 in.
2977
2984
2978 2004-06-18 Fernando Perez <fperez@colorado.edu>
2985 2004-06-18 Fernando Perez <fperez@colorado.edu>
2979
2986
2980 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2987 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2981 better message when 'exit' or 'quit' are typed (a common newbie
2988 better message when 'exit' or 'quit' are typed (a common newbie
2982 confusion).
2989 confusion).
2983
2990
2984 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2991 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2985 check for Windows users.
2992 check for Windows users.
2986
2993
2987 * IPython/iplib.py (InteractiveShell.user_setup): removed
2994 * IPython/iplib.py (InteractiveShell.user_setup): removed
2988 disabling of colors for Windows. I'll test at runtime and issue a
2995 disabling of colors for Windows. I'll test at runtime and issue a
2989 warning if Gary's readline isn't found, as to nudge users to
2996 warning if Gary's readline isn't found, as to nudge users to
2990 download it.
2997 download it.
2991
2998
2992 2004-06-16 Fernando Perez <fperez@colorado.edu>
2999 2004-06-16 Fernando Perez <fperez@colorado.edu>
2993
3000
2994 * IPython/genutils.py (Stream.__init__): changed to print errors
3001 * IPython/genutils.py (Stream.__init__): changed to print errors
2995 to sys.stderr. I had a circular dependency here. Now it's
3002 to sys.stderr. I had a circular dependency here. Now it's
2996 possible to run ipython as IDLE's shell (consider this pre-alpha,
3003 possible to run ipython as IDLE's shell (consider this pre-alpha,
2997 since true stdout things end up in the starting terminal instead
3004 since true stdout things end up in the starting terminal instead
2998 of IDLE's out).
3005 of IDLE's out).
2999
3006
3000 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3007 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3001 users who haven't # updated their prompt_in2 definitions. Remove
3008 users who haven't # updated their prompt_in2 definitions. Remove
3002 eventually.
3009 eventually.
3003 (multiple_replace): added credit to original ASPN recipe.
3010 (multiple_replace): added credit to original ASPN recipe.
3004
3011
3005 2004-06-15 Fernando Perez <fperez@colorado.edu>
3012 2004-06-15 Fernando Perez <fperez@colorado.edu>
3006
3013
3007 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3014 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3008 list of auto-defined aliases.
3015 list of auto-defined aliases.
3009
3016
3010 2004-06-13 Fernando Perez <fperez@colorado.edu>
3017 2004-06-13 Fernando Perez <fperez@colorado.edu>
3011
3018
3012 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3019 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3013 install was really requested (so setup.py can be used for other
3020 install was really requested (so setup.py can be used for other
3014 things under Windows).
3021 things under Windows).
3015
3022
3016 2004-06-10 Fernando Perez <fperez@colorado.edu>
3023 2004-06-10 Fernando Perez <fperez@colorado.edu>
3017
3024
3018 * IPython/Logger.py (Logger.create_log): Manually remove any old
3025 * IPython/Logger.py (Logger.create_log): Manually remove any old
3019 backup, since os.remove may fail under Windows. Fixes bug
3026 backup, since os.remove may fail under Windows. Fixes bug
3020 reported by Thorsten.
3027 reported by Thorsten.
3021
3028
3022 2004-06-09 Fernando Perez <fperez@colorado.edu>
3029 2004-06-09 Fernando Perez <fperez@colorado.edu>
3023
3030
3024 * examples/example-embed.py: fixed all references to %n (replaced
3031 * examples/example-embed.py: fixed all references to %n (replaced
3025 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3032 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3026 for all examples and the manual as well.
3033 for all examples and the manual as well.
3027
3034
3028 2004-06-08 Fernando Perez <fperez@colorado.edu>
3035 2004-06-08 Fernando Perez <fperez@colorado.edu>
3029
3036
3030 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3037 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3031 alignment and color management. All 3 prompt subsystems now
3038 alignment and color management. All 3 prompt subsystems now
3032 inherit from BasePrompt.
3039 inherit from BasePrompt.
3033
3040
3034 * tools/release: updates for windows installer build and tag rpms
3041 * tools/release: updates for windows installer build and tag rpms
3035 with python version (since paths are fixed).
3042 with python version (since paths are fixed).
3036
3043
3037 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3044 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3038 which will become eventually obsolete. Also fixed the default
3045 which will become eventually obsolete. Also fixed the default
3039 prompt_in2 to use \D, so at least new users start with the correct
3046 prompt_in2 to use \D, so at least new users start with the correct
3040 defaults.
3047 defaults.
3041 WARNING: Users with existing ipythonrc files will need to apply
3048 WARNING: Users with existing ipythonrc files will need to apply
3042 this fix manually!
3049 this fix manually!
3043
3050
3044 * setup.py: make windows installer (.exe). This is finally the
3051 * setup.py: make windows installer (.exe). This is finally the
3045 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3052 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3046 which I hadn't included because it required Python 2.3 (or recent
3053 which I hadn't included because it required Python 2.3 (or recent
3047 distutils).
3054 distutils).
3048
3055
3049 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3056 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3050 usage of new '\D' escape.
3057 usage of new '\D' escape.
3051
3058
3052 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3059 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3053 lacks os.getuid())
3060 lacks os.getuid())
3054 (CachedOutput.set_colors): Added the ability to turn coloring
3061 (CachedOutput.set_colors): Added the ability to turn coloring
3055 on/off with @colors even for manually defined prompt colors. It
3062 on/off with @colors even for manually defined prompt colors. It
3056 uses a nasty global, but it works safely and via the generic color
3063 uses a nasty global, but it works safely and via the generic color
3057 handling mechanism.
3064 handling mechanism.
3058 (Prompt2.__init__): Introduced new escape '\D' for continuation
3065 (Prompt2.__init__): Introduced new escape '\D' for continuation
3059 prompts. It represents the counter ('\#') as dots.
3066 prompts. It represents the counter ('\#') as dots.
3060 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3067 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3061 need to update their ipythonrc files and replace '%n' with '\D' in
3068 need to update their ipythonrc files and replace '%n' with '\D' in
3062 their prompt_in2 settings everywhere. Sorry, but there's
3069 their prompt_in2 settings everywhere. Sorry, but there's
3063 otherwise no clean way to get all prompts to properly align. The
3070 otherwise no clean way to get all prompts to properly align. The
3064 ipythonrc shipped with IPython has been updated.
3071 ipythonrc shipped with IPython has been updated.
3065
3072
3066 2004-06-07 Fernando Perez <fperez@colorado.edu>
3073 2004-06-07 Fernando Perez <fperez@colorado.edu>
3067
3074
3068 * setup.py (isfile): Pass local_icons option to latex2html, so the
3075 * setup.py (isfile): Pass local_icons option to latex2html, so the
3069 resulting HTML file is self-contained. Thanks to
3076 resulting HTML file is self-contained. Thanks to
3070 dryice-AT-liu.com.cn for the tip.
3077 dryice-AT-liu.com.cn for the tip.
3071
3078
3072 * pysh.py: I created a new profile 'shell', which implements a
3079 * pysh.py: I created a new profile 'shell', which implements a
3073 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3080 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3074 system shell, nor will it become one anytime soon. It's mainly
3081 system shell, nor will it become one anytime soon. It's mainly
3075 meant to illustrate the use of the new flexible bash-like prompts.
3082 meant to illustrate the use of the new flexible bash-like prompts.
3076 I guess it could be used by hardy souls for true shell management,
3083 I guess it could be used by hardy souls for true shell management,
3077 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3084 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3078 profile. This uses the InterpreterExec extension provided by
3085 profile. This uses the InterpreterExec extension provided by
3079 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3086 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3080
3087
3081 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3088 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3082 auto-align itself with the length of the previous input prompt
3089 auto-align itself with the length of the previous input prompt
3083 (taking into account the invisible color escapes).
3090 (taking into account the invisible color escapes).
3084 (CachedOutput.__init__): Large restructuring of this class. Now
3091 (CachedOutput.__init__): Large restructuring of this class. Now
3085 all three prompts (primary1, primary2, output) are proper objects,
3092 all three prompts (primary1, primary2, output) are proper objects,
3086 managed by the 'parent' CachedOutput class. The code is still a
3093 managed by the 'parent' CachedOutput class. The code is still a
3087 bit hackish (all prompts share state via a pointer to the cache),
3094 bit hackish (all prompts share state via a pointer to the cache),
3088 but it's overall far cleaner than before.
3095 but it's overall far cleaner than before.
3089
3096
3090 * IPython/genutils.py (getoutputerror): modified to add verbose,
3097 * IPython/genutils.py (getoutputerror): modified to add verbose,
3091 debug and header options. This makes the interface of all getout*
3098 debug and header options. This makes the interface of all getout*
3092 functions uniform.
3099 functions uniform.
3093 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3100 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3094
3101
3095 * IPython/Magic.py (Magic.default_option): added a function to
3102 * IPython/Magic.py (Magic.default_option): added a function to
3096 allow registering default options for any magic command. This
3103 allow registering default options for any magic command. This
3097 makes it easy to have profiles which customize the magics globally
3104 makes it easy to have profiles which customize the magics globally
3098 for a certain use. The values set through this function are
3105 for a certain use. The values set through this function are
3099 picked up by the parse_options() method, which all magics should
3106 picked up by the parse_options() method, which all magics should
3100 use to parse their options.
3107 use to parse their options.
3101
3108
3102 * IPython/genutils.py (warn): modified the warnings framework to
3109 * IPython/genutils.py (warn): modified the warnings framework to
3103 use the Term I/O class. I'm trying to slowly unify all of
3110 use the Term I/O class. I'm trying to slowly unify all of
3104 IPython's I/O operations to pass through Term.
3111 IPython's I/O operations to pass through Term.
3105
3112
3106 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3113 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3107 the secondary prompt to correctly match the length of the primary
3114 the secondary prompt to correctly match the length of the primary
3108 one for any prompt. Now multi-line code will properly line up
3115 one for any prompt. Now multi-line code will properly line up
3109 even for path dependent prompts, such as the new ones available
3116 even for path dependent prompts, such as the new ones available
3110 via the prompt_specials.
3117 via the prompt_specials.
3111
3118
3112 2004-06-06 Fernando Perez <fperez@colorado.edu>
3119 2004-06-06 Fernando Perez <fperez@colorado.edu>
3113
3120
3114 * IPython/Prompts.py (prompt_specials): Added the ability to have
3121 * IPython/Prompts.py (prompt_specials): Added the ability to have
3115 bash-like special sequences in the prompts, which get
3122 bash-like special sequences in the prompts, which get
3116 automatically expanded. Things like hostname, current working
3123 automatically expanded. Things like hostname, current working
3117 directory and username are implemented already, but it's easy to
3124 directory and username are implemented already, but it's easy to
3118 add more in the future. Thanks to a patch by W.J. van der Laan
3125 add more in the future. Thanks to a patch by W.J. van der Laan
3119 <gnufnork-AT-hetdigitalegat.nl>
3126 <gnufnork-AT-hetdigitalegat.nl>
3120 (prompt_specials): Added color support for prompt strings, so
3127 (prompt_specials): Added color support for prompt strings, so
3121 users can define arbitrary color setups for their prompts.
3128 users can define arbitrary color setups for their prompts.
3122
3129
3123 2004-06-05 Fernando Perez <fperez@colorado.edu>
3130 2004-06-05 Fernando Perez <fperez@colorado.edu>
3124
3131
3125 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3132 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3126 code to load Gary Bishop's readline and configure it
3133 code to load Gary Bishop's readline and configure it
3127 automatically. Thanks to Gary for help on this.
3134 automatically. Thanks to Gary for help on this.
3128
3135
3129 2004-06-01 Fernando Perez <fperez@colorado.edu>
3136 2004-06-01 Fernando Perez <fperez@colorado.edu>
3130
3137
3131 * IPython/Logger.py (Logger.create_log): fix bug for logging
3138 * IPython/Logger.py (Logger.create_log): fix bug for logging
3132 with no filename (previous fix was incomplete).
3139 with no filename (previous fix was incomplete).
3133
3140
3134 2004-05-25 Fernando Perez <fperez@colorado.edu>
3141 2004-05-25 Fernando Perez <fperez@colorado.edu>
3135
3142
3136 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3143 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3137 parens would get passed to the shell.
3144 parens would get passed to the shell.
3138
3145
3139 2004-05-20 Fernando Perez <fperez@colorado.edu>
3146 2004-05-20 Fernando Perez <fperez@colorado.edu>
3140
3147
3141 * IPython/Magic.py (Magic.magic_prun): changed default profile
3148 * IPython/Magic.py (Magic.magic_prun): changed default profile
3142 sort order to 'time' (the more common profiling need).
3149 sort order to 'time' (the more common profiling need).
3143
3150
3144 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3151 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3145 so that source code shown is guaranteed in sync with the file on
3152 so that source code shown is guaranteed in sync with the file on
3146 disk (also changed in psource). Similar fix to the one for
3153 disk (also changed in psource). Similar fix to the one for
3147 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3154 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3148 <yann.ledu-AT-noos.fr>.
3155 <yann.ledu-AT-noos.fr>.
3149
3156
3150 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3157 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3151 with a single option would not be correctly parsed. Closes
3158 with a single option would not be correctly parsed. Closes
3152 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3159 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3153 introduced in 0.6.0 (on 2004-05-06).
3160 introduced in 0.6.0 (on 2004-05-06).
3154
3161
3155 2004-05-13 *** Released version 0.6.0
3162 2004-05-13 *** Released version 0.6.0
3156
3163
3157 2004-05-13 Fernando Perez <fperez@colorado.edu>
3164 2004-05-13 Fernando Perez <fperez@colorado.edu>
3158
3165
3159 * debian/: Added debian/ directory to CVS, so that debian support
3166 * debian/: Added debian/ directory to CVS, so that debian support
3160 is publicly accessible. The debian package is maintained by Jack
3167 is publicly accessible. The debian package is maintained by Jack
3161 Moffit <jack-AT-xiph.org>.
3168 Moffit <jack-AT-xiph.org>.
3162
3169
3163 * Documentation: included the notes about an ipython-based system
3170 * Documentation: included the notes about an ipython-based system
3164 shell (the hypothetical 'pysh') into the new_design.pdf document,
3171 shell (the hypothetical 'pysh') into the new_design.pdf document,
3165 so that these ideas get distributed to users along with the
3172 so that these ideas get distributed to users along with the
3166 official documentation.
3173 official documentation.
3167
3174
3168 2004-05-10 Fernando Perez <fperez@colorado.edu>
3175 2004-05-10 Fernando Perez <fperez@colorado.edu>
3169
3176
3170 * IPython/Logger.py (Logger.create_log): fix recently introduced
3177 * IPython/Logger.py (Logger.create_log): fix recently introduced
3171 bug (misindented line) where logstart would fail when not given an
3178 bug (misindented line) where logstart would fail when not given an
3172 explicit filename.
3179 explicit filename.
3173
3180
3174 2004-05-09 Fernando Perez <fperez@colorado.edu>
3181 2004-05-09 Fernando Perez <fperez@colorado.edu>
3175
3182
3176 * IPython/Magic.py (Magic.parse_options): skip system call when
3183 * IPython/Magic.py (Magic.parse_options): skip system call when
3177 there are no options to look for. Faster, cleaner for the common
3184 there are no options to look for. Faster, cleaner for the common
3178 case.
3185 case.
3179
3186
3180 * Documentation: many updates to the manual: describing Windows
3187 * Documentation: many updates to the manual: describing Windows
3181 support better, Gnuplot updates, credits, misc small stuff. Also
3188 support better, Gnuplot updates, credits, misc small stuff. Also
3182 updated the new_design doc a bit.
3189 updated the new_design doc a bit.
3183
3190
3184 2004-05-06 *** Released version 0.6.0.rc1
3191 2004-05-06 *** Released version 0.6.0.rc1
3185
3192
3186 2004-05-06 Fernando Perez <fperez@colorado.edu>
3193 2004-05-06 Fernando Perez <fperez@colorado.edu>
3187
3194
3188 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3195 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3189 operations to use the vastly more efficient list/''.join() method.
3196 operations to use the vastly more efficient list/''.join() method.
3190 (FormattedTB.text): Fix
3197 (FormattedTB.text): Fix
3191 http://www.scipy.net/roundup/ipython/issue12 - exception source
3198 http://www.scipy.net/roundup/ipython/issue12 - exception source
3192 extract not updated after reload. Thanks to Mike Salib
3199 extract not updated after reload. Thanks to Mike Salib
3193 <msalib-AT-mit.edu> for pinning the source of the problem.
3200 <msalib-AT-mit.edu> for pinning the source of the problem.
3194 Fortunately, the solution works inside ipython and doesn't require
3201 Fortunately, the solution works inside ipython and doesn't require
3195 any changes to python proper.
3202 any changes to python proper.
3196
3203
3197 * IPython/Magic.py (Magic.parse_options): Improved to process the
3204 * IPython/Magic.py (Magic.parse_options): Improved to process the
3198 argument list as a true shell would (by actually using the
3205 argument list as a true shell would (by actually using the
3199 underlying system shell). This way, all @magics automatically get
3206 underlying system shell). This way, all @magics automatically get
3200 shell expansion for variables. Thanks to a comment by Alex
3207 shell expansion for variables. Thanks to a comment by Alex
3201 Schmolck.
3208 Schmolck.
3202
3209
3203 2004-04-04 Fernando Perez <fperez@colorado.edu>
3210 2004-04-04 Fernando Perez <fperez@colorado.edu>
3204
3211
3205 * IPython/iplib.py (InteractiveShell.interact): Added a special
3212 * IPython/iplib.py (InteractiveShell.interact): Added a special
3206 trap for a debugger quit exception, which is basically impossible
3213 trap for a debugger quit exception, which is basically impossible
3207 to handle by normal mechanisms, given what pdb does to the stack.
3214 to handle by normal mechanisms, given what pdb does to the stack.
3208 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3215 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3209
3216
3210 2004-04-03 Fernando Perez <fperez@colorado.edu>
3217 2004-04-03 Fernando Perez <fperez@colorado.edu>
3211
3218
3212 * IPython/genutils.py (Term): Standardized the names of the Term
3219 * IPython/genutils.py (Term): Standardized the names of the Term
3213 class streams to cin/cout/cerr, following C++ naming conventions
3220 class streams to cin/cout/cerr, following C++ naming conventions
3214 (I can't use in/out/err because 'in' is not a valid attribute
3221 (I can't use in/out/err because 'in' is not a valid attribute
3215 name).
3222 name).
3216
3223
3217 * IPython/iplib.py (InteractiveShell.interact): don't increment
3224 * IPython/iplib.py (InteractiveShell.interact): don't increment
3218 the prompt if there's no user input. By Daniel 'Dang' Griffith
3225 the prompt if there's no user input. By Daniel 'Dang' Griffith
3219 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3226 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3220 Francois Pinard.
3227 Francois Pinard.
3221
3228
3222 2004-04-02 Fernando Perez <fperez@colorado.edu>
3229 2004-04-02 Fernando Perez <fperez@colorado.edu>
3223
3230
3224 * IPython/genutils.py (Stream.__init__): Modified to survive at
3231 * IPython/genutils.py (Stream.__init__): Modified to survive at
3225 least importing in contexts where stdin/out/err aren't true file
3232 least importing in contexts where stdin/out/err aren't true file
3226 objects, such as PyCrust (they lack fileno() and mode). However,
3233 objects, such as PyCrust (they lack fileno() and mode). However,
3227 the recovery facilities which rely on these things existing will
3234 the recovery facilities which rely on these things existing will
3228 not work.
3235 not work.
3229
3236
3230 2004-04-01 Fernando Perez <fperez@colorado.edu>
3237 2004-04-01 Fernando Perez <fperez@colorado.edu>
3231
3238
3232 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3239 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3233 use the new getoutputerror() function, so it properly
3240 use the new getoutputerror() function, so it properly
3234 distinguishes stdout/err.
3241 distinguishes stdout/err.
3235
3242
3236 * IPython/genutils.py (getoutputerror): added a function to
3243 * IPython/genutils.py (getoutputerror): added a function to
3237 capture separately the standard output and error of a command.
3244 capture separately the standard output and error of a command.
3238 After a comment from dang on the mailing lists. This code is
3245 After a comment from dang on the mailing lists. This code is
3239 basically a modified version of commands.getstatusoutput(), from
3246 basically a modified version of commands.getstatusoutput(), from
3240 the standard library.
3247 the standard library.
3241
3248
3242 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3249 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3243 '!!' as a special syntax (shorthand) to access @sx.
3250 '!!' as a special syntax (shorthand) to access @sx.
3244
3251
3245 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3252 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3246 command and return its output as a list split on '\n'.
3253 command and return its output as a list split on '\n'.
3247
3254
3248 2004-03-31 Fernando Perez <fperez@colorado.edu>
3255 2004-03-31 Fernando Perez <fperez@colorado.edu>
3249
3256
3250 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3257 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3251 method to dictionaries used as FakeModule instances if they lack
3258 method to dictionaries used as FakeModule instances if they lack
3252 it. At least pydoc in python2.3 breaks for runtime-defined
3259 it. At least pydoc in python2.3 breaks for runtime-defined
3253 functions without this hack. At some point I need to _really_
3260 functions without this hack. At some point I need to _really_
3254 understand what FakeModule is doing, because it's a gross hack.
3261 understand what FakeModule is doing, because it's a gross hack.
3255 But it solves Arnd's problem for now...
3262 But it solves Arnd's problem for now...
3256
3263
3257 2004-02-27 Fernando Perez <fperez@colorado.edu>
3264 2004-02-27 Fernando Perez <fperez@colorado.edu>
3258
3265
3259 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3266 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3260 mode would behave erratically. Also increased the number of
3267 mode would behave erratically. Also increased the number of
3261 possible logs in rotate mod to 999. Thanks to Rod Holland
3268 possible logs in rotate mod to 999. Thanks to Rod Holland
3262 <rhh@StructureLABS.com> for the report and fixes.
3269 <rhh@StructureLABS.com> for the report and fixes.
3263
3270
3264 2004-02-26 Fernando Perez <fperez@colorado.edu>
3271 2004-02-26 Fernando Perez <fperez@colorado.edu>
3265
3272
3266 * IPython/genutils.py (page): Check that the curses module really
3273 * IPython/genutils.py (page): Check that the curses module really
3267 has the initscr attribute before trying to use it. For some
3274 has the initscr attribute before trying to use it. For some
3268 reason, the Solaris curses module is missing this. I think this
3275 reason, the Solaris curses module is missing this. I think this
3269 should be considered a Solaris python bug, but I'm not sure.
3276 should be considered a Solaris python bug, but I'm not sure.
3270
3277
3271 2004-01-17 Fernando Perez <fperez@colorado.edu>
3278 2004-01-17 Fernando Perez <fperez@colorado.edu>
3272
3279
3273 * IPython/genutils.py (Stream.__init__): Changes to try to make
3280 * IPython/genutils.py (Stream.__init__): Changes to try to make
3274 ipython robust against stdin/out/err being closed by the user.
3281 ipython robust against stdin/out/err being closed by the user.
3275 This is 'user error' (and blocks a normal python session, at least
3282 This is 'user error' (and blocks a normal python session, at least
3276 the stdout case). However, Ipython should be able to survive such
3283 the stdout case). However, Ipython should be able to survive such
3277 instances of abuse as gracefully as possible. To simplify the
3284 instances of abuse as gracefully as possible. To simplify the
3278 coding and maintain compatibility with Gary Bishop's Term
3285 coding and maintain compatibility with Gary Bishop's Term
3279 contributions, I've made use of classmethods for this. I think
3286 contributions, I've made use of classmethods for this. I think
3280 this introduces a dependency on python 2.2.
3287 this introduces a dependency on python 2.2.
3281
3288
3282 2004-01-13 Fernando Perez <fperez@colorado.edu>
3289 2004-01-13 Fernando Perez <fperez@colorado.edu>
3283
3290
3284 * IPython/numutils.py (exp_safe): simplified the code a bit and
3291 * IPython/numutils.py (exp_safe): simplified the code a bit and
3285 removed the need for importing the kinds module altogether.
3292 removed the need for importing the kinds module altogether.
3286
3293
3287 2004-01-06 Fernando Perez <fperez@colorado.edu>
3294 2004-01-06 Fernando Perez <fperez@colorado.edu>
3288
3295
3289 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3296 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3290 a magic function instead, after some community feedback. No
3297 a magic function instead, after some community feedback. No
3291 special syntax will exist for it, but its name is deliberately
3298 special syntax will exist for it, but its name is deliberately
3292 very short.
3299 very short.
3293
3300
3294 2003-12-20 Fernando Perez <fperez@colorado.edu>
3301 2003-12-20 Fernando Perez <fperez@colorado.edu>
3295
3302
3296 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3303 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3297 new functionality, to automagically assign the result of a shell
3304 new functionality, to automagically assign the result of a shell
3298 command to a variable. I'll solicit some community feedback on
3305 command to a variable. I'll solicit some community feedback on
3299 this before making it permanent.
3306 this before making it permanent.
3300
3307
3301 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3308 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3302 requested about callables for which inspect couldn't obtain a
3309 requested about callables for which inspect couldn't obtain a
3303 proper argspec. Thanks to a crash report sent by Etienne
3310 proper argspec. Thanks to a crash report sent by Etienne
3304 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3311 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3305
3312
3306 2003-12-09 Fernando Perez <fperez@colorado.edu>
3313 2003-12-09 Fernando Perez <fperez@colorado.edu>
3307
3314
3308 * IPython/genutils.py (page): patch for the pager to work across
3315 * IPython/genutils.py (page): patch for the pager to work across
3309 various versions of Windows. By Gary Bishop.
3316 various versions of Windows. By Gary Bishop.
3310
3317
3311 2003-12-04 Fernando Perez <fperez@colorado.edu>
3318 2003-12-04 Fernando Perez <fperez@colorado.edu>
3312
3319
3313 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3320 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3314 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3321 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3315 While I tested this and it looks ok, there may still be corner
3322 While I tested this and it looks ok, there may still be corner
3316 cases I've missed.
3323 cases I've missed.
3317
3324
3318 2003-12-01 Fernando Perez <fperez@colorado.edu>
3325 2003-12-01 Fernando Perez <fperez@colorado.edu>
3319
3326
3320 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3327 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3321 where a line like 'p,q=1,2' would fail because the automagic
3328 where a line like 'p,q=1,2' would fail because the automagic
3322 system would be triggered for @p.
3329 system would be triggered for @p.
3323
3330
3324 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3331 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3325 cleanups, code unmodified.
3332 cleanups, code unmodified.
3326
3333
3327 * IPython/genutils.py (Term): added a class for IPython to handle
3334 * IPython/genutils.py (Term): added a class for IPython to handle
3328 output. In most cases it will just be a proxy for stdout/err, but
3335 output. In most cases it will just be a proxy for stdout/err, but
3329 having this allows modifications to be made for some platforms,
3336 having this allows modifications to be made for some platforms,
3330 such as handling color escapes under Windows. All of this code
3337 such as handling color escapes under Windows. All of this code
3331 was contributed by Gary Bishop, with minor modifications by me.
3338 was contributed by Gary Bishop, with minor modifications by me.
3332 The actual changes affect many files.
3339 The actual changes affect many files.
3333
3340
3334 2003-11-30 Fernando Perez <fperez@colorado.edu>
3341 2003-11-30 Fernando Perez <fperez@colorado.edu>
3335
3342
3336 * IPython/iplib.py (file_matches): new completion code, courtesy
3343 * IPython/iplib.py (file_matches): new completion code, courtesy
3337 of Jeff Collins. This enables filename completion again under
3344 of Jeff Collins. This enables filename completion again under
3338 python 2.3, which disabled it at the C level.
3345 python 2.3, which disabled it at the C level.
3339
3346
3340 2003-11-11 Fernando Perez <fperez@colorado.edu>
3347 2003-11-11 Fernando Perez <fperez@colorado.edu>
3341
3348
3342 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3349 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3343 for Numeric.array(map(...)), but often convenient.
3350 for Numeric.array(map(...)), but often convenient.
3344
3351
3345 2003-11-05 Fernando Perez <fperez@colorado.edu>
3352 2003-11-05 Fernando Perez <fperez@colorado.edu>
3346
3353
3347 * IPython/numutils.py (frange): Changed a call from int() to
3354 * IPython/numutils.py (frange): Changed a call from int() to
3348 int(round()) to prevent a problem reported with arange() in the
3355 int(round()) to prevent a problem reported with arange() in the
3349 numpy list.
3356 numpy list.
3350
3357
3351 2003-10-06 Fernando Perez <fperez@colorado.edu>
3358 2003-10-06 Fernando Perez <fperez@colorado.edu>
3352
3359
3353 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3360 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3354 prevent crashes if sys lacks an argv attribute (it happens with
3361 prevent crashes if sys lacks an argv attribute (it happens with
3355 embedded interpreters which build a bare-bones sys module).
3362 embedded interpreters which build a bare-bones sys module).
3356 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3363 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3357
3364
3358 2003-09-24 Fernando Perez <fperez@colorado.edu>
3365 2003-09-24 Fernando Perez <fperez@colorado.edu>
3359
3366
3360 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3367 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3361 to protect against poorly written user objects where __getattr__
3368 to protect against poorly written user objects where __getattr__
3362 raises exceptions other than AttributeError. Thanks to a bug
3369 raises exceptions other than AttributeError. Thanks to a bug
3363 report by Oliver Sander <osander-AT-gmx.de>.
3370 report by Oliver Sander <osander-AT-gmx.de>.
3364
3371
3365 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3372 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3366 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3373 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3367
3374
3368 2003-09-09 Fernando Perez <fperez@colorado.edu>
3375 2003-09-09 Fernando Perez <fperez@colorado.edu>
3369
3376
3370 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3377 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3371 unpacking a list whith a callable as first element would
3378 unpacking a list whith a callable as first element would
3372 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3379 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3373 Collins.
3380 Collins.
3374
3381
3375 2003-08-25 *** Released version 0.5.0
3382 2003-08-25 *** Released version 0.5.0
3376
3383
3377 2003-08-22 Fernando Perez <fperez@colorado.edu>
3384 2003-08-22 Fernando Perez <fperez@colorado.edu>
3378
3385
3379 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3386 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3380 improperly defined user exceptions. Thanks to feedback from Mark
3387 improperly defined user exceptions. Thanks to feedback from Mark
3381 Russell <mrussell-AT-verio.net>.
3388 Russell <mrussell-AT-verio.net>.
3382
3389
3383 2003-08-20 Fernando Perez <fperez@colorado.edu>
3390 2003-08-20 Fernando Perez <fperez@colorado.edu>
3384
3391
3385 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3392 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3386 printing so that it would print multi-line string forms starting
3393 printing so that it would print multi-line string forms starting
3387 with a new line. This way the formatting is better respected for
3394 with a new line. This way the formatting is better respected for
3388 objects which work hard to make nice string forms.
3395 objects which work hard to make nice string forms.
3389
3396
3390 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3397 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3391 autocall would overtake data access for objects with both
3398 autocall would overtake data access for objects with both
3392 __getitem__ and __call__.
3399 __getitem__ and __call__.
3393
3400
3394 2003-08-19 *** Released version 0.5.0-rc1
3401 2003-08-19 *** Released version 0.5.0-rc1
3395
3402
3396 2003-08-19 Fernando Perez <fperez@colorado.edu>
3403 2003-08-19 Fernando Perez <fperez@colorado.edu>
3397
3404
3398 * IPython/deep_reload.py (load_tail): single tiny change here
3405 * IPython/deep_reload.py (load_tail): single tiny change here
3399 seems to fix the long-standing bug of dreload() failing to work
3406 seems to fix the long-standing bug of dreload() failing to work
3400 for dotted names. But this module is pretty tricky, so I may have
3407 for dotted names. But this module is pretty tricky, so I may have
3401 missed some subtlety. Needs more testing!.
3408 missed some subtlety. Needs more testing!.
3402
3409
3403 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3410 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3404 exceptions which have badly implemented __str__ methods.
3411 exceptions which have badly implemented __str__ methods.
3405 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3412 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3406 which I've been getting reports about from Python 2.3 users. I
3413 which I've been getting reports about from Python 2.3 users. I
3407 wish I had a simple test case to reproduce the problem, so I could
3414 wish I had a simple test case to reproduce the problem, so I could
3408 either write a cleaner workaround or file a bug report if
3415 either write a cleaner workaround or file a bug report if
3409 necessary.
3416 necessary.
3410
3417
3411 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3418 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3412 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3419 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3413 a bug report by Tjabo Kloppenburg.
3420 a bug report by Tjabo Kloppenburg.
3414
3421
3415 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3422 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3416 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3423 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3417 seems rather unstable. Thanks to a bug report by Tjabo
3424 seems rather unstable. Thanks to a bug report by Tjabo
3418 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3425 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3419
3426
3420 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3427 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3421 this out soon because of the critical fixes in the inner loop for
3428 this out soon because of the critical fixes in the inner loop for
3422 generators.
3429 generators.
3423
3430
3424 * IPython/Magic.py (Magic.getargspec): removed. This (and
3431 * IPython/Magic.py (Magic.getargspec): removed. This (and
3425 _get_def) have been obsoleted by OInspect for a long time, I
3432 _get_def) have been obsoleted by OInspect for a long time, I
3426 hadn't noticed that they were dead code.
3433 hadn't noticed that they were dead code.
3427 (Magic._ofind): restored _ofind functionality for a few literals
3434 (Magic._ofind): restored _ofind functionality for a few literals
3428 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3435 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3429 for things like "hello".capitalize?, since that would require a
3436 for things like "hello".capitalize?, since that would require a
3430 potentially dangerous eval() again.
3437 potentially dangerous eval() again.
3431
3438
3432 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3439 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3433 logic a bit more to clean up the escapes handling and minimize the
3440 logic a bit more to clean up the escapes handling and minimize the
3434 use of _ofind to only necessary cases. The interactive 'feel' of
3441 use of _ofind to only necessary cases. The interactive 'feel' of
3435 IPython should have improved quite a bit with the changes in
3442 IPython should have improved quite a bit with the changes in
3436 _prefilter and _ofind (besides being far safer than before).
3443 _prefilter and _ofind (besides being far safer than before).
3437
3444
3438 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3445 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3439 obscure, never reported). Edit would fail to find the object to
3446 obscure, never reported). Edit would fail to find the object to
3440 edit under some circumstances.
3447 edit under some circumstances.
3441 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3448 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3442 which were causing double-calling of generators. Those eval calls
3449 which were causing double-calling of generators. Those eval calls
3443 were _very_ dangerous, since code with side effects could be
3450 were _very_ dangerous, since code with side effects could be
3444 triggered. As they say, 'eval is evil'... These were the
3451 triggered. As they say, 'eval is evil'... These were the
3445 nastiest evals in IPython. Besides, _ofind is now far simpler,
3452 nastiest evals in IPython. Besides, _ofind is now far simpler,
3446 and it should also be quite a bit faster. Its use of inspect is
3453 and it should also be quite a bit faster. Its use of inspect is
3447 also safer, so perhaps some of the inspect-related crashes I've
3454 also safer, so perhaps some of the inspect-related crashes I've
3448 seen lately with Python 2.3 might be taken care of. That will
3455 seen lately with Python 2.3 might be taken care of. That will
3449 need more testing.
3456 need more testing.
3450
3457
3451 2003-08-17 Fernando Perez <fperez@colorado.edu>
3458 2003-08-17 Fernando Perez <fperez@colorado.edu>
3452
3459
3453 * IPython/iplib.py (InteractiveShell._prefilter): significant
3460 * IPython/iplib.py (InteractiveShell._prefilter): significant
3454 simplifications to the logic for handling user escapes. Faster
3461 simplifications to the logic for handling user escapes. Faster
3455 and simpler code.
3462 and simpler code.
3456
3463
3457 2003-08-14 Fernando Perez <fperez@colorado.edu>
3464 2003-08-14 Fernando Perez <fperez@colorado.edu>
3458
3465
3459 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3466 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3460 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3467 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3461 but it should be quite a bit faster. And the recursive version
3468 but it should be quite a bit faster. And the recursive version
3462 generated O(log N) intermediate storage for all rank>1 arrays,
3469 generated O(log N) intermediate storage for all rank>1 arrays,
3463 even if they were contiguous.
3470 even if they were contiguous.
3464 (l1norm): Added this function.
3471 (l1norm): Added this function.
3465 (norm): Added this function for arbitrary norms (including
3472 (norm): Added this function for arbitrary norms (including
3466 l-infinity). l1 and l2 are still special cases for convenience
3473 l-infinity). l1 and l2 are still special cases for convenience
3467 and speed.
3474 and speed.
3468
3475
3469 2003-08-03 Fernando Perez <fperez@colorado.edu>
3476 2003-08-03 Fernando Perez <fperez@colorado.edu>
3470
3477
3471 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3478 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3472 exceptions, which now raise PendingDeprecationWarnings in Python
3479 exceptions, which now raise PendingDeprecationWarnings in Python
3473 2.3. There were some in Magic and some in Gnuplot2.
3480 2.3. There were some in Magic and some in Gnuplot2.
3474
3481
3475 2003-06-30 Fernando Perez <fperez@colorado.edu>
3482 2003-06-30 Fernando Perez <fperez@colorado.edu>
3476
3483
3477 * IPython/genutils.py (page): modified to call curses only for
3484 * IPython/genutils.py (page): modified to call curses only for
3478 terminals where TERM=='xterm'. After problems under many other
3485 terminals where TERM=='xterm'. After problems under many other
3479 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3486 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3480
3487
3481 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3488 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3482 would be triggered when readline was absent. This was just an old
3489 would be triggered when readline was absent. This was just an old
3483 debugging statement I'd forgotten to take out.
3490 debugging statement I'd forgotten to take out.
3484
3491
3485 2003-06-20 Fernando Perez <fperez@colorado.edu>
3492 2003-06-20 Fernando Perez <fperez@colorado.edu>
3486
3493
3487 * IPython/genutils.py (clock): modified to return only user time
3494 * IPython/genutils.py (clock): modified to return only user time
3488 (not counting system time), after a discussion on scipy. While
3495 (not counting system time), after a discussion on scipy. While
3489 system time may be a useful quantity occasionally, it may much
3496 system time may be a useful quantity occasionally, it may much
3490 more easily be skewed by occasional swapping or other similar
3497 more easily be skewed by occasional swapping or other similar
3491 activity.
3498 activity.
3492
3499
3493 2003-06-05 Fernando Perez <fperez@colorado.edu>
3500 2003-06-05 Fernando Perez <fperez@colorado.edu>
3494
3501
3495 * IPython/numutils.py (identity): new function, for building
3502 * IPython/numutils.py (identity): new function, for building
3496 arbitrary rank Kronecker deltas (mostly backwards compatible with
3503 arbitrary rank Kronecker deltas (mostly backwards compatible with
3497 Numeric.identity)
3504 Numeric.identity)
3498
3505
3499 2003-06-03 Fernando Perez <fperez@colorado.edu>
3506 2003-06-03 Fernando Perez <fperez@colorado.edu>
3500
3507
3501 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3508 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3502 arguments passed to magics with spaces, to allow trailing '\' to
3509 arguments passed to magics with spaces, to allow trailing '\' to
3503 work normally (mainly for Windows users).
3510 work normally (mainly for Windows users).
3504
3511
3505 2003-05-29 Fernando Perez <fperez@colorado.edu>
3512 2003-05-29 Fernando Perez <fperez@colorado.edu>
3506
3513
3507 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3514 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3508 instead of pydoc.help. This fixes a bizarre behavior where
3515 instead of pydoc.help. This fixes a bizarre behavior where
3509 printing '%s' % locals() would trigger the help system. Now
3516 printing '%s' % locals() would trigger the help system. Now
3510 ipython behaves like normal python does.
3517 ipython behaves like normal python does.
3511
3518
3512 Note that if one does 'from pydoc import help', the bizarre
3519 Note that if one does 'from pydoc import help', the bizarre
3513 behavior returns, but this will also happen in normal python, so
3520 behavior returns, but this will also happen in normal python, so
3514 it's not an ipython bug anymore (it has to do with how pydoc.help
3521 it's not an ipython bug anymore (it has to do with how pydoc.help
3515 is implemented).
3522 is implemented).
3516
3523
3517 2003-05-22 Fernando Perez <fperez@colorado.edu>
3524 2003-05-22 Fernando Perez <fperez@colorado.edu>
3518
3525
3519 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3526 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3520 return [] instead of None when nothing matches, also match to end
3527 return [] instead of None when nothing matches, also match to end
3521 of line. Patch by Gary Bishop.
3528 of line. Patch by Gary Bishop.
3522
3529
3523 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3530 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3524 protection as before, for files passed on the command line. This
3531 protection as before, for files passed on the command line. This
3525 prevents the CrashHandler from kicking in if user files call into
3532 prevents the CrashHandler from kicking in if user files call into
3526 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3533 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3527 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3534 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3528
3535
3529 2003-05-20 *** Released version 0.4.0
3536 2003-05-20 *** Released version 0.4.0
3530
3537
3531 2003-05-20 Fernando Perez <fperez@colorado.edu>
3538 2003-05-20 Fernando Perez <fperez@colorado.edu>
3532
3539
3533 * setup.py: added support for manpages. It's a bit hackish b/c of
3540 * setup.py: added support for manpages. It's a bit hackish b/c of
3534 a bug in the way the bdist_rpm distutils target handles gzipped
3541 a bug in the way the bdist_rpm distutils target handles gzipped
3535 manpages, but it works. After a patch by Jack.
3542 manpages, but it works. After a patch by Jack.
3536
3543
3537 2003-05-19 Fernando Perez <fperez@colorado.edu>
3544 2003-05-19 Fernando Perez <fperez@colorado.edu>
3538
3545
3539 * IPython/numutils.py: added a mockup of the kinds module, since
3546 * IPython/numutils.py: added a mockup of the kinds module, since
3540 it was recently removed from Numeric. This way, numutils will
3547 it was recently removed from Numeric. This way, numutils will
3541 work for all users even if they are missing kinds.
3548 work for all users even if they are missing kinds.
3542
3549
3543 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3550 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3544 failure, which can occur with SWIG-wrapped extensions. After a
3551 failure, which can occur with SWIG-wrapped extensions. After a
3545 crash report from Prabhu.
3552 crash report from Prabhu.
3546
3553
3547 2003-05-16 Fernando Perez <fperez@colorado.edu>
3554 2003-05-16 Fernando Perez <fperez@colorado.edu>
3548
3555
3549 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3556 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3550 protect ipython from user code which may call directly
3557 protect ipython from user code which may call directly
3551 sys.excepthook (this looks like an ipython crash to the user, even
3558 sys.excepthook (this looks like an ipython crash to the user, even
3552 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3559 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3553 This is especially important to help users of WxWindows, but may
3560 This is especially important to help users of WxWindows, but may
3554 also be useful in other cases.
3561 also be useful in other cases.
3555
3562
3556 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3563 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3557 an optional tb_offset to be specified, and to preserve exception
3564 an optional tb_offset to be specified, and to preserve exception
3558 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3565 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3559
3566
3560 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3567 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3561
3568
3562 2003-05-15 Fernando Perez <fperez@colorado.edu>
3569 2003-05-15 Fernando Perez <fperez@colorado.edu>
3563
3570
3564 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3571 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3565 installing for a new user under Windows.
3572 installing for a new user under Windows.
3566
3573
3567 2003-05-12 Fernando Perez <fperez@colorado.edu>
3574 2003-05-12 Fernando Perez <fperez@colorado.edu>
3568
3575
3569 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3576 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3570 handler for Emacs comint-based lines. Currently it doesn't do
3577 handler for Emacs comint-based lines. Currently it doesn't do
3571 much (but importantly, it doesn't update the history cache). In
3578 much (but importantly, it doesn't update the history cache). In
3572 the future it may be expanded if Alex needs more functionality
3579 the future it may be expanded if Alex needs more functionality
3573 there.
3580 there.
3574
3581
3575 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3582 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3576 info to crash reports.
3583 info to crash reports.
3577
3584
3578 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3585 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3579 just like Python's -c. Also fixed crash with invalid -color
3586 just like Python's -c. Also fixed crash with invalid -color
3580 option value at startup. Thanks to Will French
3587 option value at startup. Thanks to Will French
3581 <wfrench-AT-bestweb.net> for the bug report.
3588 <wfrench-AT-bestweb.net> for the bug report.
3582
3589
3583 2003-05-09 Fernando Perez <fperez@colorado.edu>
3590 2003-05-09 Fernando Perez <fperez@colorado.edu>
3584
3591
3585 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3592 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3586 to EvalDict (it's a mapping, after all) and simplified its code
3593 to EvalDict (it's a mapping, after all) and simplified its code
3587 quite a bit, after a nice discussion on c.l.py where Gustavo
3594 quite a bit, after a nice discussion on c.l.py where Gustavo
3588 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3595 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3589
3596
3590 2003-04-30 Fernando Perez <fperez@colorado.edu>
3597 2003-04-30 Fernando Perez <fperez@colorado.edu>
3591
3598
3592 * IPython/genutils.py (timings_out): modified it to reduce its
3599 * IPython/genutils.py (timings_out): modified it to reduce its
3593 overhead in the common reps==1 case.
3600 overhead in the common reps==1 case.
3594
3601
3595 2003-04-29 Fernando Perez <fperez@colorado.edu>
3602 2003-04-29 Fernando Perez <fperez@colorado.edu>
3596
3603
3597 * IPython/genutils.py (timings_out): Modified to use the resource
3604 * IPython/genutils.py (timings_out): Modified to use the resource
3598 module, which avoids the wraparound problems of time.clock().
3605 module, which avoids the wraparound problems of time.clock().
3599
3606
3600 2003-04-17 *** Released version 0.2.15pre4
3607 2003-04-17 *** Released version 0.2.15pre4
3601
3608
3602 2003-04-17 Fernando Perez <fperez@colorado.edu>
3609 2003-04-17 Fernando Perez <fperez@colorado.edu>
3603
3610
3604 * setup.py (scriptfiles): Split windows-specific stuff over to a
3611 * setup.py (scriptfiles): Split windows-specific stuff over to a
3605 separate file, in an attempt to have a Windows GUI installer.
3612 separate file, in an attempt to have a Windows GUI installer.
3606 That didn't work, but part of the groundwork is done.
3613 That didn't work, but part of the groundwork is done.
3607
3614
3608 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3615 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3609 indent/unindent with 4 spaces. Particularly useful in combination
3616 indent/unindent with 4 spaces. Particularly useful in combination
3610 with the new auto-indent option.
3617 with the new auto-indent option.
3611
3618
3612 2003-04-16 Fernando Perez <fperez@colorado.edu>
3619 2003-04-16 Fernando Perez <fperez@colorado.edu>
3613
3620
3614 * IPython/Magic.py: various replacements of self.rc for
3621 * IPython/Magic.py: various replacements of self.rc for
3615 self.shell.rc. A lot more remains to be done to fully disentangle
3622 self.shell.rc. A lot more remains to be done to fully disentangle
3616 this class from the main Shell class.
3623 this class from the main Shell class.
3617
3624
3618 * IPython/GnuplotRuntime.py: added checks for mouse support so
3625 * IPython/GnuplotRuntime.py: added checks for mouse support so
3619 that we don't try to enable it if the current gnuplot doesn't
3626 that we don't try to enable it if the current gnuplot doesn't
3620 really support it. Also added checks so that we don't try to
3627 really support it. Also added checks so that we don't try to
3621 enable persist under Windows (where Gnuplot doesn't recognize the
3628 enable persist under Windows (where Gnuplot doesn't recognize the
3622 option).
3629 option).
3623
3630
3624 * IPython/iplib.py (InteractiveShell.interact): Added optional
3631 * IPython/iplib.py (InteractiveShell.interact): Added optional
3625 auto-indenting code, after a patch by King C. Shu
3632 auto-indenting code, after a patch by King C. Shu
3626 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3633 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3627 get along well with pasting indented code. If I ever figure out
3634 get along well with pasting indented code. If I ever figure out
3628 how to make that part go well, it will become on by default.
3635 how to make that part go well, it will become on by default.
3629
3636
3630 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3637 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3631 crash ipython if there was an unmatched '%' in the user's prompt
3638 crash ipython if there was an unmatched '%' in the user's prompt
3632 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3639 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3633
3640
3634 * IPython/iplib.py (InteractiveShell.interact): removed the
3641 * IPython/iplib.py (InteractiveShell.interact): removed the
3635 ability to ask the user whether he wants to crash or not at the
3642 ability to ask the user whether he wants to crash or not at the
3636 'last line' exception handler. Calling functions at that point
3643 'last line' exception handler. Calling functions at that point
3637 changes the stack, and the error reports would have incorrect
3644 changes the stack, and the error reports would have incorrect
3638 tracebacks.
3645 tracebacks.
3639
3646
3640 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3647 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3641 pass through a peger a pretty-printed form of any object. After a
3648 pass through a peger a pretty-printed form of any object. After a
3642 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3649 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3643
3650
3644 2003-04-14 Fernando Perez <fperez@colorado.edu>
3651 2003-04-14 Fernando Perez <fperez@colorado.edu>
3645
3652
3646 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3653 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3647 all files in ~ would be modified at first install (instead of
3654 all files in ~ would be modified at first install (instead of
3648 ~/.ipython). This could be potentially disastrous, as the
3655 ~/.ipython). This could be potentially disastrous, as the
3649 modification (make line-endings native) could damage binary files.
3656 modification (make line-endings native) could damage binary files.
3650
3657
3651 2003-04-10 Fernando Perez <fperez@colorado.edu>
3658 2003-04-10 Fernando Perez <fperez@colorado.edu>
3652
3659
3653 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3660 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3654 handle only lines which are invalid python. This now means that
3661 handle only lines which are invalid python. This now means that
3655 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3662 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3656 for the bug report.
3663 for the bug report.
3657
3664
3658 2003-04-01 Fernando Perez <fperez@colorado.edu>
3665 2003-04-01 Fernando Perez <fperez@colorado.edu>
3659
3666
3660 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3667 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3661 where failing to set sys.last_traceback would crash pdb.pm().
3668 where failing to set sys.last_traceback would crash pdb.pm().
3662 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3669 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3663 report.
3670 report.
3664
3671
3665 2003-03-25 Fernando Perez <fperez@colorado.edu>
3672 2003-03-25 Fernando Perez <fperez@colorado.edu>
3666
3673
3667 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3674 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3668 before printing it (it had a lot of spurious blank lines at the
3675 before printing it (it had a lot of spurious blank lines at the
3669 end).
3676 end).
3670
3677
3671 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3678 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3672 output would be sent 21 times! Obviously people don't use this
3679 output would be sent 21 times! Obviously people don't use this
3673 too often, or I would have heard about it.
3680 too often, or I would have heard about it.
3674
3681
3675 2003-03-24 Fernando Perez <fperez@colorado.edu>
3682 2003-03-24 Fernando Perez <fperez@colorado.edu>
3676
3683
3677 * setup.py (scriptfiles): renamed the data_files parameter from
3684 * setup.py (scriptfiles): renamed the data_files parameter from
3678 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3685 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3679 for the patch.
3686 for the patch.
3680
3687
3681 2003-03-20 Fernando Perez <fperez@colorado.edu>
3688 2003-03-20 Fernando Perez <fperez@colorado.edu>
3682
3689
3683 * IPython/genutils.py (error): added error() and fatal()
3690 * IPython/genutils.py (error): added error() and fatal()
3684 functions.
3691 functions.
3685
3692
3686 2003-03-18 *** Released version 0.2.15pre3
3693 2003-03-18 *** Released version 0.2.15pre3
3687
3694
3688 2003-03-18 Fernando Perez <fperez@colorado.edu>
3695 2003-03-18 Fernando Perez <fperez@colorado.edu>
3689
3696
3690 * setupext/install_data_ext.py
3697 * setupext/install_data_ext.py
3691 (install_data_ext.initialize_options): Class contributed by Jack
3698 (install_data_ext.initialize_options): Class contributed by Jack
3692 Moffit for fixing the old distutils hack. He is sending this to
3699 Moffit for fixing the old distutils hack. He is sending this to
3693 the distutils folks so in the future we may not need it as a
3700 the distutils folks so in the future we may not need it as a
3694 private fix.
3701 private fix.
3695
3702
3696 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3703 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3697 changes for Debian packaging. See his patch for full details.
3704 changes for Debian packaging. See his patch for full details.
3698 The old distutils hack of making the ipythonrc* files carry a
3705 The old distutils hack of making the ipythonrc* files carry a
3699 bogus .py extension is gone, at last. Examples were moved to a
3706 bogus .py extension is gone, at last. Examples were moved to a
3700 separate subdir under doc/, and the separate executable scripts
3707 separate subdir under doc/, and the separate executable scripts
3701 now live in their own directory. Overall a great cleanup. The
3708 now live in their own directory. Overall a great cleanup. The
3702 manual was updated to use the new files, and setup.py has been
3709 manual was updated to use the new files, and setup.py has been
3703 fixed for this setup.
3710 fixed for this setup.
3704
3711
3705 * IPython/PyColorize.py (Parser.usage): made non-executable and
3712 * IPython/PyColorize.py (Parser.usage): made non-executable and
3706 created a pycolor wrapper around it to be included as a script.
3713 created a pycolor wrapper around it to be included as a script.
3707
3714
3708 2003-03-12 *** Released version 0.2.15pre2
3715 2003-03-12 *** Released version 0.2.15pre2
3709
3716
3710 2003-03-12 Fernando Perez <fperez@colorado.edu>
3717 2003-03-12 Fernando Perez <fperez@colorado.edu>
3711
3718
3712 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3719 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3713 long-standing problem with garbage characters in some terminals.
3720 long-standing problem with garbage characters in some terminals.
3714 The issue was really that the \001 and \002 escapes must _only_ be
3721 The issue was really that the \001 and \002 escapes must _only_ be
3715 passed to input prompts (which call readline), but _never_ to
3722 passed to input prompts (which call readline), but _never_ to
3716 normal text to be printed on screen. I changed ColorANSI to have
3723 normal text to be printed on screen. I changed ColorANSI to have
3717 two classes: TermColors and InputTermColors, each with the
3724 two classes: TermColors and InputTermColors, each with the
3718 appropriate escapes for input prompts or normal text. The code in
3725 appropriate escapes for input prompts or normal text. The code in
3719 Prompts.py got slightly more complicated, but this very old and
3726 Prompts.py got slightly more complicated, but this very old and
3720 annoying bug is finally fixed.
3727 annoying bug is finally fixed.
3721
3728
3722 All the credit for nailing down the real origin of this problem
3729 All the credit for nailing down the real origin of this problem
3723 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3730 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3724 *Many* thanks to him for spending quite a bit of effort on this.
3731 *Many* thanks to him for spending quite a bit of effort on this.
3725
3732
3726 2003-03-05 *** Released version 0.2.15pre1
3733 2003-03-05 *** Released version 0.2.15pre1
3727
3734
3728 2003-03-03 Fernando Perez <fperez@colorado.edu>
3735 2003-03-03 Fernando Perez <fperez@colorado.edu>
3729
3736
3730 * IPython/FakeModule.py: Moved the former _FakeModule to a
3737 * IPython/FakeModule.py: Moved the former _FakeModule to a
3731 separate file, because it's also needed by Magic (to fix a similar
3738 separate file, because it's also needed by Magic (to fix a similar
3732 pickle-related issue in @run).
3739 pickle-related issue in @run).
3733
3740
3734 2003-03-02 Fernando Perez <fperez@colorado.edu>
3741 2003-03-02 Fernando Perez <fperez@colorado.edu>
3735
3742
3736 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3743 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3737 the autocall option at runtime.
3744 the autocall option at runtime.
3738 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3745 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3739 across Magic.py to start separating Magic from InteractiveShell.
3746 across Magic.py to start separating Magic from InteractiveShell.
3740 (Magic._ofind): Fixed to return proper namespace for dotted
3747 (Magic._ofind): Fixed to return proper namespace for dotted
3741 names. Before, a dotted name would always return 'not currently
3748 names. Before, a dotted name would always return 'not currently
3742 defined', because it would find the 'parent'. s.x would be found,
3749 defined', because it would find the 'parent'. s.x would be found,
3743 but since 'x' isn't defined by itself, it would get confused.
3750 but since 'x' isn't defined by itself, it would get confused.
3744 (Magic.magic_run): Fixed pickling problems reported by Ralf
3751 (Magic.magic_run): Fixed pickling problems reported by Ralf
3745 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3752 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3746 that I'd used when Mike Heeter reported similar issues at the
3753 that I'd used when Mike Heeter reported similar issues at the
3747 top-level, but now for @run. It boils down to injecting the
3754 top-level, but now for @run. It boils down to injecting the
3748 namespace where code is being executed with something that looks
3755 namespace where code is being executed with something that looks
3749 enough like a module to fool pickle.dump(). Since a pickle stores
3756 enough like a module to fool pickle.dump(). Since a pickle stores
3750 a named reference to the importing module, we need this for
3757 a named reference to the importing module, we need this for
3751 pickles to save something sensible.
3758 pickles to save something sensible.
3752
3759
3753 * IPython/ipmaker.py (make_IPython): added an autocall option.
3760 * IPython/ipmaker.py (make_IPython): added an autocall option.
3754
3761
3755 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3762 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3756 the auto-eval code. Now autocalling is an option, and the code is
3763 the auto-eval code. Now autocalling is an option, and the code is
3757 also vastly safer. There is no more eval() involved at all.
3764 also vastly safer. There is no more eval() involved at all.
3758
3765
3759 2003-03-01 Fernando Perez <fperez@colorado.edu>
3766 2003-03-01 Fernando Perez <fperez@colorado.edu>
3760
3767
3761 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3768 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3762 dict with named keys instead of a tuple.
3769 dict with named keys instead of a tuple.
3763
3770
3764 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3771 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3765
3772
3766 * setup.py (make_shortcut): Fixed message about directories
3773 * setup.py (make_shortcut): Fixed message about directories
3767 created during Windows installation (the directories were ok, just
3774 created during Windows installation (the directories were ok, just
3768 the printed message was misleading). Thanks to Chris Liechti
3775 the printed message was misleading). Thanks to Chris Liechti
3769 <cliechti-AT-gmx.net> for the heads up.
3776 <cliechti-AT-gmx.net> for the heads up.
3770
3777
3771 2003-02-21 Fernando Perez <fperez@colorado.edu>
3778 2003-02-21 Fernando Perez <fperez@colorado.edu>
3772
3779
3773 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3780 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3774 of ValueError exception when checking for auto-execution. This
3781 of ValueError exception when checking for auto-execution. This
3775 one is raised by things like Numeric arrays arr.flat when the
3782 one is raised by things like Numeric arrays arr.flat when the
3776 array is non-contiguous.
3783 array is non-contiguous.
3777
3784
3778 2003-01-31 Fernando Perez <fperez@colorado.edu>
3785 2003-01-31 Fernando Perez <fperez@colorado.edu>
3779
3786
3780 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3787 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3781 not return any value at all (even though the command would get
3788 not return any value at all (even though the command would get
3782 executed).
3789 executed).
3783 (xsys): Flush stdout right after printing the command to ensure
3790 (xsys): Flush stdout right after printing the command to ensure
3784 proper ordering of commands and command output in the total
3791 proper ordering of commands and command output in the total
3785 output.
3792 output.
3786 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3793 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3787 system/getoutput as defaults. The old ones are kept for
3794 system/getoutput as defaults. The old ones are kept for
3788 compatibility reasons, so no code which uses this library needs
3795 compatibility reasons, so no code which uses this library needs
3789 changing.
3796 changing.
3790
3797
3791 2003-01-27 *** Released version 0.2.14
3798 2003-01-27 *** Released version 0.2.14
3792
3799
3793 2003-01-25 Fernando Perez <fperez@colorado.edu>
3800 2003-01-25 Fernando Perez <fperez@colorado.edu>
3794
3801
3795 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3802 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3796 functions defined in previous edit sessions could not be re-edited
3803 functions defined in previous edit sessions could not be re-edited
3797 (because the temp files were immediately removed). Now temp files
3804 (because the temp files were immediately removed). Now temp files
3798 are removed only at IPython's exit.
3805 are removed only at IPython's exit.
3799 (Magic.magic_run): Improved @run to perform shell-like expansions
3806 (Magic.magic_run): Improved @run to perform shell-like expansions
3800 on its arguments (~users and $VARS). With this, @run becomes more
3807 on its arguments (~users and $VARS). With this, @run becomes more
3801 like a normal command-line.
3808 like a normal command-line.
3802
3809
3803 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3810 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3804 bugs related to embedding and cleaned up that code. A fairly
3811 bugs related to embedding and cleaned up that code. A fairly
3805 important one was the impossibility to access the global namespace
3812 important one was the impossibility to access the global namespace
3806 through the embedded IPython (only local variables were visible).
3813 through the embedded IPython (only local variables were visible).
3807
3814
3808 2003-01-14 Fernando Perez <fperez@colorado.edu>
3815 2003-01-14 Fernando Perez <fperez@colorado.edu>
3809
3816
3810 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3817 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3811 auto-calling to be a bit more conservative. Now it doesn't get
3818 auto-calling to be a bit more conservative. Now it doesn't get
3812 triggered if any of '!=()<>' are in the rest of the input line, to
3819 triggered if any of '!=()<>' are in the rest of the input line, to
3813 allow comparing callables. Thanks to Alex for the heads up.
3820 allow comparing callables. Thanks to Alex for the heads up.
3814
3821
3815 2003-01-07 Fernando Perez <fperez@colorado.edu>
3822 2003-01-07 Fernando Perez <fperez@colorado.edu>
3816
3823
3817 * IPython/genutils.py (page): fixed estimation of the number of
3824 * IPython/genutils.py (page): fixed estimation of the number of
3818 lines in a string to be paged to simply count newlines. This
3825 lines in a string to be paged to simply count newlines. This
3819 prevents over-guessing due to embedded escape sequences. A better
3826 prevents over-guessing due to embedded escape sequences. A better
3820 long-term solution would involve stripping out the control chars
3827 long-term solution would involve stripping out the control chars
3821 for the count, but it's potentially so expensive I just don't
3828 for the count, but it's potentially so expensive I just don't
3822 think it's worth doing.
3829 think it's worth doing.
3823
3830
3824 2002-12-19 *** Released version 0.2.14pre50
3831 2002-12-19 *** Released version 0.2.14pre50
3825
3832
3826 2002-12-19 Fernando Perez <fperez@colorado.edu>
3833 2002-12-19 Fernando Perez <fperez@colorado.edu>
3827
3834
3828 * tools/release (version): Changed release scripts to inform
3835 * tools/release (version): Changed release scripts to inform
3829 Andrea and build a NEWS file with a list of recent changes.
3836 Andrea and build a NEWS file with a list of recent changes.
3830
3837
3831 * IPython/ColorANSI.py (__all__): changed terminal detection
3838 * IPython/ColorANSI.py (__all__): changed terminal detection
3832 code. Seems to work better for xterms without breaking
3839 code. Seems to work better for xterms without breaking
3833 konsole. Will need more testing to determine if WinXP and Mac OSX
3840 konsole. Will need more testing to determine if WinXP and Mac OSX
3834 also work ok.
3841 also work ok.
3835
3842
3836 2002-12-18 *** Released version 0.2.14pre49
3843 2002-12-18 *** Released version 0.2.14pre49
3837
3844
3838 2002-12-18 Fernando Perez <fperez@colorado.edu>
3845 2002-12-18 Fernando Perez <fperez@colorado.edu>
3839
3846
3840 * Docs: added new info about Mac OSX, from Andrea.
3847 * Docs: added new info about Mac OSX, from Andrea.
3841
3848
3842 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3849 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3843 allow direct plotting of python strings whose format is the same
3850 allow direct plotting of python strings whose format is the same
3844 of gnuplot data files.
3851 of gnuplot data files.
3845
3852
3846 2002-12-16 Fernando Perez <fperez@colorado.edu>
3853 2002-12-16 Fernando Perez <fperez@colorado.edu>
3847
3854
3848 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3855 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3849 value of exit question to be acknowledged.
3856 value of exit question to be acknowledged.
3850
3857
3851 2002-12-03 Fernando Perez <fperez@colorado.edu>
3858 2002-12-03 Fernando Perez <fperez@colorado.edu>
3852
3859
3853 * IPython/ipmaker.py: removed generators, which had been added
3860 * IPython/ipmaker.py: removed generators, which had been added
3854 by mistake in an earlier debugging run. This was causing trouble
3861 by mistake in an earlier debugging run. This was causing trouble
3855 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3862 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3856 for pointing this out.
3863 for pointing this out.
3857
3864
3858 2002-11-17 Fernando Perez <fperez@colorado.edu>
3865 2002-11-17 Fernando Perez <fperez@colorado.edu>
3859
3866
3860 * Manual: updated the Gnuplot section.
3867 * Manual: updated the Gnuplot section.
3861
3868
3862 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3869 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3863 a much better split of what goes in Runtime and what goes in
3870 a much better split of what goes in Runtime and what goes in
3864 Interactive.
3871 Interactive.
3865
3872
3866 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3873 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3867 being imported from iplib.
3874 being imported from iplib.
3868
3875
3869 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3876 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3870 for command-passing. Now the global Gnuplot instance is called
3877 for command-passing. Now the global Gnuplot instance is called
3871 'gp' instead of 'g', which was really a far too fragile and
3878 'gp' instead of 'g', which was really a far too fragile and
3872 common name.
3879 common name.
3873
3880
3874 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3881 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3875 bounding boxes generated by Gnuplot for square plots.
3882 bounding boxes generated by Gnuplot for square plots.
3876
3883
3877 * IPython/genutils.py (popkey): new function added. I should
3884 * IPython/genutils.py (popkey): new function added. I should
3878 suggest this on c.l.py as a dict method, it seems useful.
3885 suggest this on c.l.py as a dict method, it seems useful.
3879
3886
3880 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3887 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3881 to transparently handle PostScript generation. MUCH better than
3888 to transparently handle PostScript generation. MUCH better than
3882 the previous plot_eps/replot_eps (which I removed now). The code
3889 the previous plot_eps/replot_eps (which I removed now). The code
3883 is also fairly clean and well documented now (including
3890 is also fairly clean and well documented now (including
3884 docstrings).
3891 docstrings).
3885
3892
3886 2002-11-13 Fernando Perez <fperez@colorado.edu>
3893 2002-11-13 Fernando Perez <fperez@colorado.edu>
3887
3894
3888 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3895 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3889 (inconsistent with options).
3896 (inconsistent with options).
3890
3897
3891 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3898 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3892 manually disabled, I don't know why. Fixed it.
3899 manually disabled, I don't know why. Fixed it.
3893 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3900 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3894 eps output.
3901 eps output.
3895
3902
3896 2002-11-12 Fernando Perez <fperez@colorado.edu>
3903 2002-11-12 Fernando Perez <fperez@colorado.edu>
3897
3904
3898 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3905 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3899 don't propagate up to caller. Fixes crash reported by François
3906 don't propagate up to caller. Fixes crash reported by François
3900 Pinard.
3907 Pinard.
3901
3908
3902 2002-11-09 Fernando Perez <fperez@colorado.edu>
3909 2002-11-09 Fernando Perez <fperez@colorado.edu>
3903
3910
3904 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3911 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3905 history file for new users.
3912 history file for new users.
3906 (make_IPython): fixed bug where initial install would leave the
3913 (make_IPython): fixed bug where initial install would leave the
3907 user running in the .ipython dir.
3914 user running in the .ipython dir.
3908 (make_IPython): fixed bug where config dir .ipython would be
3915 (make_IPython): fixed bug where config dir .ipython would be
3909 created regardless of the given -ipythondir option. Thanks to Cory
3916 created regardless of the given -ipythondir option. Thanks to Cory
3910 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3917 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3911
3918
3912 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3919 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3913 type confirmations. Will need to use it in all of IPython's code
3920 type confirmations. Will need to use it in all of IPython's code
3914 consistently.
3921 consistently.
3915
3922
3916 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3923 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3917 context to print 31 lines instead of the default 5. This will make
3924 context to print 31 lines instead of the default 5. This will make
3918 the crash reports extremely detailed in case the problem is in
3925 the crash reports extremely detailed in case the problem is in
3919 libraries I don't have access to.
3926 libraries I don't have access to.
3920
3927
3921 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3928 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3922 line of defense' code to still crash, but giving users fair
3929 line of defense' code to still crash, but giving users fair
3923 warning. I don't want internal errors to go unreported: if there's
3930 warning. I don't want internal errors to go unreported: if there's
3924 an internal problem, IPython should crash and generate a full
3931 an internal problem, IPython should crash and generate a full
3925 report.
3932 report.
3926
3933
3927 2002-11-08 Fernando Perez <fperez@colorado.edu>
3934 2002-11-08 Fernando Perez <fperez@colorado.edu>
3928
3935
3929 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3936 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3930 otherwise uncaught exceptions which can appear if people set
3937 otherwise uncaught exceptions which can appear if people set
3931 sys.stdout to something badly broken. Thanks to a crash report
3938 sys.stdout to something badly broken. Thanks to a crash report
3932 from henni-AT-mail.brainbot.com.
3939 from henni-AT-mail.brainbot.com.
3933
3940
3934 2002-11-04 Fernando Perez <fperez@colorado.edu>
3941 2002-11-04 Fernando Perez <fperez@colorado.edu>
3935
3942
3936 * IPython/iplib.py (InteractiveShell.interact): added
3943 * IPython/iplib.py (InteractiveShell.interact): added
3937 __IPYTHON__active to the builtins. It's a flag which goes on when
3944 __IPYTHON__active to the builtins. It's a flag which goes on when
3938 the interaction starts and goes off again when it stops. This
3945 the interaction starts and goes off again when it stops. This
3939 allows embedding code to detect being inside IPython. Before this
3946 allows embedding code to detect being inside IPython. Before this
3940 was done via __IPYTHON__, but that only shows that an IPython
3947 was done via __IPYTHON__, but that only shows that an IPython
3941 instance has been created.
3948 instance has been created.
3942
3949
3943 * IPython/Magic.py (Magic.magic_env): I realized that in a
3950 * IPython/Magic.py (Magic.magic_env): I realized that in a
3944 UserDict, instance.data holds the data as a normal dict. So I
3951 UserDict, instance.data holds the data as a normal dict. So I
3945 modified @env to return os.environ.data instead of rebuilding a
3952 modified @env to return os.environ.data instead of rebuilding a
3946 dict by hand.
3953 dict by hand.
3947
3954
3948 2002-11-02 Fernando Perez <fperez@colorado.edu>
3955 2002-11-02 Fernando Perez <fperez@colorado.edu>
3949
3956
3950 * IPython/genutils.py (warn): changed so that level 1 prints no
3957 * IPython/genutils.py (warn): changed so that level 1 prints no
3951 header. Level 2 is now the default (with 'WARNING' header, as
3958 header. Level 2 is now the default (with 'WARNING' header, as
3952 before). I think I tracked all places where changes were needed in
3959 before). I think I tracked all places where changes were needed in
3953 IPython, but outside code using the old level numbering may have
3960 IPython, but outside code using the old level numbering may have
3954 broken.
3961 broken.
3955
3962
3956 * IPython/iplib.py (InteractiveShell.runcode): added this to
3963 * IPython/iplib.py (InteractiveShell.runcode): added this to
3957 handle the tracebacks in SystemExit traps correctly. The previous
3964 handle the tracebacks in SystemExit traps correctly. The previous
3958 code (through interact) was printing more of the stack than
3965 code (through interact) was printing more of the stack than
3959 necessary, showing IPython internal code to the user.
3966 necessary, showing IPython internal code to the user.
3960
3967
3961 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3968 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3962 default. Now that the default at the confirmation prompt is yes,
3969 default. Now that the default at the confirmation prompt is yes,
3963 it's not so intrusive. François' argument that ipython sessions
3970 it's not so intrusive. François' argument that ipython sessions
3964 tend to be complex enough not to lose them from an accidental C-d,
3971 tend to be complex enough not to lose them from an accidental C-d,
3965 is a valid one.
3972 is a valid one.
3966
3973
3967 * IPython/iplib.py (InteractiveShell.interact): added a
3974 * IPython/iplib.py (InteractiveShell.interact): added a
3968 showtraceback() call to the SystemExit trap, and modified the exit
3975 showtraceback() call to the SystemExit trap, and modified the exit
3969 confirmation to have yes as the default.
3976 confirmation to have yes as the default.
3970
3977
3971 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3978 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3972 this file. It's been gone from the code for a long time, this was
3979 this file. It's been gone from the code for a long time, this was
3973 simply leftover junk.
3980 simply leftover junk.
3974
3981
3975 2002-11-01 Fernando Perez <fperez@colorado.edu>
3982 2002-11-01 Fernando Perez <fperez@colorado.edu>
3976
3983
3977 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3984 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3978 added. If set, IPython now traps EOF and asks for
3985 added. If set, IPython now traps EOF and asks for
3979 confirmation. After a request by François Pinard.
3986 confirmation. After a request by François Pinard.
3980
3987
3981 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3988 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3982 of @abort, and with a new (better) mechanism for handling the
3989 of @abort, and with a new (better) mechanism for handling the
3983 exceptions.
3990 exceptions.
3984
3991
3985 2002-10-27 Fernando Perez <fperez@colorado.edu>
3992 2002-10-27 Fernando Perez <fperez@colorado.edu>
3986
3993
3987 * IPython/usage.py (__doc__): updated the --help information and
3994 * IPython/usage.py (__doc__): updated the --help information and
3988 the ipythonrc file to indicate that -log generates
3995 the ipythonrc file to indicate that -log generates
3989 ./ipython.log. Also fixed the corresponding info in @logstart.
3996 ./ipython.log. Also fixed the corresponding info in @logstart.
3990 This and several other fixes in the manuals thanks to reports by
3997 This and several other fixes in the manuals thanks to reports by
3991 François Pinard <pinard-AT-iro.umontreal.ca>.
3998 François Pinard <pinard-AT-iro.umontreal.ca>.
3992
3999
3993 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4000 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3994 refer to @logstart (instead of @log, which doesn't exist).
4001 refer to @logstart (instead of @log, which doesn't exist).
3995
4002
3996 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4003 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3997 AttributeError crash. Thanks to Christopher Armstrong
4004 AttributeError crash. Thanks to Christopher Armstrong
3998 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4005 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3999 introduced recently (in 0.2.14pre37) with the fix to the eval
4006 introduced recently (in 0.2.14pre37) with the fix to the eval
4000 problem mentioned below.
4007 problem mentioned below.
4001
4008
4002 2002-10-17 Fernando Perez <fperez@colorado.edu>
4009 2002-10-17 Fernando Perez <fperez@colorado.edu>
4003
4010
4004 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4011 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4005 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4012 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4006
4013
4007 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4014 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4008 this function to fix a problem reported by Alex Schmolck. He saw
4015 this function to fix a problem reported by Alex Schmolck. He saw
4009 it with list comprehensions and generators, which were getting
4016 it with list comprehensions and generators, which were getting
4010 called twice. The real problem was an 'eval' call in testing for
4017 called twice. The real problem was an 'eval' call in testing for
4011 automagic which was evaluating the input line silently.
4018 automagic which was evaluating the input line silently.
4012
4019
4013 This is a potentially very nasty bug, if the input has side
4020 This is a potentially very nasty bug, if the input has side
4014 effects which must not be repeated. The code is much cleaner now,
4021 effects which must not be repeated. The code is much cleaner now,
4015 without any blanket 'except' left and with a regexp test for
4022 without any blanket 'except' left and with a regexp test for
4016 actual function names.
4023 actual function names.
4017
4024
4018 But an eval remains, which I'm not fully comfortable with. I just
4025 But an eval remains, which I'm not fully comfortable with. I just
4019 don't know how to find out if an expression could be a callable in
4026 don't know how to find out if an expression could be a callable in
4020 the user's namespace without doing an eval on the string. However
4027 the user's namespace without doing an eval on the string. However
4021 that string is now much more strictly checked so that no code
4028 that string is now much more strictly checked so that no code
4022 slips by, so the eval should only happen for things that can
4029 slips by, so the eval should only happen for things that can
4023 really be only function/method names.
4030 really be only function/method names.
4024
4031
4025 2002-10-15 Fernando Perez <fperez@colorado.edu>
4032 2002-10-15 Fernando Perez <fperez@colorado.edu>
4026
4033
4027 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4034 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4028 OSX information to main manual, removed README_Mac_OSX file from
4035 OSX information to main manual, removed README_Mac_OSX file from
4029 distribution. Also updated credits for recent additions.
4036 distribution. Also updated credits for recent additions.
4030
4037
4031 2002-10-10 Fernando Perez <fperez@colorado.edu>
4038 2002-10-10 Fernando Perez <fperez@colorado.edu>
4032
4039
4033 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4040 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4034 terminal-related issues. Many thanks to Andrea Riciputi
4041 terminal-related issues. Many thanks to Andrea Riciputi
4035 <andrea.riciputi-AT-libero.it> for writing it.
4042 <andrea.riciputi-AT-libero.it> for writing it.
4036
4043
4037 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4044 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4038 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4045 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4039
4046
4040 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4047 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4041 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4048 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4042 <syver-en-AT-online.no> who both submitted patches for this problem.
4049 <syver-en-AT-online.no> who both submitted patches for this problem.
4043
4050
4044 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4051 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4045 global embedding to make sure that things don't overwrite user
4052 global embedding to make sure that things don't overwrite user
4046 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4053 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4047
4054
4048 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4055 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4049 compatibility. Thanks to Hayden Callow
4056 compatibility. Thanks to Hayden Callow
4050 <h.callow-AT-elec.canterbury.ac.nz>
4057 <h.callow-AT-elec.canterbury.ac.nz>
4051
4058
4052 2002-10-04 Fernando Perez <fperez@colorado.edu>
4059 2002-10-04 Fernando Perez <fperez@colorado.edu>
4053
4060
4054 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4061 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4055 Gnuplot.File objects.
4062 Gnuplot.File objects.
4056
4063
4057 2002-07-23 Fernando Perez <fperez@colorado.edu>
4064 2002-07-23 Fernando Perez <fperez@colorado.edu>
4058
4065
4059 * IPython/genutils.py (timing): Added timings() and timing() for
4066 * IPython/genutils.py (timing): Added timings() and timing() for
4060 quick access to the most commonly needed data, the execution
4067 quick access to the most commonly needed data, the execution
4061 times. Old timing() renamed to timings_out().
4068 times. Old timing() renamed to timings_out().
4062
4069
4063 2002-07-18 Fernando Perez <fperez@colorado.edu>
4070 2002-07-18 Fernando Perez <fperez@colorado.edu>
4064
4071
4065 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4072 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4066 bug with nested instances disrupting the parent's tab completion.
4073 bug with nested instances disrupting the parent's tab completion.
4067
4074
4068 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4075 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4069 all_completions code to begin the emacs integration.
4076 all_completions code to begin the emacs integration.
4070
4077
4071 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4078 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4072 argument to allow titling individual arrays when plotting.
4079 argument to allow titling individual arrays when plotting.
4073
4080
4074 2002-07-15 Fernando Perez <fperez@colorado.edu>
4081 2002-07-15 Fernando Perez <fperez@colorado.edu>
4075
4082
4076 * setup.py (make_shortcut): changed to retrieve the value of
4083 * setup.py (make_shortcut): changed to retrieve the value of
4077 'Program Files' directory from the registry (this value changes in
4084 'Program Files' directory from the registry (this value changes in
4078 non-english versions of Windows). Thanks to Thomas Fanslau
4085 non-english versions of Windows). Thanks to Thomas Fanslau
4079 <tfanslau-AT-gmx.de> for the report.
4086 <tfanslau-AT-gmx.de> for the report.
4080
4087
4081 2002-07-10 Fernando Perez <fperez@colorado.edu>
4088 2002-07-10 Fernando Perez <fperez@colorado.edu>
4082
4089
4083 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4090 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4084 a bug in pdb, which crashes if a line with only whitespace is
4091 a bug in pdb, which crashes if a line with only whitespace is
4085 entered. Bug report submitted to sourceforge.
4092 entered. Bug report submitted to sourceforge.
4086
4093
4087 2002-07-09 Fernando Perez <fperez@colorado.edu>
4094 2002-07-09 Fernando Perez <fperez@colorado.edu>
4088
4095
4089 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4096 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4090 reporting exceptions (it's a bug in inspect.py, I just set a
4097 reporting exceptions (it's a bug in inspect.py, I just set a
4091 workaround).
4098 workaround).
4092
4099
4093 2002-07-08 Fernando Perez <fperez@colorado.edu>
4100 2002-07-08 Fernando Perez <fperez@colorado.edu>
4094
4101
4095 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4102 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4096 __IPYTHON__ in __builtins__ to show up in user_ns.
4103 __IPYTHON__ in __builtins__ to show up in user_ns.
4097
4104
4098 2002-07-03 Fernando Perez <fperez@colorado.edu>
4105 2002-07-03 Fernando Perez <fperez@colorado.edu>
4099
4106
4100 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4107 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4101 name from @gp_set_instance to @gp_set_default.
4108 name from @gp_set_instance to @gp_set_default.
4102
4109
4103 * IPython/ipmaker.py (make_IPython): default editor value set to
4110 * IPython/ipmaker.py (make_IPython): default editor value set to
4104 '0' (a string), to match the rc file. Otherwise will crash when
4111 '0' (a string), to match the rc file. Otherwise will crash when
4105 .strip() is called on it.
4112 .strip() is called on it.
4106
4113
4107
4114
4108 2002-06-28 Fernando Perez <fperez@colorado.edu>
4115 2002-06-28 Fernando Perez <fperez@colorado.edu>
4109
4116
4110 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4117 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4111 of files in current directory when a file is executed via
4118 of files in current directory when a file is executed via
4112 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4119 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4113
4120
4114 * setup.py (manfiles): fix for rpm builds, submitted by RA
4121 * setup.py (manfiles): fix for rpm builds, submitted by RA
4115 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4122 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4116
4123
4117 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4124 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4118 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4125 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4119 string!). A. Schmolck caught this one.
4126 string!). A. Schmolck caught this one.
4120
4127
4121 2002-06-27 Fernando Perez <fperez@colorado.edu>
4128 2002-06-27 Fernando Perez <fperez@colorado.edu>
4122
4129
4123 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4130 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4124 defined files at the cmd line. __name__ wasn't being set to
4131 defined files at the cmd line. __name__ wasn't being set to
4125 __main__.
4132 __main__.
4126
4133
4127 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4134 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4128 regular lists and tuples besides Numeric arrays.
4135 regular lists and tuples besides Numeric arrays.
4129
4136
4130 * IPython/Prompts.py (CachedOutput.__call__): Added output
4137 * IPython/Prompts.py (CachedOutput.__call__): Added output
4131 supression for input ending with ';'. Similar to Mathematica and
4138 supression for input ending with ';'. Similar to Mathematica and
4132 Matlab. The _* vars and Out[] list are still updated, just like
4139 Matlab. The _* vars and Out[] list are still updated, just like
4133 Mathematica behaves.
4140 Mathematica behaves.
4134
4141
4135 2002-06-25 Fernando Perez <fperez@colorado.edu>
4142 2002-06-25 Fernando Perez <fperez@colorado.edu>
4136
4143
4137 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4144 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4138 .ini extensions for profiels under Windows.
4145 .ini extensions for profiels under Windows.
4139
4146
4140 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4147 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4141 string form. Fix contributed by Alexander Schmolck
4148 string form. Fix contributed by Alexander Schmolck
4142 <a.schmolck-AT-gmx.net>
4149 <a.schmolck-AT-gmx.net>
4143
4150
4144 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4151 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4145 pre-configured Gnuplot instance.
4152 pre-configured Gnuplot instance.
4146
4153
4147 2002-06-21 Fernando Perez <fperez@colorado.edu>
4154 2002-06-21 Fernando Perez <fperez@colorado.edu>
4148
4155
4149 * IPython/numutils.py (exp_safe): new function, works around the
4156 * IPython/numutils.py (exp_safe): new function, works around the
4150 underflow problems in Numeric.
4157 underflow problems in Numeric.
4151 (log2): New fn. Safe log in base 2: returns exact integer answer
4158 (log2): New fn. Safe log in base 2: returns exact integer answer
4152 for exact integer powers of 2.
4159 for exact integer powers of 2.
4153
4160
4154 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4161 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4155 properly.
4162 properly.
4156
4163
4157 2002-06-20 Fernando Perez <fperez@colorado.edu>
4164 2002-06-20 Fernando Perez <fperez@colorado.edu>
4158
4165
4159 * IPython/genutils.py (timing): new function like
4166 * IPython/genutils.py (timing): new function like
4160 Mathematica's. Similar to time_test, but returns more info.
4167 Mathematica's. Similar to time_test, but returns more info.
4161
4168
4162 2002-06-18 Fernando Perez <fperez@colorado.edu>
4169 2002-06-18 Fernando Perez <fperez@colorado.edu>
4163
4170
4164 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4171 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4165 according to Mike Heeter's suggestions.
4172 according to Mike Heeter's suggestions.
4166
4173
4167 2002-06-16 Fernando Perez <fperez@colorado.edu>
4174 2002-06-16 Fernando Perez <fperez@colorado.edu>
4168
4175
4169 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4176 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4170 system. GnuplotMagic is gone as a user-directory option. New files
4177 system. GnuplotMagic is gone as a user-directory option. New files
4171 make it easier to use all the gnuplot stuff both from external
4178 make it easier to use all the gnuplot stuff both from external
4172 programs as well as from IPython. Had to rewrite part of
4179 programs as well as from IPython. Had to rewrite part of
4173 hardcopy() b/c of a strange bug: often the ps files simply don't
4180 hardcopy() b/c of a strange bug: often the ps files simply don't
4174 get created, and require a repeat of the command (often several
4181 get created, and require a repeat of the command (often several
4175 times).
4182 times).
4176
4183
4177 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4184 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4178 resolve output channel at call time, so that if sys.stderr has
4185 resolve output channel at call time, so that if sys.stderr has
4179 been redirected by user this gets honored.
4186 been redirected by user this gets honored.
4180
4187
4181 2002-06-13 Fernando Perez <fperez@colorado.edu>
4188 2002-06-13 Fernando Perez <fperez@colorado.edu>
4182
4189
4183 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4190 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4184 IPShell. Kept a copy with the old names to avoid breaking people's
4191 IPShell. Kept a copy with the old names to avoid breaking people's
4185 embedded code.
4192 embedded code.
4186
4193
4187 * IPython/ipython: simplified it to the bare minimum after
4194 * IPython/ipython: simplified it to the bare minimum after
4188 Holger's suggestions. Added info about how to use it in
4195 Holger's suggestions. Added info about how to use it in
4189 PYTHONSTARTUP.
4196 PYTHONSTARTUP.
4190
4197
4191 * IPython/Shell.py (IPythonShell): changed the options passing
4198 * IPython/Shell.py (IPythonShell): changed the options passing
4192 from a string with funky %s replacements to a straight list. Maybe
4199 from a string with funky %s replacements to a straight list. Maybe
4193 a bit more typing, but it follows sys.argv conventions, so there's
4200 a bit more typing, but it follows sys.argv conventions, so there's
4194 less special-casing to remember.
4201 less special-casing to remember.
4195
4202
4196 2002-06-12 Fernando Perez <fperez@colorado.edu>
4203 2002-06-12 Fernando Perez <fperez@colorado.edu>
4197
4204
4198 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4205 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4199 command. Thanks to a suggestion by Mike Heeter.
4206 command. Thanks to a suggestion by Mike Heeter.
4200 (Magic.magic_pfile): added behavior to look at filenames if given
4207 (Magic.magic_pfile): added behavior to look at filenames if given
4201 arg is not a defined object.
4208 arg is not a defined object.
4202 (Magic.magic_save): New @save function to save code snippets. Also
4209 (Magic.magic_save): New @save function to save code snippets. Also
4203 a Mike Heeter idea.
4210 a Mike Heeter idea.
4204
4211
4205 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4212 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4206 plot() and replot(). Much more convenient now, especially for
4213 plot() and replot(). Much more convenient now, especially for
4207 interactive use.
4214 interactive use.
4208
4215
4209 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4216 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4210 filenames.
4217 filenames.
4211
4218
4212 2002-06-02 Fernando Perez <fperez@colorado.edu>
4219 2002-06-02 Fernando Perez <fperez@colorado.edu>
4213
4220
4214 * IPython/Struct.py (Struct.__init__): modified to admit
4221 * IPython/Struct.py (Struct.__init__): modified to admit
4215 initialization via another struct.
4222 initialization via another struct.
4216
4223
4217 * IPython/genutils.py (SystemExec.__init__): New stateful
4224 * IPython/genutils.py (SystemExec.__init__): New stateful
4218 interface to xsys and bq. Useful for writing system scripts.
4225 interface to xsys and bq. Useful for writing system scripts.
4219
4226
4220 2002-05-30 Fernando Perez <fperez@colorado.edu>
4227 2002-05-30 Fernando Perez <fperez@colorado.edu>
4221
4228
4222 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4229 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4223 documents. This will make the user download smaller (it's getting
4230 documents. This will make the user download smaller (it's getting
4224 too big).
4231 too big).
4225
4232
4226 2002-05-29 Fernando Perez <fperez@colorado.edu>
4233 2002-05-29 Fernando Perez <fperez@colorado.edu>
4227
4234
4228 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4235 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4229 fix problems with shelve and pickle. Seems to work, but I don't
4236 fix problems with shelve and pickle. Seems to work, but I don't
4230 know if corner cases break it. Thanks to Mike Heeter
4237 know if corner cases break it. Thanks to Mike Heeter
4231 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4238 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4232
4239
4233 2002-05-24 Fernando Perez <fperez@colorado.edu>
4240 2002-05-24 Fernando Perez <fperez@colorado.edu>
4234
4241
4235 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4242 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4236 macros having broken.
4243 macros having broken.
4237
4244
4238 2002-05-21 Fernando Perez <fperez@colorado.edu>
4245 2002-05-21 Fernando Perez <fperez@colorado.edu>
4239
4246
4240 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4247 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4241 introduced logging bug: all history before logging started was
4248 introduced logging bug: all history before logging started was
4242 being written one character per line! This came from the redesign
4249 being written one character per line! This came from the redesign
4243 of the input history as a special list which slices to strings,
4250 of the input history as a special list which slices to strings,
4244 not to lists.
4251 not to lists.
4245
4252
4246 2002-05-20 Fernando Perez <fperez@colorado.edu>
4253 2002-05-20 Fernando Perez <fperez@colorado.edu>
4247
4254
4248 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4255 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4249 be an attribute of all classes in this module. The design of these
4256 be an attribute of all classes in this module. The design of these
4250 classes needs some serious overhauling.
4257 classes needs some serious overhauling.
4251
4258
4252 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4259 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4253 which was ignoring '_' in option names.
4260 which was ignoring '_' in option names.
4254
4261
4255 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4262 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4256 'Verbose_novars' to 'Context' and made it the new default. It's a
4263 'Verbose_novars' to 'Context' and made it the new default. It's a
4257 bit more readable and also safer than verbose.
4264 bit more readable and also safer than verbose.
4258
4265
4259 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4266 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4260 triple-quoted strings.
4267 triple-quoted strings.
4261
4268
4262 * IPython/OInspect.py (__all__): new module exposing the object
4269 * IPython/OInspect.py (__all__): new module exposing the object
4263 introspection facilities. Now the corresponding magics are dummy
4270 introspection facilities. Now the corresponding magics are dummy
4264 wrappers around this. Having this module will make it much easier
4271 wrappers around this. Having this module will make it much easier
4265 to put these functions into our modified pdb.
4272 to put these functions into our modified pdb.
4266 This new object inspector system uses the new colorizing module,
4273 This new object inspector system uses the new colorizing module,
4267 so source code and other things are nicely syntax highlighted.
4274 so source code and other things are nicely syntax highlighted.
4268
4275
4269 2002-05-18 Fernando Perez <fperez@colorado.edu>
4276 2002-05-18 Fernando Perez <fperez@colorado.edu>
4270
4277
4271 * IPython/ColorANSI.py: Split the coloring tools into a separate
4278 * IPython/ColorANSI.py: Split the coloring tools into a separate
4272 module so I can use them in other code easier (they were part of
4279 module so I can use them in other code easier (they were part of
4273 ultraTB).
4280 ultraTB).
4274
4281
4275 2002-05-17 Fernando Perez <fperez@colorado.edu>
4282 2002-05-17 Fernando Perez <fperez@colorado.edu>
4276
4283
4277 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4284 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4278 fixed it to set the global 'g' also to the called instance, as
4285 fixed it to set the global 'g' also to the called instance, as
4279 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4286 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4280 user's 'g' variables).
4287 user's 'g' variables).
4281
4288
4282 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4289 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4283 global variables (aliases to _ih,_oh) so that users which expect
4290 global variables (aliases to _ih,_oh) so that users which expect
4284 In[5] or Out[7] to work aren't unpleasantly surprised.
4291 In[5] or Out[7] to work aren't unpleasantly surprised.
4285 (InputList.__getslice__): new class to allow executing slices of
4292 (InputList.__getslice__): new class to allow executing slices of
4286 input history directly. Very simple class, complements the use of
4293 input history directly. Very simple class, complements the use of
4287 macros.
4294 macros.
4288
4295
4289 2002-05-16 Fernando Perez <fperez@colorado.edu>
4296 2002-05-16 Fernando Perez <fperez@colorado.edu>
4290
4297
4291 * setup.py (docdirbase): make doc directory be just doc/IPython
4298 * setup.py (docdirbase): make doc directory be just doc/IPython
4292 without version numbers, it will reduce clutter for users.
4299 without version numbers, it will reduce clutter for users.
4293
4300
4294 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4301 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4295 execfile call to prevent possible memory leak. See for details:
4302 execfile call to prevent possible memory leak. See for details:
4296 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4303 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4297
4304
4298 2002-05-15 Fernando Perez <fperez@colorado.edu>
4305 2002-05-15 Fernando Perez <fperez@colorado.edu>
4299
4306
4300 * IPython/Magic.py (Magic.magic_psource): made the object
4307 * IPython/Magic.py (Magic.magic_psource): made the object
4301 introspection names be more standard: pdoc, pdef, pfile and
4308 introspection names be more standard: pdoc, pdef, pfile and
4302 psource. They all print/page their output, and it makes
4309 psource. They all print/page their output, and it makes
4303 remembering them easier. Kept old names for compatibility as
4310 remembering them easier. Kept old names for compatibility as
4304 aliases.
4311 aliases.
4305
4312
4306 2002-05-14 Fernando Perez <fperez@colorado.edu>
4313 2002-05-14 Fernando Perez <fperez@colorado.edu>
4307
4314
4308 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4315 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4309 what the mouse problem was. The trick is to use gnuplot with temp
4316 what the mouse problem was. The trick is to use gnuplot with temp
4310 files and NOT with pipes (for data communication), because having
4317 files and NOT with pipes (for data communication), because having
4311 both pipes and the mouse on is bad news.
4318 both pipes and the mouse on is bad news.
4312
4319
4313 2002-05-13 Fernando Perez <fperez@colorado.edu>
4320 2002-05-13 Fernando Perez <fperez@colorado.edu>
4314
4321
4315 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4322 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4316 bug. Information would be reported about builtins even when
4323 bug. Information would be reported about builtins even when
4317 user-defined functions overrode them.
4324 user-defined functions overrode them.
4318
4325
4319 2002-05-11 Fernando Perez <fperez@colorado.edu>
4326 2002-05-11 Fernando Perez <fperez@colorado.edu>
4320
4327
4321 * IPython/__init__.py (__all__): removed FlexCompleter from
4328 * IPython/__init__.py (__all__): removed FlexCompleter from
4322 __all__ so that things don't fail in platforms without readline.
4329 __all__ so that things don't fail in platforms without readline.
4323
4330
4324 2002-05-10 Fernando Perez <fperez@colorado.edu>
4331 2002-05-10 Fernando Perez <fperez@colorado.edu>
4325
4332
4326 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4333 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4327 it requires Numeric, effectively making Numeric a dependency for
4334 it requires Numeric, effectively making Numeric a dependency for
4328 IPython.
4335 IPython.
4329
4336
4330 * Released 0.2.13
4337 * Released 0.2.13
4331
4338
4332 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4339 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4333 profiler interface. Now all the major options from the profiler
4340 profiler interface. Now all the major options from the profiler
4334 module are directly supported in IPython, both for single
4341 module are directly supported in IPython, both for single
4335 expressions (@prun) and for full programs (@run -p).
4342 expressions (@prun) and for full programs (@run -p).
4336
4343
4337 2002-05-09 Fernando Perez <fperez@colorado.edu>
4344 2002-05-09 Fernando Perez <fperez@colorado.edu>
4338
4345
4339 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4346 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4340 magic properly formatted for screen.
4347 magic properly formatted for screen.
4341
4348
4342 * setup.py (make_shortcut): Changed things to put pdf version in
4349 * setup.py (make_shortcut): Changed things to put pdf version in
4343 doc/ instead of doc/manual (had to change lyxport a bit).
4350 doc/ instead of doc/manual (had to change lyxport a bit).
4344
4351
4345 * IPython/Magic.py (Profile.string_stats): made profile runs go
4352 * IPython/Magic.py (Profile.string_stats): made profile runs go
4346 through pager (they are long and a pager allows searching, saving,
4353 through pager (they are long and a pager allows searching, saving,
4347 etc.)
4354 etc.)
4348
4355
4349 2002-05-08 Fernando Perez <fperez@colorado.edu>
4356 2002-05-08 Fernando Perez <fperez@colorado.edu>
4350
4357
4351 * Released 0.2.12
4358 * Released 0.2.12
4352
4359
4353 2002-05-06 Fernando Perez <fperez@colorado.edu>
4360 2002-05-06 Fernando Perez <fperez@colorado.edu>
4354
4361
4355 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4362 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4356 introduced); 'hist n1 n2' was broken.
4363 introduced); 'hist n1 n2' was broken.
4357 (Magic.magic_pdb): added optional on/off arguments to @pdb
4364 (Magic.magic_pdb): added optional on/off arguments to @pdb
4358 (Magic.magic_run): added option -i to @run, which executes code in
4365 (Magic.magic_run): added option -i to @run, which executes code in
4359 the IPython namespace instead of a clean one. Also added @irun as
4366 the IPython namespace instead of a clean one. Also added @irun as
4360 an alias to @run -i.
4367 an alias to @run -i.
4361
4368
4362 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4369 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4363 fixed (it didn't really do anything, the namespaces were wrong).
4370 fixed (it didn't really do anything, the namespaces were wrong).
4364
4371
4365 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4372 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4366
4373
4367 * IPython/__init__.py (__all__): Fixed package namespace, now
4374 * IPython/__init__.py (__all__): Fixed package namespace, now
4368 'import IPython' does give access to IPython.<all> as
4375 'import IPython' does give access to IPython.<all> as
4369 expected. Also renamed __release__ to Release.
4376 expected. Also renamed __release__ to Release.
4370
4377
4371 * IPython/Debugger.py (__license__): created new Pdb class which
4378 * IPython/Debugger.py (__license__): created new Pdb class which
4372 functions like a drop-in for the normal pdb.Pdb but does NOT
4379 functions like a drop-in for the normal pdb.Pdb but does NOT
4373 import readline by default. This way it doesn't muck up IPython's
4380 import readline by default. This way it doesn't muck up IPython's
4374 readline handling, and now tab-completion finally works in the
4381 readline handling, and now tab-completion finally works in the
4375 debugger -- sort of. It completes things globally visible, but the
4382 debugger -- sort of. It completes things globally visible, but the
4376 completer doesn't track the stack as pdb walks it. That's a bit
4383 completer doesn't track the stack as pdb walks it. That's a bit
4377 tricky, and I'll have to implement it later.
4384 tricky, and I'll have to implement it later.
4378
4385
4379 2002-05-05 Fernando Perez <fperez@colorado.edu>
4386 2002-05-05 Fernando Perez <fperez@colorado.edu>
4380
4387
4381 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4388 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4382 magic docstrings when printed via ? (explicit \'s were being
4389 magic docstrings when printed via ? (explicit \'s were being
4383 printed).
4390 printed).
4384
4391
4385 * IPython/ipmaker.py (make_IPython): fixed namespace
4392 * IPython/ipmaker.py (make_IPython): fixed namespace
4386 identification bug. Now variables loaded via logs or command-line
4393 identification bug. Now variables loaded via logs or command-line
4387 files are recognized in the interactive namespace by @who.
4394 files are recognized in the interactive namespace by @who.
4388
4395
4389 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4396 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4390 log replay system stemming from the string form of Structs.
4397 log replay system stemming from the string form of Structs.
4391
4398
4392 * IPython/Magic.py (Macro.__init__): improved macros to properly
4399 * IPython/Magic.py (Macro.__init__): improved macros to properly
4393 handle magic commands in them.
4400 handle magic commands in them.
4394 (Magic.magic_logstart): usernames are now expanded so 'logstart
4401 (Magic.magic_logstart): usernames are now expanded so 'logstart
4395 ~/mylog' now works.
4402 ~/mylog' now works.
4396
4403
4397 * IPython/iplib.py (complete): fixed bug where paths starting with
4404 * IPython/iplib.py (complete): fixed bug where paths starting with
4398 '/' would be completed as magic names.
4405 '/' would be completed as magic names.
4399
4406
4400 2002-05-04 Fernando Perez <fperez@colorado.edu>
4407 2002-05-04 Fernando Perez <fperez@colorado.edu>
4401
4408
4402 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4409 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4403 allow running full programs under the profiler's control.
4410 allow running full programs under the profiler's control.
4404
4411
4405 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4412 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4406 mode to report exceptions verbosely but without formatting
4413 mode to report exceptions verbosely but without formatting
4407 variables. This addresses the issue of ipython 'freezing' (it's
4414 variables. This addresses the issue of ipython 'freezing' (it's
4408 not frozen, but caught in an expensive formatting loop) when huge
4415 not frozen, but caught in an expensive formatting loop) when huge
4409 variables are in the context of an exception.
4416 variables are in the context of an exception.
4410 (VerboseTB.text): Added '--->' markers at line where exception was
4417 (VerboseTB.text): Added '--->' markers at line where exception was
4411 triggered. Much clearer to read, especially in NoColor modes.
4418 triggered. Much clearer to read, especially in NoColor modes.
4412
4419
4413 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4420 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4414 implemented in reverse when changing to the new parse_options().
4421 implemented in reverse when changing to the new parse_options().
4415
4422
4416 2002-05-03 Fernando Perez <fperez@colorado.edu>
4423 2002-05-03 Fernando Perez <fperez@colorado.edu>
4417
4424
4418 * IPython/Magic.py (Magic.parse_options): new function so that
4425 * IPython/Magic.py (Magic.parse_options): new function so that
4419 magics can parse options easier.
4426 magics can parse options easier.
4420 (Magic.magic_prun): new function similar to profile.run(),
4427 (Magic.magic_prun): new function similar to profile.run(),
4421 suggested by Chris Hart.
4428 suggested by Chris Hart.
4422 (Magic.magic_cd): fixed behavior so that it only changes if
4429 (Magic.magic_cd): fixed behavior so that it only changes if
4423 directory actually is in history.
4430 directory actually is in history.
4424
4431
4425 * IPython/usage.py (__doc__): added information about potential
4432 * IPython/usage.py (__doc__): added information about potential
4426 slowness of Verbose exception mode when there are huge data
4433 slowness of Verbose exception mode when there are huge data
4427 structures to be formatted (thanks to Archie Paulson).
4434 structures to be formatted (thanks to Archie Paulson).
4428
4435
4429 * IPython/ipmaker.py (make_IPython): Changed default logging
4436 * IPython/ipmaker.py (make_IPython): Changed default logging
4430 (when simply called with -log) to use curr_dir/ipython.log in
4437 (when simply called with -log) to use curr_dir/ipython.log in
4431 rotate mode. Fixed crash which was occuring with -log before
4438 rotate mode. Fixed crash which was occuring with -log before
4432 (thanks to Jim Boyle).
4439 (thanks to Jim Boyle).
4433
4440
4434 2002-05-01 Fernando Perez <fperez@colorado.edu>
4441 2002-05-01 Fernando Perez <fperez@colorado.edu>
4435
4442
4436 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4443 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4437 was nasty -- though somewhat of a corner case).
4444 was nasty -- though somewhat of a corner case).
4438
4445
4439 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4446 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4440 text (was a bug).
4447 text (was a bug).
4441
4448
4442 2002-04-30 Fernando Perez <fperez@colorado.edu>
4449 2002-04-30 Fernando Perez <fperez@colorado.edu>
4443
4450
4444 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4451 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4445 a print after ^D or ^C from the user so that the In[] prompt
4452 a print after ^D or ^C from the user so that the In[] prompt
4446 doesn't over-run the gnuplot one.
4453 doesn't over-run the gnuplot one.
4447
4454
4448 2002-04-29 Fernando Perez <fperez@colorado.edu>
4455 2002-04-29 Fernando Perez <fperez@colorado.edu>
4449
4456
4450 * Released 0.2.10
4457 * Released 0.2.10
4451
4458
4452 * IPython/__release__.py (version): get date dynamically.
4459 * IPython/__release__.py (version): get date dynamically.
4453
4460
4454 * Misc. documentation updates thanks to Arnd's comments. Also ran
4461 * Misc. documentation updates thanks to Arnd's comments. Also ran
4455 a full spellcheck on the manual (hadn't been done in a while).
4462 a full spellcheck on the manual (hadn't been done in a while).
4456
4463
4457 2002-04-27 Fernando Perez <fperez@colorado.edu>
4464 2002-04-27 Fernando Perez <fperez@colorado.edu>
4458
4465
4459 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4466 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4460 starting a log in mid-session would reset the input history list.
4467 starting a log in mid-session would reset the input history list.
4461
4468
4462 2002-04-26 Fernando Perez <fperez@colorado.edu>
4469 2002-04-26 Fernando Perez <fperez@colorado.edu>
4463
4470
4464 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4471 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4465 all files were being included in an update. Now anything in
4472 all files were being included in an update. Now anything in
4466 UserConfig that matches [A-Za-z]*.py will go (this excludes
4473 UserConfig that matches [A-Za-z]*.py will go (this excludes
4467 __init__.py)
4474 __init__.py)
4468
4475
4469 2002-04-25 Fernando Perez <fperez@colorado.edu>
4476 2002-04-25 Fernando Perez <fperez@colorado.edu>
4470
4477
4471 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4478 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4472 to __builtins__ so that any form of embedded or imported code can
4479 to __builtins__ so that any form of embedded or imported code can
4473 test for being inside IPython.
4480 test for being inside IPython.
4474
4481
4475 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4482 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4476 changed to GnuplotMagic because it's now an importable module,
4483 changed to GnuplotMagic because it's now an importable module,
4477 this makes the name follow that of the standard Gnuplot module.
4484 this makes the name follow that of the standard Gnuplot module.
4478 GnuplotMagic can now be loaded at any time in mid-session.
4485 GnuplotMagic can now be loaded at any time in mid-session.
4479
4486
4480 2002-04-24 Fernando Perez <fperez@colorado.edu>
4487 2002-04-24 Fernando Perez <fperez@colorado.edu>
4481
4488
4482 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4489 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4483 the globals (IPython has its own namespace) and the
4490 the globals (IPython has its own namespace) and the
4484 PhysicalQuantity stuff is much better anyway.
4491 PhysicalQuantity stuff is much better anyway.
4485
4492
4486 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4493 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4487 embedding example to standard user directory for
4494 embedding example to standard user directory for
4488 distribution. Also put it in the manual.
4495 distribution. Also put it in the manual.
4489
4496
4490 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4497 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4491 instance as first argument (so it doesn't rely on some obscure
4498 instance as first argument (so it doesn't rely on some obscure
4492 hidden global).
4499 hidden global).
4493
4500
4494 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4501 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4495 delimiters. While it prevents ().TAB from working, it allows
4502 delimiters. While it prevents ().TAB from working, it allows
4496 completions in open (... expressions. This is by far a more common
4503 completions in open (... expressions. This is by far a more common
4497 case.
4504 case.
4498
4505
4499 2002-04-23 Fernando Perez <fperez@colorado.edu>
4506 2002-04-23 Fernando Perez <fperez@colorado.edu>
4500
4507
4501 * IPython/Extensions/InterpreterPasteInput.py: new
4508 * IPython/Extensions/InterpreterPasteInput.py: new
4502 syntax-processing module for pasting lines with >>> or ... at the
4509 syntax-processing module for pasting lines with >>> or ... at the
4503 start.
4510 start.
4504
4511
4505 * IPython/Extensions/PhysicalQ_Interactive.py
4512 * IPython/Extensions/PhysicalQ_Interactive.py
4506 (PhysicalQuantityInteractive.__int__): fixed to work with either
4513 (PhysicalQuantityInteractive.__int__): fixed to work with either
4507 Numeric or math.
4514 Numeric or math.
4508
4515
4509 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4516 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4510 provided profiles. Now we have:
4517 provided profiles. Now we have:
4511 -math -> math module as * and cmath with its own namespace.
4518 -math -> math module as * and cmath with its own namespace.
4512 -numeric -> Numeric as *, plus gnuplot & grace
4519 -numeric -> Numeric as *, plus gnuplot & grace
4513 -physics -> same as before
4520 -physics -> same as before
4514
4521
4515 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4522 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4516 user-defined magics wouldn't be found by @magic if they were
4523 user-defined magics wouldn't be found by @magic if they were
4517 defined as class methods. Also cleaned up the namespace search
4524 defined as class methods. Also cleaned up the namespace search
4518 logic and the string building (to use %s instead of many repeated
4525 logic and the string building (to use %s instead of many repeated
4519 string adds).
4526 string adds).
4520
4527
4521 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4528 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4522 of user-defined magics to operate with class methods (cleaner, in
4529 of user-defined magics to operate with class methods (cleaner, in
4523 line with the gnuplot code).
4530 line with the gnuplot code).
4524
4531
4525 2002-04-22 Fernando Perez <fperez@colorado.edu>
4532 2002-04-22 Fernando Perez <fperez@colorado.edu>
4526
4533
4527 * setup.py: updated dependency list so that manual is updated when
4534 * setup.py: updated dependency list so that manual is updated when
4528 all included files change.
4535 all included files change.
4529
4536
4530 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4537 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4531 the delimiter removal option (the fix is ugly right now).
4538 the delimiter removal option (the fix is ugly right now).
4532
4539
4533 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4540 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4534 all of the math profile (quicker loading, no conflict between
4541 all of the math profile (quicker loading, no conflict between
4535 g-9.8 and g-gnuplot).
4542 g-9.8 and g-gnuplot).
4536
4543
4537 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4544 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4538 name of post-mortem files to IPython_crash_report.txt.
4545 name of post-mortem files to IPython_crash_report.txt.
4539
4546
4540 * Cleanup/update of the docs. Added all the new readline info and
4547 * Cleanup/update of the docs. Added all the new readline info and
4541 formatted all lists as 'real lists'.
4548 formatted all lists as 'real lists'.
4542
4549
4543 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4550 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4544 tab-completion options, since the full readline parse_and_bind is
4551 tab-completion options, since the full readline parse_and_bind is
4545 now accessible.
4552 now accessible.
4546
4553
4547 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4554 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4548 handling of readline options. Now users can specify any string to
4555 handling of readline options. Now users can specify any string to
4549 be passed to parse_and_bind(), as well as the delimiters to be
4556 be passed to parse_and_bind(), as well as the delimiters to be
4550 removed.
4557 removed.
4551 (InteractiveShell.__init__): Added __name__ to the global
4558 (InteractiveShell.__init__): Added __name__ to the global
4552 namespace so that things like Itpl which rely on its existence
4559 namespace so that things like Itpl which rely on its existence
4553 don't crash.
4560 don't crash.
4554 (InteractiveShell._prefilter): Defined the default with a _ so
4561 (InteractiveShell._prefilter): Defined the default with a _ so
4555 that prefilter() is easier to override, while the default one
4562 that prefilter() is easier to override, while the default one
4556 remains available.
4563 remains available.
4557
4564
4558 2002-04-18 Fernando Perez <fperez@colorado.edu>
4565 2002-04-18 Fernando Perez <fperez@colorado.edu>
4559
4566
4560 * Added information about pdb in the docs.
4567 * Added information about pdb in the docs.
4561
4568
4562 2002-04-17 Fernando Perez <fperez@colorado.edu>
4569 2002-04-17 Fernando Perez <fperez@colorado.edu>
4563
4570
4564 * IPython/ipmaker.py (make_IPython): added rc_override option to
4571 * IPython/ipmaker.py (make_IPython): added rc_override option to
4565 allow passing config options at creation time which may override
4572 allow passing config options at creation time which may override
4566 anything set in the config files or command line. This is
4573 anything set in the config files or command line. This is
4567 particularly useful for configuring embedded instances.
4574 particularly useful for configuring embedded instances.
4568
4575
4569 2002-04-15 Fernando Perez <fperez@colorado.edu>
4576 2002-04-15 Fernando Perez <fperez@colorado.edu>
4570
4577
4571 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4578 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4572 crash embedded instances because of the input cache falling out of
4579 crash embedded instances because of the input cache falling out of
4573 sync with the output counter.
4580 sync with the output counter.
4574
4581
4575 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4582 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4576 mode which calls pdb after an uncaught exception in IPython itself.
4583 mode which calls pdb after an uncaught exception in IPython itself.
4577
4584
4578 2002-04-14 Fernando Perez <fperez@colorado.edu>
4585 2002-04-14 Fernando Perez <fperez@colorado.edu>
4579
4586
4580 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4587 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4581 readline, fix it back after each call.
4588 readline, fix it back after each call.
4582
4589
4583 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4590 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4584 method to force all access via __call__(), which guarantees that
4591 method to force all access via __call__(), which guarantees that
4585 traceback references are properly deleted.
4592 traceback references are properly deleted.
4586
4593
4587 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4594 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4588 improve printing when pprint is in use.
4595 improve printing when pprint is in use.
4589
4596
4590 2002-04-13 Fernando Perez <fperez@colorado.edu>
4597 2002-04-13 Fernando Perez <fperez@colorado.edu>
4591
4598
4592 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4599 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4593 exceptions aren't caught anymore. If the user triggers one, he
4600 exceptions aren't caught anymore. If the user triggers one, he
4594 should know why he's doing it and it should go all the way up,
4601 should know why he's doing it and it should go all the way up,
4595 just like any other exception. So now @abort will fully kill the
4602 just like any other exception. So now @abort will fully kill the
4596 embedded interpreter and the embedding code (unless that happens
4603 embedded interpreter and the embedding code (unless that happens
4597 to catch SystemExit).
4604 to catch SystemExit).
4598
4605
4599 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4606 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4600 and a debugger() method to invoke the interactive pdb debugger
4607 and a debugger() method to invoke the interactive pdb debugger
4601 after printing exception information. Also added the corresponding
4608 after printing exception information. Also added the corresponding
4602 -pdb option and @pdb magic to control this feature, and updated
4609 -pdb option and @pdb magic to control this feature, and updated
4603 the docs. After a suggestion from Christopher Hart
4610 the docs. After a suggestion from Christopher Hart
4604 (hart-AT-caltech.edu).
4611 (hart-AT-caltech.edu).
4605
4612
4606 2002-04-12 Fernando Perez <fperez@colorado.edu>
4613 2002-04-12 Fernando Perez <fperez@colorado.edu>
4607
4614
4608 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4615 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4609 the exception handlers defined by the user (not the CrashHandler)
4616 the exception handlers defined by the user (not the CrashHandler)
4610 so that user exceptions don't trigger an ipython bug report.
4617 so that user exceptions don't trigger an ipython bug report.
4611
4618
4612 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4619 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4613 configurable (it should have always been so).
4620 configurable (it should have always been so).
4614
4621
4615 2002-03-26 Fernando Perez <fperez@colorado.edu>
4622 2002-03-26 Fernando Perez <fperez@colorado.edu>
4616
4623
4617 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4624 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4618 and there to fix embedding namespace issues. This should all be
4625 and there to fix embedding namespace issues. This should all be
4619 done in a more elegant way.
4626 done in a more elegant way.
4620
4627
4621 2002-03-25 Fernando Perez <fperez@colorado.edu>
4628 2002-03-25 Fernando Perez <fperez@colorado.edu>
4622
4629
4623 * IPython/genutils.py (get_home_dir): Try to make it work under
4630 * IPython/genutils.py (get_home_dir): Try to make it work under
4624 win9x also.
4631 win9x also.
4625
4632
4626 2002-03-20 Fernando Perez <fperez@colorado.edu>
4633 2002-03-20 Fernando Perez <fperez@colorado.edu>
4627
4634
4628 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4635 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4629 sys.displayhook untouched upon __init__.
4636 sys.displayhook untouched upon __init__.
4630
4637
4631 2002-03-19 Fernando Perez <fperez@colorado.edu>
4638 2002-03-19 Fernando Perez <fperez@colorado.edu>
4632
4639
4633 * Released 0.2.9 (for embedding bug, basically).
4640 * Released 0.2.9 (for embedding bug, basically).
4634
4641
4635 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4642 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4636 exceptions so that enclosing shell's state can be restored.
4643 exceptions so that enclosing shell's state can be restored.
4637
4644
4638 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4645 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4639 naming conventions in the .ipython/ dir.
4646 naming conventions in the .ipython/ dir.
4640
4647
4641 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4648 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4642 from delimiters list so filenames with - in them get expanded.
4649 from delimiters list so filenames with - in them get expanded.
4643
4650
4644 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4651 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4645 sys.displayhook not being properly restored after an embedded call.
4652 sys.displayhook not being properly restored after an embedded call.
4646
4653
4647 2002-03-18 Fernando Perez <fperez@colorado.edu>
4654 2002-03-18 Fernando Perez <fperez@colorado.edu>
4648
4655
4649 * Released 0.2.8
4656 * Released 0.2.8
4650
4657
4651 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4658 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4652 some files weren't being included in a -upgrade.
4659 some files weren't being included in a -upgrade.
4653 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4660 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4654 on' so that the first tab completes.
4661 on' so that the first tab completes.
4655 (InteractiveShell.handle_magic): fixed bug with spaces around
4662 (InteractiveShell.handle_magic): fixed bug with spaces around
4656 quotes breaking many magic commands.
4663 quotes breaking many magic commands.
4657
4664
4658 * setup.py: added note about ignoring the syntax error messages at
4665 * setup.py: added note about ignoring the syntax error messages at
4659 installation.
4666 installation.
4660
4667
4661 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4668 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4662 streamlining the gnuplot interface, now there's only one magic @gp.
4669 streamlining the gnuplot interface, now there's only one magic @gp.
4663
4670
4664 2002-03-17 Fernando Perez <fperez@colorado.edu>
4671 2002-03-17 Fernando Perez <fperez@colorado.edu>
4665
4672
4666 * IPython/UserConfig/magic_gnuplot.py: new name for the
4673 * IPython/UserConfig/magic_gnuplot.py: new name for the
4667 example-magic_pm.py file. Much enhanced system, now with a shell
4674 example-magic_pm.py file. Much enhanced system, now with a shell
4668 for communicating directly with gnuplot, one command at a time.
4675 for communicating directly with gnuplot, one command at a time.
4669
4676
4670 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4677 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4671 setting __name__=='__main__'.
4678 setting __name__=='__main__'.
4672
4679
4673 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4680 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4674 mini-shell for accessing gnuplot from inside ipython. Should
4681 mini-shell for accessing gnuplot from inside ipython. Should
4675 extend it later for grace access too. Inspired by Arnd's
4682 extend it later for grace access too. Inspired by Arnd's
4676 suggestion.
4683 suggestion.
4677
4684
4678 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4685 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4679 calling magic functions with () in their arguments. Thanks to Arnd
4686 calling magic functions with () in their arguments. Thanks to Arnd
4680 Baecker for pointing this to me.
4687 Baecker for pointing this to me.
4681
4688
4682 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4689 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4683 infinitely for integer or complex arrays (only worked with floats).
4690 infinitely for integer or complex arrays (only worked with floats).
4684
4691
4685 2002-03-16 Fernando Perez <fperez@colorado.edu>
4692 2002-03-16 Fernando Perez <fperez@colorado.edu>
4686
4693
4687 * setup.py: Merged setup and setup_windows into a single script
4694 * setup.py: Merged setup and setup_windows into a single script
4688 which properly handles things for windows users.
4695 which properly handles things for windows users.
4689
4696
4690 2002-03-15 Fernando Perez <fperez@colorado.edu>
4697 2002-03-15 Fernando Perez <fperez@colorado.edu>
4691
4698
4692 * Big change to the manual: now the magics are all automatically
4699 * Big change to the manual: now the magics are all automatically
4693 documented. This information is generated from their docstrings
4700 documented. This information is generated from their docstrings
4694 and put in a latex file included by the manual lyx file. This way
4701 and put in a latex file included by the manual lyx file. This way
4695 we get always up to date information for the magics. The manual
4702 we get always up to date information for the magics. The manual
4696 now also has proper version information, also auto-synced.
4703 now also has proper version information, also auto-synced.
4697
4704
4698 For this to work, an undocumented --magic_docstrings option was added.
4705 For this to work, an undocumented --magic_docstrings option was added.
4699
4706
4700 2002-03-13 Fernando Perez <fperez@colorado.edu>
4707 2002-03-13 Fernando Perez <fperez@colorado.edu>
4701
4708
4702 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4709 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4703 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4710 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4704
4711
4705 2002-03-12 Fernando Perez <fperez@colorado.edu>
4712 2002-03-12 Fernando Perez <fperez@colorado.edu>
4706
4713
4707 * IPython/ultraTB.py (TermColors): changed color escapes again to
4714 * IPython/ultraTB.py (TermColors): changed color escapes again to
4708 fix the (old, reintroduced) line-wrapping bug. Basically, if
4715 fix the (old, reintroduced) line-wrapping bug. Basically, if
4709 \001..\002 aren't given in the color escapes, lines get wrapped
4716 \001..\002 aren't given in the color escapes, lines get wrapped
4710 weirdly. But giving those screws up old xterms and emacs terms. So
4717 weirdly. But giving those screws up old xterms and emacs terms. So
4711 I added some logic for emacs terms to be ok, but I can't identify old
4718 I added some logic for emacs terms to be ok, but I can't identify old
4712 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4719 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4713
4720
4714 2002-03-10 Fernando Perez <fperez@colorado.edu>
4721 2002-03-10 Fernando Perez <fperez@colorado.edu>
4715
4722
4716 * IPython/usage.py (__doc__): Various documentation cleanups and
4723 * IPython/usage.py (__doc__): Various documentation cleanups and
4717 updates, both in usage docstrings and in the manual.
4724 updates, both in usage docstrings and in the manual.
4718
4725
4719 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4726 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4720 handling of caching. Set minimum acceptabe value for having a
4727 handling of caching. Set minimum acceptabe value for having a
4721 cache at 20 values.
4728 cache at 20 values.
4722
4729
4723 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4730 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4724 install_first_time function to a method, renamed it and added an
4731 install_first_time function to a method, renamed it and added an
4725 'upgrade' mode. Now people can update their config directory with
4732 'upgrade' mode. Now people can update their config directory with
4726 a simple command line switch (-upgrade, also new).
4733 a simple command line switch (-upgrade, also new).
4727
4734
4728 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4735 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4729 @file (convenient for automagic users under Python >= 2.2).
4736 @file (convenient for automagic users under Python >= 2.2).
4730 Removed @files (it seemed more like a plural than an abbrev. of
4737 Removed @files (it seemed more like a plural than an abbrev. of
4731 'file show').
4738 'file show').
4732
4739
4733 * IPython/iplib.py (install_first_time): Fixed crash if there were
4740 * IPython/iplib.py (install_first_time): Fixed crash if there were
4734 backup files ('~') in .ipython/ install directory.
4741 backup files ('~') in .ipython/ install directory.
4735
4742
4736 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4743 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4737 system. Things look fine, but these changes are fairly
4744 system. Things look fine, but these changes are fairly
4738 intrusive. Test them for a few days.
4745 intrusive. Test them for a few days.
4739
4746
4740 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4747 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4741 the prompts system. Now all in/out prompt strings are user
4748 the prompts system. Now all in/out prompt strings are user
4742 controllable. This is particularly useful for embedding, as one
4749 controllable. This is particularly useful for embedding, as one
4743 can tag embedded instances with particular prompts.
4750 can tag embedded instances with particular prompts.
4744
4751
4745 Also removed global use of sys.ps1/2, which now allows nested
4752 Also removed global use of sys.ps1/2, which now allows nested
4746 embeddings without any problems. Added command-line options for
4753 embeddings without any problems. Added command-line options for
4747 the prompt strings.
4754 the prompt strings.
4748
4755
4749 2002-03-08 Fernando Perez <fperez@colorado.edu>
4756 2002-03-08 Fernando Perez <fperez@colorado.edu>
4750
4757
4751 * IPython/UserConfig/example-embed-short.py (ipshell): added
4758 * IPython/UserConfig/example-embed-short.py (ipshell): added
4752 example file with the bare minimum code for embedding.
4759 example file with the bare minimum code for embedding.
4753
4760
4754 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4761 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4755 functionality for the embeddable shell to be activated/deactivated
4762 functionality for the embeddable shell to be activated/deactivated
4756 either globally or at each call.
4763 either globally or at each call.
4757
4764
4758 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4765 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4759 rewriting the prompt with '--->' for auto-inputs with proper
4766 rewriting the prompt with '--->' for auto-inputs with proper
4760 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4767 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4761 this is handled by the prompts class itself, as it should.
4768 this is handled by the prompts class itself, as it should.
4762
4769
4763 2002-03-05 Fernando Perez <fperez@colorado.edu>
4770 2002-03-05 Fernando Perez <fperez@colorado.edu>
4764
4771
4765 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4772 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4766 @logstart to avoid name clashes with the math log function.
4773 @logstart to avoid name clashes with the math log function.
4767
4774
4768 * Big updates to X/Emacs section of the manual.
4775 * Big updates to X/Emacs section of the manual.
4769
4776
4770 * Removed ipython_emacs. Milan explained to me how to pass
4777 * Removed ipython_emacs. Milan explained to me how to pass
4771 arguments to ipython through Emacs. Some day I'm going to end up
4778 arguments to ipython through Emacs. Some day I'm going to end up
4772 learning some lisp...
4779 learning some lisp...
4773
4780
4774 2002-03-04 Fernando Perez <fperez@colorado.edu>
4781 2002-03-04 Fernando Perez <fperez@colorado.edu>
4775
4782
4776 * IPython/ipython_emacs: Created script to be used as the
4783 * IPython/ipython_emacs: Created script to be used as the
4777 py-python-command Emacs variable so we can pass IPython
4784 py-python-command Emacs variable so we can pass IPython
4778 parameters. I can't figure out how to tell Emacs directly to pass
4785 parameters. I can't figure out how to tell Emacs directly to pass
4779 parameters to IPython, so a dummy shell script will do it.
4786 parameters to IPython, so a dummy shell script will do it.
4780
4787
4781 Other enhancements made for things to work better under Emacs'
4788 Other enhancements made for things to work better under Emacs'
4782 various types of terminals. Many thanks to Milan Zamazal
4789 various types of terminals. Many thanks to Milan Zamazal
4783 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4790 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4784
4791
4785 2002-03-01 Fernando Perez <fperez@colorado.edu>
4792 2002-03-01 Fernando Perez <fperez@colorado.edu>
4786
4793
4787 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4794 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4788 that loading of readline is now optional. This gives better
4795 that loading of readline is now optional. This gives better
4789 control to emacs users.
4796 control to emacs users.
4790
4797
4791 * IPython/ultraTB.py (__date__): Modified color escape sequences
4798 * IPython/ultraTB.py (__date__): Modified color escape sequences
4792 and now things work fine under xterm and in Emacs' term buffers
4799 and now things work fine under xterm and in Emacs' term buffers
4793 (though not shell ones). Well, in emacs you get colors, but all
4800 (though not shell ones). Well, in emacs you get colors, but all
4794 seem to be 'light' colors (no difference between dark and light
4801 seem to be 'light' colors (no difference between dark and light
4795 ones). But the garbage chars are gone, and also in xterms. It
4802 ones). But the garbage chars are gone, and also in xterms. It
4796 seems that now I'm using 'cleaner' ansi sequences.
4803 seems that now I'm using 'cleaner' ansi sequences.
4797
4804
4798 2002-02-21 Fernando Perez <fperez@colorado.edu>
4805 2002-02-21 Fernando Perez <fperez@colorado.edu>
4799
4806
4800 * Released 0.2.7 (mainly to publish the scoping fix).
4807 * Released 0.2.7 (mainly to publish the scoping fix).
4801
4808
4802 * IPython/Logger.py (Logger.logstate): added. A corresponding
4809 * IPython/Logger.py (Logger.logstate): added. A corresponding
4803 @logstate magic was created.
4810 @logstate magic was created.
4804
4811
4805 * IPython/Magic.py: fixed nested scoping problem under Python
4812 * IPython/Magic.py: fixed nested scoping problem under Python
4806 2.1.x (automagic wasn't working).
4813 2.1.x (automagic wasn't working).
4807
4814
4808 2002-02-20 Fernando Perez <fperez@colorado.edu>
4815 2002-02-20 Fernando Perez <fperez@colorado.edu>
4809
4816
4810 * Released 0.2.6.
4817 * Released 0.2.6.
4811
4818
4812 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4819 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4813 option so that logs can come out without any headers at all.
4820 option so that logs can come out without any headers at all.
4814
4821
4815 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4822 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4816 SciPy.
4823 SciPy.
4817
4824
4818 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4825 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4819 that embedded IPython calls don't require vars() to be explicitly
4826 that embedded IPython calls don't require vars() to be explicitly
4820 passed. Now they are extracted from the caller's frame (code
4827 passed. Now they are extracted from the caller's frame (code
4821 snatched from Eric Jones' weave). Added better documentation to
4828 snatched from Eric Jones' weave). Added better documentation to
4822 the section on embedding and the example file.
4829 the section on embedding and the example file.
4823
4830
4824 * IPython/genutils.py (page): Changed so that under emacs, it just
4831 * IPython/genutils.py (page): Changed so that under emacs, it just
4825 prints the string. You can then page up and down in the emacs
4832 prints the string. You can then page up and down in the emacs
4826 buffer itself. This is how the builtin help() works.
4833 buffer itself. This is how the builtin help() works.
4827
4834
4828 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4835 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4829 macro scoping: macros need to be executed in the user's namespace
4836 macro scoping: macros need to be executed in the user's namespace
4830 to work as if they had been typed by the user.
4837 to work as if they had been typed by the user.
4831
4838
4832 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4839 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4833 execute automatically (no need to type 'exec...'). They then
4840 execute automatically (no need to type 'exec...'). They then
4834 behave like 'true macros'. The printing system was also modified
4841 behave like 'true macros'. The printing system was also modified
4835 for this to work.
4842 for this to work.
4836
4843
4837 2002-02-19 Fernando Perez <fperez@colorado.edu>
4844 2002-02-19 Fernando Perez <fperez@colorado.edu>
4838
4845
4839 * IPython/genutils.py (page_file): new function for paging files
4846 * IPython/genutils.py (page_file): new function for paging files
4840 in an OS-independent way. Also necessary for file viewing to work
4847 in an OS-independent way. Also necessary for file viewing to work
4841 well inside Emacs buffers.
4848 well inside Emacs buffers.
4842 (page): Added checks for being in an emacs buffer.
4849 (page): Added checks for being in an emacs buffer.
4843 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4850 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4844 same bug in iplib.
4851 same bug in iplib.
4845
4852
4846 2002-02-18 Fernando Perez <fperez@colorado.edu>
4853 2002-02-18 Fernando Perez <fperez@colorado.edu>
4847
4854
4848 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4855 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4849 of readline so that IPython can work inside an Emacs buffer.
4856 of readline so that IPython can work inside an Emacs buffer.
4850
4857
4851 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4858 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4852 method signatures (they weren't really bugs, but it looks cleaner
4859 method signatures (they weren't really bugs, but it looks cleaner
4853 and keeps PyChecker happy).
4860 and keeps PyChecker happy).
4854
4861
4855 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4862 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4856 for implementing various user-defined hooks. Currently only
4863 for implementing various user-defined hooks. Currently only
4857 display is done.
4864 display is done.
4858
4865
4859 * IPython/Prompts.py (CachedOutput._display): changed display
4866 * IPython/Prompts.py (CachedOutput._display): changed display
4860 functions so that they can be dynamically changed by users easily.
4867 functions so that they can be dynamically changed by users easily.
4861
4868
4862 * IPython/Extensions/numeric_formats.py (num_display): added an
4869 * IPython/Extensions/numeric_formats.py (num_display): added an
4863 extension for printing NumPy arrays in flexible manners. It
4870 extension for printing NumPy arrays in flexible manners. It
4864 doesn't do anything yet, but all the structure is in
4871 doesn't do anything yet, but all the structure is in
4865 place. Ultimately the plan is to implement output format control
4872 place. Ultimately the plan is to implement output format control
4866 like in Octave.
4873 like in Octave.
4867
4874
4868 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4875 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4869 methods are found at run-time by all the automatic machinery.
4876 methods are found at run-time by all the automatic machinery.
4870
4877
4871 2002-02-17 Fernando Perez <fperez@colorado.edu>
4878 2002-02-17 Fernando Perez <fperez@colorado.edu>
4872
4879
4873 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4880 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4874 whole file a little.
4881 whole file a little.
4875
4882
4876 * ToDo: closed this document. Now there's a new_design.lyx
4883 * ToDo: closed this document. Now there's a new_design.lyx
4877 document for all new ideas. Added making a pdf of it for the
4884 document for all new ideas. Added making a pdf of it for the
4878 end-user distro.
4885 end-user distro.
4879
4886
4880 * IPython/Logger.py (Logger.switch_log): Created this to replace
4887 * IPython/Logger.py (Logger.switch_log): Created this to replace
4881 logon() and logoff(). It also fixes a nasty crash reported by
4888 logon() and logoff(). It also fixes a nasty crash reported by
4882 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4889 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4883
4890
4884 * IPython/iplib.py (complete): got auto-completion to work with
4891 * IPython/iplib.py (complete): got auto-completion to work with
4885 automagic (I had wanted this for a long time).
4892 automagic (I had wanted this for a long time).
4886
4893
4887 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4894 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4888 to @file, since file() is now a builtin and clashes with automagic
4895 to @file, since file() is now a builtin and clashes with automagic
4889 for @file.
4896 for @file.
4890
4897
4891 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4898 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4892 of this was previously in iplib, which had grown to more than 2000
4899 of this was previously in iplib, which had grown to more than 2000
4893 lines, way too long. No new functionality, but it makes managing
4900 lines, way too long. No new functionality, but it makes managing
4894 the code a bit easier.
4901 the code a bit easier.
4895
4902
4896 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4903 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4897 information to crash reports.
4904 information to crash reports.
4898
4905
4899 2002-02-12 Fernando Perez <fperez@colorado.edu>
4906 2002-02-12 Fernando Perez <fperez@colorado.edu>
4900
4907
4901 * Released 0.2.5.
4908 * Released 0.2.5.
4902
4909
4903 2002-02-11 Fernando Perez <fperez@colorado.edu>
4910 2002-02-11 Fernando Perez <fperez@colorado.edu>
4904
4911
4905 * Wrote a relatively complete Windows installer. It puts
4912 * Wrote a relatively complete Windows installer. It puts
4906 everything in place, creates Start Menu entries and fixes the
4913 everything in place, creates Start Menu entries and fixes the
4907 color issues. Nothing fancy, but it works.
4914 color issues. Nothing fancy, but it works.
4908
4915
4909 2002-02-10 Fernando Perez <fperez@colorado.edu>
4916 2002-02-10 Fernando Perez <fperez@colorado.edu>
4910
4917
4911 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4918 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4912 os.path.expanduser() call so that we can type @run ~/myfile.py and
4919 os.path.expanduser() call so that we can type @run ~/myfile.py and
4913 have thigs work as expected.
4920 have thigs work as expected.
4914
4921
4915 * IPython/genutils.py (page): fixed exception handling so things
4922 * IPython/genutils.py (page): fixed exception handling so things
4916 work both in Unix and Windows correctly. Quitting a pager triggers
4923 work both in Unix and Windows correctly. Quitting a pager triggers
4917 an IOError/broken pipe in Unix, and in windows not finding a pager
4924 an IOError/broken pipe in Unix, and in windows not finding a pager
4918 is also an IOError, so I had to actually look at the return value
4925 is also an IOError, so I had to actually look at the return value
4919 of the exception, not just the exception itself. Should be ok now.
4926 of the exception, not just the exception itself. Should be ok now.
4920
4927
4921 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4928 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4922 modified to allow case-insensitive color scheme changes.
4929 modified to allow case-insensitive color scheme changes.
4923
4930
4924 2002-02-09 Fernando Perez <fperez@colorado.edu>
4931 2002-02-09 Fernando Perez <fperez@colorado.edu>
4925
4932
4926 * IPython/genutils.py (native_line_ends): new function to leave
4933 * IPython/genutils.py (native_line_ends): new function to leave
4927 user config files with os-native line-endings.
4934 user config files with os-native line-endings.
4928
4935
4929 * README and manual updates.
4936 * README and manual updates.
4930
4937
4931 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4938 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4932 instead of StringType to catch Unicode strings.
4939 instead of StringType to catch Unicode strings.
4933
4940
4934 * IPython/genutils.py (filefind): fixed bug for paths with
4941 * IPython/genutils.py (filefind): fixed bug for paths with
4935 embedded spaces (very common in Windows).
4942 embedded spaces (very common in Windows).
4936
4943
4937 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4944 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4938 files under Windows, so that they get automatically associated
4945 files under Windows, so that they get automatically associated
4939 with a text editor. Windows makes it a pain to handle
4946 with a text editor. Windows makes it a pain to handle
4940 extension-less files.
4947 extension-less files.
4941
4948
4942 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4949 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4943 warning about readline only occur for Posix. In Windows there's no
4950 warning about readline only occur for Posix. In Windows there's no
4944 way to get readline, so why bother with the warning.
4951 way to get readline, so why bother with the warning.
4945
4952
4946 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4953 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4947 for __str__ instead of dir(self), since dir() changed in 2.2.
4954 for __str__ instead of dir(self), since dir() changed in 2.2.
4948
4955
4949 * Ported to Windows! Tested on XP, I suspect it should work fine
4956 * Ported to Windows! Tested on XP, I suspect it should work fine
4950 on NT/2000, but I don't think it will work on 98 et al. That
4957 on NT/2000, but I don't think it will work on 98 et al. That
4951 series of Windows is such a piece of junk anyway that I won't try
4958 series of Windows is such a piece of junk anyway that I won't try
4952 porting it there. The XP port was straightforward, showed a few
4959 porting it there. The XP port was straightforward, showed a few
4953 bugs here and there (fixed all), in particular some string
4960 bugs here and there (fixed all), in particular some string
4954 handling stuff which required considering Unicode strings (which
4961 handling stuff which required considering Unicode strings (which
4955 Windows uses). This is good, but hasn't been too tested :) No
4962 Windows uses). This is good, but hasn't been too tested :) No
4956 fancy installer yet, I'll put a note in the manual so people at
4963 fancy installer yet, I'll put a note in the manual so people at
4957 least make manually a shortcut.
4964 least make manually a shortcut.
4958
4965
4959 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4966 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4960 into a single one, "colors". This now controls both prompt and
4967 into a single one, "colors". This now controls both prompt and
4961 exception color schemes, and can be changed both at startup
4968 exception color schemes, and can be changed both at startup
4962 (either via command-line switches or via ipythonrc files) and at
4969 (either via command-line switches or via ipythonrc files) and at
4963 runtime, with @colors.
4970 runtime, with @colors.
4964 (Magic.magic_run): renamed @prun to @run and removed the old
4971 (Magic.magic_run): renamed @prun to @run and removed the old
4965 @run. The two were too similar to warrant keeping both.
4972 @run. The two were too similar to warrant keeping both.
4966
4973
4967 2002-02-03 Fernando Perez <fperez@colorado.edu>
4974 2002-02-03 Fernando Perez <fperez@colorado.edu>
4968
4975
4969 * IPython/iplib.py (install_first_time): Added comment on how to
4976 * IPython/iplib.py (install_first_time): Added comment on how to
4970 configure the color options for first-time users. Put a <return>
4977 configure the color options for first-time users. Put a <return>
4971 request at the end so that small-terminal users get a chance to
4978 request at the end so that small-terminal users get a chance to
4972 read the startup info.
4979 read the startup info.
4973
4980
4974 2002-01-23 Fernando Perez <fperez@colorado.edu>
4981 2002-01-23 Fernando Perez <fperez@colorado.edu>
4975
4982
4976 * IPython/iplib.py (CachedOutput.update): Changed output memory
4983 * IPython/iplib.py (CachedOutput.update): Changed output memory
4977 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4984 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4978 input history we still use _i. Did this b/c these variable are
4985 input history we still use _i. Did this b/c these variable are
4979 very commonly used in interactive work, so the less we need to
4986 very commonly used in interactive work, so the less we need to
4980 type the better off we are.
4987 type the better off we are.
4981 (Magic.magic_prun): updated @prun to better handle the namespaces
4988 (Magic.magic_prun): updated @prun to better handle the namespaces
4982 the file will run in, including a fix for __name__ not being set
4989 the file will run in, including a fix for __name__ not being set
4983 before.
4990 before.
4984
4991
4985 2002-01-20 Fernando Perez <fperez@colorado.edu>
4992 2002-01-20 Fernando Perez <fperez@colorado.edu>
4986
4993
4987 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4994 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4988 extra garbage for Python 2.2. Need to look more carefully into
4995 extra garbage for Python 2.2. Need to look more carefully into
4989 this later.
4996 this later.
4990
4997
4991 2002-01-19 Fernando Perez <fperez@colorado.edu>
4998 2002-01-19 Fernando Perez <fperez@colorado.edu>
4992
4999
4993 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5000 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4994 display SyntaxError exceptions properly formatted when they occur
5001 display SyntaxError exceptions properly formatted when they occur
4995 (they can be triggered by imported code).
5002 (they can be triggered by imported code).
4996
5003
4997 2002-01-18 Fernando Perez <fperez@colorado.edu>
5004 2002-01-18 Fernando Perez <fperez@colorado.edu>
4998
5005
4999 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5006 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5000 SyntaxError exceptions are reported nicely formatted, instead of
5007 SyntaxError exceptions are reported nicely formatted, instead of
5001 spitting out only offset information as before.
5008 spitting out only offset information as before.
5002 (Magic.magic_prun): Added the @prun function for executing
5009 (Magic.magic_prun): Added the @prun function for executing
5003 programs with command line args inside IPython.
5010 programs with command line args inside IPython.
5004
5011
5005 2002-01-16 Fernando Perez <fperez@colorado.edu>
5012 2002-01-16 Fernando Perez <fperez@colorado.edu>
5006
5013
5007 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5014 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5008 to *not* include the last item given in a range. This brings their
5015 to *not* include the last item given in a range. This brings their
5009 behavior in line with Python's slicing:
5016 behavior in line with Python's slicing:
5010 a[n1:n2] -> a[n1]...a[n2-1]
5017 a[n1:n2] -> a[n1]...a[n2-1]
5011 It may be a bit less convenient, but I prefer to stick to Python's
5018 It may be a bit less convenient, but I prefer to stick to Python's
5012 conventions *everywhere*, so users never have to wonder.
5019 conventions *everywhere*, so users never have to wonder.
5013 (Magic.magic_macro): Added @macro function to ease the creation of
5020 (Magic.magic_macro): Added @macro function to ease the creation of
5014 macros.
5021 macros.
5015
5022
5016 2002-01-05 Fernando Perez <fperez@colorado.edu>
5023 2002-01-05 Fernando Perez <fperez@colorado.edu>
5017
5024
5018 * Released 0.2.4.
5025 * Released 0.2.4.
5019
5026
5020 * IPython/iplib.py (Magic.magic_pdef):
5027 * IPython/iplib.py (Magic.magic_pdef):
5021 (InteractiveShell.safe_execfile): report magic lines and error
5028 (InteractiveShell.safe_execfile): report magic lines and error
5022 lines without line numbers so one can easily copy/paste them for
5029 lines without line numbers so one can easily copy/paste them for
5023 re-execution.
5030 re-execution.
5024
5031
5025 * Updated manual with recent changes.
5032 * Updated manual with recent changes.
5026
5033
5027 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5034 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5028 docstring printing when class? is called. Very handy for knowing
5035 docstring printing when class? is called. Very handy for knowing
5029 how to create class instances (as long as __init__ is well
5036 how to create class instances (as long as __init__ is well
5030 documented, of course :)
5037 documented, of course :)
5031 (Magic.magic_doc): print both class and constructor docstrings.
5038 (Magic.magic_doc): print both class and constructor docstrings.
5032 (Magic.magic_pdef): give constructor info if passed a class and
5039 (Magic.magic_pdef): give constructor info if passed a class and
5033 __call__ info for callable object instances.
5040 __call__ info for callable object instances.
5034
5041
5035 2002-01-04 Fernando Perez <fperez@colorado.edu>
5042 2002-01-04 Fernando Perez <fperez@colorado.edu>
5036
5043
5037 * Made deep_reload() off by default. It doesn't always work
5044 * Made deep_reload() off by default. It doesn't always work
5038 exactly as intended, so it's probably safer to have it off. It's
5045 exactly as intended, so it's probably safer to have it off. It's
5039 still available as dreload() anyway, so nothing is lost.
5046 still available as dreload() anyway, so nothing is lost.
5040
5047
5041 2002-01-02 Fernando Perez <fperez@colorado.edu>
5048 2002-01-02 Fernando Perez <fperez@colorado.edu>
5042
5049
5043 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5050 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5044 so I wanted an updated release).
5051 so I wanted an updated release).
5045
5052
5046 2001-12-27 Fernando Perez <fperez@colorado.edu>
5053 2001-12-27 Fernando Perez <fperez@colorado.edu>
5047
5054
5048 * IPython/iplib.py (InteractiveShell.interact): Added the original
5055 * IPython/iplib.py (InteractiveShell.interact): Added the original
5049 code from 'code.py' for this module in order to change the
5056 code from 'code.py' for this module in order to change the
5050 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5057 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5051 the history cache would break when the user hit Ctrl-C, and
5058 the history cache would break when the user hit Ctrl-C, and
5052 interact() offers no way to add any hooks to it.
5059 interact() offers no way to add any hooks to it.
5053
5060
5054 2001-12-23 Fernando Perez <fperez@colorado.edu>
5061 2001-12-23 Fernando Perez <fperez@colorado.edu>
5055
5062
5056 * setup.py: added check for 'MANIFEST' before trying to remove
5063 * setup.py: added check for 'MANIFEST' before trying to remove
5057 it. Thanks to Sean Reifschneider.
5064 it. Thanks to Sean Reifschneider.
5058
5065
5059 2001-12-22 Fernando Perez <fperez@colorado.edu>
5066 2001-12-22 Fernando Perez <fperez@colorado.edu>
5060
5067
5061 * Released 0.2.2.
5068 * Released 0.2.2.
5062
5069
5063 * Finished (reasonably) writing the manual. Later will add the
5070 * Finished (reasonably) writing the manual. Later will add the
5064 python-standard navigation stylesheets, but for the time being
5071 python-standard navigation stylesheets, but for the time being
5065 it's fairly complete. Distribution will include html and pdf
5072 it's fairly complete. Distribution will include html and pdf
5066 versions.
5073 versions.
5067
5074
5068 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5075 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5069 (MayaVi author).
5076 (MayaVi author).
5070
5077
5071 2001-12-21 Fernando Perez <fperez@colorado.edu>
5078 2001-12-21 Fernando Perez <fperez@colorado.edu>
5072
5079
5073 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5080 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5074 good public release, I think (with the manual and the distutils
5081 good public release, I think (with the manual and the distutils
5075 installer). The manual can use some work, but that can go
5082 installer). The manual can use some work, but that can go
5076 slowly. Otherwise I think it's quite nice for end users. Next
5083 slowly. Otherwise I think it's quite nice for end users. Next
5077 summer, rewrite the guts of it...
5084 summer, rewrite the guts of it...
5078
5085
5079 * Changed format of ipythonrc files to use whitespace as the
5086 * Changed format of ipythonrc files to use whitespace as the
5080 separator instead of an explicit '='. Cleaner.
5087 separator instead of an explicit '='. Cleaner.
5081
5088
5082 2001-12-20 Fernando Perez <fperez@colorado.edu>
5089 2001-12-20 Fernando Perez <fperez@colorado.edu>
5083
5090
5084 * Started a manual in LyX. For now it's just a quick merge of the
5091 * Started a manual in LyX. For now it's just a quick merge of the
5085 various internal docstrings and READMEs. Later it may grow into a
5092 various internal docstrings and READMEs. Later it may grow into a
5086 nice, full-blown manual.
5093 nice, full-blown manual.
5087
5094
5088 * Set up a distutils based installer. Installation should now be
5095 * Set up a distutils based installer. Installation should now be
5089 trivially simple for end-users.
5096 trivially simple for end-users.
5090
5097
5091 2001-12-11 Fernando Perez <fperez@colorado.edu>
5098 2001-12-11 Fernando Perez <fperez@colorado.edu>
5092
5099
5093 * Released 0.2.0. First public release, announced it at
5100 * Released 0.2.0. First public release, announced it at
5094 comp.lang.python. From now on, just bugfixes...
5101 comp.lang.python. From now on, just bugfixes...
5095
5102
5096 * Went through all the files, set copyright/license notices and
5103 * Went through all the files, set copyright/license notices and
5097 cleaned up things. Ready for release.
5104 cleaned up things. Ready for release.
5098
5105
5099 2001-12-10 Fernando Perez <fperez@colorado.edu>
5106 2001-12-10 Fernando Perez <fperez@colorado.edu>
5100
5107
5101 * Changed the first-time installer not to use tarfiles. It's more
5108 * Changed the first-time installer not to use tarfiles. It's more
5102 robust now and less unix-dependent. Also makes it easier for
5109 robust now and less unix-dependent. Also makes it easier for
5103 people to later upgrade versions.
5110 people to later upgrade versions.
5104
5111
5105 * Changed @exit to @abort to reflect the fact that it's pretty
5112 * Changed @exit to @abort to reflect the fact that it's pretty
5106 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5113 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5107 becomes significant only when IPyhton is embedded: in that case,
5114 becomes significant only when IPyhton is embedded: in that case,
5108 C-D closes IPython only, but @abort kills the enclosing program
5115 C-D closes IPython only, but @abort kills the enclosing program
5109 too (unless it had called IPython inside a try catching
5116 too (unless it had called IPython inside a try catching
5110 SystemExit).
5117 SystemExit).
5111
5118
5112 * Created Shell module which exposes the actuall IPython Shell
5119 * Created Shell module which exposes the actuall IPython Shell
5113 classes, currently the normal and the embeddable one. This at
5120 classes, currently the normal and the embeddable one. This at
5114 least offers a stable interface we won't need to change when
5121 least offers a stable interface we won't need to change when
5115 (later) the internals are rewritten. That rewrite will be confined
5122 (later) the internals are rewritten. That rewrite will be confined
5116 to iplib and ipmaker, but the Shell interface should remain as is.
5123 to iplib and ipmaker, but the Shell interface should remain as is.
5117
5124
5118 * Added embed module which offers an embeddable IPShell object,
5125 * Added embed module which offers an embeddable IPShell object,
5119 useful to fire up IPython *inside* a running program. Great for
5126 useful to fire up IPython *inside* a running program. Great for
5120 debugging or dynamical data analysis.
5127 debugging or dynamical data analysis.
5121
5128
5122 2001-12-08 Fernando Perez <fperez@colorado.edu>
5129 2001-12-08 Fernando Perez <fperez@colorado.edu>
5123
5130
5124 * Fixed small bug preventing seeing info from methods of defined
5131 * Fixed small bug preventing seeing info from methods of defined
5125 objects (incorrect namespace in _ofind()).
5132 objects (incorrect namespace in _ofind()).
5126
5133
5127 * Documentation cleanup. Moved the main usage docstrings to a
5134 * Documentation cleanup. Moved the main usage docstrings to a
5128 separate file, usage.py (cleaner to maintain, and hopefully in the
5135 separate file, usage.py (cleaner to maintain, and hopefully in the
5129 future some perlpod-like way of producing interactive, man and
5136 future some perlpod-like way of producing interactive, man and
5130 html docs out of it will be found).
5137 html docs out of it will be found).
5131
5138
5132 * Added @profile to see your profile at any time.
5139 * Added @profile to see your profile at any time.
5133
5140
5134 * Added @p as an alias for 'print'. It's especially convenient if
5141 * Added @p as an alias for 'print'. It's especially convenient if
5135 using automagic ('p x' prints x).
5142 using automagic ('p x' prints x).
5136
5143
5137 * Small cleanups and fixes after a pychecker run.
5144 * Small cleanups and fixes after a pychecker run.
5138
5145
5139 * Changed the @cd command to handle @cd - and @cd -<n> for
5146 * Changed the @cd command to handle @cd - and @cd -<n> for
5140 visiting any directory in _dh.
5147 visiting any directory in _dh.
5141
5148
5142 * Introduced _dh, a history of visited directories. @dhist prints
5149 * Introduced _dh, a history of visited directories. @dhist prints
5143 it out with numbers.
5150 it out with numbers.
5144
5151
5145 2001-12-07 Fernando Perez <fperez@colorado.edu>
5152 2001-12-07 Fernando Perez <fperez@colorado.edu>
5146
5153
5147 * Released 0.1.22
5154 * Released 0.1.22
5148
5155
5149 * Made initialization a bit more robust against invalid color
5156 * Made initialization a bit more robust against invalid color
5150 options in user input (exit, not traceback-crash).
5157 options in user input (exit, not traceback-crash).
5151
5158
5152 * Changed the bug crash reporter to write the report only in the
5159 * Changed the bug crash reporter to write the report only in the
5153 user's .ipython directory. That way IPython won't litter people's
5160 user's .ipython directory. That way IPython won't litter people's
5154 hard disks with crash files all over the place. Also print on
5161 hard disks with crash files all over the place. Also print on
5155 screen the necessary mail command.
5162 screen the necessary mail command.
5156
5163
5157 * With the new ultraTB, implemented LightBG color scheme for light
5164 * With the new ultraTB, implemented LightBG color scheme for light
5158 background terminals. A lot of people like white backgrounds, so I
5165 background terminals. A lot of people like white backgrounds, so I
5159 guess we should at least give them something readable.
5166 guess we should at least give them something readable.
5160
5167
5161 2001-12-06 Fernando Perez <fperez@colorado.edu>
5168 2001-12-06 Fernando Perez <fperez@colorado.edu>
5162
5169
5163 * Modified the structure of ultraTB. Now there's a proper class
5170 * Modified the structure of ultraTB. Now there's a proper class
5164 for tables of color schemes which allow adding schemes easily and
5171 for tables of color schemes which allow adding schemes easily and
5165 switching the active scheme without creating a new instance every
5172 switching the active scheme without creating a new instance every
5166 time (which was ridiculous). The syntax for creating new schemes
5173 time (which was ridiculous). The syntax for creating new schemes
5167 is also cleaner. I think ultraTB is finally done, with a clean
5174 is also cleaner. I think ultraTB is finally done, with a clean
5168 class structure. Names are also much cleaner (now there's proper
5175 class structure. Names are also much cleaner (now there's proper
5169 color tables, no need for every variable to also have 'color' in
5176 color tables, no need for every variable to also have 'color' in
5170 its name).
5177 its name).
5171
5178
5172 * Broke down genutils into separate files. Now genutils only
5179 * Broke down genutils into separate files. Now genutils only
5173 contains utility functions, and classes have been moved to their
5180 contains utility functions, and classes have been moved to their
5174 own files (they had enough independent functionality to warrant
5181 own files (they had enough independent functionality to warrant
5175 it): ConfigLoader, OutputTrap, Struct.
5182 it): ConfigLoader, OutputTrap, Struct.
5176
5183
5177 2001-12-05 Fernando Perez <fperez@colorado.edu>
5184 2001-12-05 Fernando Perez <fperez@colorado.edu>
5178
5185
5179 * IPython turns 21! Released version 0.1.21, as a candidate for
5186 * IPython turns 21! Released version 0.1.21, as a candidate for
5180 public consumption. If all goes well, release in a few days.
5187 public consumption. If all goes well, release in a few days.
5181
5188
5182 * Fixed path bug (files in Extensions/ directory wouldn't be found
5189 * Fixed path bug (files in Extensions/ directory wouldn't be found
5183 unless IPython/ was explicitly in sys.path).
5190 unless IPython/ was explicitly in sys.path).
5184
5191
5185 * Extended the FlexCompleter class as MagicCompleter to allow
5192 * Extended the FlexCompleter class as MagicCompleter to allow
5186 completion of @-starting lines.
5193 completion of @-starting lines.
5187
5194
5188 * Created __release__.py file as a central repository for release
5195 * Created __release__.py file as a central repository for release
5189 info that other files can read from.
5196 info that other files can read from.
5190
5197
5191 * Fixed small bug in logging: when logging was turned on in
5198 * Fixed small bug in logging: when logging was turned on in
5192 mid-session, old lines with special meanings (!@?) were being
5199 mid-session, old lines with special meanings (!@?) were being
5193 logged without the prepended comment, which is necessary since
5200 logged without the prepended comment, which is necessary since
5194 they are not truly valid python syntax. This should make session
5201 they are not truly valid python syntax. This should make session
5195 restores produce less errors.
5202 restores produce less errors.
5196
5203
5197 * The namespace cleanup forced me to make a FlexCompleter class
5204 * The namespace cleanup forced me to make a FlexCompleter class
5198 which is nothing but a ripoff of rlcompleter, but with selectable
5205 which is nothing but a ripoff of rlcompleter, but with selectable
5199 namespace (rlcompleter only works in __main__.__dict__). I'll try
5206 namespace (rlcompleter only works in __main__.__dict__). I'll try
5200 to submit a note to the authors to see if this change can be
5207 to submit a note to the authors to see if this change can be
5201 incorporated in future rlcompleter releases (Dec.6: done)
5208 incorporated in future rlcompleter releases (Dec.6: done)
5202
5209
5203 * More fixes to namespace handling. It was a mess! Now all
5210 * More fixes to namespace handling. It was a mess! Now all
5204 explicit references to __main__.__dict__ are gone (except when
5211 explicit references to __main__.__dict__ are gone (except when
5205 really needed) and everything is handled through the namespace
5212 really needed) and everything is handled through the namespace
5206 dicts in the IPython instance. We seem to be getting somewhere
5213 dicts in the IPython instance. We seem to be getting somewhere
5207 with this, finally...
5214 with this, finally...
5208
5215
5209 * Small documentation updates.
5216 * Small documentation updates.
5210
5217
5211 * Created the Extensions directory under IPython (with an
5218 * Created the Extensions directory under IPython (with an
5212 __init__.py). Put the PhysicalQ stuff there. This directory should
5219 __init__.py). Put the PhysicalQ stuff there. This directory should
5213 be used for all special-purpose extensions.
5220 be used for all special-purpose extensions.
5214
5221
5215 * File renaming:
5222 * File renaming:
5216 ipythonlib --> ipmaker
5223 ipythonlib --> ipmaker
5217 ipplib --> iplib
5224 ipplib --> iplib
5218 This makes a bit more sense in terms of what these files actually do.
5225 This makes a bit more sense in terms of what these files actually do.
5219
5226
5220 * Moved all the classes and functions in ipythonlib to ipplib, so
5227 * Moved all the classes and functions in ipythonlib to ipplib, so
5221 now ipythonlib only has make_IPython(). This will ease up its
5228 now ipythonlib only has make_IPython(). This will ease up its
5222 splitting in smaller functional chunks later.
5229 splitting in smaller functional chunks later.
5223
5230
5224 * Cleaned up (done, I think) output of @whos. Better column
5231 * Cleaned up (done, I think) output of @whos. Better column
5225 formatting, and now shows str(var) for as much as it can, which is
5232 formatting, and now shows str(var) for as much as it can, which is
5226 typically what one gets with a 'print var'.
5233 typically what one gets with a 'print var'.
5227
5234
5228 2001-12-04 Fernando Perez <fperez@colorado.edu>
5235 2001-12-04 Fernando Perez <fperez@colorado.edu>
5229
5236
5230 * Fixed namespace problems. Now builtin/IPyhton/user names get
5237 * Fixed namespace problems. Now builtin/IPyhton/user names get
5231 properly reported in their namespace. Internal namespace handling
5238 properly reported in their namespace. Internal namespace handling
5232 is finally getting decent (not perfect yet, but much better than
5239 is finally getting decent (not perfect yet, but much better than
5233 the ad-hoc mess we had).
5240 the ad-hoc mess we had).
5234
5241
5235 * Removed -exit option. If people just want to run a python
5242 * Removed -exit option. If people just want to run a python
5236 script, that's what the normal interpreter is for. Less
5243 script, that's what the normal interpreter is for. Less
5237 unnecessary options, less chances for bugs.
5244 unnecessary options, less chances for bugs.
5238
5245
5239 * Added a crash handler which generates a complete post-mortem if
5246 * Added a crash handler which generates a complete post-mortem if
5240 IPython crashes. This will help a lot in tracking bugs down the
5247 IPython crashes. This will help a lot in tracking bugs down the
5241 road.
5248 road.
5242
5249
5243 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5250 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5244 which were boud to functions being reassigned would bypass the
5251 which were boud to functions being reassigned would bypass the
5245 logger, breaking the sync of _il with the prompt counter. This
5252 logger, breaking the sync of _il with the prompt counter. This
5246 would then crash IPython later when a new line was logged.
5253 would then crash IPython later when a new line was logged.
5247
5254
5248 2001-12-02 Fernando Perez <fperez@colorado.edu>
5255 2001-12-02 Fernando Perez <fperez@colorado.edu>
5249
5256
5250 * Made IPython a package. This means people don't have to clutter
5257 * Made IPython a package. This means people don't have to clutter
5251 their sys.path with yet another directory. Changed the INSTALL
5258 their sys.path with yet another directory. Changed the INSTALL
5252 file accordingly.
5259 file accordingly.
5253
5260
5254 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5261 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5255 sorts its output (so @who shows it sorted) and @whos formats the
5262 sorts its output (so @who shows it sorted) and @whos formats the
5256 table according to the width of the first column. Nicer, easier to
5263 table according to the width of the first column. Nicer, easier to
5257 read. Todo: write a generic table_format() which takes a list of
5264 read. Todo: write a generic table_format() which takes a list of
5258 lists and prints it nicely formatted, with optional row/column
5265 lists and prints it nicely formatted, with optional row/column
5259 separators and proper padding and justification.
5266 separators and proper padding and justification.
5260
5267
5261 * Released 0.1.20
5268 * Released 0.1.20
5262
5269
5263 * Fixed bug in @log which would reverse the inputcache list (a
5270 * Fixed bug in @log which would reverse the inputcache list (a
5264 copy operation was missing).
5271 copy operation was missing).
5265
5272
5266 * Code cleanup. @config was changed to use page(). Better, since
5273 * Code cleanup. @config was changed to use page(). Better, since
5267 its output is always quite long.
5274 its output is always quite long.
5268
5275
5269 * Itpl is back as a dependency. I was having too many problems
5276 * Itpl is back as a dependency. I was having too many problems
5270 getting the parametric aliases to work reliably, and it's just
5277 getting the parametric aliases to work reliably, and it's just
5271 easier to code weird string operations with it than playing %()s
5278 easier to code weird string operations with it than playing %()s
5272 games. It's only ~6k, so I don't think it's too big a deal.
5279 games. It's only ~6k, so I don't think it's too big a deal.
5273
5280
5274 * Found (and fixed) a very nasty bug with history. !lines weren't
5281 * Found (and fixed) a very nasty bug with history. !lines weren't
5275 getting cached, and the out of sync caches would crash
5282 getting cached, and the out of sync caches would crash
5276 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5283 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5277 division of labor a bit better. Bug fixed, cleaner structure.
5284 division of labor a bit better. Bug fixed, cleaner structure.
5278
5285
5279 2001-12-01 Fernando Perez <fperez@colorado.edu>
5286 2001-12-01 Fernando Perez <fperez@colorado.edu>
5280
5287
5281 * Released 0.1.19
5288 * Released 0.1.19
5282
5289
5283 * Added option -n to @hist to prevent line number printing. Much
5290 * Added option -n to @hist to prevent line number printing. Much
5284 easier to copy/paste code this way.
5291 easier to copy/paste code this way.
5285
5292
5286 * Created global _il to hold the input list. Allows easy
5293 * Created global _il to hold the input list. Allows easy
5287 re-execution of blocks of code by slicing it (inspired by Janko's
5294 re-execution of blocks of code by slicing it (inspired by Janko's
5288 comment on 'macros').
5295 comment on 'macros').
5289
5296
5290 * Small fixes and doc updates.
5297 * Small fixes and doc updates.
5291
5298
5292 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5299 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5293 much too fragile with automagic. Handles properly multi-line
5300 much too fragile with automagic. Handles properly multi-line
5294 statements and takes parameters.
5301 statements and takes parameters.
5295
5302
5296 2001-11-30 Fernando Perez <fperez@colorado.edu>
5303 2001-11-30 Fernando Perez <fperez@colorado.edu>
5297
5304
5298 * Version 0.1.18 released.
5305 * Version 0.1.18 released.
5299
5306
5300 * Fixed nasty namespace bug in initial module imports.
5307 * Fixed nasty namespace bug in initial module imports.
5301
5308
5302 * Added copyright/license notes to all code files (except
5309 * Added copyright/license notes to all code files (except
5303 DPyGetOpt). For the time being, LGPL. That could change.
5310 DPyGetOpt). For the time being, LGPL. That could change.
5304
5311
5305 * Rewrote a much nicer README, updated INSTALL, cleaned up
5312 * Rewrote a much nicer README, updated INSTALL, cleaned up
5306 ipythonrc-* samples.
5313 ipythonrc-* samples.
5307
5314
5308 * Overall code/documentation cleanup. Basically ready for
5315 * Overall code/documentation cleanup. Basically ready for
5309 release. Only remaining thing: licence decision (LGPL?).
5316 release. Only remaining thing: licence decision (LGPL?).
5310
5317
5311 * Converted load_config to a class, ConfigLoader. Now recursion
5318 * Converted load_config to a class, ConfigLoader. Now recursion
5312 control is better organized. Doesn't include the same file twice.
5319 control is better organized. Doesn't include the same file twice.
5313
5320
5314 2001-11-29 Fernando Perez <fperez@colorado.edu>
5321 2001-11-29 Fernando Perez <fperez@colorado.edu>
5315
5322
5316 * Got input history working. Changed output history variables from
5323 * Got input history working. Changed output history variables from
5317 _p to _o so that _i is for input and _o for output. Just cleaner
5324 _p to _o so that _i is for input and _o for output. Just cleaner
5318 convention.
5325 convention.
5319
5326
5320 * Implemented parametric aliases. This pretty much allows the
5327 * Implemented parametric aliases. This pretty much allows the
5321 alias system to offer full-blown shell convenience, I think.
5328 alias system to offer full-blown shell convenience, I think.
5322
5329
5323 * Version 0.1.17 released, 0.1.18 opened.
5330 * Version 0.1.17 released, 0.1.18 opened.
5324
5331
5325 * dot_ipython/ipythonrc (alias): added documentation.
5332 * dot_ipython/ipythonrc (alias): added documentation.
5326 (xcolor): Fixed small bug (xcolors -> xcolor)
5333 (xcolor): Fixed small bug (xcolors -> xcolor)
5327
5334
5328 * Changed the alias system. Now alias is a magic command to define
5335 * Changed the alias system. Now alias is a magic command to define
5329 aliases just like the shell. Rationale: the builtin magics should
5336 aliases just like the shell. Rationale: the builtin magics should
5330 be there for things deeply connected to IPython's
5337 be there for things deeply connected to IPython's
5331 architecture. And this is a much lighter system for what I think
5338 architecture. And this is a much lighter system for what I think
5332 is the really important feature: allowing users to define quickly
5339 is the really important feature: allowing users to define quickly
5333 magics that will do shell things for them, so they can customize
5340 magics that will do shell things for them, so they can customize
5334 IPython easily to match their work habits. If someone is really
5341 IPython easily to match their work habits. If someone is really
5335 desperate to have another name for a builtin alias, they can
5342 desperate to have another name for a builtin alias, they can
5336 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5343 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5337 works.
5344 works.
5338
5345
5339 2001-11-28 Fernando Perez <fperez@colorado.edu>
5346 2001-11-28 Fernando Perez <fperez@colorado.edu>
5340
5347
5341 * Changed @file so that it opens the source file at the proper
5348 * Changed @file so that it opens the source file at the proper
5342 line. Since it uses less, if your EDITOR environment is
5349 line. Since it uses less, if your EDITOR environment is
5343 configured, typing v will immediately open your editor of choice
5350 configured, typing v will immediately open your editor of choice
5344 right at the line where the object is defined. Not as quick as
5351 right at the line where the object is defined. Not as quick as
5345 having a direct @edit command, but for all intents and purposes it
5352 having a direct @edit command, but for all intents and purposes it
5346 works. And I don't have to worry about writing @edit to deal with
5353 works. And I don't have to worry about writing @edit to deal with
5347 all the editors, less does that.
5354 all the editors, less does that.
5348
5355
5349 * Version 0.1.16 released, 0.1.17 opened.
5356 * Version 0.1.16 released, 0.1.17 opened.
5350
5357
5351 * Fixed some nasty bugs in the page/page_dumb combo that could
5358 * Fixed some nasty bugs in the page/page_dumb combo that could
5352 crash IPython.
5359 crash IPython.
5353
5360
5354 2001-11-27 Fernando Perez <fperez@colorado.edu>
5361 2001-11-27 Fernando Perez <fperez@colorado.edu>
5355
5362
5356 * Version 0.1.15 released, 0.1.16 opened.
5363 * Version 0.1.15 released, 0.1.16 opened.
5357
5364
5358 * Finally got ? and ?? to work for undefined things: now it's
5365 * Finally got ? and ?? to work for undefined things: now it's
5359 possible to type {}.get? and get information about the get method
5366 possible to type {}.get? and get information about the get method
5360 of dicts, or os.path? even if only os is defined (so technically
5367 of dicts, or os.path? even if only os is defined (so technically
5361 os.path isn't). Works at any level. For example, after import os,
5368 os.path isn't). Works at any level. For example, after import os,
5362 os?, os.path?, os.path.abspath? all work. This is great, took some
5369 os?, os.path?, os.path.abspath? all work. This is great, took some
5363 work in _ofind.
5370 work in _ofind.
5364
5371
5365 * Fixed more bugs with logging. The sanest way to do it was to add
5372 * Fixed more bugs with logging. The sanest way to do it was to add
5366 to @log a 'mode' parameter. Killed two in one shot (this mode
5373 to @log a 'mode' parameter. Killed two in one shot (this mode
5367 option was a request of Janko's). I think it's finally clean
5374 option was a request of Janko's). I think it's finally clean
5368 (famous last words).
5375 (famous last words).
5369
5376
5370 * Added a page_dumb() pager which does a decent job of paging on
5377 * Added a page_dumb() pager which does a decent job of paging on
5371 screen, if better things (like less) aren't available. One less
5378 screen, if better things (like less) aren't available. One less
5372 unix dependency (someday maybe somebody will port this to
5379 unix dependency (someday maybe somebody will port this to
5373 windows).
5380 windows).
5374
5381
5375 * Fixed problem in magic_log: would lock of logging out if log
5382 * Fixed problem in magic_log: would lock of logging out if log
5376 creation failed (because it would still think it had succeeded).
5383 creation failed (because it would still think it had succeeded).
5377
5384
5378 * Improved the page() function using curses to auto-detect screen
5385 * Improved the page() function using curses to auto-detect screen
5379 size. Now it can make a much better decision on whether to print
5386 size. Now it can make a much better decision on whether to print
5380 or page a string. Option screen_length was modified: a value 0
5387 or page a string. Option screen_length was modified: a value 0
5381 means auto-detect, and that's the default now.
5388 means auto-detect, and that's the default now.
5382
5389
5383 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5390 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5384 go out. I'll test it for a few days, then talk to Janko about
5391 go out. I'll test it for a few days, then talk to Janko about
5385 licences and announce it.
5392 licences and announce it.
5386
5393
5387 * Fixed the length of the auto-generated ---> prompt which appears
5394 * Fixed the length of the auto-generated ---> prompt which appears
5388 for auto-parens and auto-quotes. Getting this right isn't trivial,
5395 for auto-parens and auto-quotes. Getting this right isn't trivial,
5389 with all the color escapes, different prompt types and optional
5396 with all the color escapes, different prompt types and optional
5390 separators. But it seems to be working in all the combinations.
5397 separators. But it seems to be working in all the combinations.
5391
5398
5392 2001-11-26 Fernando Perez <fperez@colorado.edu>
5399 2001-11-26 Fernando Perez <fperez@colorado.edu>
5393
5400
5394 * Wrote a regexp filter to get option types from the option names
5401 * Wrote a regexp filter to get option types from the option names
5395 string. This eliminates the need to manually keep two duplicate
5402 string. This eliminates the need to manually keep two duplicate
5396 lists.
5403 lists.
5397
5404
5398 * Removed the unneeded check_option_names. Now options are handled
5405 * Removed the unneeded check_option_names. Now options are handled
5399 in a much saner manner and it's easy to visually check that things
5406 in a much saner manner and it's easy to visually check that things
5400 are ok.
5407 are ok.
5401
5408
5402 * Updated version numbers on all files I modified to carry a
5409 * Updated version numbers on all files I modified to carry a
5403 notice so Janko and Nathan have clear version markers.
5410 notice so Janko and Nathan have clear version markers.
5404
5411
5405 * Updated docstring for ultraTB with my changes. I should send
5412 * Updated docstring for ultraTB with my changes. I should send
5406 this to Nathan.
5413 this to Nathan.
5407
5414
5408 * Lots of small fixes. Ran everything through pychecker again.
5415 * Lots of small fixes. Ran everything through pychecker again.
5409
5416
5410 * Made loading of deep_reload an cmd line option. If it's not too
5417 * Made loading of deep_reload an cmd line option. If it's not too
5411 kosher, now people can just disable it. With -nodeep_reload it's
5418 kosher, now people can just disable it. With -nodeep_reload it's
5412 still available as dreload(), it just won't overwrite reload().
5419 still available as dreload(), it just won't overwrite reload().
5413
5420
5414 * Moved many options to the no| form (-opt and -noopt
5421 * Moved many options to the no| form (-opt and -noopt
5415 accepted). Cleaner.
5422 accepted). Cleaner.
5416
5423
5417 * Changed magic_log so that if called with no parameters, it uses
5424 * Changed magic_log so that if called with no parameters, it uses
5418 'rotate' mode. That way auto-generated logs aren't automatically
5425 'rotate' mode. That way auto-generated logs aren't automatically
5419 over-written. For normal logs, now a backup is made if it exists
5426 over-written. For normal logs, now a backup is made if it exists
5420 (only 1 level of backups). A new 'backup' mode was added to the
5427 (only 1 level of backups). A new 'backup' mode was added to the
5421 Logger class to support this. This was a request by Janko.
5428 Logger class to support this. This was a request by Janko.
5422
5429
5423 * Added @logoff/@logon to stop/restart an active log.
5430 * Added @logoff/@logon to stop/restart an active log.
5424
5431
5425 * Fixed a lot of bugs in log saving/replay. It was pretty
5432 * Fixed a lot of bugs in log saving/replay. It was pretty
5426 broken. Now special lines (!@,/) appear properly in the command
5433 broken. Now special lines (!@,/) appear properly in the command
5427 history after a log replay.
5434 history after a log replay.
5428
5435
5429 * Tried and failed to implement full session saving via pickle. My
5436 * Tried and failed to implement full session saving via pickle. My
5430 idea was to pickle __main__.__dict__, but modules can't be
5437 idea was to pickle __main__.__dict__, but modules can't be
5431 pickled. This would be a better alternative to replaying logs, but
5438 pickled. This would be a better alternative to replaying logs, but
5432 seems quite tricky to get to work. Changed -session to be called
5439 seems quite tricky to get to work. Changed -session to be called
5433 -logplay, which more accurately reflects what it does. And if we
5440 -logplay, which more accurately reflects what it does. And if we
5434 ever get real session saving working, -session is now available.
5441 ever get real session saving working, -session is now available.
5435
5442
5436 * Implemented color schemes for prompts also. As for tracebacks,
5443 * Implemented color schemes for prompts also. As for tracebacks,
5437 currently only NoColor and Linux are supported. But now the
5444 currently only NoColor and Linux are supported. But now the
5438 infrastructure is in place, based on a generic ColorScheme
5445 infrastructure is in place, based on a generic ColorScheme
5439 class. So writing and activating new schemes both for the prompts
5446 class. So writing and activating new schemes both for the prompts
5440 and the tracebacks should be straightforward.
5447 and the tracebacks should be straightforward.
5441
5448
5442 * Version 0.1.13 released, 0.1.14 opened.
5449 * Version 0.1.13 released, 0.1.14 opened.
5443
5450
5444 * Changed handling of options for output cache. Now counter is
5451 * Changed handling of options for output cache. Now counter is
5445 hardwired starting at 1 and one specifies the maximum number of
5452 hardwired starting at 1 and one specifies the maximum number of
5446 entries *in the outcache* (not the max prompt counter). This is
5453 entries *in the outcache* (not the max prompt counter). This is
5447 much better, since many statements won't increase the cache
5454 much better, since many statements won't increase the cache
5448 count. It also eliminated some confusing options, now there's only
5455 count. It also eliminated some confusing options, now there's only
5449 one: cache_size.
5456 one: cache_size.
5450
5457
5451 * Added 'alias' magic function and magic_alias option in the
5458 * Added 'alias' magic function and magic_alias option in the
5452 ipythonrc file. Now the user can easily define whatever names he
5459 ipythonrc file. Now the user can easily define whatever names he
5453 wants for the magic functions without having to play weird
5460 wants for the magic functions without having to play weird
5454 namespace games. This gives IPython a real shell-like feel.
5461 namespace games. This gives IPython a real shell-like feel.
5455
5462
5456 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5463 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5457 @ or not).
5464 @ or not).
5458
5465
5459 This was one of the last remaining 'visible' bugs (that I know
5466 This was one of the last remaining 'visible' bugs (that I know
5460 of). I think if I can clean up the session loading so it works
5467 of). I think if I can clean up the session loading so it works
5461 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5468 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5462 about licensing).
5469 about licensing).
5463
5470
5464 2001-11-25 Fernando Perez <fperez@colorado.edu>
5471 2001-11-25 Fernando Perez <fperez@colorado.edu>
5465
5472
5466 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5473 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5467 there's a cleaner distinction between what ? and ?? show.
5474 there's a cleaner distinction between what ? and ?? show.
5468
5475
5469 * Added screen_length option. Now the user can define his own
5476 * Added screen_length option. Now the user can define his own
5470 screen size for page() operations.
5477 screen size for page() operations.
5471
5478
5472 * Implemented magic shell-like functions with automatic code
5479 * Implemented magic shell-like functions with automatic code
5473 generation. Now adding another function is just a matter of adding
5480 generation. Now adding another function is just a matter of adding
5474 an entry to a dict, and the function is dynamically generated at
5481 an entry to a dict, and the function is dynamically generated at
5475 run-time. Python has some really cool features!
5482 run-time. Python has some really cool features!
5476
5483
5477 * Renamed many options to cleanup conventions a little. Now all
5484 * Renamed many options to cleanup conventions a little. Now all
5478 are lowercase, and only underscores where needed. Also in the code
5485 are lowercase, and only underscores where needed. Also in the code
5479 option name tables are clearer.
5486 option name tables are clearer.
5480
5487
5481 * Changed prompts a little. Now input is 'In [n]:' instead of
5488 * Changed prompts a little. Now input is 'In [n]:' instead of
5482 'In[n]:='. This allows it the numbers to be aligned with the
5489 'In[n]:='. This allows it the numbers to be aligned with the
5483 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5490 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5484 Python (it was a Mathematica thing). The '...' continuation prompt
5491 Python (it was a Mathematica thing). The '...' continuation prompt
5485 was also changed a little to align better.
5492 was also changed a little to align better.
5486
5493
5487 * Fixed bug when flushing output cache. Not all _p<n> variables
5494 * Fixed bug when flushing output cache. Not all _p<n> variables
5488 exist, so their deletion needs to be wrapped in a try:
5495 exist, so their deletion needs to be wrapped in a try:
5489
5496
5490 * Figured out how to properly use inspect.formatargspec() (it
5497 * Figured out how to properly use inspect.formatargspec() (it
5491 requires the args preceded by *). So I removed all the code from
5498 requires the args preceded by *). So I removed all the code from
5492 _get_pdef in Magic, which was just replicating that.
5499 _get_pdef in Magic, which was just replicating that.
5493
5500
5494 * Added test to prefilter to allow redefining magic function names
5501 * Added test to prefilter to allow redefining magic function names
5495 as variables. This is ok, since the @ form is always available,
5502 as variables. This is ok, since the @ form is always available,
5496 but whe should allow the user to define a variable called 'ls' if
5503 but whe should allow the user to define a variable called 'ls' if
5497 he needs it.
5504 he needs it.
5498
5505
5499 * Moved the ToDo information from README into a separate ToDo.
5506 * Moved the ToDo information from README into a separate ToDo.
5500
5507
5501 * General code cleanup and small bugfixes. I think it's close to a
5508 * General code cleanup and small bugfixes. I think it's close to a
5502 state where it can be released, obviously with a big 'beta'
5509 state where it can be released, obviously with a big 'beta'
5503 warning on it.
5510 warning on it.
5504
5511
5505 * Got the magic function split to work. Now all magics are defined
5512 * Got the magic function split to work. Now all magics are defined
5506 in a separate class. It just organizes things a bit, and now
5513 in a separate class. It just organizes things a bit, and now
5507 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5514 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5508 was too long).
5515 was too long).
5509
5516
5510 * Changed @clear to @reset to avoid potential confusions with
5517 * Changed @clear to @reset to avoid potential confusions with
5511 the shell command clear. Also renamed @cl to @clear, which does
5518 the shell command clear. Also renamed @cl to @clear, which does
5512 exactly what people expect it to from their shell experience.
5519 exactly what people expect it to from their shell experience.
5513
5520
5514 Added a check to the @reset command (since it's so
5521 Added a check to the @reset command (since it's so
5515 destructive, it's probably a good idea to ask for confirmation).
5522 destructive, it's probably a good idea to ask for confirmation).
5516 But now reset only works for full namespace resetting. Since the
5523 But now reset only works for full namespace resetting. Since the
5517 del keyword is already there for deleting a few specific
5524 del keyword is already there for deleting a few specific
5518 variables, I don't see the point of having a redundant magic
5525 variables, I don't see the point of having a redundant magic
5519 function for the same task.
5526 function for the same task.
5520
5527
5521 2001-11-24 Fernando Perez <fperez@colorado.edu>
5528 2001-11-24 Fernando Perez <fperez@colorado.edu>
5522
5529
5523 * Updated the builtin docs (esp. the ? ones).
5530 * Updated the builtin docs (esp. the ? ones).
5524
5531
5525 * Ran all the code through pychecker. Not terribly impressed with
5532 * Ran all the code through pychecker. Not terribly impressed with
5526 it: lots of spurious warnings and didn't really find anything of
5533 it: lots of spurious warnings and didn't really find anything of
5527 substance (just a few modules being imported and not used).
5534 substance (just a few modules being imported and not used).
5528
5535
5529 * Implemented the new ultraTB functionality into IPython. New
5536 * Implemented the new ultraTB functionality into IPython. New
5530 option: xcolors. This chooses color scheme. xmode now only selects
5537 option: xcolors. This chooses color scheme. xmode now only selects
5531 between Plain and Verbose. Better orthogonality.
5538 between Plain and Verbose. Better orthogonality.
5532
5539
5533 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5540 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5534 mode and color scheme for the exception handlers. Now it's
5541 mode and color scheme for the exception handlers. Now it's
5535 possible to have the verbose traceback with no coloring.
5542 possible to have the verbose traceback with no coloring.
5536
5543
5537 2001-11-23 Fernando Perez <fperez@colorado.edu>
5544 2001-11-23 Fernando Perez <fperez@colorado.edu>
5538
5545
5539 * Version 0.1.12 released, 0.1.13 opened.
5546 * Version 0.1.12 released, 0.1.13 opened.
5540
5547
5541 * Removed option to set auto-quote and auto-paren escapes by
5548 * Removed option to set auto-quote and auto-paren escapes by
5542 user. The chances of breaking valid syntax are just too high. If
5549 user. The chances of breaking valid syntax are just too high. If
5543 someone *really* wants, they can always dig into the code.
5550 someone *really* wants, they can always dig into the code.
5544
5551
5545 * Made prompt separators configurable.
5552 * Made prompt separators configurable.
5546
5553
5547 2001-11-22 Fernando Perez <fperez@colorado.edu>
5554 2001-11-22 Fernando Perez <fperez@colorado.edu>
5548
5555
5549 * Small bugfixes in many places.
5556 * Small bugfixes in many places.
5550
5557
5551 * Removed the MyCompleter class from ipplib. It seemed redundant
5558 * Removed the MyCompleter class from ipplib. It seemed redundant
5552 with the C-p,C-n history search functionality. Less code to
5559 with the C-p,C-n history search functionality. Less code to
5553 maintain.
5560 maintain.
5554
5561
5555 * Moved all the original ipython.py code into ipythonlib.py. Right
5562 * Moved all the original ipython.py code into ipythonlib.py. Right
5556 now it's just one big dump into a function called make_IPython, so
5563 now it's just one big dump into a function called make_IPython, so
5557 no real modularity has been gained. But at least it makes the
5564 no real modularity has been gained. But at least it makes the
5558 wrapper script tiny, and since ipythonlib is a module, it gets
5565 wrapper script tiny, and since ipythonlib is a module, it gets
5559 compiled and startup is much faster.
5566 compiled and startup is much faster.
5560
5567
5561 This is a reasobably 'deep' change, so we should test it for a
5568 This is a reasobably 'deep' change, so we should test it for a
5562 while without messing too much more with the code.
5569 while without messing too much more with the code.
5563
5570
5564 2001-11-21 Fernando Perez <fperez@colorado.edu>
5571 2001-11-21 Fernando Perez <fperez@colorado.edu>
5565
5572
5566 * Version 0.1.11 released, 0.1.12 opened for further work.
5573 * Version 0.1.11 released, 0.1.12 opened for further work.
5567
5574
5568 * Removed dependency on Itpl. It was only needed in one place. It
5575 * Removed dependency on Itpl. It was only needed in one place. It
5569 would be nice if this became part of python, though. It makes life
5576 would be nice if this became part of python, though. It makes life
5570 *a lot* easier in some cases.
5577 *a lot* easier in some cases.
5571
5578
5572 * Simplified the prefilter code a bit. Now all handlers are
5579 * Simplified the prefilter code a bit. Now all handlers are
5573 expected to explicitly return a value (at least a blank string).
5580 expected to explicitly return a value (at least a blank string).
5574
5581
5575 * Heavy edits in ipplib. Removed the help system altogether. Now
5582 * Heavy edits in ipplib. Removed the help system altogether. Now
5576 obj?/?? is used for inspecting objects, a magic @doc prints
5583 obj?/?? is used for inspecting objects, a magic @doc prints
5577 docstrings, and full-blown Python help is accessed via the 'help'
5584 docstrings, and full-blown Python help is accessed via the 'help'
5578 keyword. This cleans up a lot of code (less to maintain) and does
5585 keyword. This cleans up a lot of code (less to maintain) and does
5579 the job. Since 'help' is now a standard Python component, might as
5586 the job. Since 'help' is now a standard Python component, might as
5580 well use it and remove duplicate functionality.
5587 well use it and remove duplicate functionality.
5581
5588
5582 Also removed the option to use ipplib as a standalone program. By
5589 Also removed the option to use ipplib as a standalone program. By
5583 now it's too dependent on other parts of IPython to function alone.
5590 now it's too dependent on other parts of IPython to function alone.
5584
5591
5585 * Fixed bug in genutils.pager. It would crash if the pager was
5592 * Fixed bug in genutils.pager. It would crash if the pager was
5586 exited immediately after opening (broken pipe).
5593 exited immediately after opening (broken pipe).
5587
5594
5588 * Trimmed down the VerboseTB reporting a little. The header is
5595 * Trimmed down the VerboseTB reporting a little. The header is
5589 much shorter now and the repeated exception arguments at the end
5596 much shorter now and the repeated exception arguments at the end
5590 have been removed. For interactive use the old header seemed a bit
5597 have been removed. For interactive use the old header seemed a bit
5591 excessive.
5598 excessive.
5592
5599
5593 * Fixed small bug in output of @whos for variables with multi-word
5600 * Fixed small bug in output of @whos for variables with multi-word
5594 types (only first word was displayed).
5601 types (only first word was displayed).
5595
5602
5596 2001-11-17 Fernando Perez <fperez@colorado.edu>
5603 2001-11-17 Fernando Perez <fperez@colorado.edu>
5597
5604
5598 * Version 0.1.10 released, 0.1.11 opened for further work.
5605 * Version 0.1.10 released, 0.1.11 opened for further work.
5599
5606
5600 * Modified dirs and friends. dirs now *returns* the stack (not
5607 * Modified dirs and friends. dirs now *returns* the stack (not
5601 prints), so one can manipulate it as a variable. Convenient to
5608 prints), so one can manipulate it as a variable. Convenient to
5602 travel along many directories.
5609 travel along many directories.
5603
5610
5604 * Fixed bug in magic_pdef: would only work with functions with
5611 * Fixed bug in magic_pdef: would only work with functions with
5605 arguments with default values.
5612 arguments with default values.
5606
5613
5607 2001-11-14 Fernando Perez <fperez@colorado.edu>
5614 2001-11-14 Fernando Perez <fperez@colorado.edu>
5608
5615
5609 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5616 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5610 example with IPython. Various other minor fixes and cleanups.
5617 example with IPython. Various other minor fixes and cleanups.
5611
5618
5612 * Version 0.1.9 released, 0.1.10 opened for further work.
5619 * Version 0.1.9 released, 0.1.10 opened for further work.
5613
5620
5614 * Added sys.path to the list of directories searched in the
5621 * Added sys.path to the list of directories searched in the
5615 execfile= option. It used to be the current directory and the
5622 execfile= option. It used to be the current directory and the
5616 user's IPYTHONDIR only.
5623 user's IPYTHONDIR only.
5617
5624
5618 2001-11-13 Fernando Perez <fperez@colorado.edu>
5625 2001-11-13 Fernando Perez <fperez@colorado.edu>
5619
5626
5620 * Reinstated the raw_input/prefilter separation that Janko had
5627 * Reinstated the raw_input/prefilter separation that Janko had
5621 initially. This gives a more convenient setup for extending the
5628 initially. This gives a more convenient setup for extending the
5622 pre-processor from the outside: raw_input always gets a string,
5629 pre-processor from the outside: raw_input always gets a string,
5623 and prefilter has to process it. We can then redefine prefilter
5630 and prefilter has to process it. We can then redefine prefilter
5624 from the outside and implement extensions for special
5631 from the outside and implement extensions for special
5625 purposes.
5632 purposes.
5626
5633
5627 Today I got one for inputting PhysicalQuantity objects
5634 Today I got one for inputting PhysicalQuantity objects
5628 (from Scientific) without needing any function calls at
5635 (from Scientific) without needing any function calls at
5629 all. Extremely convenient, and it's all done as a user-level
5636 all. Extremely convenient, and it's all done as a user-level
5630 extension (no IPython code was touched). Now instead of:
5637 extension (no IPython code was touched). Now instead of:
5631 a = PhysicalQuantity(4.2,'m/s**2')
5638 a = PhysicalQuantity(4.2,'m/s**2')
5632 one can simply say
5639 one can simply say
5633 a = 4.2 m/s**2
5640 a = 4.2 m/s**2
5634 or even
5641 or even
5635 a = 4.2 m/s^2
5642 a = 4.2 m/s^2
5636
5643
5637 I use this, but it's also a proof of concept: IPython really is
5644 I use this, but it's also a proof of concept: IPython really is
5638 fully user-extensible, even at the level of the parsing of the
5645 fully user-extensible, even at the level of the parsing of the
5639 command line. It's not trivial, but it's perfectly doable.
5646 command line. It's not trivial, but it's perfectly doable.
5640
5647
5641 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5648 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5642 the problem of modules being loaded in the inverse order in which
5649 the problem of modules being loaded in the inverse order in which
5643 they were defined in
5650 they were defined in
5644
5651
5645 * Version 0.1.8 released, 0.1.9 opened for further work.
5652 * Version 0.1.8 released, 0.1.9 opened for further work.
5646
5653
5647 * Added magics pdef, source and file. They respectively show the
5654 * Added magics pdef, source and file. They respectively show the
5648 definition line ('prototype' in C), source code and full python
5655 definition line ('prototype' in C), source code and full python
5649 file for any callable object. The object inspector oinfo uses
5656 file for any callable object. The object inspector oinfo uses
5650 these to show the same information.
5657 these to show the same information.
5651
5658
5652 * Version 0.1.7 released, 0.1.8 opened for further work.
5659 * Version 0.1.7 released, 0.1.8 opened for further work.
5653
5660
5654 * Separated all the magic functions into a class called Magic. The
5661 * Separated all the magic functions into a class called Magic. The
5655 InteractiveShell class was becoming too big for Xemacs to handle
5662 InteractiveShell class was becoming too big for Xemacs to handle
5656 (de-indenting a line would lock it up for 10 seconds while it
5663 (de-indenting a line would lock it up for 10 seconds while it
5657 backtracked on the whole class!)
5664 backtracked on the whole class!)
5658
5665
5659 FIXME: didn't work. It can be done, but right now namespaces are
5666 FIXME: didn't work. It can be done, but right now namespaces are
5660 all messed up. Do it later (reverted it for now, so at least
5667 all messed up. Do it later (reverted it for now, so at least
5661 everything works as before).
5668 everything works as before).
5662
5669
5663 * Got the object introspection system (magic_oinfo) working! I
5670 * Got the object introspection system (magic_oinfo) working! I
5664 think this is pretty much ready for release to Janko, so he can
5671 think this is pretty much ready for release to Janko, so he can
5665 test it for a while and then announce it. Pretty much 100% of what
5672 test it for a while and then announce it. Pretty much 100% of what
5666 I wanted for the 'phase 1' release is ready. Happy, tired.
5673 I wanted for the 'phase 1' release is ready. Happy, tired.
5667
5674
5668 2001-11-12 Fernando Perez <fperez@colorado.edu>
5675 2001-11-12 Fernando Perez <fperez@colorado.edu>
5669
5676
5670 * Version 0.1.6 released, 0.1.7 opened for further work.
5677 * Version 0.1.6 released, 0.1.7 opened for further work.
5671
5678
5672 * Fixed bug in printing: it used to test for truth before
5679 * Fixed bug in printing: it used to test for truth before
5673 printing, so 0 wouldn't print. Now checks for None.
5680 printing, so 0 wouldn't print. Now checks for None.
5674
5681
5675 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5682 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5676 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5683 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5677 reaches by hand into the outputcache. Think of a better way to do
5684 reaches by hand into the outputcache. Think of a better way to do
5678 this later.
5685 this later.
5679
5686
5680 * Various small fixes thanks to Nathan's comments.
5687 * Various small fixes thanks to Nathan's comments.
5681
5688
5682 * Changed magic_pprint to magic_Pprint. This way it doesn't
5689 * Changed magic_pprint to magic_Pprint. This way it doesn't
5683 collide with pprint() and the name is consistent with the command
5690 collide with pprint() and the name is consistent with the command
5684 line option.
5691 line option.
5685
5692
5686 * Changed prompt counter behavior to be fully like
5693 * Changed prompt counter behavior to be fully like
5687 Mathematica's. That is, even input that doesn't return a result
5694 Mathematica's. That is, even input that doesn't return a result
5688 raises the prompt counter. The old behavior was kind of confusing
5695 raises the prompt counter. The old behavior was kind of confusing
5689 (getting the same prompt number several times if the operation
5696 (getting the same prompt number several times if the operation
5690 didn't return a result).
5697 didn't return a result).
5691
5698
5692 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5699 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5693
5700
5694 * Fixed -Classic mode (wasn't working anymore).
5701 * Fixed -Classic mode (wasn't working anymore).
5695
5702
5696 * Added colored prompts using Nathan's new code. Colors are
5703 * Added colored prompts using Nathan's new code. Colors are
5697 currently hardwired, they can be user-configurable. For
5704 currently hardwired, they can be user-configurable. For
5698 developers, they can be chosen in file ipythonlib.py, at the
5705 developers, they can be chosen in file ipythonlib.py, at the
5699 beginning of the CachedOutput class def.
5706 beginning of the CachedOutput class def.
5700
5707
5701 2001-11-11 Fernando Perez <fperez@colorado.edu>
5708 2001-11-11 Fernando Perez <fperez@colorado.edu>
5702
5709
5703 * Version 0.1.5 released, 0.1.6 opened for further work.
5710 * Version 0.1.5 released, 0.1.6 opened for further work.
5704
5711
5705 * Changed magic_env to *return* the environment as a dict (not to
5712 * Changed magic_env to *return* the environment as a dict (not to
5706 print it). This way it prints, but it can also be processed.
5713 print it). This way it prints, but it can also be processed.
5707
5714
5708 * Added Verbose exception reporting to interactive
5715 * Added Verbose exception reporting to interactive
5709 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5716 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5710 traceback. Had to make some changes to the ultraTB file. This is
5717 traceback. Had to make some changes to the ultraTB file. This is
5711 probably the last 'big' thing in my mental todo list. This ties
5718 probably the last 'big' thing in my mental todo list. This ties
5712 in with the next entry:
5719 in with the next entry:
5713
5720
5714 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5721 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5715 has to specify is Plain, Color or Verbose for all exception
5722 has to specify is Plain, Color or Verbose for all exception
5716 handling.
5723 handling.
5717
5724
5718 * Removed ShellServices option. All this can really be done via
5725 * Removed ShellServices option. All this can really be done via
5719 the magic system. It's easier to extend, cleaner and has automatic
5726 the magic system. It's easier to extend, cleaner and has automatic
5720 namespace protection and documentation.
5727 namespace protection and documentation.
5721
5728
5722 2001-11-09 Fernando Perez <fperez@colorado.edu>
5729 2001-11-09 Fernando Perez <fperez@colorado.edu>
5723
5730
5724 * Fixed bug in output cache flushing (missing parameter to
5731 * Fixed bug in output cache flushing (missing parameter to
5725 __init__). Other small bugs fixed (found using pychecker).
5732 __init__). Other small bugs fixed (found using pychecker).
5726
5733
5727 * Version 0.1.4 opened for bugfixing.
5734 * Version 0.1.4 opened for bugfixing.
5728
5735
5729 2001-11-07 Fernando Perez <fperez@colorado.edu>
5736 2001-11-07 Fernando Perez <fperez@colorado.edu>
5730
5737
5731 * Version 0.1.3 released, mainly because of the raw_input bug.
5738 * Version 0.1.3 released, mainly because of the raw_input bug.
5732
5739
5733 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5740 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5734 and when testing for whether things were callable, a call could
5741 and when testing for whether things were callable, a call could
5735 actually be made to certain functions. They would get called again
5742 actually be made to certain functions. They would get called again
5736 once 'really' executed, with a resulting double call. A disaster
5743 once 'really' executed, with a resulting double call. A disaster
5737 in many cases (list.reverse() would never work!).
5744 in many cases (list.reverse() would never work!).
5738
5745
5739 * Removed prefilter() function, moved its code to raw_input (which
5746 * Removed prefilter() function, moved its code to raw_input (which
5740 after all was just a near-empty caller for prefilter). This saves
5747 after all was just a near-empty caller for prefilter). This saves
5741 a function call on every prompt, and simplifies the class a tiny bit.
5748 a function call on every prompt, and simplifies the class a tiny bit.
5742
5749
5743 * Fix _ip to __ip name in magic example file.
5750 * Fix _ip to __ip name in magic example file.
5744
5751
5745 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5752 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5746 work with non-gnu versions of tar.
5753 work with non-gnu versions of tar.
5747
5754
5748 2001-11-06 Fernando Perez <fperez@colorado.edu>
5755 2001-11-06 Fernando Perez <fperez@colorado.edu>
5749
5756
5750 * Version 0.1.2. Just to keep track of the recent changes.
5757 * Version 0.1.2. Just to keep track of the recent changes.
5751
5758
5752 * Fixed nasty bug in output prompt routine. It used to check 'if
5759 * Fixed nasty bug in output prompt routine. It used to check 'if
5753 arg != None...'. Problem is, this fails if arg implements a
5760 arg != None...'. Problem is, this fails if arg implements a
5754 special comparison (__cmp__) which disallows comparing to
5761 special comparison (__cmp__) which disallows comparing to
5755 None. Found it when trying to use the PhysicalQuantity module from
5762 None. Found it when trying to use the PhysicalQuantity module from
5756 ScientificPython.
5763 ScientificPython.
5757
5764
5758 2001-11-05 Fernando Perez <fperez@colorado.edu>
5765 2001-11-05 Fernando Perez <fperez@colorado.edu>
5759
5766
5760 * Also added dirs. Now the pushd/popd/dirs family functions
5767 * Also added dirs. Now the pushd/popd/dirs family functions
5761 basically like the shell, with the added convenience of going home
5768 basically like the shell, with the added convenience of going home
5762 when called with no args.
5769 when called with no args.
5763
5770
5764 * pushd/popd slightly modified to mimic shell behavior more
5771 * pushd/popd slightly modified to mimic shell behavior more
5765 closely.
5772 closely.
5766
5773
5767 * Added env,pushd,popd from ShellServices as magic functions. I
5774 * Added env,pushd,popd from ShellServices as magic functions. I
5768 think the cleanest will be to port all desired functions from
5775 think the cleanest will be to port all desired functions from
5769 ShellServices as magics and remove ShellServices altogether. This
5776 ShellServices as magics and remove ShellServices altogether. This
5770 will provide a single, clean way of adding functionality
5777 will provide a single, clean way of adding functionality
5771 (shell-type or otherwise) to IP.
5778 (shell-type or otherwise) to IP.
5772
5779
5773 2001-11-04 Fernando Perez <fperez@colorado.edu>
5780 2001-11-04 Fernando Perez <fperez@colorado.edu>
5774
5781
5775 * Added .ipython/ directory to sys.path. This way users can keep
5782 * Added .ipython/ directory to sys.path. This way users can keep
5776 customizations there and access them via import.
5783 customizations there and access them via import.
5777
5784
5778 2001-11-03 Fernando Perez <fperez@colorado.edu>
5785 2001-11-03 Fernando Perez <fperez@colorado.edu>
5779
5786
5780 * Opened version 0.1.1 for new changes.
5787 * Opened version 0.1.1 for new changes.
5781
5788
5782 * Changed version number to 0.1.0: first 'public' release, sent to
5789 * Changed version number to 0.1.0: first 'public' release, sent to
5783 Nathan and Janko.
5790 Nathan and Janko.
5784
5791
5785 * Lots of small fixes and tweaks.
5792 * Lots of small fixes and tweaks.
5786
5793
5787 * Minor changes to whos format. Now strings are shown, snipped if
5794 * Minor changes to whos format. Now strings are shown, snipped if
5788 too long.
5795 too long.
5789
5796
5790 * Changed ShellServices to work on __main__ so they show up in @who
5797 * Changed ShellServices to work on __main__ so they show up in @who
5791
5798
5792 * Help also works with ? at the end of a line:
5799 * Help also works with ? at the end of a line:
5793 ?sin and sin?
5800 ?sin and sin?
5794 both produce the same effect. This is nice, as often I use the
5801 both produce the same effect. This is nice, as often I use the
5795 tab-complete to find the name of a method, but I used to then have
5802 tab-complete to find the name of a method, but I used to then have
5796 to go to the beginning of the line to put a ? if I wanted more
5803 to go to the beginning of the line to put a ? if I wanted more
5797 info. Now I can just add the ? and hit return. Convenient.
5804 info. Now I can just add the ? and hit return. Convenient.
5798
5805
5799 2001-11-02 Fernando Perez <fperez@colorado.edu>
5806 2001-11-02 Fernando Perez <fperez@colorado.edu>
5800
5807
5801 * Python version check (>=2.1) added.
5808 * Python version check (>=2.1) added.
5802
5809
5803 * Added LazyPython documentation. At this point the docs are quite
5810 * Added LazyPython documentation. At this point the docs are quite
5804 a mess. A cleanup is in order.
5811 a mess. A cleanup is in order.
5805
5812
5806 * Auto-installer created. For some bizarre reason, the zipfiles
5813 * Auto-installer created. For some bizarre reason, the zipfiles
5807 module isn't working on my system. So I made a tar version
5814 module isn't working on my system. So I made a tar version
5808 (hopefully the command line options in various systems won't kill
5815 (hopefully the command line options in various systems won't kill
5809 me).
5816 me).
5810
5817
5811 * Fixes to Struct in genutils. Now all dictionary-like methods are
5818 * Fixes to Struct in genutils. Now all dictionary-like methods are
5812 protected (reasonably).
5819 protected (reasonably).
5813
5820
5814 * Added pager function to genutils and changed ? to print usage
5821 * Added pager function to genutils and changed ? to print usage
5815 note through it (it was too long).
5822 note through it (it was too long).
5816
5823
5817 * Added the LazyPython functionality. Works great! I changed the
5824 * Added the LazyPython functionality. Works great! I changed the
5818 auto-quote escape to ';', it's on home row and next to '. But
5825 auto-quote escape to ';', it's on home row and next to '. But
5819 both auto-quote and auto-paren (still /) escapes are command-line
5826 both auto-quote and auto-paren (still /) escapes are command-line
5820 parameters.
5827 parameters.
5821
5828
5822
5829
5823 2001-11-01 Fernando Perez <fperez@colorado.edu>
5830 2001-11-01 Fernando Perez <fperez@colorado.edu>
5824
5831
5825 * Version changed to 0.0.7. Fairly large change: configuration now
5832 * Version changed to 0.0.7. Fairly large change: configuration now
5826 is all stored in a directory, by default .ipython. There, all
5833 is all stored in a directory, by default .ipython. There, all
5827 config files have normal looking names (not .names)
5834 config files have normal looking names (not .names)
5828
5835
5829 * Version 0.0.6 Released first to Lucas and Archie as a test
5836 * Version 0.0.6 Released first to Lucas and Archie as a test
5830 run. Since it's the first 'semi-public' release, change version to
5837 run. Since it's the first 'semi-public' release, change version to
5831 > 0.0.6 for any changes now.
5838 > 0.0.6 for any changes now.
5832
5839
5833 * Stuff I had put in the ipplib.py changelog:
5840 * Stuff I had put in the ipplib.py changelog:
5834
5841
5835 Changes to InteractiveShell:
5842 Changes to InteractiveShell:
5836
5843
5837 - Made the usage message a parameter.
5844 - Made the usage message a parameter.
5838
5845
5839 - Require the name of the shell variable to be given. It's a bit
5846 - Require the name of the shell variable to be given. It's a bit
5840 of a hack, but allows the name 'shell' not to be hardwired in the
5847 of a hack, but allows the name 'shell' not to be hardwired in the
5841 magic (@) handler, which is problematic b/c it requires
5848 magic (@) handler, which is problematic b/c it requires
5842 polluting the global namespace with 'shell'. This in turn is
5849 polluting the global namespace with 'shell'. This in turn is
5843 fragile: if a user redefines a variable called shell, things
5850 fragile: if a user redefines a variable called shell, things
5844 break.
5851 break.
5845
5852
5846 - magic @: all functions available through @ need to be defined
5853 - magic @: all functions available through @ need to be defined
5847 as magic_<name>, even though they can be called simply as
5854 as magic_<name>, even though they can be called simply as
5848 @<name>. This allows the special command @magic to gather
5855 @<name>. This allows the special command @magic to gather
5849 information automatically about all existing magic functions,
5856 information automatically about all existing magic functions,
5850 even if they are run-time user extensions, by parsing the shell
5857 even if they are run-time user extensions, by parsing the shell
5851 instance __dict__ looking for special magic_ names.
5858 instance __dict__ looking for special magic_ names.
5852
5859
5853 - mainloop: added *two* local namespace parameters. This allows
5860 - mainloop: added *two* local namespace parameters. This allows
5854 the class to differentiate between parameters which were there
5861 the class to differentiate between parameters which were there
5855 before and after command line initialization was processed. This
5862 before and after command line initialization was processed. This
5856 way, later @who can show things loaded at startup by the
5863 way, later @who can show things loaded at startup by the
5857 user. This trick was necessary to make session saving/reloading
5864 user. This trick was necessary to make session saving/reloading
5858 really work: ideally after saving/exiting/reloading a session,
5865 really work: ideally after saving/exiting/reloading a session,
5859 *everything* should look the same, including the output of @who. I
5866 *everything* should look the same, including the output of @who. I
5860 was only able to make this work with this double namespace
5867 was only able to make this work with this double namespace
5861 trick.
5868 trick.
5862
5869
5863 - added a header to the logfile which allows (almost) full
5870 - added a header to the logfile which allows (almost) full
5864 session restoring.
5871 session restoring.
5865
5872
5866 - prepend lines beginning with @ or !, with a and log
5873 - prepend lines beginning with @ or !, with a and log
5867 them. Why? !lines: may be useful to know what you did @lines:
5874 them. Why? !lines: may be useful to know what you did @lines:
5868 they may affect session state. So when restoring a session, at
5875 they may affect session state. So when restoring a session, at
5869 least inform the user of their presence. I couldn't quite get
5876 least inform the user of their presence. I couldn't quite get
5870 them to properly re-execute, but at least the user is warned.
5877 them to properly re-execute, but at least the user is warned.
5871
5878
5872 * Started ChangeLog.
5879 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now