##// END OF EJS Templates
%cd and %run completers. try 'foo' and '%foo' completer if command line has 'foo'
vivainio -
Show More
@@ -1,94 +1,119 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
15
16
16 ip = IPython.ipapi.get()
17 ip = IPython.ipapi.get()
17
18
18 def apt_completers(self, event):
19 def apt_completers(self, event):
19 """ This should return a list of strings with possible completions.
20 """ This should return a list of strings with possible completions.
20
21
21 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
22 are removed, in order to not confuse readline.
23 are removed, in order to not confuse readline.
23
24
24 """
25 """
25 # print event # dbg
26 # print event # dbg
26
27
27 # commands are only suggested for the 'command' part of package manager
28 # commands are only suggested for the 'command' part of package manager
28 # invocation
29 # invocation
29
30
30 cmd = (event.line + "<placeholder>").rsplit(None,1)[0]
31 cmd = (event.line + "<placeholder>").rsplit(None,1)[0]
31 # print cmd
32 # print cmd
32 if cmd.endswith('apt-get') or cmd.endswith('yum'):
33 if cmd.endswith('apt-get') or cmd.endswith('yum'):
33 return ['update', 'upgrade', 'install', 'remove']
34 return ['update', 'upgrade', 'install', 'remove']
34
35
35 # later on, add dpkg -l / whatever to get list of possible
36 # later on, add dpkg -l / whatever to get list of possible
36 # packages, add switches etc. for the rest of command line
37 # packages, add switches etc. for the rest of command line
37 # filling
38 # filling
38
39
39 raise IPython.ipapi.TryNext
40 raise IPython.ipapi.TryNext
40
41
41
42
42 # re_key specifies the regexp that triggers the specified completer
43 # re_key specifies the regexp that triggers the specified completer
43
44
44 ip.set_hook('complete_command', apt_completers, re_key = '.*apt-get')
45 ip.set_hook('complete_command', apt_completers, re_key = '.*apt-get')
45 ip.set_hook('complete_command', apt_completers, re_key = '.*yum')
46 ip.set_hook('complete_command', apt_completers, re_key = '.*yum')
46
47
47 py_std_modules = """\
48 py_std_modules = """\
48 BaseHTTPServer Bastion CGIHTTPServer ConfigParser Cookie
49 BaseHTTPServer Bastion CGIHTTPServer ConfigParser Cookie
49 DocXMLRPCServer HTMLParser MimeWriter Queue SimpleHTTPServer
50 DocXMLRPCServer HTMLParser MimeWriter Queue SimpleHTTPServer
50 SimpleXMLRPCServer SocketServer StringIO UserDict UserList UserString
51 SimpleXMLRPCServer SocketServer StringIO UserDict UserList UserString
51 _LWPCookieJar _MozillaCookieJar __future__ __phello__.foo _strptime
52 _LWPCookieJar _MozillaCookieJar __future__ __phello__.foo _strptime
52 _threading_local aifc anydbm asynchat asyncore atexit audiodev base64
53 _threading_local aifc anydbm asynchat asyncore atexit audiodev base64
53 bdb binhex bisect cProfile calendar cgi cgitb chunk cmd code codecs
54 bdb binhex bisect cProfile calendar cgi cgitb chunk cmd code codecs
54 codeop colorsys commands compileall contextlib cookielib copy copy_reg
55 codeop colorsys commands compileall contextlib cookielib copy copy_reg
55 csv dbhash decimal difflib dircache dis doctest dumbdbm dummy_thread
56 csv dbhash decimal difflib dircache dis doctest dumbdbm dummy_thread
56 dummy_threading filecmp fileinput fnmatch formatter fpformat ftplib
57 dummy_threading filecmp fileinput fnmatch formatter fpformat ftplib
57 functools getopt getpass gettext glob gopherlib gzip hashlib heapq
58 functools getopt getpass gettext glob gopherlib gzip hashlib heapq
58 hmac htmlentitydefs htmllib httplib ihooks imaplib imghdr imputil
59 hmac htmlentitydefs htmllib httplib ihooks imaplib imghdr imputil
59 inspect keyword linecache locale macpath macurl2path mailbox mailcap
60 inspect keyword linecache locale macpath macurl2path mailbox mailcap
60 markupbase md5 mhlib mimetools mimetypes mimify modulefinder multifile
61 markupbase md5 mhlib mimetools mimetypes mimify modulefinder multifile
61 mutex netrc new nntplib ntpath nturl2path opcode optparse os
62 mutex netrc new nntplib ntpath nturl2path opcode optparse os
62 os2emxpath pdb pickle pickletools pipes pkgutil platform popen2 poplib
63 os2emxpath pdb pickle pickletools pipes pkgutil platform popen2 poplib
63 posixfile posixpath pprint profile pstats pty py_compile pyclbr pydoc
64 posixfile posixpath pprint profile pstats pty py_compile pyclbr pydoc
64 quopri random re repr rexec rfc822 rlcompleter robotparser runpy sched
65 quopri random re repr rexec rfc822 rlcompleter robotparser runpy sched
65 sets sgmllib sha shelve shlex shutil site smtpd smtplib sndhdr socket
66 sets sgmllib sha shelve shlex shutil site smtpd smtplib sndhdr socket
66 sre sre_compile sre_constants sre_parse stat statvfs string stringold
67 sre sre_compile sre_constants sre_parse stat statvfs string stringold
67 stringprep struct subprocess sunau sunaudio symbol symtable tabnanny
68 stringprep struct subprocess sunau sunaudio symbol symtable tabnanny
68 tarfile telnetlib tempfile textwrap this threading timeit toaiff token
69 tarfile telnetlib tempfile textwrap this threading timeit toaiff token
69 tokenize trace traceback tty types unittest urllib urllib2 urlparse
70 tokenize trace traceback tty types unittest urllib urllib2 urlparse
70 user uu uuid warnings wave weakref webbrowser whichdb xdrlib xmllib
71 user uu uuid warnings wave weakref webbrowser whichdb xdrlib xmllib
71 xmlrpclib zipfile"""
72 xmlrpclib zipfile"""
72
73
73 def module_completer(self,event):
74 def module_completer(self,event):
74 """ Give completions after user has typed 'import' """
75 """ Give completions after user has typed 'import' """
75 return py_std_modules.split()
76 return py_std_modules.split()
76
77
77 ip.set_hook('complete_command', module_completer, str_key = 'import')
78 ip.set_hook('complete_command', module_completer, str_key = 'import')
78
79
79 svn_commands = """\
80 svn_commands = """\
80 add blame praise annotate ann cat checkout co cleanup commit ci copy
81 add blame praise annotate ann cat checkout co cleanup commit ci copy
81 cp delete del remove rm diff di export help ? h import info list ls
82 cp delete del remove rm diff di export help ? h import info list ls
82 lock log merge mkdir move mv rename ren propdel pdel pd propedit pedit
83 lock log merge mkdir move mv rename ren propdel pdel pd propedit pedit
83 pe propget pget pg proplist plist pl propset pset ps resolved revert
84 pe propget pget pg proplist plist pl propset pset ps resolved revert
84 status stat st switch sw unlock update
85 status stat st switch sw unlock update
85 """
86 """
86
87
87 def svn_completer(self,event):
88 def svn_completer(self,event):
88 if len((event.line + 'placeholder').split()) > 2:
89 if len((event.line + 'placeholder').split()) > 2:
89 # the rest are probably file names
90 # the rest are probably file names
90 return ip.IP.Completer.file_matches(event.symbol)
91 return ip.IP.Completer.file_matches(event.symbol)
91
92
92 return svn_commands.split()
93 return svn_commands.split()
93
94
94 ip.set_hook('complete_command', svn_completer, str_key = 'svn')
95 ip.set_hook('complete_command', svn_completer, str_key = 'svn')
96
97 def runlistpy(self, event):
98 comps = shlex.split(event.line)
99 relpath = (len(comps) > 1 and comps[-1] or '')
100
101 print "rp",relpath
102 if relpath.startswith('~'):
103 relpath = os.path.expanduser(relpath)
104 dirs = [f.replace('\\','/') + "/" for f in glob.glob(relpath+'*') if os.path.isdir(f)]
105 pys = [f.replace('\\','/') for f in glob.glob(relpath+'*.py')]
106 return dirs + pys
107
108 ip.set_hook('complete_command', runlistpy, str_key = '%run')
109
110 def listdirs(self, event):
111 relpath = event.symbol
112 if relpath.startswith('~'):
113 relpath = os.path.expanduser(relpath).replace('\\','/')
114 found = [f.replace('\\','/')+'/' for f in glob.glob(relpath+'*') if os.path.isdir(f)]
115 if not found:
116 return [relpath]
117 return found
118
119 ip.set_hook('complete_command', listdirs, str_key = '%cd') No newline at end of file
@@ -1,616 +1,627 b''
1 """Word completion for IPython.
1 """Word completion for IPython.
2
2
3 This module is a fork of the rlcompleter module in the Python standard
3 This module is a fork of the rlcompleter module in the Python standard
4 library. The original enhancements made to rlcompleter have been sent
4 library. The original enhancements made to rlcompleter have been sent
5 upstream and were accepted as of Python 2.3, but we need a lot more
5 upstream and were accepted as of Python 2.3, but we need a lot more
6 functionality specific to IPython, so this module will continue to live as an
6 functionality specific to IPython, so this module will continue to live as an
7 IPython-specific utility.
7 IPython-specific utility.
8
8
9 ---------------------------------------------------------------------------
9 ---------------------------------------------------------------------------
10 Original rlcompleter documentation:
10 Original rlcompleter documentation:
11
11
12 This requires the latest extension to the readline module (the
12 This requires the latest extension to the readline module (the
13 completes keywords, built-ins and globals in __main__; when completing
13 completes keywords, built-ins and globals in __main__; when completing
14 NAME.NAME..., it evaluates (!) the expression up to the last dot and
14 NAME.NAME..., it evaluates (!) the expression up to the last dot and
15 completes its attributes.
15 completes its attributes.
16
16
17 It's very cool to do "import string" type "string.", hit the
17 It's very cool to do "import string" type "string.", hit the
18 completion key (twice), and see the list of names defined by the
18 completion key (twice), and see the list of names defined by the
19 string module!
19 string module!
20
20
21 Tip: to use the tab key as the completion key, call
21 Tip: to use the tab key as the completion key, call
22
22
23 readline.parse_and_bind("tab: complete")
23 readline.parse_and_bind("tab: complete")
24
24
25 Notes:
25 Notes:
26
26
27 - Exceptions raised by the completer function are *ignored* (and
27 - Exceptions raised by the completer function are *ignored* (and
28 generally cause the completion to fail). This is a feature -- since
28 generally cause the completion to fail). This is a feature -- since
29 readline sets the tty device in raw (or cbreak) mode, printing a
29 readline sets the tty device in raw (or cbreak) mode, printing a
30 traceback wouldn't work well without some complicated hoopla to save,
30 traceback wouldn't work well without some complicated hoopla to save,
31 reset and restore the tty state.
31 reset and restore the tty state.
32
32
33 - The evaluation of the NAME.NAME... form may cause arbitrary
33 - The evaluation of the NAME.NAME... form may cause arbitrary
34 application defined code to be executed if an object with a
34 application defined code to be executed if an object with a
35 __getattr__ hook is found. Since it is the responsibility of the
35 __getattr__ hook is found. Since it is the responsibility of the
36 application (or the user) to enable this feature, I consider this an
36 application (or the user) to enable this feature, I consider this an
37 acceptable risk. More complicated expressions (e.g. function calls or
37 acceptable risk. More complicated expressions (e.g. function calls or
38 indexing operations) are *not* evaluated.
38 indexing operations) are *not* evaluated.
39
39
40 - GNU readline is also used by the built-in functions input() and
40 - GNU readline is also used by the built-in functions input() and
41 raw_input(), and thus these also benefit/suffer from the completer
41 raw_input(), and thus these also benefit/suffer from the completer
42 features. Clearly an interactive application can benefit by
42 features. Clearly an interactive application can benefit by
43 specifying its own completer function and using raw_input() for all
43 specifying its own completer function and using raw_input() for all
44 its input.
44 its input.
45
45
46 - When the original stdin is not a tty device, GNU readline is never
46 - When the original stdin is not a tty device, GNU readline is never
47 used, and this module (and the readline module) are silently inactive.
47 used, and this module (and the readline module) are silently inactive.
48
48
49 """
49 """
50
50
51 #*****************************************************************************
51 #*****************************************************************************
52 #
52 #
53 # Since this file is essentially a minimally modified copy of the rlcompleter
53 # Since this file is essentially a minimally modified copy of the rlcompleter
54 # module which is part of the standard Python distribution, I assume that the
54 # module which is part of the standard Python distribution, I assume that the
55 # proper procedure is to maintain its copyright as belonging to the Python
55 # proper procedure is to maintain its copyright as belonging to the Python
56 # Software Foundation (in addition to my own, for all new code).
56 # Software Foundation (in addition to my own, for all new code).
57 #
57 #
58 # Copyright (C) 2001 Python Software Foundation, www.python.org
58 # Copyright (C) 2001 Python Software Foundation, www.python.org
59 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
59 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
60 #
60 #
61 # Distributed under the terms of the BSD License. The full license is in
61 # Distributed under the terms of the BSD License. The full license is in
62 # the file COPYING, distributed as part of this software.
62 # the file COPYING, distributed as part of this software.
63 #
63 #
64 #*****************************************************************************
64 #*****************************************************************************
65
65
66 import __builtin__
66 import __builtin__
67 import __main__
67 import __main__
68 import glob
68 import glob
69 import keyword
69 import keyword
70 import os
70 import os
71 import re
71 import re
72 import shlex
72 import shlex
73 import sys
73 import sys
74 import IPython.rlineimpl as readline
74 import IPython.rlineimpl as readline
75 import itertools
75 import itertools
76 from IPython.ipstruct import Struct
76 from IPython.ipstruct import Struct
77 from IPython import ipapi
77 from IPython import ipapi
78
78
79 import types
79 import types
80
80
81 # Python 2.4 offers sets as a builtin
81 # Python 2.4 offers sets as a builtin
82 try:
82 try:
83 set([1,2])
83 set([1,2])
84 except NameError:
84 except NameError:
85 from sets import Set as set
85 from sets import Set as set
86
86
87 from IPython.genutils import debugx
87 from IPython.genutils import debugx
88
88
89 __all__ = ['Completer','IPCompleter']
89 __all__ = ['Completer','IPCompleter']
90
90
91 def get_class_members(cls):
91 def get_class_members(cls):
92 ret = dir(cls)
92 ret = dir(cls)
93 if hasattr(cls,'__bases__'):
93 if hasattr(cls,'__bases__'):
94 for base in cls.__bases__:
94 for base in cls.__bases__:
95 ret.extend(get_class_members(base))
95 ret.extend(get_class_members(base))
96 return ret
96 return ret
97
97
98 class Completer:
98 class Completer:
99 def __init__(self,namespace=None,global_namespace=None):
99 def __init__(self,namespace=None,global_namespace=None):
100 """Create a new completer for the command line.
100 """Create a new completer for the command line.
101
101
102 Completer([namespace,global_namespace]) -> completer instance.
102 Completer([namespace,global_namespace]) -> completer instance.
103
103
104 If unspecified, the default namespace where completions are performed
104 If unspecified, the default namespace where completions are performed
105 is __main__ (technically, __main__.__dict__). Namespaces should be
105 is __main__ (technically, __main__.__dict__). Namespaces should be
106 given as dictionaries.
106 given as dictionaries.
107
107
108 An optional second namespace can be given. This allows the completer
108 An optional second namespace can be given. This allows the completer
109 to handle cases where both the local and global scopes need to be
109 to handle cases where both the local and global scopes need to be
110 distinguished.
110 distinguished.
111
111
112 Completer instances should be used as the completion mechanism of
112 Completer instances should be used as the completion mechanism of
113 readline via the set_completer() call:
113 readline via the set_completer() call:
114
114
115 readline.set_completer(Completer(my_namespace).complete)
115 readline.set_completer(Completer(my_namespace).complete)
116 """
116 """
117
117
118 # some minimal strict typechecks. For some core data structures, I
118 # some minimal strict typechecks. For some core data structures, I
119 # want actual basic python types, not just anything that looks like
119 # want actual basic python types, not just anything that looks like
120 # one. This is especially true for namespaces.
120 # one. This is especially true for namespaces.
121 for ns in (namespace,global_namespace):
121 for ns in (namespace,global_namespace):
122 if ns is not None and type(ns) != types.DictType:
122 if ns is not None and type(ns) != types.DictType:
123 raise TypeError,'namespace must be a dictionary'
123 raise TypeError,'namespace must be a dictionary'
124
124
125 # Don't bind to namespace quite yet, but flag whether the user wants a
125 # Don't bind to namespace quite yet, but flag whether the user wants a
126 # specific namespace or to use __main__.__dict__. This will allow us
126 # specific namespace or to use __main__.__dict__. This will allow us
127 # to bind to __main__.__dict__ at completion time, not now.
127 # to bind to __main__.__dict__ at completion time, not now.
128 if namespace is None:
128 if namespace is None:
129 self.use_main_ns = 1
129 self.use_main_ns = 1
130 else:
130 else:
131 self.use_main_ns = 0
131 self.use_main_ns = 0
132 self.namespace = namespace
132 self.namespace = namespace
133
133
134 # The global namespace, if given, can be bound directly
134 # The global namespace, if given, can be bound directly
135 if global_namespace is None:
135 if global_namespace is None:
136 self.global_namespace = {}
136 self.global_namespace = {}
137 else:
137 else:
138 self.global_namespace = global_namespace
138 self.global_namespace = global_namespace
139
139
140 def complete(self, text, state):
140 def complete(self, text, state):
141 """Return the next possible completion for 'text'.
141 """Return the next possible completion for 'text'.
142
142
143 This is called successively with state == 0, 1, 2, ... until it
143 This is called successively with state == 0, 1, 2, ... until it
144 returns None. The completion should begin with 'text'.
144 returns None. The completion should begin with 'text'.
145
145
146 """
146 """
147 if self.use_main_ns:
147 if self.use_main_ns:
148 self.namespace = __main__.__dict__
148 self.namespace = __main__.__dict__
149
149
150 if state == 0:
150 if state == 0:
151 if "." in text:
151 if "." in text:
152 self.matches = self.attr_matches(text)
152 self.matches = self.attr_matches(text)
153 else:
153 else:
154 self.matches = self.global_matches(text)
154 self.matches = self.global_matches(text)
155 try:
155 try:
156 return self.matches[state]
156 return self.matches[state]
157 except IndexError:
157 except IndexError:
158 return None
158 return None
159
159
160 def global_matches(self, text):
160 def global_matches(self, text):
161 """Compute matches when text is a simple name.
161 """Compute matches when text is a simple name.
162
162
163 Return a list of all keywords, built-in functions and names currently
163 Return a list of all keywords, built-in functions and names currently
164 defined in self.namespace or self.global_namespace that match.
164 defined in self.namespace or self.global_namespace that match.
165
165
166 """
166 """
167 matches = []
167 matches = []
168 match_append = matches.append
168 match_append = matches.append
169 n = len(text)
169 n = len(text)
170 for lst in [keyword.kwlist,
170 for lst in [keyword.kwlist,
171 __builtin__.__dict__.keys(),
171 __builtin__.__dict__.keys(),
172 self.namespace.keys(),
172 self.namespace.keys(),
173 self.global_namespace.keys()]:
173 self.global_namespace.keys()]:
174 for word in lst:
174 for word in lst:
175 if word[:n] == text and word != "__builtins__":
175 if word[:n] == text and word != "__builtins__":
176 match_append(word)
176 match_append(word)
177 return matches
177 return matches
178
178
179 def attr_matches(self, text):
179 def attr_matches(self, text):
180 """Compute matches when text contains a dot.
180 """Compute matches when text contains a dot.
181
181
182 Assuming the text is of the form NAME.NAME....[NAME], and is
182 Assuming the text is of the form NAME.NAME....[NAME], and is
183 evaluatable in self.namespace or self.global_namespace, it will be
183 evaluatable in self.namespace or self.global_namespace, it will be
184 evaluated and its attributes (as revealed by dir()) are used as
184 evaluated and its attributes (as revealed by dir()) are used as
185 possible completions. (For class instances, class members are are
185 possible completions. (For class instances, class members are are
186 also considered.)
186 also considered.)
187
187
188 WARNING: this can still invoke arbitrary C code, if an object
188 WARNING: this can still invoke arbitrary C code, if an object
189 with a __getattr__ hook is evaluated.
189 with a __getattr__ hook is evaluated.
190
190
191 """
191 """
192 import re
192 import re
193
193
194 # Another option, seems to work great. Catches things like ''.<tab>
194 # Another option, seems to work great. Catches things like ''.<tab>
195 m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)
195 m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)
196
196
197 if not m:
197 if not m:
198 return []
198 return []
199
199
200 expr, attr = m.group(1, 3)
200 expr, attr = m.group(1, 3)
201 try:
201 try:
202 object = eval(expr, self.namespace)
202 object = eval(expr, self.namespace)
203 except:
203 except:
204 object = eval(expr, self.global_namespace)
204 object = eval(expr, self.global_namespace)
205
205
206 # Start building the attribute list via dir(), and then complete it
206 # Start building the attribute list via dir(), and then complete it
207 # with a few extra special-purpose calls.
207 # with a few extra special-purpose calls.
208 words = dir(object)
208 words = dir(object)
209
209
210 if hasattr(object,'__class__'):
210 if hasattr(object,'__class__'):
211 words.append('__class__')
211 words.append('__class__')
212 words.extend(get_class_members(object.__class__))
212 words.extend(get_class_members(object.__class__))
213
213
214 # this is the 'dir' function for objects with Enthought's traits
214 # this is the 'dir' function for objects with Enthought's traits
215 if hasattr(object, 'trait_names'):
215 if hasattr(object, 'trait_names'):
216 try:
216 try:
217 words.extend(object.trait_names())
217 words.extend(object.trait_names())
218 # eliminate possible duplicates, as some traits may also
218 # eliminate possible duplicates, as some traits may also
219 # appear as normal attributes in the dir() call.
219 # appear as normal attributes in the dir() call.
220 words = set(words)
220 words = set(words)
221 except TypeError:
221 except TypeError:
222 # This will happen if `object` is a class and not an instance.
222 # This will happen if `object` is a class and not an instance.
223 pass
223 pass
224
224
225 # Support for PyCrust-style _getAttributeNames magic method.
225 # Support for PyCrust-style _getAttributeNames magic method.
226 if hasattr(object, '_getAttributeNames'):
226 if hasattr(object, '_getAttributeNames'):
227 try:
227 try:
228 words.extend(object._getAttributeNames())
228 words.extend(object._getAttributeNames())
229 # Eliminate duplicates.
229 # Eliminate duplicates.
230 words = set(words)
230 words = set(words)
231 except TypeError:
231 except TypeError:
232 # `object` is a class and not an instance. Ignore
232 # `object` is a class and not an instance. Ignore
233 # this error.
233 # this error.
234 pass
234 pass
235
235
236 # filter out non-string attributes which may be stuffed by dir() calls
236 # filter out non-string attributes which may be stuffed by dir() calls
237 # and poor coding in third-party modules
237 # and poor coding in third-party modules
238 words = [w for w in words
238 words = [w for w in words
239 if isinstance(w, basestring) and w != "__builtins__"]
239 if isinstance(w, basestring) and w != "__builtins__"]
240 # Build match list to return
240 # Build match list to return
241 n = len(attr)
241 n = len(attr)
242 return ["%s.%s" % (expr, w) for w in words if w[:n] == attr ]
242 return ["%s.%s" % (expr, w) for w in words if w[:n] == attr ]
243
243
244 class IPCompleter(Completer):
244 class IPCompleter(Completer):
245 """Extension of the completer class with IPython-specific features"""
245 """Extension of the completer class with IPython-specific features"""
246
246
247 def __init__(self,shell,namespace=None,global_namespace=None,
247 def __init__(self,shell,namespace=None,global_namespace=None,
248 omit__names=0,alias_table=None):
248 omit__names=0,alias_table=None):
249 """IPCompleter() -> completer
249 """IPCompleter() -> completer
250
250
251 Return a completer object suitable for use by the readline library
251 Return a completer object suitable for use by the readline library
252 via readline.set_completer().
252 via readline.set_completer().
253
253
254 Inputs:
254 Inputs:
255
255
256 - shell: a pointer to the ipython shell itself. This is needed
256 - shell: a pointer to the ipython shell itself. This is needed
257 because this completer knows about magic functions, and those can
257 because this completer knows about magic functions, and those can
258 only be accessed via the ipython instance.
258 only be accessed via the ipython instance.
259
259
260 - namespace: an optional dict where completions are performed.
260 - namespace: an optional dict where completions are performed.
261
261
262 - global_namespace: secondary optional dict for completions, to
262 - global_namespace: secondary optional dict for completions, to
263 handle cases (such as IPython embedded inside functions) where
263 handle cases (such as IPython embedded inside functions) where
264 both Python scopes are visible.
264 both Python scopes are visible.
265
265
266 - The optional omit__names parameter sets the completer to omit the
266 - The optional omit__names parameter sets the completer to omit the
267 'magic' names (__magicname__) for python objects unless the text
267 'magic' names (__magicname__) for python objects unless the text
268 to be completed explicitly starts with one or more underscores.
268 to be completed explicitly starts with one or more underscores.
269
269
270 - If alias_table is supplied, it should be a dictionary of aliases
270 - If alias_table is supplied, it should be a dictionary of aliases
271 to complete. """
271 to complete. """
272
272
273 Completer.__init__(self,namespace,global_namespace)
273 Completer.__init__(self,namespace,global_namespace)
274 self.magic_prefix = shell.name+'.magic_'
274 self.magic_prefix = shell.name+'.magic_'
275 self.magic_escape = shell.ESC_MAGIC
275 self.magic_escape = shell.ESC_MAGIC
276 self.readline = readline
276 self.readline = readline
277 delims = self.readline.get_completer_delims()
277 delims = self.readline.get_completer_delims()
278 delims = delims.replace(self.magic_escape,'')
278 delims = delims.replace(self.magic_escape,'')
279 self.readline.set_completer_delims(delims)
279 self.readline.set_completer_delims(delims)
280 self.get_line_buffer = self.readline.get_line_buffer
280 self.get_line_buffer = self.readline.get_line_buffer
281 self.omit__names = omit__names
281 self.omit__names = omit__names
282 self.merge_completions = shell.rc.readline_merge_completions
282 self.merge_completions = shell.rc.readline_merge_completions
283
283
284 if alias_table is None:
284 if alias_table is None:
285 alias_table = {}
285 alias_table = {}
286 self.alias_table = alias_table
286 self.alias_table = alias_table
287 # Regexp to split filenames with spaces in them
287 # Regexp to split filenames with spaces in them
288 self.space_name_re = re.compile(r'([^\\] )')
288 self.space_name_re = re.compile(r'([^\\] )')
289 # Hold a local ref. to glob.glob for speed
289 # Hold a local ref. to glob.glob for speed
290 self.glob = glob.glob
290 self.glob = glob.glob
291
291
292 # Determine if we are running on 'dumb' terminals, like (X)Emacs
292 # Determine if we are running on 'dumb' terminals, like (X)Emacs
293 # buffers, to avoid completion problems.
293 # buffers, to avoid completion problems.
294 term = os.environ.get('TERM','xterm')
294 term = os.environ.get('TERM','xterm')
295 self.dumb_terminal = term in ['dumb','emacs']
295 self.dumb_terminal = term in ['dumb','emacs']
296
296
297 # Special handling of backslashes needed in win32 platforms
297 # Special handling of backslashes needed in win32 platforms
298 if sys.platform == "win32":
298 if sys.platform == "win32":
299 self.clean_glob = self._clean_glob_win32
299 self.clean_glob = self._clean_glob_win32
300 else:
300 else:
301 self.clean_glob = self._clean_glob
301 self.clean_glob = self._clean_glob
302 self.matchers = [self.python_matches,
302 self.matchers = [self.python_matches,
303 self.file_matches,
303 self.file_matches,
304 self.alias_matches,
304 self.alias_matches,
305 self.python_func_kw_matches]
305 self.python_func_kw_matches]
306
306
307 # Code contributed by Alex Schmolck, for ipython/emacs integration
307 # Code contributed by Alex Schmolck, for ipython/emacs integration
308 def all_completions(self, text):
308 def all_completions(self, text):
309 """Return all possible completions for the benefit of emacs."""
309 """Return all possible completions for the benefit of emacs."""
310
310
311 completions = []
311 completions = []
312 comp_append = completions.append
312 comp_append = completions.append
313 try:
313 try:
314 for i in xrange(sys.maxint):
314 for i in xrange(sys.maxint):
315 res = self.complete(text, i)
315 res = self.complete(text, i)
316
316
317 if not res: break
317 if not res: break
318
318
319 comp_append(res)
319 comp_append(res)
320 #XXX workaround for ``notDefined.<tab>``
320 #XXX workaround for ``notDefined.<tab>``
321 except NameError:
321 except NameError:
322 pass
322 pass
323 return completions
323 return completions
324 # /end Alex Schmolck code.
324 # /end Alex Schmolck code.
325
325
326 def _clean_glob(self,text):
326 def _clean_glob(self,text):
327 return self.glob("%s*" % text)
327 return self.glob("%s*" % text)
328
328
329 def _clean_glob_win32(self,text):
329 def _clean_glob_win32(self,text):
330 return [f.replace("\\","/")
330 return [f.replace("\\","/")
331 for f in self.glob("%s*" % text)]
331 for f in self.glob("%s*" % text)]
332
332
333 def file_matches(self, text):
333 def file_matches(self, text):
334 """Match filneames, expanding ~USER type strings.
334 """Match filneames, expanding ~USER type strings.
335
335
336 Most of the seemingly convoluted logic in this completer is an
336 Most of the seemingly convoluted logic in this completer is an
337 attempt to handle filenames with spaces in them. And yet it's not
337 attempt to handle filenames with spaces in them. And yet it's not
338 quite perfect, because Python's readline doesn't expose all of the
338 quite perfect, because Python's readline doesn't expose all of the
339 GNU readline details needed for this to be done correctly.
339 GNU readline details needed for this to be done correctly.
340
340
341 For a filename with a space in it, the printed completions will be
341 For a filename with a space in it, the printed completions will be
342 only the parts after what's already been typed (instead of the
342 only the parts after what's already been typed (instead of the
343 full completions, as is normally done). I don't think with the
343 full completions, as is normally done). I don't think with the
344 current (as of Python 2.3) Python readline it's possible to do
344 current (as of Python 2.3) Python readline it's possible to do
345 better."""
345 better."""
346
346
347 # print 'Completer->file_matches: <%s>' % text # dbg
347 # print 'Completer->file_matches: <%s>' % text # dbg
348
348
349 # chars that require escaping with backslash - i.e. chars
349 # chars that require escaping with backslash - i.e. chars
350 # that readline treats incorrectly as delimiters, but we
350 # that readline treats incorrectly as delimiters, but we
351 # don't want to treat as delimiters in filename matching
351 # don't want to treat as delimiters in filename matching
352 # when escaped with backslash
352 # when escaped with backslash
353
353
354 protectables = ' ()[]{}'
354 protectables = ' ()[]{}'
355
355
356 def protect_filename(s):
356 def protect_filename(s):
357 return "".join([(ch in protectables and '\\' + ch or ch)
357 return "".join([(ch in protectables and '\\' + ch or ch)
358 for ch in s])
358 for ch in s])
359
359
360 lbuf = self.lbuf
360 lbuf = self.lbuf
361 open_quotes = 0 # track strings with open quotes
361 open_quotes = 0 # track strings with open quotes
362 try:
362 try:
363 lsplit = shlex.split(lbuf)[-1]
363 lsplit = shlex.split(lbuf)[-1]
364 except ValueError:
364 except ValueError:
365 # typically an unmatched ", or backslash without escaped char.
365 # typically an unmatched ", or backslash without escaped char.
366 if lbuf.count('"')==1:
366 if lbuf.count('"')==1:
367 open_quotes = 1
367 open_quotes = 1
368 lsplit = lbuf.split('"')[-1]
368 lsplit = lbuf.split('"')[-1]
369 elif lbuf.count("'")==1:
369 elif lbuf.count("'")==1:
370 open_quotes = 1
370 open_quotes = 1
371 lsplit = lbuf.split("'")[-1]
371 lsplit = lbuf.split("'")[-1]
372 else:
372 else:
373 return None
373 return None
374 except IndexError:
374 except IndexError:
375 # tab pressed on empty line
375 # tab pressed on empty line
376 lsplit = ""
376 lsplit = ""
377
377
378 if lsplit != protect_filename(lsplit):
378 if lsplit != protect_filename(lsplit):
379 # if protectables are found, do matching on the whole escaped
379 # if protectables are found, do matching on the whole escaped
380 # name
380 # name
381 has_protectables = 1
381 has_protectables = 1
382 text0,text = text,lsplit
382 text0,text = text,lsplit
383 else:
383 else:
384 has_protectables = 0
384 has_protectables = 0
385 text = os.path.expanduser(text)
385 text = os.path.expanduser(text)
386
386
387 if text == "":
387 if text == "":
388 return [protect_filename(f) for f in self.glob("*")]
388 return [protect_filename(f) for f in self.glob("*")]
389
389
390 m0 = self.clean_glob(text.replace('\\',''))
390 m0 = self.clean_glob(text.replace('\\',''))
391 if has_protectables:
391 if has_protectables:
392 # If we had protectables, we need to revert our changes to the
392 # If we had protectables, we need to revert our changes to the
393 # beginning of filename so that we don't double-write the part
393 # beginning of filename so that we don't double-write the part
394 # of the filename we have so far
394 # of the filename we have so far
395 len_lsplit = len(lsplit)
395 len_lsplit = len(lsplit)
396 matches = [text0 + protect_filename(f[len_lsplit:]) for f in m0]
396 matches = [text0 + protect_filename(f[len_lsplit:]) for f in m0]
397 else:
397 else:
398 if open_quotes:
398 if open_quotes:
399 # if we have a string with an open quote, we don't need to
399 # if we have a string with an open quote, we don't need to
400 # protect the names at all (and we _shouldn't_, as it
400 # protect the names at all (and we _shouldn't_, as it
401 # would cause bugs when the filesystem call is made).
401 # would cause bugs when the filesystem call is made).
402 matches = m0
402 matches = m0
403 else:
403 else:
404 matches = [protect_filename(f) for f in m0]
404 matches = [protect_filename(f) for f in m0]
405 if len(matches) == 1 and os.path.isdir(matches[0]):
405 if len(matches) == 1 and os.path.isdir(matches[0]):
406 # Takes care of links to directories also. Use '/'
406 # Takes care of links to directories also. Use '/'
407 # explicitly, even under Windows, so that name completions
407 # explicitly, even under Windows, so that name completions
408 # don't end up escaped.
408 # don't end up escaped.
409 matches[0] += '/'
409 matches[0] += '/'
410 return matches
410 return matches
411
411
412 def alias_matches(self, text):
412 def alias_matches(self, text):
413 """Match internal system aliases"""
413 """Match internal system aliases"""
414 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
414 #print 'Completer->alias_matches:',text,'lb',self.lbuf # dbg
415
415
416 # if we are not in the first 'item', alias matching
416 # if we are not in the first 'item', alias matching
417 # doesn't make sense
417 # doesn't make sense
418 if ' ' in self.lbuf:
418 if ' ' in self.lbuf:
419 return []
419 return []
420 text = os.path.expanduser(text)
420 text = os.path.expanduser(text)
421 aliases = self.alias_table.keys()
421 aliases = self.alias_table.keys()
422 if text == "":
422 if text == "":
423 return aliases
423 return aliases
424 else:
424 else:
425 return [alias for alias in aliases if alias.startswith(text)]
425 return [alias for alias in aliases if alias.startswith(text)]
426
426
427 def python_matches(self,text):
427 def python_matches(self,text):
428 """Match attributes or global python names"""
428 """Match attributes or global python names"""
429
429
430 #print 'Completer->python_matches, txt=<%s>' % text # dbg
430 #print 'Completer->python_matches, txt=<%s>' % text # dbg
431 if "." in text:
431 if "." in text:
432 try:
432 try:
433 matches = self.attr_matches(text)
433 matches = self.attr_matches(text)
434 if text.endswith('.') and self.omit__names:
434 if text.endswith('.') and self.omit__names:
435 if self.omit__names == 1:
435 if self.omit__names == 1:
436 # true if txt is _not_ a __ name, false otherwise:
436 # true if txt is _not_ a __ name, false otherwise:
437 no__name = (lambda txt:
437 no__name = (lambda txt:
438 re.match(r'.*\.__.*?__',txt) is None)
438 re.match(r'.*\.__.*?__',txt) is None)
439 else:
439 else:
440 # true if txt is _not_ a _ name, false otherwise:
440 # true if txt is _not_ a _ name, false otherwise:
441 no__name = (lambda txt:
441 no__name = (lambda txt:
442 re.match(r'.*\._.*?',txt) is None)
442 re.match(r'.*\._.*?',txt) is None)
443 matches = filter(no__name, matches)
443 matches = filter(no__name, matches)
444 except NameError:
444 except NameError:
445 # catches <undefined attributes>.<tab>
445 # catches <undefined attributes>.<tab>
446 matches = []
446 matches = []
447 else:
447 else:
448 matches = self.global_matches(text)
448 matches = self.global_matches(text)
449 # this is so completion finds magics when automagic is on:
449 # this is so completion finds magics when automagic is on:
450 if (matches == [] and
450 if (matches == [] and
451 not text.startswith(os.sep) and
451 not text.startswith(os.sep) and
452 not ' ' in self.lbuf):
452 not ' ' in self.lbuf):
453 matches = self.attr_matches(self.magic_prefix+text)
453 matches = self.attr_matches(self.magic_prefix+text)
454 return matches
454 return matches
455
455
456 def _default_arguments(self, obj):
456 def _default_arguments(self, obj):
457 """Return the list of default arguments of obj if it is callable,
457 """Return the list of default arguments of obj if it is callable,
458 or empty list otherwise."""
458 or empty list otherwise."""
459
459
460 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
460 if not (inspect.isfunction(obj) or inspect.ismethod(obj)):
461 # for classes, check for __init__,__new__
461 # for classes, check for __init__,__new__
462 if inspect.isclass(obj):
462 if inspect.isclass(obj):
463 obj = (getattr(obj,'__init__',None) or
463 obj = (getattr(obj,'__init__',None) or
464 getattr(obj,'__new__',None))
464 getattr(obj,'__new__',None))
465 # for all others, check if they are __call__able
465 # for all others, check if they are __call__able
466 elif hasattr(obj, '__call__'):
466 elif hasattr(obj, '__call__'):
467 obj = obj.__call__
467 obj = obj.__call__
468 # XXX: is there a way to handle the builtins ?
468 # XXX: is there a way to handle the builtins ?
469 try:
469 try:
470 args,_,_1,defaults = inspect.getargspec(obj)
470 args,_,_1,defaults = inspect.getargspec(obj)
471 if defaults:
471 if defaults:
472 return args[-len(defaults):]
472 return args[-len(defaults):]
473 except TypeError: pass
473 except TypeError: pass
474 return []
474 return []
475
475
476 def python_func_kw_matches(self,text):
476 def python_func_kw_matches(self,text):
477 """Match named parameters (kwargs) of the last open function"""
477 """Match named parameters (kwargs) of the last open function"""
478
478
479 if "." in text: # a parameter cannot be dotted
479 if "." in text: # a parameter cannot be dotted
480 return []
480 return []
481 try: regexp = self.__funcParamsRegex
481 try: regexp = self.__funcParamsRegex
482 except AttributeError:
482 except AttributeError:
483 regexp = self.__funcParamsRegex = re.compile(r'''
483 regexp = self.__funcParamsRegex = re.compile(r'''
484 '.*?' | # single quoted strings or
484 '.*?' | # single quoted strings or
485 ".*?" | # double quoted strings or
485 ".*?" | # double quoted strings or
486 \w+ | # identifier
486 \w+ | # identifier
487 \S # other characters
487 \S # other characters
488 ''', re.VERBOSE | re.DOTALL)
488 ''', re.VERBOSE | re.DOTALL)
489 # 1. find the nearest identifier that comes before an unclosed
489 # 1. find the nearest identifier that comes before an unclosed
490 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
490 # parenthesis e.g. for "foo (1+bar(x), pa", the candidate is "foo"
491 tokens = regexp.findall(self.get_line_buffer())
491 tokens = regexp.findall(self.get_line_buffer())
492 tokens.reverse()
492 tokens.reverse()
493 iterTokens = iter(tokens); openPar = 0
493 iterTokens = iter(tokens); openPar = 0
494 for token in iterTokens:
494 for token in iterTokens:
495 if token == ')':
495 if token == ')':
496 openPar -= 1
496 openPar -= 1
497 elif token == '(':
497 elif token == '(':
498 openPar += 1
498 openPar += 1
499 if openPar > 0:
499 if openPar > 0:
500 # found the last unclosed parenthesis
500 # found the last unclosed parenthesis
501 break
501 break
502 else:
502 else:
503 return []
503 return []
504 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
504 # 2. Concatenate dotted names ("foo.bar" for "foo.bar(x, pa" )
505 ids = []
505 ids = []
506 isId = re.compile(r'\w+$').match
506 isId = re.compile(r'\w+$').match
507 while True:
507 while True:
508 try:
508 try:
509 ids.append(iterTokens.next())
509 ids.append(iterTokens.next())
510 if not isId(ids[-1]):
510 if not isId(ids[-1]):
511 ids.pop(); break
511 ids.pop(); break
512 if not iterTokens.next() == '.':
512 if not iterTokens.next() == '.':
513 break
513 break
514 except StopIteration:
514 except StopIteration:
515 break
515 break
516 # lookup the candidate callable matches either using global_matches
516 # lookup the candidate callable matches either using global_matches
517 # or attr_matches for dotted names
517 # or attr_matches for dotted names
518 if len(ids) == 1:
518 if len(ids) == 1:
519 callableMatches = self.global_matches(ids[0])
519 callableMatches = self.global_matches(ids[0])
520 else:
520 else:
521 callableMatches = self.attr_matches('.'.join(ids[::-1]))
521 callableMatches = self.attr_matches('.'.join(ids[::-1]))
522 argMatches = []
522 argMatches = []
523 for callableMatch in callableMatches:
523 for callableMatch in callableMatches:
524 try: namedArgs = self._default_arguments(eval(callableMatch,
524 try: namedArgs = self._default_arguments(eval(callableMatch,
525 self.namespace))
525 self.namespace))
526 except: continue
526 except: continue
527 for namedArg in namedArgs:
527 for namedArg in namedArgs:
528 if namedArg.startswith(text):
528 if namedArg.startswith(text):
529 argMatches.append("%s=" %namedArg)
529 argMatches.append("%s=" %namedArg)
530 return argMatches
530 return argMatches
531
531
532 def dispatch_custom_completer(self,text):
532 def dispatch_custom_completer(self,text):
533 # print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
533 # print "Custom! '%s' %s" % (text, self.custom_completers) # dbg
534 line = self.full_lbuf
534 line = self.full_lbuf
535 if not line.strip():
535 if not line.strip():
536 return None
536 return None
537
537
538 event = Struct()
538 event = Struct()
539 event.line = line
539 event.line = line
540 event.symbol = text
540 event.symbol = text
541 cmd = line.split(None,1)[0]
541 cmd = line.split(None,1)[0]
542 event.command = cmd
542 event.command = cmd
543 #print "\ncustom:{%s]\n" % event # dbg
544
545 # for foo etc, try also to find completer for %foo
546 if not cmd.startswith(self.magic_escape):
547 try_magic = self.custom_completers.s_matches(
548 self.magic_escape + cmd)
549 else:
550 try_magic = []
551
552
543 for c in itertools.chain(
553 for c in itertools.chain(
544 self.custom_completers.s_matches(cmd),
554 self.custom_completers.s_matches(cmd),
555 try_magic,
545 self.custom_completers.flat_matches(self.lbuf)):
556 self.custom_completers.flat_matches(self.lbuf)):
546 # print "try",c # dbg
557 # print "try",c # dbg
547 try:
558 try:
548 res = c(event)
559 res = c(event)
549 return [r for r in res if r.startswith(text)]
560 return [r for r in res if r.startswith(text)]
550 except ipapi.TryNext:
561 except ipapi.TryNext:
551 pass
562 pass
552
563
553 return None
564 return None
554
565
555
566
556
567
557 def complete(self, text, state):
568 def complete(self, text, state):
558 """Return the next possible completion for 'text'.
569 """Return the next possible completion for 'text'.
559
570
560 This is called successively with state == 0, 1, 2, ... until it
571 This is called successively with state == 0, 1, 2, ... until it
561 returns None. The completion should begin with 'text'. """
572 returns None. The completion should begin with 'text'. """
562
573
563 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
574 #print '\n*** COMPLETE: <%s> (%s)' % (text,state) # dbg
564
575
565 # if there is only a tab on a line with only whitespace, instead
576 # if there is only a tab on a line with only whitespace, instead
566 # of the mostly useless 'do you want to see all million
577 # of the mostly useless 'do you want to see all million
567 # completions' message, just do the right thing and give the user
578 # completions' message, just do the right thing and give the user
568 # his tab! Incidentally, this enables pasting of tabbed text from
579 # his tab! Incidentally, this enables pasting of tabbed text from
569 # an editor (as long as autoindent is off).
580 # an editor (as long as autoindent is off).
570
581
571 # don't apply this on 'dumb' terminals, such as emacs buffers, so we
582 # don't apply this on 'dumb' terminals, such as emacs buffers, so we
572 # don't interfere with their own tab-completion mechanism.
583 # don't interfere with their own tab-completion mechanism.
573 self.full_lbuf = self.get_line_buffer()
584 self.full_lbuf = self.get_line_buffer()
574 self.lbuf = self.full_lbuf[:self.readline.get_endidx()]
585 self.lbuf = self.full_lbuf[:self.readline.get_endidx()]
575 if not (self.dumb_terminal or self.get_line_buffer().strip()):
586 if not (self.dumb_terminal or self.get_line_buffer().strip()):
576 self.readline.insert_text('\t')
587 self.readline.insert_text('\t')
577 return None
588 return None
578
589
579
590
580 magic_escape = self.magic_escape
591 magic_escape = self.magic_escape
581 magic_prefix = self.magic_prefix
592 magic_prefix = self.magic_prefix
582
593
583 try:
594 try:
584 if text.startswith(magic_escape):
595 if text.startswith(magic_escape):
585 text = text.replace(magic_escape,magic_prefix)
596 text = text.replace(magic_escape,magic_prefix)
586 elif text.startswith('~'):
597 elif text.startswith('~'):
587 text = os.path.expanduser(text)
598 text = os.path.expanduser(text)
588 if state == 0:
599 if state == 0:
589 custom_res = self.dispatch_custom_completer(text)
600 custom_res = self.dispatch_custom_completer(text)
590 if custom_res is not None:
601 if custom_res is not None:
591 # did custom completers produce something?
602 # did custom completers produce something?
592 self.matches = custom_res
603 self.matches = custom_res
593 else:
604 else:
594 # Extend the list of completions with the results of each
605 # Extend the list of completions with the results of each
595 # matcher, so we return results to the user from all
606 # matcher, so we return results to the user from all
596 # namespaces.
607 # namespaces.
597 if self.merge_completions:
608 if self.merge_completions:
598 self.matches = []
609 self.matches = []
599 for matcher in self.matchers:
610 for matcher in self.matchers:
600 self.matches.extend(matcher(text))
611 self.matches.extend(matcher(text))
601 else:
612 else:
602 for matcher in self.matchers:
613 for matcher in self.matchers:
603 self.matches = matcher(text)
614 self.matches = matcher(text)
604 if self.matches:
615 if self.matches:
605 break
616 break
606
617
607 try:
618 try:
608 return self.matches[state].replace(magic_prefix,magic_escape)
619 return self.matches[state].replace(magic_prefix,magic_escape)
609 except IndexError:
620 except IndexError:
610 return None
621 return None
611 except:
622 except:
612 from IPython.ultraTB import AutoFormattedTB; # dbg
623 from IPython.ultraTB import AutoFormattedTB; # dbg
613 tb=AutoFormattedTB('Verbose');tb() #dbg
624 tb=AutoFormattedTB('Verbose');tb() #dbg
614
625
615 # If completion fails, don't annoy the user.
626 # If completion fails, don't annoy the user.
616 return None
627 return None
@@ -1,5857 +1,5864 b''
1 2006-11-02 Ville Vainio <vivainio@gmail.com>
2
3 * ipy_stock_completers.py: Add %run and %cd completers.
4
5 * completer.py: Try running custom completer for both
6 "foo" and "%foo" if the command is just "foo".
7
1 2006-10-31 Ville Vainio <vivainio@gmail.com>
8 2006-10-31 Ville Vainio <vivainio@gmail.com>
2
9
3 * strdispatch.py, completer.py, ipy_stock_completers.py:
10 * strdispatch.py, completer.py, ipy_stock_completers.py:
4 Allow str_key ("command") in completer hooks. Implement
11 Allow str_key ("command") in completer hooks. Implement
5 trivial completer for 'import' (stdlib modules only). Rename
12 trivial completer for 'import' (stdlib modules only). Rename
6 ipy_linux_package_managers.py to ipy_stock_completers.py.
13 ipy_linux_package_managers.py to ipy_stock_completers.py.
7 SVN completer.
14 SVN completer.
8
15
9 * Extensions/ledit.py: %magic line editor for easily and
16 * Extensions/ledit.py: %magic line editor for easily and
10 incrementally manipulating lists of strings. The magic command
17 incrementally manipulating lists of strings. The magic command
11 name is %led.
18 name is %led.
12
19
13 2006-10-30 Ville Vainio <vivainio@gmail.com>
20 2006-10-30 Ville Vainio <vivainio@gmail.com>
14
21
15 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
22 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
16 Bernsteins's patches for pydb integration.
23 Bernsteins's patches for pydb integration.
17 http://bashdb.sourceforge.net/pydb/
24 http://bashdb.sourceforge.net/pydb/
18
25
19 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
26 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
20 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
27 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
21 custom completer hook to allow the users to implement their own
28 custom completer hook to allow the users to implement their own
22 completers. See ipy_linux_package_managers.py for example. The
29 completers. See ipy_linux_package_managers.py for example. The
23 hook name is 'complete_command'.
30 hook name is 'complete_command'.
24
31
25 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
32 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
26
33
27 * IPython/UserConfig/ipythonrc-scipy: minor clenaups to remove old
34 * IPython/UserConfig/ipythonrc-scipy: minor clenaups to remove old
28 Numeric leftovers.
35 Numeric leftovers.
29
36
30 * ipython.el (py-execute-region): apply Stefan's patch to fix
37 * ipython.el (py-execute-region): apply Stefan's patch to fix
31 garbled results if the python shell hasn't been previously started.
38 garbled results if the python shell hasn't been previously started.
32
39
33 * IPython/genutils.py (arg_split): moved to genutils, since it's a
40 * IPython/genutils.py (arg_split): moved to genutils, since it's a
34 pretty generic function and useful for other things.
41 pretty generic function and useful for other things.
35
42
36 * IPython/OInspect.py (getsource): Add customizable source
43 * IPython/OInspect.py (getsource): Add customizable source
37 extractor. After a request/patch form W. Stein (SAGE).
44 extractor. After a request/patch form W. Stein (SAGE).
38
45
39 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
46 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
40 window size to a more reasonable value from what pexpect does,
47 window size to a more reasonable value from what pexpect does,
41 since their choice causes wrapping bugs with long input lines.
48 since their choice causes wrapping bugs with long input lines.
42
49
43 2006-10-28 Ville Vainio <vivainio@gmail.com>
50 2006-10-28 Ville Vainio <vivainio@gmail.com>
44
51
45 * Magic.py (%run): Save and restore the readline history from
52 * Magic.py (%run): Save and restore the readline history from
46 file around %run commands to prevent side effects from
53 file around %run commands to prevent side effects from
47 %runned programs that might use readline (e.g. pydb).
54 %runned programs that might use readline (e.g. pydb).
48
55
49 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
56 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
50 invoking the pydb enhanced debugger.
57 invoking the pydb enhanced debugger.
51
58
52 2006-10-23 Walter Doerwald <walter@livinglogic.de>
59 2006-10-23 Walter Doerwald <walter@livinglogic.de>
53
60
54 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
61 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
55 call the base class method and propagate the return value to
62 call the base class method and propagate the return value to
56 ifile. This is now done by path itself.
63 ifile. This is now done by path itself.
57
64
58 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
65 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
59
66
60 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
67 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
61 api: set_crash_handler(), to expose the ability to change the
68 api: set_crash_handler(), to expose the ability to change the
62 internal crash handler.
69 internal crash handler.
63
70
64 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
71 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
65 the various parameters of the crash handler so that apps using
72 the various parameters of the crash handler so that apps using
66 IPython as their engine can customize crash handling. Ipmlemented
73 IPython as their engine can customize crash handling. Ipmlemented
67 at the request of SAGE.
74 at the request of SAGE.
68
75
69 2006-10-14 Ville Vainio <vivainio@gmail.com>
76 2006-10-14 Ville Vainio <vivainio@gmail.com>
70
77
71 * Magic.py, ipython.el: applied first "safe" part of Rocky
78 * Magic.py, ipython.el: applied first "safe" part of Rocky
72 Bernstein's patch set for pydb integration.
79 Bernstein's patch set for pydb integration.
73
80
74 * Magic.py (%unalias, %alias): %store'd aliases can now be
81 * Magic.py (%unalias, %alias): %store'd aliases can now be
75 removed with '%unalias'. %alias w/o args now shows most
82 removed with '%unalias'. %alias w/o args now shows most
76 interesting (stored / manually defined) aliases last
83 interesting (stored / manually defined) aliases last
77 where they catch the eye w/o scrolling.
84 where they catch the eye w/o scrolling.
78
85
79 * Magic.py (%rehashx), ext_rehashdir.py: files with
86 * Magic.py (%rehashx), ext_rehashdir.py: files with
80 'py' extension are always considered executable, even
87 'py' extension are always considered executable, even
81 when not in PATHEXT environment variable.
88 when not in PATHEXT environment variable.
82
89
83 2006-10-12 Ville Vainio <vivainio@gmail.com>
90 2006-10-12 Ville Vainio <vivainio@gmail.com>
84
91
85 * jobctrl.py: Add new "jobctrl" extension for spawning background
92 * jobctrl.py: Add new "jobctrl" extension for spawning background
86 processes with "&find /". 'import jobctrl' to try it out. Requires
93 processes with "&find /". 'import jobctrl' to try it out. Requires
87 'subprocess' module, standard in python 2.4+.
94 'subprocess' module, standard in python 2.4+.
88
95
89 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
96 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
90 so if foo -> bar and bar -> baz, then foo -> baz.
97 so if foo -> bar and bar -> baz, then foo -> baz.
91
98
92 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
99 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
93
100
94 * IPython/Magic.py (Magic.parse_options): add a new posix option
101 * IPython/Magic.py (Magic.parse_options): add a new posix option
95 to allow parsing of input args in magics that doesn't strip quotes
102 to allow parsing of input args in magics that doesn't strip quotes
96 (if posix=False). This also closes %timeit bug reported by
103 (if posix=False). This also closes %timeit bug reported by
97 Stefan.
104 Stefan.
98
105
99 2006-10-03 Ville Vainio <vivainio@gmail.com>
106 2006-10-03 Ville Vainio <vivainio@gmail.com>
100
107
101 * iplib.py (raw_input, interact): Return ValueError catching for
108 * iplib.py (raw_input, interact): Return ValueError catching for
102 raw_input. Fixes infinite loop for sys.stdin.close() or
109 raw_input. Fixes infinite loop for sys.stdin.close() or
103 sys.stdout.close().
110 sys.stdout.close().
104
111
105 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
112 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
106
113
107 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
114 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
108 to help in handling doctests. irunner is now pretty useful for
115 to help in handling doctests. irunner is now pretty useful for
109 running standalone scripts and simulate a full interactive session
116 running standalone scripts and simulate a full interactive session
110 in a format that can be then pasted as a doctest.
117 in a format that can be then pasted as a doctest.
111
118
112 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
119 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
113 on top of the default (useless) ones. This also fixes the nasty
120 on top of the default (useless) ones. This also fixes the nasty
114 way in which 2.5's Quitter() exits (reverted [1785]).
121 way in which 2.5's Quitter() exits (reverted [1785]).
115
122
116 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
123 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
117 2.5.
124 2.5.
118
125
119 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
126 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
120 color scheme is updated as well when color scheme is changed
127 color scheme is updated as well when color scheme is changed
121 interactively.
128 interactively.
122
129
123 2006-09-27 Ville Vainio <vivainio@gmail.com>
130 2006-09-27 Ville Vainio <vivainio@gmail.com>
124
131
125 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
132 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
126 infinite loop and just exit. It's a hack, but will do for a while.
133 infinite loop and just exit. It's a hack, but will do for a while.
127
134
128 2006-08-25 Walter Doerwald <walter@livinglogic.de>
135 2006-08-25 Walter Doerwald <walter@livinglogic.de>
129
136
130 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
137 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
131 the constructor, this makes it possible to get a list of only directories
138 the constructor, this makes it possible to get a list of only directories
132 or only files.
139 or only files.
133
140
134 2006-08-12 Ville Vainio <vivainio@gmail.com>
141 2006-08-12 Ville Vainio <vivainio@gmail.com>
135
142
136 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
143 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
137 they broke unittest
144 they broke unittest
138
145
139 2006-08-11 Ville Vainio <vivainio@gmail.com>
146 2006-08-11 Ville Vainio <vivainio@gmail.com>
140
147
141 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
148 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
142 by resolving issue properly, i.e. by inheriting FakeModule
149 by resolving issue properly, i.e. by inheriting FakeModule
143 from types.ModuleType. Pickling ipython interactive data
150 from types.ModuleType. Pickling ipython interactive data
144 should still work as usual (testing appreciated).
151 should still work as usual (testing appreciated).
145
152
146 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
153 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
147
154
148 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
155 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
149 running under python 2.3 with code from 2.4 to fix a bug with
156 running under python 2.3 with code from 2.4 to fix a bug with
150 help(). Reported by the Debian maintainers, Norbert Tretkowski
157 help(). Reported by the Debian maintainers, Norbert Tretkowski
151 <norbert-AT-tretkowski.de> and Alexandre Fayolle
158 <norbert-AT-tretkowski.de> and Alexandre Fayolle
152 <afayolle-AT-debian.org>.
159 <afayolle-AT-debian.org>.
153
160
154 2006-08-04 Walter Doerwald <walter@livinglogic.de>
161 2006-08-04 Walter Doerwald <walter@livinglogic.de>
155
162
156 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
163 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
157 (which was displaying "quit" twice).
164 (which was displaying "quit" twice).
158
165
159 2006-07-28 Walter Doerwald <walter@livinglogic.de>
166 2006-07-28 Walter Doerwald <walter@livinglogic.de>
160
167
161 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
168 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
162 the mode argument).
169 the mode argument).
163
170
164 2006-07-27 Walter Doerwald <walter@livinglogic.de>
171 2006-07-27 Walter Doerwald <walter@livinglogic.de>
165
172
166 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
173 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
167 not running under IPython.
174 not running under IPython.
168
175
169 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
176 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
170 and make it iterable (iterating over the attribute itself). Add two new
177 and make it iterable (iterating over the attribute itself). Add two new
171 magic strings for __xattrs__(): If the string starts with "-", the attribute
178 magic strings for __xattrs__(): If the string starts with "-", the attribute
172 will not be displayed in ibrowse's detail view (but it can still be
179 will not be displayed in ibrowse's detail view (but it can still be
173 iterated over). This makes it possible to add attributes that are large
180 iterated over). This makes it possible to add attributes that are large
174 lists or generator methods to the detail view. Replace magic attribute names
181 lists or generator methods to the detail view. Replace magic attribute names
175 and _attrname() and _getattr() with "descriptors": For each type of magic
182 and _attrname() and _getattr() with "descriptors": For each type of magic
176 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
183 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
177 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
184 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
178 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
185 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
179 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
186 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
180 are still supported.
187 are still supported.
181
188
182 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
189 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
183 fails in ibrowse.fetch(), the exception object is added as the last item
190 fails in ibrowse.fetch(), the exception object is added as the last item
184 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
191 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
185 a generator throws an exception midway through execution.
192 a generator throws an exception midway through execution.
186
193
187 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
194 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
188 encoding into methods.
195 encoding into methods.
189
196
190 2006-07-26 Ville Vainio <vivainio@gmail.com>
197 2006-07-26 Ville Vainio <vivainio@gmail.com>
191
198
192 * iplib.py: history now stores multiline input as single
199 * iplib.py: history now stores multiline input as single
193 history entries. Patch by Jorgen Cederlof.
200 history entries. Patch by Jorgen Cederlof.
194
201
195 2006-07-18 Walter Doerwald <walter@livinglogic.de>
202 2006-07-18 Walter Doerwald <walter@livinglogic.de>
196
203
197 * IPython/Extensions/ibrowse.py: Make cursor visible over
204 * IPython/Extensions/ibrowse.py: Make cursor visible over
198 non existing attributes.
205 non existing attributes.
199
206
200 2006-07-14 Walter Doerwald <walter@livinglogic.de>
207 2006-07-14 Walter Doerwald <walter@livinglogic.de>
201
208
202 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
209 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
203 error output of the running command doesn't mess up the screen.
210 error output of the running command doesn't mess up the screen.
204
211
205 2006-07-13 Walter Doerwald <walter@livinglogic.de>
212 2006-07-13 Walter Doerwald <walter@livinglogic.de>
206
213
207 * IPython/Extensions/ipipe.py (isort): Make isort usable without
214 * IPython/Extensions/ipipe.py (isort): Make isort usable without
208 argument. This sorts the items themselves.
215 argument. This sorts the items themselves.
209
216
210 2006-07-12 Walter Doerwald <walter@livinglogic.de>
217 2006-07-12 Walter Doerwald <walter@livinglogic.de>
211
218
212 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
219 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
213 Compile expression strings into code objects. This should speed
220 Compile expression strings into code objects. This should speed
214 up ifilter and friends somewhat.
221 up ifilter and friends somewhat.
215
222
216 2006-07-08 Ville Vainio <vivainio@gmail.com>
223 2006-07-08 Ville Vainio <vivainio@gmail.com>
217
224
218 * Magic.py: %cpaste now strips > from the beginning of lines
225 * Magic.py: %cpaste now strips > from the beginning of lines
219 to ease pasting quoted code from emails. Contributed by
226 to ease pasting quoted code from emails. Contributed by
220 Stefan van der Walt.
227 Stefan van der Walt.
221
228
222 2006-06-29 Ville Vainio <vivainio@gmail.com>
229 2006-06-29 Ville Vainio <vivainio@gmail.com>
223
230
224 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
231 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
225 mode, patch contributed by Darren Dale. NEEDS TESTING!
232 mode, patch contributed by Darren Dale. NEEDS TESTING!
226
233
227 2006-06-28 Walter Doerwald <walter@livinglogic.de>
234 2006-06-28 Walter Doerwald <walter@livinglogic.de>
228
235
229 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
236 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
230 a blue background. Fix fetching new display rows when the browser
237 a blue background. Fix fetching new display rows when the browser
231 scrolls more than a screenful (e.g. by using the goto command).
238 scrolls more than a screenful (e.g. by using the goto command).
232
239
233 2006-06-27 Ville Vainio <vivainio@gmail.com>
240 2006-06-27 Ville Vainio <vivainio@gmail.com>
234
241
235 * Magic.py (_inspect, _ofind) Apply David Huard's
242 * Magic.py (_inspect, _ofind) Apply David Huard's
236 patch for displaying the correct docstring for 'property'
243 patch for displaying the correct docstring for 'property'
237 attributes.
244 attributes.
238
245
239 2006-06-23 Walter Doerwald <walter@livinglogic.de>
246 2006-06-23 Walter Doerwald <walter@livinglogic.de>
240
247
241 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
248 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
242 commands into the methods implementing them.
249 commands into the methods implementing them.
243
250
244 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
251 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
245
252
246 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
253 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
247 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
254 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
248 autoindent support was authored by Jin Liu.
255 autoindent support was authored by Jin Liu.
249
256
250 2006-06-22 Walter Doerwald <walter@livinglogic.de>
257 2006-06-22 Walter Doerwald <walter@livinglogic.de>
251
258
252 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
259 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
253 for keymaps with a custom class that simplifies handling.
260 for keymaps with a custom class that simplifies handling.
254
261
255 2006-06-19 Walter Doerwald <walter@livinglogic.de>
262 2006-06-19 Walter Doerwald <walter@livinglogic.de>
256
263
257 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
264 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
258 resizing. This requires Python 2.5 to work.
265 resizing. This requires Python 2.5 to work.
259
266
260 2006-06-16 Walter Doerwald <walter@livinglogic.de>
267 2006-06-16 Walter Doerwald <walter@livinglogic.de>
261
268
262 * IPython/Extensions/ibrowse.py: Add two new commands to
269 * IPython/Extensions/ibrowse.py: Add two new commands to
263 ibrowse: "hideattr" (mapped to "h") hides the attribute under
270 ibrowse: "hideattr" (mapped to "h") hides the attribute under
264 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
271 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
265 attributes again. Remapped the help command to "?". Display
272 attributes again. Remapped the help command to "?". Display
266 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
273 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
267 as keys for the "home" and "end" commands. Add three new commands
274 as keys for the "home" and "end" commands. Add three new commands
268 to the input mode for "find" and friends: "delend" (CTRL-K)
275 to the input mode for "find" and friends: "delend" (CTRL-K)
269 deletes to the end of line. "incsearchup" searches upwards in the
276 deletes to the end of line. "incsearchup" searches upwards in the
270 command history for an input that starts with the text before the cursor.
277 command history for an input that starts with the text before the cursor.
271 "incsearchdown" does the same downwards. Removed a bogus mapping of
278 "incsearchdown" does the same downwards. Removed a bogus mapping of
272 the x key to "delete".
279 the x key to "delete".
273
280
274 2006-06-15 Ville Vainio <vivainio@gmail.com>
281 2006-06-15 Ville Vainio <vivainio@gmail.com>
275
282
276 * iplib.py, hooks.py: Added new generate_prompt hook that can be
283 * iplib.py, hooks.py: Added new generate_prompt hook that can be
277 used to create prompts dynamically, instead of the "old" way of
284 used to create prompts dynamically, instead of the "old" way of
278 assigning "magic" strings to prompt_in1 and prompt_in2. The old
285 assigning "magic" strings to prompt_in1 and prompt_in2. The old
279 way still works (it's invoked by the default hook), of course.
286 way still works (it's invoked by the default hook), of course.
280
287
281 * Prompts.py: added generate_output_prompt hook for altering output
288 * Prompts.py: added generate_output_prompt hook for altering output
282 prompt
289 prompt
283
290
284 * Release.py: Changed version string to 0.7.3.svn.
291 * Release.py: Changed version string to 0.7.3.svn.
285
292
286 2006-06-15 Walter Doerwald <walter@livinglogic.de>
293 2006-06-15 Walter Doerwald <walter@livinglogic.de>
287
294
288 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
295 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
289 the call to fetch() always tries to fetch enough data for at least one
296 the call to fetch() always tries to fetch enough data for at least one
290 full screen. This makes it possible to simply call moveto(0,0,True) in
297 full screen. This makes it possible to simply call moveto(0,0,True) in
291 the constructor. Fix typos and removed the obsolete goto attribute.
298 the constructor. Fix typos and removed the obsolete goto attribute.
292
299
293 2006-06-12 Ville Vainio <vivainio@gmail.com>
300 2006-06-12 Ville Vainio <vivainio@gmail.com>
294
301
295 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
302 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
296 allowing $variable interpolation within multiline statements,
303 allowing $variable interpolation within multiline statements,
297 though so far only with "sh" profile for a testing period.
304 though so far only with "sh" profile for a testing period.
298 The patch also enables splitting long commands with \ but it
305 The patch also enables splitting long commands with \ but it
299 doesn't work properly yet.
306 doesn't work properly yet.
300
307
301 2006-06-12 Walter Doerwald <walter@livinglogic.de>
308 2006-06-12 Walter Doerwald <walter@livinglogic.de>
302
309
303 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
310 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
304 input history and the position of the cursor in the input history for
311 input history and the position of the cursor in the input history for
305 the find, findbackwards and goto command.
312 the find, findbackwards and goto command.
306
313
307 2006-06-10 Walter Doerwald <walter@livinglogic.de>
314 2006-06-10 Walter Doerwald <walter@livinglogic.de>
308
315
309 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
316 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
310 implements the basic functionality of browser commands that require
317 implements the basic functionality of browser commands that require
311 input. Reimplement the goto, find and findbackwards commands as
318 input. Reimplement the goto, find and findbackwards commands as
312 subclasses of _CommandInput. Add an input history and keymaps to those
319 subclasses of _CommandInput. Add an input history and keymaps to those
313 commands. Add "\r" as a keyboard shortcut for the enterdefault and
320 commands. Add "\r" as a keyboard shortcut for the enterdefault and
314 execute commands.
321 execute commands.
315
322
316 2006-06-07 Ville Vainio <vivainio@gmail.com>
323 2006-06-07 Ville Vainio <vivainio@gmail.com>
317
324
318 * iplib.py: ipython mybatch.ipy exits ipython immediately after
325 * iplib.py: ipython mybatch.ipy exits ipython immediately after
319 running the batch files instead of leaving the session open.
326 running the batch files instead of leaving the session open.
320
327
321 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
328 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
322
329
323 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
330 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
324 the original fix was incomplete. Patch submitted by W. Maier.
331 the original fix was incomplete. Patch submitted by W. Maier.
325
332
326 2006-06-07 Ville Vainio <vivainio@gmail.com>
333 2006-06-07 Ville Vainio <vivainio@gmail.com>
327
334
328 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
335 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
329 Confirmation prompts can be supressed by 'quiet' option.
336 Confirmation prompts can be supressed by 'quiet' option.
330 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
337 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
331
338
332 2006-06-06 *** Released version 0.7.2
339 2006-06-06 *** Released version 0.7.2
333
340
334 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
341 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
335
342
336 * IPython/Release.py (version): Made 0.7.2 final for release.
343 * IPython/Release.py (version): Made 0.7.2 final for release.
337 Repo tagged and release cut.
344 Repo tagged and release cut.
338
345
339 2006-06-05 Ville Vainio <vivainio@gmail.com>
346 2006-06-05 Ville Vainio <vivainio@gmail.com>
340
347
341 * Magic.py (magic_rehashx): Honor no_alias list earlier in
348 * Magic.py (magic_rehashx): Honor no_alias list earlier in
342 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
349 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
343
350
344 * upgrade_dir.py: try import 'path' module a bit harder
351 * upgrade_dir.py: try import 'path' module a bit harder
345 (for %upgrade)
352 (for %upgrade)
346
353
347 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
354 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
348
355
349 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
356 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
350 instead of looping 20 times.
357 instead of looping 20 times.
351
358
352 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
359 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
353 correctly at initialization time. Bug reported by Krishna Mohan
360 correctly at initialization time. Bug reported by Krishna Mohan
354 Gundu <gkmohan-AT-gmail.com> on the user list.
361 Gundu <gkmohan-AT-gmail.com> on the user list.
355
362
356 * IPython/Release.py (version): Mark 0.7.2 version to start
363 * IPython/Release.py (version): Mark 0.7.2 version to start
357 testing for release on 06/06.
364 testing for release on 06/06.
358
365
359 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
366 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
360
367
361 * scripts/irunner: thin script interface so users don't have to
368 * scripts/irunner: thin script interface so users don't have to
362 find the module and call it as an executable, since modules rarely
369 find the module and call it as an executable, since modules rarely
363 live in people's PATH.
370 live in people's PATH.
364
371
365 * IPython/irunner.py (InteractiveRunner.__init__): added
372 * IPython/irunner.py (InteractiveRunner.__init__): added
366 delaybeforesend attribute to control delays with newer versions of
373 delaybeforesend attribute to control delays with newer versions of
367 pexpect. Thanks to detailed help from pexpect's author, Noah
374 pexpect. Thanks to detailed help from pexpect's author, Noah
368 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
375 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
369 correctly (it works in NoColor mode).
376 correctly (it works in NoColor mode).
370
377
371 * IPython/iplib.py (handle_normal): fix nasty crash reported on
378 * IPython/iplib.py (handle_normal): fix nasty crash reported on
372 SAGE list, from improper log() calls.
379 SAGE list, from improper log() calls.
373
380
374 2006-05-31 Ville Vainio <vivainio@gmail.com>
381 2006-05-31 Ville Vainio <vivainio@gmail.com>
375
382
376 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
383 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
377 with args in parens to work correctly with dirs that have spaces.
384 with args in parens to work correctly with dirs that have spaces.
378
385
379 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
386 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
380
387
381 * IPython/Logger.py (Logger.logstart): add option to log raw input
388 * IPython/Logger.py (Logger.logstart): add option to log raw input
382 instead of the processed one. A -r flag was added to the
389 instead of the processed one. A -r flag was added to the
383 %logstart magic used for controlling logging.
390 %logstart magic used for controlling logging.
384
391
385 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
392 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
386
393
387 * IPython/iplib.py (InteractiveShell.__init__): add check for the
394 * IPython/iplib.py (InteractiveShell.__init__): add check for the
388 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
395 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
389 recognize the option. After a bug report by Will Maier. This
396 recognize the option. After a bug report by Will Maier. This
390 closes #64 (will do it after confirmation from W. Maier).
397 closes #64 (will do it after confirmation from W. Maier).
391
398
392 * IPython/irunner.py: New module to run scripts as if manually
399 * IPython/irunner.py: New module to run scripts as if manually
393 typed into an interactive environment, based on pexpect. After a
400 typed into an interactive environment, based on pexpect. After a
394 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
401 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
395 ipython-user list. Simple unittests in the tests/ directory.
402 ipython-user list. Simple unittests in the tests/ directory.
396
403
397 * tools/release: add Will Maier, OpenBSD port maintainer, to
404 * tools/release: add Will Maier, OpenBSD port maintainer, to
398 recepients list. We are now officially part of the OpenBSD ports:
405 recepients list. We are now officially part of the OpenBSD ports:
399 http://www.openbsd.org/ports.html ! Many thanks to Will for the
406 http://www.openbsd.org/ports.html ! Many thanks to Will for the
400 work.
407 work.
401
408
402 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
409 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
403
410
404 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
411 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
405 so that it doesn't break tkinter apps.
412 so that it doesn't break tkinter apps.
406
413
407 * IPython/iplib.py (_prefilter): fix bug where aliases would
414 * IPython/iplib.py (_prefilter): fix bug where aliases would
408 shadow variables when autocall was fully off. Reported by SAGE
415 shadow variables when autocall was fully off. Reported by SAGE
409 author William Stein.
416 author William Stein.
410
417
411 * IPython/OInspect.py (Inspector.__init__): add a flag to control
418 * IPython/OInspect.py (Inspector.__init__): add a flag to control
412 at what detail level strings are computed when foo? is requested.
419 at what detail level strings are computed when foo? is requested.
413 This allows users to ask for example that the string form of an
420 This allows users to ask for example that the string form of an
414 object is only computed when foo?? is called, or even never, by
421 object is only computed when foo?? is called, or even never, by
415 setting the object_info_string_level >= 2 in the configuration
422 setting the object_info_string_level >= 2 in the configuration
416 file. This new option has been added and documented. After a
423 file. This new option has been added and documented. After a
417 request by SAGE to be able to control the printing of very large
424 request by SAGE to be able to control the printing of very large
418 objects more easily.
425 objects more easily.
419
426
420 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
427 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
421
428
422 * IPython/ipmaker.py (make_IPython): remove the ipython call path
429 * IPython/ipmaker.py (make_IPython): remove the ipython call path
423 from sys.argv, to be 100% consistent with how Python itself works
430 from sys.argv, to be 100% consistent with how Python itself works
424 (as seen for example with python -i file.py). After a bug report
431 (as seen for example with python -i file.py). After a bug report
425 by Jeffrey Collins.
432 by Jeffrey Collins.
426
433
427 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
434 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
428 nasty bug which was preventing custom namespaces with -pylab,
435 nasty bug which was preventing custom namespaces with -pylab,
429 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
436 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
430 compatibility (long gone from mpl).
437 compatibility (long gone from mpl).
431
438
432 * IPython/ipapi.py (make_session): name change: create->make. We
439 * IPython/ipapi.py (make_session): name change: create->make. We
433 use make in other places (ipmaker,...), it's shorter and easier to
440 use make in other places (ipmaker,...), it's shorter and easier to
434 type and say, etc. I'm trying to clean things before 0.7.2 so
441 type and say, etc. I'm trying to clean things before 0.7.2 so
435 that I can keep things stable wrt to ipapi in the chainsaw branch.
442 that I can keep things stable wrt to ipapi in the chainsaw branch.
436
443
437 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
444 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
438 python-mode recognizes our debugger mode. Add support for
445 python-mode recognizes our debugger mode. Add support for
439 autoindent inside (X)emacs. After a patch sent in by Jin Liu
446 autoindent inside (X)emacs. After a patch sent in by Jin Liu
440 <m.liu.jin-AT-gmail.com> originally written by
447 <m.liu.jin-AT-gmail.com> originally written by
441 doxgen-AT-newsmth.net (with minor modifications for xemacs
448 doxgen-AT-newsmth.net (with minor modifications for xemacs
442 compatibility)
449 compatibility)
443
450
444 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
451 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
445 tracebacks when walking the stack so that the stack tracking system
452 tracebacks when walking the stack so that the stack tracking system
446 in emacs' python-mode can identify the frames correctly.
453 in emacs' python-mode can identify the frames correctly.
447
454
448 * IPython/ipmaker.py (make_IPython): make the internal (and
455 * IPython/ipmaker.py (make_IPython): make the internal (and
449 default config) autoedit_syntax value false by default. Too many
456 default config) autoedit_syntax value false by default. Too many
450 users have complained to me (both on and off-list) about problems
457 users have complained to me (both on and off-list) about problems
451 with this option being on by default, so I'm making it default to
458 with this option being on by default, so I'm making it default to
452 off. It can still be enabled by anyone via the usual mechanisms.
459 off. It can still be enabled by anyone via the usual mechanisms.
453
460
454 * IPython/completer.py (Completer.attr_matches): add support for
461 * IPython/completer.py (Completer.attr_matches): add support for
455 PyCrust-style _getAttributeNames magic method. Patch contributed
462 PyCrust-style _getAttributeNames magic method. Patch contributed
456 by <mscott-AT-goldenspud.com>. Closes #50.
463 by <mscott-AT-goldenspud.com>. Closes #50.
457
464
458 * IPython/iplib.py (InteractiveShell.__init__): remove the
465 * IPython/iplib.py (InteractiveShell.__init__): remove the
459 deletion of exit/quit from __builtin__, which can break
466 deletion of exit/quit from __builtin__, which can break
460 third-party tools like the Zope debugging console. The
467 third-party tools like the Zope debugging console. The
461 %exit/%quit magics remain. In general, it's probably a good idea
468 %exit/%quit magics remain. In general, it's probably a good idea
462 not to delete anything from __builtin__, since we never know what
469 not to delete anything from __builtin__, since we never know what
463 that will break. In any case, python now (for 2.5) will support
470 that will break. In any case, python now (for 2.5) will support
464 'real' exit/quit, so this issue is moot. Closes #55.
471 'real' exit/quit, so this issue is moot. Closes #55.
465
472
466 * IPython/genutils.py (with_obj): rename the 'with' function to
473 * IPython/genutils.py (with_obj): rename the 'with' function to
467 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
474 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
468 becomes a language keyword. Closes #53.
475 becomes a language keyword. Closes #53.
469
476
470 * IPython/FakeModule.py (FakeModule.__init__): add a proper
477 * IPython/FakeModule.py (FakeModule.__init__): add a proper
471 __file__ attribute to this so it fools more things into thinking
478 __file__ attribute to this so it fools more things into thinking
472 it is a real module. Closes #59.
479 it is a real module. Closes #59.
473
480
474 * IPython/Magic.py (magic_edit): add -n option to open the editor
481 * IPython/Magic.py (magic_edit): add -n option to open the editor
475 at a specific line number. After a patch by Stefan van der Walt.
482 at a specific line number. After a patch by Stefan van der Walt.
476
483
477 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
484 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
478
485
479 * IPython/iplib.py (edit_syntax_error): fix crash when for some
486 * IPython/iplib.py (edit_syntax_error): fix crash when for some
480 reason the file could not be opened. After automatic crash
487 reason the file could not be opened. After automatic crash
481 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
488 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
482 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
489 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
483 (_should_recompile): Don't fire editor if using %bg, since there
490 (_should_recompile): Don't fire editor if using %bg, since there
484 is no file in the first place. From the same report as above.
491 is no file in the first place. From the same report as above.
485 (raw_input): protect against faulty third-party prefilters. After
492 (raw_input): protect against faulty third-party prefilters. After
486 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
493 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
487 while running under SAGE.
494 while running under SAGE.
488
495
489 2006-05-23 Ville Vainio <vivainio@gmail.com>
496 2006-05-23 Ville Vainio <vivainio@gmail.com>
490
497
491 * ipapi.py: Stripped down ip.to_user_ns() to work only as
498 * ipapi.py: Stripped down ip.to_user_ns() to work only as
492 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
499 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
493 now returns None (again), unless dummy is specifically allowed by
500 now returns None (again), unless dummy is specifically allowed by
494 ipapi.get(allow_dummy=True).
501 ipapi.get(allow_dummy=True).
495
502
496 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
503 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
497
504
498 * IPython: remove all 2.2-compatibility objects and hacks from
505 * IPython: remove all 2.2-compatibility objects and hacks from
499 everywhere, since we only support 2.3 at this point. Docs
506 everywhere, since we only support 2.3 at this point. Docs
500 updated.
507 updated.
501
508
502 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
509 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
503 Anything requiring extra validation can be turned into a Python
510 Anything requiring extra validation can be turned into a Python
504 property in the future. I used a property for the db one b/c
511 property in the future. I used a property for the db one b/c
505 there was a nasty circularity problem with the initialization
512 there was a nasty circularity problem with the initialization
506 order, which right now I don't have time to clean up.
513 order, which right now I don't have time to clean up.
507
514
508 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
515 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
509 another locking bug reported by Jorgen. I'm not 100% sure though,
516 another locking bug reported by Jorgen. I'm not 100% sure though,
510 so more testing is needed...
517 so more testing is needed...
511
518
512 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
519 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
513
520
514 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
521 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
515 local variables from any routine in user code (typically executed
522 local variables from any routine in user code (typically executed
516 with %run) directly into the interactive namespace. Very useful
523 with %run) directly into the interactive namespace. Very useful
517 when doing complex debugging.
524 when doing complex debugging.
518 (IPythonNotRunning): Changed the default None object to a dummy
525 (IPythonNotRunning): Changed the default None object to a dummy
519 whose attributes can be queried as well as called without
526 whose attributes can be queried as well as called without
520 exploding, to ease writing code which works transparently both in
527 exploding, to ease writing code which works transparently both in
521 and out of ipython and uses some of this API.
528 and out of ipython and uses some of this API.
522
529
523 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
530 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
524
531
525 * IPython/hooks.py (result_display): Fix the fact that our display
532 * IPython/hooks.py (result_display): Fix the fact that our display
526 hook was using str() instead of repr(), as the default python
533 hook was using str() instead of repr(), as the default python
527 console does. This had gone unnoticed b/c it only happened if
534 console does. This had gone unnoticed b/c it only happened if
528 %Pprint was off, but the inconsistency was there.
535 %Pprint was off, but the inconsistency was there.
529
536
530 2006-05-15 Ville Vainio <vivainio@gmail.com>
537 2006-05-15 Ville Vainio <vivainio@gmail.com>
531
538
532 * Oinspect.py: Only show docstring for nonexisting/binary files
539 * Oinspect.py: Only show docstring for nonexisting/binary files
533 when doing object??, closing ticket #62
540 when doing object??, closing ticket #62
534
541
535 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
542 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
536
543
537 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
544 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
538 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
545 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
539 was being released in a routine which hadn't checked if it had
546 was being released in a routine which hadn't checked if it had
540 been the one to acquire it.
547 been the one to acquire it.
541
548
542 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
549 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
543
550
544 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
551 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
545
552
546 2006-04-11 Ville Vainio <vivainio@gmail.com>
553 2006-04-11 Ville Vainio <vivainio@gmail.com>
547
554
548 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
555 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
549 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
556 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
550 prefilters, allowing stuff like magics and aliases in the file.
557 prefilters, allowing stuff like magics and aliases in the file.
551
558
552 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
559 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
553 added. Supported now are "%clear in" and "%clear out" (clear input and
560 added. Supported now are "%clear in" and "%clear out" (clear input and
554 output history, respectively). Also fixed CachedOutput.flush to
561 output history, respectively). Also fixed CachedOutput.flush to
555 properly flush the output cache.
562 properly flush the output cache.
556
563
557 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
564 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
558 half-success (and fail explicitly).
565 half-success (and fail explicitly).
559
566
560 2006-03-28 Ville Vainio <vivainio@gmail.com>
567 2006-03-28 Ville Vainio <vivainio@gmail.com>
561
568
562 * iplib.py: Fix quoting of aliases so that only argless ones
569 * iplib.py: Fix quoting of aliases so that only argless ones
563 are quoted
570 are quoted
564
571
565 2006-03-28 Ville Vainio <vivainio@gmail.com>
572 2006-03-28 Ville Vainio <vivainio@gmail.com>
566
573
567 * iplib.py: Quote aliases with spaces in the name.
574 * iplib.py: Quote aliases with spaces in the name.
568 "c:\program files\blah\bin" is now legal alias target.
575 "c:\program files\blah\bin" is now legal alias target.
569
576
570 * ext_rehashdir.py: Space no longer allowed as arg
577 * ext_rehashdir.py: Space no longer allowed as arg
571 separator, since space is legal in path names.
578 separator, since space is legal in path names.
572
579
573 2006-03-16 Ville Vainio <vivainio@gmail.com>
580 2006-03-16 Ville Vainio <vivainio@gmail.com>
574
581
575 * upgrade_dir.py: Take path.py from Extensions, correcting
582 * upgrade_dir.py: Take path.py from Extensions, correcting
576 %upgrade magic
583 %upgrade magic
577
584
578 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
585 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
579
586
580 * hooks.py: Only enclose editor binary in quotes if legal and
587 * hooks.py: Only enclose editor binary in quotes if legal and
581 necessary (space in the name, and is an existing file). Fixes a bug
588 necessary (space in the name, and is an existing file). Fixes a bug
582 reported by Zachary Pincus.
589 reported by Zachary Pincus.
583
590
584 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
591 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
585
592
586 * Manual: thanks to a tip on proper color handling for Emacs, by
593 * Manual: thanks to a tip on proper color handling for Emacs, by
587 Eric J Haywiser <ejh1-AT-MIT.EDU>.
594 Eric J Haywiser <ejh1-AT-MIT.EDU>.
588
595
589 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
596 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
590 by applying the provided patch. Thanks to Liu Jin
597 by applying the provided patch. Thanks to Liu Jin
591 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
598 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
592 XEmacs/Linux, I'm trusting the submitter that it actually helps
599 XEmacs/Linux, I'm trusting the submitter that it actually helps
593 under win32/GNU Emacs. Will revisit if any problems are reported.
600 under win32/GNU Emacs. Will revisit if any problems are reported.
594
601
595 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
602 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
596
603
597 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
604 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
598 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
605 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
599
606
600 2006-03-12 Ville Vainio <vivainio@gmail.com>
607 2006-03-12 Ville Vainio <vivainio@gmail.com>
601
608
602 * Magic.py (magic_timeit): Added %timeit magic, contributed by
609 * Magic.py (magic_timeit): Added %timeit magic, contributed by
603 Torsten Marek.
610 Torsten Marek.
604
611
605 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
612 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
606
613
607 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
614 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
608 line ranges works again.
615 line ranges works again.
609
616
610 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
617 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
611
618
612 * IPython/iplib.py (showtraceback): add back sys.last_traceback
619 * IPython/iplib.py (showtraceback): add back sys.last_traceback
613 and friends, after a discussion with Zach Pincus on ipython-user.
620 and friends, after a discussion with Zach Pincus on ipython-user.
614 I'm not 100% sure, but after thinking about it quite a bit, it may
621 I'm not 100% sure, but after thinking about it quite a bit, it may
615 be OK. Testing with the multithreaded shells didn't reveal any
622 be OK. Testing with the multithreaded shells didn't reveal any
616 problems, but let's keep an eye out.
623 problems, but let's keep an eye out.
617
624
618 In the process, I fixed a few things which were calling
625 In the process, I fixed a few things which were calling
619 self.InteractiveTB() directly (like safe_execfile), which is a
626 self.InteractiveTB() directly (like safe_execfile), which is a
620 mistake: ALL exception reporting should be done by calling
627 mistake: ALL exception reporting should be done by calling
621 self.showtraceback(), which handles state and tab-completion and
628 self.showtraceback(), which handles state and tab-completion and
622 more.
629 more.
623
630
624 2006-03-01 Ville Vainio <vivainio@gmail.com>
631 2006-03-01 Ville Vainio <vivainio@gmail.com>
625
632
626 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
633 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
627 To use, do "from ipipe import *".
634 To use, do "from ipipe import *".
628
635
629 2006-02-24 Ville Vainio <vivainio@gmail.com>
636 2006-02-24 Ville Vainio <vivainio@gmail.com>
630
637
631 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
638 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
632 "cleanly" and safely than the older upgrade mechanism.
639 "cleanly" and safely than the older upgrade mechanism.
633
640
634 2006-02-21 Ville Vainio <vivainio@gmail.com>
641 2006-02-21 Ville Vainio <vivainio@gmail.com>
635
642
636 * Magic.py: %save works again.
643 * Magic.py: %save works again.
637
644
638 2006-02-15 Ville Vainio <vivainio@gmail.com>
645 2006-02-15 Ville Vainio <vivainio@gmail.com>
639
646
640 * Magic.py: %Pprint works again
647 * Magic.py: %Pprint works again
641
648
642 * Extensions/ipy_sane_defaults.py: Provide everything provided
649 * Extensions/ipy_sane_defaults.py: Provide everything provided
643 in default ipythonrc, to make it possible to have a completely empty
650 in default ipythonrc, to make it possible to have a completely empty
644 ipythonrc (and thus completely rc-file free configuration)
651 ipythonrc (and thus completely rc-file free configuration)
645
652
646 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
653 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
647
654
648 * IPython/hooks.py (editor): quote the call to the editor command,
655 * IPython/hooks.py (editor): quote the call to the editor command,
649 to allow commands with spaces in them. Problem noted by watching
656 to allow commands with spaces in them. Problem noted by watching
650 Ian Oswald's video about textpad under win32 at
657 Ian Oswald's video about textpad under win32 at
651 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
658 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
652
659
653 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
660 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
654 describing magics (we haven't used @ for a loong time).
661 describing magics (we haven't used @ for a loong time).
655
662
656 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
663 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
657 contributed by marienz to close
664 contributed by marienz to close
658 http://www.scipy.net/roundup/ipython/issue53.
665 http://www.scipy.net/roundup/ipython/issue53.
659
666
660 2006-02-10 Ville Vainio <vivainio@gmail.com>
667 2006-02-10 Ville Vainio <vivainio@gmail.com>
661
668
662 * genutils.py: getoutput now works in win32 too
669 * genutils.py: getoutput now works in win32 too
663
670
664 * completer.py: alias and magic completion only invoked
671 * completer.py: alias and magic completion only invoked
665 at the first "item" in the line, to avoid "cd %store"
672 at the first "item" in the line, to avoid "cd %store"
666 nonsense.
673 nonsense.
667
674
668 2006-02-09 Ville Vainio <vivainio@gmail.com>
675 2006-02-09 Ville Vainio <vivainio@gmail.com>
669
676
670 * test/*: Added a unit testing framework (finally).
677 * test/*: Added a unit testing framework (finally).
671 '%run runtests.py' to run test_*.
678 '%run runtests.py' to run test_*.
672
679
673 * ipapi.py: Exposed runlines and set_custom_exc
680 * ipapi.py: Exposed runlines and set_custom_exc
674
681
675 2006-02-07 Ville Vainio <vivainio@gmail.com>
682 2006-02-07 Ville Vainio <vivainio@gmail.com>
676
683
677 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
684 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
678 instead use "f(1 2)" as before.
685 instead use "f(1 2)" as before.
679
686
680 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
687 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
681
688
682 * IPython/demo.py (IPythonDemo): Add new classes to the demo
689 * IPython/demo.py (IPythonDemo): Add new classes to the demo
683 facilities, for demos processed by the IPython input filter
690 facilities, for demos processed by the IPython input filter
684 (IPythonDemo), and for running a script one-line-at-a-time as a
691 (IPythonDemo), and for running a script one-line-at-a-time as a
685 demo, both for pure Python (LineDemo) and for IPython-processed
692 demo, both for pure Python (LineDemo) and for IPython-processed
686 input (IPythonLineDemo). After a request by Dave Kohel, from the
693 input (IPythonLineDemo). After a request by Dave Kohel, from the
687 SAGE team.
694 SAGE team.
688 (Demo.edit): added an edit() method to the demo objects, to edit
695 (Demo.edit): added an edit() method to the demo objects, to edit
689 the in-memory copy of the last executed block.
696 the in-memory copy of the last executed block.
690
697
691 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
698 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
692 processing to %edit, %macro and %save. These commands can now be
699 processing to %edit, %macro and %save. These commands can now be
693 invoked on the unprocessed input as it was typed by the user
700 invoked on the unprocessed input as it was typed by the user
694 (without any prefilters applied). After requests by the SAGE team
701 (without any prefilters applied). After requests by the SAGE team
695 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
702 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
696
703
697 2006-02-01 Ville Vainio <vivainio@gmail.com>
704 2006-02-01 Ville Vainio <vivainio@gmail.com>
698
705
699 * setup.py, eggsetup.py: easy_install ipython==dev works
706 * setup.py, eggsetup.py: easy_install ipython==dev works
700 correctly now (on Linux)
707 correctly now (on Linux)
701
708
702 * ipy_user_conf,ipmaker: user config changes, removed spurious
709 * ipy_user_conf,ipmaker: user config changes, removed spurious
703 warnings
710 warnings
704
711
705 * iplib: if rc.banner is string, use it as is.
712 * iplib: if rc.banner is string, use it as is.
706
713
707 * Magic: %pycat accepts a string argument and pages it's contents.
714 * Magic: %pycat accepts a string argument and pages it's contents.
708
715
709
716
710 2006-01-30 Ville Vainio <vivainio@gmail.com>
717 2006-01-30 Ville Vainio <vivainio@gmail.com>
711
718
712 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
719 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
713 Now %store and bookmarks work through PickleShare, meaning that
720 Now %store and bookmarks work through PickleShare, meaning that
714 concurrent access is possible and all ipython sessions see the
721 concurrent access is possible and all ipython sessions see the
715 same database situation all the time, instead of snapshot of
722 same database situation all the time, instead of snapshot of
716 the situation when the session was started. Hence, %bookmark
723 the situation when the session was started. Hence, %bookmark
717 results are immediately accessible from othes sessions. The database
724 results are immediately accessible from othes sessions. The database
718 is also available for use by user extensions. See:
725 is also available for use by user extensions. See:
719 http://www.python.org/pypi/pickleshare
726 http://www.python.org/pypi/pickleshare
720
727
721 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
728 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
722
729
723 * aliases can now be %store'd
730 * aliases can now be %store'd
724
731
725 * path.py moved to Extensions so that pickleshare does not need
732 * path.py moved to Extensions so that pickleshare does not need
726 IPython-specific import. Extensions added to pythonpath right
733 IPython-specific import. Extensions added to pythonpath right
727 at __init__.
734 at __init__.
728
735
729 * iplib.py: ipalias deprecated/redundant; aliases are converted and
736 * iplib.py: ipalias deprecated/redundant; aliases are converted and
730 called with _ip.system and the pre-transformed command string.
737 called with _ip.system and the pre-transformed command string.
731
738
732 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
739 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
733
740
734 * IPython/iplib.py (interact): Fix that we were not catching
741 * IPython/iplib.py (interact): Fix that we were not catching
735 KeyboardInterrupt exceptions properly. I'm not quite sure why the
742 KeyboardInterrupt exceptions properly. I'm not quite sure why the
736 logic here had to change, but it's fixed now.
743 logic here had to change, but it's fixed now.
737
744
738 2006-01-29 Ville Vainio <vivainio@gmail.com>
745 2006-01-29 Ville Vainio <vivainio@gmail.com>
739
746
740 * iplib.py: Try to import pyreadline on Windows.
747 * iplib.py: Try to import pyreadline on Windows.
741
748
742 2006-01-27 Ville Vainio <vivainio@gmail.com>
749 2006-01-27 Ville Vainio <vivainio@gmail.com>
743
750
744 * iplib.py: Expose ipapi as _ip in builtin namespace.
751 * iplib.py: Expose ipapi as _ip in builtin namespace.
745 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
752 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
746 and ip_set_hook (-> _ip.set_hook) redundant. % and !
753 and ip_set_hook (-> _ip.set_hook) redundant. % and !
747 syntax now produce _ip.* variant of the commands.
754 syntax now produce _ip.* variant of the commands.
748
755
749 * "_ip.options().autoedit_syntax = 2" automatically throws
756 * "_ip.options().autoedit_syntax = 2" automatically throws
750 user to editor for syntax error correction without prompting.
757 user to editor for syntax error correction without prompting.
751
758
752 2006-01-27 Ville Vainio <vivainio@gmail.com>
759 2006-01-27 Ville Vainio <vivainio@gmail.com>
753
760
754 * ipmaker.py: Give "realistic" sys.argv for scripts (without
761 * ipmaker.py: Give "realistic" sys.argv for scripts (without
755 'ipython' at argv[0]) executed through command line.
762 'ipython' at argv[0]) executed through command line.
756 NOTE: this DEPRECATES calling ipython with multiple scripts
763 NOTE: this DEPRECATES calling ipython with multiple scripts
757 ("ipython a.py b.py c.py")
764 ("ipython a.py b.py c.py")
758
765
759 * iplib.py, hooks.py: Added configurable input prefilter,
766 * iplib.py, hooks.py: Added configurable input prefilter,
760 named 'input_prefilter'. See ext_rescapture.py for example
767 named 'input_prefilter'. See ext_rescapture.py for example
761 usage.
768 usage.
762
769
763 * ext_rescapture.py, Magic.py: Better system command output capture
770 * ext_rescapture.py, Magic.py: Better system command output capture
764 through 'var = !ls' (deprecates user-visible %sc). Same notation
771 through 'var = !ls' (deprecates user-visible %sc). Same notation
765 applies for magics, 'var = %alias' assigns alias list to var.
772 applies for magics, 'var = %alias' assigns alias list to var.
766
773
767 * ipapi.py: added meta() for accessing extension-usable data store.
774 * ipapi.py: added meta() for accessing extension-usable data store.
768
775
769 * iplib.py: added InteractiveShell.getapi(). New magics should be
776 * iplib.py: added InteractiveShell.getapi(). New magics should be
770 written doing self.getapi() instead of using the shell directly.
777 written doing self.getapi() instead of using the shell directly.
771
778
772 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
779 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
773 %store foo >> ~/myfoo.txt to store variables to files (in clean
780 %store foo >> ~/myfoo.txt to store variables to files (in clean
774 textual form, not a restorable pickle).
781 textual form, not a restorable pickle).
775
782
776 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
783 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
777
784
778 * usage.py, Magic.py: added %quickref
785 * usage.py, Magic.py: added %quickref
779
786
780 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
787 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
781
788
782 * GetoptErrors when invoking magics etc. with wrong args
789 * GetoptErrors when invoking magics etc. with wrong args
783 are now more helpful:
790 are now more helpful:
784 GetoptError: option -l not recognized (allowed: "qb" )
791 GetoptError: option -l not recognized (allowed: "qb" )
785
792
786 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
793 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
787
794
788 * IPython/demo.py (Demo.show): Flush stdout after each block, so
795 * IPython/demo.py (Demo.show): Flush stdout after each block, so
789 computationally intensive blocks don't appear to stall the demo.
796 computationally intensive blocks don't appear to stall the demo.
790
797
791 2006-01-24 Ville Vainio <vivainio@gmail.com>
798 2006-01-24 Ville Vainio <vivainio@gmail.com>
792
799
793 * iplib.py, hooks.py: 'result_display' hook can return a non-None
800 * iplib.py, hooks.py: 'result_display' hook can return a non-None
794 value to manipulate resulting history entry.
801 value to manipulate resulting history entry.
795
802
796 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
803 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
797 to instance methods of IPApi class, to make extending an embedded
804 to instance methods of IPApi class, to make extending an embedded
798 IPython feasible. See ext_rehashdir.py for example usage.
805 IPython feasible. See ext_rehashdir.py for example usage.
799
806
800 * Merged 1071-1076 from branches/0.7.1
807 * Merged 1071-1076 from branches/0.7.1
801
808
802
809
803 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
810 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
804
811
805 * tools/release (daystamp): Fix build tools to use the new
812 * tools/release (daystamp): Fix build tools to use the new
806 eggsetup.py script to build lightweight eggs.
813 eggsetup.py script to build lightweight eggs.
807
814
808 * Applied changesets 1062 and 1064 before 0.7.1 release.
815 * Applied changesets 1062 and 1064 before 0.7.1 release.
809
816
810 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
817 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
811 see the raw input history (without conversions like %ls ->
818 see the raw input history (without conversions like %ls ->
812 ipmagic("ls")). After a request from W. Stein, SAGE
819 ipmagic("ls")). After a request from W. Stein, SAGE
813 (http://modular.ucsd.edu/sage) developer. This information is
820 (http://modular.ucsd.edu/sage) developer. This information is
814 stored in the input_hist_raw attribute of the IPython instance, so
821 stored in the input_hist_raw attribute of the IPython instance, so
815 developers can access it if needed (it's an InputList instance).
822 developers can access it if needed (it's an InputList instance).
816
823
817 * Versionstring = 0.7.2.svn
824 * Versionstring = 0.7.2.svn
818
825
819 * eggsetup.py: A separate script for constructing eggs, creates
826 * eggsetup.py: A separate script for constructing eggs, creates
820 proper launch scripts even on Windows (an .exe file in
827 proper launch scripts even on Windows (an .exe file in
821 \python24\scripts).
828 \python24\scripts).
822
829
823 * ipapi.py: launch_new_instance, launch entry point needed for the
830 * ipapi.py: launch_new_instance, launch entry point needed for the
824 egg.
831 egg.
825
832
826 2006-01-23 Ville Vainio <vivainio@gmail.com>
833 2006-01-23 Ville Vainio <vivainio@gmail.com>
827
834
828 * Added %cpaste magic for pasting python code
835 * Added %cpaste magic for pasting python code
829
836
830 2006-01-22 Ville Vainio <vivainio@gmail.com>
837 2006-01-22 Ville Vainio <vivainio@gmail.com>
831
838
832 * Merge from branches/0.7.1 into trunk, revs 1052-1057
839 * Merge from branches/0.7.1 into trunk, revs 1052-1057
833
840
834 * Versionstring = 0.7.2.svn
841 * Versionstring = 0.7.2.svn
835
842
836 * eggsetup.py: A separate script for constructing eggs, creates
843 * eggsetup.py: A separate script for constructing eggs, creates
837 proper launch scripts even on Windows (an .exe file in
844 proper launch scripts even on Windows (an .exe file in
838 \python24\scripts).
845 \python24\scripts).
839
846
840 * ipapi.py: launch_new_instance, launch entry point needed for the
847 * ipapi.py: launch_new_instance, launch entry point needed for the
841 egg.
848 egg.
842
849
843 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
850 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
844
851
845 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
852 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
846 %pfile foo would print the file for foo even if it was a binary.
853 %pfile foo would print the file for foo even if it was a binary.
847 Now, extensions '.so' and '.dll' are skipped.
854 Now, extensions '.so' and '.dll' are skipped.
848
855
849 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
856 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
850 bug, where macros would fail in all threaded modes. I'm not 100%
857 bug, where macros would fail in all threaded modes. I'm not 100%
851 sure, so I'm going to put out an rc instead of making a release
858 sure, so I'm going to put out an rc instead of making a release
852 today, and wait for feedback for at least a few days.
859 today, and wait for feedback for at least a few days.
853
860
854 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
861 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
855 it...) the handling of pasting external code with autoindent on.
862 it...) the handling of pasting external code with autoindent on.
856 To get out of a multiline input, the rule will appear for most
863 To get out of a multiline input, the rule will appear for most
857 users unchanged: two blank lines or change the indent level
864 users unchanged: two blank lines or change the indent level
858 proposed by IPython. But there is a twist now: you can
865 proposed by IPython. But there is a twist now: you can
859 add/subtract only *one or two spaces*. If you add/subtract three
866 add/subtract only *one or two spaces*. If you add/subtract three
860 or more (unless you completely delete the line), IPython will
867 or more (unless you completely delete the line), IPython will
861 accept that line, and you'll need to enter a second one of pure
868 accept that line, and you'll need to enter a second one of pure
862 whitespace. I know it sounds complicated, but I can't find a
869 whitespace. I know it sounds complicated, but I can't find a
863 different solution that covers all the cases, with the right
870 different solution that covers all the cases, with the right
864 heuristics. Hopefully in actual use, nobody will really notice
871 heuristics. Hopefully in actual use, nobody will really notice
865 all these strange rules and things will 'just work'.
872 all these strange rules and things will 'just work'.
866
873
867 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
874 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
868
875
869 * IPython/iplib.py (interact): catch exceptions which can be
876 * IPython/iplib.py (interact): catch exceptions which can be
870 triggered asynchronously by signal handlers. Thanks to an
877 triggered asynchronously by signal handlers. Thanks to an
871 automatic crash report, submitted by Colin Kingsley
878 automatic crash report, submitted by Colin Kingsley
872 <tercel-AT-gentoo.org>.
879 <tercel-AT-gentoo.org>.
873
880
874 2006-01-20 Ville Vainio <vivainio@gmail.com>
881 2006-01-20 Ville Vainio <vivainio@gmail.com>
875
882
876 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
883 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
877 (%rehashdir, very useful, try it out) of how to extend ipython
884 (%rehashdir, very useful, try it out) of how to extend ipython
878 with new magics. Also added Extensions dir to pythonpath to make
885 with new magics. Also added Extensions dir to pythonpath to make
879 importing extensions easy.
886 importing extensions easy.
880
887
881 * %store now complains when trying to store interactively declared
888 * %store now complains when trying to store interactively declared
882 classes / instances of those classes.
889 classes / instances of those classes.
883
890
884 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
891 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
885 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
892 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
886 if they exist, and ipy_user_conf.py with some defaults is created for
893 if they exist, and ipy_user_conf.py with some defaults is created for
887 the user.
894 the user.
888
895
889 * Startup rehashing done by the config file, not InterpreterExec.
896 * Startup rehashing done by the config file, not InterpreterExec.
890 This means system commands are available even without selecting the
897 This means system commands are available even without selecting the
891 pysh profile. It's the sensible default after all.
898 pysh profile. It's the sensible default after all.
892
899
893 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
900 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
894
901
895 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
902 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
896 multiline code with autoindent on working. But I am really not
903 multiline code with autoindent on working. But I am really not
897 sure, so this needs more testing. Will commit a debug-enabled
904 sure, so this needs more testing. Will commit a debug-enabled
898 version for now, while I test it some more, so that Ville and
905 version for now, while I test it some more, so that Ville and
899 others may also catch any problems. Also made
906 others may also catch any problems. Also made
900 self.indent_current_str() a method, to ensure that there's no
907 self.indent_current_str() a method, to ensure that there's no
901 chance of the indent space count and the corresponding string
908 chance of the indent space count and the corresponding string
902 falling out of sync. All code needing the string should just call
909 falling out of sync. All code needing the string should just call
903 the method.
910 the method.
904
911
905 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
912 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
906
913
907 * IPython/Magic.py (magic_edit): fix check for when users don't
914 * IPython/Magic.py (magic_edit): fix check for when users don't
908 save their output files, the try/except was in the wrong section.
915 save their output files, the try/except was in the wrong section.
909
916
910 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
917 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
911
918
912 * IPython/Magic.py (magic_run): fix __file__ global missing from
919 * IPython/Magic.py (magic_run): fix __file__ global missing from
913 script's namespace when executed via %run. After a report by
920 script's namespace when executed via %run. After a report by
914 Vivian.
921 Vivian.
915
922
916 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
923 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
917 when using python 2.4. The parent constructor changed in 2.4, and
924 when using python 2.4. The parent constructor changed in 2.4, and
918 we need to track it directly (we can't call it, as it messes up
925 we need to track it directly (we can't call it, as it messes up
919 readline and tab-completion inside our pdb would stop working).
926 readline and tab-completion inside our pdb would stop working).
920 After a bug report by R. Bernstein <rocky-AT-panix.com>.
927 After a bug report by R. Bernstein <rocky-AT-panix.com>.
921
928
922 2006-01-16 Ville Vainio <vivainio@gmail.com>
929 2006-01-16 Ville Vainio <vivainio@gmail.com>
923
930
924 * Ipython/magic.py: Reverted back to old %edit functionality
931 * Ipython/magic.py: Reverted back to old %edit functionality
925 that returns file contents on exit.
932 that returns file contents on exit.
926
933
927 * IPython/path.py: Added Jason Orendorff's "path" module to
934 * IPython/path.py: Added Jason Orendorff's "path" module to
928 IPython tree, http://www.jorendorff.com/articles/python/path/.
935 IPython tree, http://www.jorendorff.com/articles/python/path/.
929 You can get path objects conveniently through %sc, and !!, e.g.:
936 You can get path objects conveniently through %sc, and !!, e.g.:
930 sc files=ls
937 sc files=ls
931 for p in files.paths: # or files.p
938 for p in files.paths: # or files.p
932 print p,p.mtime
939 print p,p.mtime
933
940
934 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
941 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
935 now work again without considering the exclusion regexp -
942 now work again without considering the exclusion regexp -
936 hence, things like ',foo my/path' turn to 'foo("my/path")'
943 hence, things like ',foo my/path' turn to 'foo("my/path")'
937 instead of syntax error.
944 instead of syntax error.
938
945
939
946
940 2006-01-14 Ville Vainio <vivainio@gmail.com>
947 2006-01-14 Ville Vainio <vivainio@gmail.com>
941
948
942 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
949 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
943 ipapi decorators for python 2.4 users, options() provides access to rc
950 ipapi decorators for python 2.4 users, options() provides access to rc
944 data.
951 data.
945
952
946 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
953 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
947 as path separators (even on Linux ;-). Space character after
954 as path separators (even on Linux ;-). Space character after
948 backslash (as yielded by tab completer) is still space;
955 backslash (as yielded by tab completer) is still space;
949 "%cd long\ name" works as expected.
956 "%cd long\ name" works as expected.
950
957
951 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
958 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
952 as "chain of command", with priority. API stays the same,
959 as "chain of command", with priority. API stays the same,
953 TryNext exception raised by a hook function signals that
960 TryNext exception raised by a hook function signals that
954 current hook failed and next hook should try handling it, as
961 current hook failed and next hook should try handling it, as
955 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
962 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
956 requested configurable display hook, which is now implemented.
963 requested configurable display hook, which is now implemented.
957
964
958 2006-01-13 Ville Vainio <vivainio@gmail.com>
965 2006-01-13 Ville Vainio <vivainio@gmail.com>
959
966
960 * IPython/platutils*.py: platform specific utility functions,
967 * IPython/platutils*.py: platform specific utility functions,
961 so far only set_term_title is implemented (change terminal
968 so far only set_term_title is implemented (change terminal
962 label in windowing systems). %cd now changes the title to
969 label in windowing systems). %cd now changes the title to
963 current dir.
970 current dir.
964
971
965 * IPython/Release.py: Added myself to "authors" list,
972 * IPython/Release.py: Added myself to "authors" list,
966 had to create new files.
973 had to create new files.
967
974
968 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
975 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
969 shell escape; not a known bug but had potential to be one in the
976 shell escape; not a known bug but had potential to be one in the
970 future.
977 future.
971
978
972 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
979 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
973 extension API for IPython! See the module for usage example. Fix
980 extension API for IPython! See the module for usage example. Fix
974 OInspect for docstring-less magic functions.
981 OInspect for docstring-less magic functions.
975
982
976
983
977 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
984 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
978
985
979 * IPython/iplib.py (raw_input): temporarily deactivate all
986 * IPython/iplib.py (raw_input): temporarily deactivate all
980 attempts at allowing pasting of code with autoindent on. It
987 attempts at allowing pasting of code with autoindent on. It
981 introduced bugs (reported by Prabhu) and I can't seem to find a
988 introduced bugs (reported by Prabhu) and I can't seem to find a
982 robust combination which works in all cases. Will have to revisit
989 robust combination which works in all cases. Will have to revisit
983 later.
990 later.
984
991
985 * IPython/genutils.py: remove isspace() function. We've dropped
992 * IPython/genutils.py: remove isspace() function. We've dropped
986 2.2 compatibility, so it's OK to use the string method.
993 2.2 compatibility, so it's OK to use the string method.
987
994
988 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
995 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
989
996
990 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
997 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
991 matching what NOT to autocall on, to include all python binary
998 matching what NOT to autocall on, to include all python binary
992 operators (including things like 'and', 'or', 'is' and 'in').
999 operators (including things like 'and', 'or', 'is' and 'in').
993 Prompted by a bug report on 'foo & bar', but I realized we had
1000 Prompted by a bug report on 'foo & bar', but I realized we had
994 many more potential bug cases with other operators. The regexp is
1001 many more potential bug cases with other operators. The regexp is
995 self.re_exclude_auto, it's fairly commented.
1002 self.re_exclude_auto, it's fairly commented.
996
1003
997 2006-01-12 Ville Vainio <vivainio@gmail.com>
1004 2006-01-12 Ville Vainio <vivainio@gmail.com>
998
1005
999 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1006 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1000 Prettified and hardened string/backslash quoting with ipsystem(),
1007 Prettified and hardened string/backslash quoting with ipsystem(),
1001 ipalias() and ipmagic(). Now even \ characters are passed to
1008 ipalias() and ipmagic(). Now even \ characters are passed to
1002 %magics, !shell escapes and aliases exactly as they are in the
1009 %magics, !shell escapes and aliases exactly as they are in the
1003 ipython command line. Should improve backslash experience,
1010 ipython command line. Should improve backslash experience,
1004 particularly in Windows (path delimiter for some commands that
1011 particularly in Windows (path delimiter for some commands that
1005 won't understand '/'), but Unix benefits as well (regexps). %cd
1012 won't understand '/'), but Unix benefits as well (regexps). %cd
1006 magic still doesn't support backslash path delimiters, though. Also
1013 magic still doesn't support backslash path delimiters, though. Also
1007 deleted all pretense of supporting multiline command strings in
1014 deleted all pretense of supporting multiline command strings in
1008 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1015 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1009
1016
1010 * doc/build_doc_instructions.txt added. Documentation on how to
1017 * doc/build_doc_instructions.txt added. Documentation on how to
1011 use doc/update_manual.py, added yesterday. Both files contributed
1018 use doc/update_manual.py, added yesterday. Both files contributed
1012 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1019 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1013 doc/*.sh for deprecation at a later date.
1020 doc/*.sh for deprecation at a later date.
1014
1021
1015 * /ipython.py Added ipython.py to root directory for
1022 * /ipython.py Added ipython.py to root directory for
1016 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1023 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1017 ipython.py) and development convenience (no need to keep doing
1024 ipython.py) and development convenience (no need to keep doing
1018 "setup.py install" between changes).
1025 "setup.py install" between changes).
1019
1026
1020 * Made ! and !! shell escapes work (again) in multiline expressions:
1027 * Made ! and !! shell escapes work (again) in multiline expressions:
1021 if 1:
1028 if 1:
1022 !ls
1029 !ls
1023 !!ls
1030 !!ls
1024
1031
1025 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1032 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1026
1033
1027 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1034 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1028 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1035 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1029 module in case-insensitive installation. Was causing crashes
1036 module in case-insensitive installation. Was causing crashes
1030 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1037 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1031
1038
1032 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1039 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1033 <marienz-AT-gentoo.org>, closes
1040 <marienz-AT-gentoo.org>, closes
1034 http://www.scipy.net/roundup/ipython/issue51.
1041 http://www.scipy.net/roundup/ipython/issue51.
1035
1042
1036 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1043 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1037
1044
1038 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1045 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1039 problem of excessive CPU usage under *nix and keyboard lag under
1046 problem of excessive CPU usage under *nix and keyboard lag under
1040 win32.
1047 win32.
1041
1048
1042 2006-01-10 *** Released version 0.7.0
1049 2006-01-10 *** Released version 0.7.0
1043
1050
1044 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1051 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1045
1052
1046 * IPython/Release.py (revision): tag version number to 0.7.0,
1053 * IPython/Release.py (revision): tag version number to 0.7.0,
1047 ready for release.
1054 ready for release.
1048
1055
1049 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1056 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1050 it informs the user of the name of the temp. file used. This can
1057 it informs the user of the name of the temp. file used. This can
1051 help if you decide later to reuse that same file, so you know
1058 help if you decide later to reuse that same file, so you know
1052 where to copy the info from.
1059 where to copy the info from.
1053
1060
1054 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1061 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1055
1062
1056 * setup_bdist_egg.py: little script to build an egg. Added
1063 * setup_bdist_egg.py: little script to build an egg. Added
1057 support in the release tools as well.
1064 support in the release tools as well.
1058
1065
1059 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1066 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1060
1067
1061 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1068 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1062 version selection (new -wxversion command line and ipythonrc
1069 version selection (new -wxversion command line and ipythonrc
1063 parameter). Patch contributed by Arnd Baecker
1070 parameter). Patch contributed by Arnd Baecker
1064 <arnd.baecker-AT-web.de>.
1071 <arnd.baecker-AT-web.de>.
1065
1072
1066 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1073 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1067 embedded instances, for variables defined at the interactive
1074 embedded instances, for variables defined at the interactive
1068 prompt of the embedded ipython. Reported by Arnd.
1075 prompt of the embedded ipython. Reported by Arnd.
1069
1076
1070 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1077 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1071 it can be used as a (stateful) toggle, or with a direct parameter.
1078 it can be used as a (stateful) toggle, or with a direct parameter.
1072
1079
1073 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1080 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1074 could be triggered in certain cases and cause the traceback
1081 could be triggered in certain cases and cause the traceback
1075 printer not to work.
1082 printer not to work.
1076
1083
1077 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1084 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1078
1085
1079 * IPython/iplib.py (_should_recompile): Small fix, closes
1086 * IPython/iplib.py (_should_recompile): Small fix, closes
1080 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1087 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1081
1088
1082 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1089 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1083
1090
1084 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1091 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1085 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1092 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1086 Moad for help with tracking it down.
1093 Moad for help with tracking it down.
1087
1094
1088 * IPython/iplib.py (handle_auto): fix autocall handling for
1095 * IPython/iplib.py (handle_auto): fix autocall handling for
1089 objects which support BOTH __getitem__ and __call__ (so that f [x]
1096 objects which support BOTH __getitem__ and __call__ (so that f [x]
1090 is left alone, instead of becoming f([x]) automatically).
1097 is left alone, instead of becoming f([x]) automatically).
1091
1098
1092 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1099 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1093 Ville's patch.
1100 Ville's patch.
1094
1101
1095 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1102 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1096
1103
1097 * IPython/iplib.py (handle_auto): changed autocall semantics to
1104 * IPython/iplib.py (handle_auto): changed autocall semantics to
1098 include 'smart' mode, where the autocall transformation is NOT
1105 include 'smart' mode, where the autocall transformation is NOT
1099 applied if there are no arguments on the line. This allows you to
1106 applied if there are no arguments on the line. This allows you to
1100 just type 'foo' if foo is a callable to see its internal form,
1107 just type 'foo' if foo is a callable to see its internal form,
1101 instead of having it called with no arguments (typically a
1108 instead of having it called with no arguments (typically a
1102 mistake). The old 'full' autocall still exists: for that, you
1109 mistake). The old 'full' autocall still exists: for that, you
1103 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1110 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1104
1111
1105 * IPython/completer.py (Completer.attr_matches): add
1112 * IPython/completer.py (Completer.attr_matches): add
1106 tab-completion support for Enthoughts' traits. After a report by
1113 tab-completion support for Enthoughts' traits. After a report by
1107 Arnd and a patch by Prabhu.
1114 Arnd and a patch by Prabhu.
1108
1115
1109 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1116 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1110
1117
1111 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1118 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1112 Schmolck's patch to fix inspect.getinnerframes().
1119 Schmolck's patch to fix inspect.getinnerframes().
1113
1120
1114 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1121 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1115 for embedded instances, regarding handling of namespaces and items
1122 for embedded instances, regarding handling of namespaces and items
1116 added to the __builtin__ one. Multiple embedded instances and
1123 added to the __builtin__ one. Multiple embedded instances and
1117 recursive embeddings should work better now (though I'm not sure
1124 recursive embeddings should work better now (though I'm not sure
1118 I've got all the corner cases fixed, that code is a bit of a brain
1125 I've got all the corner cases fixed, that code is a bit of a brain
1119 twister).
1126 twister).
1120
1127
1121 * IPython/Magic.py (magic_edit): added support to edit in-memory
1128 * IPython/Magic.py (magic_edit): added support to edit in-memory
1122 macros (automatically creates the necessary temp files). %edit
1129 macros (automatically creates the necessary temp files). %edit
1123 also doesn't return the file contents anymore, it's just noise.
1130 also doesn't return the file contents anymore, it's just noise.
1124
1131
1125 * IPython/completer.py (Completer.attr_matches): revert change to
1132 * IPython/completer.py (Completer.attr_matches): revert change to
1126 complete only on attributes listed in __all__. I realized it
1133 complete only on attributes listed in __all__. I realized it
1127 cripples the tab-completion system as a tool for exploring the
1134 cripples the tab-completion system as a tool for exploring the
1128 internals of unknown libraries (it renders any non-__all__
1135 internals of unknown libraries (it renders any non-__all__
1129 attribute off-limits). I got bit by this when trying to see
1136 attribute off-limits). I got bit by this when trying to see
1130 something inside the dis module.
1137 something inside the dis module.
1131
1138
1132 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1139 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1133
1140
1134 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1141 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1135 namespace for users and extension writers to hold data in. This
1142 namespace for users and extension writers to hold data in. This
1136 follows the discussion in
1143 follows the discussion in
1137 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1144 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1138
1145
1139 * IPython/completer.py (IPCompleter.complete): small patch to help
1146 * IPython/completer.py (IPCompleter.complete): small patch to help
1140 tab-completion under Emacs, after a suggestion by John Barnard
1147 tab-completion under Emacs, after a suggestion by John Barnard
1141 <barnarj-AT-ccf.org>.
1148 <barnarj-AT-ccf.org>.
1142
1149
1143 * IPython/Magic.py (Magic.extract_input_slices): added support for
1150 * IPython/Magic.py (Magic.extract_input_slices): added support for
1144 the slice notation in magics to use N-M to represent numbers N...M
1151 the slice notation in magics to use N-M to represent numbers N...M
1145 (closed endpoints). This is used by %macro and %save.
1152 (closed endpoints). This is used by %macro and %save.
1146
1153
1147 * IPython/completer.py (Completer.attr_matches): for modules which
1154 * IPython/completer.py (Completer.attr_matches): for modules which
1148 define __all__, complete only on those. After a patch by Jeffrey
1155 define __all__, complete only on those. After a patch by Jeffrey
1149 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1156 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1150 speed up this routine.
1157 speed up this routine.
1151
1158
1152 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1159 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1153 don't know if this is the end of it, but the behavior now is
1160 don't know if this is the end of it, but the behavior now is
1154 certainly much more correct. Note that coupled with macros,
1161 certainly much more correct. Note that coupled with macros,
1155 slightly surprising (at first) behavior may occur: a macro will in
1162 slightly surprising (at first) behavior may occur: a macro will in
1156 general expand to multiple lines of input, so upon exiting, the
1163 general expand to multiple lines of input, so upon exiting, the
1157 in/out counters will both be bumped by the corresponding amount
1164 in/out counters will both be bumped by the corresponding amount
1158 (as if the macro's contents had been typed interactively). Typing
1165 (as if the macro's contents had been typed interactively). Typing
1159 %hist will reveal the intermediate (silently processed) lines.
1166 %hist will reveal the intermediate (silently processed) lines.
1160
1167
1161 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1168 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1162 pickle to fail (%run was overwriting __main__ and not restoring
1169 pickle to fail (%run was overwriting __main__ and not restoring
1163 it, but pickle relies on __main__ to operate).
1170 it, but pickle relies on __main__ to operate).
1164
1171
1165 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1172 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1166 using properties, but forgot to make the main InteractiveShell
1173 using properties, but forgot to make the main InteractiveShell
1167 class a new-style class. Properties fail silently, and
1174 class a new-style class. Properties fail silently, and
1168 mysteriously, with old-style class (getters work, but
1175 mysteriously, with old-style class (getters work, but
1169 setters don't do anything).
1176 setters don't do anything).
1170
1177
1171 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1178 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1172
1179
1173 * IPython/Magic.py (magic_history): fix history reporting bug (I
1180 * IPython/Magic.py (magic_history): fix history reporting bug (I
1174 know some nasties are still there, I just can't seem to find a
1181 know some nasties are still there, I just can't seem to find a
1175 reproducible test case to track them down; the input history is
1182 reproducible test case to track them down; the input history is
1176 falling out of sync...)
1183 falling out of sync...)
1177
1184
1178 * IPython/iplib.py (handle_shell_escape): fix bug where both
1185 * IPython/iplib.py (handle_shell_escape): fix bug where both
1179 aliases and system accesses where broken for indented code (such
1186 aliases and system accesses where broken for indented code (such
1180 as loops).
1187 as loops).
1181
1188
1182 * IPython/genutils.py (shell): fix small but critical bug for
1189 * IPython/genutils.py (shell): fix small but critical bug for
1183 win32 system access.
1190 win32 system access.
1184
1191
1185 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1192 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1186
1193
1187 * IPython/iplib.py (showtraceback): remove use of the
1194 * IPython/iplib.py (showtraceback): remove use of the
1188 sys.last_{type/value/traceback} structures, which are non
1195 sys.last_{type/value/traceback} structures, which are non
1189 thread-safe.
1196 thread-safe.
1190 (_prefilter): change control flow to ensure that we NEVER
1197 (_prefilter): change control flow to ensure that we NEVER
1191 introspect objects when autocall is off. This will guarantee that
1198 introspect objects when autocall is off. This will guarantee that
1192 having an input line of the form 'x.y', where access to attribute
1199 having an input line of the form 'x.y', where access to attribute
1193 'y' has side effects, doesn't trigger the side effect TWICE. It
1200 'y' has side effects, doesn't trigger the side effect TWICE. It
1194 is important to note that, with autocall on, these side effects
1201 is important to note that, with autocall on, these side effects
1195 can still happen.
1202 can still happen.
1196 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1203 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1197 trio. IPython offers these three kinds of special calls which are
1204 trio. IPython offers these three kinds of special calls which are
1198 not python code, and it's a good thing to have their call method
1205 not python code, and it's a good thing to have their call method
1199 be accessible as pure python functions (not just special syntax at
1206 be accessible as pure python functions (not just special syntax at
1200 the command line). It gives us a better internal implementation
1207 the command line). It gives us a better internal implementation
1201 structure, as well as exposing these for user scripting more
1208 structure, as well as exposing these for user scripting more
1202 cleanly.
1209 cleanly.
1203
1210
1204 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1211 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1205 file. Now that they'll be more likely to be used with the
1212 file. Now that they'll be more likely to be used with the
1206 persistance system (%store), I want to make sure their module path
1213 persistance system (%store), I want to make sure their module path
1207 doesn't change in the future, so that we don't break things for
1214 doesn't change in the future, so that we don't break things for
1208 users' persisted data.
1215 users' persisted data.
1209
1216
1210 * IPython/iplib.py (autoindent_update): move indentation
1217 * IPython/iplib.py (autoindent_update): move indentation
1211 management into the _text_ processing loop, not the keyboard
1218 management into the _text_ processing loop, not the keyboard
1212 interactive one. This is necessary to correctly process non-typed
1219 interactive one. This is necessary to correctly process non-typed
1213 multiline input (such as macros).
1220 multiline input (such as macros).
1214
1221
1215 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1222 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1216 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1223 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1217 which was producing problems in the resulting manual.
1224 which was producing problems in the resulting manual.
1218 (magic_whos): improve reporting of instances (show their class,
1225 (magic_whos): improve reporting of instances (show their class,
1219 instead of simply printing 'instance' which isn't terribly
1226 instead of simply printing 'instance' which isn't terribly
1220 informative).
1227 informative).
1221
1228
1222 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1229 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1223 (minor mods) to support network shares under win32.
1230 (minor mods) to support network shares under win32.
1224
1231
1225 * IPython/winconsole.py (get_console_size): add new winconsole
1232 * IPython/winconsole.py (get_console_size): add new winconsole
1226 module and fixes to page_dumb() to improve its behavior under
1233 module and fixes to page_dumb() to improve its behavior under
1227 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1234 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1228
1235
1229 * IPython/Magic.py (Macro): simplified Macro class to just
1236 * IPython/Magic.py (Macro): simplified Macro class to just
1230 subclass list. We've had only 2.2 compatibility for a very long
1237 subclass list. We've had only 2.2 compatibility for a very long
1231 time, yet I was still avoiding subclassing the builtin types. No
1238 time, yet I was still avoiding subclassing the builtin types. No
1232 more (I'm also starting to use properties, though I won't shift to
1239 more (I'm also starting to use properties, though I won't shift to
1233 2.3-specific features quite yet).
1240 2.3-specific features quite yet).
1234 (magic_store): added Ville's patch for lightweight variable
1241 (magic_store): added Ville's patch for lightweight variable
1235 persistence, after a request on the user list by Matt Wilkie
1242 persistence, after a request on the user list by Matt Wilkie
1236 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1243 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1237 details.
1244 details.
1238
1245
1239 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1246 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1240 changed the default logfile name from 'ipython.log' to
1247 changed the default logfile name from 'ipython.log' to
1241 'ipython_log.py'. These logs are real python files, and now that
1248 'ipython_log.py'. These logs are real python files, and now that
1242 we have much better multiline support, people are more likely to
1249 we have much better multiline support, people are more likely to
1243 want to use them as such. Might as well name them correctly.
1250 want to use them as such. Might as well name them correctly.
1244
1251
1245 * IPython/Magic.py: substantial cleanup. While we can't stop
1252 * IPython/Magic.py: substantial cleanup. While we can't stop
1246 using magics as mixins, due to the existing customizations 'out
1253 using magics as mixins, due to the existing customizations 'out
1247 there' which rely on the mixin naming conventions, at least I
1254 there' which rely on the mixin naming conventions, at least I
1248 cleaned out all cross-class name usage. So once we are OK with
1255 cleaned out all cross-class name usage. So once we are OK with
1249 breaking compatibility, the two systems can be separated.
1256 breaking compatibility, the two systems can be separated.
1250
1257
1251 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1258 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1252 anymore, and the class is a fair bit less hideous as well. New
1259 anymore, and the class is a fair bit less hideous as well. New
1253 features were also introduced: timestamping of input, and logging
1260 features were also introduced: timestamping of input, and logging
1254 of output results. These are user-visible with the -t and -o
1261 of output results. These are user-visible with the -t and -o
1255 options to %logstart. Closes
1262 options to %logstart. Closes
1256 http://www.scipy.net/roundup/ipython/issue11 and a request by
1263 http://www.scipy.net/roundup/ipython/issue11 and a request by
1257 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1264 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1258
1265
1259 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1266 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1260
1267
1261 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1268 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1262 better handle backslashes in paths. See the thread 'More Windows
1269 better handle backslashes in paths. See the thread 'More Windows
1263 questions part 2 - \/ characters revisited' on the iypthon user
1270 questions part 2 - \/ characters revisited' on the iypthon user
1264 list:
1271 list:
1265 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1272 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1266
1273
1267 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1274 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1268
1275
1269 (InteractiveShell.__init__): change threaded shells to not use the
1276 (InteractiveShell.__init__): change threaded shells to not use the
1270 ipython crash handler. This was causing more problems than not,
1277 ipython crash handler. This was causing more problems than not,
1271 as exceptions in the main thread (GUI code, typically) would
1278 as exceptions in the main thread (GUI code, typically) would
1272 always show up as a 'crash', when they really weren't.
1279 always show up as a 'crash', when they really weren't.
1273
1280
1274 The colors and exception mode commands (%colors/%xmode) have been
1281 The colors and exception mode commands (%colors/%xmode) have been
1275 synchronized to also take this into account, so users can get
1282 synchronized to also take this into account, so users can get
1276 verbose exceptions for their threaded code as well. I also added
1283 verbose exceptions for their threaded code as well. I also added
1277 support for activating pdb inside this exception handler as well,
1284 support for activating pdb inside this exception handler as well,
1278 so now GUI authors can use IPython's enhanced pdb at runtime.
1285 so now GUI authors can use IPython's enhanced pdb at runtime.
1279
1286
1280 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1287 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1281 true by default, and add it to the shipped ipythonrc file. Since
1288 true by default, and add it to the shipped ipythonrc file. Since
1282 this asks the user before proceeding, I think it's OK to make it
1289 this asks the user before proceeding, I think it's OK to make it
1283 true by default.
1290 true by default.
1284
1291
1285 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1292 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1286 of the previous special-casing of input in the eval loop. I think
1293 of the previous special-casing of input in the eval loop. I think
1287 this is cleaner, as they really are commands and shouldn't have
1294 this is cleaner, as they really are commands and shouldn't have
1288 a special role in the middle of the core code.
1295 a special role in the middle of the core code.
1289
1296
1290 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1297 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1291
1298
1292 * IPython/iplib.py (edit_syntax_error): added support for
1299 * IPython/iplib.py (edit_syntax_error): added support for
1293 automatically reopening the editor if the file had a syntax error
1300 automatically reopening the editor if the file had a syntax error
1294 in it. Thanks to scottt who provided the patch at:
1301 in it. Thanks to scottt who provided the patch at:
1295 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1302 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1296 version committed).
1303 version committed).
1297
1304
1298 * IPython/iplib.py (handle_normal): add suport for multi-line
1305 * IPython/iplib.py (handle_normal): add suport for multi-line
1299 input with emtpy lines. This fixes
1306 input with emtpy lines. This fixes
1300 http://www.scipy.net/roundup/ipython/issue43 and a similar
1307 http://www.scipy.net/roundup/ipython/issue43 and a similar
1301 discussion on the user list.
1308 discussion on the user list.
1302
1309
1303 WARNING: a behavior change is necessarily introduced to support
1310 WARNING: a behavior change is necessarily introduced to support
1304 blank lines: now a single blank line with whitespace does NOT
1311 blank lines: now a single blank line with whitespace does NOT
1305 break the input loop, which means that when autoindent is on, by
1312 break the input loop, which means that when autoindent is on, by
1306 default hitting return on the next (indented) line does NOT exit.
1313 default hitting return on the next (indented) line does NOT exit.
1307
1314
1308 Instead, to exit a multiline input you can either have:
1315 Instead, to exit a multiline input you can either have:
1309
1316
1310 - TWO whitespace lines (just hit return again), or
1317 - TWO whitespace lines (just hit return again), or
1311 - a single whitespace line of a different length than provided
1318 - a single whitespace line of a different length than provided
1312 by the autoindent (add or remove a space).
1319 by the autoindent (add or remove a space).
1313
1320
1314 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1321 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1315 module to better organize all readline-related functionality.
1322 module to better organize all readline-related functionality.
1316 I've deleted FlexCompleter and put all completion clases here.
1323 I've deleted FlexCompleter and put all completion clases here.
1317
1324
1318 * IPython/iplib.py (raw_input): improve indentation management.
1325 * IPython/iplib.py (raw_input): improve indentation management.
1319 It is now possible to paste indented code with autoindent on, and
1326 It is now possible to paste indented code with autoindent on, and
1320 the code is interpreted correctly (though it still looks bad on
1327 the code is interpreted correctly (though it still looks bad on
1321 screen, due to the line-oriented nature of ipython).
1328 screen, due to the line-oriented nature of ipython).
1322 (MagicCompleter.complete): change behavior so that a TAB key on an
1329 (MagicCompleter.complete): change behavior so that a TAB key on an
1323 otherwise empty line actually inserts a tab, instead of completing
1330 otherwise empty line actually inserts a tab, instead of completing
1324 on the entire global namespace. This makes it easier to use the
1331 on the entire global namespace. This makes it easier to use the
1325 TAB key for indentation. After a request by Hans Meine
1332 TAB key for indentation. After a request by Hans Meine
1326 <hans_meine-AT-gmx.net>
1333 <hans_meine-AT-gmx.net>
1327 (_prefilter): add support so that typing plain 'exit' or 'quit'
1334 (_prefilter): add support so that typing plain 'exit' or 'quit'
1328 does a sensible thing. Originally I tried to deviate as little as
1335 does a sensible thing. Originally I tried to deviate as little as
1329 possible from the default python behavior, but even that one may
1336 possible from the default python behavior, but even that one may
1330 change in this direction (thread on python-dev to that effect).
1337 change in this direction (thread on python-dev to that effect).
1331 Regardless, ipython should do the right thing even if CPython's
1338 Regardless, ipython should do the right thing even if CPython's
1332 '>>>' prompt doesn't.
1339 '>>>' prompt doesn't.
1333 (InteractiveShell): removed subclassing code.InteractiveConsole
1340 (InteractiveShell): removed subclassing code.InteractiveConsole
1334 class. By now we'd overridden just about all of its methods: I've
1341 class. By now we'd overridden just about all of its methods: I've
1335 copied the remaining two over, and now ipython is a standalone
1342 copied the remaining two over, and now ipython is a standalone
1336 class. This will provide a clearer picture for the chainsaw
1343 class. This will provide a clearer picture for the chainsaw
1337 branch refactoring.
1344 branch refactoring.
1338
1345
1339 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1346 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1340
1347
1341 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1348 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1342 failures for objects which break when dir() is called on them.
1349 failures for objects which break when dir() is called on them.
1343
1350
1344 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1351 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1345 distinct local and global namespaces in the completer API. This
1352 distinct local and global namespaces in the completer API. This
1346 change allows us to properly handle completion with distinct
1353 change allows us to properly handle completion with distinct
1347 scopes, including in embedded instances (this had never really
1354 scopes, including in embedded instances (this had never really
1348 worked correctly).
1355 worked correctly).
1349
1356
1350 Note: this introduces a change in the constructor for
1357 Note: this introduces a change in the constructor for
1351 MagicCompleter, as a new global_namespace parameter is now the
1358 MagicCompleter, as a new global_namespace parameter is now the
1352 second argument (the others were bumped one position).
1359 second argument (the others were bumped one position).
1353
1360
1354 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1361 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1355
1362
1356 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1363 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1357 embedded instances (which can be done now thanks to Vivian's
1364 embedded instances (which can be done now thanks to Vivian's
1358 frame-handling fixes for pdb).
1365 frame-handling fixes for pdb).
1359 (InteractiveShell.__init__): Fix namespace handling problem in
1366 (InteractiveShell.__init__): Fix namespace handling problem in
1360 embedded instances. We were overwriting __main__ unconditionally,
1367 embedded instances. We were overwriting __main__ unconditionally,
1361 and this should only be done for 'full' (non-embedded) IPython;
1368 and this should only be done for 'full' (non-embedded) IPython;
1362 embedded instances must respect the caller's __main__. Thanks to
1369 embedded instances must respect the caller's __main__. Thanks to
1363 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1370 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1364
1371
1365 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1372 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1366
1373
1367 * setup.py: added download_url to setup(). This registers the
1374 * setup.py: added download_url to setup(). This registers the
1368 download address at PyPI, which is not only useful to humans
1375 download address at PyPI, which is not only useful to humans
1369 browsing the site, but is also picked up by setuptools (the Eggs
1376 browsing the site, but is also picked up by setuptools (the Eggs
1370 machinery). Thanks to Ville and R. Kern for the info/discussion
1377 machinery). Thanks to Ville and R. Kern for the info/discussion
1371 on this.
1378 on this.
1372
1379
1373 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1380 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1374
1381
1375 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1382 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1376 This brings a lot of nice functionality to the pdb mode, which now
1383 This brings a lot of nice functionality to the pdb mode, which now
1377 has tab-completion, syntax highlighting, and better stack handling
1384 has tab-completion, syntax highlighting, and better stack handling
1378 than before. Many thanks to Vivian De Smedt
1385 than before. Many thanks to Vivian De Smedt
1379 <vivian-AT-vdesmedt.com> for the original patches.
1386 <vivian-AT-vdesmedt.com> for the original patches.
1380
1387
1381 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1388 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1382
1389
1383 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1390 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1384 sequence to consistently accept the banner argument. The
1391 sequence to consistently accept the banner argument. The
1385 inconsistency was tripping SAGE, thanks to Gary Zablackis
1392 inconsistency was tripping SAGE, thanks to Gary Zablackis
1386 <gzabl-AT-yahoo.com> for the report.
1393 <gzabl-AT-yahoo.com> for the report.
1387
1394
1388 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1395 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1389
1396
1390 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1397 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1391 Fix bug where a naked 'alias' call in the ipythonrc file would
1398 Fix bug where a naked 'alias' call in the ipythonrc file would
1392 cause a crash. Bug reported by Jorgen Stenarson.
1399 cause a crash. Bug reported by Jorgen Stenarson.
1393
1400
1394 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1401 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1395
1402
1396 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1403 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1397 startup time.
1404 startup time.
1398
1405
1399 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1406 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1400 instances had introduced a bug with globals in normal code. Now
1407 instances had introduced a bug with globals in normal code. Now
1401 it's working in all cases.
1408 it's working in all cases.
1402
1409
1403 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1410 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1404 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1411 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1405 has been introduced to set the default case sensitivity of the
1412 has been introduced to set the default case sensitivity of the
1406 searches. Users can still select either mode at runtime on a
1413 searches. Users can still select either mode at runtime on a
1407 per-search basis.
1414 per-search basis.
1408
1415
1409 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1416 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1410
1417
1411 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1418 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1412 attributes in wildcard searches for subclasses. Modified version
1419 attributes in wildcard searches for subclasses. Modified version
1413 of a patch by Jorgen.
1420 of a patch by Jorgen.
1414
1421
1415 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1422 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1416
1423
1417 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1424 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1418 embedded instances. I added a user_global_ns attribute to the
1425 embedded instances. I added a user_global_ns attribute to the
1419 InteractiveShell class to handle this.
1426 InteractiveShell class to handle this.
1420
1427
1421 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1428 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1422
1429
1423 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1430 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1424 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1431 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1425 (reported under win32, but may happen also in other platforms).
1432 (reported under win32, but may happen also in other platforms).
1426 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1433 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1427
1434
1428 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1435 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1429
1436
1430 * IPython/Magic.py (magic_psearch): new support for wildcard
1437 * IPython/Magic.py (magic_psearch): new support for wildcard
1431 patterns. Now, typing ?a*b will list all names which begin with a
1438 patterns. Now, typing ?a*b will list all names which begin with a
1432 and end in b, for example. The %psearch magic has full
1439 and end in b, for example. The %psearch magic has full
1433 docstrings. Many thanks to JΓΆrgen Stenarson
1440 docstrings. Many thanks to JΓΆrgen Stenarson
1434 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1441 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1435 implementing this functionality.
1442 implementing this functionality.
1436
1443
1437 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1444 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1438
1445
1439 * Manual: fixed long-standing annoyance of double-dashes (as in
1446 * Manual: fixed long-standing annoyance of double-dashes (as in
1440 --prefix=~, for example) being stripped in the HTML version. This
1447 --prefix=~, for example) being stripped in the HTML version. This
1441 is a latex2html bug, but a workaround was provided. Many thanks
1448 is a latex2html bug, but a workaround was provided. Many thanks
1442 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1449 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1443 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1450 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1444 rolling. This seemingly small issue had tripped a number of users
1451 rolling. This seemingly small issue had tripped a number of users
1445 when first installing, so I'm glad to see it gone.
1452 when first installing, so I'm glad to see it gone.
1446
1453
1447 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1454 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1448
1455
1449 * IPython/Extensions/numeric_formats.py: fix missing import,
1456 * IPython/Extensions/numeric_formats.py: fix missing import,
1450 reported by Stephen Walton.
1457 reported by Stephen Walton.
1451
1458
1452 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1459 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1453
1460
1454 * IPython/demo.py: finish demo module, fully documented now.
1461 * IPython/demo.py: finish demo module, fully documented now.
1455
1462
1456 * IPython/genutils.py (file_read): simple little utility to read a
1463 * IPython/genutils.py (file_read): simple little utility to read a
1457 file and ensure it's closed afterwards.
1464 file and ensure it's closed afterwards.
1458
1465
1459 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1466 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1460
1467
1461 * IPython/demo.py (Demo.__init__): added support for individually
1468 * IPython/demo.py (Demo.__init__): added support for individually
1462 tagging blocks for automatic execution.
1469 tagging blocks for automatic execution.
1463
1470
1464 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1471 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1465 syntax-highlighted python sources, requested by John.
1472 syntax-highlighted python sources, requested by John.
1466
1473
1467 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1474 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1468
1475
1469 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1476 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1470 finishing.
1477 finishing.
1471
1478
1472 * IPython/genutils.py (shlex_split): moved from Magic to here,
1479 * IPython/genutils.py (shlex_split): moved from Magic to here,
1473 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1480 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1474
1481
1475 * IPython/demo.py (Demo.__init__): added support for silent
1482 * IPython/demo.py (Demo.__init__): added support for silent
1476 blocks, improved marks as regexps, docstrings written.
1483 blocks, improved marks as regexps, docstrings written.
1477 (Demo.__init__): better docstring, added support for sys.argv.
1484 (Demo.__init__): better docstring, added support for sys.argv.
1478
1485
1479 * IPython/genutils.py (marquee): little utility used by the demo
1486 * IPython/genutils.py (marquee): little utility used by the demo
1480 code, handy in general.
1487 code, handy in general.
1481
1488
1482 * IPython/demo.py (Demo.__init__): new class for interactive
1489 * IPython/demo.py (Demo.__init__): new class for interactive
1483 demos. Not documented yet, I just wrote it in a hurry for
1490 demos. Not documented yet, I just wrote it in a hurry for
1484 scipy'05. Will docstring later.
1491 scipy'05. Will docstring later.
1485
1492
1486 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1493 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1487
1494
1488 * IPython/Shell.py (sigint_handler): Drastic simplification which
1495 * IPython/Shell.py (sigint_handler): Drastic simplification which
1489 also seems to make Ctrl-C work correctly across threads! This is
1496 also seems to make Ctrl-C work correctly across threads! This is
1490 so simple, that I can't beleive I'd missed it before. Needs more
1497 so simple, that I can't beleive I'd missed it before. Needs more
1491 testing, though.
1498 testing, though.
1492 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1499 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1493 like this before...
1500 like this before...
1494
1501
1495 * IPython/genutils.py (get_home_dir): add protection against
1502 * IPython/genutils.py (get_home_dir): add protection against
1496 non-dirs in win32 registry.
1503 non-dirs in win32 registry.
1497
1504
1498 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1505 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1499 bug where dict was mutated while iterating (pysh crash).
1506 bug where dict was mutated while iterating (pysh crash).
1500
1507
1501 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1508 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1502
1509
1503 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1510 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1504 spurious newlines added by this routine. After a report by
1511 spurious newlines added by this routine. After a report by
1505 F. Mantegazza.
1512 F. Mantegazza.
1506
1513
1507 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1514 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1508
1515
1509 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1516 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1510 calls. These were a leftover from the GTK 1.x days, and can cause
1517 calls. These were a leftover from the GTK 1.x days, and can cause
1511 problems in certain cases (after a report by John Hunter).
1518 problems in certain cases (after a report by John Hunter).
1512
1519
1513 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1520 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1514 os.getcwd() fails at init time. Thanks to patch from David Remahl
1521 os.getcwd() fails at init time. Thanks to patch from David Remahl
1515 <chmod007-AT-mac.com>.
1522 <chmod007-AT-mac.com>.
1516 (InteractiveShell.__init__): prevent certain special magics from
1523 (InteractiveShell.__init__): prevent certain special magics from
1517 being shadowed by aliases. Closes
1524 being shadowed by aliases. Closes
1518 http://www.scipy.net/roundup/ipython/issue41.
1525 http://www.scipy.net/roundup/ipython/issue41.
1519
1526
1520 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1527 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1521
1528
1522 * IPython/iplib.py (InteractiveShell.complete): Added new
1529 * IPython/iplib.py (InteractiveShell.complete): Added new
1523 top-level completion method to expose the completion mechanism
1530 top-level completion method to expose the completion mechanism
1524 beyond readline-based environments.
1531 beyond readline-based environments.
1525
1532
1526 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1533 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1527
1534
1528 * tools/ipsvnc (svnversion): fix svnversion capture.
1535 * tools/ipsvnc (svnversion): fix svnversion capture.
1529
1536
1530 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1537 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1531 attribute to self, which was missing. Before, it was set by a
1538 attribute to self, which was missing. Before, it was set by a
1532 routine which in certain cases wasn't being called, so the
1539 routine which in certain cases wasn't being called, so the
1533 instance could end up missing the attribute. This caused a crash.
1540 instance could end up missing the attribute. This caused a crash.
1534 Closes http://www.scipy.net/roundup/ipython/issue40.
1541 Closes http://www.scipy.net/roundup/ipython/issue40.
1535
1542
1536 2005-08-16 Fernando Perez <fperez@colorado.edu>
1543 2005-08-16 Fernando Perez <fperez@colorado.edu>
1537
1544
1538 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1545 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1539 contains non-string attribute. Closes
1546 contains non-string attribute. Closes
1540 http://www.scipy.net/roundup/ipython/issue38.
1547 http://www.scipy.net/roundup/ipython/issue38.
1541
1548
1542 2005-08-14 Fernando Perez <fperez@colorado.edu>
1549 2005-08-14 Fernando Perez <fperez@colorado.edu>
1543
1550
1544 * tools/ipsvnc: Minor improvements, to add changeset info.
1551 * tools/ipsvnc: Minor improvements, to add changeset info.
1545
1552
1546 2005-08-12 Fernando Perez <fperez@colorado.edu>
1553 2005-08-12 Fernando Perez <fperez@colorado.edu>
1547
1554
1548 * IPython/iplib.py (runsource): remove self.code_to_run_src
1555 * IPython/iplib.py (runsource): remove self.code_to_run_src
1549 attribute. I realized this is nothing more than
1556 attribute. I realized this is nothing more than
1550 '\n'.join(self.buffer), and having the same data in two different
1557 '\n'.join(self.buffer), and having the same data in two different
1551 places is just asking for synchronization bugs. This may impact
1558 places is just asking for synchronization bugs. This may impact
1552 people who have custom exception handlers, so I need to warn
1559 people who have custom exception handlers, so I need to warn
1553 ipython-dev about it (F. Mantegazza may use them).
1560 ipython-dev about it (F. Mantegazza may use them).
1554
1561
1555 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1562 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1556
1563
1557 * IPython/genutils.py: fix 2.2 compatibility (generators)
1564 * IPython/genutils.py: fix 2.2 compatibility (generators)
1558
1565
1559 2005-07-18 Fernando Perez <fperez@colorado.edu>
1566 2005-07-18 Fernando Perez <fperez@colorado.edu>
1560
1567
1561 * IPython/genutils.py (get_home_dir): fix to help users with
1568 * IPython/genutils.py (get_home_dir): fix to help users with
1562 invalid $HOME under win32.
1569 invalid $HOME under win32.
1563
1570
1564 2005-07-17 Fernando Perez <fperez@colorado.edu>
1571 2005-07-17 Fernando Perez <fperez@colorado.edu>
1565
1572
1566 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1573 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1567 some old hacks and clean up a bit other routines; code should be
1574 some old hacks and clean up a bit other routines; code should be
1568 simpler and a bit faster.
1575 simpler and a bit faster.
1569
1576
1570 * IPython/iplib.py (interact): removed some last-resort attempts
1577 * IPython/iplib.py (interact): removed some last-resort attempts
1571 to survive broken stdout/stderr. That code was only making it
1578 to survive broken stdout/stderr. That code was only making it
1572 harder to abstract out the i/o (necessary for gui integration),
1579 harder to abstract out the i/o (necessary for gui integration),
1573 and the crashes it could prevent were extremely rare in practice
1580 and the crashes it could prevent were extremely rare in practice
1574 (besides being fully user-induced in a pretty violent manner).
1581 (besides being fully user-induced in a pretty violent manner).
1575
1582
1576 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1583 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1577 Nothing major yet, but the code is simpler to read; this should
1584 Nothing major yet, but the code is simpler to read; this should
1578 make it easier to do more serious modifications in the future.
1585 make it easier to do more serious modifications in the future.
1579
1586
1580 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1587 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1581 which broke in .15 (thanks to a report by Ville).
1588 which broke in .15 (thanks to a report by Ville).
1582
1589
1583 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1590 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1584 be quite correct, I know next to nothing about unicode). This
1591 be quite correct, I know next to nothing about unicode). This
1585 will allow unicode strings to be used in prompts, amongst other
1592 will allow unicode strings to be used in prompts, amongst other
1586 cases. It also will prevent ipython from crashing when unicode
1593 cases. It also will prevent ipython from crashing when unicode
1587 shows up unexpectedly in many places. If ascii encoding fails, we
1594 shows up unexpectedly in many places. If ascii encoding fails, we
1588 assume utf_8. Currently the encoding is not a user-visible
1595 assume utf_8. Currently the encoding is not a user-visible
1589 setting, though it could be made so if there is demand for it.
1596 setting, though it could be made so if there is demand for it.
1590
1597
1591 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1598 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1592
1599
1593 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1600 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1594
1601
1595 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1602 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1596
1603
1597 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1604 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1598 code can work transparently for 2.2/2.3.
1605 code can work transparently for 2.2/2.3.
1599
1606
1600 2005-07-16 Fernando Perez <fperez@colorado.edu>
1607 2005-07-16 Fernando Perez <fperez@colorado.edu>
1601
1608
1602 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1609 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1603 out of the color scheme table used for coloring exception
1610 out of the color scheme table used for coloring exception
1604 tracebacks. This allows user code to add new schemes at runtime.
1611 tracebacks. This allows user code to add new schemes at runtime.
1605 This is a minimally modified version of the patch at
1612 This is a minimally modified version of the patch at
1606 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1613 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1607 for the contribution.
1614 for the contribution.
1608
1615
1609 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1616 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1610 slightly modified version of the patch in
1617 slightly modified version of the patch in
1611 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1618 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1612 to remove the previous try/except solution (which was costlier).
1619 to remove the previous try/except solution (which was costlier).
1613 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1620 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1614
1621
1615 2005-06-08 Fernando Perez <fperez@colorado.edu>
1622 2005-06-08 Fernando Perez <fperez@colorado.edu>
1616
1623
1617 * IPython/iplib.py (write/write_err): Add methods to abstract all
1624 * IPython/iplib.py (write/write_err): Add methods to abstract all
1618 I/O a bit more.
1625 I/O a bit more.
1619
1626
1620 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1627 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1621 warning, reported by Aric Hagberg, fix by JD Hunter.
1628 warning, reported by Aric Hagberg, fix by JD Hunter.
1622
1629
1623 2005-06-02 *** Released version 0.6.15
1630 2005-06-02 *** Released version 0.6.15
1624
1631
1625 2005-06-01 Fernando Perez <fperez@colorado.edu>
1632 2005-06-01 Fernando Perez <fperez@colorado.edu>
1626
1633
1627 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1634 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1628 tab-completion of filenames within open-quoted strings. Note that
1635 tab-completion of filenames within open-quoted strings. Note that
1629 this requires that in ~/.ipython/ipythonrc, users change the
1636 this requires that in ~/.ipython/ipythonrc, users change the
1630 readline delimiters configuration to read:
1637 readline delimiters configuration to read:
1631
1638
1632 readline_remove_delims -/~
1639 readline_remove_delims -/~
1633
1640
1634
1641
1635 2005-05-31 *** Released version 0.6.14
1642 2005-05-31 *** Released version 0.6.14
1636
1643
1637 2005-05-29 Fernando Perez <fperez@colorado.edu>
1644 2005-05-29 Fernando Perez <fperez@colorado.edu>
1638
1645
1639 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1646 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1640 with files not on the filesystem. Reported by Eliyahu Sandler
1647 with files not on the filesystem. Reported by Eliyahu Sandler
1641 <eli@gondolin.net>
1648 <eli@gondolin.net>
1642
1649
1643 2005-05-22 Fernando Perez <fperez@colorado.edu>
1650 2005-05-22 Fernando Perez <fperez@colorado.edu>
1644
1651
1645 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1652 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1646 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1653 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1647
1654
1648 2005-05-19 Fernando Perez <fperez@colorado.edu>
1655 2005-05-19 Fernando Perez <fperez@colorado.edu>
1649
1656
1650 * IPython/iplib.py (safe_execfile): close a file which could be
1657 * IPython/iplib.py (safe_execfile): close a file which could be
1651 left open (causing problems in win32, which locks open files).
1658 left open (causing problems in win32, which locks open files).
1652 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1659 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1653
1660
1654 2005-05-18 Fernando Perez <fperez@colorado.edu>
1661 2005-05-18 Fernando Perez <fperez@colorado.edu>
1655
1662
1656 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1663 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1657 keyword arguments correctly to safe_execfile().
1664 keyword arguments correctly to safe_execfile().
1658
1665
1659 2005-05-13 Fernando Perez <fperez@colorado.edu>
1666 2005-05-13 Fernando Perez <fperez@colorado.edu>
1660
1667
1661 * ipython.1: Added info about Qt to manpage, and threads warning
1668 * ipython.1: Added info about Qt to manpage, and threads warning
1662 to usage page (invoked with --help).
1669 to usage page (invoked with --help).
1663
1670
1664 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1671 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1665 new matcher (it goes at the end of the priority list) to do
1672 new matcher (it goes at the end of the priority list) to do
1666 tab-completion on named function arguments. Submitted by George
1673 tab-completion on named function arguments. Submitted by George
1667 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1674 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1668 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1675 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1669 for more details.
1676 for more details.
1670
1677
1671 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1678 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1672 SystemExit exceptions in the script being run. Thanks to a report
1679 SystemExit exceptions in the script being run. Thanks to a report
1673 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1680 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1674 producing very annoying behavior when running unit tests.
1681 producing very annoying behavior when running unit tests.
1675
1682
1676 2005-05-12 Fernando Perez <fperez@colorado.edu>
1683 2005-05-12 Fernando Perez <fperez@colorado.edu>
1677
1684
1678 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1685 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1679 which I'd broken (again) due to a changed regexp. In the process,
1686 which I'd broken (again) due to a changed regexp. In the process,
1680 added ';' as an escape to auto-quote the whole line without
1687 added ';' as an escape to auto-quote the whole line without
1681 splitting its arguments. Thanks to a report by Jerry McRae
1688 splitting its arguments. Thanks to a report by Jerry McRae
1682 <qrs0xyc02-AT-sneakemail.com>.
1689 <qrs0xyc02-AT-sneakemail.com>.
1683
1690
1684 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1691 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1685 possible crashes caused by a TokenError. Reported by Ed Schofield
1692 possible crashes caused by a TokenError. Reported by Ed Schofield
1686 <schofield-AT-ftw.at>.
1693 <schofield-AT-ftw.at>.
1687
1694
1688 2005-05-06 Fernando Perez <fperez@colorado.edu>
1695 2005-05-06 Fernando Perez <fperez@colorado.edu>
1689
1696
1690 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1697 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1691
1698
1692 2005-04-29 Fernando Perez <fperez@colorado.edu>
1699 2005-04-29 Fernando Perez <fperez@colorado.edu>
1693
1700
1694 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1701 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1695 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1702 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1696 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1703 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1697 which provides support for Qt interactive usage (similar to the
1704 which provides support for Qt interactive usage (similar to the
1698 existing one for WX and GTK). This had been often requested.
1705 existing one for WX and GTK). This had been often requested.
1699
1706
1700 2005-04-14 *** Released version 0.6.13
1707 2005-04-14 *** Released version 0.6.13
1701
1708
1702 2005-04-08 Fernando Perez <fperez@colorado.edu>
1709 2005-04-08 Fernando Perez <fperez@colorado.edu>
1703
1710
1704 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1711 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1705 from _ofind, which gets called on almost every input line. Now,
1712 from _ofind, which gets called on almost every input line. Now,
1706 we only try to get docstrings if they are actually going to be
1713 we only try to get docstrings if they are actually going to be
1707 used (the overhead of fetching unnecessary docstrings can be
1714 used (the overhead of fetching unnecessary docstrings can be
1708 noticeable for certain objects, such as Pyro proxies).
1715 noticeable for certain objects, such as Pyro proxies).
1709
1716
1710 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1717 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1711 for completers. For some reason I had been passing them the state
1718 for completers. For some reason I had been passing them the state
1712 variable, which completers never actually need, and was in
1719 variable, which completers never actually need, and was in
1713 conflict with the rlcompleter API. Custom completers ONLY need to
1720 conflict with the rlcompleter API. Custom completers ONLY need to
1714 take the text parameter.
1721 take the text parameter.
1715
1722
1716 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1723 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1717 work correctly in pysh. I've also moved all the logic which used
1724 work correctly in pysh. I've also moved all the logic which used
1718 to be in pysh.py here, which will prevent problems with future
1725 to be in pysh.py here, which will prevent problems with future
1719 upgrades. However, this time I must warn users to update their
1726 upgrades. However, this time I must warn users to update their
1720 pysh profile to include the line
1727 pysh profile to include the line
1721
1728
1722 import_all IPython.Extensions.InterpreterExec
1729 import_all IPython.Extensions.InterpreterExec
1723
1730
1724 because otherwise things won't work for them. They MUST also
1731 because otherwise things won't work for them. They MUST also
1725 delete pysh.py and the line
1732 delete pysh.py and the line
1726
1733
1727 execfile pysh.py
1734 execfile pysh.py
1728
1735
1729 from their ipythonrc-pysh.
1736 from their ipythonrc-pysh.
1730
1737
1731 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1738 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1732 robust in the face of objects whose dir() returns non-strings
1739 robust in the face of objects whose dir() returns non-strings
1733 (which it shouldn't, but some broken libs like ITK do). Thanks to
1740 (which it shouldn't, but some broken libs like ITK do). Thanks to
1734 a patch by John Hunter (implemented differently, though). Also
1741 a patch by John Hunter (implemented differently, though). Also
1735 minor improvements by using .extend instead of + on lists.
1742 minor improvements by using .extend instead of + on lists.
1736
1743
1737 * pysh.py:
1744 * pysh.py:
1738
1745
1739 2005-04-06 Fernando Perez <fperez@colorado.edu>
1746 2005-04-06 Fernando Perez <fperez@colorado.edu>
1740
1747
1741 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1748 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1742 by default, so that all users benefit from it. Those who don't
1749 by default, so that all users benefit from it. Those who don't
1743 want it can still turn it off.
1750 want it can still turn it off.
1744
1751
1745 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1752 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1746 config file, I'd forgotten about this, so users were getting it
1753 config file, I'd forgotten about this, so users were getting it
1747 off by default.
1754 off by default.
1748
1755
1749 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1756 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1750 consistency. Now magics can be called in multiline statements,
1757 consistency. Now magics can be called in multiline statements,
1751 and python variables can be expanded in magic calls via $var.
1758 and python variables can be expanded in magic calls via $var.
1752 This makes the magic system behave just like aliases or !system
1759 This makes the magic system behave just like aliases or !system
1753 calls.
1760 calls.
1754
1761
1755 2005-03-28 Fernando Perez <fperez@colorado.edu>
1762 2005-03-28 Fernando Perez <fperez@colorado.edu>
1756
1763
1757 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1764 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1758 expensive string additions for building command. Add support for
1765 expensive string additions for building command. Add support for
1759 trailing ';' when autocall is used.
1766 trailing ';' when autocall is used.
1760
1767
1761 2005-03-26 Fernando Perez <fperez@colorado.edu>
1768 2005-03-26 Fernando Perez <fperez@colorado.edu>
1762
1769
1763 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1770 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1764 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1771 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1765 ipython.el robust against prompts with any number of spaces
1772 ipython.el robust against prompts with any number of spaces
1766 (including 0) after the ':' character.
1773 (including 0) after the ':' character.
1767
1774
1768 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1775 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1769 continuation prompt, which misled users to think the line was
1776 continuation prompt, which misled users to think the line was
1770 already indented. Closes debian Bug#300847, reported to me by
1777 already indented. Closes debian Bug#300847, reported to me by
1771 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1778 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1772
1779
1773 2005-03-23 Fernando Perez <fperez@colorado.edu>
1780 2005-03-23 Fernando Perez <fperez@colorado.edu>
1774
1781
1775 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1782 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1776 properly aligned if they have embedded newlines.
1783 properly aligned if they have embedded newlines.
1777
1784
1778 * IPython/iplib.py (runlines): Add a public method to expose
1785 * IPython/iplib.py (runlines): Add a public method to expose
1779 IPython's code execution machinery, so that users can run strings
1786 IPython's code execution machinery, so that users can run strings
1780 as if they had been typed at the prompt interactively.
1787 as if they had been typed at the prompt interactively.
1781 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1788 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1782 methods which can call the system shell, but with python variable
1789 methods which can call the system shell, but with python variable
1783 expansion. The three such methods are: __IPYTHON__.system,
1790 expansion. The three such methods are: __IPYTHON__.system,
1784 .getoutput and .getoutputerror. These need to be documented in a
1791 .getoutput and .getoutputerror. These need to be documented in a
1785 'public API' section (to be written) of the manual.
1792 'public API' section (to be written) of the manual.
1786
1793
1787 2005-03-20 Fernando Perez <fperez@colorado.edu>
1794 2005-03-20 Fernando Perez <fperez@colorado.edu>
1788
1795
1789 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1796 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1790 for custom exception handling. This is quite powerful, and it
1797 for custom exception handling. This is quite powerful, and it
1791 allows for user-installable exception handlers which can trap
1798 allows for user-installable exception handlers which can trap
1792 custom exceptions at runtime and treat them separately from
1799 custom exceptions at runtime and treat them separately from
1793 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1800 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1794 Mantegazza <mantegazza-AT-ill.fr>.
1801 Mantegazza <mantegazza-AT-ill.fr>.
1795 (InteractiveShell.set_custom_completer): public API function to
1802 (InteractiveShell.set_custom_completer): public API function to
1796 add new completers at runtime.
1803 add new completers at runtime.
1797
1804
1798 2005-03-19 Fernando Perez <fperez@colorado.edu>
1805 2005-03-19 Fernando Perez <fperez@colorado.edu>
1799
1806
1800 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1807 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1801 allow objects which provide their docstrings via non-standard
1808 allow objects which provide their docstrings via non-standard
1802 mechanisms (like Pyro proxies) to still be inspected by ipython's
1809 mechanisms (like Pyro proxies) to still be inspected by ipython's
1803 ? system.
1810 ? system.
1804
1811
1805 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1812 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1806 automatic capture system. I tried quite hard to make it work
1813 automatic capture system. I tried quite hard to make it work
1807 reliably, and simply failed. I tried many combinations with the
1814 reliably, and simply failed. I tried many combinations with the
1808 subprocess module, but eventually nothing worked in all needed
1815 subprocess module, but eventually nothing worked in all needed
1809 cases (not blocking stdin for the child, duplicating stdout
1816 cases (not blocking stdin for the child, duplicating stdout
1810 without blocking, etc). The new %sc/%sx still do capture to these
1817 without blocking, etc). The new %sc/%sx still do capture to these
1811 magical list/string objects which make shell use much more
1818 magical list/string objects which make shell use much more
1812 conveninent, so not all is lost.
1819 conveninent, so not all is lost.
1813
1820
1814 XXX - FIX MANUAL for the change above!
1821 XXX - FIX MANUAL for the change above!
1815
1822
1816 (runsource): I copied code.py's runsource() into ipython to modify
1823 (runsource): I copied code.py's runsource() into ipython to modify
1817 it a bit. Now the code object and source to be executed are
1824 it a bit. Now the code object and source to be executed are
1818 stored in ipython. This makes this info accessible to third-party
1825 stored in ipython. This makes this info accessible to third-party
1819 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1826 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1820 Mantegazza <mantegazza-AT-ill.fr>.
1827 Mantegazza <mantegazza-AT-ill.fr>.
1821
1828
1822 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1829 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1823 history-search via readline (like C-p/C-n). I'd wanted this for a
1830 history-search via readline (like C-p/C-n). I'd wanted this for a
1824 long time, but only recently found out how to do it. For users
1831 long time, but only recently found out how to do it. For users
1825 who already have their ipythonrc files made and want this, just
1832 who already have their ipythonrc files made and want this, just
1826 add:
1833 add:
1827
1834
1828 readline_parse_and_bind "\e[A": history-search-backward
1835 readline_parse_and_bind "\e[A": history-search-backward
1829 readline_parse_and_bind "\e[B": history-search-forward
1836 readline_parse_and_bind "\e[B": history-search-forward
1830
1837
1831 2005-03-18 Fernando Perez <fperez@colorado.edu>
1838 2005-03-18 Fernando Perez <fperez@colorado.edu>
1832
1839
1833 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1840 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1834 LSString and SList classes which allow transparent conversions
1841 LSString and SList classes which allow transparent conversions
1835 between list mode and whitespace-separated string.
1842 between list mode and whitespace-separated string.
1836 (magic_r): Fix recursion problem in %r.
1843 (magic_r): Fix recursion problem in %r.
1837
1844
1838 * IPython/genutils.py (LSString): New class to be used for
1845 * IPython/genutils.py (LSString): New class to be used for
1839 automatic storage of the results of all alias/system calls in _o
1846 automatic storage of the results of all alias/system calls in _o
1840 and _e (stdout/err). These provide a .l/.list attribute which
1847 and _e (stdout/err). These provide a .l/.list attribute which
1841 does automatic splitting on newlines. This means that for most
1848 does automatic splitting on newlines. This means that for most
1842 uses, you'll never need to do capturing of output with %sc/%sx
1849 uses, you'll never need to do capturing of output with %sc/%sx
1843 anymore, since ipython keeps this always done for you. Note that
1850 anymore, since ipython keeps this always done for you. Note that
1844 only the LAST results are stored, the _o/e variables are
1851 only the LAST results are stored, the _o/e variables are
1845 overwritten on each call. If you need to save their contents
1852 overwritten on each call. If you need to save their contents
1846 further, simply bind them to any other name.
1853 further, simply bind them to any other name.
1847
1854
1848 2005-03-17 Fernando Perez <fperez@colorado.edu>
1855 2005-03-17 Fernando Perez <fperez@colorado.edu>
1849
1856
1850 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1857 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1851 prompt namespace handling.
1858 prompt namespace handling.
1852
1859
1853 2005-03-16 Fernando Perez <fperez@colorado.edu>
1860 2005-03-16 Fernando Perez <fperez@colorado.edu>
1854
1861
1855 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1862 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1856 classic prompts to be '>>> ' (final space was missing, and it
1863 classic prompts to be '>>> ' (final space was missing, and it
1857 trips the emacs python mode).
1864 trips the emacs python mode).
1858 (BasePrompt.__str__): Added safe support for dynamic prompt
1865 (BasePrompt.__str__): Added safe support for dynamic prompt
1859 strings. Now you can set your prompt string to be '$x', and the
1866 strings. Now you can set your prompt string to be '$x', and the
1860 value of x will be printed from your interactive namespace. The
1867 value of x will be printed from your interactive namespace. The
1861 interpolation syntax includes the full Itpl support, so
1868 interpolation syntax includes the full Itpl support, so
1862 ${foo()+x+bar()} is a valid prompt string now, and the function
1869 ${foo()+x+bar()} is a valid prompt string now, and the function
1863 calls will be made at runtime.
1870 calls will be made at runtime.
1864
1871
1865 2005-03-15 Fernando Perez <fperez@colorado.edu>
1872 2005-03-15 Fernando Perez <fperez@colorado.edu>
1866
1873
1867 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1874 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1868 avoid name clashes in pylab. %hist still works, it just forwards
1875 avoid name clashes in pylab. %hist still works, it just forwards
1869 the call to %history.
1876 the call to %history.
1870
1877
1871 2005-03-02 *** Released version 0.6.12
1878 2005-03-02 *** Released version 0.6.12
1872
1879
1873 2005-03-02 Fernando Perez <fperez@colorado.edu>
1880 2005-03-02 Fernando Perez <fperez@colorado.edu>
1874
1881
1875 * IPython/iplib.py (handle_magic): log magic calls properly as
1882 * IPython/iplib.py (handle_magic): log magic calls properly as
1876 ipmagic() function calls.
1883 ipmagic() function calls.
1877
1884
1878 * IPython/Magic.py (magic_time): Improved %time to support
1885 * IPython/Magic.py (magic_time): Improved %time to support
1879 statements and provide wall-clock as well as CPU time.
1886 statements and provide wall-clock as well as CPU time.
1880
1887
1881 2005-02-27 Fernando Perez <fperez@colorado.edu>
1888 2005-02-27 Fernando Perez <fperez@colorado.edu>
1882
1889
1883 * IPython/hooks.py: New hooks module, to expose user-modifiable
1890 * IPython/hooks.py: New hooks module, to expose user-modifiable
1884 IPython functionality in a clean manner. For now only the editor
1891 IPython functionality in a clean manner. For now only the editor
1885 hook is actually written, and other thigns which I intend to turn
1892 hook is actually written, and other thigns which I intend to turn
1886 into proper hooks aren't yet there. The display and prefilter
1893 into proper hooks aren't yet there. The display and prefilter
1887 stuff, for example, should be hooks. But at least now the
1894 stuff, for example, should be hooks. But at least now the
1888 framework is in place, and the rest can be moved here with more
1895 framework is in place, and the rest can be moved here with more
1889 time later. IPython had had a .hooks variable for a long time for
1896 time later. IPython had had a .hooks variable for a long time for
1890 this purpose, but I'd never actually used it for anything.
1897 this purpose, but I'd never actually used it for anything.
1891
1898
1892 2005-02-26 Fernando Perez <fperez@colorado.edu>
1899 2005-02-26 Fernando Perez <fperez@colorado.edu>
1893
1900
1894 * IPython/ipmaker.py (make_IPython): make the default ipython
1901 * IPython/ipmaker.py (make_IPython): make the default ipython
1895 directory be called _ipython under win32, to follow more the
1902 directory be called _ipython under win32, to follow more the
1896 naming peculiarities of that platform (where buggy software like
1903 naming peculiarities of that platform (where buggy software like
1897 Visual Sourcesafe breaks with .named directories). Reported by
1904 Visual Sourcesafe breaks with .named directories). Reported by
1898 Ville Vainio.
1905 Ville Vainio.
1899
1906
1900 2005-02-23 Fernando Perez <fperez@colorado.edu>
1907 2005-02-23 Fernando Perez <fperez@colorado.edu>
1901
1908
1902 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1909 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1903 auto_aliases for win32 which were causing problems. Users can
1910 auto_aliases for win32 which were causing problems. Users can
1904 define the ones they personally like.
1911 define the ones they personally like.
1905
1912
1906 2005-02-21 Fernando Perez <fperez@colorado.edu>
1913 2005-02-21 Fernando Perez <fperez@colorado.edu>
1907
1914
1908 * IPython/Magic.py (magic_time): new magic to time execution of
1915 * IPython/Magic.py (magic_time): new magic to time execution of
1909 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1916 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1910
1917
1911 2005-02-19 Fernando Perez <fperez@colorado.edu>
1918 2005-02-19 Fernando Perez <fperez@colorado.edu>
1912
1919
1913 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1920 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1914 into keys (for prompts, for example).
1921 into keys (for prompts, for example).
1915
1922
1916 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1923 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1917 prompts in case users want them. This introduces a small behavior
1924 prompts in case users want them. This introduces a small behavior
1918 change: ipython does not automatically add a space to all prompts
1925 change: ipython does not automatically add a space to all prompts
1919 anymore. To get the old prompts with a space, users should add it
1926 anymore. To get the old prompts with a space, users should add it
1920 manually to their ipythonrc file, so for example prompt_in1 should
1927 manually to their ipythonrc file, so for example prompt_in1 should
1921 now read 'In [\#]: ' instead of 'In [\#]:'.
1928 now read 'In [\#]: ' instead of 'In [\#]:'.
1922 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1929 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1923 file) to control left-padding of secondary prompts.
1930 file) to control left-padding of secondary prompts.
1924
1931
1925 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1932 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1926 the profiler can't be imported. Fix for Debian, which removed
1933 the profiler can't be imported. Fix for Debian, which removed
1927 profile.py because of License issues. I applied a slightly
1934 profile.py because of License issues. I applied a slightly
1928 modified version of the original Debian patch at
1935 modified version of the original Debian patch at
1929 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1936 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1930
1937
1931 2005-02-17 Fernando Perez <fperez@colorado.edu>
1938 2005-02-17 Fernando Perez <fperez@colorado.edu>
1932
1939
1933 * IPython/genutils.py (native_line_ends): Fix bug which would
1940 * IPython/genutils.py (native_line_ends): Fix bug which would
1934 cause improper line-ends under win32 b/c I was not opening files
1941 cause improper line-ends under win32 b/c I was not opening files
1935 in binary mode. Bug report and fix thanks to Ville.
1942 in binary mode. Bug report and fix thanks to Ville.
1936
1943
1937 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1944 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1938 trying to catch spurious foo[1] autocalls. My fix actually broke
1945 trying to catch spurious foo[1] autocalls. My fix actually broke
1939 ',/' autoquote/call with explicit escape (bad regexp).
1946 ',/' autoquote/call with explicit escape (bad regexp).
1940
1947
1941 2005-02-15 *** Released version 0.6.11
1948 2005-02-15 *** Released version 0.6.11
1942
1949
1943 2005-02-14 Fernando Perez <fperez@colorado.edu>
1950 2005-02-14 Fernando Perez <fperez@colorado.edu>
1944
1951
1945 * IPython/background_jobs.py: New background job management
1952 * IPython/background_jobs.py: New background job management
1946 subsystem. This is implemented via a new set of classes, and
1953 subsystem. This is implemented via a new set of classes, and
1947 IPython now provides a builtin 'jobs' object for background job
1954 IPython now provides a builtin 'jobs' object for background job
1948 execution. A convenience %bg magic serves as a lightweight
1955 execution. A convenience %bg magic serves as a lightweight
1949 frontend for starting the more common type of calls. This was
1956 frontend for starting the more common type of calls. This was
1950 inspired by discussions with B. Granger and the BackgroundCommand
1957 inspired by discussions with B. Granger and the BackgroundCommand
1951 class described in the book Python Scripting for Computational
1958 class described in the book Python Scripting for Computational
1952 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1959 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1953 (although ultimately no code from this text was used, as IPython's
1960 (although ultimately no code from this text was used, as IPython's
1954 system is a separate implementation).
1961 system is a separate implementation).
1955
1962
1956 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1963 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1957 to control the completion of single/double underscore names
1964 to control the completion of single/double underscore names
1958 separately. As documented in the example ipytonrc file, the
1965 separately. As documented in the example ipytonrc file, the
1959 readline_omit__names variable can now be set to 2, to omit even
1966 readline_omit__names variable can now be set to 2, to omit even
1960 single underscore names. Thanks to a patch by Brian Wong
1967 single underscore names. Thanks to a patch by Brian Wong
1961 <BrianWong-AT-AirgoNetworks.Com>.
1968 <BrianWong-AT-AirgoNetworks.Com>.
1962 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1969 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1963 be autocalled as foo([1]) if foo were callable. A problem for
1970 be autocalled as foo([1]) if foo were callable. A problem for
1964 things which are both callable and implement __getitem__.
1971 things which are both callable and implement __getitem__.
1965 (init_readline): Fix autoindentation for win32. Thanks to a patch
1972 (init_readline): Fix autoindentation for win32. Thanks to a patch
1966 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1973 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1967
1974
1968 2005-02-12 Fernando Perez <fperez@colorado.edu>
1975 2005-02-12 Fernando Perez <fperez@colorado.edu>
1969
1976
1970 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1977 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1971 which I had written long ago to sort out user error messages which
1978 which I had written long ago to sort out user error messages which
1972 may occur during startup. This seemed like a good idea initially,
1979 may occur during startup. This seemed like a good idea initially,
1973 but it has proven a disaster in retrospect. I don't want to
1980 but it has proven a disaster in retrospect. I don't want to
1974 change much code for now, so my fix is to set the internal 'debug'
1981 change much code for now, so my fix is to set the internal 'debug'
1975 flag to true everywhere, whose only job was precisely to control
1982 flag to true everywhere, whose only job was precisely to control
1976 this subsystem. This closes issue 28 (as well as avoiding all
1983 this subsystem. This closes issue 28 (as well as avoiding all
1977 sorts of strange hangups which occur from time to time).
1984 sorts of strange hangups which occur from time to time).
1978
1985
1979 2005-02-07 Fernando Perez <fperez@colorado.edu>
1986 2005-02-07 Fernando Perez <fperez@colorado.edu>
1980
1987
1981 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1988 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1982 previous call produced a syntax error.
1989 previous call produced a syntax error.
1983
1990
1984 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1991 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1985 classes without constructor.
1992 classes without constructor.
1986
1993
1987 2005-02-06 Fernando Perez <fperez@colorado.edu>
1994 2005-02-06 Fernando Perez <fperez@colorado.edu>
1988
1995
1989 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1996 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1990 completions with the results of each matcher, so we return results
1997 completions with the results of each matcher, so we return results
1991 to the user from all namespaces. This breaks with ipython
1998 to the user from all namespaces. This breaks with ipython
1992 tradition, but I think it's a nicer behavior. Now you get all
1999 tradition, but I think it's a nicer behavior. Now you get all
1993 possible completions listed, from all possible namespaces (python,
2000 possible completions listed, from all possible namespaces (python,
1994 filesystem, magics...) After a request by John Hunter
2001 filesystem, magics...) After a request by John Hunter
1995 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2002 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1996
2003
1997 2005-02-05 Fernando Perez <fperez@colorado.edu>
2004 2005-02-05 Fernando Perez <fperez@colorado.edu>
1998
2005
1999 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2006 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2000 the call had quote characters in it (the quotes were stripped).
2007 the call had quote characters in it (the quotes were stripped).
2001
2008
2002 2005-01-31 Fernando Perez <fperez@colorado.edu>
2009 2005-01-31 Fernando Perez <fperez@colorado.edu>
2003
2010
2004 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2011 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2005 Itpl.itpl() to make the code more robust against psyco
2012 Itpl.itpl() to make the code more robust against psyco
2006 optimizations.
2013 optimizations.
2007
2014
2008 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2015 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2009 of causing an exception. Quicker, cleaner.
2016 of causing an exception. Quicker, cleaner.
2010
2017
2011 2005-01-28 Fernando Perez <fperez@colorado.edu>
2018 2005-01-28 Fernando Perez <fperez@colorado.edu>
2012
2019
2013 * scripts/ipython_win_post_install.py (install): hardcode
2020 * scripts/ipython_win_post_install.py (install): hardcode
2014 sys.prefix+'python.exe' as the executable path. It turns out that
2021 sys.prefix+'python.exe' as the executable path. It turns out that
2015 during the post-installation run, sys.executable resolves to the
2022 during the post-installation run, sys.executable resolves to the
2016 name of the binary installer! I should report this as a distutils
2023 name of the binary installer! I should report this as a distutils
2017 bug, I think. I updated the .10 release with this tiny fix, to
2024 bug, I think. I updated the .10 release with this tiny fix, to
2018 avoid annoying the lists further.
2025 avoid annoying the lists further.
2019
2026
2020 2005-01-27 *** Released version 0.6.10
2027 2005-01-27 *** Released version 0.6.10
2021
2028
2022 2005-01-27 Fernando Perez <fperez@colorado.edu>
2029 2005-01-27 Fernando Perez <fperez@colorado.edu>
2023
2030
2024 * IPython/numutils.py (norm): Added 'inf' as optional name for
2031 * IPython/numutils.py (norm): Added 'inf' as optional name for
2025 L-infinity norm, included references to mathworld.com for vector
2032 L-infinity norm, included references to mathworld.com for vector
2026 norm definitions.
2033 norm definitions.
2027 (amin/amax): added amin/amax for array min/max. Similar to what
2034 (amin/amax): added amin/amax for array min/max. Similar to what
2028 pylab ships with after the recent reorganization of names.
2035 pylab ships with after the recent reorganization of names.
2029 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2036 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2030
2037
2031 * ipython.el: committed Alex's recent fixes and improvements.
2038 * ipython.el: committed Alex's recent fixes and improvements.
2032 Tested with python-mode from CVS, and it looks excellent. Since
2039 Tested with python-mode from CVS, and it looks excellent. Since
2033 python-mode hasn't released anything in a while, I'm temporarily
2040 python-mode hasn't released anything in a while, I'm temporarily
2034 putting a copy of today's CVS (v 4.70) of python-mode in:
2041 putting a copy of today's CVS (v 4.70) of python-mode in:
2035 http://ipython.scipy.org/tmp/python-mode.el
2042 http://ipython.scipy.org/tmp/python-mode.el
2036
2043
2037 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2044 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2038 sys.executable for the executable name, instead of assuming it's
2045 sys.executable for the executable name, instead of assuming it's
2039 called 'python.exe' (the post-installer would have produced broken
2046 called 'python.exe' (the post-installer would have produced broken
2040 setups on systems with a differently named python binary).
2047 setups on systems with a differently named python binary).
2041
2048
2042 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2049 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2043 references to os.linesep, to make the code more
2050 references to os.linesep, to make the code more
2044 platform-independent. This is also part of the win32 coloring
2051 platform-independent. This is also part of the win32 coloring
2045 fixes.
2052 fixes.
2046
2053
2047 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2054 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2048 lines, which actually cause coloring bugs because the length of
2055 lines, which actually cause coloring bugs because the length of
2049 the line is very difficult to correctly compute with embedded
2056 the line is very difficult to correctly compute with embedded
2050 escapes. This was the source of all the coloring problems under
2057 escapes. This was the source of all the coloring problems under
2051 Win32. I think that _finally_, Win32 users have a properly
2058 Win32. I think that _finally_, Win32 users have a properly
2052 working ipython in all respects. This would never have happened
2059 working ipython in all respects. This would never have happened
2053 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2060 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2054
2061
2055 2005-01-26 *** Released version 0.6.9
2062 2005-01-26 *** Released version 0.6.9
2056
2063
2057 2005-01-25 Fernando Perez <fperez@colorado.edu>
2064 2005-01-25 Fernando Perez <fperez@colorado.edu>
2058
2065
2059 * setup.py: finally, we have a true Windows installer, thanks to
2066 * setup.py: finally, we have a true Windows installer, thanks to
2060 the excellent work of Viktor Ransmayr
2067 the excellent work of Viktor Ransmayr
2061 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2068 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2062 Windows users. The setup routine is quite a bit cleaner thanks to
2069 Windows users. The setup routine is quite a bit cleaner thanks to
2063 this, and the post-install script uses the proper functions to
2070 this, and the post-install script uses the proper functions to
2064 allow a clean de-installation using the standard Windows Control
2071 allow a clean de-installation using the standard Windows Control
2065 Panel.
2072 Panel.
2066
2073
2067 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2074 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2068 environment variable under all OSes (including win32) if
2075 environment variable under all OSes (including win32) if
2069 available. This will give consistency to win32 users who have set
2076 available. This will give consistency to win32 users who have set
2070 this variable for any reason. If os.environ['HOME'] fails, the
2077 this variable for any reason. If os.environ['HOME'] fails, the
2071 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2078 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2072
2079
2073 2005-01-24 Fernando Perez <fperez@colorado.edu>
2080 2005-01-24 Fernando Perez <fperez@colorado.edu>
2074
2081
2075 * IPython/numutils.py (empty_like): add empty_like(), similar to
2082 * IPython/numutils.py (empty_like): add empty_like(), similar to
2076 zeros_like() but taking advantage of the new empty() Numeric routine.
2083 zeros_like() but taking advantage of the new empty() Numeric routine.
2077
2084
2078 2005-01-23 *** Released version 0.6.8
2085 2005-01-23 *** Released version 0.6.8
2079
2086
2080 2005-01-22 Fernando Perez <fperez@colorado.edu>
2087 2005-01-22 Fernando Perez <fperez@colorado.edu>
2081
2088
2082 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2089 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2083 automatic show() calls. After discussing things with JDH, it
2090 automatic show() calls. After discussing things with JDH, it
2084 turns out there are too many corner cases where this can go wrong.
2091 turns out there are too many corner cases where this can go wrong.
2085 It's best not to try to be 'too smart', and simply have ipython
2092 It's best not to try to be 'too smart', and simply have ipython
2086 reproduce as much as possible the default behavior of a normal
2093 reproduce as much as possible the default behavior of a normal
2087 python shell.
2094 python shell.
2088
2095
2089 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2096 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2090 line-splitting regexp and _prefilter() to avoid calling getattr()
2097 line-splitting regexp and _prefilter() to avoid calling getattr()
2091 on assignments. This closes
2098 on assignments. This closes
2092 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2099 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2093 readline uses getattr(), so a simple <TAB> keypress is still
2100 readline uses getattr(), so a simple <TAB> keypress is still
2094 enough to trigger getattr() calls on an object.
2101 enough to trigger getattr() calls on an object.
2095
2102
2096 2005-01-21 Fernando Perez <fperez@colorado.edu>
2103 2005-01-21 Fernando Perez <fperez@colorado.edu>
2097
2104
2098 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2105 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2099 docstring under pylab so it doesn't mask the original.
2106 docstring under pylab so it doesn't mask the original.
2100
2107
2101 2005-01-21 *** Released version 0.6.7
2108 2005-01-21 *** Released version 0.6.7
2102
2109
2103 2005-01-21 Fernando Perez <fperez@colorado.edu>
2110 2005-01-21 Fernando Perez <fperez@colorado.edu>
2104
2111
2105 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2112 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2106 signal handling for win32 users in multithreaded mode.
2113 signal handling for win32 users in multithreaded mode.
2107
2114
2108 2005-01-17 Fernando Perez <fperez@colorado.edu>
2115 2005-01-17 Fernando Perez <fperez@colorado.edu>
2109
2116
2110 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2117 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2111 instances with no __init__. After a crash report by Norbert Nemec
2118 instances with no __init__. After a crash report by Norbert Nemec
2112 <Norbert-AT-nemec-online.de>.
2119 <Norbert-AT-nemec-online.de>.
2113
2120
2114 2005-01-14 Fernando Perez <fperez@colorado.edu>
2121 2005-01-14 Fernando Perez <fperez@colorado.edu>
2115
2122
2116 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2123 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2117 names for verbose exceptions, when multiple dotted names and the
2124 names for verbose exceptions, when multiple dotted names and the
2118 'parent' object were present on the same line.
2125 'parent' object were present on the same line.
2119
2126
2120 2005-01-11 Fernando Perez <fperez@colorado.edu>
2127 2005-01-11 Fernando Perez <fperez@colorado.edu>
2121
2128
2122 * IPython/genutils.py (flag_calls): new utility to trap and flag
2129 * IPython/genutils.py (flag_calls): new utility to trap and flag
2123 calls in functions. I need it to clean up matplotlib support.
2130 calls in functions. I need it to clean up matplotlib support.
2124 Also removed some deprecated code in genutils.
2131 Also removed some deprecated code in genutils.
2125
2132
2126 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2133 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2127 that matplotlib scripts called with %run, which don't call show()
2134 that matplotlib scripts called with %run, which don't call show()
2128 themselves, still have their plotting windows open.
2135 themselves, still have their plotting windows open.
2129
2136
2130 2005-01-05 Fernando Perez <fperez@colorado.edu>
2137 2005-01-05 Fernando Perez <fperez@colorado.edu>
2131
2138
2132 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2139 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2133 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2140 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2134
2141
2135 2004-12-19 Fernando Perez <fperez@colorado.edu>
2142 2004-12-19 Fernando Perez <fperez@colorado.edu>
2136
2143
2137 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2144 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2138 parent_runcode, which was an eyesore. The same result can be
2145 parent_runcode, which was an eyesore. The same result can be
2139 obtained with Python's regular superclass mechanisms.
2146 obtained with Python's regular superclass mechanisms.
2140
2147
2141 2004-12-17 Fernando Perez <fperez@colorado.edu>
2148 2004-12-17 Fernando Perez <fperez@colorado.edu>
2142
2149
2143 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2150 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2144 reported by Prabhu.
2151 reported by Prabhu.
2145 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2152 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2146 sys.stderr) instead of explicitly calling sys.stderr. This helps
2153 sys.stderr) instead of explicitly calling sys.stderr. This helps
2147 maintain our I/O abstractions clean, for future GUI embeddings.
2154 maintain our I/O abstractions clean, for future GUI embeddings.
2148
2155
2149 * IPython/genutils.py (info): added new utility for sys.stderr
2156 * IPython/genutils.py (info): added new utility for sys.stderr
2150 unified info message handling (thin wrapper around warn()).
2157 unified info message handling (thin wrapper around warn()).
2151
2158
2152 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2159 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2153 composite (dotted) names on verbose exceptions.
2160 composite (dotted) names on verbose exceptions.
2154 (VerboseTB.nullrepr): harden against another kind of errors which
2161 (VerboseTB.nullrepr): harden against another kind of errors which
2155 Python's inspect module can trigger, and which were crashing
2162 Python's inspect module can trigger, and which were crashing
2156 IPython. Thanks to a report by Marco Lombardi
2163 IPython. Thanks to a report by Marco Lombardi
2157 <mlombard-AT-ma010192.hq.eso.org>.
2164 <mlombard-AT-ma010192.hq.eso.org>.
2158
2165
2159 2004-12-13 *** Released version 0.6.6
2166 2004-12-13 *** Released version 0.6.6
2160
2167
2161 2004-12-12 Fernando Perez <fperez@colorado.edu>
2168 2004-12-12 Fernando Perez <fperez@colorado.edu>
2162
2169
2163 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2170 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2164 generated by pygtk upon initialization if it was built without
2171 generated by pygtk upon initialization if it was built without
2165 threads (for matplotlib users). After a crash reported by
2172 threads (for matplotlib users). After a crash reported by
2166 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2173 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2167
2174
2168 * IPython/ipmaker.py (make_IPython): fix small bug in the
2175 * IPython/ipmaker.py (make_IPython): fix small bug in the
2169 import_some parameter for multiple imports.
2176 import_some parameter for multiple imports.
2170
2177
2171 * IPython/iplib.py (ipmagic): simplified the interface of
2178 * IPython/iplib.py (ipmagic): simplified the interface of
2172 ipmagic() to take a single string argument, just as it would be
2179 ipmagic() to take a single string argument, just as it would be
2173 typed at the IPython cmd line.
2180 typed at the IPython cmd line.
2174 (ipalias): Added new ipalias() with an interface identical to
2181 (ipalias): Added new ipalias() with an interface identical to
2175 ipmagic(). This completes exposing a pure python interface to the
2182 ipmagic(). This completes exposing a pure python interface to the
2176 alias and magic system, which can be used in loops or more complex
2183 alias and magic system, which can be used in loops or more complex
2177 code where IPython's automatic line mangling is not active.
2184 code where IPython's automatic line mangling is not active.
2178
2185
2179 * IPython/genutils.py (timing): changed interface of timing to
2186 * IPython/genutils.py (timing): changed interface of timing to
2180 simply run code once, which is the most common case. timings()
2187 simply run code once, which is the most common case. timings()
2181 remains unchanged, for the cases where you want multiple runs.
2188 remains unchanged, for the cases where you want multiple runs.
2182
2189
2183 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2190 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2184 bug where Python2.2 crashes with exec'ing code which does not end
2191 bug where Python2.2 crashes with exec'ing code which does not end
2185 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2192 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2186 before.
2193 before.
2187
2194
2188 2004-12-10 Fernando Perez <fperez@colorado.edu>
2195 2004-12-10 Fernando Perez <fperez@colorado.edu>
2189
2196
2190 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2197 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2191 -t to -T, to accomodate the new -t flag in %run (the %run and
2198 -t to -T, to accomodate the new -t flag in %run (the %run and
2192 %prun options are kind of intermixed, and it's not easy to change
2199 %prun options are kind of intermixed, and it's not easy to change
2193 this with the limitations of python's getopt).
2200 this with the limitations of python's getopt).
2194
2201
2195 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2202 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2196 the execution of scripts. It's not as fine-tuned as timeit.py,
2203 the execution of scripts. It's not as fine-tuned as timeit.py,
2197 but it works from inside ipython (and under 2.2, which lacks
2204 but it works from inside ipython (and under 2.2, which lacks
2198 timeit.py). Optionally a number of runs > 1 can be given for
2205 timeit.py). Optionally a number of runs > 1 can be given for
2199 timing very short-running code.
2206 timing very short-running code.
2200
2207
2201 * IPython/genutils.py (uniq_stable): new routine which returns a
2208 * IPython/genutils.py (uniq_stable): new routine which returns a
2202 list of unique elements in any iterable, but in stable order of
2209 list of unique elements in any iterable, but in stable order of
2203 appearance. I needed this for the ultraTB fixes, and it's a handy
2210 appearance. I needed this for the ultraTB fixes, and it's a handy
2204 utility.
2211 utility.
2205
2212
2206 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2213 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2207 dotted names in Verbose exceptions. This had been broken since
2214 dotted names in Verbose exceptions. This had been broken since
2208 the very start, now x.y will properly be printed in a Verbose
2215 the very start, now x.y will properly be printed in a Verbose
2209 traceback, instead of x being shown and y appearing always as an
2216 traceback, instead of x being shown and y appearing always as an
2210 'undefined global'. Getting this to work was a bit tricky,
2217 'undefined global'. Getting this to work was a bit tricky,
2211 because by default python tokenizers are stateless. Saved by
2218 because by default python tokenizers are stateless. Saved by
2212 python's ability to easily add a bit of state to an arbitrary
2219 python's ability to easily add a bit of state to an arbitrary
2213 function (without needing to build a full-blown callable object).
2220 function (without needing to build a full-blown callable object).
2214
2221
2215 Also big cleanup of this code, which had horrendous runtime
2222 Also big cleanup of this code, which had horrendous runtime
2216 lookups of zillions of attributes for colorization. Moved all
2223 lookups of zillions of attributes for colorization. Moved all
2217 this code into a few templates, which make it cleaner and quicker.
2224 this code into a few templates, which make it cleaner and quicker.
2218
2225
2219 Printout quality was also improved for Verbose exceptions: one
2226 Printout quality was also improved for Verbose exceptions: one
2220 variable per line, and memory addresses are printed (this can be
2227 variable per line, and memory addresses are printed (this can be
2221 quite handy in nasty debugging situations, which is what Verbose
2228 quite handy in nasty debugging situations, which is what Verbose
2222 is for).
2229 is for).
2223
2230
2224 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2231 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2225 the command line as scripts to be loaded by embedded instances.
2232 the command line as scripts to be loaded by embedded instances.
2226 Doing so has the potential for an infinite recursion if there are
2233 Doing so has the potential for an infinite recursion if there are
2227 exceptions thrown in the process. This fixes a strange crash
2234 exceptions thrown in the process. This fixes a strange crash
2228 reported by Philippe MULLER <muller-AT-irit.fr>.
2235 reported by Philippe MULLER <muller-AT-irit.fr>.
2229
2236
2230 2004-12-09 Fernando Perez <fperez@colorado.edu>
2237 2004-12-09 Fernando Perez <fperez@colorado.edu>
2231
2238
2232 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2239 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2233 to reflect new names in matplotlib, which now expose the
2240 to reflect new names in matplotlib, which now expose the
2234 matlab-compatible interface via a pylab module instead of the
2241 matlab-compatible interface via a pylab module instead of the
2235 'matlab' name. The new code is backwards compatible, so users of
2242 'matlab' name. The new code is backwards compatible, so users of
2236 all matplotlib versions are OK. Patch by J. Hunter.
2243 all matplotlib versions are OK. Patch by J. Hunter.
2237
2244
2238 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2245 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2239 of __init__ docstrings for instances (class docstrings are already
2246 of __init__ docstrings for instances (class docstrings are already
2240 automatically printed). Instances with customized docstrings
2247 automatically printed). Instances with customized docstrings
2241 (indep. of the class) are also recognized and all 3 separate
2248 (indep. of the class) are also recognized and all 3 separate
2242 docstrings are printed (instance, class, constructor). After some
2249 docstrings are printed (instance, class, constructor). After some
2243 comments/suggestions by J. Hunter.
2250 comments/suggestions by J. Hunter.
2244
2251
2245 2004-12-05 Fernando Perez <fperez@colorado.edu>
2252 2004-12-05 Fernando Perez <fperez@colorado.edu>
2246
2253
2247 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2254 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2248 warnings when tab-completion fails and triggers an exception.
2255 warnings when tab-completion fails and triggers an exception.
2249
2256
2250 2004-12-03 Fernando Perez <fperez@colorado.edu>
2257 2004-12-03 Fernando Perez <fperez@colorado.edu>
2251
2258
2252 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2259 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2253 be triggered when using 'run -p'. An incorrect option flag was
2260 be triggered when using 'run -p'. An incorrect option flag was
2254 being set ('d' instead of 'D').
2261 being set ('d' instead of 'D').
2255 (manpage): fix missing escaped \- sign.
2262 (manpage): fix missing escaped \- sign.
2256
2263
2257 2004-11-30 *** Released version 0.6.5
2264 2004-11-30 *** Released version 0.6.5
2258
2265
2259 2004-11-30 Fernando Perez <fperez@colorado.edu>
2266 2004-11-30 Fernando Perez <fperez@colorado.edu>
2260
2267
2261 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2268 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2262 setting with -d option.
2269 setting with -d option.
2263
2270
2264 * setup.py (docfiles): Fix problem where the doc glob I was using
2271 * setup.py (docfiles): Fix problem where the doc glob I was using
2265 was COMPLETELY BROKEN. It was giving the right files by pure
2272 was COMPLETELY BROKEN. It was giving the right files by pure
2266 accident, but failed once I tried to include ipython.el. Note:
2273 accident, but failed once I tried to include ipython.el. Note:
2267 glob() does NOT allow you to do exclusion on multiple endings!
2274 glob() does NOT allow you to do exclusion on multiple endings!
2268
2275
2269 2004-11-29 Fernando Perez <fperez@colorado.edu>
2276 2004-11-29 Fernando Perez <fperez@colorado.edu>
2270
2277
2271 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2278 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2272 the manpage as the source. Better formatting & consistency.
2279 the manpage as the source. Better formatting & consistency.
2273
2280
2274 * IPython/Magic.py (magic_run): Added new -d option, to run
2281 * IPython/Magic.py (magic_run): Added new -d option, to run
2275 scripts under the control of the python pdb debugger. Note that
2282 scripts under the control of the python pdb debugger. Note that
2276 this required changing the %prun option -d to -D, to avoid a clash
2283 this required changing the %prun option -d to -D, to avoid a clash
2277 (since %run must pass options to %prun, and getopt is too dumb to
2284 (since %run must pass options to %prun, and getopt is too dumb to
2278 handle options with string values with embedded spaces). Thanks
2285 handle options with string values with embedded spaces). Thanks
2279 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2286 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2280 (magic_who_ls): added type matching to %who and %whos, so that one
2287 (magic_who_ls): added type matching to %who and %whos, so that one
2281 can filter their output to only include variables of certain
2288 can filter their output to only include variables of certain
2282 types. Another suggestion by Matthew.
2289 types. Another suggestion by Matthew.
2283 (magic_whos): Added memory summaries in kb and Mb for arrays.
2290 (magic_whos): Added memory summaries in kb and Mb for arrays.
2284 (magic_who): Improve formatting (break lines every 9 vars).
2291 (magic_who): Improve formatting (break lines every 9 vars).
2285
2292
2286 2004-11-28 Fernando Perez <fperez@colorado.edu>
2293 2004-11-28 Fernando Perez <fperez@colorado.edu>
2287
2294
2288 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2295 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2289 cache when empty lines were present.
2296 cache when empty lines were present.
2290
2297
2291 2004-11-24 Fernando Perez <fperez@colorado.edu>
2298 2004-11-24 Fernando Perez <fperez@colorado.edu>
2292
2299
2293 * IPython/usage.py (__doc__): document the re-activated threading
2300 * IPython/usage.py (__doc__): document the re-activated threading
2294 options for WX and GTK.
2301 options for WX and GTK.
2295
2302
2296 2004-11-23 Fernando Perez <fperez@colorado.edu>
2303 2004-11-23 Fernando Perez <fperez@colorado.edu>
2297
2304
2298 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2305 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2299 the -wthread and -gthread options, along with a new -tk one to try
2306 the -wthread and -gthread options, along with a new -tk one to try
2300 and coordinate Tk threading with wx/gtk. The tk support is very
2307 and coordinate Tk threading with wx/gtk. The tk support is very
2301 platform dependent, since it seems to require Tcl and Tk to be
2308 platform dependent, since it seems to require Tcl and Tk to be
2302 built with threads (Fedora1/2 appears NOT to have it, but in
2309 built with threads (Fedora1/2 appears NOT to have it, but in
2303 Prabhu's Debian boxes it works OK). But even with some Tk
2310 Prabhu's Debian boxes it works OK). But even with some Tk
2304 limitations, this is a great improvement.
2311 limitations, this is a great improvement.
2305
2312
2306 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2313 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2307 info in user prompts. Patch by Prabhu.
2314 info in user prompts. Patch by Prabhu.
2308
2315
2309 2004-11-18 Fernando Perez <fperez@colorado.edu>
2316 2004-11-18 Fernando Perez <fperez@colorado.edu>
2310
2317
2311 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2318 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2312 EOFErrors and bail, to avoid infinite loops if a non-terminating
2319 EOFErrors and bail, to avoid infinite loops if a non-terminating
2313 file is fed into ipython. Patch submitted in issue 19 by user,
2320 file is fed into ipython. Patch submitted in issue 19 by user,
2314 many thanks.
2321 many thanks.
2315
2322
2316 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2323 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2317 autoquote/parens in continuation prompts, which can cause lots of
2324 autoquote/parens in continuation prompts, which can cause lots of
2318 problems. Closes roundup issue 20.
2325 problems. Closes roundup issue 20.
2319
2326
2320 2004-11-17 Fernando Perez <fperez@colorado.edu>
2327 2004-11-17 Fernando Perez <fperez@colorado.edu>
2321
2328
2322 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2329 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2323 reported as debian bug #280505. I'm not sure my local changelog
2330 reported as debian bug #280505. I'm not sure my local changelog
2324 entry has the proper debian format (Jack?).
2331 entry has the proper debian format (Jack?).
2325
2332
2326 2004-11-08 *** Released version 0.6.4
2333 2004-11-08 *** Released version 0.6.4
2327
2334
2328 2004-11-08 Fernando Perez <fperez@colorado.edu>
2335 2004-11-08 Fernando Perez <fperez@colorado.edu>
2329
2336
2330 * IPython/iplib.py (init_readline): Fix exit message for Windows
2337 * IPython/iplib.py (init_readline): Fix exit message for Windows
2331 when readline is active. Thanks to a report by Eric Jones
2338 when readline is active. Thanks to a report by Eric Jones
2332 <eric-AT-enthought.com>.
2339 <eric-AT-enthought.com>.
2333
2340
2334 2004-11-07 Fernando Perez <fperez@colorado.edu>
2341 2004-11-07 Fernando Perez <fperez@colorado.edu>
2335
2342
2336 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2343 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2337 sometimes seen by win2k/cygwin users.
2344 sometimes seen by win2k/cygwin users.
2338
2345
2339 2004-11-06 Fernando Perez <fperez@colorado.edu>
2346 2004-11-06 Fernando Perez <fperez@colorado.edu>
2340
2347
2341 * IPython/iplib.py (interact): Change the handling of %Exit from
2348 * IPython/iplib.py (interact): Change the handling of %Exit from
2342 trying to propagate a SystemExit to an internal ipython flag.
2349 trying to propagate a SystemExit to an internal ipython flag.
2343 This is less elegant than using Python's exception mechanism, but
2350 This is less elegant than using Python's exception mechanism, but
2344 I can't get that to work reliably with threads, so under -pylab
2351 I can't get that to work reliably with threads, so under -pylab
2345 %Exit was hanging IPython. Cross-thread exception handling is
2352 %Exit was hanging IPython. Cross-thread exception handling is
2346 really a bitch. Thaks to a bug report by Stephen Walton
2353 really a bitch. Thaks to a bug report by Stephen Walton
2347 <stephen.walton-AT-csun.edu>.
2354 <stephen.walton-AT-csun.edu>.
2348
2355
2349 2004-11-04 Fernando Perez <fperez@colorado.edu>
2356 2004-11-04 Fernando Perez <fperez@colorado.edu>
2350
2357
2351 * IPython/iplib.py (raw_input_original): store a pointer to the
2358 * IPython/iplib.py (raw_input_original): store a pointer to the
2352 true raw_input to harden against code which can modify it
2359 true raw_input to harden against code which can modify it
2353 (wx.py.PyShell does this and would otherwise crash ipython).
2360 (wx.py.PyShell does this and would otherwise crash ipython).
2354 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2361 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2355
2362
2356 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2363 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2357 Ctrl-C problem, which does not mess up the input line.
2364 Ctrl-C problem, which does not mess up the input line.
2358
2365
2359 2004-11-03 Fernando Perez <fperez@colorado.edu>
2366 2004-11-03 Fernando Perez <fperez@colorado.edu>
2360
2367
2361 * IPython/Release.py: Changed licensing to BSD, in all files.
2368 * IPython/Release.py: Changed licensing to BSD, in all files.
2362 (name): lowercase name for tarball/RPM release.
2369 (name): lowercase name for tarball/RPM release.
2363
2370
2364 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2371 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2365 use throughout ipython.
2372 use throughout ipython.
2366
2373
2367 * IPython/Magic.py (Magic._ofind): Switch to using the new
2374 * IPython/Magic.py (Magic._ofind): Switch to using the new
2368 OInspect.getdoc() function.
2375 OInspect.getdoc() function.
2369
2376
2370 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2377 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2371 of the line currently being canceled via Ctrl-C. It's extremely
2378 of the line currently being canceled via Ctrl-C. It's extremely
2372 ugly, but I don't know how to do it better (the problem is one of
2379 ugly, but I don't know how to do it better (the problem is one of
2373 handling cross-thread exceptions).
2380 handling cross-thread exceptions).
2374
2381
2375 2004-10-28 Fernando Perez <fperez@colorado.edu>
2382 2004-10-28 Fernando Perez <fperez@colorado.edu>
2376
2383
2377 * IPython/Shell.py (signal_handler): add signal handlers to trap
2384 * IPython/Shell.py (signal_handler): add signal handlers to trap
2378 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2385 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2379 report by Francesc Alted.
2386 report by Francesc Alted.
2380
2387
2381 2004-10-21 Fernando Perez <fperez@colorado.edu>
2388 2004-10-21 Fernando Perez <fperez@colorado.edu>
2382
2389
2383 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2390 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2384 to % for pysh syntax extensions.
2391 to % for pysh syntax extensions.
2385
2392
2386 2004-10-09 Fernando Perez <fperez@colorado.edu>
2393 2004-10-09 Fernando Perez <fperez@colorado.edu>
2387
2394
2388 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2395 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2389 arrays to print a more useful summary, without calling str(arr).
2396 arrays to print a more useful summary, without calling str(arr).
2390 This avoids the problem of extremely lengthy computations which
2397 This avoids the problem of extremely lengthy computations which
2391 occur if arr is large, and appear to the user as a system lockup
2398 occur if arr is large, and appear to the user as a system lockup
2392 with 100% cpu activity. After a suggestion by Kristian Sandberg
2399 with 100% cpu activity. After a suggestion by Kristian Sandberg
2393 <Kristian.Sandberg@colorado.edu>.
2400 <Kristian.Sandberg@colorado.edu>.
2394 (Magic.__init__): fix bug in global magic escapes not being
2401 (Magic.__init__): fix bug in global magic escapes not being
2395 correctly set.
2402 correctly set.
2396
2403
2397 2004-10-08 Fernando Perez <fperez@colorado.edu>
2404 2004-10-08 Fernando Perez <fperez@colorado.edu>
2398
2405
2399 * IPython/Magic.py (__license__): change to absolute imports of
2406 * IPython/Magic.py (__license__): change to absolute imports of
2400 ipython's own internal packages, to start adapting to the absolute
2407 ipython's own internal packages, to start adapting to the absolute
2401 import requirement of PEP-328.
2408 import requirement of PEP-328.
2402
2409
2403 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2410 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2404 files, and standardize author/license marks through the Release
2411 files, and standardize author/license marks through the Release
2405 module instead of having per/file stuff (except for files with
2412 module instead of having per/file stuff (except for files with
2406 particular licenses, like the MIT/PSF-licensed codes).
2413 particular licenses, like the MIT/PSF-licensed codes).
2407
2414
2408 * IPython/Debugger.py: remove dead code for python 2.1
2415 * IPython/Debugger.py: remove dead code for python 2.1
2409
2416
2410 2004-10-04 Fernando Perez <fperez@colorado.edu>
2417 2004-10-04 Fernando Perez <fperez@colorado.edu>
2411
2418
2412 * IPython/iplib.py (ipmagic): New function for accessing magics
2419 * IPython/iplib.py (ipmagic): New function for accessing magics
2413 via a normal python function call.
2420 via a normal python function call.
2414
2421
2415 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2422 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2416 from '@' to '%', to accomodate the new @decorator syntax of python
2423 from '@' to '%', to accomodate the new @decorator syntax of python
2417 2.4.
2424 2.4.
2418
2425
2419 2004-09-29 Fernando Perez <fperez@colorado.edu>
2426 2004-09-29 Fernando Perez <fperez@colorado.edu>
2420
2427
2421 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2428 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2422 matplotlib.use to prevent running scripts which try to switch
2429 matplotlib.use to prevent running scripts which try to switch
2423 interactive backends from within ipython. This will just crash
2430 interactive backends from within ipython. This will just crash
2424 the python interpreter, so we can't allow it (but a detailed error
2431 the python interpreter, so we can't allow it (but a detailed error
2425 is given to the user).
2432 is given to the user).
2426
2433
2427 2004-09-28 Fernando Perez <fperez@colorado.edu>
2434 2004-09-28 Fernando Perez <fperez@colorado.edu>
2428
2435
2429 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2436 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2430 matplotlib-related fixes so that using @run with non-matplotlib
2437 matplotlib-related fixes so that using @run with non-matplotlib
2431 scripts doesn't pop up spurious plot windows. This requires
2438 scripts doesn't pop up spurious plot windows. This requires
2432 matplotlib >= 0.63, where I had to make some changes as well.
2439 matplotlib >= 0.63, where I had to make some changes as well.
2433
2440
2434 * IPython/ipmaker.py (make_IPython): update version requirement to
2441 * IPython/ipmaker.py (make_IPython): update version requirement to
2435 python 2.2.
2442 python 2.2.
2436
2443
2437 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2444 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2438 banner arg for embedded customization.
2445 banner arg for embedded customization.
2439
2446
2440 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2447 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2441 explicit uses of __IP as the IPython's instance name. Now things
2448 explicit uses of __IP as the IPython's instance name. Now things
2442 are properly handled via the shell.name value. The actual code
2449 are properly handled via the shell.name value. The actual code
2443 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2450 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2444 is much better than before. I'll clean things completely when the
2451 is much better than before. I'll clean things completely when the
2445 magic stuff gets a real overhaul.
2452 magic stuff gets a real overhaul.
2446
2453
2447 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2454 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2448 minor changes to debian dir.
2455 minor changes to debian dir.
2449
2456
2450 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2457 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2451 pointer to the shell itself in the interactive namespace even when
2458 pointer to the shell itself in the interactive namespace even when
2452 a user-supplied dict is provided. This is needed for embedding
2459 a user-supplied dict is provided. This is needed for embedding
2453 purposes (found by tests with Michel Sanner).
2460 purposes (found by tests with Michel Sanner).
2454
2461
2455 2004-09-27 Fernando Perez <fperez@colorado.edu>
2462 2004-09-27 Fernando Perez <fperez@colorado.edu>
2456
2463
2457 * IPython/UserConfig/ipythonrc: remove []{} from
2464 * IPython/UserConfig/ipythonrc: remove []{} from
2458 readline_remove_delims, so that things like [modname.<TAB> do
2465 readline_remove_delims, so that things like [modname.<TAB> do
2459 proper completion. This disables [].TAB, but that's a less common
2466 proper completion. This disables [].TAB, but that's a less common
2460 case than module names in list comprehensions, for example.
2467 case than module names in list comprehensions, for example.
2461 Thanks to a report by Andrea Riciputi.
2468 Thanks to a report by Andrea Riciputi.
2462
2469
2463 2004-09-09 Fernando Perez <fperez@colorado.edu>
2470 2004-09-09 Fernando Perez <fperez@colorado.edu>
2464
2471
2465 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2472 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2466 blocking problems in win32 and osx. Fix by John.
2473 blocking problems in win32 and osx. Fix by John.
2467
2474
2468 2004-09-08 Fernando Perez <fperez@colorado.edu>
2475 2004-09-08 Fernando Perez <fperez@colorado.edu>
2469
2476
2470 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2477 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2471 for Win32 and OSX. Fix by John Hunter.
2478 for Win32 and OSX. Fix by John Hunter.
2472
2479
2473 2004-08-30 *** Released version 0.6.3
2480 2004-08-30 *** Released version 0.6.3
2474
2481
2475 2004-08-30 Fernando Perez <fperez@colorado.edu>
2482 2004-08-30 Fernando Perez <fperez@colorado.edu>
2476
2483
2477 * setup.py (isfile): Add manpages to list of dependent files to be
2484 * setup.py (isfile): Add manpages to list of dependent files to be
2478 updated.
2485 updated.
2479
2486
2480 2004-08-27 Fernando Perez <fperez@colorado.edu>
2487 2004-08-27 Fernando Perez <fperez@colorado.edu>
2481
2488
2482 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2489 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2483 for now. They don't really work with standalone WX/GTK code
2490 for now. They don't really work with standalone WX/GTK code
2484 (though matplotlib IS working fine with both of those backends).
2491 (though matplotlib IS working fine with both of those backends).
2485 This will neeed much more testing. I disabled most things with
2492 This will neeed much more testing. I disabled most things with
2486 comments, so turning it back on later should be pretty easy.
2493 comments, so turning it back on later should be pretty easy.
2487
2494
2488 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2495 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2489 autocalling of expressions like r'foo', by modifying the line
2496 autocalling of expressions like r'foo', by modifying the line
2490 split regexp. Closes
2497 split regexp. Closes
2491 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2498 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2492 Riley <ipythonbugs-AT-sabi.net>.
2499 Riley <ipythonbugs-AT-sabi.net>.
2493 (InteractiveShell.mainloop): honor --nobanner with banner
2500 (InteractiveShell.mainloop): honor --nobanner with banner
2494 extensions.
2501 extensions.
2495
2502
2496 * IPython/Shell.py: Significant refactoring of all classes, so
2503 * IPython/Shell.py: Significant refactoring of all classes, so
2497 that we can really support ALL matplotlib backends and threading
2504 that we can really support ALL matplotlib backends and threading
2498 models (John spotted a bug with Tk which required this). Now we
2505 models (John spotted a bug with Tk which required this). Now we
2499 should support single-threaded, WX-threads and GTK-threads, both
2506 should support single-threaded, WX-threads and GTK-threads, both
2500 for generic code and for matplotlib.
2507 for generic code and for matplotlib.
2501
2508
2502 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2509 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2503 -pylab, to simplify things for users. Will also remove the pylab
2510 -pylab, to simplify things for users. Will also remove the pylab
2504 profile, since now all of matplotlib configuration is directly
2511 profile, since now all of matplotlib configuration is directly
2505 handled here. This also reduces startup time.
2512 handled here. This also reduces startup time.
2506
2513
2507 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2514 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2508 shell wasn't being correctly called. Also in IPShellWX.
2515 shell wasn't being correctly called. Also in IPShellWX.
2509
2516
2510 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2517 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2511 fine-tune banner.
2518 fine-tune banner.
2512
2519
2513 * IPython/numutils.py (spike): Deprecate these spike functions,
2520 * IPython/numutils.py (spike): Deprecate these spike functions,
2514 delete (long deprecated) gnuplot_exec handler.
2521 delete (long deprecated) gnuplot_exec handler.
2515
2522
2516 2004-08-26 Fernando Perez <fperez@colorado.edu>
2523 2004-08-26 Fernando Perez <fperez@colorado.edu>
2517
2524
2518 * ipython.1: Update for threading options, plus some others which
2525 * ipython.1: Update for threading options, plus some others which
2519 were missing.
2526 were missing.
2520
2527
2521 * IPython/ipmaker.py (__call__): Added -wthread option for
2528 * IPython/ipmaker.py (__call__): Added -wthread option for
2522 wxpython thread handling. Make sure threading options are only
2529 wxpython thread handling. Make sure threading options are only
2523 valid at the command line.
2530 valid at the command line.
2524
2531
2525 * scripts/ipython: moved shell selection into a factory function
2532 * scripts/ipython: moved shell selection into a factory function
2526 in Shell.py, to keep the starter script to a minimum.
2533 in Shell.py, to keep the starter script to a minimum.
2527
2534
2528 2004-08-25 Fernando Perez <fperez@colorado.edu>
2535 2004-08-25 Fernando Perez <fperez@colorado.edu>
2529
2536
2530 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2537 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2531 John. Along with some recent changes he made to matplotlib, the
2538 John. Along with some recent changes he made to matplotlib, the
2532 next versions of both systems should work very well together.
2539 next versions of both systems should work very well together.
2533
2540
2534 2004-08-24 Fernando Perez <fperez@colorado.edu>
2541 2004-08-24 Fernando Perez <fperez@colorado.edu>
2535
2542
2536 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2543 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2537 tried to switch the profiling to using hotshot, but I'm getting
2544 tried to switch the profiling to using hotshot, but I'm getting
2538 strange errors from prof.runctx() there. I may be misreading the
2545 strange errors from prof.runctx() there. I may be misreading the
2539 docs, but it looks weird. For now the profiling code will
2546 docs, but it looks weird. For now the profiling code will
2540 continue to use the standard profiler.
2547 continue to use the standard profiler.
2541
2548
2542 2004-08-23 Fernando Perez <fperez@colorado.edu>
2549 2004-08-23 Fernando Perez <fperez@colorado.edu>
2543
2550
2544 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2551 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2545 threaded shell, by John Hunter. It's not quite ready yet, but
2552 threaded shell, by John Hunter. It's not quite ready yet, but
2546 close.
2553 close.
2547
2554
2548 2004-08-22 Fernando Perez <fperez@colorado.edu>
2555 2004-08-22 Fernando Perez <fperez@colorado.edu>
2549
2556
2550 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2557 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2551 in Magic and ultraTB.
2558 in Magic and ultraTB.
2552
2559
2553 * ipython.1: document threading options in manpage.
2560 * ipython.1: document threading options in manpage.
2554
2561
2555 * scripts/ipython: Changed name of -thread option to -gthread,
2562 * scripts/ipython: Changed name of -thread option to -gthread,
2556 since this is GTK specific. I want to leave the door open for a
2563 since this is GTK specific. I want to leave the door open for a
2557 -wthread option for WX, which will most likely be necessary. This
2564 -wthread option for WX, which will most likely be necessary. This
2558 change affects usage and ipmaker as well.
2565 change affects usage and ipmaker as well.
2559
2566
2560 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2567 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2561 handle the matplotlib shell issues. Code by John Hunter
2568 handle the matplotlib shell issues. Code by John Hunter
2562 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2569 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2563 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2570 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2564 broken (and disabled for end users) for now, but it puts the
2571 broken (and disabled for end users) for now, but it puts the
2565 infrastructure in place.
2572 infrastructure in place.
2566
2573
2567 2004-08-21 Fernando Perez <fperez@colorado.edu>
2574 2004-08-21 Fernando Perez <fperez@colorado.edu>
2568
2575
2569 * ipythonrc-pylab: Add matplotlib support.
2576 * ipythonrc-pylab: Add matplotlib support.
2570
2577
2571 * matplotlib_config.py: new files for matplotlib support, part of
2578 * matplotlib_config.py: new files for matplotlib support, part of
2572 the pylab profile.
2579 the pylab profile.
2573
2580
2574 * IPython/usage.py (__doc__): documented the threading options.
2581 * IPython/usage.py (__doc__): documented the threading options.
2575
2582
2576 2004-08-20 Fernando Perez <fperez@colorado.edu>
2583 2004-08-20 Fernando Perez <fperez@colorado.edu>
2577
2584
2578 * ipython: Modified the main calling routine to handle the -thread
2585 * ipython: Modified the main calling routine to handle the -thread
2579 and -mpthread options. This needs to be done as a top-level hack,
2586 and -mpthread options. This needs to be done as a top-level hack,
2580 because it determines which class to instantiate for IPython
2587 because it determines which class to instantiate for IPython
2581 itself.
2588 itself.
2582
2589
2583 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2590 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2584 classes to support multithreaded GTK operation without blocking,
2591 classes to support multithreaded GTK operation without blocking,
2585 and matplotlib with all backends. This is a lot of still very
2592 and matplotlib with all backends. This is a lot of still very
2586 experimental code, and threads are tricky. So it may still have a
2593 experimental code, and threads are tricky. So it may still have a
2587 few rough edges... This code owes a lot to
2594 few rough edges... This code owes a lot to
2588 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2595 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2589 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2596 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2590 to John Hunter for all the matplotlib work.
2597 to John Hunter for all the matplotlib work.
2591
2598
2592 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2599 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2593 options for gtk thread and matplotlib support.
2600 options for gtk thread and matplotlib support.
2594
2601
2595 2004-08-16 Fernando Perez <fperez@colorado.edu>
2602 2004-08-16 Fernando Perez <fperez@colorado.edu>
2596
2603
2597 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2604 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2598 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2605 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2599 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2606 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2600
2607
2601 2004-08-11 Fernando Perez <fperez@colorado.edu>
2608 2004-08-11 Fernando Perez <fperez@colorado.edu>
2602
2609
2603 * setup.py (isfile): Fix build so documentation gets updated for
2610 * setup.py (isfile): Fix build so documentation gets updated for
2604 rpms (it was only done for .tgz builds).
2611 rpms (it was only done for .tgz builds).
2605
2612
2606 2004-08-10 Fernando Perez <fperez@colorado.edu>
2613 2004-08-10 Fernando Perez <fperez@colorado.edu>
2607
2614
2608 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2615 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2609
2616
2610 * iplib.py : Silence syntax error exceptions in tab-completion.
2617 * iplib.py : Silence syntax error exceptions in tab-completion.
2611
2618
2612 2004-08-05 Fernando Perez <fperez@colorado.edu>
2619 2004-08-05 Fernando Perez <fperez@colorado.edu>
2613
2620
2614 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2621 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2615 'color off' mark for continuation prompts. This was causing long
2622 'color off' mark for continuation prompts. This was causing long
2616 continuation lines to mis-wrap.
2623 continuation lines to mis-wrap.
2617
2624
2618 2004-08-01 Fernando Perez <fperez@colorado.edu>
2625 2004-08-01 Fernando Perez <fperez@colorado.edu>
2619
2626
2620 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2627 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2621 for building ipython to be a parameter. All this is necessary
2628 for building ipython to be a parameter. All this is necessary
2622 right now to have a multithreaded version, but this insane
2629 right now to have a multithreaded version, but this insane
2623 non-design will be cleaned up soon. For now, it's a hack that
2630 non-design will be cleaned up soon. For now, it's a hack that
2624 works.
2631 works.
2625
2632
2626 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2633 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2627 args in various places. No bugs so far, but it's a dangerous
2634 args in various places. No bugs so far, but it's a dangerous
2628 practice.
2635 practice.
2629
2636
2630 2004-07-31 Fernando Perez <fperez@colorado.edu>
2637 2004-07-31 Fernando Perez <fperez@colorado.edu>
2631
2638
2632 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2639 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2633 fix completion of files with dots in their names under most
2640 fix completion of files with dots in their names under most
2634 profiles (pysh was OK because the completion order is different).
2641 profiles (pysh was OK because the completion order is different).
2635
2642
2636 2004-07-27 Fernando Perez <fperez@colorado.edu>
2643 2004-07-27 Fernando Perez <fperez@colorado.edu>
2637
2644
2638 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2645 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2639 keywords manually, b/c the one in keyword.py was removed in python
2646 keywords manually, b/c the one in keyword.py was removed in python
2640 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2647 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2641 This is NOT a bug under python 2.3 and earlier.
2648 This is NOT a bug under python 2.3 and earlier.
2642
2649
2643 2004-07-26 Fernando Perez <fperez@colorado.edu>
2650 2004-07-26 Fernando Perez <fperez@colorado.edu>
2644
2651
2645 * IPython/ultraTB.py (VerboseTB.text): Add another
2652 * IPython/ultraTB.py (VerboseTB.text): Add another
2646 linecache.checkcache() call to try to prevent inspect.py from
2653 linecache.checkcache() call to try to prevent inspect.py from
2647 crashing under python 2.3. I think this fixes
2654 crashing under python 2.3. I think this fixes
2648 http://www.scipy.net/roundup/ipython/issue17.
2655 http://www.scipy.net/roundup/ipython/issue17.
2649
2656
2650 2004-07-26 *** Released version 0.6.2
2657 2004-07-26 *** Released version 0.6.2
2651
2658
2652 2004-07-26 Fernando Perez <fperez@colorado.edu>
2659 2004-07-26 Fernando Perez <fperez@colorado.edu>
2653
2660
2654 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2661 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2655 fail for any number.
2662 fail for any number.
2656 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2663 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2657 empty bookmarks.
2664 empty bookmarks.
2658
2665
2659 2004-07-26 *** Released version 0.6.1
2666 2004-07-26 *** Released version 0.6.1
2660
2667
2661 2004-07-26 Fernando Perez <fperez@colorado.edu>
2668 2004-07-26 Fernando Perez <fperez@colorado.edu>
2662
2669
2663 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2670 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2664
2671
2665 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2672 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2666 escaping '()[]{}' in filenames.
2673 escaping '()[]{}' in filenames.
2667
2674
2668 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2675 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2669 Python 2.2 users who lack a proper shlex.split.
2676 Python 2.2 users who lack a proper shlex.split.
2670
2677
2671 2004-07-19 Fernando Perez <fperez@colorado.edu>
2678 2004-07-19 Fernando Perez <fperez@colorado.edu>
2672
2679
2673 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2680 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2674 for reading readline's init file. I follow the normal chain:
2681 for reading readline's init file. I follow the normal chain:
2675 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2682 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2676 report by Mike Heeter. This closes
2683 report by Mike Heeter. This closes
2677 http://www.scipy.net/roundup/ipython/issue16.
2684 http://www.scipy.net/roundup/ipython/issue16.
2678
2685
2679 2004-07-18 Fernando Perez <fperez@colorado.edu>
2686 2004-07-18 Fernando Perez <fperez@colorado.edu>
2680
2687
2681 * IPython/iplib.py (__init__): Add better handling of '\' under
2688 * IPython/iplib.py (__init__): Add better handling of '\' under
2682 Win32 for filenames. After a patch by Ville.
2689 Win32 for filenames. After a patch by Ville.
2683
2690
2684 2004-07-17 Fernando Perez <fperez@colorado.edu>
2691 2004-07-17 Fernando Perez <fperez@colorado.edu>
2685
2692
2686 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2693 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2687 autocalling would be triggered for 'foo is bar' if foo is
2694 autocalling would be triggered for 'foo is bar' if foo is
2688 callable. I also cleaned up the autocall detection code to use a
2695 callable. I also cleaned up the autocall detection code to use a
2689 regexp, which is faster. Bug reported by Alexander Schmolck.
2696 regexp, which is faster. Bug reported by Alexander Schmolck.
2690
2697
2691 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2698 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2692 '?' in them would confuse the help system. Reported by Alex
2699 '?' in them would confuse the help system. Reported by Alex
2693 Schmolck.
2700 Schmolck.
2694
2701
2695 2004-07-16 Fernando Perez <fperez@colorado.edu>
2702 2004-07-16 Fernando Perez <fperez@colorado.edu>
2696
2703
2697 * IPython/GnuplotInteractive.py (__all__): added plot2.
2704 * IPython/GnuplotInteractive.py (__all__): added plot2.
2698
2705
2699 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2706 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2700 plotting dictionaries, lists or tuples of 1d arrays.
2707 plotting dictionaries, lists or tuples of 1d arrays.
2701
2708
2702 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2709 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2703 optimizations.
2710 optimizations.
2704
2711
2705 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2712 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2706 the information which was there from Janko's original IPP code:
2713 the information which was there from Janko's original IPP code:
2707
2714
2708 03.05.99 20:53 porto.ifm.uni-kiel.de
2715 03.05.99 20:53 porto.ifm.uni-kiel.de
2709 --Started changelog.
2716 --Started changelog.
2710 --make clear do what it say it does
2717 --make clear do what it say it does
2711 --added pretty output of lines from inputcache
2718 --added pretty output of lines from inputcache
2712 --Made Logger a mixin class, simplifies handling of switches
2719 --Made Logger a mixin class, simplifies handling of switches
2713 --Added own completer class. .string<TAB> expands to last history
2720 --Added own completer class. .string<TAB> expands to last history
2714 line which starts with string. The new expansion is also present
2721 line which starts with string. The new expansion is also present
2715 with Ctrl-r from the readline library. But this shows, who this
2722 with Ctrl-r from the readline library. But this shows, who this
2716 can be done for other cases.
2723 can be done for other cases.
2717 --Added convention that all shell functions should accept a
2724 --Added convention that all shell functions should accept a
2718 parameter_string This opens the door for different behaviour for
2725 parameter_string This opens the door for different behaviour for
2719 each function. @cd is a good example of this.
2726 each function. @cd is a good example of this.
2720
2727
2721 04.05.99 12:12 porto.ifm.uni-kiel.de
2728 04.05.99 12:12 porto.ifm.uni-kiel.de
2722 --added logfile rotation
2729 --added logfile rotation
2723 --added new mainloop method which freezes first the namespace
2730 --added new mainloop method which freezes first the namespace
2724
2731
2725 07.05.99 21:24 porto.ifm.uni-kiel.de
2732 07.05.99 21:24 porto.ifm.uni-kiel.de
2726 --added the docreader classes. Now there is a help system.
2733 --added the docreader classes. Now there is a help system.
2727 -This is only a first try. Currently it's not easy to put new
2734 -This is only a first try. Currently it's not easy to put new
2728 stuff in the indices. But this is the way to go. Info would be
2735 stuff in the indices. But this is the way to go. Info would be
2729 better, but HTML is every where and not everybody has an info
2736 better, but HTML is every where and not everybody has an info
2730 system installed and it's not so easy to change html-docs to info.
2737 system installed and it's not so easy to change html-docs to info.
2731 --added global logfile option
2738 --added global logfile option
2732 --there is now a hook for object inspection method pinfo needs to
2739 --there is now a hook for object inspection method pinfo needs to
2733 be provided for this. Can be reached by two '??'.
2740 be provided for this. Can be reached by two '??'.
2734
2741
2735 08.05.99 20:51 porto.ifm.uni-kiel.de
2742 08.05.99 20:51 porto.ifm.uni-kiel.de
2736 --added a README
2743 --added a README
2737 --bug in rc file. Something has changed so functions in the rc
2744 --bug in rc file. Something has changed so functions in the rc
2738 file need to reference the shell and not self. Not clear if it's a
2745 file need to reference the shell and not self. Not clear if it's a
2739 bug or feature.
2746 bug or feature.
2740 --changed rc file for new behavior
2747 --changed rc file for new behavior
2741
2748
2742 2004-07-15 Fernando Perez <fperez@colorado.edu>
2749 2004-07-15 Fernando Perez <fperez@colorado.edu>
2743
2750
2744 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2751 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2745 cache was falling out of sync in bizarre manners when multi-line
2752 cache was falling out of sync in bizarre manners when multi-line
2746 input was present. Minor optimizations and cleanup.
2753 input was present. Minor optimizations and cleanup.
2747
2754
2748 (Logger): Remove old Changelog info for cleanup. This is the
2755 (Logger): Remove old Changelog info for cleanup. This is the
2749 information which was there from Janko's original code:
2756 information which was there from Janko's original code:
2750
2757
2751 Changes to Logger: - made the default log filename a parameter
2758 Changes to Logger: - made the default log filename a parameter
2752
2759
2753 - put a check for lines beginning with !@? in log(). Needed
2760 - put a check for lines beginning with !@? in log(). Needed
2754 (even if the handlers properly log their lines) for mid-session
2761 (even if the handlers properly log their lines) for mid-session
2755 logging activation to work properly. Without this, lines logged
2762 logging activation to work properly. Without this, lines logged
2756 in mid session, which get read from the cache, would end up
2763 in mid session, which get read from the cache, would end up
2757 'bare' (with !@? in the open) in the log. Now they are caught
2764 'bare' (with !@? in the open) in the log. Now they are caught
2758 and prepended with a #.
2765 and prepended with a #.
2759
2766
2760 * IPython/iplib.py (InteractiveShell.init_readline): added check
2767 * IPython/iplib.py (InteractiveShell.init_readline): added check
2761 in case MagicCompleter fails to be defined, so we don't crash.
2768 in case MagicCompleter fails to be defined, so we don't crash.
2762
2769
2763 2004-07-13 Fernando Perez <fperez@colorado.edu>
2770 2004-07-13 Fernando Perez <fperez@colorado.edu>
2764
2771
2765 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2772 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2766 of EPS if the requested filename ends in '.eps'.
2773 of EPS if the requested filename ends in '.eps'.
2767
2774
2768 2004-07-04 Fernando Perez <fperez@colorado.edu>
2775 2004-07-04 Fernando Perez <fperez@colorado.edu>
2769
2776
2770 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2777 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2771 escaping of quotes when calling the shell.
2778 escaping of quotes when calling the shell.
2772
2779
2773 2004-07-02 Fernando Perez <fperez@colorado.edu>
2780 2004-07-02 Fernando Perez <fperez@colorado.edu>
2774
2781
2775 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2782 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2776 gettext not working because we were clobbering '_'. Fixes
2783 gettext not working because we were clobbering '_'. Fixes
2777 http://www.scipy.net/roundup/ipython/issue6.
2784 http://www.scipy.net/roundup/ipython/issue6.
2778
2785
2779 2004-07-01 Fernando Perez <fperez@colorado.edu>
2786 2004-07-01 Fernando Perez <fperez@colorado.edu>
2780
2787
2781 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2788 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2782 into @cd. Patch by Ville.
2789 into @cd. Patch by Ville.
2783
2790
2784 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2791 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2785 new function to store things after ipmaker runs. Patch by Ville.
2792 new function to store things after ipmaker runs. Patch by Ville.
2786 Eventually this will go away once ipmaker is removed and the class
2793 Eventually this will go away once ipmaker is removed and the class
2787 gets cleaned up, but for now it's ok. Key functionality here is
2794 gets cleaned up, but for now it's ok. Key functionality here is
2788 the addition of the persistent storage mechanism, a dict for
2795 the addition of the persistent storage mechanism, a dict for
2789 keeping data across sessions (for now just bookmarks, but more can
2796 keeping data across sessions (for now just bookmarks, but more can
2790 be implemented later).
2797 be implemented later).
2791
2798
2792 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2799 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2793 persistent across sections. Patch by Ville, I modified it
2800 persistent across sections. Patch by Ville, I modified it
2794 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2801 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2795 added a '-l' option to list all bookmarks.
2802 added a '-l' option to list all bookmarks.
2796
2803
2797 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2804 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2798 center for cleanup. Registered with atexit.register(). I moved
2805 center for cleanup. Registered with atexit.register(). I moved
2799 here the old exit_cleanup(). After a patch by Ville.
2806 here the old exit_cleanup(). After a patch by Ville.
2800
2807
2801 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2808 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2802 characters in the hacked shlex_split for python 2.2.
2809 characters in the hacked shlex_split for python 2.2.
2803
2810
2804 * IPython/iplib.py (file_matches): more fixes to filenames with
2811 * IPython/iplib.py (file_matches): more fixes to filenames with
2805 whitespace in them. It's not perfect, but limitations in python's
2812 whitespace in them. It's not perfect, but limitations in python's
2806 readline make it impossible to go further.
2813 readline make it impossible to go further.
2807
2814
2808 2004-06-29 Fernando Perez <fperez@colorado.edu>
2815 2004-06-29 Fernando Perez <fperez@colorado.edu>
2809
2816
2810 * IPython/iplib.py (file_matches): escape whitespace correctly in
2817 * IPython/iplib.py (file_matches): escape whitespace correctly in
2811 filename completions. Bug reported by Ville.
2818 filename completions. Bug reported by Ville.
2812
2819
2813 2004-06-28 Fernando Perez <fperez@colorado.edu>
2820 2004-06-28 Fernando Perez <fperez@colorado.edu>
2814
2821
2815 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2822 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2816 the history file will be called 'history-PROFNAME' (or just
2823 the history file will be called 'history-PROFNAME' (or just
2817 'history' if no profile is loaded). I was getting annoyed at
2824 'history' if no profile is loaded). I was getting annoyed at
2818 getting my Numerical work history clobbered by pysh sessions.
2825 getting my Numerical work history clobbered by pysh sessions.
2819
2826
2820 * IPython/iplib.py (InteractiveShell.__init__): Internal
2827 * IPython/iplib.py (InteractiveShell.__init__): Internal
2821 getoutputerror() function so that we can honor the system_verbose
2828 getoutputerror() function so that we can honor the system_verbose
2822 flag for _all_ system calls. I also added escaping of #
2829 flag for _all_ system calls. I also added escaping of #
2823 characters here to avoid confusing Itpl.
2830 characters here to avoid confusing Itpl.
2824
2831
2825 * IPython/Magic.py (shlex_split): removed call to shell in
2832 * IPython/Magic.py (shlex_split): removed call to shell in
2826 parse_options and replaced it with shlex.split(). The annoying
2833 parse_options and replaced it with shlex.split(). The annoying
2827 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2834 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2828 to backport it from 2.3, with several frail hacks (the shlex
2835 to backport it from 2.3, with several frail hacks (the shlex
2829 module is rather limited in 2.2). Thanks to a suggestion by Ville
2836 module is rather limited in 2.2). Thanks to a suggestion by Ville
2830 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2837 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2831 problem.
2838 problem.
2832
2839
2833 (Magic.magic_system_verbose): new toggle to print the actual
2840 (Magic.magic_system_verbose): new toggle to print the actual
2834 system calls made by ipython. Mainly for debugging purposes.
2841 system calls made by ipython. Mainly for debugging purposes.
2835
2842
2836 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2843 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2837 doesn't support persistence. Reported (and fix suggested) by
2844 doesn't support persistence. Reported (and fix suggested) by
2838 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2845 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2839
2846
2840 2004-06-26 Fernando Perez <fperez@colorado.edu>
2847 2004-06-26 Fernando Perez <fperez@colorado.edu>
2841
2848
2842 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2849 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2843 continue prompts.
2850 continue prompts.
2844
2851
2845 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2852 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2846 function (basically a big docstring) and a few more things here to
2853 function (basically a big docstring) and a few more things here to
2847 speedup startup. pysh.py is now very lightweight. We want because
2854 speedup startup. pysh.py is now very lightweight. We want because
2848 it gets execfile'd, while InterpreterExec gets imported, so
2855 it gets execfile'd, while InterpreterExec gets imported, so
2849 byte-compilation saves time.
2856 byte-compilation saves time.
2850
2857
2851 2004-06-25 Fernando Perez <fperez@colorado.edu>
2858 2004-06-25 Fernando Perez <fperez@colorado.edu>
2852
2859
2853 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2860 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2854 -NUM', which was recently broken.
2861 -NUM', which was recently broken.
2855
2862
2856 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2863 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2857 in multi-line input (but not !!, which doesn't make sense there).
2864 in multi-line input (but not !!, which doesn't make sense there).
2858
2865
2859 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2866 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2860 It's just too useful, and people can turn it off in the less
2867 It's just too useful, and people can turn it off in the less
2861 common cases where it's a problem.
2868 common cases where it's a problem.
2862
2869
2863 2004-06-24 Fernando Perez <fperez@colorado.edu>
2870 2004-06-24 Fernando Perez <fperez@colorado.edu>
2864
2871
2865 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2872 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2866 special syntaxes (like alias calling) is now allied in multi-line
2873 special syntaxes (like alias calling) is now allied in multi-line
2867 input. This is still _very_ experimental, but it's necessary for
2874 input. This is still _very_ experimental, but it's necessary for
2868 efficient shell usage combining python looping syntax with system
2875 efficient shell usage combining python looping syntax with system
2869 calls. For now it's restricted to aliases, I don't think it
2876 calls. For now it's restricted to aliases, I don't think it
2870 really even makes sense to have this for magics.
2877 really even makes sense to have this for magics.
2871
2878
2872 2004-06-23 Fernando Perez <fperez@colorado.edu>
2879 2004-06-23 Fernando Perez <fperez@colorado.edu>
2873
2880
2874 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2881 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2875 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2882 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2876
2883
2877 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2884 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2878 extensions under Windows (after code sent by Gary Bishop). The
2885 extensions under Windows (after code sent by Gary Bishop). The
2879 extensions considered 'executable' are stored in IPython's rc
2886 extensions considered 'executable' are stored in IPython's rc
2880 structure as win_exec_ext.
2887 structure as win_exec_ext.
2881
2888
2882 * IPython/genutils.py (shell): new function, like system() but
2889 * IPython/genutils.py (shell): new function, like system() but
2883 without return value. Very useful for interactive shell work.
2890 without return value. Very useful for interactive shell work.
2884
2891
2885 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2892 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2886 delete aliases.
2893 delete aliases.
2887
2894
2888 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2895 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2889 sure that the alias table doesn't contain python keywords.
2896 sure that the alias table doesn't contain python keywords.
2890
2897
2891 2004-06-21 Fernando Perez <fperez@colorado.edu>
2898 2004-06-21 Fernando Perez <fperez@colorado.edu>
2892
2899
2893 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2900 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2894 non-existent items are found in $PATH. Reported by Thorsten.
2901 non-existent items are found in $PATH. Reported by Thorsten.
2895
2902
2896 2004-06-20 Fernando Perez <fperez@colorado.edu>
2903 2004-06-20 Fernando Perez <fperez@colorado.edu>
2897
2904
2898 * IPython/iplib.py (complete): modified the completer so that the
2905 * IPython/iplib.py (complete): modified the completer so that the
2899 order of priorities can be easily changed at runtime.
2906 order of priorities can be easily changed at runtime.
2900
2907
2901 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2908 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2902 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2909 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2903
2910
2904 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2911 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2905 expand Python variables prepended with $ in all system calls. The
2912 expand Python variables prepended with $ in all system calls. The
2906 same was done to InteractiveShell.handle_shell_escape. Now all
2913 same was done to InteractiveShell.handle_shell_escape. Now all
2907 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2914 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2908 expansion of python variables and expressions according to the
2915 expansion of python variables and expressions according to the
2909 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2916 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2910
2917
2911 Though PEP-215 has been rejected, a similar (but simpler) one
2918 Though PEP-215 has been rejected, a similar (but simpler) one
2912 seems like it will go into Python 2.4, PEP-292 -
2919 seems like it will go into Python 2.4, PEP-292 -
2913 http://www.python.org/peps/pep-0292.html.
2920 http://www.python.org/peps/pep-0292.html.
2914
2921
2915 I'll keep the full syntax of PEP-215, since IPython has since the
2922 I'll keep the full syntax of PEP-215, since IPython has since the
2916 start used Ka-Ping Yee's reference implementation discussed there
2923 start used Ka-Ping Yee's reference implementation discussed there
2917 (Itpl), and I actually like the powerful semantics it offers.
2924 (Itpl), and I actually like the powerful semantics it offers.
2918
2925
2919 In order to access normal shell variables, the $ has to be escaped
2926 In order to access normal shell variables, the $ has to be escaped
2920 via an extra $. For example:
2927 via an extra $. For example:
2921
2928
2922 In [7]: PATH='a python variable'
2929 In [7]: PATH='a python variable'
2923
2930
2924 In [8]: !echo $PATH
2931 In [8]: !echo $PATH
2925 a python variable
2932 a python variable
2926
2933
2927 In [9]: !echo $$PATH
2934 In [9]: !echo $$PATH
2928 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2935 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2929
2936
2930 (Magic.parse_options): escape $ so the shell doesn't evaluate
2937 (Magic.parse_options): escape $ so the shell doesn't evaluate
2931 things prematurely.
2938 things prematurely.
2932
2939
2933 * IPython/iplib.py (InteractiveShell.call_alias): added the
2940 * IPython/iplib.py (InteractiveShell.call_alias): added the
2934 ability for aliases to expand python variables via $.
2941 ability for aliases to expand python variables via $.
2935
2942
2936 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2943 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2937 system, now there's a @rehash/@rehashx pair of magics. These work
2944 system, now there's a @rehash/@rehashx pair of magics. These work
2938 like the csh rehash command, and can be invoked at any time. They
2945 like the csh rehash command, and can be invoked at any time. They
2939 build a table of aliases to everything in the user's $PATH
2946 build a table of aliases to everything in the user's $PATH
2940 (@rehash uses everything, @rehashx is slower but only adds
2947 (@rehash uses everything, @rehashx is slower but only adds
2941 executable files). With this, the pysh.py-based shell profile can
2948 executable files). With this, the pysh.py-based shell profile can
2942 now simply call rehash upon startup, and full access to all
2949 now simply call rehash upon startup, and full access to all
2943 programs in the user's path is obtained.
2950 programs in the user's path is obtained.
2944
2951
2945 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2952 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2946 functionality is now fully in place. I removed the old dynamic
2953 functionality is now fully in place. I removed the old dynamic
2947 code generation based approach, in favor of a much lighter one
2954 code generation based approach, in favor of a much lighter one
2948 based on a simple dict. The advantage is that this allows me to
2955 based on a simple dict. The advantage is that this allows me to
2949 now have thousands of aliases with negligible cost (unthinkable
2956 now have thousands of aliases with negligible cost (unthinkable
2950 with the old system).
2957 with the old system).
2951
2958
2952 2004-06-19 Fernando Perez <fperez@colorado.edu>
2959 2004-06-19 Fernando Perez <fperez@colorado.edu>
2953
2960
2954 * IPython/iplib.py (__init__): extended MagicCompleter class to
2961 * IPython/iplib.py (__init__): extended MagicCompleter class to
2955 also complete (last in priority) on user aliases.
2962 also complete (last in priority) on user aliases.
2956
2963
2957 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2964 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2958 call to eval.
2965 call to eval.
2959 (ItplNS.__init__): Added a new class which functions like Itpl,
2966 (ItplNS.__init__): Added a new class which functions like Itpl,
2960 but allows configuring the namespace for the evaluation to occur
2967 but allows configuring the namespace for the evaluation to occur
2961 in.
2968 in.
2962
2969
2963 2004-06-18 Fernando Perez <fperez@colorado.edu>
2970 2004-06-18 Fernando Perez <fperez@colorado.edu>
2964
2971
2965 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2972 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2966 better message when 'exit' or 'quit' are typed (a common newbie
2973 better message when 'exit' or 'quit' are typed (a common newbie
2967 confusion).
2974 confusion).
2968
2975
2969 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2976 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2970 check for Windows users.
2977 check for Windows users.
2971
2978
2972 * IPython/iplib.py (InteractiveShell.user_setup): removed
2979 * IPython/iplib.py (InteractiveShell.user_setup): removed
2973 disabling of colors for Windows. I'll test at runtime and issue a
2980 disabling of colors for Windows. I'll test at runtime and issue a
2974 warning if Gary's readline isn't found, as to nudge users to
2981 warning if Gary's readline isn't found, as to nudge users to
2975 download it.
2982 download it.
2976
2983
2977 2004-06-16 Fernando Perez <fperez@colorado.edu>
2984 2004-06-16 Fernando Perez <fperez@colorado.edu>
2978
2985
2979 * IPython/genutils.py (Stream.__init__): changed to print errors
2986 * IPython/genutils.py (Stream.__init__): changed to print errors
2980 to sys.stderr. I had a circular dependency here. Now it's
2987 to sys.stderr. I had a circular dependency here. Now it's
2981 possible to run ipython as IDLE's shell (consider this pre-alpha,
2988 possible to run ipython as IDLE's shell (consider this pre-alpha,
2982 since true stdout things end up in the starting terminal instead
2989 since true stdout things end up in the starting terminal instead
2983 of IDLE's out).
2990 of IDLE's out).
2984
2991
2985 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2992 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2986 users who haven't # updated their prompt_in2 definitions. Remove
2993 users who haven't # updated their prompt_in2 definitions. Remove
2987 eventually.
2994 eventually.
2988 (multiple_replace): added credit to original ASPN recipe.
2995 (multiple_replace): added credit to original ASPN recipe.
2989
2996
2990 2004-06-15 Fernando Perez <fperez@colorado.edu>
2997 2004-06-15 Fernando Perez <fperez@colorado.edu>
2991
2998
2992 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2999 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2993 list of auto-defined aliases.
3000 list of auto-defined aliases.
2994
3001
2995 2004-06-13 Fernando Perez <fperez@colorado.edu>
3002 2004-06-13 Fernando Perez <fperez@colorado.edu>
2996
3003
2997 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3004 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2998 install was really requested (so setup.py can be used for other
3005 install was really requested (so setup.py can be used for other
2999 things under Windows).
3006 things under Windows).
3000
3007
3001 2004-06-10 Fernando Perez <fperez@colorado.edu>
3008 2004-06-10 Fernando Perez <fperez@colorado.edu>
3002
3009
3003 * IPython/Logger.py (Logger.create_log): Manually remove any old
3010 * IPython/Logger.py (Logger.create_log): Manually remove any old
3004 backup, since os.remove may fail under Windows. Fixes bug
3011 backup, since os.remove may fail under Windows. Fixes bug
3005 reported by Thorsten.
3012 reported by Thorsten.
3006
3013
3007 2004-06-09 Fernando Perez <fperez@colorado.edu>
3014 2004-06-09 Fernando Perez <fperez@colorado.edu>
3008
3015
3009 * examples/example-embed.py: fixed all references to %n (replaced
3016 * examples/example-embed.py: fixed all references to %n (replaced
3010 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3017 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3011 for all examples and the manual as well.
3018 for all examples and the manual as well.
3012
3019
3013 2004-06-08 Fernando Perez <fperez@colorado.edu>
3020 2004-06-08 Fernando Perez <fperez@colorado.edu>
3014
3021
3015 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3022 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3016 alignment and color management. All 3 prompt subsystems now
3023 alignment and color management. All 3 prompt subsystems now
3017 inherit from BasePrompt.
3024 inherit from BasePrompt.
3018
3025
3019 * tools/release: updates for windows installer build and tag rpms
3026 * tools/release: updates for windows installer build and tag rpms
3020 with python version (since paths are fixed).
3027 with python version (since paths are fixed).
3021
3028
3022 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3029 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3023 which will become eventually obsolete. Also fixed the default
3030 which will become eventually obsolete. Also fixed the default
3024 prompt_in2 to use \D, so at least new users start with the correct
3031 prompt_in2 to use \D, so at least new users start with the correct
3025 defaults.
3032 defaults.
3026 WARNING: Users with existing ipythonrc files will need to apply
3033 WARNING: Users with existing ipythonrc files will need to apply
3027 this fix manually!
3034 this fix manually!
3028
3035
3029 * setup.py: make windows installer (.exe). This is finally the
3036 * setup.py: make windows installer (.exe). This is finally the
3030 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3037 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3031 which I hadn't included because it required Python 2.3 (or recent
3038 which I hadn't included because it required Python 2.3 (or recent
3032 distutils).
3039 distutils).
3033
3040
3034 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3041 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3035 usage of new '\D' escape.
3042 usage of new '\D' escape.
3036
3043
3037 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3044 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3038 lacks os.getuid())
3045 lacks os.getuid())
3039 (CachedOutput.set_colors): Added the ability to turn coloring
3046 (CachedOutput.set_colors): Added the ability to turn coloring
3040 on/off with @colors even for manually defined prompt colors. It
3047 on/off with @colors even for manually defined prompt colors. It
3041 uses a nasty global, but it works safely and via the generic color
3048 uses a nasty global, but it works safely and via the generic color
3042 handling mechanism.
3049 handling mechanism.
3043 (Prompt2.__init__): Introduced new escape '\D' for continuation
3050 (Prompt2.__init__): Introduced new escape '\D' for continuation
3044 prompts. It represents the counter ('\#') as dots.
3051 prompts. It represents the counter ('\#') as dots.
3045 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3052 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3046 need to update their ipythonrc files and replace '%n' with '\D' in
3053 need to update their ipythonrc files and replace '%n' with '\D' in
3047 their prompt_in2 settings everywhere. Sorry, but there's
3054 their prompt_in2 settings everywhere. Sorry, but there's
3048 otherwise no clean way to get all prompts to properly align. The
3055 otherwise no clean way to get all prompts to properly align. The
3049 ipythonrc shipped with IPython has been updated.
3056 ipythonrc shipped with IPython has been updated.
3050
3057
3051 2004-06-07 Fernando Perez <fperez@colorado.edu>
3058 2004-06-07 Fernando Perez <fperez@colorado.edu>
3052
3059
3053 * setup.py (isfile): Pass local_icons option to latex2html, so the
3060 * setup.py (isfile): Pass local_icons option to latex2html, so the
3054 resulting HTML file is self-contained. Thanks to
3061 resulting HTML file is self-contained. Thanks to
3055 dryice-AT-liu.com.cn for the tip.
3062 dryice-AT-liu.com.cn for the tip.
3056
3063
3057 * pysh.py: I created a new profile 'shell', which implements a
3064 * pysh.py: I created a new profile 'shell', which implements a
3058 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3065 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3059 system shell, nor will it become one anytime soon. It's mainly
3066 system shell, nor will it become one anytime soon. It's mainly
3060 meant to illustrate the use of the new flexible bash-like prompts.
3067 meant to illustrate the use of the new flexible bash-like prompts.
3061 I guess it could be used by hardy souls for true shell management,
3068 I guess it could be used by hardy souls for true shell management,
3062 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3069 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3063 profile. This uses the InterpreterExec extension provided by
3070 profile. This uses the InterpreterExec extension provided by
3064 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3071 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3065
3072
3066 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3073 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3067 auto-align itself with the length of the previous input prompt
3074 auto-align itself with the length of the previous input prompt
3068 (taking into account the invisible color escapes).
3075 (taking into account the invisible color escapes).
3069 (CachedOutput.__init__): Large restructuring of this class. Now
3076 (CachedOutput.__init__): Large restructuring of this class. Now
3070 all three prompts (primary1, primary2, output) are proper objects,
3077 all three prompts (primary1, primary2, output) are proper objects,
3071 managed by the 'parent' CachedOutput class. The code is still a
3078 managed by the 'parent' CachedOutput class. The code is still a
3072 bit hackish (all prompts share state via a pointer to the cache),
3079 bit hackish (all prompts share state via a pointer to the cache),
3073 but it's overall far cleaner than before.
3080 but it's overall far cleaner than before.
3074
3081
3075 * IPython/genutils.py (getoutputerror): modified to add verbose,
3082 * IPython/genutils.py (getoutputerror): modified to add verbose,
3076 debug and header options. This makes the interface of all getout*
3083 debug and header options. This makes the interface of all getout*
3077 functions uniform.
3084 functions uniform.
3078 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3085 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3079
3086
3080 * IPython/Magic.py (Magic.default_option): added a function to
3087 * IPython/Magic.py (Magic.default_option): added a function to
3081 allow registering default options for any magic command. This
3088 allow registering default options for any magic command. This
3082 makes it easy to have profiles which customize the magics globally
3089 makes it easy to have profiles which customize the magics globally
3083 for a certain use. The values set through this function are
3090 for a certain use. The values set through this function are
3084 picked up by the parse_options() method, which all magics should
3091 picked up by the parse_options() method, which all magics should
3085 use to parse their options.
3092 use to parse their options.
3086
3093
3087 * IPython/genutils.py (warn): modified the warnings framework to
3094 * IPython/genutils.py (warn): modified the warnings framework to
3088 use the Term I/O class. I'm trying to slowly unify all of
3095 use the Term I/O class. I'm trying to slowly unify all of
3089 IPython's I/O operations to pass through Term.
3096 IPython's I/O operations to pass through Term.
3090
3097
3091 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3098 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3092 the secondary prompt to correctly match the length of the primary
3099 the secondary prompt to correctly match the length of the primary
3093 one for any prompt. Now multi-line code will properly line up
3100 one for any prompt. Now multi-line code will properly line up
3094 even for path dependent prompts, such as the new ones available
3101 even for path dependent prompts, such as the new ones available
3095 via the prompt_specials.
3102 via the prompt_specials.
3096
3103
3097 2004-06-06 Fernando Perez <fperez@colorado.edu>
3104 2004-06-06 Fernando Perez <fperez@colorado.edu>
3098
3105
3099 * IPython/Prompts.py (prompt_specials): Added the ability to have
3106 * IPython/Prompts.py (prompt_specials): Added the ability to have
3100 bash-like special sequences in the prompts, which get
3107 bash-like special sequences in the prompts, which get
3101 automatically expanded. Things like hostname, current working
3108 automatically expanded. Things like hostname, current working
3102 directory and username are implemented already, but it's easy to
3109 directory and username are implemented already, but it's easy to
3103 add more in the future. Thanks to a patch by W.J. van der Laan
3110 add more in the future. Thanks to a patch by W.J. van der Laan
3104 <gnufnork-AT-hetdigitalegat.nl>
3111 <gnufnork-AT-hetdigitalegat.nl>
3105 (prompt_specials): Added color support for prompt strings, so
3112 (prompt_specials): Added color support for prompt strings, so
3106 users can define arbitrary color setups for their prompts.
3113 users can define arbitrary color setups for their prompts.
3107
3114
3108 2004-06-05 Fernando Perez <fperez@colorado.edu>
3115 2004-06-05 Fernando Perez <fperez@colorado.edu>
3109
3116
3110 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3117 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3111 code to load Gary Bishop's readline and configure it
3118 code to load Gary Bishop's readline and configure it
3112 automatically. Thanks to Gary for help on this.
3119 automatically. Thanks to Gary for help on this.
3113
3120
3114 2004-06-01 Fernando Perez <fperez@colorado.edu>
3121 2004-06-01 Fernando Perez <fperez@colorado.edu>
3115
3122
3116 * IPython/Logger.py (Logger.create_log): fix bug for logging
3123 * IPython/Logger.py (Logger.create_log): fix bug for logging
3117 with no filename (previous fix was incomplete).
3124 with no filename (previous fix was incomplete).
3118
3125
3119 2004-05-25 Fernando Perez <fperez@colorado.edu>
3126 2004-05-25 Fernando Perez <fperez@colorado.edu>
3120
3127
3121 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3128 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3122 parens would get passed to the shell.
3129 parens would get passed to the shell.
3123
3130
3124 2004-05-20 Fernando Perez <fperez@colorado.edu>
3131 2004-05-20 Fernando Perez <fperez@colorado.edu>
3125
3132
3126 * IPython/Magic.py (Magic.magic_prun): changed default profile
3133 * IPython/Magic.py (Magic.magic_prun): changed default profile
3127 sort order to 'time' (the more common profiling need).
3134 sort order to 'time' (the more common profiling need).
3128
3135
3129 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3136 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3130 so that source code shown is guaranteed in sync with the file on
3137 so that source code shown is guaranteed in sync with the file on
3131 disk (also changed in psource). Similar fix to the one for
3138 disk (also changed in psource). Similar fix to the one for
3132 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3139 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3133 <yann.ledu-AT-noos.fr>.
3140 <yann.ledu-AT-noos.fr>.
3134
3141
3135 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3142 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3136 with a single option would not be correctly parsed. Closes
3143 with a single option would not be correctly parsed. Closes
3137 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3144 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3138 introduced in 0.6.0 (on 2004-05-06).
3145 introduced in 0.6.0 (on 2004-05-06).
3139
3146
3140 2004-05-13 *** Released version 0.6.0
3147 2004-05-13 *** Released version 0.6.0
3141
3148
3142 2004-05-13 Fernando Perez <fperez@colorado.edu>
3149 2004-05-13 Fernando Perez <fperez@colorado.edu>
3143
3150
3144 * debian/: Added debian/ directory to CVS, so that debian support
3151 * debian/: Added debian/ directory to CVS, so that debian support
3145 is publicly accessible. The debian package is maintained by Jack
3152 is publicly accessible. The debian package is maintained by Jack
3146 Moffit <jack-AT-xiph.org>.
3153 Moffit <jack-AT-xiph.org>.
3147
3154
3148 * Documentation: included the notes about an ipython-based system
3155 * Documentation: included the notes about an ipython-based system
3149 shell (the hypothetical 'pysh') into the new_design.pdf document,
3156 shell (the hypothetical 'pysh') into the new_design.pdf document,
3150 so that these ideas get distributed to users along with the
3157 so that these ideas get distributed to users along with the
3151 official documentation.
3158 official documentation.
3152
3159
3153 2004-05-10 Fernando Perez <fperez@colorado.edu>
3160 2004-05-10 Fernando Perez <fperez@colorado.edu>
3154
3161
3155 * IPython/Logger.py (Logger.create_log): fix recently introduced
3162 * IPython/Logger.py (Logger.create_log): fix recently introduced
3156 bug (misindented line) where logstart would fail when not given an
3163 bug (misindented line) where logstart would fail when not given an
3157 explicit filename.
3164 explicit filename.
3158
3165
3159 2004-05-09 Fernando Perez <fperez@colorado.edu>
3166 2004-05-09 Fernando Perez <fperez@colorado.edu>
3160
3167
3161 * IPython/Magic.py (Magic.parse_options): skip system call when
3168 * IPython/Magic.py (Magic.parse_options): skip system call when
3162 there are no options to look for. Faster, cleaner for the common
3169 there are no options to look for. Faster, cleaner for the common
3163 case.
3170 case.
3164
3171
3165 * Documentation: many updates to the manual: describing Windows
3172 * Documentation: many updates to the manual: describing Windows
3166 support better, Gnuplot updates, credits, misc small stuff. Also
3173 support better, Gnuplot updates, credits, misc small stuff. Also
3167 updated the new_design doc a bit.
3174 updated the new_design doc a bit.
3168
3175
3169 2004-05-06 *** Released version 0.6.0.rc1
3176 2004-05-06 *** Released version 0.6.0.rc1
3170
3177
3171 2004-05-06 Fernando Perez <fperez@colorado.edu>
3178 2004-05-06 Fernando Perez <fperez@colorado.edu>
3172
3179
3173 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3180 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3174 operations to use the vastly more efficient list/''.join() method.
3181 operations to use the vastly more efficient list/''.join() method.
3175 (FormattedTB.text): Fix
3182 (FormattedTB.text): Fix
3176 http://www.scipy.net/roundup/ipython/issue12 - exception source
3183 http://www.scipy.net/roundup/ipython/issue12 - exception source
3177 extract not updated after reload. Thanks to Mike Salib
3184 extract not updated after reload. Thanks to Mike Salib
3178 <msalib-AT-mit.edu> for pinning the source of the problem.
3185 <msalib-AT-mit.edu> for pinning the source of the problem.
3179 Fortunately, the solution works inside ipython and doesn't require
3186 Fortunately, the solution works inside ipython and doesn't require
3180 any changes to python proper.
3187 any changes to python proper.
3181
3188
3182 * IPython/Magic.py (Magic.parse_options): Improved to process the
3189 * IPython/Magic.py (Magic.parse_options): Improved to process the
3183 argument list as a true shell would (by actually using the
3190 argument list as a true shell would (by actually using the
3184 underlying system shell). This way, all @magics automatically get
3191 underlying system shell). This way, all @magics automatically get
3185 shell expansion for variables. Thanks to a comment by Alex
3192 shell expansion for variables. Thanks to a comment by Alex
3186 Schmolck.
3193 Schmolck.
3187
3194
3188 2004-04-04 Fernando Perez <fperez@colorado.edu>
3195 2004-04-04 Fernando Perez <fperez@colorado.edu>
3189
3196
3190 * IPython/iplib.py (InteractiveShell.interact): Added a special
3197 * IPython/iplib.py (InteractiveShell.interact): Added a special
3191 trap for a debugger quit exception, which is basically impossible
3198 trap for a debugger quit exception, which is basically impossible
3192 to handle by normal mechanisms, given what pdb does to the stack.
3199 to handle by normal mechanisms, given what pdb does to the stack.
3193 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3200 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3194
3201
3195 2004-04-03 Fernando Perez <fperez@colorado.edu>
3202 2004-04-03 Fernando Perez <fperez@colorado.edu>
3196
3203
3197 * IPython/genutils.py (Term): Standardized the names of the Term
3204 * IPython/genutils.py (Term): Standardized the names of the Term
3198 class streams to cin/cout/cerr, following C++ naming conventions
3205 class streams to cin/cout/cerr, following C++ naming conventions
3199 (I can't use in/out/err because 'in' is not a valid attribute
3206 (I can't use in/out/err because 'in' is not a valid attribute
3200 name).
3207 name).
3201
3208
3202 * IPython/iplib.py (InteractiveShell.interact): don't increment
3209 * IPython/iplib.py (InteractiveShell.interact): don't increment
3203 the prompt if there's no user input. By Daniel 'Dang' Griffith
3210 the prompt if there's no user input. By Daniel 'Dang' Griffith
3204 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3211 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3205 Francois Pinard.
3212 Francois Pinard.
3206
3213
3207 2004-04-02 Fernando Perez <fperez@colorado.edu>
3214 2004-04-02 Fernando Perez <fperez@colorado.edu>
3208
3215
3209 * IPython/genutils.py (Stream.__init__): Modified to survive at
3216 * IPython/genutils.py (Stream.__init__): Modified to survive at
3210 least importing in contexts where stdin/out/err aren't true file
3217 least importing in contexts where stdin/out/err aren't true file
3211 objects, such as PyCrust (they lack fileno() and mode). However,
3218 objects, such as PyCrust (they lack fileno() and mode). However,
3212 the recovery facilities which rely on these things existing will
3219 the recovery facilities which rely on these things existing will
3213 not work.
3220 not work.
3214
3221
3215 2004-04-01 Fernando Perez <fperez@colorado.edu>
3222 2004-04-01 Fernando Perez <fperez@colorado.edu>
3216
3223
3217 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3224 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3218 use the new getoutputerror() function, so it properly
3225 use the new getoutputerror() function, so it properly
3219 distinguishes stdout/err.
3226 distinguishes stdout/err.
3220
3227
3221 * IPython/genutils.py (getoutputerror): added a function to
3228 * IPython/genutils.py (getoutputerror): added a function to
3222 capture separately the standard output and error of a command.
3229 capture separately the standard output and error of a command.
3223 After a comment from dang on the mailing lists. This code is
3230 After a comment from dang on the mailing lists. This code is
3224 basically a modified version of commands.getstatusoutput(), from
3231 basically a modified version of commands.getstatusoutput(), from
3225 the standard library.
3232 the standard library.
3226
3233
3227 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3234 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3228 '!!' as a special syntax (shorthand) to access @sx.
3235 '!!' as a special syntax (shorthand) to access @sx.
3229
3236
3230 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3237 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3231 command and return its output as a list split on '\n'.
3238 command and return its output as a list split on '\n'.
3232
3239
3233 2004-03-31 Fernando Perez <fperez@colorado.edu>
3240 2004-03-31 Fernando Perez <fperez@colorado.edu>
3234
3241
3235 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3242 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3236 method to dictionaries used as FakeModule instances if they lack
3243 method to dictionaries used as FakeModule instances if they lack
3237 it. At least pydoc in python2.3 breaks for runtime-defined
3244 it. At least pydoc in python2.3 breaks for runtime-defined
3238 functions without this hack. At some point I need to _really_
3245 functions without this hack. At some point I need to _really_
3239 understand what FakeModule is doing, because it's a gross hack.
3246 understand what FakeModule is doing, because it's a gross hack.
3240 But it solves Arnd's problem for now...
3247 But it solves Arnd's problem for now...
3241
3248
3242 2004-02-27 Fernando Perez <fperez@colorado.edu>
3249 2004-02-27 Fernando Perez <fperez@colorado.edu>
3243
3250
3244 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3251 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3245 mode would behave erratically. Also increased the number of
3252 mode would behave erratically. Also increased the number of
3246 possible logs in rotate mod to 999. Thanks to Rod Holland
3253 possible logs in rotate mod to 999. Thanks to Rod Holland
3247 <rhh@StructureLABS.com> for the report and fixes.
3254 <rhh@StructureLABS.com> for the report and fixes.
3248
3255
3249 2004-02-26 Fernando Perez <fperez@colorado.edu>
3256 2004-02-26 Fernando Perez <fperez@colorado.edu>
3250
3257
3251 * IPython/genutils.py (page): Check that the curses module really
3258 * IPython/genutils.py (page): Check that the curses module really
3252 has the initscr attribute before trying to use it. For some
3259 has the initscr attribute before trying to use it. For some
3253 reason, the Solaris curses module is missing this. I think this
3260 reason, the Solaris curses module is missing this. I think this
3254 should be considered a Solaris python bug, but I'm not sure.
3261 should be considered a Solaris python bug, but I'm not sure.
3255
3262
3256 2004-01-17 Fernando Perez <fperez@colorado.edu>
3263 2004-01-17 Fernando Perez <fperez@colorado.edu>
3257
3264
3258 * IPython/genutils.py (Stream.__init__): Changes to try to make
3265 * IPython/genutils.py (Stream.__init__): Changes to try to make
3259 ipython robust against stdin/out/err being closed by the user.
3266 ipython robust against stdin/out/err being closed by the user.
3260 This is 'user error' (and blocks a normal python session, at least
3267 This is 'user error' (and blocks a normal python session, at least
3261 the stdout case). However, Ipython should be able to survive such
3268 the stdout case). However, Ipython should be able to survive such
3262 instances of abuse as gracefully as possible. To simplify the
3269 instances of abuse as gracefully as possible. To simplify the
3263 coding and maintain compatibility with Gary Bishop's Term
3270 coding and maintain compatibility with Gary Bishop's Term
3264 contributions, I've made use of classmethods for this. I think
3271 contributions, I've made use of classmethods for this. I think
3265 this introduces a dependency on python 2.2.
3272 this introduces a dependency on python 2.2.
3266
3273
3267 2004-01-13 Fernando Perez <fperez@colorado.edu>
3274 2004-01-13 Fernando Perez <fperez@colorado.edu>
3268
3275
3269 * IPython/numutils.py (exp_safe): simplified the code a bit and
3276 * IPython/numutils.py (exp_safe): simplified the code a bit and
3270 removed the need for importing the kinds module altogether.
3277 removed the need for importing the kinds module altogether.
3271
3278
3272 2004-01-06 Fernando Perez <fperez@colorado.edu>
3279 2004-01-06 Fernando Perez <fperez@colorado.edu>
3273
3280
3274 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3281 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3275 a magic function instead, after some community feedback. No
3282 a magic function instead, after some community feedback. No
3276 special syntax will exist for it, but its name is deliberately
3283 special syntax will exist for it, but its name is deliberately
3277 very short.
3284 very short.
3278
3285
3279 2003-12-20 Fernando Perez <fperez@colorado.edu>
3286 2003-12-20 Fernando Perez <fperez@colorado.edu>
3280
3287
3281 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3288 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3282 new functionality, to automagically assign the result of a shell
3289 new functionality, to automagically assign the result of a shell
3283 command to a variable. I'll solicit some community feedback on
3290 command to a variable. I'll solicit some community feedback on
3284 this before making it permanent.
3291 this before making it permanent.
3285
3292
3286 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3293 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3287 requested about callables for which inspect couldn't obtain a
3294 requested about callables for which inspect couldn't obtain a
3288 proper argspec. Thanks to a crash report sent by Etienne
3295 proper argspec. Thanks to a crash report sent by Etienne
3289 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3296 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3290
3297
3291 2003-12-09 Fernando Perez <fperez@colorado.edu>
3298 2003-12-09 Fernando Perez <fperez@colorado.edu>
3292
3299
3293 * IPython/genutils.py (page): patch for the pager to work across
3300 * IPython/genutils.py (page): patch for the pager to work across
3294 various versions of Windows. By Gary Bishop.
3301 various versions of Windows. By Gary Bishop.
3295
3302
3296 2003-12-04 Fernando Perez <fperez@colorado.edu>
3303 2003-12-04 Fernando Perez <fperez@colorado.edu>
3297
3304
3298 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3305 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3299 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3306 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3300 While I tested this and it looks ok, there may still be corner
3307 While I tested this and it looks ok, there may still be corner
3301 cases I've missed.
3308 cases I've missed.
3302
3309
3303 2003-12-01 Fernando Perez <fperez@colorado.edu>
3310 2003-12-01 Fernando Perez <fperez@colorado.edu>
3304
3311
3305 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3312 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3306 where a line like 'p,q=1,2' would fail because the automagic
3313 where a line like 'p,q=1,2' would fail because the automagic
3307 system would be triggered for @p.
3314 system would be triggered for @p.
3308
3315
3309 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3316 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3310 cleanups, code unmodified.
3317 cleanups, code unmodified.
3311
3318
3312 * IPython/genutils.py (Term): added a class for IPython to handle
3319 * IPython/genutils.py (Term): added a class for IPython to handle
3313 output. In most cases it will just be a proxy for stdout/err, but
3320 output. In most cases it will just be a proxy for stdout/err, but
3314 having this allows modifications to be made for some platforms,
3321 having this allows modifications to be made for some platforms,
3315 such as handling color escapes under Windows. All of this code
3322 such as handling color escapes under Windows. All of this code
3316 was contributed by Gary Bishop, with minor modifications by me.
3323 was contributed by Gary Bishop, with minor modifications by me.
3317 The actual changes affect many files.
3324 The actual changes affect many files.
3318
3325
3319 2003-11-30 Fernando Perez <fperez@colorado.edu>
3326 2003-11-30 Fernando Perez <fperez@colorado.edu>
3320
3327
3321 * IPython/iplib.py (file_matches): new completion code, courtesy
3328 * IPython/iplib.py (file_matches): new completion code, courtesy
3322 of Jeff Collins. This enables filename completion again under
3329 of Jeff Collins. This enables filename completion again under
3323 python 2.3, which disabled it at the C level.
3330 python 2.3, which disabled it at the C level.
3324
3331
3325 2003-11-11 Fernando Perez <fperez@colorado.edu>
3332 2003-11-11 Fernando Perez <fperez@colorado.edu>
3326
3333
3327 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3334 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3328 for Numeric.array(map(...)), but often convenient.
3335 for Numeric.array(map(...)), but often convenient.
3329
3336
3330 2003-11-05 Fernando Perez <fperez@colorado.edu>
3337 2003-11-05 Fernando Perez <fperez@colorado.edu>
3331
3338
3332 * IPython/numutils.py (frange): Changed a call from int() to
3339 * IPython/numutils.py (frange): Changed a call from int() to
3333 int(round()) to prevent a problem reported with arange() in the
3340 int(round()) to prevent a problem reported with arange() in the
3334 numpy list.
3341 numpy list.
3335
3342
3336 2003-10-06 Fernando Perez <fperez@colorado.edu>
3343 2003-10-06 Fernando Perez <fperez@colorado.edu>
3337
3344
3338 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3345 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3339 prevent crashes if sys lacks an argv attribute (it happens with
3346 prevent crashes if sys lacks an argv attribute (it happens with
3340 embedded interpreters which build a bare-bones sys module).
3347 embedded interpreters which build a bare-bones sys module).
3341 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3348 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3342
3349
3343 2003-09-24 Fernando Perez <fperez@colorado.edu>
3350 2003-09-24 Fernando Perez <fperez@colorado.edu>
3344
3351
3345 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3352 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3346 to protect against poorly written user objects where __getattr__
3353 to protect against poorly written user objects where __getattr__
3347 raises exceptions other than AttributeError. Thanks to a bug
3354 raises exceptions other than AttributeError. Thanks to a bug
3348 report by Oliver Sander <osander-AT-gmx.de>.
3355 report by Oliver Sander <osander-AT-gmx.de>.
3349
3356
3350 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3357 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3351 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3358 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3352
3359
3353 2003-09-09 Fernando Perez <fperez@colorado.edu>
3360 2003-09-09 Fernando Perez <fperez@colorado.edu>
3354
3361
3355 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3362 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3356 unpacking a list whith a callable as first element would
3363 unpacking a list whith a callable as first element would
3357 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3364 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3358 Collins.
3365 Collins.
3359
3366
3360 2003-08-25 *** Released version 0.5.0
3367 2003-08-25 *** Released version 0.5.0
3361
3368
3362 2003-08-22 Fernando Perez <fperez@colorado.edu>
3369 2003-08-22 Fernando Perez <fperez@colorado.edu>
3363
3370
3364 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3371 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3365 improperly defined user exceptions. Thanks to feedback from Mark
3372 improperly defined user exceptions. Thanks to feedback from Mark
3366 Russell <mrussell-AT-verio.net>.
3373 Russell <mrussell-AT-verio.net>.
3367
3374
3368 2003-08-20 Fernando Perez <fperez@colorado.edu>
3375 2003-08-20 Fernando Perez <fperez@colorado.edu>
3369
3376
3370 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3377 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3371 printing so that it would print multi-line string forms starting
3378 printing so that it would print multi-line string forms starting
3372 with a new line. This way the formatting is better respected for
3379 with a new line. This way the formatting is better respected for
3373 objects which work hard to make nice string forms.
3380 objects which work hard to make nice string forms.
3374
3381
3375 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3382 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3376 autocall would overtake data access for objects with both
3383 autocall would overtake data access for objects with both
3377 __getitem__ and __call__.
3384 __getitem__ and __call__.
3378
3385
3379 2003-08-19 *** Released version 0.5.0-rc1
3386 2003-08-19 *** Released version 0.5.0-rc1
3380
3387
3381 2003-08-19 Fernando Perez <fperez@colorado.edu>
3388 2003-08-19 Fernando Perez <fperez@colorado.edu>
3382
3389
3383 * IPython/deep_reload.py (load_tail): single tiny change here
3390 * IPython/deep_reload.py (load_tail): single tiny change here
3384 seems to fix the long-standing bug of dreload() failing to work
3391 seems to fix the long-standing bug of dreload() failing to work
3385 for dotted names. But this module is pretty tricky, so I may have
3392 for dotted names. But this module is pretty tricky, so I may have
3386 missed some subtlety. Needs more testing!.
3393 missed some subtlety. Needs more testing!.
3387
3394
3388 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3395 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3389 exceptions which have badly implemented __str__ methods.
3396 exceptions which have badly implemented __str__ methods.
3390 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3397 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3391 which I've been getting reports about from Python 2.3 users. I
3398 which I've been getting reports about from Python 2.3 users. I
3392 wish I had a simple test case to reproduce the problem, so I could
3399 wish I had a simple test case to reproduce the problem, so I could
3393 either write a cleaner workaround or file a bug report if
3400 either write a cleaner workaround or file a bug report if
3394 necessary.
3401 necessary.
3395
3402
3396 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3403 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3397 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3404 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3398 a bug report by Tjabo Kloppenburg.
3405 a bug report by Tjabo Kloppenburg.
3399
3406
3400 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3407 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3401 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3408 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3402 seems rather unstable. Thanks to a bug report by Tjabo
3409 seems rather unstable. Thanks to a bug report by Tjabo
3403 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3410 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3404
3411
3405 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3412 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3406 this out soon because of the critical fixes in the inner loop for
3413 this out soon because of the critical fixes in the inner loop for
3407 generators.
3414 generators.
3408
3415
3409 * IPython/Magic.py (Magic.getargspec): removed. This (and
3416 * IPython/Magic.py (Magic.getargspec): removed. This (and
3410 _get_def) have been obsoleted by OInspect for a long time, I
3417 _get_def) have been obsoleted by OInspect for a long time, I
3411 hadn't noticed that they were dead code.
3418 hadn't noticed that they were dead code.
3412 (Magic._ofind): restored _ofind functionality for a few literals
3419 (Magic._ofind): restored _ofind functionality for a few literals
3413 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3420 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3414 for things like "hello".capitalize?, since that would require a
3421 for things like "hello".capitalize?, since that would require a
3415 potentially dangerous eval() again.
3422 potentially dangerous eval() again.
3416
3423
3417 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3424 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3418 logic a bit more to clean up the escapes handling and minimize the
3425 logic a bit more to clean up the escapes handling and minimize the
3419 use of _ofind to only necessary cases. The interactive 'feel' of
3426 use of _ofind to only necessary cases. The interactive 'feel' of
3420 IPython should have improved quite a bit with the changes in
3427 IPython should have improved quite a bit with the changes in
3421 _prefilter and _ofind (besides being far safer than before).
3428 _prefilter and _ofind (besides being far safer than before).
3422
3429
3423 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3430 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3424 obscure, never reported). Edit would fail to find the object to
3431 obscure, never reported). Edit would fail to find the object to
3425 edit under some circumstances.
3432 edit under some circumstances.
3426 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3433 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3427 which were causing double-calling of generators. Those eval calls
3434 which were causing double-calling of generators. Those eval calls
3428 were _very_ dangerous, since code with side effects could be
3435 were _very_ dangerous, since code with side effects could be
3429 triggered. As they say, 'eval is evil'... These were the
3436 triggered. As they say, 'eval is evil'... These were the
3430 nastiest evals in IPython. Besides, _ofind is now far simpler,
3437 nastiest evals in IPython. Besides, _ofind is now far simpler,
3431 and it should also be quite a bit faster. Its use of inspect is
3438 and it should also be quite a bit faster. Its use of inspect is
3432 also safer, so perhaps some of the inspect-related crashes I've
3439 also safer, so perhaps some of the inspect-related crashes I've
3433 seen lately with Python 2.3 might be taken care of. That will
3440 seen lately with Python 2.3 might be taken care of. That will
3434 need more testing.
3441 need more testing.
3435
3442
3436 2003-08-17 Fernando Perez <fperez@colorado.edu>
3443 2003-08-17 Fernando Perez <fperez@colorado.edu>
3437
3444
3438 * IPython/iplib.py (InteractiveShell._prefilter): significant
3445 * IPython/iplib.py (InteractiveShell._prefilter): significant
3439 simplifications to the logic for handling user escapes. Faster
3446 simplifications to the logic for handling user escapes. Faster
3440 and simpler code.
3447 and simpler code.
3441
3448
3442 2003-08-14 Fernando Perez <fperez@colorado.edu>
3449 2003-08-14 Fernando Perez <fperez@colorado.edu>
3443
3450
3444 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3451 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3445 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3452 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3446 but it should be quite a bit faster. And the recursive version
3453 but it should be quite a bit faster. And the recursive version
3447 generated O(log N) intermediate storage for all rank>1 arrays,
3454 generated O(log N) intermediate storage for all rank>1 arrays,
3448 even if they were contiguous.
3455 even if they were contiguous.
3449 (l1norm): Added this function.
3456 (l1norm): Added this function.
3450 (norm): Added this function for arbitrary norms (including
3457 (norm): Added this function for arbitrary norms (including
3451 l-infinity). l1 and l2 are still special cases for convenience
3458 l-infinity). l1 and l2 are still special cases for convenience
3452 and speed.
3459 and speed.
3453
3460
3454 2003-08-03 Fernando Perez <fperez@colorado.edu>
3461 2003-08-03 Fernando Perez <fperez@colorado.edu>
3455
3462
3456 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3463 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3457 exceptions, which now raise PendingDeprecationWarnings in Python
3464 exceptions, which now raise PendingDeprecationWarnings in Python
3458 2.3. There were some in Magic and some in Gnuplot2.
3465 2.3. There were some in Magic and some in Gnuplot2.
3459
3466
3460 2003-06-30 Fernando Perez <fperez@colorado.edu>
3467 2003-06-30 Fernando Perez <fperez@colorado.edu>
3461
3468
3462 * IPython/genutils.py (page): modified to call curses only for
3469 * IPython/genutils.py (page): modified to call curses only for
3463 terminals where TERM=='xterm'. After problems under many other
3470 terminals where TERM=='xterm'. After problems under many other
3464 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3471 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3465
3472
3466 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3473 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3467 would be triggered when readline was absent. This was just an old
3474 would be triggered when readline was absent. This was just an old
3468 debugging statement I'd forgotten to take out.
3475 debugging statement I'd forgotten to take out.
3469
3476
3470 2003-06-20 Fernando Perez <fperez@colorado.edu>
3477 2003-06-20 Fernando Perez <fperez@colorado.edu>
3471
3478
3472 * IPython/genutils.py (clock): modified to return only user time
3479 * IPython/genutils.py (clock): modified to return only user time
3473 (not counting system time), after a discussion on scipy. While
3480 (not counting system time), after a discussion on scipy. While
3474 system time may be a useful quantity occasionally, it may much
3481 system time may be a useful quantity occasionally, it may much
3475 more easily be skewed by occasional swapping or other similar
3482 more easily be skewed by occasional swapping or other similar
3476 activity.
3483 activity.
3477
3484
3478 2003-06-05 Fernando Perez <fperez@colorado.edu>
3485 2003-06-05 Fernando Perez <fperez@colorado.edu>
3479
3486
3480 * IPython/numutils.py (identity): new function, for building
3487 * IPython/numutils.py (identity): new function, for building
3481 arbitrary rank Kronecker deltas (mostly backwards compatible with
3488 arbitrary rank Kronecker deltas (mostly backwards compatible with
3482 Numeric.identity)
3489 Numeric.identity)
3483
3490
3484 2003-06-03 Fernando Perez <fperez@colorado.edu>
3491 2003-06-03 Fernando Perez <fperez@colorado.edu>
3485
3492
3486 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3493 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3487 arguments passed to magics with spaces, to allow trailing '\' to
3494 arguments passed to magics with spaces, to allow trailing '\' to
3488 work normally (mainly for Windows users).
3495 work normally (mainly for Windows users).
3489
3496
3490 2003-05-29 Fernando Perez <fperez@colorado.edu>
3497 2003-05-29 Fernando Perez <fperez@colorado.edu>
3491
3498
3492 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3499 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3493 instead of pydoc.help. This fixes a bizarre behavior where
3500 instead of pydoc.help. This fixes a bizarre behavior where
3494 printing '%s' % locals() would trigger the help system. Now
3501 printing '%s' % locals() would trigger the help system. Now
3495 ipython behaves like normal python does.
3502 ipython behaves like normal python does.
3496
3503
3497 Note that if one does 'from pydoc import help', the bizarre
3504 Note that if one does 'from pydoc import help', the bizarre
3498 behavior returns, but this will also happen in normal python, so
3505 behavior returns, but this will also happen in normal python, so
3499 it's not an ipython bug anymore (it has to do with how pydoc.help
3506 it's not an ipython bug anymore (it has to do with how pydoc.help
3500 is implemented).
3507 is implemented).
3501
3508
3502 2003-05-22 Fernando Perez <fperez@colorado.edu>
3509 2003-05-22 Fernando Perez <fperez@colorado.edu>
3503
3510
3504 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3511 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3505 return [] instead of None when nothing matches, also match to end
3512 return [] instead of None when nothing matches, also match to end
3506 of line. Patch by Gary Bishop.
3513 of line. Patch by Gary Bishop.
3507
3514
3508 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3515 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3509 protection as before, for files passed on the command line. This
3516 protection as before, for files passed on the command line. This
3510 prevents the CrashHandler from kicking in if user files call into
3517 prevents the CrashHandler from kicking in if user files call into
3511 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3518 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3512 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3519 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3513
3520
3514 2003-05-20 *** Released version 0.4.0
3521 2003-05-20 *** Released version 0.4.0
3515
3522
3516 2003-05-20 Fernando Perez <fperez@colorado.edu>
3523 2003-05-20 Fernando Perez <fperez@colorado.edu>
3517
3524
3518 * setup.py: added support for manpages. It's a bit hackish b/c of
3525 * setup.py: added support for manpages. It's a bit hackish b/c of
3519 a bug in the way the bdist_rpm distutils target handles gzipped
3526 a bug in the way the bdist_rpm distutils target handles gzipped
3520 manpages, but it works. After a patch by Jack.
3527 manpages, but it works. After a patch by Jack.
3521
3528
3522 2003-05-19 Fernando Perez <fperez@colorado.edu>
3529 2003-05-19 Fernando Perez <fperez@colorado.edu>
3523
3530
3524 * IPython/numutils.py: added a mockup of the kinds module, since
3531 * IPython/numutils.py: added a mockup of the kinds module, since
3525 it was recently removed from Numeric. This way, numutils will
3532 it was recently removed from Numeric. This way, numutils will
3526 work for all users even if they are missing kinds.
3533 work for all users even if they are missing kinds.
3527
3534
3528 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3535 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3529 failure, which can occur with SWIG-wrapped extensions. After a
3536 failure, which can occur with SWIG-wrapped extensions. After a
3530 crash report from Prabhu.
3537 crash report from Prabhu.
3531
3538
3532 2003-05-16 Fernando Perez <fperez@colorado.edu>
3539 2003-05-16 Fernando Perez <fperez@colorado.edu>
3533
3540
3534 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3541 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3535 protect ipython from user code which may call directly
3542 protect ipython from user code which may call directly
3536 sys.excepthook (this looks like an ipython crash to the user, even
3543 sys.excepthook (this looks like an ipython crash to the user, even
3537 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3544 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3538 This is especially important to help users of WxWindows, but may
3545 This is especially important to help users of WxWindows, but may
3539 also be useful in other cases.
3546 also be useful in other cases.
3540
3547
3541 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3548 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3542 an optional tb_offset to be specified, and to preserve exception
3549 an optional tb_offset to be specified, and to preserve exception
3543 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3550 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3544
3551
3545 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3552 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3546
3553
3547 2003-05-15 Fernando Perez <fperez@colorado.edu>
3554 2003-05-15 Fernando Perez <fperez@colorado.edu>
3548
3555
3549 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3556 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3550 installing for a new user under Windows.
3557 installing for a new user under Windows.
3551
3558
3552 2003-05-12 Fernando Perez <fperez@colorado.edu>
3559 2003-05-12 Fernando Perez <fperez@colorado.edu>
3553
3560
3554 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3561 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3555 handler for Emacs comint-based lines. Currently it doesn't do
3562 handler for Emacs comint-based lines. Currently it doesn't do
3556 much (but importantly, it doesn't update the history cache). In
3563 much (but importantly, it doesn't update the history cache). In
3557 the future it may be expanded if Alex needs more functionality
3564 the future it may be expanded if Alex needs more functionality
3558 there.
3565 there.
3559
3566
3560 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3567 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3561 info to crash reports.
3568 info to crash reports.
3562
3569
3563 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3570 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3564 just like Python's -c. Also fixed crash with invalid -color
3571 just like Python's -c. Also fixed crash with invalid -color
3565 option value at startup. Thanks to Will French
3572 option value at startup. Thanks to Will French
3566 <wfrench-AT-bestweb.net> for the bug report.
3573 <wfrench-AT-bestweb.net> for the bug report.
3567
3574
3568 2003-05-09 Fernando Perez <fperez@colorado.edu>
3575 2003-05-09 Fernando Perez <fperez@colorado.edu>
3569
3576
3570 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3577 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3571 to EvalDict (it's a mapping, after all) and simplified its code
3578 to EvalDict (it's a mapping, after all) and simplified its code
3572 quite a bit, after a nice discussion on c.l.py where Gustavo
3579 quite a bit, after a nice discussion on c.l.py where Gustavo
3573 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3580 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3574
3581
3575 2003-04-30 Fernando Perez <fperez@colorado.edu>
3582 2003-04-30 Fernando Perez <fperez@colorado.edu>
3576
3583
3577 * IPython/genutils.py (timings_out): modified it to reduce its
3584 * IPython/genutils.py (timings_out): modified it to reduce its
3578 overhead in the common reps==1 case.
3585 overhead in the common reps==1 case.
3579
3586
3580 2003-04-29 Fernando Perez <fperez@colorado.edu>
3587 2003-04-29 Fernando Perez <fperez@colorado.edu>
3581
3588
3582 * IPython/genutils.py (timings_out): Modified to use the resource
3589 * IPython/genutils.py (timings_out): Modified to use the resource
3583 module, which avoids the wraparound problems of time.clock().
3590 module, which avoids the wraparound problems of time.clock().
3584
3591
3585 2003-04-17 *** Released version 0.2.15pre4
3592 2003-04-17 *** Released version 0.2.15pre4
3586
3593
3587 2003-04-17 Fernando Perez <fperez@colorado.edu>
3594 2003-04-17 Fernando Perez <fperez@colorado.edu>
3588
3595
3589 * setup.py (scriptfiles): Split windows-specific stuff over to a
3596 * setup.py (scriptfiles): Split windows-specific stuff over to a
3590 separate file, in an attempt to have a Windows GUI installer.
3597 separate file, in an attempt to have a Windows GUI installer.
3591 That didn't work, but part of the groundwork is done.
3598 That didn't work, but part of the groundwork is done.
3592
3599
3593 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3600 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3594 indent/unindent with 4 spaces. Particularly useful in combination
3601 indent/unindent with 4 spaces. Particularly useful in combination
3595 with the new auto-indent option.
3602 with the new auto-indent option.
3596
3603
3597 2003-04-16 Fernando Perez <fperez@colorado.edu>
3604 2003-04-16 Fernando Perez <fperez@colorado.edu>
3598
3605
3599 * IPython/Magic.py: various replacements of self.rc for
3606 * IPython/Magic.py: various replacements of self.rc for
3600 self.shell.rc. A lot more remains to be done to fully disentangle
3607 self.shell.rc. A lot more remains to be done to fully disentangle
3601 this class from the main Shell class.
3608 this class from the main Shell class.
3602
3609
3603 * IPython/GnuplotRuntime.py: added checks for mouse support so
3610 * IPython/GnuplotRuntime.py: added checks for mouse support so
3604 that we don't try to enable it if the current gnuplot doesn't
3611 that we don't try to enable it if the current gnuplot doesn't
3605 really support it. Also added checks so that we don't try to
3612 really support it. Also added checks so that we don't try to
3606 enable persist under Windows (where Gnuplot doesn't recognize the
3613 enable persist under Windows (where Gnuplot doesn't recognize the
3607 option).
3614 option).
3608
3615
3609 * IPython/iplib.py (InteractiveShell.interact): Added optional
3616 * IPython/iplib.py (InteractiveShell.interact): Added optional
3610 auto-indenting code, after a patch by King C. Shu
3617 auto-indenting code, after a patch by King C. Shu
3611 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3618 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3612 get along well with pasting indented code. If I ever figure out
3619 get along well with pasting indented code. If I ever figure out
3613 how to make that part go well, it will become on by default.
3620 how to make that part go well, it will become on by default.
3614
3621
3615 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3622 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3616 crash ipython if there was an unmatched '%' in the user's prompt
3623 crash ipython if there was an unmatched '%' in the user's prompt
3617 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3624 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3618
3625
3619 * IPython/iplib.py (InteractiveShell.interact): removed the
3626 * IPython/iplib.py (InteractiveShell.interact): removed the
3620 ability to ask the user whether he wants to crash or not at the
3627 ability to ask the user whether he wants to crash or not at the
3621 'last line' exception handler. Calling functions at that point
3628 'last line' exception handler. Calling functions at that point
3622 changes the stack, and the error reports would have incorrect
3629 changes the stack, and the error reports would have incorrect
3623 tracebacks.
3630 tracebacks.
3624
3631
3625 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3632 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3626 pass through a peger a pretty-printed form of any object. After a
3633 pass through a peger a pretty-printed form of any object. After a
3627 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3634 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3628
3635
3629 2003-04-14 Fernando Perez <fperez@colorado.edu>
3636 2003-04-14 Fernando Perez <fperez@colorado.edu>
3630
3637
3631 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3638 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3632 all files in ~ would be modified at first install (instead of
3639 all files in ~ would be modified at first install (instead of
3633 ~/.ipython). This could be potentially disastrous, as the
3640 ~/.ipython). This could be potentially disastrous, as the
3634 modification (make line-endings native) could damage binary files.
3641 modification (make line-endings native) could damage binary files.
3635
3642
3636 2003-04-10 Fernando Perez <fperez@colorado.edu>
3643 2003-04-10 Fernando Perez <fperez@colorado.edu>
3637
3644
3638 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3645 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3639 handle only lines which are invalid python. This now means that
3646 handle only lines which are invalid python. This now means that
3640 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3647 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3641 for the bug report.
3648 for the bug report.
3642
3649
3643 2003-04-01 Fernando Perez <fperez@colorado.edu>
3650 2003-04-01 Fernando Perez <fperez@colorado.edu>
3644
3651
3645 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3652 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3646 where failing to set sys.last_traceback would crash pdb.pm().
3653 where failing to set sys.last_traceback would crash pdb.pm().
3647 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3654 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3648 report.
3655 report.
3649
3656
3650 2003-03-25 Fernando Perez <fperez@colorado.edu>
3657 2003-03-25 Fernando Perez <fperez@colorado.edu>
3651
3658
3652 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3659 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3653 before printing it (it had a lot of spurious blank lines at the
3660 before printing it (it had a lot of spurious blank lines at the
3654 end).
3661 end).
3655
3662
3656 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3663 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3657 output would be sent 21 times! Obviously people don't use this
3664 output would be sent 21 times! Obviously people don't use this
3658 too often, or I would have heard about it.
3665 too often, or I would have heard about it.
3659
3666
3660 2003-03-24 Fernando Perez <fperez@colorado.edu>
3667 2003-03-24 Fernando Perez <fperez@colorado.edu>
3661
3668
3662 * setup.py (scriptfiles): renamed the data_files parameter from
3669 * setup.py (scriptfiles): renamed the data_files parameter from
3663 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3670 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3664 for the patch.
3671 for the patch.
3665
3672
3666 2003-03-20 Fernando Perez <fperez@colorado.edu>
3673 2003-03-20 Fernando Perez <fperez@colorado.edu>
3667
3674
3668 * IPython/genutils.py (error): added error() and fatal()
3675 * IPython/genutils.py (error): added error() and fatal()
3669 functions.
3676 functions.
3670
3677
3671 2003-03-18 *** Released version 0.2.15pre3
3678 2003-03-18 *** Released version 0.2.15pre3
3672
3679
3673 2003-03-18 Fernando Perez <fperez@colorado.edu>
3680 2003-03-18 Fernando Perez <fperez@colorado.edu>
3674
3681
3675 * setupext/install_data_ext.py
3682 * setupext/install_data_ext.py
3676 (install_data_ext.initialize_options): Class contributed by Jack
3683 (install_data_ext.initialize_options): Class contributed by Jack
3677 Moffit for fixing the old distutils hack. He is sending this to
3684 Moffit for fixing the old distutils hack. He is sending this to
3678 the distutils folks so in the future we may not need it as a
3685 the distutils folks so in the future we may not need it as a
3679 private fix.
3686 private fix.
3680
3687
3681 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3688 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3682 changes for Debian packaging. See his patch for full details.
3689 changes for Debian packaging. See his patch for full details.
3683 The old distutils hack of making the ipythonrc* files carry a
3690 The old distutils hack of making the ipythonrc* files carry a
3684 bogus .py extension is gone, at last. Examples were moved to a
3691 bogus .py extension is gone, at last. Examples were moved to a
3685 separate subdir under doc/, and the separate executable scripts
3692 separate subdir under doc/, and the separate executable scripts
3686 now live in their own directory. Overall a great cleanup. The
3693 now live in their own directory. Overall a great cleanup. The
3687 manual was updated to use the new files, and setup.py has been
3694 manual was updated to use the new files, and setup.py has been
3688 fixed for this setup.
3695 fixed for this setup.
3689
3696
3690 * IPython/PyColorize.py (Parser.usage): made non-executable and
3697 * IPython/PyColorize.py (Parser.usage): made non-executable and
3691 created a pycolor wrapper around it to be included as a script.
3698 created a pycolor wrapper around it to be included as a script.
3692
3699
3693 2003-03-12 *** Released version 0.2.15pre2
3700 2003-03-12 *** Released version 0.2.15pre2
3694
3701
3695 2003-03-12 Fernando Perez <fperez@colorado.edu>
3702 2003-03-12 Fernando Perez <fperez@colorado.edu>
3696
3703
3697 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3704 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3698 long-standing problem with garbage characters in some terminals.
3705 long-standing problem with garbage characters in some terminals.
3699 The issue was really that the \001 and \002 escapes must _only_ be
3706 The issue was really that the \001 and \002 escapes must _only_ be
3700 passed to input prompts (which call readline), but _never_ to
3707 passed to input prompts (which call readline), but _never_ to
3701 normal text to be printed on screen. I changed ColorANSI to have
3708 normal text to be printed on screen. I changed ColorANSI to have
3702 two classes: TermColors and InputTermColors, each with the
3709 two classes: TermColors and InputTermColors, each with the
3703 appropriate escapes for input prompts or normal text. The code in
3710 appropriate escapes for input prompts or normal text. The code in
3704 Prompts.py got slightly more complicated, but this very old and
3711 Prompts.py got slightly more complicated, but this very old and
3705 annoying bug is finally fixed.
3712 annoying bug is finally fixed.
3706
3713
3707 All the credit for nailing down the real origin of this problem
3714 All the credit for nailing down the real origin of this problem
3708 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3715 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3709 *Many* thanks to him for spending quite a bit of effort on this.
3716 *Many* thanks to him for spending quite a bit of effort on this.
3710
3717
3711 2003-03-05 *** Released version 0.2.15pre1
3718 2003-03-05 *** Released version 0.2.15pre1
3712
3719
3713 2003-03-03 Fernando Perez <fperez@colorado.edu>
3720 2003-03-03 Fernando Perez <fperez@colorado.edu>
3714
3721
3715 * IPython/FakeModule.py: Moved the former _FakeModule to a
3722 * IPython/FakeModule.py: Moved the former _FakeModule to a
3716 separate file, because it's also needed by Magic (to fix a similar
3723 separate file, because it's also needed by Magic (to fix a similar
3717 pickle-related issue in @run).
3724 pickle-related issue in @run).
3718
3725
3719 2003-03-02 Fernando Perez <fperez@colorado.edu>
3726 2003-03-02 Fernando Perez <fperez@colorado.edu>
3720
3727
3721 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3728 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3722 the autocall option at runtime.
3729 the autocall option at runtime.
3723 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3730 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3724 across Magic.py to start separating Magic from InteractiveShell.
3731 across Magic.py to start separating Magic from InteractiveShell.
3725 (Magic._ofind): Fixed to return proper namespace for dotted
3732 (Magic._ofind): Fixed to return proper namespace for dotted
3726 names. Before, a dotted name would always return 'not currently
3733 names. Before, a dotted name would always return 'not currently
3727 defined', because it would find the 'parent'. s.x would be found,
3734 defined', because it would find the 'parent'. s.x would be found,
3728 but since 'x' isn't defined by itself, it would get confused.
3735 but since 'x' isn't defined by itself, it would get confused.
3729 (Magic.magic_run): Fixed pickling problems reported by Ralf
3736 (Magic.magic_run): Fixed pickling problems reported by Ralf
3730 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3737 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3731 that I'd used when Mike Heeter reported similar issues at the
3738 that I'd used when Mike Heeter reported similar issues at the
3732 top-level, but now for @run. It boils down to injecting the
3739 top-level, but now for @run. It boils down to injecting the
3733 namespace where code is being executed with something that looks
3740 namespace where code is being executed with something that looks
3734 enough like a module to fool pickle.dump(). Since a pickle stores
3741 enough like a module to fool pickle.dump(). Since a pickle stores
3735 a named reference to the importing module, we need this for
3742 a named reference to the importing module, we need this for
3736 pickles to save something sensible.
3743 pickles to save something sensible.
3737
3744
3738 * IPython/ipmaker.py (make_IPython): added an autocall option.
3745 * IPython/ipmaker.py (make_IPython): added an autocall option.
3739
3746
3740 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3747 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3741 the auto-eval code. Now autocalling is an option, and the code is
3748 the auto-eval code. Now autocalling is an option, and the code is
3742 also vastly safer. There is no more eval() involved at all.
3749 also vastly safer. There is no more eval() involved at all.
3743
3750
3744 2003-03-01 Fernando Perez <fperez@colorado.edu>
3751 2003-03-01 Fernando Perez <fperez@colorado.edu>
3745
3752
3746 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3753 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3747 dict with named keys instead of a tuple.
3754 dict with named keys instead of a tuple.
3748
3755
3749 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3756 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3750
3757
3751 * setup.py (make_shortcut): Fixed message about directories
3758 * setup.py (make_shortcut): Fixed message about directories
3752 created during Windows installation (the directories were ok, just
3759 created during Windows installation (the directories were ok, just
3753 the printed message was misleading). Thanks to Chris Liechti
3760 the printed message was misleading). Thanks to Chris Liechti
3754 <cliechti-AT-gmx.net> for the heads up.
3761 <cliechti-AT-gmx.net> for the heads up.
3755
3762
3756 2003-02-21 Fernando Perez <fperez@colorado.edu>
3763 2003-02-21 Fernando Perez <fperez@colorado.edu>
3757
3764
3758 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3765 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3759 of ValueError exception when checking for auto-execution. This
3766 of ValueError exception when checking for auto-execution. This
3760 one is raised by things like Numeric arrays arr.flat when the
3767 one is raised by things like Numeric arrays arr.flat when the
3761 array is non-contiguous.
3768 array is non-contiguous.
3762
3769
3763 2003-01-31 Fernando Perez <fperez@colorado.edu>
3770 2003-01-31 Fernando Perez <fperez@colorado.edu>
3764
3771
3765 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3772 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3766 not return any value at all (even though the command would get
3773 not return any value at all (even though the command would get
3767 executed).
3774 executed).
3768 (xsys): Flush stdout right after printing the command to ensure
3775 (xsys): Flush stdout right after printing the command to ensure
3769 proper ordering of commands and command output in the total
3776 proper ordering of commands and command output in the total
3770 output.
3777 output.
3771 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3778 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3772 system/getoutput as defaults. The old ones are kept for
3779 system/getoutput as defaults. The old ones are kept for
3773 compatibility reasons, so no code which uses this library needs
3780 compatibility reasons, so no code which uses this library needs
3774 changing.
3781 changing.
3775
3782
3776 2003-01-27 *** Released version 0.2.14
3783 2003-01-27 *** Released version 0.2.14
3777
3784
3778 2003-01-25 Fernando Perez <fperez@colorado.edu>
3785 2003-01-25 Fernando Perez <fperez@colorado.edu>
3779
3786
3780 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3787 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3781 functions defined in previous edit sessions could not be re-edited
3788 functions defined in previous edit sessions could not be re-edited
3782 (because the temp files were immediately removed). Now temp files
3789 (because the temp files were immediately removed). Now temp files
3783 are removed only at IPython's exit.
3790 are removed only at IPython's exit.
3784 (Magic.magic_run): Improved @run to perform shell-like expansions
3791 (Magic.magic_run): Improved @run to perform shell-like expansions
3785 on its arguments (~users and $VARS). With this, @run becomes more
3792 on its arguments (~users and $VARS). With this, @run becomes more
3786 like a normal command-line.
3793 like a normal command-line.
3787
3794
3788 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3795 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3789 bugs related to embedding and cleaned up that code. A fairly
3796 bugs related to embedding and cleaned up that code. A fairly
3790 important one was the impossibility to access the global namespace
3797 important one was the impossibility to access the global namespace
3791 through the embedded IPython (only local variables were visible).
3798 through the embedded IPython (only local variables were visible).
3792
3799
3793 2003-01-14 Fernando Perez <fperez@colorado.edu>
3800 2003-01-14 Fernando Perez <fperez@colorado.edu>
3794
3801
3795 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3802 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3796 auto-calling to be a bit more conservative. Now it doesn't get
3803 auto-calling to be a bit more conservative. Now it doesn't get
3797 triggered if any of '!=()<>' are in the rest of the input line, to
3804 triggered if any of '!=()<>' are in the rest of the input line, to
3798 allow comparing callables. Thanks to Alex for the heads up.
3805 allow comparing callables. Thanks to Alex for the heads up.
3799
3806
3800 2003-01-07 Fernando Perez <fperez@colorado.edu>
3807 2003-01-07 Fernando Perez <fperez@colorado.edu>
3801
3808
3802 * IPython/genutils.py (page): fixed estimation of the number of
3809 * IPython/genutils.py (page): fixed estimation of the number of
3803 lines in a string to be paged to simply count newlines. This
3810 lines in a string to be paged to simply count newlines. This
3804 prevents over-guessing due to embedded escape sequences. A better
3811 prevents over-guessing due to embedded escape sequences. A better
3805 long-term solution would involve stripping out the control chars
3812 long-term solution would involve stripping out the control chars
3806 for the count, but it's potentially so expensive I just don't
3813 for the count, but it's potentially so expensive I just don't
3807 think it's worth doing.
3814 think it's worth doing.
3808
3815
3809 2002-12-19 *** Released version 0.2.14pre50
3816 2002-12-19 *** Released version 0.2.14pre50
3810
3817
3811 2002-12-19 Fernando Perez <fperez@colorado.edu>
3818 2002-12-19 Fernando Perez <fperez@colorado.edu>
3812
3819
3813 * tools/release (version): Changed release scripts to inform
3820 * tools/release (version): Changed release scripts to inform
3814 Andrea and build a NEWS file with a list of recent changes.
3821 Andrea and build a NEWS file with a list of recent changes.
3815
3822
3816 * IPython/ColorANSI.py (__all__): changed terminal detection
3823 * IPython/ColorANSI.py (__all__): changed terminal detection
3817 code. Seems to work better for xterms without breaking
3824 code. Seems to work better for xterms without breaking
3818 konsole. Will need more testing to determine if WinXP and Mac OSX
3825 konsole. Will need more testing to determine if WinXP and Mac OSX
3819 also work ok.
3826 also work ok.
3820
3827
3821 2002-12-18 *** Released version 0.2.14pre49
3828 2002-12-18 *** Released version 0.2.14pre49
3822
3829
3823 2002-12-18 Fernando Perez <fperez@colorado.edu>
3830 2002-12-18 Fernando Perez <fperez@colorado.edu>
3824
3831
3825 * Docs: added new info about Mac OSX, from Andrea.
3832 * Docs: added new info about Mac OSX, from Andrea.
3826
3833
3827 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3834 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3828 allow direct plotting of python strings whose format is the same
3835 allow direct plotting of python strings whose format is the same
3829 of gnuplot data files.
3836 of gnuplot data files.
3830
3837
3831 2002-12-16 Fernando Perez <fperez@colorado.edu>
3838 2002-12-16 Fernando Perez <fperez@colorado.edu>
3832
3839
3833 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3840 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3834 value of exit question to be acknowledged.
3841 value of exit question to be acknowledged.
3835
3842
3836 2002-12-03 Fernando Perez <fperez@colorado.edu>
3843 2002-12-03 Fernando Perez <fperez@colorado.edu>
3837
3844
3838 * IPython/ipmaker.py: removed generators, which had been added
3845 * IPython/ipmaker.py: removed generators, which had been added
3839 by mistake in an earlier debugging run. This was causing trouble
3846 by mistake in an earlier debugging run. This was causing trouble
3840 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3847 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3841 for pointing this out.
3848 for pointing this out.
3842
3849
3843 2002-11-17 Fernando Perez <fperez@colorado.edu>
3850 2002-11-17 Fernando Perez <fperez@colorado.edu>
3844
3851
3845 * Manual: updated the Gnuplot section.
3852 * Manual: updated the Gnuplot section.
3846
3853
3847 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3854 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3848 a much better split of what goes in Runtime and what goes in
3855 a much better split of what goes in Runtime and what goes in
3849 Interactive.
3856 Interactive.
3850
3857
3851 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3858 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3852 being imported from iplib.
3859 being imported from iplib.
3853
3860
3854 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3861 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3855 for command-passing. Now the global Gnuplot instance is called
3862 for command-passing. Now the global Gnuplot instance is called
3856 'gp' instead of 'g', which was really a far too fragile and
3863 'gp' instead of 'g', which was really a far too fragile and
3857 common name.
3864 common name.
3858
3865
3859 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3866 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3860 bounding boxes generated by Gnuplot for square plots.
3867 bounding boxes generated by Gnuplot for square plots.
3861
3868
3862 * IPython/genutils.py (popkey): new function added. I should
3869 * IPython/genutils.py (popkey): new function added. I should
3863 suggest this on c.l.py as a dict method, it seems useful.
3870 suggest this on c.l.py as a dict method, it seems useful.
3864
3871
3865 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3872 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3866 to transparently handle PostScript generation. MUCH better than
3873 to transparently handle PostScript generation. MUCH better than
3867 the previous plot_eps/replot_eps (which I removed now). The code
3874 the previous plot_eps/replot_eps (which I removed now). The code
3868 is also fairly clean and well documented now (including
3875 is also fairly clean and well documented now (including
3869 docstrings).
3876 docstrings).
3870
3877
3871 2002-11-13 Fernando Perez <fperez@colorado.edu>
3878 2002-11-13 Fernando Perez <fperez@colorado.edu>
3872
3879
3873 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3880 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3874 (inconsistent with options).
3881 (inconsistent with options).
3875
3882
3876 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3883 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3877 manually disabled, I don't know why. Fixed it.
3884 manually disabled, I don't know why. Fixed it.
3878 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3885 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3879 eps output.
3886 eps output.
3880
3887
3881 2002-11-12 Fernando Perez <fperez@colorado.edu>
3888 2002-11-12 Fernando Perez <fperez@colorado.edu>
3882
3889
3883 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3890 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3884 don't propagate up to caller. Fixes crash reported by François
3891 don't propagate up to caller. Fixes crash reported by François
3885 Pinard.
3892 Pinard.
3886
3893
3887 2002-11-09 Fernando Perez <fperez@colorado.edu>
3894 2002-11-09 Fernando Perez <fperez@colorado.edu>
3888
3895
3889 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3896 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3890 history file for new users.
3897 history file for new users.
3891 (make_IPython): fixed bug where initial install would leave the
3898 (make_IPython): fixed bug where initial install would leave the
3892 user running in the .ipython dir.
3899 user running in the .ipython dir.
3893 (make_IPython): fixed bug where config dir .ipython would be
3900 (make_IPython): fixed bug where config dir .ipython would be
3894 created regardless of the given -ipythondir option. Thanks to Cory
3901 created regardless of the given -ipythondir option. Thanks to Cory
3895 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3902 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3896
3903
3897 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3904 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3898 type confirmations. Will need to use it in all of IPython's code
3905 type confirmations. Will need to use it in all of IPython's code
3899 consistently.
3906 consistently.
3900
3907
3901 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3908 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3902 context to print 31 lines instead of the default 5. This will make
3909 context to print 31 lines instead of the default 5. This will make
3903 the crash reports extremely detailed in case the problem is in
3910 the crash reports extremely detailed in case the problem is in
3904 libraries I don't have access to.
3911 libraries I don't have access to.
3905
3912
3906 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3913 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3907 line of defense' code to still crash, but giving users fair
3914 line of defense' code to still crash, but giving users fair
3908 warning. I don't want internal errors to go unreported: if there's
3915 warning. I don't want internal errors to go unreported: if there's
3909 an internal problem, IPython should crash and generate a full
3916 an internal problem, IPython should crash and generate a full
3910 report.
3917 report.
3911
3918
3912 2002-11-08 Fernando Perez <fperez@colorado.edu>
3919 2002-11-08 Fernando Perez <fperez@colorado.edu>
3913
3920
3914 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3921 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3915 otherwise uncaught exceptions which can appear if people set
3922 otherwise uncaught exceptions which can appear if people set
3916 sys.stdout to something badly broken. Thanks to a crash report
3923 sys.stdout to something badly broken. Thanks to a crash report
3917 from henni-AT-mail.brainbot.com.
3924 from henni-AT-mail.brainbot.com.
3918
3925
3919 2002-11-04 Fernando Perez <fperez@colorado.edu>
3926 2002-11-04 Fernando Perez <fperez@colorado.edu>
3920
3927
3921 * IPython/iplib.py (InteractiveShell.interact): added
3928 * IPython/iplib.py (InteractiveShell.interact): added
3922 __IPYTHON__active to the builtins. It's a flag which goes on when
3929 __IPYTHON__active to the builtins. It's a flag which goes on when
3923 the interaction starts and goes off again when it stops. This
3930 the interaction starts and goes off again when it stops. This
3924 allows embedding code to detect being inside IPython. Before this
3931 allows embedding code to detect being inside IPython. Before this
3925 was done via __IPYTHON__, but that only shows that an IPython
3932 was done via __IPYTHON__, but that only shows that an IPython
3926 instance has been created.
3933 instance has been created.
3927
3934
3928 * IPython/Magic.py (Magic.magic_env): I realized that in a
3935 * IPython/Magic.py (Magic.magic_env): I realized that in a
3929 UserDict, instance.data holds the data as a normal dict. So I
3936 UserDict, instance.data holds the data as a normal dict. So I
3930 modified @env to return os.environ.data instead of rebuilding a
3937 modified @env to return os.environ.data instead of rebuilding a
3931 dict by hand.
3938 dict by hand.
3932
3939
3933 2002-11-02 Fernando Perez <fperez@colorado.edu>
3940 2002-11-02 Fernando Perez <fperez@colorado.edu>
3934
3941
3935 * IPython/genutils.py (warn): changed so that level 1 prints no
3942 * IPython/genutils.py (warn): changed so that level 1 prints no
3936 header. Level 2 is now the default (with 'WARNING' header, as
3943 header. Level 2 is now the default (with 'WARNING' header, as
3937 before). I think I tracked all places where changes were needed in
3944 before). I think I tracked all places where changes were needed in
3938 IPython, but outside code using the old level numbering may have
3945 IPython, but outside code using the old level numbering may have
3939 broken.
3946 broken.
3940
3947
3941 * IPython/iplib.py (InteractiveShell.runcode): added this to
3948 * IPython/iplib.py (InteractiveShell.runcode): added this to
3942 handle the tracebacks in SystemExit traps correctly. The previous
3949 handle the tracebacks in SystemExit traps correctly. The previous
3943 code (through interact) was printing more of the stack than
3950 code (through interact) was printing more of the stack than
3944 necessary, showing IPython internal code to the user.
3951 necessary, showing IPython internal code to the user.
3945
3952
3946 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3953 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3947 default. Now that the default at the confirmation prompt is yes,
3954 default. Now that the default at the confirmation prompt is yes,
3948 it's not so intrusive. François' argument that ipython sessions
3955 it's not so intrusive. François' argument that ipython sessions
3949 tend to be complex enough not to lose them from an accidental C-d,
3956 tend to be complex enough not to lose them from an accidental C-d,
3950 is a valid one.
3957 is a valid one.
3951
3958
3952 * IPython/iplib.py (InteractiveShell.interact): added a
3959 * IPython/iplib.py (InteractiveShell.interact): added a
3953 showtraceback() call to the SystemExit trap, and modified the exit
3960 showtraceback() call to the SystemExit trap, and modified the exit
3954 confirmation to have yes as the default.
3961 confirmation to have yes as the default.
3955
3962
3956 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3963 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3957 this file. It's been gone from the code for a long time, this was
3964 this file. It's been gone from the code for a long time, this was
3958 simply leftover junk.
3965 simply leftover junk.
3959
3966
3960 2002-11-01 Fernando Perez <fperez@colorado.edu>
3967 2002-11-01 Fernando Perez <fperez@colorado.edu>
3961
3968
3962 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3969 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3963 added. If set, IPython now traps EOF and asks for
3970 added. If set, IPython now traps EOF and asks for
3964 confirmation. After a request by François Pinard.
3971 confirmation. After a request by François Pinard.
3965
3972
3966 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3973 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3967 of @abort, and with a new (better) mechanism for handling the
3974 of @abort, and with a new (better) mechanism for handling the
3968 exceptions.
3975 exceptions.
3969
3976
3970 2002-10-27 Fernando Perez <fperez@colorado.edu>
3977 2002-10-27 Fernando Perez <fperez@colorado.edu>
3971
3978
3972 * IPython/usage.py (__doc__): updated the --help information and
3979 * IPython/usage.py (__doc__): updated the --help information and
3973 the ipythonrc file to indicate that -log generates
3980 the ipythonrc file to indicate that -log generates
3974 ./ipython.log. Also fixed the corresponding info in @logstart.
3981 ./ipython.log. Also fixed the corresponding info in @logstart.
3975 This and several other fixes in the manuals thanks to reports by
3982 This and several other fixes in the manuals thanks to reports by
3976 François Pinard <pinard-AT-iro.umontreal.ca>.
3983 François Pinard <pinard-AT-iro.umontreal.ca>.
3977
3984
3978 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3985 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3979 refer to @logstart (instead of @log, which doesn't exist).
3986 refer to @logstart (instead of @log, which doesn't exist).
3980
3987
3981 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3988 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3982 AttributeError crash. Thanks to Christopher Armstrong
3989 AttributeError crash. Thanks to Christopher Armstrong
3983 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3990 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3984 introduced recently (in 0.2.14pre37) with the fix to the eval
3991 introduced recently (in 0.2.14pre37) with the fix to the eval
3985 problem mentioned below.
3992 problem mentioned below.
3986
3993
3987 2002-10-17 Fernando Perez <fperez@colorado.edu>
3994 2002-10-17 Fernando Perez <fperez@colorado.edu>
3988
3995
3989 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3996 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3990 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3997 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3991
3998
3992 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3999 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3993 this function to fix a problem reported by Alex Schmolck. He saw
4000 this function to fix a problem reported by Alex Schmolck. He saw
3994 it with list comprehensions and generators, which were getting
4001 it with list comprehensions and generators, which were getting
3995 called twice. The real problem was an 'eval' call in testing for
4002 called twice. The real problem was an 'eval' call in testing for
3996 automagic which was evaluating the input line silently.
4003 automagic which was evaluating the input line silently.
3997
4004
3998 This is a potentially very nasty bug, if the input has side
4005 This is a potentially very nasty bug, if the input has side
3999 effects which must not be repeated. The code is much cleaner now,
4006 effects which must not be repeated. The code is much cleaner now,
4000 without any blanket 'except' left and with a regexp test for
4007 without any blanket 'except' left and with a regexp test for
4001 actual function names.
4008 actual function names.
4002
4009
4003 But an eval remains, which I'm not fully comfortable with. I just
4010 But an eval remains, which I'm not fully comfortable with. I just
4004 don't know how to find out if an expression could be a callable in
4011 don't know how to find out if an expression could be a callable in
4005 the user's namespace without doing an eval on the string. However
4012 the user's namespace without doing an eval on the string. However
4006 that string is now much more strictly checked so that no code
4013 that string is now much more strictly checked so that no code
4007 slips by, so the eval should only happen for things that can
4014 slips by, so the eval should only happen for things that can
4008 really be only function/method names.
4015 really be only function/method names.
4009
4016
4010 2002-10-15 Fernando Perez <fperez@colorado.edu>
4017 2002-10-15 Fernando Perez <fperez@colorado.edu>
4011
4018
4012 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4019 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4013 OSX information to main manual, removed README_Mac_OSX file from
4020 OSX information to main manual, removed README_Mac_OSX file from
4014 distribution. Also updated credits for recent additions.
4021 distribution. Also updated credits for recent additions.
4015
4022
4016 2002-10-10 Fernando Perez <fperez@colorado.edu>
4023 2002-10-10 Fernando Perez <fperez@colorado.edu>
4017
4024
4018 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4025 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4019 terminal-related issues. Many thanks to Andrea Riciputi
4026 terminal-related issues. Many thanks to Andrea Riciputi
4020 <andrea.riciputi-AT-libero.it> for writing it.
4027 <andrea.riciputi-AT-libero.it> for writing it.
4021
4028
4022 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4029 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4023 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4030 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4024
4031
4025 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4032 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4026 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4033 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4027 <syver-en-AT-online.no> who both submitted patches for this problem.
4034 <syver-en-AT-online.no> who both submitted patches for this problem.
4028
4035
4029 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4036 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4030 global embedding to make sure that things don't overwrite user
4037 global embedding to make sure that things don't overwrite user
4031 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4038 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4032
4039
4033 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4040 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4034 compatibility. Thanks to Hayden Callow
4041 compatibility. Thanks to Hayden Callow
4035 <h.callow-AT-elec.canterbury.ac.nz>
4042 <h.callow-AT-elec.canterbury.ac.nz>
4036
4043
4037 2002-10-04 Fernando Perez <fperez@colorado.edu>
4044 2002-10-04 Fernando Perez <fperez@colorado.edu>
4038
4045
4039 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4046 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4040 Gnuplot.File objects.
4047 Gnuplot.File objects.
4041
4048
4042 2002-07-23 Fernando Perez <fperez@colorado.edu>
4049 2002-07-23 Fernando Perez <fperez@colorado.edu>
4043
4050
4044 * IPython/genutils.py (timing): Added timings() and timing() for
4051 * IPython/genutils.py (timing): Added timings() and timing() for
4045 quick access to the most commonly needed data, the execution
4052 quick access to the most commonly needed data, the execution
4046 times. Old timing() renamed to timings_out().
4053 times. Old timing() renamed to timings_out().
4047
4054
4048 2002-07-18 Fernando Perez <fperez@colorado.edu>
4055 2002-07-18 Fernando Perez <fperez@colorado.edu>
4049
4056
4050 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4057 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4051 bug with nested instances disrupting the parent's tab completion.
4058 bug with nested instances disrupting the parent's tab completion.
4052
4059
4053 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4060 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4054 all_completions code to begin the emacs integration.
4061 all_completions code to begin the emacs integration.
4055
4062
4056 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4063 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4057 argument to allow titling individual arrays when plotting.
4064 argument to allow titling individual arrays when plotting.
4058
4065
4059 2002-07-15 Fernando Perez <fperez@colorado.edu>
4066 2002-07-15 Fernando Perez <fperez@colorado.edu>
4060
4067
4061 * setup.py (make_shortcut): changed to retrieve the value of
4068 * setup.py (make_shortcut): changed to retrieve the value of
4062 'Program Files' directory from the registry (this value changes in
4069 'Program Files' directory from the registry (this value changes in
4063 non-english versions of Windows). Thanks to Thomas Fanslau
4070 non-english versions of Windows). Thanks to Thomas Fanslau
4064 <tfanslau-AT-gmx.de> for the report.
4071 <tfanslau-AT-gmx.de> for the report.
4065
4072
4066 2002-07-10 Fernando Perez <fperez@colorado.edu>
4073 2002-07-10 Fernando Perez <fperez@colorado.edu>
4067
4074
4068 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4075 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4069 a bug in pdb, which crashes if a line with only whitespace is
4076 a bug in pdb, which crashes if a line with only whitespace is
4070 entered. Bug report submitted to sourceforge.
4077 entered. Bug report submitted to sourceforge.
4071
4078
4072 2002-07-09 Fernando Perez <fperez@colorado.edu>
4079 2002-07-09 Fernando Perez <fperez@colorado.edu>
4073
4080
4074 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4081 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4075 reporting exceptions (it's a bug in inspect.py, I just set a
4082 reporting exceptions (it's a bug in inspect.py, I just set a
4076 workaround).
4083 workaround).
4077
4084
4078 2002-07-08 Fernando Perez <fperez@colorado.edu>
4085 2002-07-08 Fernando Perez <fperez@colorado.edu>
4079
4086
4080 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4087 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4081 __IPYTHON__ in __builtins__ to show up in user_ns.
4088 __IPYTHON__ in __builtins__ to show up in user_ns.
4082
4089
4083 2002-07-03 Fernando Perez <fperez@colorado.edu>
4090 2002-07-03 Fernando Perez <fperez@colorado.edu>
4084
4091
4085 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4092 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4086 name from @gp_set_instance to @gp_set_default.
4093 name from @gp_set_instance to @gp_set_default.
4087
4094
4088 * IPython/ipmaker.py (make_IPython): default editor value set to
4095 * IPython/ipmaker.py (make_IPython): default editor value set to
4089 '0' (a string), to match the rc file. Otherwise will crash when
4096 '0' (a string), to match the rc file. Otherwise will crash when
4090 .strip() is called on it.
4097 .strip() is called on it.
4091
4098
4092
4099
4093 2002-06-28 Fernando Perez <fperez@colorado.edu>
4100 2002-06-28 Fernando Perez <fperez@colorado.edu>
4094
4101
4095 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4102 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4096 of files in current directory when a file is executed via
4103 of files in current directory when a file is executed via
4097 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4104 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4098
4105
4099 * setup.py (manfiles): fix for rpm builds, submitted by RA
4106 * setup.py (manfiles): fix for rpm builds, submitted by RA
4100 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4107 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4101
4108
4102 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4109 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4103 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4110 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4104 string!). A. Schmolck caught this one.
4111 string!). A. Schmolck caught this one.
4105
4112
4106 2002-06-27 Fernando Perez <fperez@colorado.edu>
4113 2002-06-27 Fernando Perez <fperez@colorado.edu>
4107
4114
4108 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4115 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4109 defined files at the cmd line. __name__ wasn't being set to
4116 defined files at the cmd line. __name__ wasn't being set to
4110 __main__.
4117 __main__.
4111
4118
4112 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4119 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4113 regular lists and tuples besides Numeric arrays.
4120 regular lists and tuples besides Numeric arrays.
4114
4121
4115 * IPython/Prompts.py (CachedOutput.__call__): Added output
4122 * IPython/Prompts.py (CachedOutput.__call__): Added output
4116 supression for input ending with ';'. Similar to Mathematica and
4123 supression for input ending with ';'. Similar to Mathematica and
4117 Matlab. The _* vars and Out[] list are still updated, just like
4124 Matlab. The _* vars and Out[] list are still updated, just like
4118 Mathematica behaves.
4125 Mathematica behaves.
4119
4126
4120 2002-06-25 Fernando Perez <fperez@colorado.edu>
4127 2002-06-25 Fernando Perez <fperez@colorado.edu>
4121
4128
4122 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4129 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4123 .ini extensions for profiels under Windows.
4130 .ini extensions for profiels under Windows.
4124
4131
4125 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4132 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4126 string form. Fix contributed by Alexander Schmolck
4133 string form. Fix contributed by Alexander Schmolck
4127 <a.schmolck-AT-gmx.net>
4134 <a.schmolck-AT-gmx.net>
4128
4135
4129 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4136 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4130 pre-configured Gnuplot instance.
4137 pre-configured Gnuplot instance.
4131
4138
4132 2002-06-21 Fernando Perez <fperez@colorado.edu>
4139 2002-06-21 Fernando Perez <fperez@colorado.edu>
4133
4140
4134 * IPython/numutils.py (exp_safe): new function, works around the
4141 * IPython/numutils.py (exp_safe): new function, works around the
4135 underflow problems in Numeric.
4142 underflow problems in Numeric.
4136 (log2): New fn. Safe log in base 2: returns exact integer answer
4143 (log2): New fn. Safe log in base 2: returns exact integer answer
4137 for exact integer powers of 2.
4144 for exact integer powers of 2.
4138
4145
4139 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4146 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4140 properly.
4147 properly.
4141
4148
4142 2002-06-20 Fernando Perez <fperez@colorado.edu>
4149 2002-06-20 Fernando Perez <fperez@colorado.edu>
4143
4150
4144 * IPython/genutils.py (timing): new function like
4151 * IPython/genutils.py (timing): new function like
4145 Mathematica's. Similar to time_test, but returns more info.
4152 Mathematica's. Similar to time_test, but returns more info.
4146
4153
4147 2002-06-18 Fernando Perez <fperez@colorado.edu>
4154 2002-06-18 Fernando Perez <fperez@colorado.edu>
4148
4155
4149 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4156 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4150 according to Mike Heeter's suggestions.
4157 according to Mike Heeter's suggestions.
4151
4158
4152 2002-06-16 Fernando Perez <fperez@colorado.edu>
4159 2002-06-16 Fernando Perez <fperez@colorado.edu>
4153
4160
4154 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4161 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4155 system. GnuplotMagic is gone as a user-directory option. New files
4162 system. GnuplotMagic is gone as a user-directory option. New files
4156 make it easier to use all the gnuplot stuff both from external
4163 make it easier to use all the gnuplot stuff both from external
4157 programs as well as from IPython. Had to rewrite part of
4164 programs as well as from IPython. Had to rewrite part of
4158 hardcopy() b/c of a strange bug: often the ps files simply don't
4165 hardcopy() b/c of a strange bug: often the ps files simply don't
4159 get created, and require a repeat of the command (often several
4166 get created, and require a repeat of the command (often several
4160 times).
4167 times).
4161
4168
4162 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4169 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4163 resolve output channel at call time, so that if sys.stderr has
4170 resolve output channel at call time, so that if sys.stderr has
4164 been redirected by user this gets honored.
4171 been redirected by user this gets honored.
4165
4172
4166 2002-06-13 Fernando Perez <fperez@colorado.edu>
4173 2002-06-13 Fernando Perez <fperez@colorado.edu>
4167
4174
4168 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4175 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4169 IPShell. Kept a copy with the old names to avoid breaking people's
4176 IPShell. Kept a copy with the old names to avoid breaking people's
4170 embedded code.
4177 embedded code.
4171
4178
4172 * IPython/ipython: simplified it to the bare minimum after
4179 * IPython/ipython: simplified it to the bare minimum after
4173 Holger's suggestions. Added info about how to use it in
4180 Holger's suggestions. Added info about how to use it in
4174 PYTHONSTARTUP.
4181 PYTHONSTARTUP.
4175
4182
4176 * IPython/Shell.py (IPythonShell): changed the options passing
4183 * IPython/Shell.py (IPythonShell): changed the options passing
4177 from a string with funky %s replacements to a straight list. Maybe
4184 from a string with funky %s replacements to a straight list. Maybe
4178 a bit more typing, but it follows sys.argv conventions, so there's
4185 a bit more typing, but it follows sys.argv conventions, so there's
4179 less special-casing to remember.
4186 less special-casing to remember.
4180
4187
4181 2002-06-12 Fernando Perez <fperez@colorado.edu>
4188 2002-06-12 Fernando Perez <fperez@colorado.edu>
4182
4189
4183 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4190 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4184 command. Thanks to a suggestion by Mike Heeter.
4191 command. Thanks to a suggestion by Mike Heeter.
4185 (Magic.magic_pfile): added behavior to look at filenames if given
4192 (Magic.magic_pfile): added behavior to look at filenames if given
4186 arg is not a defined object.
4193 arg is not a defined object.
4187 (Magic.magic_save): New @save function to save code snippets. Also
4194 (Magic.magic_save): New @save function to save code snippets. Also
4188 a Mike Heeter idea.
4195 a Mike Heeter idea.
4189
4196
4190 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4197 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4191 plot() and replot(). Much more convenient now, especially for
4198 plot() and replot(). Much more convenient now, especially for
4192 interactive use.
4199 interactive use.
4193
4200
4194 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4201 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4195 filenames.
4202 filenames.
4196
4203
4197 2002-06-02 Fernando Perez <fperez@colorado.edu>
4204 2002-06-02 Fernando Perez <fperez@colorado.edu>
4198
4205
4199 * IPython/Struct.py (Struct.__init__): modified to admit
4206 * IPython/Struct.py (Struct.__init__): modified to admit
4200 initialization via another struct.
4207 initialization via another struct.
4201
4208
4202 * IPython/genutils.py (SystemExec.__init__): New stateful
4209 * IPython/genutils.py (SystemExec.__init__): New stateful
4203 interface to xsys and bq. Useful for writing system scripts.
4210 interface to xsys and bq. Useful for writing system scripts.
4204
4211
4205 2002-05-30 Fernando Perez <fperez@colorado.edu>
4212 2002-05-30 Fernando Perez <fperez@colorado.edu>
4206
4213
4207 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4214 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4208 documents. This will make the user download smaller (it's getting
4215 documents. This will make the user download smaller (it's getting
4209 too big).
4216 too big).
4210
4217
4211 2002-05-29 Fernando Perez <fperez@colorado.edu>
4218 2002-05-29 Fernando Perez <fperez@colorado.edu>
4212
4219
4213 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4220 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4214 fix problems with shelve and pickle. Seems to work, but I don't
4221 fix problems with shelve and pickle. Seems to work, but I don't
4215 know if corner cases break it. Thanks to Mike Heeter
4222 know if corner cases break it. Thanks to Mike Heeter
4216 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4223 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4217
4224
4218 2002-05-24 Fernando Perez <fperez@colorado.edu>
4225 2002-05-24 Fernando Perez <fperez@colorado.edu>
4219
4226
4220 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4227 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4221 macros having broken.
4228 macros having broken.
4222
4229
4223 2002-05-21 Fernando Perez <fperez@colorado.edu>
4230 2002-05-21 Fernando Perez <fperez@colorado.edu>
4224
4231
4225 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4232 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4226 introduced logging bug: all history before logging started was
4233 introduced logging bug: all history before logging started was
4227 being written one character per line! This came from the redesign
4234 being written one character per line! This came from the redesign
4228 of the input history as a special list which slices to strings,
4235 of the input history as a special list which slices to strings,
4229 not to lists.
4236 not to lists.
4230
4237
4231 2002-05-20 Fernando Perez <fperez@colorado.edu>
4238 2002-05-20 Fernando Perez <fperez@colorado.edu>
4232
4239
4233 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4240 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4234 be an attribute of all classes in this module. The design of these
4241 be an attribute of all classes in this module. The design of these
4235 classes needs some serious overhauling.
4242 classes needs some serious overhauling.
4236
4243
4237 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4244 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4238 which was ignoring '_' in option names.
4245 which was ignoring '_' in option names.
4239
4246
4240 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4247 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4241 'Verbose_novars' to 'Context' and made it the new default. It's a
4248 'Verbose_novars' to 'Context' and made it the new default. It's a
4242 bit more readable and also safer than verbose.
4249 bit more readable and also safer than verbose.
4243
4250
4244 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4251 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4245 triple-quoted strings.
4252 triple-quoted strings.
4246
4253
4247 * IPython/OInspect.py (__all__): new module exposing the object
4254 * IPython/OInspect.py (__all__): new module exposing the object
4248 introspection facilities. Now the corresponding magics are dummy
4255 introspection facilities. Now the corresponding magics are dummy
4249 wrappers around this. Having this module will make it much easier
4256 wrappers around this. Having this module will make it much easier
4250 to put these functions into our modified pdb.
4257 to put these functions into our modified pdb.
4251 This new object inspector system uses the new colorizing module,
4258 This new object inspector system uses the new colorizing module,
4252 so source code and other things are nicely syntax highlighted.
4259 so source code and other things are nicely syntax highlighted.
4253
4260
4254 2002-05-18 Fernando Perez <fperez@colorado.edu>
4261 2002-05-18 Fernando Perez <fperez@colorado.edu>
4255
4262
4256 * IPython/ColorANSI.py: Split the coloring tools into a separate
4263 * IPython/ColorANSI.py: Split the coloring tools into a separate
4257 module so I can use them in other code easier (they were part of
4264 module so I can use them in other code easier (they were part of
4258 ultraTB).
4265 ultraTB).
4259
4266
4260 2002-05-17 Fernando Perez <fperez@colorado.edu>
4267 2002-05-17 Fernando Perez <fperez@colorado.edu>
4261
4268
4262 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4269 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4263 fixed it to set the global 'g' also to the called instance, as
4270 fixed it to set the global 'g' also to the called instance, as
4264 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4271 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4265 user's 'g' variables).
4272 user's 'g' variables).
4266
4273
4267 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4274 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4268 global variables (aliases to _ih,_oh) so that users which expect
4275 global variables (aliases to _ih,_oh) so that users which expect
4269 In[5] or Out[7] to work aren't unpleasantly surprised.
4276 In[5] or Out[7] to work aren't unpleasantly surprised.
4270 (InputList.__getslice__): new class to allow executing slices of
4277 (InputList.__getslice__): new class to allow executing slices of
4271 input history directly. Very simple class, complements the use of
4278 input history directly. Very simple class, complements the use of
4272 macros.
4279 macros.
4273
4280
4274 2002-05-16 Fernando Perez <fperez@colorado.edu>
4281 2002-05-16 Fernando Perez <fperez@colorado.edu>
4275
4282
4276 * setup.py (docdirbase): make doc directory be just doc/IPython
4283 * setup.py (docdirbase): make doc directory be just doc/IPython
4277 without version numbers, it will reduce clutter for users.
4284 without version numbers, it will reduce clutter for users.
4278
4285
4279 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4286 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4280 execfile call to prevent possible memory leak. See for details:
4287 execfile call to prevent possible memory leak. See for details:
4281 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4288 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4282
4289
4283 2002-05-15 Fernando Perez <fperez@colorado.edu>
4290 2002-05-15 Fernando Perez <fperez@colorado.edu>
4284
4291
4285 * IPython/Magic.py (Magic.magic_psource): made the object
4292 * IPython/Magic.py (Magic.magic_psource): made the object
4286 introspection names be more standard: pdoc, pdef, pfile and
4293 introspection names be more standard: pdoc, pdef, pfile and
4287 psource. They all print/page their output, and it makes
4294 psource. They all print/page their output, and it makes
4288 remembering them easier. Kept old names for compatibility as
4295 remembering them easier. Kept old names for compatibility as
4289 aliases.
4296 aliases.
4290
4297
4291 2002-05-14 Fernando Perez <fperez@colorado.edu>
4298 2002-05-14 Fernando Perez <fperez@colorado.edu>
4292
4299
4293 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4300 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4294 what the mouse problem was. The trick is to use gnuplot with temp
4301 what the mouse problem was. The trick is to use gnuplot with temp
4295 files and NOT with pipes (for data communication), because having
4302 files and NOT with pipes (for data communication), because having
4296 both pipes and the mouse on is bad news.
4303 both pipes and the mouse on is bad news.
4297
4304
4298 2002-05-13 Fernando Perez <fperez@colorado.edu>
4305 2002-05-13 Fernando Perez <fperez@colorado.edu>
4299
4306
4300 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4307 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4301 bug. Information would be reported about builtins even when
4308 bug. Information would be reported about builtins even when
4302 user-defined functions overrode them.
4309 user-defined functions overrode them.
4303
4310
4304 2002-05-11 Fernando Perez <fperez@colorado.edu>
4311 2002-05-11 Fernando Perez <fperez@colorado.edu>
4305
4312
4306 * IPython/__init__.py (__all__): removed FlexCompleter from
4313 * IPython/__init__.py (__all__): removed FlexCompleter from
4307 __all__ so that things don't fail in platforms without readline.
4314 __all__ so that things don't fail in platforms without readline.
4308
4315
4309 2002-05-10 Fernando Perez <fperez@colorado.edu>
4316 2002-05-10 Fernando Perez <fperez@colorado.edu>
4310
4317
4311 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4318 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4312 it requires Numeric, effectively making Numeric a dependency for
4319 it requires Numeric, effectively making Numeric a dependency for
4313 IPython.
4320 IPython.
4314
4321
4315 * Released 0.2.13
4322 * Released 0.2.13
4316
4323
4317 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4324 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4318 profiler interface. Now all the major options from the profiler
4325 profiler interface. Now all the major options from the profiler
4319 module are directly supported in IPython, both for single
4326 module are directly supported in IPython, both for single
4320 expressions (@prun) and for full programs (@run -p).
4327 expressions (@prun) and for full programs (@run -p).
4321
4328
4322 2002-05-09 Fernando Perez <fperez@colorado.edu>
4329 2002-05-09 Fernando Perez <fperez@colorado.edu>
4323
4330
4324 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4331 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4325 magic properly formatted for screen.
4332 magic properly formatted for screen.
4326
4333
4327 * setup.py (make_shortcut): Changed things to put pdf version in
4334 * setup.py (make_shortcut): Changed things to put pdf version in
4328 doc/ instead of doc/manual (had to change lyxport a bit).
4335 doc/ instead of doc/manual (had to change lyxport a bit).
4329
4336
4330 * IPython/Magic.py (Profile.string_stats): made profile runs go
4337 * IPython/Magic.py (Profile.string_stats): made profile runs go
4331 through pager (they are long and a pager allows searching, saving,
4338 through pager (they are long and a pager allows searching, saving,
4332 etc.)
4339 etc.)
4333
4340
4334 2002-05-08 Fernando Perez <fperez@colorado.edu>
4341 2002-05-08 Fernando Perez <fperez@colorado.edu>
4335
4342
4336 * Released 0.2.12
4343 * Released 0.2.12
4337
4344
4338 2002-05-06 Fernando Perez <fperez@colorado.edu>
4345 2002-05-06 Fernando Perez <fperez@colorado.edu>
4339
4346
4340 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4347 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4341 introduced); 'hist n1 n2' was broken.
4348 introduced); 'hist n1 n2' was broken.
4342 (Magic.magic_pdb): added optional on/off arguments to @pdb
4349 (Magic.magic_pdb): added optional on/off arguments to @pdb
4343 (Magic.magic_run): added option -i to @run, which executes code in
4350 (Magic.magic_run): added option -i to @run, which executes code in
4344 the IPython namespace instead of a clean one. Also added @irun as
4351 the IPython namespace instead of a clean one. Also added @irun as
4345 an alias to @run -i.
4352 an alias to @run -i.
4346
4353
4347 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4354 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4348 fixed (it didn't really do anything, the namespaces were wrong).
4355 fixed (it didn't really do anything, the namespaces were wrong).
4349
4356
4350 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4357 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4351
4358
4352 * IPython/__init__.py (__all__): Fixed package namespace, now
4359 * IPython/__init__.py (__all__): Fixed package namespace, now
4353 'import IPython' does give access to IPython.<all> as
4360 'import IPython' does give access to IPython.<all> as
4354 expected. Also renamed __release__ to Release.
4361 expected. Also renamed __release__ to Release.
4355
4362
4356 * IPython/Debugger.py (__license__): created new Pdb class which
4363 * IPython/Debugger.py (__license__): created new Pdb class which
4357 functions like a drop-in for the normal pdb.Pdb but does NOT
4364 functions like a drop-in for the normal pdb.Pdb but does NOT
4358 import readline by default. This way it doesn't muck up IPython's
4365 import readline by default. This way it doesn't muck up IPython's
4359 readline handling, and now tab-completion finally works in the
4366 readline handling, and now tab-completion finally works in the
4360 debugger -- sort of. It completes things globally visible, but the
4367 debugger -- sort of. It completes things globally visible, but the
4361 completer doesn't track the stack as pdb walks it. That's a bit
4368 completer doesn't track the stack as pdb walks it. That's a bit
4362 tricky, and I'll have to implement it later.
4369 tricky, and I'll have to implement it later.
4363
4370
4364 2002-05-05 Fernando Perez <fperez@colorado.edu>
4371 2002-05-05 Fernando Perez <fperez@colorado.edu>
4365
4372
4366 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4373 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4367 magic docstrings when printed via ? (explicit \'s were being
4374 magic docstrings when printed via ? (explicit \'s were being
4368 printed).
4375 printed).
4369
4376
4370 * IPython/ipmaker.py (make_IPython): fixed namespace
4377 * IPython/ipmaker.py (make_IPython): fixed namespace
4371 identification bug. Now variables loaded via logs or command-line
4378 identification bug. Now variables loaded via logs or command-line
4372 files are recognized in the interactive namespace by @who.
4379 files are recognized in the interactive namespace by @who.
4373
4380
4374 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4381 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4375 log replay system stemming from the string form of Structs.
4382 log replay system stemming from the string form of Structs.
4376
4383
4377 * IPython/Magic.py (Macro.__init__): improved macros to properly
4384 * IPython/Magic.py (Macro.__init__): improved macros to properly
4378 handle magic commands in them.
4385 handle magic commands in them.
4379 (Magic.magic_logstart): usernames are now expanded so 'logstart
4386 (Magic.magic_logstart): usernames are now expanded so 'logstart
4380 ~/mylog' now works.
4387 ~/mylog' now works.
4381
4388
4382 * IPython/iplib.py (complete): fixed bug where paths starting with
4389 * IPython/iplib.py (complete): fixed bug where paths starting with
4383 '/' would be completed as magic names.
4390 '/' would be completed as magic names.
4384
4391
4385 2002-05-04 Fernando Perez <fperez@colorado.edu>
4392 2002-05-04 Fernando Perez <fperez@colorado.edu>
4386
4393
4387 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4394 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4388 allow running full programs under the profiler's control.
4395 allow running full programs under the profiler's control.
4389
4396
4390 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4397 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4391 mode to report exceptions verbosely but without formatting
4398 mode to report exceptions verbosely but without formatting
4392 variables. This addresses the issue of ipython 'freezing' (it's
4399 variables. This addresses the issue of ipython 'freezing' (it's
4393 not frozen, but caught in an expensive formatting loop) when huge
4400 not frozen, but caught in an expensive formatting loop) when huge
4394 variables are in the context of an exception.
4401 variables are in the context of an exception.
4395 (VerboseTB.text): Added '--->' markers at line where exception was
4402 (VerboseTB.text): Added '--->' markers at line where exception was
4396 triggered. Much clearer to read, especially in NoColor modes.
4403 triggered. Much clearer to read, especially in NoColor modes.
4397
4404
4398 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4405 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4399 implemented in reverse when changing to the new parse_options().
4406 implemented in reverse when changing to the new parse_options().
4400
4407
4401 2002-05-03 Fernando Perez <fperez@colorado.edu>
4408 2002-05-03 Fernando Perez <fperez@colorado.edu>
4402
4409
4403 * IPython/Magic.py (Magic.parse_options): new function so that
4410 * IPython/Magic.py (Magic.parse_options): new function so that
4404 magics can parse options easier.
4411 magics can parse options easier.
4405 (Magic.magic_prun): new function similar to profile.run(),
4412 (Magic.magic_prun): new function similar to profile.run(),
4406 suggested by Chris Hart.
4413 suggested by Chris Hart.
4407 (Magic.magic_cd): fixed behavior so that it only changes if
4414 (Magic.magic_cd): fixed behavior so that it only changes if
4408 directory actually is in history.
4415 directory actually is in history.
4409
4416
4410 * IPython/usage.py (__doc__): added information about potential
4417 * IPython/usage.py (__doc__): added information about potential
4411 slowness of Verbose exception mode when there are huge data
4418 slowness of Verbose exception mode when there are huge data
4412 structures to be formatted (thanks to Archie Paulson).
4419 structures to be formatted (thanks to Archie Paulson).
4413
4420
4414 * IPython/ipmaker.py (make_IPython): Changed default logging
4421 * IPython/ipmaker.py (make_IPython): Changed default logging
4415 (when simply called with -log) to use curr_dir/ipython.log in
4422 (when simply called with -log) to use curr_dir/ipython.log in
4416 rotate mode. Fixed crash which was occuring with -log before
4423 rotate mode. Fixed crash which was occuring with -log before
4417 (thanks to Jim Boyle).
4424 (thanks to Jim Boyle).
4418
4425
4419 2002-05-01 Fernando Perez <fperez@colorado.edu>
4426 2002-05-01 Fernando Perez <fperez@colorado.edu>
4420
4427
4421 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4428 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4422 was nasty -- though somewhat of a corner case).
4429 was nasty -- though somewhat of a corner case).
4423
4430
4424 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4431 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4425 text (was a bug).
4432 text (was a bug).
4426
4433
4427 2002-04-30 Fernando Perez <fperez@colorado.edu>
4434 2002-04-30 Fernando Perez <fperez@colorado.edu>
4428
4435
4429 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4436 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4430 a print after ^D or ^C from the user so that the In[] prompt
4437 a print after ^D or ^C from the user so that the In[] prompt
4431 doesn't over-run the gnuplot one.
4438 doesn't over-run the gnuplot one.
4432
4439
4433 2002-04-29 Fernando Perez <fperez@colorado.edu>
4440 2002-04-29 Fernando Perez <fperez@colorado.edu>
4434
4441
4435 * Released 0.2.10
4442 * Released 0.2.10
4436
4443
4437 * IPython/__release__.py (version): get date dynamically.
4444 * IPython/__release__.py (version): get date dynamically.
4438
4445
4439 * Misc. documentation updates thanks to Arnd's comments. Also ran
4446 * Misc. documentation updates thanks to Arnd's comments. Also ran
4440 a full spellcheck on the manual (hadn't been done in a while).
4447 a full spellcheck on the manual (hadn't been done in a while).
4441
4448
4442 2002-04-27 Fernando Perez <fperez@colorado.edu>
4449 2002-04-27 Fernando Perez <fperez@colorado.edu>
4443
4450
4444 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4451 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4445 starting a log in mid-session would reset the input history list.
4452 starting a log in mid-session would reset the input history list.
4446
4453
4447 2002-04-26 Fernando Perez <fperez@colorado.edu>
4454 2002-04-26 Fernando Perez <fperez@colorado.edu>
4448
4455
4449 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4456 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4450 all files were being included in an update. Now anything in
4457 all files were being included in an update. Now anything in
4451 UserConfig that matches [A-Za-z]*.py will go (this excludes
4458 UserConfig that matches [A-Za-z]*.py will go (this excludes
4452 __init__.py)
4459 __init__.py)
4453
4460
4454 2002-04-25 Fernando Perez <fperez@colorado.edu>
4461 2002-04-25 Fernando Perez <fperez@colorado.edu>
4455
4462
4456 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4463 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4457 to __builtins__ so that any form of embedded or imported code can
4464 to __builtins__ so that any form of embedded or imported code can
4458 test for being inside IPython.
4465 test for being inside IPython.
4459
4466
4460 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4467 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4461 changed to GnuplotMagic because it's now an importable module,
4468 changed to GnuplotMagic because it's now an importable module,
4462 this makes the name follow that of the standard Gnuplot module.
4469 this makes the name follow that of the standard Gnuplot module.
4463 GnuplotMagic can now be loaded at any time in mid-session.
4470 GnuplotMagic can now be loaded at any time in mid-session.
4464
4471
4465 2002-04-24 Fernando Perez <fperez@colorado.edu>
4472 2002-04-24 Fernando Perez <fperez@colorado.edu>
4466
4473
4467 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4474 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4468 the globals (IPython has its own namespace) and the
4475 the globals (IPython has its own namespace) and the
4469 PhysicalQuantity stuff is much better anyway.
4476 PhysicalQuantity stuff is much better anyway.
4470
4477
4471 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4478 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4472 embedding example to standard user directory for
4479 embedding example to standard user directory for
4473 distribution. Also put it in the manual.
4480 distribution. Also put it in the manual.
4474
4481
4475 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4482 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4476 instance as first argument (so it doesn't rely on some obscure
4483 instance as first argument (so it doesn't rely on some obscure
4477 hidden global).
4484 hidden global).
4478
4485
4479 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4486 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4480 delimiters. While it prevents ().TAB from working, it allows
4487 delimiters. While it prevents ().TAB from working, it allows
4481 completions in open (... expressions. This is by far a more common
4488 completions in open (... expressions. This is by far a more common
4482 case.
4489 case.
4483
4490
4484 2002-04-23 Fernando Perez <fperez@colorado.edu>
4491 2002-04-23 Fernando Perez <fperez@colorado.edu>
4485
4492
4486 * IPython/Extensions/InterpreterPasteInput.py: new
4493 * IPython/Extensions/InterpreterPasteInput.py: new
4487 syntax-processing module for pasting lines with >>> or ... at the
4494 syntax-processing module for pasting lines with >>> or ... at the
4488 start.
4495 start.
4489
4496
4490 * IPython/Extensions/PhysicalQ_Interactive.py
4497 * IPython/Extensions/PhysicalQ_Interactive.py
4491 (PhysicalQuantityInteractive.__int__): fixed to work with either
4498 (PhysicalQuantityInteractive.__int__): fixed to work with either
4492 Numeric or math.
4499 Numeric or math.
4493
4500
4494 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4501 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4495 provided profiles. Now we have:
4502 provided profiles. Now we have:
4496 -math -> math module as * and cmath with its own namespace.
4503 -math -> math module as * and cmath with its own namespace.
4497 -numeric -> Numeric as *, plus gnuplot & grace
4504 -numeric -> Numeric as *, plus gnuplot & grace
4498 -physics -> same as before
4505 -physics -> same as before
4499
4506
4500 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4507 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4501 user-defined magics wouldn't be found by @magic if they were
4508 user-defined magics wouldn't be found by @magic if they were
4502 defined as class methods. Also cleaned up the namespace search
4509 defined as class methods. Also cleaned up the namespace search
4503 logic and the string building (to use %s instead of many repeated
4510 logic and the string building (to use %s instead of many repeated
4504 string adds).
4511 string adds).
4505
4512
4506 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4513 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4507 of user-defined magics to operate with class methods (cleaner, in
4514 of user-defined magics to operate with class methods (cleaner, in
4508 line with the gnuplot code).
4515 line with the gnuplot code).
4509
4516
4510 2002-04-22 Fernando Perez <fperez@colorado.edu>
4517 2002-04-22 Fernando Perez <fperez@colorado.edu>
4511
4518
4512 * setup.py: updated dependency list so that manual is updated when
4519 * setup.py: updated dependency list so that manual is updated when
4513 all included files change.
4520 all included files change.
4514
4521
4515 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4522 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4516 the delimiter removal option (the fix is ugly right now).
4523 the delimiter removal option (the fix is ugly right now).
4517
4524
4518 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4525 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4519 all of the math profile (quicker loading, no conflict between
4526 all of the math profile (quicker loading, no conflict between
4520 g-9.8 and g-gnuplot).
4527 g-9.8 and g-gnuplot).
4521
4528
4522 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4529 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4523 name of post-mortem files to IPython_crash_report.txt.
4530 name of post-mortem files to IPython_crash_report.txt.
4524
4531
4525 * Cleanup/update of the docs. Added all the new readline info and
4532 * Cleanup/update of the docs. Added all the new readline info and
4526 formatted all lists as 'real lists'.
4533 formatted all lists as 'real lists'.
4527
4534
4528 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4535 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4529 tab-completion options, since the full readline parse_and_bind is
4536 tab-completion options, since the full readline parse_and_bind is
4530 now accessible.
4537 now accessible.
4531
4538
4532 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4539 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4533 handling of readline options. Now users can specify any string to
4540 handling of readline options. Now users can specify any string to
4534 be passed to parse_and_bind(), as well as the delimiters to be
4541 be passed to parse_and_bind(), as well as the delimiters to be
4535 removed.
4542 removed.
4536 (InteractiveShell.__init__): Added __name__ to the global
4543 (InteractiveShell.__init__): Added __name__ to the global
4537 namespace so that things like Itpl which rely on its existence
4544 namespace so that things like Itpl which rely on its existence
4538 don't crash.
4545 don't crash.
4539 (InteractiveShell._prefilter): Defined the default with a _ so
4546 (InteractiveShell._prefilter): Defined the default with a _ so
4540 that prefilter() is easier to override, while the default one
4547 that prefilter() is easier to override, while the default one
4541 remains available.
4548 remains available.
4542
4549
4543 2002-04-18 Fernando Perez <fperez@colorado.edu>
4550 2002-04-18 Fernando Perez <fperez@colorado.edu>
4544
4551
4545 * Added information about pdb in the docs.
4552 * Added information about pdb in the docs.
4546
4553
4547 2002-04-17 Fernando Perez <fperez@colorado.edu>
4554 2002-04-17 Fernando Perez <fperez@colorado.edu>
4548
4555
4549 * IPython/ipmaker.py (make_IPython): added rc_override option to
4556 * IPython/ipmaker.py (make_IPython): added rc_override option to
4550 allow passing config options at creation time which may override
4557 allow passing config options at creation time which may override
4551 anything set in the config files or command line. This is
4558 anything set in the config files or command line. This is
4552 particularly useful for configuring embedded instances.
4559 particularly useful for configuring embedded instances.
4553
4560
4554 2002-04-15 Fernando Perez <fperez@colorado.edu>
4561 2002-04-15 Fernando Perez <fperez@colorado.edu>
4555
4562
4556 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4563 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4557 crash embedded instances because of the input cache falling out of
4564 crash embedded instances because of the input cache falling out of
4558 sync with the output counter.
4565 sync with the output counter.
4559
4566
4560 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4567 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4561 mode which calls pdb after an uncaught exception in IPython itself.
4568 mode which calls pdb after an uncaught exception in IPython itself.
4562
4569
4563 2002-04-14 Fernando Perez <fperez@colorado.edu>
4570 2002-04-14 Fernando Perez <fperez@colorado.edu>
4564
4571
4565 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4572 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4566 readline, fix it back after each call.
4573 readline, fix it back after each call.
4567
4574
4568 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4575 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4569 method to force all access via __call__(), which guarantees that
4576 method to force all access via __call__(), which guarantees that
4570 traceback references are properly deleted.
4577 traceback references are properly deleted.
4571
4578
4572 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4579 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4573 improve printing when pprint is in use.
4580 improve printing when pprint is in use.
4574
4581
4575 2002-04-13 Fernando Perez <fperez@colorado.edu>
4582 2002-04-13 Fernando Perez <fperez@colorado.edu>
4576
4583
4577 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4584 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4578 exceptions aren't caught anymore. If the user triggers one, he
4585 exceptions aren't caught anymore. If the user triggers one, he
4579 should know why he's doing it and it should go all the way up,
4586 should know why he's doing it and it should go all the way up,
4580 just like any other exception. So now @abort will fully kill the
4587 just like any other exception. So now @abort will fully kill the
4581 embedded interpreter and the embedding code (unless that happens
4588 embedded interpreter and the embedding code (unless that happens
4582 to catch SystemExit).
4589 to catch SystemExit).
4583
4590
4584 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4591 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4585 and a debugger() method to invoke the interactive pdb debugger
4592 and a debugger() method to invoke the interactive pdb debugger
4586 after printing exception information. Also added the corresponding
4593 after printing exception information. Also added the corresponding
4587 -pdb option and @pdb magic to control this feature, and updated
4594 -pdb option and @pdb magic to control this feature, and updated
4588 the docs. After a suggestion from Christopher Hart
4595 the docs. After a suggestion from Christopher Hart
4589 (hart-AT-caltech.edu).
4596 (hart-AT-caltech.edu).
4590
4597
4591 2002-04-12 Fernando Perez <fperez@colorado.edu>
4598 2002-04-12 Fernando Perez <fperez@colorado.edu>
4592
4599
4593 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4600 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4594 the exception handlers defined by the user (not the CrashHandler)
4601 the exception handlers defined by the user (not the CrashHandler)
4595 so that user exceptions don't trigger an ipython bug report.
4602 so that user exceptions don't trigger an ipython bug report.
4596
4603
4597 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4604 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4598 configurable (it should have always been so).
4605 configurable (it should have always been so).
4599
4606
4600 2002-03-26 Fernando Perez <fperez@colorado.edu>
4607 2002-03-26 Fernando Perez <fperez@colorado.edu>
4601
4608
4602 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4609 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4603 and there to fix embedding namespace issues. This should all be
4610 and there to fix embedding namespace issues. This should all be
4604 done in a more elegant way.
4611 done in a more elegant way.
4605
4612
4606 2002-03-25 Fernando Perez <fperez@colorado.edu>
4613 2002-03-25 Fernando Perez <fperez@colorado.edu>
4607
4614
4608 * IPython/genutils.py (get_home_dir): Try to make it work under
4615 * IPython/genutils.py (get_home_dir): Try to make it work under
4609 win9x also.
4616 win9x also.
4610
4617
4611 2002-03-20 Fernando Perez <fperez@colorado.edu>
4618 2002-03-20 Fernando Perez <fperez@colorado.edu>
4612
4619
4613 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4620 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4614 sys.displayhook untouched upon __init__.
4621 sys.displayhook untouched upon __init__.
4615
4622
4616 2002-03-19 Fernando Perez <fperez@colorado.edu>
4623 2002-03-19 Fernando Perez <fperez@colorado.edu>
4617
4624
4618 * Released 0.2.9 (for embedding bug, basically).
4625 * Released 0.2.9 (for embedding bug, basically).
4619
4626
4620 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4627 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4621 exceptions so that enclosing shell's state can be restored.
4628 exceptions so that enclosing shell's state can be restored.
4622
4629
4623 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4630 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4624 naming conventions in the .ipython/ dir.
4631 naming conventions in the .ipython/ dir.
4625
4632
4626 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4633 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4627 from delimiters list so filenames with - in them get expanded.
4634 from delimiters list so filenames with - in them get expanded.
4628
4635
4629 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4636 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4630 sys.displayhook not being properly restored after an embedded call.
4637 sys.displayhook not being properly restored after an embedded call.
4631
4638
4632 2002-03-18 Fernando Perez <fperez@colorado.edu>
4639 2002-03-18 Fernando Perez <fperez@colorado.edu>
4633
4640
4634 * Released 0.2.8
4641 * Released 0.2.8
4635
4642
4636 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4643 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4637 some files weren't being included in a -upgrade.
4644 some files weren't being included in a -upgrade.
4638 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4645 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4639 on' so that the first tab completes.
4646 on' so that the first tab completes.
4640 (InteractiveShell.handle_magic): fixed bug with spaces around
4647 (InteractiveShell.handle_magic): fixed bug with spaces around
4641 quotes breaking many magic commands.
4648 quotes breaking many magic commands.
4642
4649
4643 * setup.py: added note about ignoring the syntax error messages at
4650 * setup.py: added note about ignoring the syntax error messages at
4644 installation.
4651 installation.
4645
4652
4646 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4653 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4647 streamlining the gnuplot interface, now there's only one magic @gp.
4654 streamlining the gnuplot interface, now there's only one magic @gp.
4648
4655
4649 2002-03-17 Fernando Perez <fperez@colorado.edu>
4656 2002-03-17 Fernando Perez <fperez@colorado.edu>
4650
4657
4651 * IPython/UserConfig/magic_gnuplot.py: new name for the
4658 * IPython/UserConfig/magic_gnuplot.py: new name for the
4652 example-magic_pm.py file. Much enhanced system, now with a shell
4659 example-magic_pm.py file. Much enhanced system, now with a shell
4653 for communicating directly with gnuplot, one command at a time.
4660 for communicating directly with gnuplot, one command at a time.
4654
4661
4655 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4662 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4656 setting __name__=='__main__'.
4663 setting __name__=='__main__'.
4657
4664
4658 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4665 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4659 mini-shell for accessing gnuplot from inside ipython. Should
4666 mini-shell for accessing gnuplot from inside ipython. Should
4660 extend it later for grace access too. Inspired by Arnd's
4667 extend it later for grace access too. Inspired by Arnd's
4661 suggestion.
4668 suggestion.
4662
4669
4663 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4670 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4664 calling magic functions with () in their arguments. Thanks to Arnd
4671 calling magic functions with () in their arguments. Thanks to Arnd
4665 Baecker for pointing this to me.
4672 Baecker for pointing this to me.
4666
4673
4667 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4674 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4668 infinitely for integer or complex arrays (only worked with floats).
4675 infinitely for integer or complex arrays (only worked with floats).
4669
4676
4670 2002-03-16 Fernando Perez <fperez@colorado.edu>
4677 2002-03-16 Fernando Perez <fperez@colorado.edu>
4671
4678
4672 * setup.py: Merged setup and setup_windows into a single script
4679 * setup.py: Merged setup and setup_windows into a single script
4673 which properly handles things for windows users.
4680 which properly handles things for windows users.
4674
4681
4675 2002-03-15 Fernando Perez <fperez@colorado.edu>
4682 2002-03-15 Fernando Perez <fperez@colorado.edu>
4676
4683
4677 * Big change to the manual: now the magics are all automatically
4684 * Big change to the manual: now the magics are all automatically
4678 documented. This information is generated from their docstrings
4685 documented. This information is generated from their docstrings
4679 and put in a latex file included by the manual lyx file. This way
4686 and put in a latex file included by the manual lyx file. This way
4680 we get always up to date information for the magics. The manual
4687 we get always up to date information for the magics. The manual
4681 now also has proper version information, also auto-synced.
4688 now also has proper version information, also auto-synced.
4682
4689
4683 For this to work, an undocumented --magic_docstrings option was added.
4690 For this to work, an undocumented --magic_docstrings option was added.
4684
4691
4685 2002-03-13 Fernando Perez <fperez@colorado.edu>
4692 2002-03-13 Fernando Perez <fperez@colorado.edu>
4686
4693
4687 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4694 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4688 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4695 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4689
4696
4690 2002-03-12 Fernando Perez <fperez@colorado.edu>
4697 2002-03-12 Fernando Perez <fperez@colorado.edu>
4691
4698
4692 * IPython/ultraTB.py (TermColors): changed color escapes again to
4699 * IPython/ultraTB.py (TermColors): changed color escapes again to
4693 fix the (old, reintroduced) line-wrapping bug. Basically, if
4700 fix the (old, reintroduced) line-wrapping bug. Basically, if
4694 \001..\002 aren't given in the color escapes, lines get wrapped
4701 \001..\002 aren't given in the color escapes, lines get wrapped
4695 weirdly. But giving those screws up old xterms and emacs terms. So
4702 weirdly. But giving those screws up old xterms and emacs terms. So
4696 I added some logic for emacs terms to be ok, but I can't identify old
4703 I added some logic for emacs terms to be ok, but I can't identify old
4697 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4704 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4698
4705
4699 2002-03-10 Fernando Perez <fperez@colorado.edu>
4706 2002-03-10 Fernando Perez <fperez@colorado.edu>
4700
4707
4701 * IPython/usage.py (__doc__): Various documentation cleanups and
4708 * IPython/usage.py (__doc__): Various documentation cleanups and
4702 updates, both in usage docstrings and in the manual.
4709 updates, both in usage docstrings and in the manual.
4703
4710
4704 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4711 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4705 handling of caching. Set minimum acceptabe value for having a
4712 handling of caching. Set minimum acceptabe value for having a
4706 cache at 20 values.
4713 cache at 20 values.
4707
4714
4708 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4715 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4709 install_first_time function to a method, renamed it and added an
4716 install_first_time function to a method, renamed it and added an
4710 'upgrade' mode. Now people can update their config directory with
4717 'upgrade' mode. Now people can update their config directory with
4711 a simple command line switch (-upgrade, also new).
4718 a simple command line switch (-upgrade, also new).
4712
4719
4713 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4720 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4714 @file (convenient for automagic users under Python >= 2.2).
4721 @file (convenient for automagic users under Python >= 2.2).
4715 Removed @files (it seemed more like a plural than an abbrev. of
4722 Removed @files (it seemed more like a plural than an abbrev. of
4716 'file show').
4723 'file show').
4717
4724
4718 * IPython/iplib.py (install_first_time): Fixed crash if there were
4725 * IPython/iplib.py (install_first_time): Fixed crash if there were
4719 backup files ('~') in .ipython/ install directory.
4726 backup files ('~') in .ipython/ install directory.
4720
4727
4721 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4728 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4722 system. Things look fine, but these changes are fairly
4729 system. Things look fine, but these changes are fairly
4723 intrusive. Test them for a few days.
4730 intrusive. Test them for a few days.
4724
4731
4725 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4732 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4726 the prompts system. Now all in/out prompt strings are user
4733 the prompts system. Now all in/out prompt strings are user
4727 controllable. This is particularly useful for embedding, as one
4734 controllable. This is particularly useful for embedding, as one
4728 can tag embedded instances with particular prompts.
4735 can tag embedded instances with particular prompts.
4729
4736
4730 Also removed global use of sys.ps1/2, which now allows nested
4737 Also removed global use of sys.ps1/2, which now allows nested
4731 embeddings without any problems. Added command-line options for
4738 embeddings without any problems. Added command-line options for
4732 the prompt strings.
4739 the prompt strings.
4733
4740
4734 2002-03-08 Fernando Perez <fperez@colorado.edu>
4741 2002-03-08 Fernando Perez <fperez@colorado.edu>
4735
4742
4736 * IPython/UserConfig/example-embed-short.py (ipshell): added
4743 * IPython/UserConfig/example-embed-short.py (ipshell): added
4737 example file with the bare minimum code for embedding.
4744 example file with the bare minimum code for embedding.
4738
4745
4739 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4746 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4740 functionality for the embeddable shell to be activated/deactivated
4747 functionality for the embeddable shell to be activated/deactivated
4741 either globally or at each call.
4748 either globally or at each call.
4742
4749
4743 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4750 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4744 rewriting the prompt with '--->' for auto-inputs with proper
4751 rewriting the prompt with '--->' for auto-inputs with proper
4745 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4752 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4746 this is handled by the prompts class itself, as it should.
4753 this is handled by the prompts class itself, as it should.
4747
4754
4748 2002-03-05 Fernando Perez <fperez@colorado.edu>
4755 2002-03-05 Fernando Perez <fperez@colorado.edu>
4749
4756
4750 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4757 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4751 @logstart to avoid name clashes with the math log function.
4758 @logstart to avoid name clashes with the math log function.
4752
4759
4753 * Big updates to X/Emacs section of the manual.
4760 * Big updates to X/Emacs section of the manual.
4754
4761
4755 * Removed ipython_emacs. Milan explained to me how to pass
4762 * Removed ipython_emacs. Milan explained to me how to pass
4756 arguments to ipython through Emacs. Some day I'm going to end up
4763 arguments to ipython through Emacs. Some day I'm going to end up
4757 learning some lisp...
4764 learning some lisp...
4758
4765
4759 2002-03-04 Fernando Perez <fperez@colorado.edu>
4766 2002-03-04 Fernando Perez <fperez@colorado.edu>
4760
4767
4761 * IPython/ipython_emacs: Created script to be used as the
4768 * IPython/ipython_emacs: Created script to be used as the
4762 py-python-command Emacs variable so we can pass IPython
4769 py-python-command Emacs variable so we can pass IPython
4763 parameters. I can't figure out how to tell Emacs directly to pass
4770 parameters. I can't figure out how to tell Emacs directly to pass
4764 parameters to IPython, so a dummy shell script will do it.
4771 parameters to IPython, so a dummy shell script will do it.
4765
4772
4766 Other enhancements made for things to work better under Emacs'
4773 Other enhancements made for things to work better under Emacs'
4767 various types of terminals. Many thanks to Milan Zamazal
4774 various types of terminals. Many thanks to Milan Zamazal
4768 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4775 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4769
4776
4770 2002-03-01 Fernando Perez <fperez@colorado.edu>
4777 2002-03-01 Fernando Perez <fperez@colorado.edu>
4771
4778
4772 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4779 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4773 that loading of readline is now optional. This gives better
4780 that loading of readline is now optional. This gives better
4774 control to emacs users.
4781 control to emacs users.
4775
4782
4776 * IPython/ultraTB.py (__date__): Modified color escape sequences
4783 * IPython/ultraTB.py (__date__): Modified color escape sequences
4777 and now things work fine under xterm and in Emacs' term buffers
4784 and now things work fine under xterm and in Emacs' term buffers
4778 (though not shell ones). Well, in emacs you get colors, but all
4785 (though not shell ones). Well, in emacs you get colors, but all
4779 seem to be 'light' colors (no difference between dark and light
4786 seem to be 'light' colors (no difference between dark and light
4780 ones). But the garbage chars are gone, and also in xterms. It
4787 ones). But the garbage chars are gone, and also in xterms. It
4781 seems that now I'm using 'cleaner' ansi sequences.
4788 seems that now I'm using 'cleaner' ansi sequences.
4782
4789
4783 2002-02-21 Fernando Perez <fperez@colorado.edu>
4790 2002-02-21 Fernando Perez <fperez@colorado.edu>
4784
4791
4785 * Released 0.2.7 (mainly to publish the scoping fix).
4792 * Released 0.2.7 (mainly to publish the scoping fix).
4786
4793
4787 * IPython/Logger.py (Logger.logstate): added. A corresponding
4794 * IPython/Logger.py (Logger.logstate): added. A corresponding
4788 @logstate magic was created.
4795 @logstate magic was created.
4789
4796
4790 * IPython/Magic.py: fixed nested scoping problem under Python
4797 * IPython/Magic.py: fixed nested scoping problem under Python
4791 2.1.x (automagic wasn't working).
4798 2.1.x (automagic wasn't working).
4792
4799
4793 2002-02-20 Fernando Perez <fperez@colorado.edu>
4800 2002-02-20 Fernando Perez <fperez@colorado.edu>
4794
4801
4795 * Released 0.2.6.
4802 * Released 0.2.6.
4796
4803
4797 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4804 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4798 option so that logs can come out without any headers at all.
4805 option so that logs can come out without any headers at all.
4799
4806
4800 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4807 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4801 SciPy.
4808 SciPy.
4802
4809
4803 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4810 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4804 that embedded IPython calls don't require vars() to be explicitly
4811 that embedded IPython calls don't require vars() to be explicitly
4805 passed. Now they are extracted from the caller's frame (code
4812 passed. Now they are extracted from the caller's frame (code
4806 snatched from Eric Jones' weave). Added better documentation to
4813 snatched from Eric Jones' weave). Added better documentation to
4807 the section on embedding and the example file.
4814 the section on embedding and the example file.
4808
4815
4809 * IPython/genutils.py (page): Changed so that under emacs, it just
4816 * IPython/genutils.py (page): Changed so that under emacs, it just
4810 prints the string. You can then page up and down in the emacs
4817 prints the string. You can then page up and down in the emacs
4811 buffer itself. This is how the builtin help() works.
4818 buffer itself. This is how the builtin help() works.
4812
4819
4813 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4820 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4814 macro scoping: macros need to be executed in the user's namespace
4821 macro scoping: macros need to be executed in the user's namespace
4815 to work as if they had been typed by the user.
4822 to work as if they had been typed by the user.
4816
4823
4817 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4824 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4818 execute automatically (no need to type 'exec...'). They then
4825 execute automatically (no need to type 'exec...'). They then
4819 behave like 'true macros'. The printing system was also modified
4826 behave like 'true macros'. The printing system was also modified
4820 for this to work.
4827 for this to work.
4821
4828
4822 2002-02-19 Fernando Perez <fperez@colorado.edu>
4829 2002-02-19 Fernando Perez <fperez@colorado.edu>
4823
4830
4824 * IPython/genutils.py (page_file): new function for paging files
4831 * IPython/genutils.py (page_file): new function for paging files
4825 in an OS-independent way. Also necessary for file viewing to work
4832 in an OS-independent way. Also necessary for file viewing to work
4826 well inside Emacs buffers.
4833 well inside Emacs buffers.
4827 (page): Added checks for being in an emacs buffer.
4834 (page): Added checks for being in an emacs buffer.
4828 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4835 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4829 same bug in iplib.
4836 same bug in iplib.
4830
4837
4831 2002-02-18 Fernando Perez <fperez@colorado.edu>
4838 2002-02-18 Fernando Perez <fperez@colorado.edu>
4832
4839
4833 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4840 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4834 of readline so that IPython can work inside an Emacs buffer.
4841 of readline so that IPython can work inside an Emacs buffer.
4835
4842
4836 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4843 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4837 method signatures (they weren't really bugs, but it looks cleaner
4844 method signatures (they weren't really bugs, but it looks cleaner
4838 and keeps PyChecker happy).
4845 and keeps PyChecker happy).
4839
4846
4840 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4847 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4841 for implementing various user-defined hooks. Currently only
4848 for implementing various user-defined hooks. Currently only
4842 display is done.
4849 display is done.
4843
4850
4844 * IPython/Prompts.py (CachedOutput._display): changed display
4851 * IPython/Prompts.py (CachedOutput._display): changed display
4845 functions so that they can be dynamically changed by users easily.
4852 functions so that they can be dynamically changed by users easily.
4846
4853
4847 * IPython/Extensions/numeric_formats.py (num_display): added an
4854 * IPython/Extensions/numeric_formats.py (num_display): added an
4848 extension for printing NumPy arrays in flexible manners. It
4855 extension for printing NumPy arrays in flexible manners. It
4849 doesn't do anything yet, but all the structure is in
4856 doesn't do anything yet, but all the structure is in
4850 place. Ultimately the plan is to implement output format control
4857 place. Ultimately the plan is to implement output format control
4851 like in Octave.
4858 like in Octave.
4852
4859
4853 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4860 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4854 methods are found at run-time by all the automatic machinery.
4861 methods are found at run-time by all the automatic machinery.
4855
4862
4856 2002-02-17 Fernando Perez <fperez@colorado.edu>
4863 2002-02-17 Fernando Perez <fperez@colorado.edu>
4857
4864
4858 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4865 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4859 whole file a little.
4866 whole file a little.
4860
4867
4861 * ToDo: closed this document. Now there's a new_design.lyx
4868 * ToDo: closed this document. Now there's a new_design.lyx
4862 document for all new ideas. Added making a pdf of it for the
4869 document for all new ideas. Added making a pdf of it for the
4863 end-user distro.
4870 end-user distro.
4864
4871
4865 * IPython/Logger.py (Logger.switch_log): Created this to replace
4872 * IPython/Logger.py (Logger.switch_log): Created this to replace
4866 logon() and logoff(). It also fixes a nasty crash reported by
4873 logon() and logoff(). It also fixes a nasty crash reported by
4867 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4874 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4868
4875
4869 * IPython/iplib.py (complete): got auto-completion to work with
4876 * IPython/iplib.py (complete): got auto-completion to work with
4870 automagic (I had wanted this for a long time).
4877 automagic (I had wanted this for a long time).
4871
4878
4872 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4879 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4873 to @file, since file() is now a builtin and clashes with automagic
4880 to @file, since file() is now a builtin and clashes with automagic
4874 for @file.
4881 for @file.
4875
4882
4876 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4883 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4877 of this was previously in iplib, which had grown to more than 2000
4884 of this was previously in iplib, which had grown to more than 2000
4878 lines, way too long. No new functionality, but it makes managing
4885 lines, way too long. No new functionality, but it makes managing
4879 the code a bit easier.
4886 the code a bit easier.
4880
4887
4881 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4888 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4882 information to crash reports.
4889 information to crash reports.
4883
4890
4884 2002-02-12 Fernando Perez <fperez@colorado.edu>
4891 2002-02-12 Fernando Perez <fperez@colorado.edu>
4885
4892
4886 * Released 0.2.5.
4893 * Released 0.2.5.
4887
4894
4888 2002-02-11 Fernando Perez <fperez@colorado.edu>
4895 2002-02-11 Fernando Perez <fperez@colorado.edu>
4889
4896
4890 * Wrote a relatively complete Windows installer. It puts
4897 * Wrote a relatively complete Windows installer. It puts
4891 everything in place, creates Start Menu entries and fixes the
4898 everything in place, creates Start Menu entries and fixes the
4892 color issues. Nothing fancy, but it works.
4899 color issues. Nothing fancy, but it works.
4893
4900
4894 2002-02-10 Fernando Perez <fperez@colorado.edu>
4901 2002-02-10 Fernando Perez <fperez@colorado.edu>
4895
4902
4896 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4903 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4897 os.path.expanduser() call so that we can type @run ~/myfile.py and
4904 os.path.expanduser() call so that we can type @run ~/myfile.py and
4898 have thigs work as expected.
4905 have thigs work as expected.
4899
4906
4900 * IPython/genutils.py (page): fixed exception handling so things
4907 * IPython/genutils.py (page): fixed exception handling so things
4901 work both in Unix and Windows correctly. Quitting a pager triggers
4908 work both in Unix and Windows correctly. Quitting a pager triggers
4902 an IOError/broken pipe in Unix, and in windows not finding a pager
4909 an IOError/broken pipe in Unix, and in windows not finding a pager
4903 is also an IOError, so I had to actually look at the return value
4910 is also an IOError, so I had to actually look at the return value
4904 of the exception, not just the exception itself. Should be ok now.
4911 of the exception, not just the exception itself. Should be ok now.
4905
4912
4906 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4913 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4907 modified to allow case-insensitive color scheme changes.
4914 modified to allow case-insensitive color scheme changes.
4908
4915
4909 2002-02-09 Fernando Perez <fperez@colorado.edu>
4916 2002-02-09 Fernando Perez <fperez@colorado.edu>
4910
4917
4911 * IPython/genutils.py (native_line_ends): new function to leave
4918 * IPython/genutils.py (native_line_ends): new function to leave
4912 user config files with os-native line-endings.
4919 user config files with os-native line-endings.
4913
4920
4914 * README and manual updates.
4921 * README and manual updates.
4915
4922
4916 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4923 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4917 instead of StringType to catch Unicode strings.
4924 instead of StringType to catch Unicode strings.
4918
4925
4919 * IPython/genutils.py (filefind): fixed bug for paths with
4926 * IPython/genutils.py (filefind): fixed bug for paths with
4920 embedded spaces (very common in Windows).
4927 embedded spaces (very common in Windows).
4921
4928
4922 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4929 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4923 files under Windows, so that they get automatically associated
4930 files under Windows, so that they get automatically associated
4924 with a text editor. Windows makes it a pain to handle
4931 with a text editor. Windows makes it a pain to handle
4925 extension-less files.
4932 extension-less files.
4926
4933
4927 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4934 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4928 warning about readline only occur for Posix. In Windows there's no
4935 warning about readline only occur for Posix. In Windows there's no
4929 way to get readline, so why bother with the warning.
4936 way to get readline, so why bother with the warning.
4930
4937
4931 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4938 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4932 for __str__ instead of dir(self), since dir() changed in 2.2.
4939 for __str__ instead of dir(self), since dir() changed in 2.2.
4933
4940
4934 * Ported to Windows! Tested on XP, I suspect it should work fine
4941 * Ported to Windows! Tested on XP, I suspect it should work fine
4935 on NT/2000, but I don't think it will work on 98 et al. That
4942 on NT/2000, but I don't think it will work on 98 et al. That
4936 series of Windows is such a piece of junk anyway that I won't try
4943 series of Windows is such a piece of junk anyway that I won't try
4937 porting it there. The XP port was straightforward, showed a few
4944 porting it there. The XP port was straightforward, showed a few
4938 bugs here and there (fixed all), in particular some string
4945 bugs here and there (fixed all), in particular some string
4939 handling stuff which required considering Unicode strings (which
4946 handling stuff which required considering Unicode strings (which
4940 Windows uses). This is good, but hasn't been too tested :) No
4947 Windows uses). This is good, but hasn't been too tested :) No
4941 fancy installer yet, I'll put a note in the manual so people at
4948 fancy installer yet, I'll put a note in the manual so people at
4942 least make manually a shortcut.
4949 least make manually a shortcut.
4943
4950
4944 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4951 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4945 into a single one, "colors". This now controls both prompt and
4952 into a single one, "colors". This now controls both prompt and
4946 exception color schemes, and can be changed both at startup
4953 exception color schemes, and can be changed both at startup
4947 (either via command-line switches or via ipythonrc files) and at
4954 (either via command-line switches or via ipythonrc files) and at
4948 runtime, with @colors.
4955 runtime, with @colors.
4949 (Magic.magic_run): renamed @prun to @run and removed the old
4956 (Magic.magic_run): renamed @prun to @run and removed the old
4950 @run. The two were too similar to warrant keeping both.
4957 @run. The two were too similar to warrant keeping both.
4951
4958
4952 2002-02-03 Fernando Perez <fperez@colorado.edu>
4959 2002-02-03 Fernando Perez <fperez@colorado.edu>
4953
4960
4954 * IPython/iplib.py (install_first_time): Added comment on how to
4961 * IPython/iplib.py (install_first_time): Added comment on how to
4955 configure the color options for first-time users. Put a <return>
4962 configure the color options for first-time users. Put a <return>
4956 request at the end so that small-terminal users get a chance to
4963 request at the end so that small-terminal users get a chance to
4957 read the startup info.
4964 read the startup info.
4958
4965
4959 2002-01-23 Fernando Perez <fperez@colorado.edu>
4966 2002-01-23 Fernando Perez <fperez@colorado.edu>
4960
4967
4961 * IPython/iplib.py (CachedOutput.update): Changed output memory
4968 * IPython/iplib.py (CachedOutput.update): Changed output memory
4962 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4969 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4963 input history we still use _i. Did this b/c these variable are
4970 input history we still use _i. Did this b/c these variable are
4964 very commonly used in interactive work, so the less we need to
4971 very commonly used in interactive work, so the less we need to
4965 type the better off we are.
4972 type the better off we are.
4966 (Magic.magic_prun): updated @prun to better handle the namespaces
4973 (Magic.magic_prun): updated @prun to better handle the namespaces
4967 the file will run in, including a fix for __name__ not being set
4974 the file will run in, including a fix for __name__ not being set
4968 before.
4975 before.
4969
4976
4970 2002-01-20 Fernando Perez <fperez@colorado.edu>
4977 2002-01-20 Fernando Perez <fperez@colorado.edu>
4971
4978
4972 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4979 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4973 extra garbage for Python 2.2. Need to look more carefully into
4980 extra garbage for Python 2.2. Need to look more carefully into
4974 this later.
4981 this later.
4975
4982
4976 2002-01-19 Fernando Perez <fperez@colorado.edu>
4983 2002-01-19 Fernando Perez <fperez@colorado.edu>
4977
4984
4978 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4985 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4979 display SyntaxError exceptions properly formatted when they occur
4986 display SyntaxError exceptions properly formatted when they occur
4980 (they can be triggered by imported code).
4987 (they can be triggered by imported code).
4981
4988
4982 2002-01-18 Fernando Perez <fperez@colorado.edu>
4989 2002-01-18 Fernando Perez <fperez@colorado.edu>
4983
4990
4984 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4991 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4985 SyntaxError exceptions are reported nicely formatted, instead of
4992 SyntaxError exceptions are reported nicely formatted, instead of
4986 spitting out only offset information as before.
4993 spitting out only offset information as before.
4987 (Magic.magic_prun): Added the @prun function for executing
4994 (Magic.magic_prun): Added the @prun function for executing
4988 programs with command line args inside IPython.
4995 programs with command line args inside IPython.
4989
4996
4990 2002-01-16 Fernando Perez <fperez@colorado.edu>
4997 2002-01-16 Fernando Perez <fperez@colorado.edu>
4991
4998
4992 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4999 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4993 to *not* include the last item given in a range. This brings their
5000 to *not* include the last item given in a range. This brings their
4994 behavior in line with Python's slicing:
5001 behavior in line with Python's slicing:
4995 a[n1:n2] -> a[n1]...a[n2-1]
5002 a[n1:n2] -> a[n1]...a[n2-1]
4996 It may be a bit less convenient, but I prefer to stick to Python's
5003 It may be a bit less convenient, but I prefer to stick to Python's
4997 conventions *everywhere*, so users never have to wonder.
5004 conventions *everywhere*, so users never have to wonder.
4998 (Magic.magic_macro): Added @macro function to ease the creation of
5005 (Magic.magic_macro): Added @macro function to ease the creation of
4999 macros.
5006 macros.
5000
5007
5001 2002-01-05 Fernando Perez <fperez@colorado.edu>
5008 2002-01-05 Fernando Perez <fperez@colorado.edu>
5002
5009
5003 * Released 0.2.4.
5010 * Released 0.2.4.
5004
5011
5005 * IPython/iplib.py (Magic.magic_pdef):
5012 * IPython/iplib.py (Magic.magic_pdef):
5006 (InteractiveShell.safe_execfile): report magic lines and error
5013 (InteractiveShell.safe_execfile): report magic lines and error
5007 lines without line numbers so one can easily copy/paste them for
5014 lines without line numbers so one can easily copy/paste them for
5008 re-execution.
5015 re-execution.
5009
5016
5010 * Updated manual with recent changes.
5017 * Updated manual with recent changes.
5011
5018
5012 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5019 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5013 docstring printing when class? is called. Very handy for knowing
5020 docstring printing when class? is called. Very handy for knowing
5014 how to create class instances (as long as __init__ is well
5021 how to create class instances (as long as __init__ is well
5015 documented, of course :)
5022 documented, of course :)
5016 (Magic.magic_doc): print both class and constructor docstrings.
5023 (Magic.magic_doc): print both class and constructor docstrings.
5017 (Magic.magic_pdef): give constructor info if passed a class and
5024 (Magic.magic_pdef): give constructor info if passed a class and
5018 __call__ info for callable object instances.
5025 __call__ info for callable object instances.
5019
5026
5020 2002-01-04 Fernando Perez <fperez@colorado.edu>
5027 2002-01-04 Fernando Perez <fperez@colorado.edu>
5021
5028
5022 * Made deep_reload() off by default. It doesn't always work
5029 * Made deep_reload() off by default. It doesn't always work
5023 exactly as intended, so it's probably safer to have it off. It's
5030 exactly as intended, so it's probably safer to have it off. It's
5024 still available as dreload() anyway, so nothing is lost.
5031 still available as dreload() anyway, so nothing is lost.
5025
5032
5026 2002-01-02 Fernando Perez <fperez@colorado.edu>
5033 2002-01-02 Fernando Perez <fperez@colorado.edu>
5027
5034
5028 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5035 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5029 so I wanted an updated release).
5036 so I wanted an updated release).
5030
5037
5031 2001-12-27 Fernando Perez <fperez@colorado.edu>
5038 2001-12-27 Fernando Perez <fperez@colorado.edu>
5032
5039
5033 * IPython/iplib.py (InteractiveShell.interact): Added the original
5040 * IPython/iplib.py (InteractiveShell.interact): Added the original
5034 code from 'code.py' for this module in order to change the
5041 code from 'code.py' for this module in order to change the
5035 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5042 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5036 the history cache would break when the user hit Ctrl-C, and
5043 the history cache would break when the user hit Ctrl-C, and
5037 interact() offers no way to add any hooks to it.
5044 interact() offers no way to add any hooks to it.
5038
5045
5039 2001-12-23 Fernando Perez <fperez@colorado.edu>
5046 2001-12-23 Fernando Perez <fperez@colorado.edu>
5040
5047
5041 * setup.py: added check for 'MANIFEST' before trying to remove
5048 * setup.py: added check for 'MANIFEST' before trying to remove
5042 it. Thanks to Sean Reifschneider.
5049 it. Thanks to Sean Reifschneider.
5043
5050
5044 2001-12-22 Fernando Perez <fperez@colorado.edu>
5051 2001-12-22 Fernando Perez <fperez@colorado.edu>
5045
5052
5046 * Released 0.2.2.
5053 * Released 0.2.2.
5047
5054
5048 * Finished (reasonably) writing the manual. Later will add the
5055 * Finished (reasonably) writing the manual. Later will add the
5049 python-standard navigation stylesheets, but for the time being
5056 python-standard navigation stylesheets, but for the time being
5050 it's fairly complete. Distribution will include html and pdf
5057 it's fairly complete. Distribution will include html and pdf
5051 versions.
5058 versions.
5052
5059
5053 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5060 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5054 (MayaVi author).
5061 (MayaVi author).
5055
5062
5056 2001-12-21 Fernando Perez <fperez@colorado.edu>
5063 2001-12-21 Fernando Perez <fperez@colorado.edu>
5057
5064
5058 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5065 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5059 good public release, I think (with the manual and the distutils
5066 good public release, I think (with the manual and the distutils
5060 installer). The manual can use some work, but that can go
5067 installer). The manual can use some work, but that can go
5061 slowly. Otherwise I think it's quite nice for end users. Next
5068 slowly. Otherwise I think it's quite nice for end users. Next
5062 summer, rewrite the guts of it...
5069 summer, rewrite the guts of it...
5063
5070
5064 * Changed format of ipythonrc files to use whitespace as the
5071 * Changed format of ipythonrc files to use whitespace as the
5065 separator instead of an explicit '='. Cleaner.
5072 separator instead of an explicit '='. Cleaner.
5066
5073
5067 2001-12-20 Fernando Perez <fperez@colorado.edu>
5074 2001-12-20 Fernando Perez <fperez@colorado.edu>
5068
5075
5069 * Started a manual in LyX. For now it's just a quick merge of the
5076 * Started a manual in LyX. For now it's just a quick merge of the
5070 various internal docstrings and READMEs. Later it may grow into a
5077 various internal docstrings and READMEs. Later it may grow into a
5071 nice, full-blown manual.
5078 nice, full-blown manual.
5072
5079
5073 * Set up a distutils based installer. Installation should now be
5080 * Set up a distutils based installer. Installation should now be
5074 trivially simple for end-users.
5081 trivially simple for end-users.
5075
5082
5076 2001-12-11 Fernando Perez <fperez@colorado.edu>
5083 2001-12-11 Fernando Perez <fperez@colorado.edu>
5077
5084
5078 * Released 0.2.0. First public release, announced it at
5085 * Released 0.2.0. First public release, announced it at
5079 comp.lang.python. From now on, just bugfixes...
5086 comp.lang.python. From now on, just bugfixes...
5080
5087
5081 * Went through all the files, set copyright/license notices and
5088 * Went through all the files, set copyright/license notices and
5082 cleaned up things. Ready for release.
5089 cleaned up things. Ready for release.
5083
5090
5084 2001-12-10 Fernando Perez <fperez@colorado.edu>
5091 2001-12-10 Fernando Perez <fperez@colorado.edu>
5085
5092
5086 * Changed the first-time installer not to use tarfiles. It's more
5093 * Changed the first-time installer not to use tarfiles. It's more
5087 robust now and less unix-dependent. Also makes it easier for
5094 robust now and less unix-dependent. Also makes it easier for
5088 people to later upgrade versions.
5095 people to later upgrade versions.
5089
5096
5090 * Changed @exit to @abort to reflect the fact that it's pretty
5097 * Changed @exit to @abort to reflect the fact that it's pretty
5091 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5098 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5092 becomes significant only when IPyhton is embedded: in that case,
5099 becomes significant only when IPyhton is embedded: in that case,
5093 C-D closes IPython only, but @abort kills the enclosing program
5100 C-D closes IPython only, but @abort kills the enclosing program
5094 too (unless it had called IPython inside a try catching
5101 too (unless it had called IPython inside a try catching
5095 SystemExit).
5102 SystemExit).
5096
5103
5097 * Created Shell module which exposes the actuall IPython Shell
5104 * Created Shell module which exposes the actuall IPython Shell
5098 classes, currently the normal and the embeddable one. This at
5105 classes, currently the normal and the embeddable one. This at
5099 least offers a stable interface we won't need to change when
5106 least offers a stable interface we won't need to change when
5100 (later) the internals are rewritten. That rewrite will be confined
5107 (later) the internals are rewritten. That rewrite will be confined
5101 to iplib and ipmaker, but the Shell interface should remain as is.
5108 to iplib and ipmaker, but the Shell interface should remain as is.
5102
5109
5103 * Added embed module which offers an embeddable IPShell object,
5110 * Added embed module which offers an embeddable IPShell object,
5104 useful to fire up IPython *inside* a running program. Great for
5111 useful to fire up IPython *inside* a running program. Great for
5105 debugging or dynamical data analysis.
5112 debugging or dynamical data analysis.
5106
5113
5107 2001-12-08 Fernando Perez <fperez@colorado.edu>
5114 2001-12-08 Fernando Perez <fperez@colorado.edu>
5108
5115
5109 * Fixed small bug preventing seeing info from methods of defined
5116 * Fixed small bug preventing seeing info from methods of defined
5110 objects (incorrect namespace in _ofind()).
5117 objects (incorrect namespace in _ofind()).
5111
5118
5112 * Documentation cleanup. Moved the main usage docstrings to a
5119 * Documentation cleanup. Moved the main usage docstrings to a
5113 separate file, usage.py (cleaner to maintain, and hopefully in the
5120 separate file, usage.py (cleaner to maintain, and hopefully in the
5114 future some perlpod-like way of producing interactive, man and
5121 future some perlpod-like way of producing interactive, man and
5115 html docs out of it will be found).
5122 html docs out of it will be found).
5116
5123
5117 * Added @profile to see your profile at any time.
5124 * Added @profile to see your profile at any time.
5118
5125
5119 * Added @p as an alias for 'print'. It's especially convenient if
5126 * Added @p as an alias for 'print'. It's especially convenient if
5120 using automagic ('p x' prints x).
5127 using automagic ('p x' prints x).
5121
5128
5122 * Small cleanups and fixes after a pychecker run.
5129 * Small cleanups and fixes after a pychecker run.
5123
5130
5124 * Changed the @cd command to handle @cd - and @cd -<n> for
5131 * Changed the @cd command to handle @cd - and @cd -<n> for
5125 visiting any directory in _dh.
5132 visiting any directory in _dh.
5126
5133
5127 * Introduced _dh, a history of visited directories. @dhist prints
5134 * Introduced _dh, a history of visited directories. @dhist prints
5128 it out with numbers.
5135 it out with numbers.
5129
5136
5130 2001-12-07 Fernando Perez <fperez@colorado.edu>
5137 2001-12-07 Fernando Perez <fperez@colorado.edu>
5131
5138
5132 * Released 0.1.22
5139 * Released 0.1.22
5133
5140
5134 * Made initialization a bit more robust against invalid color
5141 * Made initialization a bit more robust against invalid color
5135 options in user input (exit, not traceback-crash).
5142 options in user input (exit, not traceback-crash).
5136
5143
5137 * Changed the bug crash reporter to write the report only in the
5144 * Changed the bug crash reporter to write the report only in the
5138 user's .ipython directory. That way IPython won't litter people's
5145 user's .ipython directory. That way IPython won't litter people's
5139 hard disks with crash files all over the place. Also print on
5146 hard disks with crash files all over the place. Also print on
5140 screen the necessary mail command.
5147 screen the necessary mail command.
5141
5148
5142 * With the new ultraTB, implemented LightBG color scheme for light
5149 * With the new ultraTB, implemented LightBG color scheme for light
5143 background terminals. A lot of people like white backgrounds, so I
5150 background terminals. A lot of people like white backgrounds, so I
5144 guess we should at least give them something readable.
5151 guess we should at least give them something readable.
5145
5152
5146 2001-12-06 Fernando Perez <fperez@colorado.edu>
5153 2001-12-06 Fernando Perez <fperez@colorado.edu>
5147
5154
5148 * Modified the structure of ultraTB. Now there's a proper class
5155 * Modified the structure of ultraTB. Now there's a proper class
5149 for tables of color schemes which allow adding schemes easily and
5156 for tables of color schemes which allow adding schemes easily and
5150 switching the active scheme without creating a new instance every
5157 switching the active scheme without creating a new instance every
5151 time (which was ridiculous). The syntax for creating new schemes
5158 time (which was ridiculous). The syntax for creating new schemes
5152 is also cleaner. I think ultraTB is finally done, with a clean
5159 is also cleaner. I think ultraTB is finally done, with a clean
5153 class structure. Names are also much cleaner (now there's proper
5160 class structure. Names are also much cleaner (now there's proper
5154 color tables, no need for every variable to also have 'color' in
5161 color tables, no need for every variable to also have 'color' in
5155 its name).
5162 its name).
5156
5163
5157 * Broke down genutils into separate files. Now genutils only
5164 * Broke down genutils into separate files. Now genutils only
5158 contains utility functions, and classes have been moved to their
5165 contains utility functions, and classes have been moved to their
5159 own files (they had enough independent functionality to warrant
5166 own files (they had enough independent functionality to warrant
5160 it): ConfigLoader, OutputTrap, Struct.
5167 it): ConfigLoader, OutputTrap, Struct.
5161
5168
5162 2001-12-05 Fernando Perez <fperez@colorado.edu>
5169 2001-12-05 Fernando Perez <fperez@colorado.edu>
5163
5170
5164 * IPython turns 21! Released version 0.1.21, as a candidate for
5171 * IPython turns 21! Released version 0.1.21, as a candidate for
5165 public consumption. If all goes well, release in a few days.
5172 public consumption. If all goes well, release in a few days.
5166
5173
5167 * Fixed path bug (files in Extensions/ directory wouldn't be found
5174 * Fixed path bug (files in Extensions/ directory wouldn't be found
5168 unless IPython/ was explicitly in sys.path).
5175 unless IPython/ was explicitly in sys.path).
5169
5176
5170 * Extended the FlexCompleter class as MagicCompleter to allow
5177 * Extended the FlexCompleter class as MagicCompleter to allow
5171 completion of @-starting lines.
5178 completion of @-starting lines.
5172
5179
5173 * Created __release__.py file as a central repository for release
5180 * Created __release__.py file as a central repository for release
5174 info that other files can read from.
5181 info that other files can read from.
5175
5182
5176 * Fixed small bug in logging: when logging was turned on in
5183 * Fixed small bug in logging: when logging was turned on in
5177 mid-session, old lines with special meanings (!@?) were being
5184 mid-session, old lines with special meanings (!@?) were being
5178 logged without the prepended comment, which is necessary since
5185 logged without the prepended comment, which is necessary since
5179 they are not truly valid python syntax. This should make session
5186 they are not truly valid python syntax. This should make session
5180 restores produce less errors.
5187 restores produce less errors.
5181
5188
5182 * The namespace cleanup forced me to make a FlexCompleter class
5189 * The namespace cleanup forced me to make a FlexCompleter class
5183 which is nothing but a ripoff of rlcompleter, but with selectable
5190 which is nothing but a ripoff of rlcompleter, but with selectable
5184 namespace (rlcompleter only works in __main__.__dict__). I'll try
5191 namespace (rlcompleter only works in __main__.__dict__). I'll try
5185 to submit a note to the authors to see if this change can be
5192 to submit a note to the authors to see if this change can be
5186 incorporated in future rlcompleter releases (Dec.6: done)
5193 incorporated in future rlcompleter releases (Dec.6: done)
5187
5194
5188 * More fixes to namespace handling. It was a mess! Now all
5195 * More fixes to namespace handling. It was a mess! Now all
5189 explicit references to __main__.__dict__ are gone (except when
5196 explicit references to __main__.__dict__ are gone (except when
5190 really needed) and everything is handled through the namespace
5197 really needed) and everything is handled through the namespace
5191 dicts in the IPython instance. We seem to be getting somewhere
5198 dicts in the IPython instance. We seem to be getting somewhere
5192 with this, finally...
5199 with this, finally...
5193
5200
5194 * Small documentation updates.
5201 * Small documentation updates.
5195
5202
5196 * Created the Extensions directory under IPython (with an
5203 * Created the Extensions directory under IPython (with an
5197 __init__.py). Put the PhysicalQ stuff there. This directory should
5204 __init__.py). Put the PhysicalQ stuff there. This directory should
5198 be used for all special-purpose extensions.
5205 be used for all special-purpose extensions.
5199
5206
5200 * File renaming:
5207 * File renaming:
5201 ipythonlib --> ipmaker
5208 ipythonlib --> ipmaker
5202 ipplib --> iplib
5209 ipplib --> iplib
5203 This makes a bit more sense in terms of what these files actually do.
5210 This makes a bit more sense in terms of what these files actually do.
5204
5211
5205 * Moved all the classes and functions in ipythonlib to ipplib, so
5212 * Moved all the classes and functions in ipythonlib to ipplib, so
5206 now ipythonlib only has make_IPython(). This will ease up its
5213 now ipythonlib only has make_IPython(). This will ease up its
5207 splitting in smaller functional chunks later.
5214 splitting in smaller functional chunks later.
5208
5215
5209 * Cleaned up (done, I think) output of @whos. Better column
5216 * Cleaned up (done, I think) output of @whos. Better column
5210 formatting, and now shows str(var) for as much as it can, which is
5217 formatting, and now shows str(var) for as much as it can, which is
5211 typically what one gets with a 'print var'.
5218 typically what one gets with a 'print var'.
5212
5219
5213 2001-12-04 Fernando Perez <fperez@colorado.edu>
5220 2001-12-04 Fernando Perez <fperez@colorado.edu>
5214
5221
5215 * Fixed namespace problems. Now builtin/IPyhton/user names get
5222 * Fixed namespace problems. Now builtin/IPyhton/user names get
5216 properly reported in their namespace. Internal namespace handling
5223 properly reported in their namespace. Internal namespace handling
5217 is finally getting decent (not perfect yet, but much better than
5224 is finally getting decent (not perfect yet, but much better than
5218 the ad-hoc mess we had).
5225 the ad-hoc mess we had).
5219
5226
5220 * Removed -exit option. If people just want to run a python
5227 * Removed -exit option. If people just want to run a python
5221 script, that's what the normal interpreter is for. Less
5228 script, that's what the normal interpreter is for. Less
5222 unnecessary options, less chances for bugs.
5229 unnecessary options, less chances for bugs.
5223
5230
5224 * Added a crash handler which generates a complete post-mortem if
5231 * Added a crash handler which generates a complete post-mortem if
5225 IPython crashes. This will help a lot in tracking bugs down the
5232 IPython crashes. This will help a lot in tracking bugs down the
5226 road.
5233 road.
5227
5234
5228 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5235 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5229 which were boud to functions being reassigned would bypass the
5236 which were boud to functions being reassigned would bypass the
5230 logger, breaking the sync of _il with the prompt counter. This
5237 logger, breaking the sync of _il with the prompt counter. This
5231 would then crash IPython later when a new line was logged.
5238 would then crash IPython later when a new line was logged.
5232
5239
5233 2001-12-02 Fernando Perez <fperez@colorado.edu>
5240 2001-12-02 Fernando Perez <fperez@colorado.edu>
5234
5241
5235 * Made IPython a package. This means people don't have to clutter
5242 * Made IPython a package. This means people don't have to clutter
5236 their sys.path with yet another directory. Changed the INSTALL
5243 their sys.path with yet another directory. Changed the INSTALL
5237 file accordingly.
5244 file accordingly.
5238
5245
5239 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5246 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5240 sorts its output (so @who shows it sorted) and @whos formats the
5247 sorts its output (so @who shows it sorted) and @whos formats the
5241 table according to the width of the first column. Nicer, easier to
5248 table according to the width of the first column. Nicer, easier to
5242 read. Todo: write a generic table_format() which takes a list of
5249 read. Todo: write a generic table_format() which takes a list of
5243 lists and prints it nicely formatted, with optional row/column
5250 lists and prints it nicely formatted, with optional row/column
5244 separators and proper padding and justification.
5251 separators and proper padding and justification.
5245
5252
5246 * Released 0.1.20
5253 * Released 0.1.20
5247
5254
5248 * Fixed bug in @log which would reverse the inputcache list (a
5255 * Fixed bug in @log which would reverse the inputcache list (a
5249 copy operation was missing).
5256 copy operation was missing).
5250
5257
5251 * Code cleanup. @config was changed to use page(). Better, since
5258 * Code cleanup. @config was changed to use page(). Better, since
5252 its output is always quite long.
5259 its output is always quite long.
5253
5260
5254 * Itpl is back as a dependency. I was having too many problems
5261 * Itpl is back as a dependency. I was having too many problems
5255 getting the parametric aliases to work reliably, and it's just
5262 getting the parametric aliases to work reliably, and it's just
5256 easier to code weird string operations with it than playing %()s
5263 easier to code weird string operations with it than playing %()s
5257 games. It's only ~6k, so I don't think it's too big a deal.
5264 games. It's only ~6k, so I don't think it's too big a deal.
5258
5265
5259 * Found (and fixed) a very nasty bug with history. !lines weren't
5266 * Found (and fixed) a very nasty bug with history. !lines weren't
5260 getting cached, and the out of sync caches would crash
5267 getting cached, and the out of sync caches would crash
5261 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5268 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5262 division of labor a bit better. Bug fixed, cleaner structure.
5269 division of labor a bit better. Bug fixed, cleaner structure.
5263
5270
5264 2001-12-01 Fernando Perez <fperez@colorado.edu>
5271 2001-12-01 Fernando Perez <fperez@colorado.edu>
5265
5272
5266 * Released 0.1.19
5273 * Released 0.1.19
5267
5274
5268 * Added option -n to @hist to prevent line number printing. Much
5275 * Added option -n to @hist to prevent line number printing. Much
5269 easier to copy/paste code this way.
5276 easier to copy/paste code this way.
5270
5277
5271 * Created global _il to hold the input list. Allows easy
5278 * Created global _il to hold the input list. Allows easy
5272 re-execution of blocks of code by slicing it (inspired by Janko's
5279 re-execution of blocks of code by slicing it (inspired by Janko's
5273 comment on 'macros').
5280 comment on 'macros').
5274
5281
5275 * Small fixes and doc updates.
5282 * Small fixes and doc updates.
5276
5283
5277 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5284 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5278 much too fragile with automagic. Handles properly multi-line
5285 much too fragile with automagic. Handles properly multi-line
5279 statements and takes parameters.
5286 statements and takes parameters.
5280
5287
5281 2001-11-30 Fernando Perez <fperez@colorado.edu>
5288 2001-11-30 Fernando Perez <fperez@colorado.edu>
5282
5289
5283 * Version 0.1.18 released.
5290 * Version 0.1.18 released.
5284
5291
5285 * Fixed nasty namespace bug in initial module imports.
5292 * Fixed nasty namespace bug in initial module imports.
5286
5293
5287 * Added copyright/license notes to all code files (except
5294 * Added copyright/license notes to all code files (except
5288 DPyGetOpt). For the time being, LGPL. That could change.
5295 DPyGetOpt). For the time being, LGPL. That could change.
5289
5296
5290 * Rewrote a much nicer README, updated INSTALL, cleaned up
5297 * Rewrote a much nicer README, updated INSTALL, cleaned up
5291 ipythonrc-* samples.
5298 ipythonrc-* samples.
5292
5299
5293 * Overall code/documentation cleanup. Basically ready for
5300 * Overall code/documentation cleanup. Basically ready for
5294 release. Only remaining thing: licence decision (LGPL?).
5301 release. Only remaining thing: licence decision (LGPL?).
5295
5302
5296 * Converted load_config to a class, ConfigLoader. Now recursion
5303 * Converted load_config to a class, ConfigLoader. Now recursion
5297 control is better organized. Doesn't include the same file twice.
5304 control is better organized. Doesn't include the same file twice.
5298
5305
5299 2001-11-29 Fernando Perez <fperez@colorado.edu>
5306 2001-11-29 Fernando Perez <fperez@colorado.edu>
5300
5307
5301 * Got input history working. Changed output history variables from
5308 * Got input history working. Changed output history variables from
5302 _p to _o so that _i is for input and _o for output. Just cleaner
5309 _p to _o so that _i is for input and _o for output. Just cleaner
5303 convention.
5310 convention.
5304
5311
5305 * Implemented parametric aliases. This pretty much allows the
5312 * Implemented parametric aliases. This pretty much allows the
5306 alias system to offer full-blown shell convenience, I think.
5313 alias system to offer full-blown shell convenience, I think.
5307
5314
5308 * Version 0.1.17 released, 0.1.18 opened.
5315 * Version 0.1.17 released, 0.1.18 opened.
5309
5316
5310 * dot_ipython/ipythonrc (alias): added documentation.
5317 * dot_ipython/ipythonrc (alias): added documentation.
5311 (xcolor): Fixed small bug (xcolors -> xcolor)
5318 (xcolor): Fixed small bug (xcolors -> xcolor)
5312
5319
5313 * Changed the alias system. Now alias is a magic command to define
5320 * Changed the alias system. Now alias is a magic command to define
5314 aliases just like the shell. Rationale: the builtin magics should
5321 aliases just like the shell. Rationale: the builtin magics should
5315 be there for things deeply connected to IPython's
5322 be there for things deeply connected to IPython's
5316 architecture. And this is a much lighter system for what I think
5323 architecture. And this is a much lighter system for what I think
5317 is the really important feature: allowing users to define quickly
5324 is the really important feature: allowing users to define quickly
5318 magics that will do shell things for them, so they can customize
5325 magics that will do shell things for them, so they can customize
5319 IPython easily to match their work habits. If someone is really
5326 IPython easily to match their work habits. If someone is really
5320 desperate to have another name for a builtin alias, they can
5327 desperate to have another name for a builtin alias, they can
5321 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5328 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5322 works.
5329 works.
5323
5330
5324 2001-11-28 Fernando Perez <fperez@colorado.edu>
5331 2001-11-28 Fernando Perez <fperez@colorado.edu>
5325
5332
5326 * Changed @file so that it opens the source file at the proper
5333 * Changed @file so that it opens the source file at the proper
5327 line. Since it uses less, if your EDITOR environment is
5334 line. Since it uses less, if your EDITOR environment is
5328 configured, typing v will immediately open your editor of choice
5335 configured, typing v will immediately open your editor of choice
5329 right at the line where the object is defined. Not as quick as
5336 right at the line where the object is defined. Not as quick as
5330 having a direct @edit command, but for all intents and purposes it
5337 having a direct @edit command, but for all intents and purposes it
5331 works. And I don't have to worry about writing @edit to deal with
5338 works. And I don't have to worry about writing @edit to deal with
5332 all the editors, less does that.
5339 all the editors, less does that.
5333
5340
5334 * Version 0.1.16 released, 0.1.17 opened.
5341 * Version 0.1.16 released, 0.1.17 opened.
5335
5342
5336 * Fixed some nasty bugs in the page/page_dumb combo that could
5343 * Fixed some nasty bugs in the page/page_dumb combo that could
5337 crash IPython.
5344 crash IPython.
5338
5345
5339 2001-11-27 Fernando Perez <fperez@colorado.edu>
5346 2001-11-27 Fernando Perez <fperez@colorado.edu>
5340
5347
5341 * Version 0.1.15 released, 0.1.16 opened.
5348 * Version 0.1.15 released, 0.1.16 opened.
5342
5349
5343 * Finally got ? and ?? to work for undefined things: now it's
5350 * Finally got ? and ?? to work for undefined things: now it's
5344 possible to type {}.get? and get information about the get method
5351 possible to type {}.get? and get information about the get method
5345 of dicts, or os.path? even if only os is defined (so technically
5352 of dicts, or os.path? even if only os is defined (so technically
5346 os.path isn't). Works at any level. For example, after import os,
5353 os.path isn't). Works at any level. For example, after import os,
5347 os?, os.path?, os.path.abspath? all work. This is great, took some
5354 os?, os.path?, os.path.abspath? all work. This is great, took some
5348 work in _ofind.
5355 work in _ofind.
5349
5356
5350 * Fixed more bugs with logging. The sanest way to do it was to add
5357 * Fixed more bugs with logging. The sanest way to do it was to add
5351 to @log a 'mode' parameter. Killed two in one shot (this mode
5358 to @log a 'mode' parameter. Killed two in one shot (this mode
5352 option was a request of Janko's). I think it's finally clean
5359 option was a request of Janko's). I think it's finally clean
5353 (famous last words).
5360 (famous last words).
5354
5361
5355 * Added a page_dumb() pager which does a decent job of paging on
5362 * Added a page_dumb() pager which does a decent job of paging on
5356 screen, if better things (like less) aren't available. One less
5363 screen, if better things (like less) aren't available. One less
5357 unix dependency (someday maybe somebody will port this to
5364 unix dependency (someday maybe somebody will port this to
5358 windows).
5365 windows).
5359
5366
5360 * Fixed problem in magic_log: would lock of logging out if log
5367 * Fixed problem in magic_log: would lock of logging out if log
5361 creation failed (because it would still think it had succeeded).
5368 creation failed (because it would still think it had succeeded).
5362
5369
5363 * Improved the page() function using curses to auto-detect screen
5370 * Improved the page() function using curses to auto-detect screen
5364 size. Now it can make a much better decision on whether to print
5371 size. Now it can make a much better decision on whether to print
5365 or page a string. Option screen_length was modified: a value 0
5372 or page a string. Option screen_length was modified: a value 0
5366 means auto-detect, and that's the default now.
5373 means auto-detect, and that's the default now.
5367
5374
5368 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5375 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5369 go out. I'll test it for a few days, then talk to Janko about
5376 go out. I'll test it for a few days, then talk to Janko about
5370 licences and announce it.
5377 licences and announce it.
5371
5378
5372 * Fixed the length of the auto-generated ---> prompt which appears
5379 * Fixed the length of the auto-generated ---> prompt which appears
5373 for auto-parens and auto-quotes. Getting this right isn't trivial,
5380 for auto-parens and auto-quotes. Getting this right isn't trivial,
5374 with all the color escapes, different prompt types and optional
5381 with all the color escapes, different prompt types and optional
5375 separators. But it seems to be working in all the combinations.
5382 separators. But it seems to be working in all the combinations.
5376
5383
5377 2001-11-26 Fernando Perez <fperez@colorado.edu>
5384 2001-11-26 Fernando Perez <fperez@colorado.edu>
5378
5385
5379 * Wrote a regexp filter to get option types from the option names
5386 * Wrote a regexp filter to get option types from the option names
5380 string. This eliminates the need to manually keep two duplicate
5387 string. This eliminates the need to manually keep two duplicate
5381 lists.
5388 lists.
5382
5389
5383 * Removed the unneeded check_option_names. Now options are handled
5390 * Removed the unneeded check_option_names. Now options are handled
5384 in a much saner manner and it's easy to visually check that things
5391 in a much saner manner and it's easy to visually check that things
5385 are ok.
5392 are ok.
5386
5393
5387 * Updated version numbers on all files I modified to carry a
5394 * Updated version numbers on all files I modified to carry a
5388 notice so Janko and Nathan have clear version markers.
5395 notice so Janko and Nathan have clear version markers.
5389
5396
5390 * Updated docstring for ultraTB with my changes. I should send
5397 * Updated docstring for ultraTB with my changes. I should send
5391 this to Nathan.
5398 this to Nathan.
5392
5399
5393 * Lots of small fixes. Ran everything through pychecker again.
5400 * Lots of small fixes. Ran everything through pychecker again.
5394
5401
5395 * Made loading of deep_reload an cmd line option. If it's not too
5402 * Made loading of deep_reload an cmd line option. If it's not too
5396 kosher, now people can just disable it. With -nodeep_reload it's
5403 kosher, now people can just disable it. With -nodeep_reload it's
5397 still available as dreload(), it just won't overwrite reload().
5404 still available as dreload(), it just won't overwrite reload().
5398
5405
5399 * Moved many options to the no| form (-opt and -noopt
5406 * Moved many options to the no| form (-opt and -noopt
5400 accepted). Cleaner.
5407 accepted). Cleaner.
5401
5408
5402 * Changed magic_log so that if called with no parameters, it uses
5409 * Changed magic_log so that if called with no parameters, it uses
5403 'rotate' mode. That way auto-generated logs aren't automatically
5410 'rotate' mode. That way auto-generated logs aren't automatically
5404 over-written. For normal logs, now a backup is made if it exists
5411 over-written. For normal logs, now a backup is made if it exists
5405 (only 1 level of backups). A new 'backup' mode was added to the
5412 (only 1 level of backups). A new 'backup' mode was added to the
5406 Logger class to support this. This was a request by Janko.
5413 Logger class to support this. This was a request by Janko.
5407
5414
5408 * Added @logoff/@logon to stop/restart an active log.
5415 * Added @logoff/@logon to stop/restart an active log.
5409
5416
5410 * Fixed a lot of bugs in log saving/replay. It was pretty
5417 * Fixed a lot of bugs in log saving/replay. It was pretty
5411 broken. Now special lines (!@,/) appear properly in the command
5418 broken. Now special lines (!@,/) appear properly in the command
5412 history after a log replay.
5419 history after a log replay.
5413
5420
5414 * Tried and failed to implement full session saving via pickle. My
5421 * Tried and failed to implement full session saving via pickle. My
5415 idea was to pickle __main__.__dict__, but modules can't be
5422 idea was to pickle __main__.__dict__, but modules can't be
5416 pickled. This would be a better alternative to replaying logs, but
5423 pickled. This would be a better alternative to replaying logs, but
5417 seems quite tricky to get to work. Changed -session to be called
5424 seems quite tricky to get to work. Changed -session to be called
5418 -logplay, which more accurately reflects what it does. And if we
5425 -logplay, which more accurately reflects what it does. And if we
5419 ever get real session saving working, -session is now available.
5426 ever get real session saving working, -session is now available.
5420
5427
5421 * Implemented color schemes for prompts also. As for tracebacks,
5428 * Implemented color schemes for prompts also. As for tracebacks,
5422 currently only NoColor and Linux are supported. But now the
5429 currently only NoColor and Linux are supported. But now the
5423 infrastructure is in place, based on a generic ColorScheme
5430 infrastructure is in place, based on a generic ColorScheme
5424 class. So writing and activating new schemes both for the prompts
5431 class. So writing and activating new schemes both for the prompts
5425 and the tracebacks should be straightforward.
5432 and the tracebacks should be straightforward.
5426
5433
5427 * Version 0.1.13 released, 0.1.14 opened.
5434 * Version 0.1.13 released, 0.1.14 opened.
5428
5435
5429 * Changed handling of options for output cache. Now counter is
5436 * Changed handling of options for output cache. Now counter is
5430 hardwired starting at 1 and one specifies the maximum number of
5437 hardwired starting at 1 and one specifies the maximum number of
5431 entries *in the outcache* (not the max prompt counter). This is
5438 entries *in the outcache* (not the max prompt counter). This is
5432 much better, since many statements won't increase the cache
5439 much better, since many statements won't increase the cache
5433 count. It also eliminated some confusing options, now there's only
5440 count. It also eliminated some confusing options, now there's only
5434 one: cache_size.
5441 one: cache_size.
5435
5442
5436 * Added 'alias' magic function and magic_alias option in the
5443 * Added 'alias' magic function and magic_alias option in the
5437 ipythonrc file. Now the user can easily define whatever names he
5444 ipythonrc file. Now the user can easily define whatever names he
5438 wants for the magic functions without having to play weird
5445 wants for the magic functions without having to play weird
5439 namespace games. This gives IPython a real shell-like feel.
5446 namespace games. This gives IPython a real shell-like feel.
5440
5447
5441 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5448 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5442 @ or not).
5449 @ or not).
5443
5450
5444 This was one of the last remaining 'visible' bugs (that I know
5451 This was one of the last remaining 'visible' bugs (that I know
5445 of). I think if I can clean up the session loading so it works
5452 of). I think if I can clean up the session loading so it works
5446 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5453 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5447 about licensing).
5454 about licensing).
5448
5455
5449 2001-11-25 Fernando Perez <fperez@colorado.edu>
5456 2001-11-25 Fernando Perez <fperez@colorado.edu>
5450
5457
5451 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5458 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5452 there's a cleaner distinction between what ? and ?? show.
5459 there's a cleaner distinction between what ? and ?? show.
5453
5460
5454 * Added screen_length option. Now the user can define his own
5461 * Added screen_length option. Now the user can define his own
5455 screen size for page() operations.
5462 screen size for page() operations.
5456
5463
5457 * Implemented magic shell-like functions with automatic code
5464 * Implemented magic shell-like functions with automatic code
5458 generation. Now adding another function is just a matter of adding
5465 generation. Now adding another function is just a matter of adding
5459 an entry to a dict, and the function is dynamically generated at
5466 an entry to a dict, and the function is dynamically generated at
5460 run-time. Python has some really cool features!
5467 run-time. Python has some really cool features!
5461
5468
5462 * Renamed many options to cleanup conventions a little. Now all
5469 * Renamed many options to cleanup conventions a little. Now all
5463 are lowercase, and only underscores where needed. Also in the code
5470 are lowercase, and only underscores where needed. Also in the code
5464 option name tables are clearer.
5471 option name tables are clearer.
5465
5472
5466 * Changed prompts a little. Now input is 'In [n]:' instead of
5473 * Changed prompts a little. Now input is 'In [n]:' instead of
5467 'In[n]:='. This allows it the numbers to be aligned with the
5474 'In[n]:='. This allows it the numbers to be aligned with the
5468 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5475 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5469 Python (it was a Mathematica thing). The '...' continuation prompt
5476 Python (it was a Mathematica thing). The '...' continuation prompt
5470 was also changed a little to align better.
5477 was also changed a little to align better.
5471
5478
5472 * Fixed bug when flushing output cache. Not all _p<n> variables
5479 * Fixed bug when flushing output cache. Not all _p<n> variables
5473 exist, so their deletion needs to be wrapped in a try:
5480 exist, so their deletion needs to be wrapped in a try:
5474
5481
5475 * Figured out how to properly use inspect.formatargspec() (it
5482 * Figured out how to properly use inspect.formatargspec() (it
5476 requires the args preceded by *). So I removed all the code from
5483 requires the args preceded by *). So I removed all the code from
5477 _get_pdef in Magic, which was just replicating that.
5484 _get_pdef in Magic, which was just replicating that.
5478
5485
5479 * Added test to prefilter to allow redefining magic function names
5486 * Added test to prefilter to allow redefining magic function names
5480 as variables. This is ok, since the @ form is always available,
5487 as variables. This is ok, since the @ form is always available,
5481 but whe should allow the user to define a variable called 'ls' if
5488 but whe should allow the user to define a variable called 'ls' if
5482 he needs it.
5489 he needs it.
5483
5490
5484 * Moved the ToDo information from README into a separate ToDo.
5491 * Moved the ToDo information from README into a separate ToDo.
5485
5492
5486 * General code cleanup and small bugfixes. I think it's close to a
5493 * General code cleanup and small bugfixes. I think it's close to a
5487 state where it can be released, obviously with a big 'beta'
5494 state where it can be released, obviously with a big 'beta'
5488 warning on it.
5495 warning on it.
5489
5496
5490 * Got the magic function split to work. Now all magics are defined
5497 * Got the magic function split to work. Now all magics are defined
5491 in a separate class. It just organizes things a bit, and now
5498 in a separate class. It just organizes things a bit, and now
5492 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5499 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5493 was too long).
5500 was too long).
5494
5501
5495 * Changed @clear to @reset to avoid potential confusions with
5502 * Changed @clear to @reset to avoid potential confusions with
5496 the shell command clear. Also renamed @cl to @clear, which does
5503 the shell command clear. Also renamed @cl to @clear, which does
5497 exactly what people expect it to from their shell experience.
5504 exactly what people expect it to from their shell experience.
5498
5505
5499 Added a check to the @reset command (since it's so
5506 Added a check to the @reset command (since it's so
5500 destructive, it's probably a good idea to ask for confirmation).
5507 destructive, it's probably a good idea to ask for confirmation).
5501 But now reset only works for full namespace resetting. Since the
5508 But now reset only works for full namespace resetting. Since the
5502 del keyword is already there for deleting a few specific
5509 del keyword is already there for deleting a few specific
5503 variables, I don't see the point of having a redundant magic
5510 variables, I don't see the point of having a redundant magic
5504 function for the same task.
5511 function for the same task.
5505
5512
5506 2001-11-24 Fernando Perez <fperez@colorado.edu>
5513 2001-11-24 Fernando Perez <fperez@colorado.edu>
5507
5514
5508 * Updated the builtin docs (esp. the ? ones).
5515 * Updated the builtin docs (esp. the ? ones).
5509
5516
5510 * Ran all the code through pychecker. Not terribly impressed with
5517 * Ran all the code through pychecker. Not terribly impressed with
5511 it: lots of spurious warnings and didn't really find anything of
5518 it: lots of spurious warnings and didn't really find anything of
5512 substance (just a few modules being imported and not used).
5519 substance (just a few modules being imported and not used).
5513
5520
5514 * Implemented the new ultraTB functionality into IPython. New
5521 * Implemented the new ultraTB functionality into IPython. New
5515 option: xcolors. This chooses color scheme. xmode now only selects
5522 option: xcolors. This chooses color scheme. xmode now only selects
5516 between Plain and Verbose. Better orthogonality.
5523 between Plain and Verbose. Better orthogonality.
5517
5524
5518 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5525 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5519 mode and color scheme for the exception handlers. Now it's
5526 mode and color scheme for the exception handlers. Now it's
5520 possible to have the verbose traceback with no coloring.
5527 possible to have the verbose traceback with no coloring.
5521
5528
5522 2001-11-23 Fernando Perez <fperez@colorado.edu>
5529 2001-11-23 Fernando Perez <fperez@colorado.edu>
5523
5530
5524 * Version 0.1.12 released, 0.1.13 opened.
5531 * Version 0.1.12 released, 0.1.13 opened.
5525
5532
5526 * Removed option to set auto-quote and auto-paren escapes by
5533 * Removed option to set auto-quote and auto-paren escapes by
5527 user. The chances of breaking valid syntax are just too high. If
5534 user. The chances of breaking valid syntax are just too high. If
5528 someone *really* wants, they can always dig into the code.
5535 someone *really* wants, they can always dig into the code.
5529
5536
5530 * Made prompt separators configurable.
5537 * Made prompt separators configurable.
5531
5538
5532 2001-11-22 Fernando Perez <fperez@colorado.edu>
5539 2001-11-22 Fernando Perez <fperez@colorado.edu>
5533
5540
5534 * Small bugfixes in many places.
5541 * Small bugfixes in many places.
5535
5542
5536 * Removed the MyCompleter class from ipplib. It seemed redundant
5543 * Removed the MyCompleter class from ipplib. It seemed redundant
5537 with the C-p,C-n history search functionality. Less code to
5544 with the C-p,C-n history search functionality. Less code to
5538 maintain.
5545 maintain.
5539
5546
5540 * Moved all the original ipython.py code into ipythonlib.py. Right
5547 * Moved all the original ipython.py code into ipythonlib.py. Right
5541 now it's just one big dump into a function called make_IPython, so
5548 now it's just one big dump into a function called make_IPython, so
5542 no real modularity has been gained. But at least it makes the
5549 no real modularity has been gained. But at least it makes the
5543 wrapper script tiny, and since ipythonlib is a module, it gets
5550 wrapper script tiny, and since ipythonlib is a module, it gets
5544 compiled and startup is much faster.
5551 compiled and startup is much faster.
5545
5552
5546 This is a reasobably 'deep' change, so we should test it for a
5553 This is a reasobably 'deep' change, so we should test it for a
5547 while without messing too much more with the code.
5554 while without messing too much more with the code.
5548
5555
5549 2001-11-21 Fernando Perez <fperez@colorado.edu>
5556 2001-11-21 Fernando Perez <fperez@colorado.edu>
5550
5557
5551 * Version 0.1.11 released, 0.1.12 opened for further work.
5558 * Version 0.1.11 released, 0.1.12 opened for further work.
5552
5559
5553 * Removed dependency on Itpl. It was only needed in one place. It
5560 * Removed dependency on Itpl. It was only needed in one place. It
5554 would be nice if this became part of python, though. It makes life
5561 would be nice if this became part of python, though. It makes life
5555 *a lot* easier in some cases.
5562 *a lot* easier in some cases.
5556
5563
5557 * Simplified the prefilter code a bit. Now all handlers are
5564 * Simplified the prefilter code a bit. Now all handlers are
5558 expected to explicitly return a value (at least a blank string).
5565 expected to explicitly return a value (at least a blank string).
5559
5566
5560 * Heavy edits in ipplib. Removed the help system altogether. Now
5567 * Heavy edits in ipplib. Removed the help system altogether. Now
5561 obj?/?? is used for inspecting objects, a magic @doc prints
5568 obj?/?? is used for inspecting objects, a magic @doc prints
5562 docstrings, and full-blown Python help is accessed via the 'help'
5569 docstrings, and full-blown Python help is accessed via the 'help'
5563 keyword. This cleans up a lot of code (less to maintain) and does
5570 keyword. This cleans up a lot of code (less to maintain) and does
5564 the job. Since 'help' is now a standard Python component, might as
5571 the job. Since 'help' is now a standard Python component, might as
5565 well use it and remove duplicate functionality.
5572 well use it and remove duplicate functionality.
5566
5573
5567 Also removed the option to use ipplib as a standalone program. By
5574 Also removed the option to use ipplib as a standalone program. By
5568 now it's too dependent on other parts of IPython to function alone.
5575 now it's too dependent on other parts of IPython to function alone.
5569
5576
5570 * Fixed bug in genutils.pager. It would crash if the pager was
5577 * Fixed bug in genutils.pager. It would crash if the pager was
5571 exited immediately after opening (broken pipe).
5578 exited immediately after opening (broken pipe).
5572
5579
5573 * Trimmed down the VerboseTB reporting a little. The header is
5580 * Trimmed down the VerboseTB reporting a little. The header is
5574 much shorter now and the repeated exception arguments at the end
5581 much shorter now and the repeated exception arguments at the end
5575 have been removed. For interactive use the old header seemed a bit
5582 have been removed. For interactive use the old header seemed a bit
5576 excessive.
5583 excessive.
5577
5584
5578 * Fixed small bug in output of @whos for variables with multi-word
5585 * Fixed small bug in output of @whos for variables with multi-word
5579 types (only first word was displayed).
5586 types (only first word was displayed).
5580
5587
5581 2001-11-17 Fernando Perez <fperez@colorado.edu>
5588 2001-11-17 Fernando Perez <fperez@colorado.edu>
5582
5589
5583 * Version 0.1.10 released, 0.1.11 opened for further work.
5590 * Version 0.1.10 released, 0.1.11 opened for further work.
5584
5591
5585 * Modified dirs and friends. dirs now *returns* the stack (not
5592 * Modified dirs and friends. dirs now *returns* the stack (not
5586 prints), so one can manipulate it as a variable. Convenient to
5593 prints), so one can manipulate it as a variable. Convenient to
5587 travel along many directories.
5594 travel along many directories.
5588
5595
5589 * Fixed bug in magic_pdef: would only work with functions with
5596 * Fixed bug in magic_pdef: would only work with functions with
5590 arguments with default values.
5597 arguments with default values.
5591
5598
5592 2001-11-14 Fernando Perez <fperez@colorado.edu>
5599 2001-11-14 Fernando Perez <fperez@colorado.edu>
5593
5600
5594 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5601 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5595 example with IPython. Various other minor fixes and cleanups.
5602 example with IPython. Various other minor fixes and cleanups.
5596
5603
5597 * Version 0.1.9 released, 0.1.10 opened for further work.
5604 * Version 0.1.9 released, 0.1.10 opened for further work.
5598
5605
5599 * Added sys.path to the list of directories searched in the
5606 * Added sys.path to the list of directories searched in the
5600 execfile= option. It used to be the current directory and the
5607 execfile= option. It used to be the current directory and the
5601 user's IPYTHONDIR only.
5608 user's IPYTHONDIR only.
5602
5609
5603 2001-11-13 Fernando Perez <fperez@colorado.edu>
5610 2001-11-13 Fernando Perez <fperez@colorado.edu>
5604
5611
5605 * Reinstated the raw_input/prefilter separation that Janko had
5612 * Reinstated the raw_input/prefilter separation that Janko had
5606 initially. This gives a more convenient setup for extending the
5613 initially. This gives a more convenient setup for extending the
5607 pre-processor from the outside: raw_input always gets a string,
5614 pre-processor from the outside: raw_input always gets a string,
5608 and prefilter has to process it. We can then redefine prefilter
5615 and prefilter has to process it. We can then redefine prefilter
5609 from the outside and implement extensions for special
5616 from the outside and implement extensions for special
5610 purposes.
5617 purposes.
5611
5618
5612 Today I got one for inputting PhysicalQuantity objects
5619 Today I got one for inputting PhysicalQuantity objects
5613 (from Scientific) without needing any function calls at
5620 (from Scientific) without needing any function calls at
5614 all. Extremely convenient, and it's all done as a user-level
5621 all. Extremely convenient, and it's all done as a user-level
5615 extension (no IPython code was touched). Now instead of:
5622 extension (no IPython code was touched). Now instead of:
5616 a = PhysicalQuantity(4.2,'m/s**2')
5623 a = PhysicalQuantity(4.2,'m/s**2')
5617 one can simply say
5624 one can simply say
5618 a = 4.2 m/s**2
5625 a = 4.2 m/s**2
5619 or even
5626 or even
5620 a = 4.2 m/s^2
5627 a = 4.2 m/s^2
5621
5628
5622 I use this, but it's also a proof of concept: IPython really is
5629 I use this, but it's also a proof of concept: IPython really is
5623 fully user-extensible, even at the level of the parsing of the
5630 fully user-extensible, even at the level of the parsing of the
5624 command line. It's not trivial, but it's perfectly doable.
5631 command line. It's not trivial, but it's perfectly doable.
5625
5632
5626 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5633 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5627 the problem of modules being loaded in the inverse order in which
5634 the problem of modules being loaded in the inverse order in which
5628 they were defined in
5635 they were defined in
5629
5636
5630 * Version 0.1.8 released, 0.1.9 opened for further work.
5637 * Version 0.1.8 released, 0.1.9 opened for further work.
5631
5638
5632 * Added magics pdef, source and file. They respectively show the
5639 * Added magics pdef, source and file. They respectively show the
5633 definition line ('prototype' in C), source code and full python
5640 definition line ('prototype' in C), source code and full python
5634 file for any callable object. The object inspector oinfo uses
5641 file for any callable object. The object inspector oinfo uses
5635 these to show the same information.
5642 these to show the same information.
5636
5643
5637 * Version 0.1.7 released, 0.1.8 opened for further work.
5644 * Version 0.1.7 released, 0.1.8 opened for further work.
5638
5645
5639 * Separated all the magic functions into a class called Magic. The
5646 * Separated all the magic functions into a class called Magic. The
5640 InteractiveShell class was becoming too big for Xemacs to handle
5647 InteractiveShell class was becoming too big for Xemacs to handle
5641 (de-indenting a line would lock it up for 10 seconds while it
5648 (de-indenting a line would lock it up for 10 seconds while it
5642 backtracked on the whole class!)
5649 backtracked on the whole class!)
5643
5650
5644 FIXME: didn't work. It can be done, but right now namespaces are
5651 FIXME: didn't work. It can be done, but right now namespaces are
5645 all messed up. Do it later (reverted it for now, so at least
5652 all messed up. Do it later (reverted it for now, so at least
5646 everything works as before).
5653 everything works as before).
5647
5654
5648 * Got the object introspection system (magic_oinfo) working! I
5655 * Got the object introspection system (magic_oinfo) working! I
5649 think this is pretty much ready for release to Janko, so he can
5656 think this is pretty much ready for release to Janko, so he can
5650 test it for a while and then announce it. Pretty much 100% of what
5657 test it for a while and then announce it. Pretty much 100% of what
5651 I wanted for the 'phase 1' release is ready. Happy, tired.
5658 I wanted for the 'phase 1' release is ready. Happy, tired.
5652
5659
5653 2001-11-12 Fernando Perez <fperez@colorado.edu>
5660 2001-11-12 Fernando Perez <fperez@colorado.edu>
5654
5661
5655 * Version 0.1.6 released, 0.1.7 opened for further work.
5662 * Version 0.1.6 released, 0.1.7 opened for further work.
5656
5663
5657 * Fixed bug in printing: it used to test for truth before
5664 * Fixed bug in printing: it used to test for truth before
5658 printing, so 0 wouldn't print. Now checks for None.
5665 printing, so 0 wouldn't print. Now checks for None.
5659
5666
5660 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5667 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5661 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5668 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5662 reaches by hand into the outputcache. Think of a better way to do
5669 reaches by hand into the outputcache. Think of a better way to do
5663 this later.
5670 this later.
5664
5671
5665 * Various small fixes thanks to Nathan's comments.
5672 * Various small fixes thanks to Nathan's comments.
5666
5673
5667 * Changed magic_pprint to magic_Pprint. This way it doesn't
5674 * Changed magic_pprint to magic_Pprint. This way it doesn't
5668 collide with pprint() and the name is consistent with the command
5675 collide with pprint() and the name is consistent with the command
5669 line option.
5676 line option.
5670
5677
5671 * Changed prompt counter behavior to be fully like
5678 * Changed prompt counter behavior to be fully like
5672 Mathematica's. That is, even input that doesn't return a result
5679 Mathematica's. That is, even input that doesn't return a result
5673 raises the prompt counter. The old behavior was kind of confusing
5680 raises the prompt counter. The old behavior was kind of confusing
5674 (getting the same prompt number several times if the operation
5681 (getting the same prompt number several times if the operation
5675 didn't return a result).
5682 didn't return a result).
5676
5683
5677 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5684 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5678
5685
5679 * Fixed -Classic mode (wasn't working anymore).
5686 * Fixed -Classic mode (wasn't working anymore).
5680
5687
5681 * Added colored prompts using Nathan's new code. Colors are
5688 * Added colored prompts using Nathan's new code. Colors are
5682 currently hardwired, they can be user-configurable. For
5689 currently hardwired, they can be user-configurable. For
5683 developers, they can be chosen in file ipythonlib.py, at the
5690 developers, they can be chosen in file ipythonlib.py, at the
5684 beginning of the CachedOutput class def.
5691 beginning of the CachedOutput class def.
5685
5692
5686 2001-11-11 Fernando Perez <fperez@colorado.edu>
5693 2001-11-11 Fernando Perez <fperez@colorado.edu>
5687
5694
5688 * Version 0.1.5 released, 0.1.6 opened for further work.
5695 * Version 0.1.5 released, 0.1.6 opened for further work.
5689
5696
5690 * Changed magic_env to *return* the environment as a dict (not to
5697 * Changed magic_env to *return* the environment as a dict (not to
5691 print it). This way it prints, but it can also be processed.
5698 print it). This way it prints, but it can also be processed.
5692
5699
5693 * Added Verbose exception reporting to interactive
5700 * Added Verbose exception reporting to interactive
5694 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5701 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5695 traceback. Had to make some changes to the ultraTB file. This is
5702 traceback. Had to make some changes to the ultraTB file. This is
5696 probably the last 'big' thing in my mental todo list. This ties
5703 probably the last 'big' thing in my mental todo list. This ties
5697 in with the next entry:
5704 in with the next entry:
5698
5705
5699 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5706 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5700 has to specify is Plain, Color or Verbose for all exception
5707 has to specify is Plain, Color or Verbose for all exception
5701 handling.
5708 handling.
5702
5709
5703 * Removed ShellServices option. All this can really be done via
5710 * Removed ShellServices option. All this can really be done via
5704 the magic system. It's easier to extend, cleaner and has automatic
5711 the magic system. It's easier to extend, cleaner and has automatic
5705 namespace protection and documentation.
5712 namespace protection and documentation.
5706
5713
5707 2001-11-09 Fernando Perez <fperez@colorado.edu>
5714 2001-11-09 Fernando Perez <fperez@colorado.edu>
5708
5715
5709 * Fixed bug in output cache flushing (missing parameter to
5716 * Fixed bug in output cache flushing (missing parameter to
5710 __init__). Other small bugs fixed (found using pychecker).
5717 __init__). Other small bugs fixed (found using pychecker).
5711
5718
5712 * Version 0.1.4 opened for bugfixing.
5719 * Version 0.1.4 opened for bugfixing.
5713
5720
5714 2001-11-07 Fernando Perez <fperez@colorado.edu>
5721 2001-11-07 Fernando Perez <fperez@colorado.edu>
5715
5722
5716 * Version 0.1.3 released, mainly because of the raw_input bug.
5723 * Version 0.1.3 released, mainly because of the raw_input bug.
5717
5724
5718 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5725 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5719 and when testing for whether things were callable, a call could
5726 and when testing for whether things were callable, a call could
5720 actually be made to certain functions. They would get called again
5727 actually be made to certain functions. They would get called again
5721 once 'really' executed, with a resulting double call. A disaster
5728 once 'really' executed, with a resulting double call. A disaster
5722 in many cases (list.reverse() would never work!).
5729 in many cases (list.reverse() would never work!).
5723
5730
5724 * Removed prefilter() function, moved its code to raw_input (which
5731 * Removed prefilter() function, moved its code to raw_input (which
5725 after all was just a near-empty caller for prefilter). This saves
5732 after all was just a near-empty caller for prefilter). This saves
5726 a function call on every prompt, and simplifies the class a tiny bit.
5733 a function call on every prompt, and simplifies the class a tiny bit.
5727
5734
5728 * Fix _ip to __ip name in magic example file.
5735 * Fix _ip to __ip name in magic example file.
5729
5736
5730 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5737 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5731 work with non-gnu versions of tar.
5738 work with non-gnu versions of tar.
5732
5739
5733 2001-11-06 Fernando Perez <fperez@colorado.edu>
5740 2001-11-06 Fernando Perez <fperez@colorado.edu>
5734
5741
5735 * Version 0.1.2. Just to keep track of the recent changes.
5742 * Version 0.1.2. Just to keep track of the recent changes.
5736
5743
5737 * Fixed nasty bug in output prompt routine. It used to check 'if
5744 * Fixed nasty bug in output prompt routine. It used to check 'if
5738 arg != None...'. Problem is, this fails if arg implements a
5745 arg != None...'. Problem is, this fails if arg implements a
5739 special comparison (__cmp__) which disallows comparing to
5746 special comparison (__cmp__) which disallows comparing to
5740 None. Found it when trying to use the PhysicalQuantity module from
5747 None. Found it when trying to use the PhysicalQuantity module from
5741 ScientificPython.
5748 ScientificPython.
5742
5749
5743 2001-11-05 Fernando Perez <fperez@colorado.edu>
5750 2001-11-05 Fernando Perez <fperez@colorado.edu>
5744
5751
5745 * Also added dirs. Now the pushd/popd/dirs family functions
5752 * Also added dirs. Now the pushd/popd/dirs family functions
5746 basically like the shell, with the added convenience of going home
5753 basically like the shell, with the added convenience of going home
5747 when called with no args.
5754 when called with no args.
5748
5755
5749 * pushd/popd slightly modified to mimic shell behavior more
5756 * pushd/popd slightly modified to mimic shell behavior more
5750 closely.
5757 closely.
5751
5758
5752 * Added env,pushd,popd from ShellServices as magic functions. I
5759 * Added env,pushd,popd from ShellServices as magic functions. I
5753 think the cleanest will be to port all desired functions from
5760 think the cleanest will be to port all desired functions from
5754 ShellServices as magics and remove ShellServices altogether. This
5761 ShellServices as magics and remove ShellServices altogether. This
5755 will provide a single, clean way of adding functionality
5762 will provide a single, clean way of adding functionality
5756 (shell-type or otherwise) to IP.
5763 (shell-type or otherwise) to IP.
5757
5764
5758 2001-11-04 Fernando Perez <fperez@colorado.edu>
5765 2001-11-04 Fernando Perez <fperez@colorado.edu>
5759
5766
5760 * Added .ipython/ directory to sys.path. This way users can keep
5767 * Added .ipython/ directory to sys.path. This way users can keep
5761 customizations there and access them via import.
5768 customizations there and access them via import.
5762
5769
5763 2001-11-03 Fernando Perez <fperez@colorado.edu>
5770 2001-11-03 Fernando Perez <fperez@colorado.edu>
5764
5771
5765 * Opened version 0.1.1 for new changes.
5772 * Opened version 0.1.1 for new changes.
5766
5773
5767 * Changed version number to 0.1.0: first 'public' release, sent to
5774 * Changed version number to 0.1.0: first 'public' release, sent to
5768 Nathan and Janko.
5775 Nathan and Janko.
5769
5776
5770 * Lots of small fixes and tweaks.
5777 * Lots of small fixes and tweaks.
5771
5778
5772 * Minor changes to whos format. Now strings are shown, snipped if
5779 * Minor changes to whos format. Now strings are shown, snipped if
5773 too long.
5780 too long.
5774
5781
5775 * Changed ShellServices to work on __main__ so they show up in @who
5782 * Changed ShellServices to work on __main__ so they show up in @who
5776
5783
5777 * Help also works with ? at the end of a line:
5784 * Help also works with ? at the end of a line:
5778 ?sin and sin?
5785 ?sin and sin?
5779 both produce the same effect. This is nice, as often I use the
5786 both produce the same effect. This is nice, as often I use the
5780 tab-complete to find the name of a method, but I used to then have
5787 tab-complete to find the name of a method, but I used to then have
5781 to go to the beginning of the line to put a ? if I wanted more
5788 to go to the beginning of the line to put a ? if I wanted more
5782 info. Now I can just add the ? and hit return. Convenient.
5789 info. Now I can just add the ? and hit return. Convenient.
5783
5790
5784 2001-11-02 Fernando Perez <fperez@colorado.edu>
5791 2001-11-02 Fernando Perez <fperez@colorado.edu>
5785
5792
5786 * Python version check (>=2.1) added.
5793 * Python version check (>=2.1) added.
5787
5794
5788 * Added LazyPython documentation. At this point the docs are quite
5795 * Added LazyPython documentation. At this point the docs are quite
5789 a mess. A cleanup is in order.
5796 a mess. A cleanup is in order.
5790
5797
5791 * Auto-installer created. For some bizarre reason, the zipfiles
5798 * Auto-installer created. For some bizarre reason, the zipfiles
5792 module isn't working on my system. So I made a tar version
5799 module isn't working on my system. So I made a tar version
5793 (hopefully the command line options in various systems won't kill
5800 (hopefully the command line options in various systems won't kill
5794 me).
5801 me).
5795
5802
5796 * Fixes to Struct in genutils. Now all dictionary-like methods are
5803 * Fixes to Struct in genutils. Now all dictionary-like methods are
5797 protected (reasonably).
5804 protected (reasonably).
5798
5805
5799 * Added pager function to genutils and changed ? to print usage
5806 * Added pager function to genutils and changed ? to print usage
5800 note through it (it was too long).
5807 note through it (it was too long).
5801
5808
5802 * Added the LazyPython functionality. Works great! I changed the
5809 * Added the LazyPython functionality. Works great! I changed the
5803 auto-quote escape to ';', it's on home row and next to '. But
5810 auto-quote escape to ';', it's on home row and next to '. But
5804 both auto-quote and auto-paren (still /) escapes are command-line
5811 both auto-quote and auto-paren (still /) escapes are command-line
5805 parameters.
5812 parameters.
5806
5813
5807
5814
5808 2001-11-01 Fernando Perez <fperez@colorado.edu>
5815 2001-11-01 Fernando Perez <fperez@colorado.edu>
5809
5816
5810 * Version changed to 0.0.7. Fairly large change: configuration now
5817 * Version changed to 0.0.7. Fairly large change: configuration now
5811 is all stored in a directory, by default .ipython. There, all
5818 is all stored in a directory, by default .ipython. There, all
5812 config files have normal looking names (not .names)
5819 config files have normal looking names (not .names)
5813
5820
5814 * Version 0.0.6 Released first to Lucas and Archie as a test
5821 * Version 0.0.6 Released first to Lucas and Archie as a test
5815 run. Since it's the first 'semi-public' release, change version to
5822 run. Since it's the first 'semi-public' release, change version to
5816 > 0.0.6 for any changes now.
5823 > 0.0.6 for any changes now.
5817
5824
5818 * Stuff I had put in the ipplib.py changelog:
5825 * Stuff I had put in the ipplib.py changelog:
5819
5826
5820 Changes to InteractiveShell:
5827 Changes to InteractiveShell:
5821
5828
5822 - Made the usage message a parameter.
5829 - Made the usage message a parameter.
5823
5830
5824 - Require the name of the shell variable to be given. It's a bit
5831 - Require the name of the shell variable to be given. It's a bit
5825 of a hack, but allows the name 'shell' not to be hardwired in the
5832 of a hack, but allows the name 'shell' not to be hardwired in the
5826 magic (@) handler, which is problematic b/c it requires
5833 magic (@) handler, which is problematic b/c it requires
5827 polluting the global namespace with 'shell'. This in turn is
5834 polluting the global namespace with 'shell'. This in turn is
5828 fragile: if a user redefines a variable called shell, things
5835 fragile: if a user redefines a variable called shell, things
5829 break.
5836 break.
5830
5837
5831 - magic @: all functions available through @ need to be defined
5838 - magic @: all functions available through @ need to be defined
5832 as magic_<name>, even though they can be called simply as
5839 as magic_<name>, even though they can be called simply as
5833 @<name>. This allows the special command @magic to gather
5840 @<name>. This allows the special command @magic to gather
5834 information automatically about all existing magic functions,
5841 information automatically about all existing magic functions,
5835 even if they are run-time user extensions, by parsing the shell
5842 even if they are run-time user extensions, by parsing the shell
5836 instance __dict__ looking for special magic_ names.
5843 instance __dict__ looking for special magic_ names.
5837
5844
5838 - mainloop: added *two* local namespace parameters. This allows
5845 - mainloop: added *two* local namespace parameters. This allows
5839 the class to differentiate between parameters which were there
5846 the class to differentiate between parameters which were there
5840 before and after command line initialization was processed. This
5847 before and after command line initialization was processed. This
5841 way, later @who can show things loaded at startup by the
5848 way, later @who can show things loaded at startup by the
5842 user. This trick was necessary to make session saving/reloading
5849 user. This trick was necessary to make session saving/reloading
5843 really work: ideally after saving/exiting/reloading a session,
5850 really work: ideally after saving/exiting/reloading a session,
5844 *everything* should look the same, including the output of @who. I
5851 *everything* should look the same, including the output of @who. I
5845 was only able to make this work with this double namespace
5852 was only able to make this work with this double namespace
5846 trick.
5853 trick.
5847
5854
5848 - added a header to the logfile which allows (almost) full
5855 - added a header to the logfile which allows (almost) full
5849 session restoring.
5856 session restoring.
5850
5857
5851 - prepend lines beginning with @ or !, with a and log
5858 - prepend lines beginning with @ or !, with a and log
5852 them. Why? !lines: may be useful to know what you did @lines:
5859 them. Why? !lines: may be useful to know what you did @lines:
5853 they may affect session state. So when restoring a session, at
5860 they may affect session state. So when restoring a session, at
5854 least inform the user of their presence. I couldn't quite get
5861 least inform the user of their presence. I couldn't quite get
5855 them to properly re-execute, but at least the user is warned.
5862 them to properly re-execute, but at least the user is warned.
5856
5863
5857 * Started ChangeLog.
5864 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now