##// END OF EJS Templates
More informative message in ipy_user_conf import failure (suggest running %upgrade)...
vivainio -
Show More
@@ -1,85 +1,85 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """Release data for the IPython project.
2 """Release data for the IPython project.
3
3
4 $Id: Release.py 2010 2006-12-20 15:29:17Z vivainio $"""
4 $Id: Release.py 2012 2006-12-24 10:28:29Z vivainio $"""
5
5
6 #*****************************************************************************
6 #*****************************************************************************
7 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
7 # Copyright (C) 2001-2006 Fernando Perez <fperez@colorado.edu>
8 #
8 #
9 # Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and Nathaniel Gray
9 # Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and Nathaniel Gray
10 # <n8gray@caltech.edu>
10 # <n8gray@caltech.edu>
11 #
11 #
12 # Distributed under the terms of the BSD License. The full license is in
12 # Distributed under the terms of the BSD License. The full license is in
13 # the file COPYING, distributed as part of this software.
13 # the file COPYING, distributed as part of this software.
14 #*****************************************************************************
14 #*****************************************************************************
15
15
16 # Name of the package for release purposes. This is the name which labels
16 # Name of the package for release purposes. This is the name which labels
17 # the tarballs and RPMs made by distutils, so it's best to lowercase it.
17 # the tarballs and RPMs made by distutils, so it's best to lowercase it.
18 name = 'ipython'
18 name = 'ipython'
19
19
20 # For versions with substrings (like 0.6.16.svn), use an extra . to separate
20 # For versions with substrings (like 0.6.16.svn), use an extra . to separate
21 # the new substring. We have to avoid using either dashes or underscores,
21 # the new substring. We have to avoid using either dashes or underscores,
22 # because bdist_rpm does not accept dashes (an RPM) convention, and
22 # because bdist_rpm does not accept dashes (an RPM) convention, and
23 # bdist_deb does not accept underscores (a Debian convention).
23 # bdist_deb does not accept underscores (a Debian convention).
24
24
25 revision = '2007'
25 revision = '2010M'
26
26
27 version = '0.7.3'
27 #version = '0.7.3'
28
28
29 #version = '0.7.3rc2.r' + revision.rstrip('M')
29 version = '0.7.4.svn.r' + revision.rstrip('M')
30
30
31 description = "An enhanced interactive Python shell."
31 description = "An enhanced interactive Python shell."
32
32
33 long_description = \
33 long_description = \
34 """
34 """
35 IPython provides a replacement for the interactive Python interpreter with
35 IPython provides a replacement for the interactive Python interpreter with
36 extra functionality.
36 extra functionality.
37
37
38 Main features:
38 Main features:
39
39
40 * Comprehensive object introspection.
40 * Comprehensive object introspection.
41
41
42 * Input history, persistent across sessions.
42 * Input history, persistent across sessions.
43
43
44 * Caching of output results during a session with automatically generated
44 * Caching of output results during a session with automatically generated
45 references.
45 references.
46
46
47 * Readline based name completion.
47 * Readline based name completion.
48
48
49 * Extensible system of 'magic' commands for controlling the environment and
49 * Extensible system of 'magic' commands for controlling the environment and
50 performing many tasks related either to IPython or the operating system.
50 performing many tasks related either to IPython or the operating system.
51
51
52 * Configuration system with easy switching between different setups (simpler
52 * Configuration system with easy switching between different setups (simpler
53 than changing $PYTHONSTARTUP environment variables every time).
53 than changing $PYTHONSTARTUP environment variables every time).
54
54
55 * Session logging and reloading.
55 * Session logging and reloading.
56
56
57 * Extensible syntax processing for special purpose situations.
57 * Extensible syntax processing for special purpose situations.
58
58
59 * Access to the system shell with user-extensible alias system.
59 * Access to the system shell with user-extensible alias system.
60
60
61 * Easily embeddable in other Python programs.
61 * Easily embeddable in other Python programs.
62
62
63 * Integrated access to the pdb debugger and the Python profiler.
63 * Integrated access to the pdb debugger and the Python profiler.
64
64
65 The latest development version is always available at the IPython subversion
65 The latest development version is always available at the IPython subversion
66 repository_.
66 repository_.
67
67
68 .. _repository: http://ipython.scipy.org/svn/ipython/ipython/trunk#egg=ipython-dev
68 .. _repository: http://ipython.scipy.org/svn/ipython/ipython/trunk#egg=ipython-dev
69 """
69 """
70
70
71 license = 'BSD'
71 license = 'BSD'
72
72
73 authors = {'Fernando' : ('Fernando Perez','fperez@colorado.edu'),
73 authors = {'Fernando' : ('Fernando Perez','fperez@colorado.edu'),
74 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
74 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
75 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
75 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
76 'Ville' : ('Ville Vainio','vivainio@gmail.com')
76 'Ville' : ('Ville Vainio','vivainio@gmail.com')
77 }
77 }
78
78
79 url = 'http://ipython.scipy.org'
79 url = 'http://ipython.scipy.org'
80
80
81 download_url = 'http://ipython.scipy.org/dist'
81 download_url = 'http://ipython.scipy.org/dist'
82
82
83 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
83 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
84
84
85 keywords = ['Interactive','Interpreter','Shell']
85 keywords = ['Interactive','Interpreter','Shell']
@@ -1,336 +1,351 b''
1 ''' IPython customization API
1 ''' IPython customization API
2
2
3 Your one-stop module for configuring & extending ipython
3 Your one-stop module for configuring & extending ipython
4
4
5 The API will probably break when ipython 1.0 is released, but so
5 The API will probably break when ipython 1.0 is released, but so
6 will the other configuration method (rc files).
6 will the other configuration method (rc files).
7
7
8 All names prefixed by underscores are for internal use, not part
8 All names prefixed by underscores are for internal use, not part
9 of the public api.
9 of the public api.
10
10
11 Below is an example that you can just put to a module and import from ipython.
11 Below is an example that you can just put to a module and import from ipython.
12
12
13 A good practice is to install the config script below as e.g.
13 A good practice is to install the config script below as e.g.
14
14
15 ~/.ipython/my_private_conf.py
15 ~/.ipython/my_private_conf.py
16
16
17 And do
17 And do
18
18
19 import_mod my_private_conf
19 import_mod my_private_conf
20
20
21 in ~/.ipython/ipythonrc
21 in ~/.ipython/ipythonrc
22
22
23 That way the module is imported at startup and you can have all your
23 That way the module is imported at startup and you can have all your
24 personal configuration (as opposed to boilerplate ipythonrc-PROFILENAME
24 personal configuration (as opposed to boilerplate ipythonrc-PROFILENAME
25 stuff) in there.
25 stuff) in there.
26
26
27 -----------------------------------------------
27 -----------------------------------------------
28 import IPython.ipapi
28 import IPython.ipapi
29 ip = IPython.ipapi.get()
29 ip = IPython.ipapi.get()
30
30
31 def ankka_f(self, arg):
31 def ankka_f(self, arg):
32 print "Ankka",self,"says uppercase:",arg.upper()
32 print "Ankka",self,"says uppercase:",arg.upper()
33
33
34 ip.expose_magic("ankka",ankka_f)
34 ip.expose_magic("ankka",ankka_f)
35
35
36 ip.magic('alias sayhi echo "Testing, hi ok"')
36 ip.magic('alias sayhi echo "Testing, hi ok"')
37 ip.magic('alias helloworld echo "Hello world"')
37 ip.magic('alias helloworld echo "Hello world"')
38 ip.system('pwd')
38 ip.system('pwd')
39
39
40 ip.ex('import re')
40 ip.ex('import re')
41 ip.ex("""
41 ip.ex("""
42 def funcci(a,b):
42 def funcci(a,b):
43 print a+b
43 print a+b
44 print funcci(3,4)
44 print funcci(3,4)
45 """)
45 """)
46 ip.ex("funcci(348,9)")
46 ip.ex("funcci(348,9)")
47
47
48 def jed_editor(self,filename, linenum=None):
48 def jed_editor(self,filename, linenum=None):
49 print "Calling my own editor, jed ... via hook!"
49 print "Calling my own editor, jed ... via hook!"
50 import os
50 import os
51 if linenum is None: linenum = 0
51 if linenum is None: linenum = 0
52 os.system('jed +%d %s' % (linenum, filename))
52 os.system('jed +%d %s' % (linenum, filename))
53 print "exiting jed"
53 print "exiting jed"
54
54
55 ip.set_hook('editor',jed_editor)
55 ip.set_hook('editor',jed_editor)
56
56
57 o = ip.options
57 o = ip.options
58 o.autocall = 2 # FULL autocall mode
58 o.autocall = 2 # FULL autocall mode
59
59
60 print "done!"
60 print "done!"
61 '''
61 '''
62
62
63 # stdlib imports
63 # stdlib imports
64 import __builtin__
64 import __builtin__
65 import sys
65 import sys
66
66
67 # our own
67 # our own
68 from IPython.genutils import warn,error
68 from IPython.genutils import warn,error
69
69
70 class TryNext(Exception):
70 class TryNext(Exception):
71 """Try next hook exception.
71 """Try next hook exception.
72
72
73 Raise this in your hook function to indicate that the next hook handler
73 Raise this in your hook function to indicate that the next hook handler
74 should be used to handle the operation. If you pass arguments to the
74 should be used to handle the operation. If you pass arguments to the
75 constructor those arguments will be used by the next hook instead of the
75 constructor those arguments will be used by the next hook instead of the
76 original ones.
76 original ones.
77 """
77 """
78
78
79 def __init__(self, *args, **kwargs):
79 def __init__(self, *args, **kwargs):
80 self.args = args
80 self.args = args
81 self.kwargs = kwargs
81 self.kwargs = kwargs
82
82
83 # contains the most recently instantiated IPApi
83 # contains the most recently instantiated IPApi
84
84
85 class IPythonNotRunning:
85 class IPythonNotRunning:
86 """Dummy do-nothing class.
86 """Dummy do-nothing class.
87
87
88 Instances of this class return a dummy attribute on all accesses, which
88 Instances of this class return a dummy attribute on all accesses, which
89 can be called and warns. This makes it easier to write scripts which use
89 can be called and warns. This makes it easier to write scripts which use
90 the ipapi.get() object for informational purposes to operate both with and
90 the ipapi.get() object for informational purposes to operate both with and
91 without ipython. Obviously code which uses the ipython object for
91 without ipython. Obviously code which uses the ipython object for
92 computations will not work, but this allows a wider range of code to
92 computations will not work, but this allows a wider range of code to
93 transparently work whether ipython is being used or not."""
93 transparently work whether ipython is being used or not."""
94
94
95 def __str__(self):
95 def __str__(self):
96 return "<IPythonNotRunning>"
96 return "<IPythonNotRunning>"
97
97
98 __repr__ = __str__
98 __repr__ = __str__
99
99
100 def __getattr__(self,name):
100 def __getattr__(self,name):
101 return self.dummy
101 return self.dummy
102
102
103 def dummy(self,*args,**kw):
103 def dummy(self,*args,**kw):
104 """Dummy function, which doesn't do anything but warn."""
104 """Dummy function, which doesn't do anything but warn."""
105 warn("IPython is not running, this is a dummy no-op function")
105 warn("IPython is not running, this is a dummy no-op function")
106
106
107 _recent = None
107 _recent = None
108
108
109
109
110 def get(allow_dummy=False):
110 def get(allow_dummy=False):
111 """Get an IPApi object.
111 """Get an IPApi object.
112
112
113 If allow_dummy is true, returns an instance of IPythonNotRunning
113 If allow_dummy is true, returns an instance of IPythonNotRunning
114 instead of None if not running under IPython.
114 instead of None if not running under IPython.
115
115
116 Running this should be the first thing you do when writing extensions that
116 Running this should be the first thing you do when writing extensions that
117 can be imported as normal modules. You can then direct all the
117 can be imported as normal modules. You can then direct all the
118 configuration operations against the returned object.
118 configuration operations against the returned object.
119 """
119 """
120 global _recent
120 global _recent
121 if allow_dummy and not _recent:
121 if allow_dummy and not _recent:
122 _recent = IPythonNotRunning()
122 _recent = IPythonNotRunning()
123 return _recent
123 return _recent
124
124
125 class IPApi:
125 class IPApi:
126 """ The actual API class for configuring IPython
126 """ The actual API class for configuring IPython
127
127
128 You should do all of the IPython configuration by getting an IPApi object
128 You should do all of the IPython configuration by getting an IPApi object
129 with IPython.ipapi.get() and using the attributes and methods of the
129 with IPython.ipapi.get() and using the attributes and methods of the
130 returned object."""
130 returned object."""
131
131
132 def __init__(self,ip):
132 def __init__(self,ip):
133
133
134 # All attributes exposed here are considered to be the public API of
134 # All attributes exposed here are considered to be the public API of
135 # IPython. As needs dictate, some of these may be wrapped as
135 # IPython. As needs dictate, some of these may be wrapped as
136 # properties.
136 # properties.
137
137
138 self.magic = ip.ipmagic
138 self.magic = ip.ipmagic
139
139
140 self.system = ip.ipsystem
140 self.system = ip.ipsystem
141
141
142 self.set_hook = ip.set_hook
142 self.set_hook = ip.set_hook
143
143
144 self.set_custom_exc = ip.set_custom_exc
144 self.set_custom_exc = ip.set_custom_exc
145
145
146 self.user_ns = ip.user_ns
146 self.user_ns = ip.user_ns
147
147
148 self.set_crash_handler = ip.set_crash_handler
148 self.set_crash_handler = ip.set_crash_handler
149
149
150 # Session-specific data store, which can be used to store
150 # Session-specific data store, which can be used to store
151 # data that should persist through the ipython session.
151 # data that should persist through the ipython session.
152 self.meta = ip.meta
152 self.meta = ip.meta
153
153
154 # The ipython instance provided
154 # The ipython instance provided
155 self.IP = ip
155 self.IP = ip
156
156
157 global _recent
157 global _recent
158 _recent = self
158 _recent = self
159
159
160 # Use a property for some things which are added to the instance very
160 # Use a property for some things which are added to the instance very
161 # late. I don't have time right now to disentangle the initialization
161 # late. I don't have time right now to disentangle the initialization
162 # order issues, so a property lets us delay item extraction while
162 # order issues, so a property lets us delay item extraction while
163 # providing a normal attribute API.
163 # providing a normal attribute API.
164 def get_db(self):
164 def get_db(self):
165 """A handle to persistent dict-like database (a PickleShareDB object)"""
165 """A handle to persistent dict-like database (a PickleShareDB object)"""
166 return self.IP.db
166 return self.IP.db
167
167
168 db = property(get_db,None,None,get_db.__doc__)
168 db = property(get_db,None,None,get_db.__doc__)
169
169
170 def get_options(self):
170 def get_options(self):
171 """All configurable variables."""
171 """All configurable variables."""
172
172
173 # catch typos by disabling new attribute creation. If new attr creation
173 # catch typos by disabling new attribute creation. If new attr creation
174 # is in fact wanted (e.g. when exposing new options), do allow_new_attr(True)
174 # is in fact wanted (e.g. when exposing new options), do allow_new_attr(True)
175 # for the received rc struct.
175 # for the received rc struct.
176
176
177 self.IP.rc.allow_new_attr(False)
177 self.IP.rc.allow_new_attr(False)
178 return self.IP.rc
178 return self.IP.rc
179
179
180 options = property(get_options,None,None,get_options.__doc__)
180 options = property(get_options,None,None,get_options.__doc__)
181
181
182 def expose_magic(self,magicname, func):
182 def expose_magic(self,magicname, func):
183 ''' Expose own function as magic function for ipython
183 ''' Expose own function as magic function for ipython
184
184
185 def foo_impl(self,parameter_s=''):
185 def foo_impl(self,parameter_s=''):
186 """My very own magic!. (Use docstrings, IPython reads them)."""
186 """My very own magic!. (Use docstrings, IPython reads them)."""
187 print 'Magic function. Passed parameter is between < >: <'+parameter_s+'>'
187 print 'Magic function. Passed parameter is between < >: <'+parameter_s+'>'
188 print 'The self object is:',self
188 print 'The self object is:',self
189
189
190 ipapi.expose_magic("foo",foo_impl)
190 ipapi.expose_magic("foo",foo_impl)
191 '''
191 '''
192
192
193 import new
193 import new
194 im = new.instancemethod(func,self.IP, self.IP.__class__)
194 im = new.instancemethod(func,self.IP, self.IP.__class__)
195 setattr(self.IP, "magic_" + magicname, im)
195 setattr(self.IP, "magic_" + magicname, im)
196
196
197 def ex(self,cmd):
197 def ex(self,cmd):
198 """ Execute a normal python statement in user namespace """
198 """ Execute a normal python statement in user namespace """
199 exec cmd in self.user_ns
199 exec cmd in self.user_ns
200
200
201 def ev(self,expr):
201 def ev(self,expr):
202 """ Evaluate python expression expr in user namespace
202 """ Evaluate python expression expr in user namespace
203
203
204 Returns the result of evaluation"""
204 Returns the result of evaluation"""
205 return eval(expr,self.user_ns)
205 return eval(expr,self.user_ns)
206
206
207 def runlines(self,lines):
207 def runlines(self,lines):
208 """ Run the specified lines in interpreter, honoring ipython directives.
208 """ Run the specified lines in interpreter, honoring ipython directives.
209
209
210 This allows %magic and !shell escape notations.
210 This allows %magic and !shell escape notations.
211
211
212 Takes either all lines in one string or list of lines.
212 Takes either all lines in one string or list of lines.
213 """
213 """
214 if isinstance(lines,basestring):
214 if isinstance(lines,basestring):
215 self.IP.runlines(lines)
215 self.IP.runlines(lines)
216 else:
216 else:
217 self.IP.runlines('\n'.join(lines))
217 self.IP.runlines('\n'.join(lines))
218
218
219 def to_user_ns(self,vars):
219 def to_user_ns(self,vars):
220 """Inject a group of variables into the IPython user namespace.
220 """Inject a group of variables into the IPython user namespace.
221
221
222 Inputs:
222 Inputs:
223
223
224 - vars: string with variable names separated by whitespace
224 - vars: string with variable names separated by whitespace
225
225
226 This utility routine is meant to ease interactive debugging work,
226 This utility routine is meant to ease interactive debugging work,
227 where you want to easily propagate some internal variable in your code
227 where you want to easily propagate some internal variable in your code
228 up to the interactive namespace for further exploration.
228 up to the interactive namespace for further exploration.
229
229
230 When you run code via %run, globals in your script become visible at
230 When you run code via %run, globals in your script become visible at
231 the interactive prompt, but this doesn't happen for locals inside your
231 the interactive prompt, but this doesn't happen for locals inside your
232 own functions and methods. Yet when debugging, it is common to want
232 own functions and methods. Yet when debugging, it is common to want
233 to explore some internal variables further at the interactive propmt.
233 to explore some internal variables further at the interactive propmt.
234
234
235 Examples:
235 Examples:
236
236
237 To use this, you first must obtain a handle on the ipython object as
237 To use this, you first must obtain a handle on the ipython object as
238 indicated above, via:
238 indicated above, via:
239
239
240 import IPython.ipapi
240 import IPython.ipapi
241 ip = IPython.ipapi.get()
241 ip = IPython.ipapi.get()
242
242
243 Once this is done, inside a routine foo() where you want to expose
243 Once this is done, inside a routine foo() where you want to expose
244 variables x and y, you do the following:
244 variables x and y, you do the following:
245
245
246 def foo():
246 def foo():
247 ...
247 ...
248 x = your_computation()
248 x = your_computation()
249 y = something_else()
249 y = something_else()
250
250
251 # This pushes x and y to the interactive prompt immediately, even
251 # This pushes x and y to the interactive prompt immediately, even
252 # if this routine crashes on the next line after:
252 # if this routine crashes on the next line after:
253 ip.to_user_ns('x y')
253 ip.to_user_ns('x y')
254 ...
254 ...
255 # return
255 # return
256
256
257 If you need to rename variables, just use ip.user_ns with dict
257 If you need to rename variables, just use ip.user_ns with dict
258 and update:
258 and update:
259
259
260 # exposes variables 'foo' as 'x' and 'bar' as 'y' in IPython
260 # exposes variables 'foo' as 'x' and 'bar' as 'y' in IPython
261 # user namespace
261 # user namespace
262 ip.user_ns.update(dict(x=foo,y=bar))
262 ip.user_ns.update(dict(x=foo,y=bar))
263 """
263 """
264
264
265 # print 'vars given:',vars # dbg
265 # print 'vars given:',vars # dbg
266 # Get the caller's frame to evaluate the given names in
266 # Get the caller's frame to evaluate the given names in
267 cf = sys._getframe(1)
267 cf = sys._getframe(1)
268
268
269 user_ns = self.user_ns
269 user_ns = self.user_ns
270
270
271 for name in vars.split():
271 for name in vars.split():
272 try:
272 try:
273 user_ns[name] = eval(name,cf.f_globals,cf.f_locals)
273 user_ns[name] = eval(name,cf.f_globals,cf.f_locals)
274 except:
274 except:
275 error('could not get var. %s from %s' %
275 error('could not get var. %s from %s' %
276 (name,cf.f_code.co_name))
276 (name,cf.f_code.co_name))
277
277
278 def expand_alias(self,line):
279 """ Expand an alias in the command line
280
281 Returns the provided command line, possibly with the first word
282 (command) translated according to alias expansion rules.
283
284 [ipython]|16> _ip.expand_aliases("np myfile.txt")
285 <16> 'q:/opt/np/notepad++.exe myfile.txt'
286 """
287
288 pre,fn,rest = self.IP.split_user_input(line)
289 res = pre + self.IP.expand_aliases(fn,rest)
290
291
292
278 def launch_new_instance(user_ns = None):
293 def launch_new_instance(user_ns = None):
279 """ Make and start a new ipython instance.
294 """ Make and start a new ipython instance.
280
295
281 This can be called even without having an already initialized
296 This can be called even without having an already initialized
282 ipython session running.
297 ipython session running.
283
298
284 This is also used as the egg entry point for the 'ipython' script.
299 This is also used as the egg entry point for the 'ipython' script.
285
300
286 """
301 """
287 ses = make_session(user_ns)
302 ses = make_session(user_ns)
288 ses.mainloop()
303 ses.mainloop()
289
304
290
305
291 def make_user_ns(user_ns = None):
306 def make_user_ns(user_ns = None):
292 """Return a valid user interactive namespace.
307 """Return a valid user interactive namespace.
293
308
294 This builds a dict with the minimal information needed to operate as a
309 This builds a dict with the minimal information needed to operate as a
295 valid IPython user namespace, which you can pass to the various embedding
310 valid IPython user namespace, which you can pass to the various embedding
296 classes in ipython.
311 classes in ipython.
297 """
312 """
298
313
299 if user_ns is None:
314 if user_ns is None:
300 # Set __name__ to __main__ to better match the behavior of the
315 # Set __name__ to __main__ to better match the behavior of the
301 # normal interpreter.
316 # normal interpreter.
302 user_ns = {'__name__' :'__main__',
317 user_ns = {'__name__' :'__main__',
303 '__builtins__' : __builtin__,
318 '__builtins__' : __builtin__,
304 }
319 }
305 else:
320 else:
306 user_ns.setdefault('__name__','__main__')
321 user_ns.setdefault('__name__','__main__')
307 user_ns.setdefault('__builtins__',__builtin__)
322 user_ns.setdefault('__builtins__',__builtin__)
308
323
309 return user_ns
324 return user_ns
310
325
311
326
312 def make_user_global_ns(ns = None):
327 def make_user_global_ns(ns = None):
313 """Return a valid user global namespace.
328 """Return a valid user global namespace.
314
329
315 Similar to make_user_ns(), but global namespaces are really only needed in
330 Similar to make_user_ns(), but global namespaces are really only needed in
316 embedded applications, where there is a distinction between the user's
331 embedded applications, where there is a distinction between the user's
317 interactive namespace and the global one where ipython is running."""
332 interactive namespace and the global one where ipython is running."""
318
333
319 if ns is None: ns = {}
334 if ns is None: ns = {}
320 return ns
335 return ns
321
336
322
337
323 def make_session(user_ns = None):
338 def make_session(user_ns = None):
324 """Makes, but does not launch an IPython session.
339 """Makes, but does not launch an IPython session.
325
340
326 Later on you can call obj.mainloop() on the returned object.
341 Later on you can call obj.mainloop() on the returned object.
327
342
328 Inputs:
343 Inputs:
329
344
330 - user_ns(None): a dict to be used as the user's namespace with initial
345 - user_ns(None): a dict to be used as the user's namespace with initial
331 data.
346 data.
332
347
333 WARNING: This should *not* be run when a session exists already."""
348 WARNING: This should *not* be run when a session exists already."""
334
349
335 import IPython
350 import IPython
336 return IPython.Shell.start(user_ns)
351 return IPython.Shell.start(user_ns)
@@ -1,755 +1,755 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 IPython -- An enhanced Interactive Python
3 IPython -- An enhanced Interactive Python
4
4
5 Requires Python 2.1 or better.
5 Requires Python 2.1 or better.
6
6
7 This file contains the main make_IPython() starter function.
7 This file contains the main make_IPython() starter function.
8
8
9 $Id: ipmaker.py 1979 2006-12-12 18:50:20Z vivainio $"""
9 $Id: ipmaker.py 2012 2006-12-24 10:28:29Z vivainio $"""
10
10
11 #*****************************************************************************
11 #*****************************************************************************
12 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
12 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
13 #
13 #
14 # Distributed under the terms of the BSD License. The full license is in
14 # Distributed under the terms of the BSD License. The full license is in
15 # the file COPYING, distributed as part of this software.
15 # the file COPYING, distributed as part of this software.
16 #*****************************************************************************
16 #*****************************************************************************
17
17
18 from IPython import Release
18 from IPython import Release
19 __author__ = '%s <%s>' % Release.authors['Fernando']
19 __author__ = '%s <%s>' % Release.authors['Fernando']
20 __license__ = Release.license
20 __license__ = Release.license
21 __version__ = Release.version
21 __version__ = Release.version
22
22
23 credits._Printer__data = """
23 credits._Printer__data = """
24 Python: %s
24 Python: %s
25
25
26 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
26 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
27 See http://ipython.scipy.org for more information.""" \
27 See http://ipython.scipy.org for more information.""" \
28 % credits._Printer__data
28 % credits._Printer__data
29
29
30 copyright._Printer__data += """
30 copyright._Printer__data += """
31
31
32 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
32 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
33 All Rights Reserved."""
33 All Rights Reserved."""
34
34
35 #****************************************************************************
35 #****************************************************************************
36 # Required modules
36 # Required modules
37
37
38 # From the standard library
38 # From the standard library
39 import __main__
39 import __main__
40 import __builtin__
40 import __builtin__
41 import os
41 import os
42 import re
42 import re
43 import sys
43 import sys
44 import types
44 import types
45 from pprint import pprint,pformat
45 from pprint import pprint,pformat
46
46
47 # Our own
47 # Our own
48 from IPython import DPyGetOpt
48 from IPython import DPyGetOpt
49 from IPython.ipstruct import Struct
49 from IPython.ipstruct import Struct
50 from IPython.OutputTrap import OutputTrap
50 from IPython.OutputTrap import OutputTrap
51 from IPython.ConfigLoader import ConfigLoader
51 from IPython.ConfigLoader import ConfigLoader
52 from IPython.iplib import InteractiveShell
52 from IPython.iplib import InteractiveShell
53 from IPython.usage import cmd_line_usage,interactive_usage
53 from IPython.usage import cmd_line_usage,interactive_usage
54 from IPython.genutils import *
54 from IPython.genutils import *
55
55
56 #-----------------------------------------------------------------------------
56 #-----------------------------------------------------------------------------
57 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
57 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
58 rc_override=None,shell_class=InteractiveShell,
58 rc_override=None,shell_class=InteractiveShell,
59 embedded=False,**kw):
59 embedded=False,**kw):
60 """This is a dump of IPython into a single function.
60 """This is a dump of IPython into a single function.
61
61
62 Later it will have to be broken up in a sensible manner.
62 Later it will have to be broken up in a sensible manner.
63
63
64 Arguments:
64 Arguments:
65
65
66 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
66 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
67 script name, b/c DPyGetOpt strips the first argument only for the real
67 script name, b/c DPyGetOpt strips the first argument only for the real
68 sys.argv.
68 sys.argv.
69
69
70 - user_ns: a dict to be used as the user's namespace."""
70 - user_ns: a dict to be used as the user's namespace."""
71
71
72 #----------------------------------------------------------------------
72 #----------------------------------------------------------------------
73 # Defaults and initialization
73 # Defaults and initialization
74
74
75 # For developer debugging, deactivates crash handler and uses pdb.
75 # For developer debugging, deactivates crash handler and uses pdb.
76 DEVDEBUG = False
76 DEVDEBUG = False
77
77
78 if argv is None:
78 if argv is None:
79 argv = sys.argv
79 argv = sys.argv
80
80
81 # __IP is the main global that lives throughout and represents the whole
81 # __IP is the main global that lives throughout and represents the whole
82 # application. If the user redefines it, all bets are off as to what
82 # application. If the user redefines it, all bets are off as to what
83 # happens.
83 # happens.
84
84
85 # __IP is the name of he global which the caller will have accessible as
85 # __IP is the name of he global which the caller will have accessible as
86 # __IP.name. We set its name via the first parameter passed to
86 # __IP.name. We set its name via the first parameter passed to
87 # InteractiveShell:
87 # InteractiveShell:
88
88
89 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
89 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
90 embedded=embedded,**kw)
90 embedded=embedded,**kw)
91
91
92 # Put 'help' in the user namespace
92 # Put 'help' in the user namespace
93 from site import _Helper
93 from site import _Helper
94 IP.user_ns['help'] = _Helper()
94 IP.user_ns['help'] = _Helper()
95
95
96
96
97 if DEVDEBUG:
97 if DEVDEBUG:
98 # For developer debugging only (global flag)
98 # For developer debugging only (global flag)
99 from IPython import ultraTB
99 from IPython import ultraTB
100 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
100 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
101
101
102 IP.BANNER_PARTS = ['Python %s\n'
102 IP.BANNER_PARTS = ['Python %s\n'
103 'Type "copyright", "credits" or "license" '
103 'Type "copyright", "credits" or "license" '
104 'for more information.\n'
104 'for more information.\n'
105 % (sys.version.split('\n')[0],),
105 % (sys.version.split('\n')[0],),
106 "IPython %s -- An enhanced Interactive Python."
106 "IPython %s -- An enhanced Interactive Python."
107 % (__version__,),
107 % (__version__,),
108 """? -> Introduction to IPython's features.
108 """? -> Introduction to IPython's features.
109 %magic -> Information about IPython's 'magic' % functions.
109 %magic -> Information about IPython's 'magic' % functions.
110 help -> Python's own help system.
110 help -> Python's own help system.
111 object? -> Details about 'object'. ?object also works, ?? prints more.
111 object? -> Details about 'object'. ?object also works, ?? prints more.
112 """ ]
112 """ ]
113
113
114 IP.usage = interactive_usage
114 IP.usage = interactive_usage
115
115
116 # Platform-dependent suffix and directory names. We use _ipython instead
116 # Platform-dependent suffix and directory names. We use _ipython instead
117 # of .ipython under win32 b/c there's software that breaks with .named
117 # of .ipython under win32 b/c there's software that breaks with .named
118 # directories on that platform.
118 # directories on that platform.
119 if os.name == 'posix':
119 if os.name == 'posix':
120 rc_suffix = ''
120 rc_suffix = ''
121 ipdir_def = '.ipython'
121 ipdir_def = '.ipython'
122 else:
122 else:
123 rc_suffix = '.ini'
123 rc_suffix = '.ini'
124 ipdir_def = '_ipython'
124 ipdir_def = '_ipython'
125
125
126 # default directory for configuration
126 # default directory for configuration
127 ipythondir_def = os.path.abspath(os.environ.get('IPYTHONDIR',
127 ipythondir_def = os.path.abspath(os.environ.get('IPYTHONDIR',
128 os.path.join(IP.home_dir,ipdir_def)))
128 os.path.join(IP.home_dir,ipdir_def)))
129
129
130 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
130 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
131
131
132 # we need the directory where IPython itself is installed
132 # we need the directory where IPython itself is installed
133 import IPython
133 import IPython
134 IPython_dir = os.path.dirname(IPython.__file__)
134 IPython_dir = os.path.dirname(IPython.__file__)
135 del IPython
135 del IPython
136
136
137 #-------------------------------------------------------------------------
137 #-------------------------------------------------------------------------
138 # Command line handling
138 # Command line handling
139
139
140 # Valid command line options (uses DPyGetOpt syntax, like Perl's
140 # Valid command line options (uses DPyGetOpt syntax, like Perl's
141 # GetOpt::Long)
141 # GetOpt::Long)
142
142
143 # Any key not listed here gets deleted even if in the file (like session
143 # Any key not listed here gets deleted even if in the file (like session
144 # or profile). That's deliberate, to maintain the rc namespace clean.
144 # or profile). That's deliberate, to maintain the rc namespace clean.
145
145
146 # Each set of options appears twice: under _conv only the names are
146 # Each set of options appears twice: under _conv only the names are
147 # listed, indicating which type they must be converted to when reading the
147 # listed, indicating which type they must be converted to when reading the
148 # ipythonrc file. And under DPyGetOpt they are listed with the regular
148 # ipythonrc file. And under DPyGetOpt they are listed with the regular
149 # DPyGetOpt syntax (=s,=i,:f,etc).
149 # DPyGetOpt syntax (=s,=i,:f,etc).
150
150
151 # Make sure there's a space before each end of line (they get auto-joined!)
151 # Make sure there's a space before each end of line (they get auto-joined!)
152 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
152 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
153 'c=s classic|cl color_info! colors=s confirm_exit! '
153 'c=s classic|cl color_info! colors=s confirm_exit! '
154 'debug! deep_reload! editor=s log|l messages! nosep '
154 'debug! deep_reload! editor=s log|l messages! nosep '
155 'object_info_string_level=i pdb! '
155 'object_info_string_level=i pdb! '
156 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
156 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
157 'quick screen_length|sl=i prompts_pad_left=i '
157 'quick screen_length|sl=i prompts_pad_left=i '
158 'logfile|lf=s logplay|lp=s profile|p=s '
158 'logfile|lf=s logplay|lp=s profile|p=s '
159 'readline! readline_merge_completions! '
159 'readline! readline_merge_completions! '
160 'readline_omit__names! '
160 'readline_omit__names! '
161 'rcfile=s separate_in|si=s separate_out|so=s '
161 'rcfile=s separate_in|si=s separate_out|so=s '
162 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
162 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
163 'magic_docstrings system_verbose! '
163 'magic_docstrings system_verbose! '
164 'multi_line_specials! '
164 'multi_line_specials! '
165 'wxversion=s '
165 'wxversion=s '
166 'autoedit_syntax!')
166 'autoedit_syntax!')
167
167
168 # Options that can *only* appear at the cmd line (not in rcfiles).
168 # Options that can *only* appear at the cmd line (not in rcfiles).
169
169
170 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
170 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
171 # the 'C-c !' command in emacs automatically appends a -i option at the end.
171 # the 'C-c !' command in emacs automatically appends a -i option at the end.
172 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
172 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
173 'gthread! qthread! q4thread! wthread! pylab! tk!')
173 'gthread! qthread! q4thread! wthread! pylab! tk!')
174
174
175 # Build the actual name list to be used by DPyGetOpt
175 # Build the actual name list to be used by DPyGetOpt
176 opts_names = qw(cmdline_opts) + qw(cmdline_only)
176 opts_names = qw(cmdline_opts) + qw(cmdline_only)
177
177
178 # Set sensible command line defaults.
178 # Set sensible command line defaults.
179 # This should have everything from cmdline_opts and cmdline_only
179 # This should have everything from cmdline_opts and cmdline_only
180 opts_def = Struct(autocall = 1,
180 opts_def = Struct(autocall = 1,
181 autoedit_syntax = 0,
181 autoedit_syntax = 0,
182 autoindent = 0,
182 autoindent = 0,
183 automagic = 1,
183 automagic = 1,
184 banner = 1,
184 banner = 1,
185 cache_size = 1000,
185 cache_size = 1000,
186 c = '',
186 c = '',
187 classic = 0,
187 classic = 0,
188 colors = 'NoColor',
188 colors = 'NoColor',
189 color_info = 0,
189 color_info = 0,
190 confirm_exit = 1,
190 confirm_exit = 1,
191 debug = 0,
191 debug = 0,
192 deep_reload = 0,
192 deep_reload = 0,
193 editor = '0',
193 editor = '0',
194 help = 0,
194 help = 0,
195 ignore = 0,
195 ignore = 0,
196 ipythondir = ipythondir_def,
196 ipythondir = ipythondir_def,
197 log = 0,
197 log = 0,
198 logfile = '',
198 logfile = '',
199 logplay = '',
199 logplay = '',
200 multi_line_specials = 1,
200 multi_line_specials = 1,
201 messages = 1,
201 messages = 1,
202 object_info_string_level = 0,
202 object_info_string_level = 0,
203 nosep = 0,
203 nosep = 0,
204 pdb = 0,
204 pdb = 0,
205 pprint = 0,
205 pprint = 0,
206 profile = '',
206 profile = '',
207 prompt_in1 = 'In [\\#]: ',
207 prompt_in1 = 'In [\\#]: ',
208 prompt_in2 = ' .\\D.: ',
208 prompt_in2 = ' .\\D.: ',
209 prompt_out = 'Out[\\#]: ',
209 prompt_out = 'Out[\\#]: ',
210 prompts_pad_left = 1,
210 prompts_pad_left = 1,
211 quiet = 0,
211 quiet = 0,
212 quick = 0,
212 quick = 0,
213 readline = 1,
213 readline = 1,
214 readline_merge_completions = 1,
214 readline_merge_completions = 1,
215 readline_omit__names = 0,
215 readline_omit__names = 0,
216 rcfile = 'ipythonrc' + rc_suffix,
216 rcfile = 'ipythonrc' + rc_suffix,
217 screen_length = 0,
217 screen_length = 0,
218 separate_in = '\n',
218 separate_in = '\n',
219 separate_out = '\n',
219 separate_out = '\n',
220 separate_out2 = '',
220 separate_out2 = '',
221 system_header = 'IPython system call: ',
221 system_header = 'IPython system call: ',
222 system_verbose = 0,
222 system_verbose = 0,
223 gthread = 0,
223 gthread = 0,
224 qthread = 0,
224 qthread = 0,
225 q4thread = 0,
225 q4thread = 0,
226 wthread = 0,
226 wthread = 0,
227 pylab = 0,
227 pylab = 0,
228 tk = 0,
228 tk = 0,
229 upgrade = 0,
229 upgrade = 0,
230 Version = 0,
230 Version = 0,
231 xmode = 'Verbose',
231 xmode = 'Verbose',
232 wildcards_case_sensitive = 1,
232 wildcards_case_sensitive = 1,
233 wxversion = '0',
233 wxversion = '0',
234 magic_docstrings = 0, # undocumented, for doc generation
234 magic_docstrings = 0, # undocumented, for doc generation
235 )
235 )
236
236
237 # Things that will *only* appear in rcfiles (not at the command line).
237 # Things that will *only* appear in rcfiles (not at the command line).
238 # Make sure there's a space before each end of line (they get auto-joined!)
238 # Make sure there's a space before each end of line (they get auto-joined!)
239 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
239 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
240 qw_lol: 'import_some ',
240 qw_lol: 'import_some ',
241 # for things with embedded whitespace:
241 # for things with embedded whitespace:
242 list_strings:'execute alias readline_parse_and_bind ',
242 list_strings:'execute alias readline_parse_and_bind ',
243 # Regular strings need no conversion:
243 # Regular strings need no conversion:
244 None:'readline_remove_delims ',
244 None:'readline_remove_delims ',
245 }
245 }
246 # Default values for these
246 # Default values for these
247 rc_def = Struct(include = [],
247 rc_def = Struct(include = [],
248 import_mod = [],
248 import_mod = [],
249 import_all = [],
249 import_all = [],
250 import_some = [[]],
250 import_some = [[]],
251 execute = [],
251 execute = [],
252 execfile = [],
252 execfile = [],
253 alias = [],
253 alias = [],
254 readline_parse_and_bind = [],
254 readline_parse_and_bind = [],
255 readline_remove_delims = '',
255 readline_remove_delims = '',
256 )
256 )
257
257
258 # Build the type conversion dictionary from the above tables:
258 # Build the type conversion dictionary from the above tables:
259 typeconv = rcfile_opts.copy()
259 typeconv = rcfile_opts.copy()
260 typeconv.update(optstr2types(cmdline_opts))
260 typeconv.update(optstr2types(cmdline_opts))
261
261
262 # FIXME: the None key appears in both, put that back together by hand. Ugly!
262 # FIXME: the None key appears in both, put that back together by hand. Ugly!
263 typeconv[None] += ' ' + rcfile_opts[None]
263 typeconv[None] += ' ' + rcfile_opts[None]
264
264
265 # Remove quotes at ends of all strings (used to protect spaces)
265 # Remove quotes at ends of all strings (used to protect spaces)
266 typeconv[unquote_ends] = typeconv[None]
266 typeconv[unquote_ends] = typeconv[None]
267 del typeconv[None]
267 del typeconv[None]
268
268
269 # Build the list we'll use to make all config decisions with defaults:
269 # Build the list we'll use to make all config decisions with defaults:
270 opts_all = opts_def.copy()
270 opts_all = opts_def.copy()
271 opts_all.update(rc_def)
271 opts_all.update(rc_def)
272
272
273 # Build conflict resolver for recursive loading of config files:
273 # Build conflict resolver for recursive loading of config files:
274 # - preserve means the outermost file maintains the value, it is not
274 # - preserve means the outermost file maintains the value, it is not
275 # overwritten if an included file has the same key.
275 # overwritten if an included file has the same key.
276 # - add_flip applies + to the two values, so it better make sense to add
276 # - add_flip applies + to the two values, so it better make sense to add
277 # those types of keys. But it flips them first so that things loaded
277 # those types of keys. But it flips them first so that things loaded
278 # deeper in the inclusion chain have lower precedence.
278 # deeper in the inclusion chain have lower precedence.
279 conflict = {'preserve': ' '.join([ typeconv[int],
279 conflict = {'preserve': ' '.join([ typeconv[int],
280 typeconv[unquote_ends] ]),
280 typeconv[unquote_ends] ]),
281 'add_flip': ' '.join([ typeconv[qwflat],
281 'add_flip': ' '.join([ typeconv[qwflat],
282 typeconv[qw_lol],
282 typeconv[qw_lol],
283 typeconv[list_strings] ])
283 typeconv[list_strings] ])
284 }
284 }
285
285
286 # Now actually process the command line
286 # Now actually process the command line
287 getopt = DPyGetOpt.DPyGetOpt()
287 getopt = DPyGetOpt.DPyGetOpt()
288 getopt.setIgnoreCase(0)
288 getopt.setIgnoreCase(0)
289
289
290 getopt.parseConfiguration(opts_names)
290 getopt.parseConfiguration(opts_names)
291
291
292 try:
292 try:
293 getopt.processArguments(argv)
293 getopt.processArguments(argv)
294 except:
294 except:
295 print cmd_line_usage
295 print cmd_line_usage
296 warn('\nError in Arguments: ' + `sys.exc_value`)
296 warn('\nError in Arguments: ' + `sys.exc_value`)
297 sys.exit(1)
297 sys.exit(1)
298
298
299 # convert the options dict to a struct for much lighter syntax later
299 # convert the options dict to a struct for much lighter syntax later
300 opts = Struct(getopt.optionValues)
300 opts = Struct(getopt.optionValues)
301 args = getopt.freeValues
301 args = getopt.freeValues
302
302
303 # this is the struct (which has default values at this point) with which
303 # this is the struct (which has default values at this point) with which
304 # we make all decisions:
304 # we make all decisions:
305 opts_all.update(opts)
305 opts_all.update(opts)
306
306
307 # Options that force an immediate exit
307 # Options that force an immediate exit
308 if opts_all.help:
308 if opts_all.help:
309 page(cmd_line_usage)
309 page(cmd_line_usage)
310 sys.exit()
310 sys.exit()
311
311
312 if opts_all.Version:
312 if opts_all.Version:
313 print __version__
313 print __version__
314 sys.exit()
314 sys.exit()
315
315
316 if opts_all.magic_docstrings:
316 if opts_all.magic_docstrings:
317 IP.magic_magic('-latex')
317 IP.magic_magic('-latex')
318 sys.exit()
318 sys.exit()
319
319
320 # add personal ipythondir to sys.path so that users can put things in
320 # add personal ipythondir to sys.path so that users can put things in
321 # there for customization
321 # there for customization
322 sys.path.append(os.path.abspath(opts_all.ipythondir))
322 sys.path.append(os.path.abspath(opts_all.ipythondir))
323
323
324 # Create user config directory if it doesn't exist. This must be done
324 # Create user config directory if it doesn't exist. This must be done
325 # *after* getting the cmd line options.
325 # *after* getting the cmd line options.
326 if not os.path.isdir(opts_all.ipythondir):
326 if not os.path.isdir(opts_all.ipythondir):
327 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
327 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
328
328
329 # upgrade user config files while preserving a copy of the originals
329 # upgrade user config files while preserving a copy of the originals
330 if opts_all.upgrade:
330 if opts_all.upgrade:
331 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
331 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
332
332
333 # check mutually exclusive options in the *original* command line
333 # check mutually exclusive options in the *original* command line
334 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
334 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
335 qw('classic profile'),qw('classic rcfile')])
335 qw('classic profile'),qw('classic rcfile')])
336
336
337 #---------------------------------------------------------------------------
337 #---------------------------------------------------------------------------
338 # Log replay
338 # Log replay
339
339
340 # if -logplay, we need to 'become' the other session. That basically means
340 # if -logplay, we need to 'become' the other session. That basically means
341 # replacing the current command line environment with that of the old
341 # replacing the current command line environment with that of the old
342 # session and moving on.
342 # session and moving on.
343
343
344 # this is needed so that later we know we're in session reload mode, as
344 # this is needed so that later we know we're in session reload mode, as
345 # opts_all will get overwritten:
345 # opts_all will get overwritten:
346 load_logplay = 0
346 load_logplay = 0
347
347
348 if opts_all.logplay:
348 if opts_all.logplay:
349 load_logplay = opts_all.logplay
349 load_logplay = opts_all.logplay
350 opts_debug_save = opts_all.debug
350 opts_debug_save = opts_all.debug
351 try:
351 try:
352 logplay = open(opts_all.logplay)
352 logplay = open(opts_all.logplay)
353 except IOError:
353 except IOError:
354 if opts_all.debug: IP.InteractiveTB()
354 if opts_all.debug: IP.InteractiveTB()
355 warn('Could not open logplay file '+`opts_all.logplay`)
355 warn('Could not open logplay file '+`opts_all.logplay`)
356 # restore state as if nothing had happened and move on, but make
356 # restore state as if nothing had happened and move on, but make
357 # sure that later we don't try to actually load the session file
357 # sure that later we don't try to actually load the session file
358 logplay = None
358 logplay = None
359 load_logplay = 0
359 load_logplay = 0
360 del opts_all.logplay
360 del opts_all.logplay
361 else:
361 else:
362 try:
362 try:
363 logplay.readline()
363 logplay.readline()
364 logplay.readline();
364 logplay.readline();
365 # this reloads that session's command line
365 # this reloads that session's command line
366 cmd = logplay.readline()[6:]
366 cmd = logplay.readline()[6:]
367 exec cmd
367 exec cmd
368 # restore the true debug flag given so that the process of
368 # restore the true debug flag given so that the process of
369 # session loading itself can be monitored.
369 # session loading itself can be monitored.
370 opts.debug = opts_debug_save
370 opts.debug = opts_debug_save
371 # save the logplay flag so later we don't overwrite the log
371 # save the logplay flag so later we don't overwrite the log
372 opts.logplay = load_logplay
372 opts.logplay = load_logplay
373 # now we must update our own structure with defaults
373 # now we must update our own structure with defaults
374 opts_all.update(opts)
374 opts_all.update(opts)
375 # now load args
375 # now load args
376 cmd = logplay.readline()[6:]
376 cmd = logplay.readline()[6:]
377 exec cmd
377 exec cmd
378 logplay.close()
378 logplay.close()
379 except:
379 except:
380 logplay.close()
380 logplay.close()
381 if opts_all.debug: IP.InteractiveTB()
381 if opts_all.debug: IP.InteractiveTB()
382 warn("Logplay file lacking full configuration information.\n"
382 warn("Logplay file lacking full configuration information.\n"
383 "I'll try to read it, but some things may not work.")
383 "I'll try to read it, but some things may not work.")
384
384
385 #-------------------------------------------------------------------------
385 #-------------------------------------------------------------------------
386 # set up output traps: catch all output from files, being run, modules
386 # set up output traps: catch all output from files, being run, modules
387 # loaded, etc. Then give it to the user in a clean form at the end.
387 # loaded, etc. Then give it to the user in a clean form at the end.
388
388
389 msg_out = 'Output messages. '
389 msg_out = 'Output messages. '
390 msg_err = 'Error messages. '
390 msg_err = 'Error messages. '
391 msg_sep = '\n'
391 msg_sep = '\n'
392 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
392 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
393 msg_err,msg_sep,debug,
393 msg_err,msg_sep,debug,
394 quiet_out=1),
394 quiet_out=1),
395 user_exec = OutputTrap('User File Execution',msg_out,
395 user_exec = OutputTrap('User File Execution',msg_out,
396 msg_err,msg_sep,debug),
396 msg_err,msg_sep,debug),
397 logplay = OutputTrap('Log Loader',msg_out,
397 logplay = OutputTrap('Log Loader',msg_out,
398 msg_err,msg_sep,debug),
398 msg_err,msg_sep,debug),
399 summary = ''
399 summary = ''
400 )
400 )
401
401
402 #-------------------------------------------------------------------------
402 #-------------------------------------------------------------------------
403 # Process user ipythonrc-type configuration files
403 # Process user ipythonrc-type configuration files
404
404
405 # turn on output trapping and log to msg.config
405 # turn on output trapping and log to msg.config
406 # remember that with debug on, trapping is actually disabled
406 # remember that with debug on, trapping is actually disabled
407 msg.config.trap_all()
407 msg.config.trap_all()
408
408
409 # look for rcfile in current or default directory
409 # look for rcfile in current or default directory
410 try:
410 try:
411 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
411 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
412 except IOError:
412 except IOError:
413 if opts_all.debug: IP.InteractiveTB()
413 if opts_all.debug: IP.InteractiveTB()
414 warn('Configuration file %s not found. Ignoring request.'
414 warn('Configuration file %s not found. Ignoring request.'
415 % (opts_all.rcfile) )
415 % (opts_all.rcfile) )
416
416
417 # 'profiles' are a shorthand notation for config filenames
417 # 'profiles' are a shorthand notation for config filenames
418 if opts_all.profile:
418 if opts_all.profile:
419
419
420 try:
420 try:
421 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
421 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
422 + rc_suffix,
422 + rc_suffix,
423 opts_all.ipythondir)
423 opts_all.ipythondir)
424 except IOError:
424 except IOError:
425 if opts_all.debug: IP.InteractiveTB()
425 if opts_all.debug: IP.InteractiveTB()
426 opts.profile = '' # remove profile from options if invalid
426 opts.profile = '' # remove profile from options if invalid
427 # We won't warn anymore, primary method is ipy_profile_PROFNAME
427 # We won't warn anymore, primary method is ipy_profile_PROFNAME
428 # which does trigger a warning.
428 # which does trigger a warning.
429
429
430 # load the config file
430 # load the config file
431 rcfiledata = None
431 rcfiledata = None
432 if opts_all.quick:
432 if opts_all.quick:
433 print 'Launching IPython in quick mode. No config file read.'
433 print 'Launching IPython in quick mode. No config file read.'
434 elif opts_all.classic:
434 elif opts_all.classic:
435 print 'Launching IPython in classic mode. No config file read.'
435 print 'Launching IPython in classic mode. No config file read.'
436 elif opts_all.rcfile:
436 elif opts_all.rcfile:
437 try:
437 try:
438 cfg_loader = ConfigLoader(conflict)
438 cfg_loader = ConfigLoader(conflict)
439 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
439 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
440 'include',opts_all.ipythondir,
440 'include',opts_all.ipythondir,
441 purge = 1,
441 purge = 1,
442 unique = conflict['preserve'])
442 unique = conflict['preserve'])
443 except:
443 except:
444 IP.InteractiveTB()
444 IP.InteractiveTB()
445 warn('Problems loading configuration file '+
445 warn('Problems loading configuration file '+
446 `opts_all.rcfile`+
446 `opts_all.rcfile`+
447 '\nStarting with default -bare bones- configuration.')
447 '\nStarting with default -bare bones- configuration.')
448 else:
448 else:
449 warn('No valid configuration file found in either currrent directory\n'+
449 warn('No valid configuration file found in either currrent directory\n'+
450 'or in the IPython config. directory: '+`opts_all.ipythondir`+
450 'or in the IPython config. directory: '+`opts_all.ipythondir`+
451 '\nProceeding with internal defaults.')
451 '\nProceeding with internal defaults.')
452
452
453 #------------------------------------------------------------------------
453 #------------------------------------------------------------------------
454 # Set exception handlers in mode requested by user.
454 # Set exception handlers in mode requested by user.
455 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
455 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
456 IP.magic_xmode(opts_all.xmode)
456 IP.magic_xmode(opts_all.xmode)
457 otrap.release_out()
457 otrap.release_out()
458
458
459 #------------------------------------------------------------------------
459 #------------------------------------------------------------------------
460 # Execute user config
460 # Execute user config
461
461
462 # Create a valid config structure with the right precedence order:
462 # Create a valid config structure with the right precedence order:
463 # defaults < rcfile < command line. This needs to be in the instance, so
463 # defaults < rcfile < command line. This needs to be in the instance, so
464 # that method calls below that rely on it find it.
464 # that method calls below that rely on it find it.
465 IP.rc = rc_def.copy()
465 IP.rc = rc_def.copy()
466
466
467 # Work with a local alias inside this routine to avoid unnecessary
467 # Work with a local alias inside this routine to avoid unnecessary
468 # attribute lookups.
468 # attribute lookups.
469 IP_rc = IP.rc
469 IP_rc = IP.rc
470
470
471 IP_rc.update(opts_def)
471 IP_rc.update(opts_def)
472 if rcfiledata:
472 if rcfiledata:
473 # now we can update
473 # now we can update
474 IP_rc.update(rcfiledata)
474 IP_rc.update(rcfiledata)
475 IP_rc.update(opts)
475 IP_rc.update(opts)
476 IP_rc.update(rc_override)
476 IP_rc.update(rc_override)
477
477
478 # Store the original cmd line for reference:
478 # Store the original cmd line for reference:
479 IP_rc.opts = opts
479 IP_rc.opts = opts
480 IP_rc.args = args
480 IP_rc.args = args
481
481
482 # create a *runtime* Struct like rc for holding parameters which may be
482 # create a *runtime* Struct like rc for holding parameters which may be
483 # created and/or modified by runtime user extensions.
483 # created and/or modified by runtime user extensions.
484 IP.runtime_rc = Struct()
484 IP.runtime_rc = Struct()
485
485
486 # from this point on, all config should be handled through IP_rc,
486 # from this point on, all config should be handled through IP_rc,
487 # opts* shouldn't be used anymore.
487 # opts* shouldn't be used anymore.
488
488
489
489
490 # update IP_rc with some special things that need manual
490 # update IP_rc with some special things that need manual
491 # tweaks. Basically options which affect other options. I guess this
491 # tweaks. Basically options which affect other options. I guess this
492 # should just be written so that options are fully orthogonal and we
492 # should just be written so that options are fully orthogonal and we
493 # wouldn't worry about this stuff!
493 # wouldn't worry about this stuff!
494
494
495 if IP_rc.classic:
495 if IP_rc.classic:
496 IP_rc.quick = 1
496 IP_rc.quick = 1
497 IP_rc.cache_size = 0
497 IP_rc.cache_size = 0
498 IP_rc.pprint = 0
498 IP_rc.pprint = 0
499 IP_rc.prompt_in1 = '>>> '
499 IP_rc.prompt_in1 = '>>> '
500 IP_rc.prompt_in2 = '... '
500 IP_rc.prompt_in2 = '... '
501 IP_rc.prompt_out = ''
501 IP_rc.prompt_out = ''
502 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
502 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
503 IP_rc.colors = 'NoColor'
503 IP_rc.colors = 'NoColor'
504 IP_rc.xmode = 'Plain'
504 IP_rc.xmode = 'Plain'
505
505
506 IP.pre_config_initialization()
506 IP.pre_config_initialization()
507 # configure readline
507 # configure readline
508 # Define the history file for saving commands in between sessions
508 # Define the history file for saving commands in between sessions
509 if IP_rc.profile:
509 if IP_rc.profile:
510 histfname = 'history-%s' % IP_rc.profile
510 histfname = 'history-%s' % IP_rc.profile
511 else:
511 else:
512 histfname = 'history'
512 histfname = 'history'
513 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
513 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
514
514
515 # update exception handlers with rc file status
515 # update exception handlers with rc file status
516 otrap.trap_out() # I don't want these messages ever.
516 otrap.trap_out() # I don't want these messages ever.
517 IP.magic_xmode(IP_rc.xmode)
517 IP.magic_xmode(IP_rc.xmode)
518 otrap.release_out()
518 otrap.release_out()
519
519
520 # activate logging if requested and not reloading a log
520 # activate logging if requested and not reloading a log
521 if IP_rc.logplay:
521 if IP_rc.logplay:
522 IP.magic_logstart(IP_rc.logplay + ' append')
522 IP.magic_logstart(IP_rc.logplay + ' append')
523 elif IP_rc.logfile:
523 elif IP_rc.logfile:
524 IP.magic_logstart(IP_rc.logfile)
524 IP.magic_logstart(IP_rc.logfile)
525 elif IP_rc.log:
525 elif IP_rc.log:
526 IP.magic_logstart()
526 IP.magic_logstart()
527
527
528 # find user editor so that it we don't have to look it up constantly
528 # find user editor so that it we don't have to look it up constantly
529 if IP_rc.editor.strip()=='0':
529 if IP_rc.editor.strip()=='0':
530 try:
530 try:
531 ed = os.environ['EDITOR']
531 ed = os.environ['EDITOR']
532 except KeyError:
532 except KeyError:
533 if os.name == 'posix':
533 if os.name == 'posix':
534 ed = 'vi' # the only one guaranteed to be there!
534 ed = 'vi' # the only one guaranteed to be there!
535 else:
535 else:
536 ed = 'notepad' # same in Windows!
536 ed = 'notepad' # same in Windows!
537 IP_rc.editor = ed
537 IP_rc.editor = ed
538
538
539 # Keep track of whether this is an embedded instance or not (useful for
539 # Keep track of whether this is an embedded instance or not (useful for
540 # post-mortems).
540 # post-mortems).
541 IP_rc.embedded = IP.embedded
541 IP_rc.embedded = IP.embedded
542
542
543 # Recursive reload
543 # Recursive reload
544 try:
544 try:
545 from IPython import deep_reload
545 from IPython import deep_reload
546 if IP_rc.deep_reload:
546 if IP_rc.deep_reload:
547 __builtin__.reload = deep_reload.reload
547 __builtin__.reload = deep_reload.reload
548 else:
548 else:
549 __builtin__.dreload = deep_reload.reload
549 __builtin__.dreload = deep_reload.reload
550 del deep_reload
550 del deep_reload
551 except ImportError:
551 except ImportError:
552 pass
552 pass
553
553
554 # Save the current state of our namespace so that the interactive shell
554 # Save the current state of our namespace so that the interactive shell
555 # can later know which variables have been created by us from config files
555 # can later know which variables have been created by us from config files
556 # and loading. This way, loading a file (in any way) is treated just like
556 # and loading. This way, loading a file (in any way) is treated just like
557 # defining things on the command line, and %who works as expected.
557 # defining things on the command line, and %who works as expected.
558
558
559 # DON'T do anything that affects the namespace beyond this point!
559 # DON'T do anything that affects the namespace beyond this point!
560 IP.internal_ns.update(__main__.__dict__)
560 IP.internal_ns.update(__main__.__dict__)
561
561
562 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
562 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
563
563
564 # Now run through the different sections of the users's config
564 # Now run through the different sections of the users's config
565 if IP_rc.debug:
565 if IP_rc.debug:
566 print 'Trying to execute the following configuration structure:'
566 print 'Trying to execute the following configuration structure:'
567 print '(Things listed first are deeper in the inclusion tree and get'
567 print '(Things listed first are deeper in the inclusion tree and get'
568 print 'loaded first).\n'
568 print 'loaded first).\n'
569 pprint(IP_rc.__dict__)
569 pprint(IP_rc.__dict__)
570
570
571 for mod in IP_rc.import_mod:
571 for mod in IP_rc.import_mod:
572 try:
572 try:
573 exec 'import '+mod in IP.user_ns
573 exec 'import '+mod in IP.user_ns
574 except :
574 except :
575 IP.InteractiveTB()
575 IP.InteractiveTB()
576 import_fail_info(mod)
576 import_fail_info(mod)
577
577
578 for mod_fn in IP_rc.import_some:
578 for mod_fn in IP_rc.import_some:
579 if not mod_fn == []:
579 if not mod_fn == []:
580 mod,fn = mod_fn[0],','.join(mod_fn[1:])
580 mod,fn = mod_fn[0],','.join(mod_fn[1:])
581 try:
581 try:
582 exec 'from '+mod+' import '+fn in IP.user_ns
582 exec 'from '+mod+' import '+fn in IP.user_ns
583 except :
583 except :
584 IP.InteractiveTB()
584 IP.InteractiveTB()
585 import_fail_info(mod,fn)
585 import_fail_info(mod,fn)
586
586
587 for mod in IP_rc.import_all:
587 for mod in IP_rc.import_all:
588 try:
588 try:
589 exec 'from '+mod+' import *' in IP.user_ns
589 exec 'from '+mod+' import *' in IP.user_ns
590 except :
590 except :
591 IP.InteractiveTB()
591 IP.InteractiveTB()
592 import_fail_info(mod)
592 import_fail_info(mod)
593
593
594 for code in IP_rc.execute:
594 for code in IP_rc.execute:
595 try:
595 try:
596 exec code in IP.user_ns
596 exec code in IP.user_ns
597 except:
597 except:
598 IP.InteractiveTB()
598 IP.InteractiveTB()
599 warn('Failure executing code: ' + `code`)
599 warn('Failure executing code: ' + `code`)
600
600
601 # Execute the files the user wants in ipythonrc
601 # Execute the files the user wants in ipythonrc
602 for file in IP_rc.execfile:
602 for file in IP_rc.execfile:
603 try:
603 try:
604 file = filefind(file,sys.path+[IPython_dir])
604 file = filefind(file,sys.path+[IPython_dir])
605 except IOError:
605 except IOError:
606 warn(itpl('File $file not found. Skipping it.'))
606 warn(itpl('File $file not found. Skipping it.'))
607 else:
607 else:
608 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
608 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
609
609
610 # finally, try importing ipy_*_conf for final configuration
610 # finally, try importing ipy_*_conf for final configuration
611 try:
611 try:
612 import ipy_system_conf
612 import ipy_system_conf
613 except ImportError:
613 except ImportError:
614 if opts_all.debug: IP.InteractiveTB()
614 if opts_all.debug: IP.InteractiveTB()
615 warn("Could not import 'ipy_system_conf'")
615 warn("Could not import 'ipy_system_conf'")
616 except:
616 except:
617 IP.InteractiveTB()
617 IP.InteractiveTB()
618 import_fail_info('ipy_system_conf')
618 import_fail_info('ipy_system_conf')
619
619
620 if opts_all.profile:
620 if opts_all.profile:
621 profmodname = 'ipy_profile_' + opts_all.profile
621 profmodname = 'ipy_profile_' + opts_all.profile
622 try:
622 try:
623 __import__(profmodname)
623 __import__(profmodname)
624 except ImportError:
624 except ImportError:
625 # only warn if ipythonrc-PROFNAME didn't exist
625 # only warn if ipythonrc-PROFNAME didn't exist
626 if opts.profile =='':
626 if opts.profile =='':
627 warn("Could not start with profile '%s'!\n"
627 warn("Could not start with profile '%s'!\n"
628 "('%s/%s.py' does not exist? run '%%upgrade')" %
628 "('%s/%s.py' does not exist? run '%%upgrade')" %
629 (opts_all.profile, opts_all.ipythondir, profmodname) )
629 (opts_all.profile, opts_all.ipythondir, profmodname) )
630 except:
630 except:
631 print "Error importing",profmodname
631 print "Error importing",profmodname,"- perhaps you should run %upgrade?"
632 IP.InteractiveTB()
632 IP.InteractiveTB()
633 import_fail_info(profmodname)
633 import_fail_info(profmodname)
634
634
635 try:
635 try:
636 import ipy_user_conf
636 import ipy_user_conf
637 except ImportError:
637 except ImportError:
638 if opts_all.debug: IP.InteractiveTB()
638 if opts_all.debug: IP.InteractiveTB()
639 warn("Could not import user config!\n "
639 warn("Could not import user config!\n "
640 "('%s/ipy_user_conf.py' does not exist? Please run '%%upgrade')\n"
640 "('%s/ipy_user_conf.py' does not exist? Please run '%%upgrade')\n"
641 % opts_all.ipythondir)
641 % opts_all.ipythondir)
642 except:
642 except:
643 print "Error importing ipy_user_conf"
643 print "Error importing ipy_user_conf - perhaps you should run %upgrade?"
644 IP.InteractiveTB()
644 IP.InteractiveTB()
645 import_fail_info("ipy_user_conf")
645 import_fail_info("ipy_user_conf")
646
646
647 # release stdout and stderr and save config log into a global summary
647 # release stdout and stderr and save config log into a global summary
648 msg.config.release_all()
648 msg.config.release_all()
649 if IP_rc.messages:
649 if IP_rc.messages:
650 msg.summary += msg.config.summary_all()
650 msg.summary += msg.config.summary_all()
651
651
652 #------------------------------------------------------------------------
652 #------------------------------------------------------------------------
653 # Setup interactive session
653 # Setup interactive session
654
654
655 # Now we should be fully configured. We can then execute files or load
655 # Now we should be fully configured. We can then execute files or load
656 # things only needed for interactive use. Then we'll open the shell.
656 # things only needed for interactive use. Then we'll open the shell.
657
657
658 # Take a snapshot of the user namespace before opening the shell. That way
658 # Take a snapshot of the user namespace before opening the shell. That way
659 # we'll be able to identify which things were interactively defined and
659 # we'll be able to identify which things were interactively defined and
660 # which were defined through config files.
660 # which were defined through config files.
661 IP.user_config_ns = IP.user_ns.copy()
661 IP.user_config_ns = IP.user_ns.copy()
662
662
663 # Force reading a file as if it were a session log. Slower but safer.
663 # Force reading a file as if it were a session log. Slower but safer.
664 if load_logplay:
664 if load_logplay:
665 print 'Replaying log...'
665 print 'Replaying log...'
666 try:
666 try:
667 if IP_rc.debug:
667 if IP_rc.debug:
668 logplay_quiet = 0
668 logplay_quiet = 0
669 else:
669 else:
670 logplay_quiet = 1
670 logplay_quiet = 1
671
671
672 msg.logplay.trap_all()
672 msg.logplay.trap_all()
673 IP.safe_execfile(load_logplay,IP.user_ns,
673 IP.safe_execfile(load_logplay,IP.user_ns,
674 islog = 1, quiet = logplay_quiet)
674 islog = 1, quiet = logplay_quiet)
675 msg.logplay.release_all()
675 msg.logplay.release_all()
676 if IP_rc.messages:
676 if IP_rc.messages:
677 msg.summary += msg.logplay.summary_all()
677 msg.summary += msg.logplay.summary_all()
678 except:
678 except:
679 warn('Problems replaying logfile %s.' % load_logplay)
679 warn('Problems replaying logfile %s.' % load_logplay)
680 IP.InteractiveTB()
680 IP.InteractiveTB()
681
681
682 # Load remaining files in command line
682 # Load remaining files in command line
683 msg.user_exec.trap_all()
683 msg.user_exec.trap_all()
684
684
685 # Do NOT execute files named in the command line as scripts to be loaded
685 # Do NOT execute files named in the command line as scripts to be loaded
686 # by embedded instances. Doing so has the potential for an infinite
686 # by embedded instances. Doing so has the potential for an infinite
687 # recursion if there are exceptions thrown in the process.
687 # recursion if there are exceptions thrown in the process.
688
688
689 # XXX FIXME: the execution of user files should be moved out to after
689 # XXX FIXME: the execution of user files should be moved out to after
690 # ipython is fully initialized, just as if they were run via %run at the
690 # ipython is fully initialized, just as if they were run via %run at the
691 # ipython prompt. This would also give them the benefit of ipython's
691 # ipython prompt. This would also give them the benefit of ipython's
692 # nice tracebacks.
692 # nice tracebacks.
693
693
694 if (not embedded and IP_rc.args and
694 if (not embedded and IP_rc.args and
695 not IP_rc.args[0].lower().endswith('.ipy')):
695 not IP_rc.args[0].lower().endswith('.ipy')):
696 name_save = IP.user_ns['__name__']
696 name_save = IP.user_ns['__name__']
697 IP.user_ns['__name__'] = '__main__'
697 IP.user_ns['__name__'] = '__main__'
698 # Set our own excepthook in case the user code tries to call it
698 # Set our own excepthook in case the user code tries to call it
699 # directly. This prevents triggering the IPython crash handler.
699 # directly. This prevents triggering the IPython crash handler.
700 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
700 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
701
701
702 save_argv = sys.argv[1:] # save it for later restoring
702 save_argv = sys.argv[1:] # save it for later restoring
703
703
704 sys.argv = args
704 sys.argv = args
705
705
706 try:
706 try:
707 IP.safe_execfile(args[0], IP.user_ns)
707 IP.safe_execfile(args[0], IP.user_ns)
708 finally:
708 finally:
709 # Reset our crash handler in place
709 # Reset our crash handler in place
710 sys.excepthook = old_excepthook
710 sys.excepthook = old_excepthook
711 sys.argv[:] = save_argv
711 sys.argv[:] = save_argv
712 IP.user_ns['__name__'] = name_save
712 IP.user_ns['__name__'] = name_save
713
713
714 msg.user_exec.release_all()
714 msg.user_exec.release_all()
715
715
716 if IP_rc.messages:
716 if IP_rc.messages:
717 msg.summary += msg.user_exec.summary_all()
717 msg.summary += msg.user_exec.summary_all()
718
718
719 # since we can't specify a null string on the cmd line, 0 is the equivalent:
719 # since we can't specify a null string on the cmd line, 0 is the equivalent:
720 if IP_rc.nosep:
720 if IP_rc.nosep:
721 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
721 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
722 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
722 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
723 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
723 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
724 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
724 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
725 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
725 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
726 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
726 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
727 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
727 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
728
728
729 # Determine how many lines at the bottom of the screen are needed for
729 # Determine how many lines at the bottom of the screen are needed for
730 # showing prompts, so we can know wheter long strings are to be printed or
730 # showing prompts, so we can know wheter long strings are to be printed or
731 # paged:
731 # paged:
732 num_lines_bot = IP_rc.separate_in.count('\n')+1
732 num_lines_bot = IP_rc.separate_in.count('\n')+1
733 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
733 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
734
734
735 # configure startup banner
735 # configure startup banner
736 if IP_rc.c: # regular python doesn't print the banner with -c
736 if IP_rc.c: # regular python doesn't print the banner with -c
737 IP_rc.banner = 0
737 IP_rc.banner = 0
738 if IP_rc.banner:
738 if IP_rc.banner:
739 BANN_P = IP.BANNER_PARTS
739 BANN_P = IP.BANNER_PARTS
740 else:
740 else:
741 BANN_P = []
741 BANN_P = []
742
742
743 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
743 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
744
744
745 # add message log (possibly empty)
745 # add message log (possibly empty)
746 if msg.summary: BANN_P.append(msg.summary)
746 if msg.summary: BANN_P.append(msg.summary)
747 # Final banner is a string
747 # Final banner is a string
748 IP.BANNER = '\n'.join(BANN_P)
748 IP.BANNER = '\n'.join(BANN_P)
749
749
750 # Finalize the IPython instance. This assumes the rc structure is fully
750 # Finalize the IPython instance. This assumes the rc structure is fully
751 # in place.
751 # in place.
752 IP.post_config_initialization()
752 IP.post_config_initialization()
753
753
754 return IP
754 return IP
755 #************************ end of file <ipmaker.py> **************************
755 #************************ end of file <ipmaker.py> **************************
@@ -1,6129 +1,6138 b''
1 2006-12-24 Ville Vainio <vivainio@gmail.com>
2
3 * ipmaker.py: more informative message when ipy_user_conf
4 import fails (suggest running %upgrade).
5
1 2006-12-20 Ville Vainio <vivainio@gmail.com>
6 2006-12-20 Ville Vainio <vivainio@gmail.com>
2
7
3 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
8 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
4
9
10 * ipapi.py: Add new ipapi method, expand_alias.
11
12 * Release.py: Bump up version to 0.7.4.svn
13
5 2006-12-17 Ville Vainio <vivainio@gmail.com>
14 2006-12-17 Ville Vainio <vivainio@gmail.com>
6
15
7 * Extensions/jobctrl.py: Fixed &cmd arg arg...
16 * Extensions/jobctrl.py: Fixed &cmd arg arg...
8 to work properly on posix too
17 to work properly on posix too
9
18
10 * Release.py: Update revnum (version is still just 0.7.3).
19 * Release.py: Update revnum (version is still just 0.7.3).
11
20
12 2006-12-15 Ville Vainio <vivainio@gmail.com>
21 2006-12-15 Ville Vainio <vivainio@gmail.com>
13
22
14 * scripts/ipython_win_post_install: create ipython.py in
23 * scripts/ipython_win_post_install: create ipython.py in
15 prefix + "/scripts".
24 prefix + "/scripts".
16
25
17 * Release.py: Update version to 0.7.3.
26 * Release.py: Update version to 0.7.3.
18
27
19 2006-12-14 Ville Vainio <vivainio@gmail.com>
28 2006-12-14 Ville Vainio <vivainio@gmail.com>
20
29
21 * scripts/ipython_win_post_install: Overwrite old shortcuts
30 * scripts/ipython_win_post_install: Overwrite old shortcuts
22 if they already exist
31 if they already exist
23
32
24 * Release.py: release 0.7.3rc2
33 * Release.py: release 0.7.3rc2
25
34
26 2006-12-13 Ville Vainio <vivainio@gmail.com>
35 2006-12-13 Ville Vainio <vivainio@gmail.com>
27
36
28 * Branch and update Release.py for 0.7.3rc1
37 * Branch and update Release.py for 0.7.3rc1
29
38
30 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
39 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
31
40
32 * IPython/Shell.py (IPShellWX): update for current WX naming
41 * IPython/Shell.py (IPShellWX): update for current WX naming
33 conventions, to avoid a deprecation warning with current WX
42 conventions, to avoid a deprecation warning with current WX
34 versions. Thanks to a report by Danny Shevitz.
43 versions. Thanks to a report by Danny Shevitz.
35
44
36 2006-12-12 Ville Vainio <vivainio@gmail.com>
45 2006-12-12 Ville Vainio <vivainio@gmail.com>
37
46
38 * ipmaker.py: apply david cournapeau's patch to make
47 * ipmaker.py: apply david cournapeau's patch to make
39 import_some work properly even when ipythonrc does
48 import_some work properly even when ipythonrc does
40 import_some on empty list (it was an old bug!).
49 import_some on empty list (it was an old bug!).
41
50
42 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
51 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
43 Add deprecation note to ipythonrc and a url to wiki
52 Add deprecation note to ipythonrc and a url to wiki
44 in ipy_user_conf.py
53 in ipy_user_conf.py
45
54
46
55
47 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
56 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
48 as if it was typed on IPython command prompt, i.e.
57 as if it was typed on IPython command prompt, i.e.
49 as IPython script.
58 as IPython script.
50
59
51 * example-magic.py, magic_grepl.py: remove outdated examples
60 * example-magic.py, magic_grepl.py: remove outdated examples
52
61
53 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
62 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
54
63
55 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
64 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
56 is called before any exception has occurred.
65 is called before any exception has occurred.
57
66
58 2006-12-08 Ville Vainio <vivainio@gmail.com>
67 2006-12-08 Ville Vainio <vivainio@gmail.com>
59
68
60 * Extensions/ipy_stock_completers.py.py: fix cd completer
69 * Extensions/ipy_stock_completers.py.py: fix cd completer
61 to translate /'s to \'s again.
70 to translate /'s to \'s again.
62
71
63 * completer.py: prevent traceback on file completions w/
72 * completer.py: prevent traceback on file completions w/
64 backslash.
73 backslash.
65
74
66 * Release.py: Update release number to 0.7.3b3 for release
75 * Release.py: Update release number to 0.7.3b3 for release
67
76
68 2006-12-07 Ville Vainio <vivainio@gmail.com>
77 2006-12-07 Ville Vainio <vivainio@gmail.com>
69
78
70 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
79 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
71 while executing external code. Provides more shell-like behaviour
80 while executing external code. Provides more shell-like behaviour
72 and overall better response to ctrl + C / ctrl + break.
81 and overall better response to ctrl + C / ctrl + break.
73
82
74 * tools/make_tarball.py: new script to create tarball straight from svn
83 * tools/make_tarball.py: new script to create tarball straight from svn
75 (setup.py sdist doesn't work on win32).
84 (setup.py sdist doesn't work on win32).
76
85
77 * Extensions/ipy_stock_completers.py: fix cd completer to give up
86 * Extensions/ipy_stock_completers.py: fix cd completer to give up
78 on dirnames with spaces and use the default completer instead.
87 on dirnames with spaces and use the default completer instead.
79
88
80 * Revision.py: Change version to 0.7.3b2 for release.
89 * Revision.py: Change version to 0.7.3b2 for release.
81
90
82 2006-12-05 Ville Vainio <vivainio@gmail.com>
91 2006-12-05 Ville Vainio <vivainio@gmail.com>
83
92
84 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
93 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
85 pydb patch 4 (rm debug printing, py 2.5 checking)
94 pydb patch 4 (rm debug printing, py 2.5 checking)
86
95
87 2006-11-30 Walter Doerwald <walter@livinglogic.de>
96 2006-11-30 Walter Doerwald <walter@livinglogic.de>
88 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
97 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
89 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
98 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
90 "refreshfind" (mapped to "R") does the same but tries to go back to the same
99 "refreshfind" (mapped to "R") does the same but tries to go back to the same
91 object the cursor was on before the refresh. The command "markrange" is
100 object the cursor was on before the refresh. The command "markrange" is
92 mapped to "%" now.
101 mapped to "%" now.
93 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
102 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
94
103
95 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
104 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
96
105
97 * IPython/Magic.py (magic_debug): new %debug magic to activate the
106 * IPython/Magic.py (magic_debug): new %debug magic to activate the
98 interactive debugger on the last traceback, without having to call
107 interactive debugger on the last traceback, without having to call
99 %pdb and rerun your code. Made minor changes in various modules,
108 %pdb and rerun your code. Made minor changes in various modules,
100 should automatically recognize pydb if available.
109 should automatically recognize pydb if available.
101
110
102 2006-11-28 Ville Vainio <vivainio@gmail.com>
111 2006-11-28 Ville Vainio <vivainio@gmail.com>
103
112
104 * completer.py: If the text start with !, show file completions
113 * completer.py: If the text start with !, show file completions
105 properly. This helps when trying to complete command name
114 properly. This helps when trying to complete command name
106 for shell escapes.
115 for shell escapes.
107
116
108 2006-11-27 Ville Vainio <vivainio@gmail.com>
117 2006-11-27 Ville Vainio <vivainio@gmail.com>
109
118
110 * ipy_stock_completers.py: bzr completer submitted by Stefan van
119 * ipy_stock_completers.py: bzr completer submitted by Stefan van
111 der Walt. Clean up svn and hg completers by using a common
120 der Walt. Clean up svn and hg completers by using a common
112 vcs_completer.
121 vcs_completer.
113
122
114 2006-11-26 Ville Vainio <vivainio@gmail.com>
123 2006-11-26 Ville Vainio <vivainio@gmail.com>
115
124
116 * Remove ipconfig and %config; you should use _ip.options structure
125 * Remove ipconfig and %config; you should use _ip.options structure
117 directly instead!
126 directly instead!
118
127
119 * genutils.py: add wrap_deprecated function for deprecating callables
128 * genutils.py: add wrap_deprecated function for deprecating callables
120
129
121 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
130 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
122 _ip.system instead. ipalias is redundant.
131 _ip.system instead. ipalias is redundant.
123
132
124 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
133 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
125 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
134 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
126 explicit.
135 explicit.
127
136
128 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
137 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
129 completer. Try it by entering 'hg ' and pressing tab.
138 completer. Try it by entering 'hg ' and pressing tab.
130
139
131 * macro.py: Give Macro a useful __repr__ method
140 * macro.py: Give Macro a useful __repr__ method
132
141
133 * Magic.py: %whos abbreviates the typename of Macro for brevity.
142 * Magic.py: %whos abbreviates the typename of Macro for brevity.
134
143
135 2006-11-24 Walter Doerwald <walter@livinglogic.de>
144 2006-11-24 Walter Doerwald <walter@livinglogic.de>
136 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
145 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
137 we don't get a duplicate ipipe module, where registration of the xrepr
146 we don't get a duplicate ipipe module, where registration of the xrepr
138 implementation for Text is useless.
147 implementation for Text is useless.
139
148
140 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
149 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
141
150
142 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
151 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
143
152
144 2006-11-24 Ville Vainio <vivainio@gmail.com>
153 2006-11-24 Ville Vainio <vivainio@gmail.com>
145
154
146 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
155 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
147 try to use "cProfile" instead of the slower pure python
156 try to use "cProfile" instead of the slower pure python
148 "profile"
157 "profile"
149
158
150 2006-11-23 Ville Vainio <vivainio@gmail.com>
159 2006-11-23 Ville Vainio <vivainio@gmail.com>
151
160
152 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
161 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
153 Qt+IPython+Designer link in documentation.
162 Qt+IPython+Designer link in documentation.
154
163
155 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
164 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
156 correct Pdb object to %pydb.
165 correct Pdb object to %pydb.
157
166
158
167
159 2006-11-22 Walter Doerwald <walter@livinglogic.de>
168 2006-11-22 Walter Doerwald <walter@livinglogic.de>
160 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
169 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
161 generic xrepr(), otherwise the list implementation would kick in.
170 generic xrepr(), otherwise the list implementation would kick in.
162
171
163 2006-11-21 Ville Vainio <vivainio@gmail.com>
172 2006-11-21 Ville Vainio <vivainio@gmail.com>
164
173
165 * upgrade_dir.py: Now actually overwrites a nonmodified user file
174 * upgrade_dir.py: Now actually overwrites a nonmodified user file
166 with one from UserConfig.
175 with one from UserConfig.
167
176
168 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
177 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
169 it was missing which broke the sh profile.
178 it was missing which broke the sh profile.
170
179
171 * completer.py: file completer now uses explicit '/' instead
180 * completer.py: file completer now uses explicit '/' instead
172 of os.path.join, expansion of 'foo' was broken on win32
181 of os.path.join, expansion of 'foo' was broken on win32
173 if there was one directory with name 'foobar'.
182 if there was one directory with name 'foobar'.
174
183
175 * A bunch of patches from Kirill Smelkov:
184 * A bunch of patches from Kirill Smelkov:
176
185
177 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
186 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
178
187
179 * [patch 7/9] Implement %page -r (page in raw mode) -
188 * [patch 7/9] Implement %page -r (page in raw mode) -
180
189
181 * [patch 5/9] ScientificPython webpage has moved
190 * [patch 5/9] ScientificPython webpage has moved
182
191
183 * [patch 4/9] The manual mentions %ds, should be %dhist
192 * [patch 4/9] The manual mentions %ds, should be %dhist
184
193
185 * [patch 3/9] Kill old bits from %prun doc.
194 * [patch 3/9] Kill old bits from %prun doc.
186
195
187 * [patch 1/9] Fix typos here and there.
196 * [patch 1/9] Fix typos here and there.
188
197
189 2006-11-08 Ville Vainio <vivainio@gmail.com>
198 2006-11-08 Ville Vainio <vivainio@gmail.com>
190
199
191 * completer.py (attr_matches): catch all exceptions raised
200 * completer.py (attr_matches): catch all exceptions raised
192 by eval of expr with dots.
201 by eval of expr with dots.
193
202
194 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
203 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
195
204
196 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
205 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
197 input if it starts with whitespace. This allows you to paste
206 input if it starts with whitespace. This allows you to paste
198 indented input from any editor without manually having to type in
207 indented input from any editor without manually having to type in
199 the 'if 1:', which is convenient when working interactively.
208 the 'if 1:', which is convenient when working interactively.
200 Slightly modifed version of a patch by Bo Peng
209 Slightly modifed version of a patch by Bo Peng
201 <bpeng-AT-rice.edu>.
210 <bpeng-AT-rice.edu>.
202
211
203 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
212 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
204
213
205 * IPython/irunner.py (main): modified irunner so it automatically
214 * IPython/irunner.py (main): modified irunner so it automatically
206 recognizes the right runner to use based on the extension (.py for
215 recognizes the right runner to use based on the extension (.py for
207 python, .ipy for ipython and .sage for sage).
216 python, .ipy for ipython and .sage for sage).
208
217
209 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
218 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
210 visible in ipapi as ip.config(), to programatically control the
219 visible in ipapi as ip.config(), to programatically control the
211 internal rc object. There's an accompanying %config magic for
220 internal rc object. There's an accompanying %config magic for
212 interactive use, which has been enhanced to match the
221 interactive use, which has been enhanced to match the
213 funtionality in ipconfig.
222 funtionality in ipconfig.
214
223
215 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
224 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
216 so it's not just a toggle, it now takes an argument. Add support
225 so it's not just a toggle, it now takes an argument. Add support
217 for a customizable header when making system calls, as the new
226 for a customizable header when making system calls, as the new
218 system_header variable in the ipythonrc file.
227 system_header variable in the ipythonrc file.
219
228
220 2006-11-03 Walter Doerwald <walter@livinglogic.de>
229 2006-11-03 Walter Doerwald <walter@livinglogic.de>
221
230
222 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
231 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
223 generic functions (using Philip J. Eby's simplegeneric package).
232 generic functions (using Philip J. Eby's simplegeneric package).
224 This makes it possible to customize the display of third-party classes
233 This makes it possible to customize the display of third-party classes
225 without having to monkeypatch them. xiter() no longer supports a mode
234 without having to monkeypatch them. xiter() no longer supports a mode
226 argument and the XMode class has been removed. The same functionality can
235 argument and the XMode class has been removed. The same functionality can
227 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
236 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
228 One consequence of the switch to generic functions is that xrepr() and
237 One consequence of the switch to generic functions is that xrepr() and
229 xattrs() implementation must define the default value for the mode
238 xattrs() implementation must define the default value for the mode
230 argument themselves and xattrs() implementations must return real
239 argument themselves and xattrs() implementations must return real
231 descriptors.
240 descriptors.
232
241
233 * IPython/external: This new subpackage will contain all third-party
242 * IPython/external: This new subpackage will contain all third-party
234 packages that are bundled with IPython. (The first one is simplegeneric).
243 packages that are bundled with IPython. (The first one is simplegeneric).
235
244
236 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
245 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
237 directory which as been dropped in r1703.
246 directory which as been dropped in r1703.
238
247
239 * IPython/Extensions/ipipe.py (iless): Fixed.
248 * IPython/Extensions/ipipe.py (iless): Fixed.
240
249
241 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
250 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
242
251
243 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
252 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
244
253
245 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
254 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
246 handling in variable expansion so that shells and magics recognize
255 handling in variable expansion so that shells and magics recognize
247 function local scopes correctly. Bug reported by Brian.
256 function local scopes correctly. Bug reported by Brian.
248
257
249 * scripts/ipython: remove the very first entry in sys.path which
258 * scripts/ipython: remove the very first entry in sys.path which
250 Python auto-inserts for scripts, so that sys.path under IPython is
259 Python auto-inserts for scripts, so that sys.path under IPython is
251 as similar as possible to that under plain Python.
260 as similar as possible to that under plain Python.
252
261
253 * IPython/completer.py (IPCompleter.file_matches): Fix
262 * IPython/completer.py (IPCompleter.file_matches): Fix
254 tab-completion so that quotes are not closed unless the completion
263 tab-completion so that quotes are not closed unless the completion
255 is unambiguous. After a request by Stefan. Minor cleanups in
264 is unambiguous. After a request by Stefan. Minor cleanups in
256 ipy_stock_completers.
265 ipy_stock_completers.
257
266
258 2006-11-02 Ville Vainio <vivainio@gmail.com>
267 2006-11-02 Ville Vainio <vivainio@gmail.com>
259
268
260 * ipy_stock_completers.py: Add %run and %cd completers.
269 * ipy_stock_completers.py: Add %run and %cd completers.
261
270
262 * completer.py: Try running custom completer for both
271 * completer.py: Try running custom completer for both
263 "foo" and "%foo" if the command is just "foo". Ignore case
272 "foo" and "%foo" if the command is just "foo". Ignore case
264 when filtering possible completions.
273 when filtering possible completions.
265
274
266 * UserConfig/ipy_user_conf.py: install stock completers as default
275 * UserConfig/ipy_user_conf.py: install stock completers as default
267
276
268 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
277 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
269 simplified readline history save / restore through a wrapper
278 simplified readline history save / restore through a wrapper
270 function
279 function
271
280
272
281
273 2006-10-31 Ville Vainio <vivainio@gmail.com>
282 2006-10-31 Ville Vainio <vivainio@gmail.com>
274
283
275 * strdispatch.py, completer.py, ipy_stock_completers.py:
284 * strdispatch.py, completer.py, ipy_stock_completers.py:
276 Allow str_key ("command") in completer hooks. Implement
285 Allow str_key ("command") in completer hooks. Implement
277 trivial completer for 'import' (stdlib modules only). Rename
286 trivial completer for 'import' (stdlib modules only). Rename
278 ipy_linux_package_managers.py to ipy_stock_completers.py.
287 ipy_linux_package_managers.py to ipy_stock_completers.py.
279 SVN completer.
288 SVN completer.
280
289
281 * Extensions/ledit.py: %magic line editor for easily and
290 * Extensions/ledit.py: %magic line editor for easily and
282 incrementally manipulating lists of strings. The magic command
291 incrementally manipulating lists of strings. The magic command
283 name is %led.
292 name is %led.
284
293
285 2006-10-30 Ville Vainio <vivainio@gmail.com>
294 2006-10-30 Ville Vainio <vivainio@gmail.com>
286
295
287 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
296 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
288 Bernsteins's patches for pydb integration.
297 Bernsteins's patches for pydb integration.
289 http://bashdb.sourceforge.net/pydb/
298 http://bashdb.sourceforge.net/pydb/
290
299
291 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
300 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
292 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
301 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
293 custom completer hook to allow the users to implement their own
302 custom completer hook to allow the users to implement their own
294 completers. See ipy_linux_package_managers.py for example. The
303 completers. See ipy_linux_package_managers.py for example. The
295 hook name is 'complete_command'.
304 hook name is 'complete_command'.
296
305
297 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
306 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
298
307
299 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
308 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
300 Numeric leftovers.
309 Numeric leftovers.
301
310
302 * ipython.el (py-execute-region): apply Stefan's patch to fix
311 * ipython.el (py-execute-region): apply Stefan's patch to fix
303 garbled results if the python shell hasn't been previously started.
312 garbled results if the python shell hasn't been previously started.
304
313
305 * IPython/genutils.py (arg_split): moved to genutils, since it's a
314 * IPython/genutils.py (arg_split): moved to genutils, since it's a
306 pretty generic function and useful for other things.
315 pretty generic function and useful for other things.
307
316
308 * IPython/OInspect.py (getsource): Add customizable source
317 * IPython/OInspect.py (getsource): Add customizable source
309 extractor. After a request/patch form W. Stein (SAGE).
318 extractor. After a request/patch form W. Stein (SAGE).
310
319
311 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
320 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
312 window size to a more reasonable value from what pexpect does,
321 window size to a more reasonable value from what pexpect does,
313 since their choice causes wrapping bugs with long input lines.
322 since their choice causes wrapping bugs with long input lines.
314
323
315 2006-10-28 Ville Vainio <vivainio@gmail.com>
324 2006-10-28 Ville Vainio <vivainio@gmail.com>
316
325
317 * Magic.py (%run): Save and restore the readline history from
326 * Magic.py (%run): Save and restore the readline history from
318 file around %run commands to prevent side effects from
327 file around %run commands to prevent side effects from
319 %runned programs that might use readline (e.g. pydb).
328 %runned programs that might use readline (e.g. pydb).
320
329
321 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
330 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
322 invoking the pydb enhanced debugger.
331 invoking the pydb enhanced debugger.
323
332
324 2006-10-23 Walter Doerwald <walter@livinglogic.de>
333 2006-10-23 Walter Doerwald <walter@livinglogic.de>
325
334
326 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
335 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
327 call the base class method and propagate the return value to
336 call the base class method and propagate the return value to
328 ifile. This is now done by path itself.
337 ifile. This is now done by path itself.
329
338
330 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
339 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
331
340
332 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
341 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
333 api: set_crash_handler(), to expose the ability to change the
342 api: set_crash_handler(), to expose the ability to change the
334 internal crash handler.
343 internal crash handler.
335
344
336 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
345 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
337 the various parameters of the crash handler so that apps using
346 the various parameters of the crash handler so that apps using
338 IPython as their engine can customize crash handling. Ipmlemented
347 IPython as their engine can customize crash handling. Ipmlemented
339 at the request of SAGE.
348 at the request of SAGE.
340
349
341 2006-10-14 Ville Vainio <vivainio@gmail.com>
350 2006-10-14 Ville Vainio <vivainio@gmail.com>
342
351
343 * Magic.py, ipython.el: applied first "safe" part of Rocky
352 * Magic.py, ipython.el: applied first "safe" part of Rocky
344 Bernstein's patch set for pydb integration.
353 Bernstein's patch set for pydb integration.
345
354
346 * Magic.py (%unalias, %alias): %store'd aliases can now be
355 * Magic.py (%unalias, %alias): %store'd aliases can now be
347 removed with '%unalias'. %alias w/o args now shows most
356 removed with '%unalias'. %alias w/o args now shows most
348 interesting (stored / manually defined) aliases last
357 interesting (stored / manually defined) aliases last
349 where they catch the eye w/o scrolling.
358 where they catch the eye w/o scrolling.
350
359
351 * Magic.py (%rehashx), ext_rehashdir.py: files with
360 * Magic.py (%rehashx), ext_rehashdir.py: files with
352 'py' extension are always considered executable, even
361 'py' extension are always considered executable, even
353 when not in PATHEXT environment variable.
362 when not in PATHEXT environment variable.
354
363
355 2006-10-12 Ville Vainio <vivainio@gmail.com>
364 2006-10-12 Ville Vainio <vivainio@gmail.com>
356
365
357 * jobctrl.py: Add new "jobctrl" extension for spawning background
366 * jobctrl.py: Add new "jobctrl" extension for spawning background
358 processes with "&find /". 'import jobctrl' to try it out. Requires
367 processes with "&find /". 'import jobctrl' to try it out. Requires
359 'subprocess' module, standard in python 2.4+.
368 'subprocess' module, standard in python 2.4+.
360
369
361 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
370 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
362 so if foo -> bar and bar -> baz, then foo -> baz.
371 so if foo -> bar and bar -> baz, then foo -> baz.
363
372
364 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
373 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
365
374
366 * IPython/Magic.py (Magic.parse_options): add a new posix option
375 * IPython/Magic.py (Magic.parse_options): add a new posix option
367 to allow parsing of input args in magics that doesn't strip quotes
376 to allow parsing of input args in magics that doesn't strip quotes
368 (if posix=False). This also closes %timeit bug reported by
377 (if posix=False). This also closes %timeit bug reported by
369 Stefan.
378 Stefan.
370
379
371 2006-10-03 Ville Vainio <vivainio@gmail.com>
380 2006-10-03 Ville Vainio <vivainio@gmail.com>
372
381
373 * iplib.py (raw_input, interact): Return ValueError catching for
382 * iplib.py (raw_input, interact): Return ValueError catching for
374 raw_input. Fixes infinite loop for sys.stdin.close() or
383 raw_input. Fixes infinite loop for sys.stdin.close() or
375 sys.stdout.close().
384 sys.stdout.close().
376
385
377 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
386 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
378
387
379 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
388 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
380 to help in handling doctests. irunner is now pretty useful for
389 to help in handling doctests. irunner is now pretty useful for
381 running standalone scripts and simulate a full interactive session
390 running standalone scripts and simulate a full interactive session
382 in a format that can be then pasted as a doctest.
391 in a format that can be then pasted as a doctest.
383
392
384 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
393 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
385 on top of the default (useless) ones. This also fixes the nasty
394 on top of the default (useless) ones. This also fixes the nasty
386 way in which 2.5's Quitter() exits (reverted [1785]).
395 way in which 2.5's Quitter() exits (reverted [1785]).
387
396
388 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
397 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
389 2.5.
398 2.5.
390
399
391 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
400 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
392 color scheme is updated as well when color scheme is changed
401 color scheme is updated as well when color scheme is changed
393 interactively.
402 interactively.
394
403
395 2006-09-27 Ville Vainio <vivainio@gmail.com>
404 2006-09-27 Ville Vainio <vivainio@gmail.com>
396
405
397 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
406 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
398 infinite loop and just exit. It's a hack, but will do for a while.
407 infinite loop and just exit. It's a hack, but will do for a while.
399
408
400 2006-08-25 Walter Doerwald <walter@livinglogic.de>
409 2006-08-25 Walter Doerwald <walter@livinglogic.de>
401
410
402 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
411 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
403 the constructor, this makes it possible to get a list of only directories
412 the constructor, this makes it possible to get a list of only directories
404 or only files.
413 or only files.
405
414
406 2006-08-12 Ville Vainio <vivainio@gmail.com>
415 2006-08-12 Ville Vainio <vivainio@gmail.com>
407
416
408 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
417 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
409 they broke unittest
418 they broke unittest
410
419
411 2006-08-11 Ville Vainio <vivainio@gmail.com>
420 2006-08-11 Ville Vainio <vivainio@gmail.com>
412
421
413 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
422 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
414 by resolving issue properly, i.e. by inheriting FakeModule
423 by resolving issue properly, i.e. by inheriting FakeModule
415 from types.ModuleType. Pickling ipython interactive data
424 from types.ModuleType. Pickling ipython interactive data
416 should still work as usual (testing appreciated).
425 should still work as usual (testing appreciated).
417
426
418 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
427 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
419
428
420 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
429 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
421 running under python 2.3 with code from 2.4 to fix a bug with
430 running under python 2.3 with code from 2.4 to fix a bug with
422 help(). Reported by the Debian maintainers, Norbert Tretkowski
431 help(). Reported by the Debian maintainers, Norbert Tretkowski
423 <norbert-AT-tretkowski.de> and Alexandre Fayolle
432 <norbert-AT-tretkowski.de> and Alexandre Fayolle
424 <afayolle-AT-debian.org>.
433 <afayolle-AT-debian.org>.
425
434
426 2006-08-04 Walter Doerwald <walter@livinglogic.de>
435 2006-08-04 Walter Doerwald <walter@livinglogic.de>
427
436
428 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
437 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
429 (which was displaying "quit" twice).
438 (which was displaying "quit" twice).
430
439
431 2006-07-28 Walter Doerwald <walter@livinglogic.de>
440 2006-07-28 Walter Doerwald <walter@livinglogic.de>
432
441
433 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
442 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
434 the mode argument).
443 the mode argument).
435
444
436 2006-07-27 Walter Doerwald <walter@livinglogic.de>
445 2006-07-27 Walter Doerwald <walter@livinglogic.de>
437
446
438 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
447 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
439 not running under IPython.
448 not running under IPython.
440
449
441 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
450 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
442 and make it iterable (iterating over the attribute itself). Add two new
451 and make it iterable (iterating over the attribute itself). Add two new
443 magic strings for __xattrs__(): If the string starts with "-", the attribute
452 magic strings for __xattrs__(): If the string starts with "-", the attribute
444 will not be displayed in ibrowse's detail view (but it can still be
453 will not be displayed in ibrowse's detail view (but it can still be
445 iterated over). This makes it possible to add attributes that are large
454 iterated over). This makes it possible to add attributes that are large
446 lists or generator methods to the detail view. Replace magic attribute names
455 lists or generator methods to the detail view. Replace magic attribute names
447 and _attrname() and _getattr() with "descriptors": For each type of magic
456 and _attrname() and _getattr() with "descriptors": For each type of magic
448 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
457 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
449 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
458 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
450 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
459 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
451 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
460 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
452 are still supported.
461 are still supported.
453
462
454 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
463 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
455 fails in ibrowse.fetch(), the exception object is added as the last item
464 fails in ibrowse.fetch(), the exception object is added as the last item
456 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
465 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
457 a generator throws an exception midway through execution.
466 a generator throws an exception midway through execution.
458
467
459 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
468 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
460 encoding into methods.
469 encoding into methods.
461
470
462 2006-07-26 Ville Vainio <vivainio@gmail.com>
471 2006-07-26 Ville Vainio <vivainio@gmail.com>
463
472
464 * iplib.py: history now stores multiline input as single
473 * iplib.py: history now stores multiline input as single
465 history entries. Patch by Jorgen Cederlof.
474 history entries. Patch by Jorgen Cederlof.
466
475
467 2006-07-18 Walter Doerwald <walter@livinglogic.de>
476 2006-07-18 Walter Doerwald <walter@livinglogic.de>
468
477
469 * IPython/Extensions/ibrowse.py: Make cursor visible over
478 * IPython/Extensions/ibrowse.py: Make cursor visible over
470 non existing attributes.
479 non existing attributes.
471
480
472 2006-07-14 Walter Doerwald <walter@livinglogic.de>
481 2006-07-14 Walter Doerwald <walter@livinglogic.de>
473
482
474 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
483 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
475 error output of the running command doesn't mess up the screen.
484 error output of the running command doesn't mess up the screen.
476
485
477 2006-07-13 Walter Doerwald <walter@livinglogic.de>
486 2006-07-13 Walter Doerwald <walter@livinglogic.de>
478
487
479 * IPython/Extensions/ipipe.py (isort): Make isort usable without
488 * IPython/Extensions/ipipe.py (isort): Make isort usable without
480 argument. This sorts the items themselves.
489 argument. This sorts the items themselves.
481
490
482 2006-07-12 Walter Doerwald <walter@livinglogic.de>
491 2006-07-12 Walter Doerwald <walter@livinglogic.de>
483
492
484 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
493 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
485 Compile expression strings into code objects. This should speed
494 Compile expression strings into code objects. This should speed
486 up ifilter and friends somewhat.
495 up ifilter and friends somewhat.
487
496
488 2006-07-08 Ville Vainio <vivainio@gmail.com>
497 2006-07-08 Ville Vainio <vivainio@gmail.com>
489
498
490 * Magic.py: %cpaste now strips > from the beginning of lines
499 * Magic.py: %cpaste now strips > from the beginning of lines
491 to ease pasting quoted code from emails. Contributed by
500 to ease pasting quoted code from emails. Contributed by
492 Stefan van der Walt.
501 Stefan van der Walt.
493
502
494 2006-06-29 Ville Vainio <vivainio@gmail.com>
503 2006-06-29 Ville Vainio <vivainio@gmail.com>
495
504
496 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
505 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
497 mode, patch contributed by Darren Dale. NEEDS TESTING!
506 mode, patch contributed by Darren Dale. NEEDS TESTING!
498
507
499 2006-06-28 Walter Doerwald <walter@livinglogic.de>
508 2006-06-28 Walter Doerwald <walter@livinglogic.de>
500
509
501 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
510 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
502 a blue background. Fix fetching new display rows when the browser
511 a blue background. Fix fetching new display rows when the browser
503 scrolls more than a screenful (e.g. by using the goto command).
512 scrolls more than a screenful (e.g. by using the goto command).
504
513
505 2006-06-27 Ville Vainio <vivainio@gmail.com>
514 2006-06-27 Ville Vainio <vivainio@gmail.com>
506
515
507 * Magic.py (_inspect, _ofind) Apply David Huard's
516 * Magic.py (_inspect, _ofind) Apply David Huard's
508 patch for displaying the correct docstring for 'property'
517 patch for displaying the correct docstring for 'property'
509 attributes.
518 attributes.
510
519
511 2006-06-23 Walter Doerwald <walter@livinglogic.de>
520 2006-06-23 Walter Doerwald <walter@livinglogic.de>
512
521
513 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
522 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
514 commands into the methods implementing them.
523 commands into the methods implementing them.
515
524
516 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
525 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
517
526
518 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
527 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
519 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
528 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
520 autoindent support was authored by Jin Liu.
529 autoindent support was authored by Jin Liu.
521
530
522 2006-06-22 Walter Doerwald <walter@livinglogic.de>
531 2006-06-22 Walter Doerwald <walter@livinglogic.de>
523
532
524 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
533 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
525 for keymaps with a custom class that simplifies handling.
534 for keymaps with a custom class that simplifies handling.
526
535
527 2006-06-19 Walter Doerwald <walter@livinglogic.de>
536 2006-06-19 Walter Doerwald <walter@livinglogic.de>
528
537
529 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
538 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
530 resizing. This requires Python 2.5 to work.
539 resizing. This requires Python 2.5 to work.
531
540
532 2006-06-16 Walter Doerwald <walter@livinglogic.de>
541 2006-06-16 Walter Doerwald <walter@livinglogic.de>
533
542
534 * IPython/Extensions/ibrowse.py: Add two new commands to
543 * IPython/Extensions/ibrowse.py: Add two new commands to
535 ibrowse: "hideattr" (mapped to "h") hides the attribute under
544 ibrowse: "hideattr" (mapped to "h") hides the attribute under
536 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
545 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
537 attributes again. Remapped the help command to "?". Display
546 attributes again. Remapped the help command to "?". Display
538 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
547 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
539 as keys for the "home" and "end" commands. Add three new commands
548 as keys for the "home" and "end" commands. Add three new commands
540 to the input mode for "find" and friends: "delend" (CTRL-K)
549 to the input mode for "find" and friends: "delend" (CTRL-K)
541 deletes to the end of line. "incsearchup" searches upwards in the
550 deletes to the end of line. "incsearchup" searches upwards in the
542 command history for an input that starts with the text before the cursor.
551 command history for an input that starts with the text before the cursor.
543 "incsearchdown" does the same downwards. Removed a bogus mapping of
552 "incsearchdown" does the same downwards. Removed a bogus mapping of
544 the x key to "delete".
553 the x key to "delete".
545
554
546 2006-06-15 Ville Vainio <vivainio@gmail.com>
555 2006-06-15 Ville Vainio <vivainio@gmail.com>
547
556
548 * iplib.py, hooks.py: Added new generate_prompt hook that can be
557 * iplib.py, hooks.py: Added new generate_prompt hook that can be
549 used to create prompts dynamically, instead of the "old" way of
558 used to create prompts dynamically, instead of the "old" way of
550 assigning "magic" strings to prompt_in1 and prompt_in2. The old
559 assigning "magic" strings to prompt_in1 and prompt_in2. The old
551 way still works (it's invoked by the default hook), of course.
560 way still works (it's invoked by the default hook), of course.
552
561
553 * Prompts.py: added generate_output_prompt hook for altering output
562 * Prompts.py: added generate_output_prompt hook for altering output
554 prompt
563 prompt
555
564
556 * Release.py: Changed version string to 0.7.3.svn.
565 * Release.py: Changed version string to 0.7.3.svn.
557
566
558 2006-06-15 Walter Doerwald <walter@livinglogic.de>
567 2006-06-15 Walter Doerwald <walter@livinglogic.de>
559
568
560 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
569 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
561 the call to fetch() always tries to fetch enough data for at least one
570 the call to fetch() always tries to fetch enough data for at least one
562 full screen. This makes it possible to simply call moveto(0,0,True) in
571 full screen. This makes it possible to simply call moveto(0,0,True) in
563 the constructor. Fix typos and removed the obsolete goto attribute.
572 the constructor. Fix typos and removed the obsolete goto attribute.
564
573
565 2006-06-12 Ville Vainio <vivainio@gmail.com>
574 2006-06-12 Ville Vainio <vivainio@gmail.com>
566
575
567 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
576 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
568 allowing $variable interpolation within multiline statements,
577 allowing $variable interpolation within multiline statements,
569 though so far only with "sh" profile for a testing period.
578 though so far only with "sh" profile for a testing period.
570 The patch also enables splitting long commands with \ but it
579 The patch also enables splitting long commands with \ but it
571 doesn't work properly yet.
580 doesn't work properly yet.
572
581
573 2006-06-12 Walter Doerwald <walter@livinglogic.de>
582 2006-06-12 Walter Doerwald <walter@livinglogic.de>
574
583
575 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
584 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
576 input history and the position of the cursor in the input history for
585 input history and the position of the cursor in the input history for
577 the find, findbackwards and goto command.
586 the find, findbackwards and goto command.
578
587
579 2006-06-10 Walter Doerwald <walter@livinglogic.de>
588 2006-06-10 Walter Doerwald <walter@livinglogic.de>
580
589
581 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
590 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
582 implements the basic functionality of browser commands that require
591 implements the basic functionality of browser commands that require
583 input. Reimplement the goto, find and findbackwards commands as
592 input. Reimplement the goto, find and findbackwards commands as
584 subclasses of _CommandInput. Add an input history and keymaps to those
593 subclasses of _CommandInput. Add an input history and keymaps to those
585 commands. Add "\r" as a keyboard shortcut for the enterdefault and
594 commands. Add "\r" as a keyboard shortcut for the enterdefault and
586 execute commands.
595 execute commands.
587
596
588 2006-06-07 Ville Vainio <vivainio@gmail.com>
597 2006-06-07 Ville Vainio <vivainio@gmail.com>
589
598
590 * iplib.py: ipython mybatch.ipy exits ipython immediately after
599 * iplib.py: ipython mybatch.ipy exits ipython immediately after
591 running the batch files instead of leaving the session open.
600 running the batch files instead of leaving the session open.
592
601
593 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
602 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
594
603
595 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
604 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
596 the original fix was incomplete. Patch submitted by W. Maier.
605 the original fix was incomplete. Patch submitted by W. Maier.
597
606
598 2006-06-07 Ville Vainio <vivainio@gmail.com>
607 2006-06-07 Ville Vainio <vivainio@gmail.com>
599
608
600 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
609 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
601 Confirmation prompts can be supressed by 'quiet' option.
610 Confirmation prompts can be supressed by 'quiet' option.
602 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
611 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
603
612
604 2006-06-06 *** Released version 0.7.2
613 2006-06-06 *** Released version 0.7.2
605
614
606 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
615 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
607
616
608 * IPython/Release.py (version): Made 0.7.2 final for release.
617 * IPython/Release.py (version): Made 0.7.2 final for release.
609 Repo tagged and release cut.
618 Repo tagged and release cut.
610
619
611 2006-06-05 Ville Vainio <vivainio@gmail.com>
620 2006-06-05 Ville Vainio <vivainio@gmail.com>
612
621
613 * Magic.py (magic_rehashx): Honor no_alias list earlier in
622 * Magic.py (magic_rehashx): Honor no_alias list earlier in
614 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
623 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
615
624
616 * upgrade_dir.py: try import 'path' module a bit harder
625 * upgrade_dir.py: try import 'path' module a bit harder
617 (for %upgrade)
626 (for %upgrade)
618
627
619 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
628 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
620
629
621 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
630 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
622 instead of looping 20 times.
631 instead of looping 20 times.
623
632
624 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
633 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
625 correctly at initialization time. Bug reported by Krishna Mohan
634 correctly at initialization time. Bug reported by Krishna Mohan
626 Gundu <gkmohan-AT-gmail.com> on the user list.
635 Gundu <gkmohan-AT-gmail.com> on the user list.
627
636
628 * IPython/Release.py (version): Mark 0.7.2 version to start
637 * IPython/Release.py (version): Mark 0.7.2 version to start
629 testing for release on 06/06.
638 testing for release on 06/06.
630
639
631 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
640 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
632
641
633 * scripts/irunner: thin script interface so users don't have to
642 * scripts/irunner: thin script interface so users don't have to
634 find the module and call it as an executable, since modules rarely
643 find the module and call it as an executable, since modules rarely
635 live in people's PATH.
644 live in people's PATH.
636
645
637 * IPython/irunner.py (InteractiveRunner.__init__): added
646 * IPython/irunner.py (InteractiveRunner.__init__): added
638 delaybeforesend attribute to control delays with newer versions of
647 delaybeforesend attribute to control delays with newer versions of
639 pexpect. Thanks to detailed help from pexpect's author, Noah
648 pexpect. Thanks to detailed help from pexpect's author, Noah
640 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
649 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
641 correctly (it works in NoColor mode).
650 correctly (it works in NoColor mode).
642
651
643 * IPython/iplib.py (handle_normal): fix nasty crash reported on
652 * IPython/iplib.py (handle_normal): fix nasty crash reported on
644 SAGE list, from improper log() calls.
653 SAGE list, from improper log() calls.
645
654
646 2006-05-31 Ville Vainio <vivainio@gmail.com>
655 2006-05-31 Ville Vainio <vivainio@gmail.com>
647
656
648 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
657 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
649 with args in parens to work correctly with dirs that have spaces.
658 with args in parens to work correctly with dirs that have spaces.
650
659
651 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
660 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
652
661
653 * IPython/Logger.py (Logger.logstart): add option to log raw input
662 * IPython/Logger.py (Logger.logstart): add option to log raw input
654 instead of the processed one. A -r flag was added to the
663 instead of the processed one. A -r flag was added to the
655 %logstart magic used for controlling logging.
664 %logstart magic used for controlling logging.
656
665
657 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
666 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
658
667
659 * IPython/iplib.py (InteractiveShell.__init__): add check for the
668 * IPython/iplib.py (InteractiveShell.__init__): add check for the
660 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
669 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
661 recognize the option. After a bug report by Will Maier. This
670 recognize the option. After a bug report by Will Maier. This
662 closes #64 (will do it after confirmation from W. Maier).
671 closes #64 (will do it after confirmation from W. Maier).
663
672
664 * IPython/irunner.py: New module to run scripts as if manually
673 * IPython/irunner.py: New module to run scripts as if manually
665 typed into an interactive environment, based on pexpect. After a
674 typed into an interactive environment, based on pexpect. After a
666 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
675 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
667 ipython-user list. Simple unittests in the tests/ directory.
676 ipython-user list. Simple unittests in the tests/ directory.
668
677
669 * tools/release: add Will Maier, OpenBSD port maintainer, to
678 * tools/release: add Will Maier, OpenBSD port maintainer, to
670 recepients list. We are now officially part of the OpenBSD ports:
679 recepients list. We are now officially part of the OpenBSD ports:
671 http://www.openbsd.org/ports.html ! Many thanks to Will for the
680 http://www.openbsd.org/ports.html ! Many thanks to Will for the
672 work.
681 work.
673
682
674 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
683 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
675
684
676 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
685 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
677 so that it doesn't break tkinter apps.
686 so that it doesn't break tkinter apps.
678
687
679 * IPython/iplib.py (_prefilter): fix bug where aliases would
688 * IPython/iplib.py (_prefilter): fix bug where aliases would
680 shadow variables when autocall was fully off. Reported by SAGE
689 shadow variables when autocall was fully off. Reported by SAGE
681 author William Stein.
690 author William Stein.
682
691
683 * IPython/OInspect.py (Inspector.__init__): add a flag to control
692 * IPython/OInspect.py (Inspector.__init__): add a flag to control
684 at what detail level strings are computed when foo? is requested.
693 at what detail level strings are computed when foo? is requested.
685 This allows users to ask for example that the string form of an
694 This allows users to ask for example that the string form of an
686 object is only computed when foo?? is called, or even never, by
695 object is only computed when foo?? is called, or even never, by
687 setting the object_info_string_level >= 2 in the configuration
696 setting the object_info_string_level >= 2 in the configuration
688 file. This new option has been added and documented. After a
697 file. This new option has been added and documented. After a
689 request by SAGE to be able to control the printing of very large
698 request by SAGE to be able to control the printing of very large
690 objects more easily.
699 objects more easily.
691
700
692 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
701 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
693
702
694 * IPython/ipmaker.py (make_IPython): remove the ipython call path
703 * IPython/ipmaker.py (make_IPython): remove the ipython call path
695 from sys.argv, to be 100% consistent with how Python itself works
704 from sys.argv, to be 100% consistent with how Python itself works
696 (as seen for example with python -i file.py). After a bug report
705 (as seen for example with python -i file.py). After a bug report
697 by Jeffrey Collins.
706 by Jeffrey Collins.
698
707
699 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
708 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
700 nasty bug which was preventing custom namespaces with -pylab,
709 nasty bug which was preventing custom namespaces with -pylab,
701 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
710 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
702 compatibility (long gone from mpl).
711 compatibility (long gone from mpl).
703
712
704 * IPython/ipapi.py (make_session): name change: create->make. We
713 * IPython/ipapi.py (make_session): name change: create->make. We
705 use make in other places (ipmaker,...), it's shorter and easier to
714 use make in other places (ipmaker,...), it's shorter and easier to
706 type and say, etc. I'm trying to clean things before 0.7.2 so
715 type and say, etc. I'm trying to clean things before 0.7.2 so
707 that I can keep things stable wrt to ipapi in the chainsaw branch.
716 that I can keep things stable wrt to ipapi in the chainsaw branch.
708
717
709 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
718 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
710 python-mode recognizes our debugger mode. Add support for
719 python-mode recognizes our debugger mode. Add support for
711 autoindent inside (X)emacs. After a patch sent in by Jin Liu
720 autoindent inside (X)emacs. After a patch sent in by Jin Liu
712 <m.liu.jin-AT-gmail.com> originally written by
721 <m.liu.jin-AT-gmail.com> originally written by
713 doxgen-AT-newsmth.net (with minor modifications for xemacs
722 doxgen-AT-newsmth.net (with minor modifications for xemacs
714 compatibility)
723 compatibility)
715
724
716 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
725 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
717 tracebacks when walking the stack so that the stack tracking system
726 tracebacks when walking the stack so that the stack tracking system
718 in emacs' python-mode can identify the frames correctly.
727 in emacs' python-mode can identify the frames correctly.
719
728
720 * IPython/ipmaker.py (make_IPython): make the internal (and
729 * IPython/ipmaker.py (make_IPython): make the internal (and
721 default config) autoedit_syntax value false by default. Too many
730 default config) autoedit_syntax value false by default. Too many
722 users have complained to me (both on and off-list) about problems
731 users have complained to me (both on and off-list) about problems
723 with this option being on by default, so I'm making it default to
732 with this option being on by default, so I'm making it default to
724 off. It can still be enabled by anyone via the usual mechanisms.
733 off. It can still be enabled by anyone via the usual mechanisms.
725
734
726 * IPython/completer.py (Completer.attr_matches): add support for
735 * IPython/completer.py (Completer.attr_matches): add support for
727 PyCrust-style _getAttributeNames magic method. Patch contributed
736 PyCrust-style _getAttributeNames magic method. Patch contributed
728 by <mscott-AT-goldenspud.com>. Closes #50.
737 by <mscott-AT-goldenspud.com>. Closes #50.
729
738
730 * IPython/iplib.py (InteractiveShell.__init__): remove the
739 * IPython/iplib.py (InteractiveShell.__init__): remove the
731 deletion of exit/quit from __builtin__, which can break
740 deletion of exit/quit from __builtin__, which can break
732 third-party tools like the Zope debugging console. The
741 third-party tools like the Zope debugging console. The
733 %exit/%quit magics remain. In general, it's probably a good idea
742 %exit/%quit magics remain. In general, it's probably a good idea
734 not to delete anything from __builtin__, since we never know what
743 not to delete anything from __builtin__, since we never know what
735 that will break. In any case, python now (for 2.5) will support
744 that will break. In any case, python now (for 2.5) will support
736 'real' exit/quit, so this issue is moot. Closes #55.
745 'real' exit/quit, so this issue is moot. Closes #55.
737
746
738 * IPython/genutils.py (with_obj): rename the 'with' function to
747 * IPython/genutils.py (with_obj): rename the 'with' function to
739 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
748 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
740 becomes a language keyword. Closes #53.
749 becomes a language keyword. Closes #53.
741
750
742 * IPython/FakeModule.py (FakeModule.__init__): add a proper
751 * IPython/FakeModule.py (FakeModule.__init__): add a proper
743 __file__ attribute to this so it fools more things into thinking
752 __file__ attribute to this so it fools more things into thinking
744 it is a real module. Closes #59.
753 it is a real module. Closes #59.
745
754
746 * IPython/Magic.py (magic_edit): add -n option to open the editor
755 * IPython/Magic.py (magic_edit): add -n option to open the editor
747 at a specific line number. After a patch by Stefan van der Walt.
756 at a specific line number. After a patch by Stefan van der Walt.
748
757
749 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
758 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
750
759
751 * IPython/iplib.py (edit_syntax_error): fix crash when for some
760 * IPython/iplib.py (edit_syntax_error): fix crash when for some
752 reason the file could not be opened. After automatic crash
761 reason the file could not be opened. After automatic crash
753 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
762 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
754 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
763 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
755 (_should_recompile): Don't fire editor if using %bg, since there
764 (_should_recompile): Don't fire editor if using %bg, since there
756 is no file in the first place. From the same report as above.
765 is no file in the first place. From the same report as above.
757 (raw_input): protect against faulty third-party prefilters. After
766 (raw_input): protect against faulty third-party prefilters. After
758 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
767 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
759 while running under SAGE.
768 while running under SAGE.
760
769
761 2006-05-23 Ville Vainio <vivainio@gmail.com>
770 2006-05-23 Ville Vainio <vivainio@gmail.com>
762
771
763 * ipapi.py: Stripped down ip.to_user_ns() to work only as
772 * ipapi.py: Stripped down ip.to_user_ns() to work only as
764 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
773 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
765 now returns None (again), unless dummy is specifically allowed by
774 now returns None (again), unless dummy is specifically allowed by
766 ipapi.get(allow_dummy=True).
775 ipapi.get(allow_dummy=True).
767
776
768 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
777 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
769
778
770 * IPython: remove all 2.2-compatibility objects and hacks from
779 * IPython: remove all 2.2-compatibility objects and hacks from
771 everywhere, since we only support 2.3 at this point. Docs
780 everywhere, since we only support 2.3 at this point. Docs
772 updated.
781 updated.
773
782
774 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
783 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
775 Anything requiring extra validation can be turned into a Python
784 Anything requiring extra validation can be turned into a Python
776 property in the future. I used a property for the db one b/c
785 property in the future. I used a property for the db one b/c
777 there was a nasty circularity problem with the initialization
786 there was a nasty circularity problem with the initialization
778 order, which right now I don't have time to clean up.
787 order, which right now I don't have time to clean up.
779
788
780 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
789 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
781 another locking bug reported by Jorgen. I'm not 100% sure though,
790 another locking bug reported by Jorgen. I'm not 100% sure though,
782 so more testing is needed...
791 so more testing is needed...
783
792
784 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
793 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
785
794
786 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
795 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
787 local variables from any routine in user code (typically executed
796 local variables from any routine in user code (typically executed
788 with %run) directly into the interactive namespace. Very useful
797 with %run) directly into the interactive namespace. Very useful
789 when doing complex debugging.
798 when doing complex debugging.
790 (IPythonNotRunning): Changed the default None object to a dummy
799 (IPythonNotRunning): Changed the default None object to a dummy
791 whose attributes can be queried as well as called without
800 whose attributes can be queried as well as called without
792 exploding, to ease writing code which works transparently both in
801 exploding, to ease writing code which works transparently both in
793 and out of ipython and uses some of this API.
802 and out of ipython and uses some of this API.
794
803
795 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
804 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
796
805
797 * IPython/hooks.py (result_display): Fix the fact that our display
806 * IPython/hooks.py (result_display): Fix the fact that our display
798 hook was using str() instead of repr(), as the default python
807 hook was using str() instead of repr(), as the default python
799 console does. This had gone unnoticed b/c it only happened if
808 console does. This had gone unnoticed b/c it only happened if
800 %Pprint was off, but the inconsistency was there.
809 %Pprint was off, but the inconsistency was there.
801
810
802 2006-05-15 Ville Vainio <vivainio@gmail.com>
811 2006-05-15 Ville Vainio <vivainio@gmail.com>
803
812
804 * Oinspect.py: Only show docstring for nonexisting/binary files
813 * Oinspect.py: Only show docstring for nonexisting/binary files
805 when doing object??, closing ticket #62
814 when doing object??, closing ticket #62
806
815
807 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
816 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
808
817
809 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
818 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
810 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
819 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
811 was being released in a routine which hadn't checked if it had
820 was being released in a routine which hadn't checked if it had
812 been the one to acquire it.
821 been the one to acquire it.
813
822
814 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
823 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
815
824
816 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
825 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
817
826
818 2006-04-11 Ville Vainio <vivainio@gmail.com>
827 2006-04-11 Ville Vainio <vivainio@gmail.com>
819
828
820 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
829 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
821 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
830 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
822 prefilters, allowing stuff like magics and aliases in the file.
831 prefilters, allowing stuff like magics and aliases in the file.
823
832
824 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
833 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
825 added. Supported now are "%clear in" and "%clear out" (clear input and
834 added. Supported now are "%clear in" and "%clear out" (clear input and
826 output history, respectively). Also fixed CachedOutput.flush to
835 output history, respectively). Also fixed CachedOutput.flush to
827 properly flush the output cache.
836 properly flush the output cache.
828
837
829 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
838 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
830 half-success (and fail explicitly).
839 half-success (and fail explicitly).
831
840
832 2006-03-28 Ville Vainio <vivainio@gmail.com>
841 2006-03-28 Ville Vainio <vivainio@gmail.com>
833
842
834 * iplib.py: Fix quoting of aliases so that only argless ones
843 * iplib.py: Fix quoting of aliases so that only argless ones
835 are quoted
844 are quoted
836
845
837 2006-03-28 Ville Vainio <vivainio@gmail.com>
846 2006-03-28 Ville Vainio <vivainio@gmail.com>
838
847
839 * iplib.py: Quote aliases with spaces in the name.
848 * iplib.py: Quote aliases with spaces in the name.
840 "c:\program files\blah\bin" is now legal alias target.
849 "c:\program files\blah\bin" is now legal alias target.
841
850
842 * ext_rehashdir.py: Space no longer allowed as arg
851 * ext_rehashdir.py: Space no longer allowed as arg
843 separator, since space is legal in path names.
852 separator, since space is legal in path names.
844
853
845 2006-03-16 Ville Vainio <vivainio@gmail.com>
854 2006-03-16 Ville Vainio <vivainio@gmail.com>
846
855
847 * upgrade_dir.py: Take path.py from Extensions, correcting
856 * upgrade_dir.py: Take path.py from Extensions, correcting
848 %upgrade magic
857 %upgrade magic
849
858
850 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
859 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
851
860
852 * hooks.py: Only enclose editor binary in quotes if legal and
861 * hooks.py: Only enclose editor binary in quotes if legal and
853 necessary (space in the name, and is an existing file). Fixes a bug
862 necessary (space in the name, and is an existing file). Fixes a bug
854 reported by Zachary Pincus.
863 reported by Zachary Pincus.
855
864
856 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
865 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
857
866
858 * Manual: thanks to a tip on proper color handling for Emacs, by
867 * Manual: thanks to a tip on proper color handling for Emacs, by
859 Eric J Haywiser <ejh1-AT-MIT.EDU>.
868 Eric J Haywiser <ejh1-AT-MIT.EDU>.
860
869
861 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
870 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
862 by applying the provided patch. Thanks to Liu Jin
871 by applying the provided patch. Thanks to Liu Jin
863 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
872 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
864 XEmacs/Linux, I'm trusting the submitter that it actually helps
873 XEmacs/Linux, I'm trusting the submitter that it actually helps
865 under win32/GNU Emacs. Will revisit if any problems are reported.
874 under win32/GNU Emacs. Will revisit if any problems are reported.
866
875
867 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
876 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
868
877
869 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
878 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
870 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
879 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
871
880
872 2006-03-12 Ville Vainio <vivainio@gmail.com>
881 2006-03-12 Ville Vainio <vivainio@gmail.com>
873
882
874 * Magic.py (magic_timeit): Added %timeit magic, contributed by
883 * Magic.py (magic_timeit): Added %timeit magic, contributed by
875 Torsten Marek.
884 Torsten Marek.
876
885
877 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
886 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
878
887
879 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
888 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
880 line ranges works again.
889 line ranges works again.
881
890
882 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
891 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
883
892
884 * IPython/iplib.py (showtraceback): add back sys.last_traceback
893 * IPython/iplib.py (showtraceback): add back sys.last_traceback
885 and friends, after a discussion with Zach Pincus on ipython-user.
894 and friends, after a discussion with Zach Pincus on ipython-user.
886 I'm not 100% sure, but after thinking about it quite a bit, it may
895 I'm not 100% sure, but after thinking about it quite a bit, it may
887 be OK. Testing with the multithreaded shells didn't reveal any
896 be OK. Testing with the multithreaded shells didn't reveal any
888 problems, but let's keep an eye out.
897 problems, but let's keep an eye out.
889
898
890 In the process, I fixed a few things which were calling
899 In the process, I fixed a few things which were calling
891 self.InteractiveTB() directly (like safe_execfile), which is a
900 self.InteractiveTB() directly (like safe_execfile), which is a
892 mistake: ALL exception reporting should be done by calling
901 mistake: ALL exception reporting should be done by calling
893 self.showtraceback(), which handles state and tab-completion and
902 self.showtraceback(), which handles state and tab-completion and
894 more.
903 more.
895
904
896 2006-03-01 Ville Vainio <vivainio@gmail.com>
905 2006-03-01 Ville Vainio <vivainio@gmail.com>
897
906
898 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
907 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
899 To use, do "from ipipe import *".
908 To use, do "from ipipe import *".
900
909
901 2006-02-24 Ville Vainio <vivainio@gmail.com>
910 2006-02-24 Ville Vainio <vivainio@gmail.com>
902
911
903 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
912 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
904 "cleanly" and safely than the older upgrade mechanism.
913 "cleanly" and safely than the older upgrade mechanism.
905
914
906 2006-02-21 Ville Vainio <vivainio@gmail.com>
915 2006-02-21 Ville Vainio <vivainio@gmail.com>
907
916
908 * Magic.py: %save works again.
917 * Magic.py: %save works again.
909
918
910 2006-02-15 Ville Vainio <vivainio@gmail.com>
919 2006-02-15 Ville Vainio <vivainio@gmail.com>
911
920
912 * Magic.py: %Pprint works again
921 * Magic.py: %Pprint works again
913
922
914 * Extensions/ipy_sane_defaults.py: Provide everything provided
923 * Extensions/ipy_sane_defaults.py: Provide everything provided
915 in default ipythonrc, to make it possible to have a completely empty
924 in default ipythonrc, to make it possible to have a completely empty
916 ipythonrc (and thus completely rc-file free configuration)
925 ipythonrc (and thus completely rc-file free configuration)
917
926
918 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
927 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
919
928
920 * IPython/hooks.py (editor): quote the call to the editor command,
929 * IPython/hooks.py (editor): quote the call to the editor command,
921 to allow commands with spaces in them. Problem noted by watching
930 to allow commands with spaces in them. Problem noted by watching
922 Ian Oswald's video about textpad under win32 at
931 Ian Oswald's video about textpad under win32 at
923 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
932 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
924
933
925 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
934 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
926 describing magics (we haven't used @ for a loong time).
935 describing magics (we haven't used @ for a loong time).
927
936
928 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
937 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
929 contributed by marienz to close
938 contributed by marienz to close
930 http://www.scipy.net/roundup/ipython/issue53.
939 http://www.scipy.net/roundup/ipython/issue53.
931
940
932 2006-02-10 Ville Vainio <vivainio@gmail.com>
941 2006-02-10 Ville Vainio <vivainio@gmail.com>
933
942
934 * genutils.py: getoutput now works in win32 too
943 * genutils.py: getoutput now works in win32 too
935
944
936 * completer.py: alias and magic completion only invoked
945 * completer.py: alias and magic completion only invoked
937 at the first "item" in the line, to avoid "cd %store"
946 at the first "item" in the line, to avoid "cd %store"
938 nonsense.
947 nonsense.
939
948
940 2006-02-09 Ville Vainio <vivainio@gmail.com>
949 2006-02-09 Ville Vainio <vivainio@gmail.com>
941
950
942 * test/*: Added a unit testing framework (finally).
951 * test/*: Added a unit testing framework (finally).
943 '%run runtests.py' to run test_*.
952 '%run runtests.py' to run test_*.
944
953
945 * ipapi.py: Exposed runlines and set_custom_exc
954 * ipapi.py: Exposed runlines and set_custom_exc
946
955
947 2006-02-07 Ville Vainio <vivainio@gmail.com>
956 2006-02-07 Ville Vainio <vivainio@gmail.com>
948
957
949 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
958 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
950 instead use "f(1 2)" as before.
959 instead use "f(1 2)" as before.
951
960
952 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
961 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
953
962
954 * IPython/demo.py (IPythonDemo): Add new classes to the demo
963 * IPython/demo.py (IPythonDemo): Add new classes to the demo
955 facilities, for demos processed by the IPython input filter
964 facilities, for demos processed by the IPython input filter
956 (IPythonDemo), and for running a script one-line-at-a-time as a
965 (IPythonDemo), and for running a script one-line-at-a-time as a
957 demo, both for pure Python (LineDemo) and for IPython-processed
966 demo, both for pure Python (LineDemo) and for IPython-processed
958 input (IPythonLineDemo). After a request by Dave Kohel, from the
967 input (IPythonLineDemo). After a request by Dave Kohel, from the
959 SAGE team.
968 SAGE team.
960 (Demo.edit): added an edit() method to the demo objects, to edit
969 (Demo.edit): added an edit() method to the demo objects, to edit
961 the in-memory copy of the last executed block.
970 the in-memory copy of the last executed block.
962
971
963 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
972 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
964 processing to %edit, %macro and %save. These commands can now be
973 processing to %edit, %macro and %save. These commands can now be
965 invoked on the unprocessed input as it was typed by the user
974 invoked on the unprocessed input as it was typed by the user
966 (without any prefilters applied). After requests by the SAGE team
975 (without any prefilters applied). After requests by the SAGE team
967 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
976 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
968
977
969 2006-02-01 Ville Vainio <vivainio@gmail.com>
978 2006-02-01 Ville Vainio <vivainio@gmail.com>
970
979
971 * setup.py, eggsetup.py: easy_install ipython==dev works
980 * setup.py, eggsetup.py: easy_install ipython==dev works
972 correctly now (on Linux)
981 correctly now (on Linux)
973
982
974 * ipy_user_conf,ipmaker: user config changes, removed spurious
983 * ipy_user_conf,ipmaker: user config changes, removed spurious
975 warnings
984 warnings
976
985
977 * iplib: if rc.banner is string, use it as is.
986 * iplib: if rc.banner is string, use it as is.
978
987
979 * Magic: %pycat accepts a string argument and pages it's contents.
988 * Magic: %pycat accepts a string argument and pages it's contents.
980
989
981
990
982 2006-01-30 Ville Vainio <vivainio@gmail.com>
991 2006-01-30 Ville Vainio <vivainio@gmail.com>
983
992
984 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
993 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
985 Now %store and bookmarks work through PickleShare, meaning that
994 Now %store and bookmarks work through PickleShare, meaning that
986 concurrent access is possible and all ipython sessions see the
995 concurrent access is possible and all ipython sessions see the
987 same database situation all the time, instead of snapshot of
996 same database situation all the time, instead of snapshot of
988 the situation when the session was started. Hence, %bookmark
997 the situation when the session was started. Hence, %bookmark
989 results are immediately accessible from othes sessions. The database
998 results are immediately accessible from othes sessions. The database
990 is also available for use by user extensions. See:
999 is also available for use by user extensions. See:
991 http://www.python.org/pypi/pickleshare
1000 http://www.python.org/pypi/pickleshare
992
1001
993 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1002 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
994
1003
995 * aliases can now be %store'd
1004 * aliases can now be %store'd
996
1005
997 * path.py moved to Extensions so that pickleshare does not need
1006 * path.py moved to Extensions so that pickleshare does not need
998 IPython-specific import. Extensions added to pythonpath right
1007 IPython-specific import. Extensions added to pythonpath right
999 at __init__.
1008 at __init__.
1000
1009
1001 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1010 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1002 called with _ip.system and the pre-transformed command string.
1011 called with _ip.system and the pre-transformed command string.
1003
1012
1004 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1013 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1005
1014
1006 * IPython/iplib.py (interact): Fix that we were not catching
1015 * IPython/iplib.py (interact): Fix that we were not catching
1007 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1016 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1008 logic here had to change, but it's fixed now.
1017 logic here had to change, but it's fixed now.
1009
1018
1010 2006-01-29 Ville Vainio <vivainio@gmail.com>
1019 2006-01-29 Ville Vainio <vivainio@gmail.com>
1011
1020
1012 * iplib.py: Try to import pyreadline on Windows.
1021 * iplib.py: Try to import pyreadline on Windows.
1013
1022
1014 2006-01-27 Ville Vainio <vivainio@gmail.com>
1023 2006-01-27 Ville Vainio <vivainio@gmail.com>
1015
1024
1016 * iplib.py: Expose ipapi as _ip in builtin namespace.
1025 * iplib.py: Expose ipapi as _ip in builtin namespace.
1017 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1026 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1018 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1027 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1019 syntax now produce _ip.* variant of the commands.
1028 syntax now produce _ip.* variant of the commands.
1020
1029
1021 * "_ip.options().autoedit_syntax = 2" automatically throws
1030 * "_ip.options().autoedit_syntax = 2" automatically throws
1022 user to editor for syntax error correction without prompting.
1031 user to editor for syntax error correction without prompting.
1023
1032
1024 2006-01-27 Ville Vainio <vivainio@gmail.com>
1033 2006-01-27 Ville Vainio <vivainio@gmail.com>
1025
1034
1026 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1035 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1027 'ipython' at argv[0]) executed through command line.
1036 'ipython' at argv[0]) executed through command line.
1028 NOTE: this DEPRECATES calling ipython with multiple scripts
1037 NOTE: this DEPRECATES calling ipython with multiple scripts
1029 ("ipython a.py b.py c.py")
1038 ("ipython a.py b.py c.py")
1030
1039
1031 * iplib.py, hooks.py: Added configurable input prefilter,
1040 * iplib.py, hooks.py: Added configurable input prefilter,
1032 named 'input_prefilter'. See ext_rescapture.py for example
1041 named 'input_prefilter'. See ext_rescapture.py for example
1033 usage.
1042 usage.
1034
1043
1035 * ext_rescapture.py, Magic.py: Better system command output capture
1044 * ext_rescapture.py, Magic.py: Better system command output capture
1036 through 'var = !ls' (deprecates user-visible %sc). Same notation
1045 through 'var = !ls' (deprecates user-visible %sc). Same notation
1037 applies for magics, 'var = %alias' assigns alias list to var.
1046 applies for magics, 'var = %alias' assigns alias list to var.
1038
1047
1039 * ipapi.py: added meta() for accessing extension-usable data store.
1048 * ipapi.py: added meta() for accessing extension-usable data store.
1040
1049
1041 * iplib.py: added InteractiveShell.getapi(). New magics should be
1050 * iplib.py: added InteractiveShell.getapi(). New magics should be
1042 written doing self.getapi() instead of using the shell directly.
1051 written doing self.getapi() instead of using the shell directly.
1043
1052
1044 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1053 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1045 %store foo >> ~/myfoo.txt to store variables to files (in clean
1054 %store foo >> ~/myfoo.txt to store variables to files (in clean
1046 textual form, not a restorable pickle).
1055 textual form, not a restorable pickle).
1047
1056
1048 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1057 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1049
1058
1050 * usage.py, Magic.py: added %quickref
1059 * usage.py, Magic.py: added %quickref
1051
1060
1052 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1061 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1053
1062
1054 * GetoptErrors when invoking magics etc. with wrong args
1063 * GetoptErrors when invoking magics etc. with wrong args
1055 are now more helpful:
1064 are now more helpful:
1056 GetoptError: option -l not recognized (allowed: "qb" )
1065 GetoptError: option -l not recognized (allowed: "qb" )
1057
1066
1058 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1067 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1059
1068
1060 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1069 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1061 computationally intensive blocks don't appear to stall the demo.
1070 computationally intensive blocks don't appear to stall the demo.
1062
1071
1063 2006-01-24 Ville Vainio <vivainio@gmail.com>
1072 2006-01-24 Ville Vainio <vivainio@gmail.com>
1064
1073
1065 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1074 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1066 value to manipulate resulting history entry.
1075 value to manipulate resulting history entry.
1067
1076
1068 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1077 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1069 to instance methods of IPApi class, to make extending an embedded
1078 to instance methods of IPApi class, to make extending an embedded
1070 IPython feasible. See ext_rehashdir.py for example usage.
1079 IPython feasible. See ext_rehashdir.py for example usage.
1071
1080
1072 * Merged 1071-1076 from branches/0.7.1
1081 * Merged 1071-1076 from branches/0.7.1
1073
1082
1074
1083
1075 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1084 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1076
1085
1077 * tools/release (daystamp): Fix build tools to use the new
1086 * tools/release (daystamp): Fix build tools to use the new
1078 eggsetup.py script to build lightweight eggs.
1087 eggsetup.py script to build lightweight eggs.
1079
1088
1080 * Applied changesets 1062 and 1064 before 0.7.1 release.
1089 * Applied changesets 1062 and 1064 before 0.7.1 release.
1081
1090
1082 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1091 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1083 see the raw input history (without conversions like %ls ->
1092 see the raw input history (without conversions like %ls ->
1084 ipmagic("ls")). After a request from W. Stein, SAGE
1093 ipmagic("ls")). After a request from W. Stein, SAGE
1085 (http://modular.ucsd.edu/sage) developer. This information is
1094 (http://modular.ucsd.edu/sage) developer. This information is
1086 stored in the input_hist_raw attribute of the IPython instance, so
1095 stored in the input_hist_raw attribute of the IPython instance, so
1087 developers can access it if needed (it's an InputList instance).
1096 developers can access it if needed (it's an InputList instance).
1088
1097
1089 * Versionstring = 0.7.2.svn
1098 * Versionstring = 0.7.2.svn
1090
1099
1091 * eggsetup.py: A separate script for constructing eggs, creates
1100 * eggsetup.py: A separate script for constructing eggs, creates
1092 proper launch scripts even on Windows (an .exe file in
1101 proper launch scripts even on Windows (an .exe file in
1093 \python24\scripts).
1102 \python24\scripts).
1094
1103
1095 * ipapi.py: launch_new_instance, launch entry point needed for the
1104 * ipapi.py: launch_new_instance, launch entry point needed for the
1096 egg.
1105 egg.
1097
1106
1098 2006-01-23 Ville Vainio <vivainio@gmail.com>
1107 2006-01-23 Ville Vainio <vivainio@gmail.com>
1099
1108
1100 * Added %cpaste magic for pasting python code
1109 * Added %cpaste magic for pasting python code
1101
1110
1102 2006-01-22 Ville Vainio <vivainio@gmail.com>
1111 2006-01-22 Ville Vainio <vivainio@gmail.com>
1103
1112
1104 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1113 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1105
1114
1106 * Versionstring = 0.7.2.svn
1115 * Versionstring = 0.7.2.svn
1107
1116
1108 * eggsetup.py: A separate script for constructing eggs, creates
1117 * eggsetup.py: A separate script for constructing eggs, creates
1109 proper launch scripts even on Windows (an .exe file in
1118 proper launch scripts even on Windows (an .exe file in
1110 \python24\scripts).
1119 \python24\scripts).
1111
1120
1112 * ipapi.py: launch_new_instance, launch entry point needed for the
1121 * ipapi.py: launch_new_instance, launch entry point needed for the
1113 egg.
1122 egg.
1114
1123
1115 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1124 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1116
1125
1117 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1126 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1118 %pfile foo would print the file for foo even if it was a binary.
1127 %pfile foo would print the file for foo even if it was a binary.
1119 Now, extensions '.so' and '.dll' are skipped.
1128 Now, extensions '.so' and '.dll' are skipped.
1120
1129
1121 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1130 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1122 bug, where macros would fail in all threaded modes. I'm not 100%
1131 bug, where macros would fail in all threaded modes. I'm not 100%
1123 sure, so I'm going to put out an rc instead of making a release
1132 sure, so I'm going to put out an rc instead of making a release
1124 today, and wait for feedback for at least a few days.
1133 today, and wait for feedback for at least a few days.
1125
1134
1126 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1135 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1127 it...) the handling of pasting external code with autoindent on.
1136 it...) the handling of pasting external code with autoindent on.
1128 To get out of a multiline input, the rule will appear for most
1137 To get out of a multiline input, the rule will appear for most
1129 users unchanged: two blank lines or change the indent level
1138 users unchanged: two blank lines or change the indent level
1130 proposed by IPython. But there is a twist now: you can
1139 proposed by IPython. But there is a twist now: you can
1131 add/subtract only *one or two spaces*. If you add/subtract three
1140 add/subtract only *one or two spaces*. If you add/subtract three
1132 or more (unless you completely delete the line), IPython will
1141 or more (unless you completely delete the line), IPython will
1133 accept that line, and you'll need to enter a second one of pure
1142 accept that line, and you'll need to enter a second one of pure
1134 whitespace. I know it sounds complicated, but I can't find a
1143 whitespace. I know it sounds complicated, but I can't find a
1135 different solution that covers all the cases, with the right
1144 different solution that covers all the cases, with the right
1136 heuristics. Hopefully in actual use, nobody will really notice
1145 heuristics. Hopefully in actual use, nobody will really notice
1137 all these strange rules and things will 'just work'.
1146 all these strange rules and things will 'just work'.
1138
1147
1139 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1148 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1140
1149
1141 * IPython/iplib.py (interact): catch exceptions which can be
1150 * IPython/iplib.py (interact): catch exceptions which can be
1142 triggered asynchronously by signal handlers. Thanks to an
1151 triggered asynchronously by signal handlers. Thanks to an
1143 automatic crash report, submitted by Colin Kingsley
1152 automatic crash report, submitted by Colin Kingsley
1144 <tercel-AT-gentoo.org>.
1153 <tercel-AT-gentoo.org>.
1145
1154
1146 2006-01-20 Ville Vainio <vivainio@gmail.com>
1155 2006-01-20 Ville Vainio <vivainio@gmail.com>
1147
1156
1148 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1157 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1149 (%rehashdir, very useful, try it out) of how to extend ipython
1158 (%rehashdir, very useful, try it out) of how to extend ipython
1150 with new magics. Also added Extensions dir to pythonpath to make
1159 with new magics. Also added Extensions dir to pythonpath to make
1151 importing extensions easy.
1160 importing extensions easy.
1152
1161
1153 * %store now complains when trying to store interactively declared
1162 * %store now complains when trying to store interactively declared
1154 classes / instances of those classes.
1163 classes / instances of those classes.
1155
1164
1156 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1165 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1157 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1166 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1158 if they exist, and ipy_user_conf.py with some defaults is created for
1167 if they exist, and ipy_user_conf.py with some defaults is created for
1159 the user.
1168 the user.
1160
1169
1161 * Startup rehashing done by the config file, not InterpreterExec.
1170 * Startup rehashing done by the config file, not InterpreterExec.
1162 This means system commands are available even without selecting the
1171 This means system commands are available even without selecting the
1163 pysh profile. It's the sensible default after all.
1172 pysh profile. It's the sensible default after all.
1164
1173
1165 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1174 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1166
1175
1167 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1176 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1168 multiline code with autoindent on working. But I am really not
1177 multiline code with autoindent on working. But I am really not
1169 sure, so this needs more testing. Will commit a debug-enabled
1178 sure, so this needs more testing. Will commit a debug-enabled
1170 version for now, while I test it some more, so that Ville and
1179 version for now, while I test it some more, so that Ville and
1171 others may also catch any problems. Also made
1180 others may also catch any problems. Also made
1172 self.indent_current_str() a method, to ensure that there's no
1181 self.indent_current_str() a method, to ensure that there's no
1173 chance of the indent space count and the corresponding string
1182 chance of the indent space count and the corresponding string
1174 falling out of sync. All code needing the string should just call
1183 falling out of sync. All code needing the string should just call
1175 the method.
1184 the method.
1176
1185
1177 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1186 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1178
1187
1179 * IPython/Magic.py (magic_edit): fix check for when users don't
1188 * IPython/Magic.py (magic_edit): fix check for when users don't
1180 save their output files, the try/except was in the wrong section.
1189 save their output files, the try/except was in the wrong section.
1181
1190
1182 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1191 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1183
1192
1184 * IPython/Magic.py (magic_run): fix __file__ global missing from
1193 * IPython/Magic.py (magic_run): fix __file__ global missing from
1185 script's namespace when executed via %run. After a report by
1194 script's namespace when executed via %run. After a report by
1186 Vivian.
1195 Vivian.
1187
1196
1188 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1197 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1189 when using python 2.4. The parent constructor changed in 2.4, and
1198 when using python 2.4. The parent constructor changed in 2.4, and
1190 we need to track it directly (we can't call it, as it messes up
1199 we need to track it directly (we can't call it, as it messes up
1191 readline and tab-completion inside our pdb would stop working).
1200 readline and tab-completion inside our pdb would stop working).
1192 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1201 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1193
1202
1194 2006-01-16 Ville Vainio <vivainio@gmail.com>
1203 2006-01-16 Ville Vainio <vivainio@gmail.com>
1195
1204
1196 * Ipython/magic.py: Reverted back to old %edit functionality
1205 * Ipython/magic.py: Reverted back to old %edit functionality
1197 that returns file contents on exit.
1206 that returns file contents on exit.
1198
1207
1199 * IPython/path.py: Added Jason Orendorff's "path" module to
1208 * IPython/path.py: Added Jason Orendorff's "path" module to
1200 IPython tree, http://www.jorendorff.com/articles/python/path/.
1209 IPython tree, http://www.jorendorff.com/articles/python/path/.
1201 You can get path objects conveniently through %sc, and !!, e.g.:
1210 You can get path objects conveniently through %sc, and !!, e.g.:
1202 sc files=ls
1211 sc files=ls
1203 for p in files.paths: # or files.p
1212 for p in files.paths: # or files.p
1204 print p,p.mtime
1213 print p,p.mtime
1205
1214
1206 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1215 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1207 now work again without considering the exclusion regexp -
1216 now work again without considering the exclusion regexp -
1208 hence, things like ',foo my/path' turn to 'foo("my/path")'
1217 hence, things like ',foo my/path' turn to 'foo("my/path")'
1209 instead of syntax error.
1218 instead of syntax error.
1210
1219
1211
1220
1212 2006-01-14 Ville Vainio <vivainio@gmail.com>
1221 2006-01-14 Ville Vainio <vivainio@gmail.com>
1213
1222
1214 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1223 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1215 ipapi decorators for python 2.4 users, options() provides access to rc
1224 ipapi decorators for python 2.4 users, options() provides access to rc
1216 data.
1225 data.
1217
1226
1218 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1227 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1219 as path separators (even on Linux ;-). Space character after
1228 as path separators (even on Linux ;-). Space character after
1220 backslash (as yielded by tab completer) is still space;
1229 backslash (as yielded by tab completer) is still space;
1221 "%cd long\ name" works as expected.
1230 "%cd long\ name" works as expected.
1222
1231
1223 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1232 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1224 as "chain of command", with priority. API stays the same,
1233 as "chain of command", with priority. API stays the same,
1225 TryNext exception raised by a hook function signals that
1234 TryNext exception raised by a hook function signals that
1226 current hook failed and next hook should try handling it, as
1235 current hook failed and next hook should try handling it, as
1227 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1236 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1228 requested configurable display hook, which is now implemented.
1237 requested configurable display hook, which is now implemented.
1229
1238
1230 2006-01-13 Ville Vainio <vivainio@gmail.com>
1239 2006-01-13 Ville Vainio <vivainio@gmail.com>
1231
1240
1232 * IPython/platutils*.py: platform specific utility functions,
1241 * IPython/platutils*.py: platform specific utility functions,
1233 so far only set_term_title is implemented (change terminal
1242 so far only set_term_title is implemented (change terminal
1234 label in windowing systems). %cd now changes the title to
1243 label in windowing systems). %cd now changes the title to
1235 current dir.
1244 current dir.
1236
1245
1237 * IPython/Release.py: Added myself to "authors" list,
1246 * IPython/Release.py: Added myself to "authors" list,
1238 had to create new files.
1247 had to create new files.
1239
1248
1240 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1249 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1241 shell escape; not a known bug but had potential to be one in the
1250 shell escape; not a known bug but had potential to be one in the
1242 future.
1251 future.
1243
1252
1244 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1253 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1245 extension API for IPython! See the module for usage example. Fix
1254 extension API for IPython! See the module for usage example. Fix
1246 OInspect for docstring-less magic functions.
1255 OInspect for docstring-less magic functions.
1247
1256
1248
1257
1249 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1258 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1250
1259
1251 * IPython/iplib.py (raw_input): temporarily deactivate all
1260 * IPython/iplib.py (raw_input): temporarily deactivate all
1252 attempts at allowing pasting of code with autoindent on. It
1261 attempts at allowing pasting of code with autoindent on. It
1253 introduced bugs (reported by Prabhu) and I can't seem to find a
1262 introduced bugs (reported by Prabhu) and I can't seem to find a
1254 robust combination which works in all cases. Will have to revisit
1263 robust combination which works in all cases. Will have to revisit
1255 later.
1264 later.
1256
1265
1257 * IPython/genutils.py: remove isspace() function. We've dropped
1266 * IPython/genutils.py: remove isspace() function. We've dropped
1258 2.2 compatibility, so it's OK to use the string method.
1267 2.2 compatibility, so it's OK to use the string method.
1259
1268
1260 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1269 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1261
1270
1262 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1271 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1263 matching what NOT to autocall on, to include all python binary
1272 matching what NOT to autocall on, to include all python binary
1264 operators (including things like 'and', 'or', 'is' and 'in').
1273 operators (including things like 'and', 'or', 'is' and 'in').
1265 Prompted by a bug report on 'foo & bar', but I realized we had
1274 Prompted by a bug report on 'foo & bar', but I realized we had
1266 many more potential bug cases with other operators. The regexp is
1275 many more potential bug cases with other operators. The regexp is
1267 self.re_exclude_auto, it's fairly commented.
1276 self.re_exclude_auto, it's fairly commented.
1268
1277
1269 2006-01-12 Ville Vainio <vivainio@gmail.com>
1278 2006-01-12 Ville Vainio <vivainio@gmail.com>
1270
1279
1271 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1280 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1272 Prettified and hardened string/backslash quoting with ipsystem(),
1281 Prettified and hardened string/backslash quoting with ipsystem(),
1273 ipalias() and ipmagic(). Now even \ characters are passed to
1282 ipalias() and ipmagic(). Now even \ characters are passed to
1274 %magics, !shell escapes and aliases exactly as they are in the
1283 %magics, !shell escapes and aliases exactly as they are in the
1275 ipython command line. Should improve backslash experience,
1284 ipython command line. Should improve backslash experience,
1276 particularly in Windows (path delimiter for some commands that
1285 particularly in Windows (path delimiter for some commands that
1277 won't understand '/'), but Unix benefits as well (regexps). %cd
1286 won't understand '/'), but Unix benefits as well (regexps). %cd
1278 magic still doesn't support backslash path delimiters, though. Also
1287 magic still doesn't support backslash path delimiters, though. Also
1279 deleted all pretense of supporting multiline command strings in
1288 deleted all pretense of supporting multiline command strings in
1280 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1289 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1281
1290
1282 * doc/build_doc_instructions.txt added. Documentation on how to
1291 * doc/build_doc_instructions.txt added. Documentation on how to
1283 use doc/update_manual.py, added yesterday. Both files contributed
1292 use doc/update_manual.py, added yesterday. Both files contributed
1284 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1293 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1285 doc/*.sh for deprecation at a later date.
1294 doc/*.sh for deprecation at a later date.
1286
1295
1287 * /ipython.py Added ipython.py to root directory for
1296 * /ipython.py Added ipython.py to root directory for
1288 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1297 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1289 ipython.py) and development convenience (no need to keep doing
1298 ipython.py) and development convenience (no need to keep doing
1290 "setup.py install" between changes).
1299 "setup.py install" between changes).
1291
1300
1292 * Made ! and !! shell escapes work (again) in multiline expressions:
1301 * Made ! and !! shell escapes work (again) in multiline expressions:
1293 if 1:
1302 if 1:
1294 !ls
1303 !ls
1295 !!ls
1304 !!ls
1296
1305
1297 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1306 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1298
1307
1299 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1308 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1300 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1309 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1301 module in case-insensitive installation. Was causing crashes
1310 module in case-insensitive installation. Was causing crashes
1302 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1311 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1303
1312
1304 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1313 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1305 <marienz-AT-gentoo.org>, closes
1314 <marienz-AT-gentoo.org>, closes
1306 http://www.scipy.net/roundup/ipython/issue51.
1315 http://www.scipy.net/roundup/ipython/issue51.
1307
1316
1308 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1317 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1309
1318
1310 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1319 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1311 problem of excessive CPU usage under *nix and keyboard lag under
1320 problem of excessive CPU usage under *nix and keyboard lag under
1312 win32.
1321 win32.
1313
1322
1314 2006-01-10 *** Released version 0.7.0
1323 2006-01-10 *** Released version 0.7.0
1315
1324
1316 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1325 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1317
1326
1318 * IPython/Release.py (revision): tag version number to 0.7.0,
1327 * IPython/Release.py (revision): tag version number to 0.7.0,
1319 ready for release.
1328 ready for release.
1320
1329
1321 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1330 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1322 it informs the user of the name of the temp. file used. This can
1331 it informs the user of the name of the temp. file used. This can
1323 help if you decide later to reuse that same file, so you know
1332 help if you decide later to reuse that same file, so you know
1324 where to copy the info from.
1333 where to copy the info from.
1325
1334
1326 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1335 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1327
1336
1328 * setup_bdist_egg.py: little script to build an egg. Added
1337 * setup_bdist_egg.py: little script to build an egg. Added
1329 support in the release tools as well.
1338 support in the release tools as well.
1330
1339
1331 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1340 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1332
1341
1333 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1342 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1334 version selection (new -wxversion command line and ipythonrc
1343 version selection (new -wxversion command line and ipythonrc
1335 parameter). Patch contributed by Arnd Baecker
1344 parameter). Patch contributed by Arnd Baecker
1336 <arnd.baecker-AT-web.de>.
1345 <arnd.baecker-AT-web.de>.
1337
1346
1338 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1347 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1339 embedded instances, for variables defined at the interactive
1348 embedded instances, for variables defined at the interactive
1340 prompt of the embedded ipython. Reported by Arnd.
1349 prompt of the embedded ipython. Reported by Arnd.
1341
1350
1342 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1351 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1343 it can be used as a (stateful) toggle, or with a direct parameter.
1352 it can be used as a (stateful) toggle, or with a direct parameter.
1344
1353
1345 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1354 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1346 could be triggered in certain cases and cause the traceback
1355 could be triggered in certain cases and cause the traceback
1347 printer not to work.
1356 printer not to work.
1348
1357
1349 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1358 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1350
1359
1351 * IPython/iplib.py (_should_recompile): Small fix, closes
1360 * IPython/iplib.py (_should_recompile): Small fix, closes
1352 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1361 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1353
1362
1354 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1363 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1355
1364
1356 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1365 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1357 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1366 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1358 Moad for help with tracking it down.
1367 Moad for help with tracking it down.
1359
1368
1360 * IPython/iplib.py (handle_auto): fix autocall handling for
1369 * IPython/iplib.py (handle_auto): fix autocall handling for
1361 objects which support BOTH __getitem__ and __call__ (so that f [x]
1370 objects which support BOTH __getitem__ and __call__ (so that f [x]
1362 is left alone, instead of becoming f([x]) automatically).
1371 is left alone, instead of becoming f([x]) automatically).
1363
1372
1364 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1373 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1365 Ville's patch.
1374 Ville's patch.
1366
1375
1367 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1376 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1368
1377
1369 * IPython/iplib.py (handle_auto): changed autocall semantics to
1378 * IPython/iplib.py (handle_auto): changed autocall semantics to
1370 include 'smart' mode, where the autocall transformation is NOT
1379 include 'smart' mode, where the autocall transformation is NOT
1371 applied if there are no arguments on the line. This allows you to
1380 applied if there are no arguments on the line. This allows you to
1372 just type 'foo' if foo is a callable to see its internal form,
1381 just type 'foo' if foo is a callable to see its internal form,
1373 instead of having it called with no arguments (typically a
1382 instead of having it called with no arguments (typically a
1374 mistake). The old 'full' autocall still exists: for that, you
1383 mistake). The old 'full' autocall still exists: for that, you
1375 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1384 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1376
1385
1377 * IPython/completer.py (Completer.attr_matches): add
1386 * IPython/completer.py (Completer.attr_matches): add
1378 tab-completion support for Enthoughts' traits. After a report by
1387 tab-completion support for Enthoughts' traits. After a report by
1379 Arnd and a patch by Prabhu.
1388 Arnd and a patch by Prabhu.
1380
1389
1381 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1390 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1382
1391
1383 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1392 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1384 Schmolck's patch to fix inspect.getinnerframes().
1393 Schmolck's patch to fix inspect.getinnerframes().
1385
1394
1386 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1395 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1387 for embedded instances, regarding handling of namespaces and items
1396 for embedded instances, regarding handling of namespaces and items
1388 added to the __builtin__ one. Multiple embedded instances and
1397 added to the __builtin__ one. Multiple embedded instances and
1389 recursive embeddings should work better now (though I'm not sure
1398 recursive embeddings should work better now (though I'm not sure
1390 I've got all the corner cases fixed, that code is a bit of a brain
1399 I've got all the corner cases fixed, that code is a bit of a brain
1391 twister).
1400 twister).
1392
1401
1393 * IPython/Magic.py (magic_edit): added support to edit in-memory
1402 * IPython/Magic.py (magic_edit): added support to edit in-memory
1394 macros (automatically creates the necessary temp files). %edit
1403 macros (automatically creates the necessary temp files). %edit
1395 also doesn't return the file contents anymore, it's just noise.
1404 also doesn't return the file contents anymore, it's just noise.
1396
1405
1397 * IPython/completer.py (Completer.attr_matches): revert change to
1406 * IPython/completer.py (Completer.attr_matches): revert change to
1398 complete only on attributes listed in __all__. I realized it
1407 complete only on attributes listed in __all__. I realized it
1399 cripples the tab-completion system as a tool for exploring the
1408 cripples the tab-completion system as a tool for exploring the
1400 internals of unknown libraries (it renders any non-__all__
1409 internals of unknown libraries (it renders any non-__all__
1401 attribute off-limits). I got bit by this when trying to see
1410 attribute off-limits). I got bit by this when trying to see
1402 something inside the dis module.
1411 something inside the dis module.
1403
1412
1404 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1413 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1405
1414
1406 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1415 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1407 namespace for users and extension writers to hold data in. This
1416 namespace for users and extension writers to hold data in. This
1408 follows the discussion in
1417 follows the discussion in
1409 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1418 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1410
1419
1411 * IPython/completer.py (IPCompleter.complete): small patch to help
1420 * IPython/completer.py (IPCompleter.complete): small patch to help
1412 tab-completion under Emacs, after a suggestion by John Barnard
1421 tab-completion under Emacs, after a suggestion by John Barnard
1413 <barnarj-AT-ccf.org>.
1422 <barnarj-AT-ccf.org>.
1414
1423
1415 * IPython/Magic.py (Magic.extract_input_slices): added support for
1424 * IPython/Magic.py (Magic.extract_input_slices): added support for
1416 the slice notation in magics to use N-M to represent numbers N...M
1425 the slice notation in magics to use N-M to represent numbers N...M
1417 (closed endpoints). This is used by %macro and %save.
1426 (closed endpoints). This is used by %macro and %save.
1418
1427
1419 * IPython/completer.py (Completer.attr_matches): for modules which
1428 * IPython/completer.py (Completer.attr_matches): for modules which
1420 define __all__, complete only on those. After a patch by Jeffrey
1429 define __all__, complete only on those. After a patch by Jeffrey
1421 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1430 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1422 speed up this routine.
1431 speed up this routine.
1423
1432
1424 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1433 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1425 don't know if this is the end of it, but the behavior now is
1434 don't know if this is the end of it, but the behavior now is
1426 certainly much more correct. Note that coupled with macros,
1435 certainly much more correct. Note that coupled with macros,
1427 slightly surprising (at first) behavior may occur: a macro will in
1436 slightly surprising (at first) behavior may occur: a macro will in
1428 general expand to multiple lines of input, so upon exiting, the
1437 general expand to multiple lines of input, so upon exiting, the
1429 in/out counters will both be bumped by the corresponding amount
1438 in/out counters will both be bumped by the corresponding amount
1430 (as if the macro's contents had been typed interactively). Typing
1439 (as if the macro's contents had been typed interactively). Typing
1431 %hist will reveal the intermediate (silently processed) lines.
1440 %hist will reveal the intermediate (silently processed) lines.
1432
1441
1433 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1442 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1434 pickle to fail (%run was overwriting __main__ and not restoring
1443 pickle to fail (%run was overwriting __main__ and not restoring
1435 it, but pickle relies on __main__ to operate).
1444 it, but pickle relies on __main__ to operate).
1436
1445
1437 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1446 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1438 using properties, but forgot to make the main InteractiveShell
1447 using properties, but forgot to make the main InteractiveShell
1439 class a new-style class. Properties fail silently, and
1448 class a new-style class. Properties fail silently, and
1440 mysteriously, with old-style class (getters work, but
1449 mysteriously, with old-style class (getters work, but
1441 setters don't do anything).
1450 setters don't do anything).
1442
1451
1443 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1452 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1444
1453
1445 * IPython/Magic.py (magic_history): fix history reporting bug (I
1454 * IPython/Magic.py (magic_history): fix history reporting bug (I
1446 know some nasties are still there, I just can't seem to find a
1455 know some nasties are still there, I just can't seem to find a
1447 reproducible test case to track them down; the input history is
1456 reproducible test case to track them down; the input history is
1448 falling out of sync...)
1457 falling out of sync...)
1449
1458
1450 * IPython/iplib.py (handle_shell_escape): fix bug where both
1459 * IPython/iplib.py (handle_shell_escape): fix bug where both
1451 aliases and system accesses where broken for indented code (such
1460 aliases and system accesses where broken for indented code (such
1452 as loops).
1461 as loops).
1453
1462
1454 * IPython/genutils.py (shell): fix small but critical bug for
1463 * IPython/genutils.py (shell): fix small but critical bug for
1455 win32 system access.
1464 win32 system access.
1456
1465
1457 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1466 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1458
1467
1459 * IPython/iplib.py (showtraceback): remove use of the
1468 * IPython/iplib.py (showtraceback): remove use of the
1460 sys.last_{type/value/traceback} structures, which are non
1469 sys.last_{type/value/traceback} structures, which are non
1461 thread-safe.
1470 thread-safe.
1462 (_prefilter): change control flow to ensure that we NEVER
1471 (_prefilter): change control flow to ensure that we NEVER
1463 introspect objects when autocall is off. This will guarantee that
1472 introspect objects when autocall is off. This will guarantee that
1464 having an input line of the form 'x.y', where access to attribute
1473 having an input line of the form 'x.y', where access to attribute
1465 'y' has side effects, doesn't trigger the side effect TWICE. It
1474 'y' has side effects, doesn't trigger the side effect TWICE. It
1466 is important to note that, with autocall on, these side effects
1475 is important to note that, with autocall on, these side effects
1467 can still happen.
1476 can still happen.
1468 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1477 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1469 trio. IPython offers these three kinds of special calls which are
1478 trio. IPython offers these three kinds of special calls which are
1470 not python code, and it's a good thing to have their call method
1479 not python code, and it's a good thing to have their call method
1471 be accessible as pure python functions (not just special syntax at
1480 be accessible as pure python functions (not just special syntax at
1472 the command line). It gives us a better internal implementation
1481 the command line). It gives us a better internal implementation
1473 structure, as well as exposing these for user scripting more
1482 structure, as well as exposing these for user scripting more
1474 cleanly.
1483 cleanly.
1475
1484
1476 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1485 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1477 file. Now that they'll be more likely to be used with the
1486 file. Now that they'll be more likely to be used with the
1478 persistance system (%store), I want to make sure their module path
1487 persistance system (%store), I want to make sure their module path
1479 doesn't change in the future, so that we don't break things for
1488 doesn't change in the future, so that we don't break things for
1480 users' persisted data.
1489 users' persisted data.
1481
1490
1482 * IPython/iplib.py (autoindent_update): move indentation
1491 * IPython/iplib.py (autoindent_update): move indentation
1483 management into the _text_ processing loop, not the keyboard
1492 management into the _text_ processing loop, not the keyboard
1484 interactive one. This is necessary to correctly process non-typed
1493 interactive one. This is necessary to correctly process non-typed
1485 multiline input (such as macros).
1494 multiline input (such as macros).
1486
1495
1487 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1496 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1488 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1497 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1489 which was producing problems in the resulting manual.
1498 which was producing problems in the resulting manual.
1490 (magic_whos): improve reporting of instances (show their class,
1499 (magic_whos): improve reporting of instances (show their class,
1491 instead of simply printing 'instance' which isn't terribly
1500 instead of simply printing 'instance' which isn't terribly
1492 informative).
1501 informative).
1493
1502
1494 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1503 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1495 (minor mods) to support network shares under win32.
1504 (minor mods) to support network shares under win32.
1496
1505
1497 * IPython/winconsole.py (get_console_size): add new winconsole
1506 * IPython/winconsole.py (get_console_size): add new winconsole
1498 module and fixes to page_dumb() to improve its behavior under
1507 module and fixes to page_dumb() to improve its behavior under
1499 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1508 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1500
1509
1501 * IPython/Magic.py (Macro): simplified Macro class to just
1510 * IPython/Magic.py (Macro): simplified Macro class to just
1502 subclass list. We've had only 2.2 compatibility for a very long
1511 subclass list. We've had only 2.2 compatibility for a very long
1503 time, yet I was still avoiding subclassing the builtin types. No
1512 time, yet I was still avoiding subclassing the builtin types. No
1504 more (I'm also starting to use properties, though I won't shift to
1513 more (I'm also starting to use properties, though I won't shift to
1505 2.3-specific features quite yet).
1514 2.3-specific features quite yet).
1506 (magic_store): added Ville's patch for lightweight variable
1515 (magic_store): added Ville's patch for lightweight variable
1507 persistence, after a request on the user list by Matt Wilkie
1516 persistence, after a request on the user list by Matt Wilkie
1508 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1517 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1509 details.
1518 details.
1510
1519
1511 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1520 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1512 changed the default logfile name from 'ipython.log' to
1521 changed the default logfile name from 'ipython.log' to
1513 'ipython_log.py'. These logs are real python files, and now that
1522 'ipython_log.py'. These logs are real python files, and now that
1514 we have much better multiline support, people are more likely to
1523 we have much better multiline support, people are more likely to
1515 want to use them as such. Might as well name them correctly.
1524 want to use them as such. Might as well name them correctly.
1516
1525
1517 * IPython/Magic.py: substantial cleanup. While we can't stop
1526 * IPython/Magic.py: substantial cleanup. While we can't stop
1518 using magics as mixins, due to the existing customizations 'out
1527 using magics as mixins, due to the existing customizations 'out
1519 there' which rely on the mixin naming conventions, at least I
1528 there' which rely on the mixin naming conventions, at least I
1520 cleaned out all cross-class name usage. So once we are OK with
1529 cleaned out all cross-class name usage. So once we are OK with
1521 breaking compatibility, the two systems can be separated.
1530 breaking compatibility, the two systems can be separated.
1522
1531
1523 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1532 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1524 anymore, and the class is a fair bit less hideous as well. New
1533 anymore, and the class is a fair bit less hideous as well. New
1525 features were also introduced: timestamping of input, and logging
1534 features were also introduced: timestamping of input, and logging
1526 of output results. These are user-visible with the -t and -o
1535 of output results. These are user-visible with the -t and -o
1527 options to %logstart. Closes
1536 options to %logstart. Closes
1528 http://www.scipy.net/roundup/ipython/issue11 and a request by
1537 http://www.scipy.net/roundup/ipython/issue11 and a request by
1529 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1538 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1530
1539
1531 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1540 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1532
1541
1533 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1542 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1534 better handle backslashes in paths. See the thread 'More Windows
1543 better handle backslashes in paths. See the thread 'More Windows
1535 questions part 2 - \/ characters revisited' on the iypthon user
1544 questions part 2 - \/ characters revisited' on the iypthon user
1536 list:
1545 list:
1537 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1546 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1538
1547
1539 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1548 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1540
1549
1541 (InteractiveShell.__init__): change threaded shells to not use the
1550 (InteractiveShell.__init__): change threaded shells to not use the
1542 ipython crash handler. This was causing more problems than not,
1551 ipython crash handler. This was causing more problems than not,
1543 as exceptions in the main thread (GUI code, typically) would
1552 as exceptions in the main thread (GUI code, typically) would
1544 always show up as a 'crash', when they really weren't.
1553 always show up as a 'crash', when they really weren't.
1545
1554
1546 The colors and exception mode commands (%colors/%xmode) have been
1555 The colors and exception mode commands (%colors/%xmode) have been
1547 synchronized to also take this into account, so users can get
1556 synchronized to also take this into account, so users can get
1548 verbose exceptions for their threaded code as well. I also added
1557 verbose exceptions for their threaded code as well. I also added
1549 support for activating pdb inside this exception handler as well,
1558 support for activating pdb inside this exception handler as well,
1550 so now GUI authors can use IPython's enhanced pdb at runtime.
1559 so now GUI authors can use IPython's enhanced pdb at runtime.
1551
1560
1552 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1561 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1553 true by default, and add it to the shipped ipythonrc file. Since
1562 true by default, and add it to the shipped ipythonrc file. Since
1554 this asks the user before proceeding, I think it's OK to make it
1563 this asks the user before proceeding, I think it's OK to make it
1555 true by default.
1564 true by default.
1556
1565
1557 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1566 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1558 of the previous special-casing of input in the eval loop. I think
1567 of the previous special-casing of input in the eval loop. I think
1559 this is cleaner, as they really are commands and shouldn't have
1568 this is cleaner, as they really are commands and shouldn't have
1560 a special role in the middle of the core code.
1569 a special role in the middle of the core code.
1561
1570
1562 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1571 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1563
1572
1564 * IPython/iplib.py (edit_syntax_error): added support for
1573 * IPython/iplib.py (edit_syntax_error): added support for
1565 automatically reopening the editor if the file had a syntax error
1574 automatically reopening the editor if the file had a syntax error
1566 in it. Thanks to scottt who provided the patch at:
1575 in it. Thanks to scottt who provided the patch at:
1567 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1576 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1568 version committed).
1577 version committed).
1569
1578
1570 * IPython/iplib.py (handle_normal): add suport for multi-line
1579 * IPython/iplib.py (handle_normal): add suport for multi-line
1571 input with emtpy lines. This fixes
1580 input with emtpy lines. This fixes
1572 http://www.scipy.net/roundup/ipython/issue43 and a similar
1581 http://www.scipy.net/roundup/ipython/issue43 and a similar
1573 discussion on the user list.
1582 discussion on the user list.
1574
1583
1575 WARNING: a behavior change is necessarily introduced to support
1584 WARNING: a behavior change is necessarily introduced to support
1576 blank lines: now a single blank line with whitespace does NOT
1585 blank lines: now a single blank line with whitespace does NOT
1577 break the input loop, which means that when autoindent is on, by
1586 break the input loop, which means that when autoindent is on, by
1578 default hitting return on the next (indented) line does NOT exit.
1587 default hitting return on the next (indented) line does NOT exit.
1579
1588
1580 Instead, to exit a multiline input you can either have:
1589 Instead, to exit a multiline input you can either have:
1581
1590
1582 - TWO whitespace lines (just hit return again), or
1591 - TWO whitespace lines (just hit return again), or
1583 - a single whitespace line of a different length than provided
1592 - a single whitespace line of a different length than provided
1584 by the autoindent (add or remove a space).
1593 by the autoindent (add or remove a space).
1585
1594
1586 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1595 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1587 module to better organize all readline-related functionality.
1596 module to better organize all readline-related functionality.
1588 I've deleted FlexCompleter and put all completion clases here.
1597 I've deleted FlexCompleter and put all completion clases here.
1589
1598
1590 * IPython/iplib.py (raw_input): improve indentation management.
1599 * IPython/iplib.py (raw_input): improve indentation management.
1591 It is now possible to paste indented code with autoindent on, and
1600 It is now possible to paste indented code with autoindent on, and
1592 the code is interpreted correctly (though it still looks bad on
1601 the code is interpreted correctly (though it still looks bad on
1593 screen, due to the line-oriented nature of ipython).
1602 screen, due to the line-oriented nature of ipython).
1594 (MagicCompleter.complete): change behavior so that a TAB key on an
1603 (MagicCompleter.complete): change behavior so that a TAB key on an
1595 otherwise empty line actually inserts a tab, instead of completing
1604 otherwise empty line actually inserts a tab, instead of completing
1596 on the entire global namespace. This makes it easier to use the
1605 on the entire global namespace. This makes it easier to use the
1597 TAB key for indentation. After a request by Hans Meine
1606 TAB key for indentation. After a request by Hans Meine
1598 <hans_meine-AT-gmx.net>
1607 <hans_meine-AT-gmx.net>
1599 (_prefilter): add support so that typing plain 'exit' or 'quit'
1608 (_prefilter): add support so that typing plain 'exit' or 'quit'
1600 does a sensible thing. Originally I tried to deviate as little as
1609 does a sensible thing. Originally I tried to deviate as little as
1601 possible from the default python behavior, but even that one may
1610 possible from the default python behavior, but even that one may
1602 change in this direction (thread on python-dev to that effect).
1611 change in this direction (thread on python-dev to that effect).
1603 Regardless, ipython should do the right thing even if CPython's
1612 Regardless, ipython should do the right thing even if CPython's
1604 '>>>' prompt doesn't.
1613 '>>>' prompt doesn't.
1605 (InteractiveShell): removed subclassing code.InteractiveConsole
1614 (InteractiveShell): removed subclassing code.InteractiveConsole
1606 class. By now we'd overridden just about all of its methods: I've
1615 class. By now we'd overridden just about all of its methods: I've
1607 copied the remaining two over, and now ipython is a standalone
1616 copied the remaining two over, and now ipython is a standalone
1608 class. This will provide a clearer picture for the chainsaw
1617 class. This will provide a clearer picture for the chainsaw
1609 branch refactoring.
1618 branch refactoring.
1610
1619
1611 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1620 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1612
1621
1613 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1622 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1614 failures for objects which break when dir() is called on them.
1623 failures for objects which break when dir() is called on them.
1615
1624
1616 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1625 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1617 distinct local and global namespaces in the completer API. This
1626 distinct local and global namespaces in the completer API. This
1618 change allows us to properly handle completion with distinct
1627 change allows us to properly handle completion with distinct
1619 scopes, including in embedded instances (this had never really
1628 scopes, including in embedded instances (this had never really
1620 worked correctly).
1629 worked correctly).
1621
1630
1622 Note: this introduces a change in the constructor for
1631 Note: this introduces a change in the constructor for
1623 MagicCompleter, as a new global_namespace parameter is now the
1632 MagicCompleter, as a new global_namespace parameter is now the
1624 second argument (the others were bumped one position).
1633 second argument (the others were bumped one position).
1625
1634
1626 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1635 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1627
1636
1628 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1637 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1629 embedded instances (which can be done now thanks to Vivian's
1638 embedded instances (which can be done now thanks to Vivian's
1630 frame-handling fixes for pdb).
1639 frame-handling fixes for pdb).
1631 (InteractiveShell.__init__): Fix namespace handling problem in
1640 (InteractiveShell.__init__): Fix namespace handling problem in
1632 embedded instances. We were overwriting __main__ unconditionally,
1641 embedded instances. We were overwriting __main__ unconditionally,
1633 and this should only be done for 'full' (non-embedded) IPython;
1642 and this should only be done for 'full' (non-embedded) IPython;
1634 embedded instances must respect the caller's __main__. Thanks to
1643 embedded instances must respect the caller's __main__. Thanks to
1635 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1644 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1636
1645
1637 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1646 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1638
1647
1639 * setup.py: added download_url to setup(). This registers the
1648 * setup.py: added download_url to setup(). This registers the
1640 download address at PyPI, which is not only useful to humans
1649 download address at PyPI, which is not only useful to humans
1641 browsing the site, but is also picked up by setuptools (the Eggs
1650 browsing the site, but is also picked up by setuptools (the Eggs
1642 machinery). Thanks to Ville and R. Kern for the info/discussion
1651 machinery). Thanks to Ville and R. Kern for the info/discussion
1643 on this.
1652 on this.
1644
1653
1645 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1654 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1646
1655
1647 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1656 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1648 This brings a lot of nice functionality to the pdb mode, which now
1657 This brings a lot of nice functionality to the pdb mode, which now
1649 has tab-completion, syntax highlighting, and better stack handling
1658 has tab-completion, syntax highlighting, and better stack handling
1650 than before. Many thanks to Vivian De Smedt
1659 than before. Many thanks to Vivian De Smedt
1651 <vivian-AT-vdesmedt.com> for the original patches.
1660 <vivian-AT-vdesmedt.com> for the original patches.
1652
1661
1653 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1662 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1654
1663
1655 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1664 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1656 sequence to consistently accept the banner argument. The
1665 sequence to consistently accept the banner argument. The
1657 inconsistency was tripping SAGE, thanks to Gary Zablackis
1666 inconsistency was tripping SAGE, thanks to Gary Zablackis
1658 <gzabl-AT-yahoo.com> for the report.
1667 <gzabl-AT-yahoo.com> for the report.
1659
1668
1660 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1669 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1661
1670
1662 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1671 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1663 Fix bug where a naked 'alias' call in the ipythonrc file would
1672 Fix bug where a naked 'alias' call in the ipythonrc file would
1664 cause a crash. Bug reported by Jorgen Stenarson.
1673 cause a crash. Bug reported by Jorgen Stenarson.
1665
1674
1666 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1675 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1667
1676
1668 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1677 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1669 startup time.
1678 startup time.
1670
1679
1671 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1680 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1672 instances had introduced a bug with globals in normal code. Now
1681 instances had introduced a bug with globals in normal code. Now
1673 it's working in all cases.
1682 it's working in all cases.
1674
1683
1675 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1684 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1676 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1685 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1677 has been introduced to set the default case sensitivity of the
1686 has been introduced to set the default case sensitivity of the
1678 searches. Users can still select either mode at runtime on a
1687 searches. Users can still select either mode at runtime on a
1679 per-search basis.
1688 per-search basis.
1680
1689
1681 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1690 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1682
1691
1683 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1692 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1684 attributes in wildcard searches for subclasses. Modified version
1693 attributes in wildcard searches for subclasses. Modified version
1685 of a patch by Jorgen.
1694 of a patch by Jorgen.
1686
1695
1687 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1696 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1688
1697
1689 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1698 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1690 embedded instances. I added a user_global_ns attribute to the
1699 embedded instances. I added a user_global_ns attribute to the
1691 InteractiveShell class to handle this.
1700 InteractiveShell class to handle this.
1692
1701
1693 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1702 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1694
1703
1695 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1704 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1696 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1705 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1697 (reported under win32, but may happen also in other platforms).
1706 (reported under win32, but may happen also in other platforms).
1698 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1707 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1699
1708
1700 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1709 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1701
1710
1702 * IPython/Magic.py (magic_psearch): new support for wildcard
1711 * IPython/Magic.py (magic_psearch): new support for wildcard
1703 patterns. Now, typing ?a*b will list all names which begin with a
1712 patterns. Now, typing ?a*b will list all names which begin with a
1704 and end in b, for example. The %psearch magic has full
1713 and end in b, for example. The %psearch magic has full
1705 docstrings. Many thanks to JΓΆrgen Stenarson
1714 docstrings. Many thanks to JΓΆrgen Stenarson
1706 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1715 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1707 implementing this functionality.
1716 implementing this functionality.
1708
1717
1709 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1718 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1710
1719
1711 * Manual: fixed long-standing annoyance of double-dashes (as in
1720 * Manual: fixed long-standing annoyance of double-dashes (as in
1712 --prefix=~, for example) being stripped in the HTML version. This
1721 --prefix=~, for example) being stripped in the HTML version. This
1713 is a latex2html bug, but a workaround was provided. Many thanks
1722 is a latex2html bug, but a workaround was provided. Many thanks
1714 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1723 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1715 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1724 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1716 rolling. This seemingly small issue had tripped a number of users
1725 rolling. This seemingly small issue had tripped a number of users
1717 when first installing, so I'm glad to see it gone.
1726 when first installing, so I'm glad to see it gone.
1718
1727
1719 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1728 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1720
1729
1721 * IPython/Extensions/numeric_formats.py: fix missing import,
1730 * IPython/Extensions/numeric_formats.py: fix missing import,
1722 reported by Stephen Walton.
1731 reported by Stephen Walton.
1723
1732
1724 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1733 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1725
1734
1726 * IPython/demo.py: finish demo module, fully documented now.
1735 * IPython/demo.py: finish demo module, fully documented now.
1727
1736
1728 * IPython/genutils.py (file_read): simple little utility to read a
1737 * IPython/genutils.py (file_read): simple little utility to read a
1729 file and ensure it's closed afterwards.
1738 file and ensure it's closed afterwards.
1730
1739
1731 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1740 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1732
1741
1733 * IPython/demo.py (Demo.__init__): added support for individually
1742 * IPython/demo.py (Demo.__init__): added support for individually
1734 tagging blocks for automatic execution.
1743 tagging blocks for automatic execution.
1735
1744
1736 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1745 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1737 syntax-highlighted python sources, requested by John.
1746 syntax-highlighted python sources, requested by John.
1738
1747
1739 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1748 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1740
1749
1741 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1750 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1742 finishing.
1751 finishing.
1743
1752
1744 * IPython/genutils.py (shlex_split): moved from Magic to here,
1753 * IPython/genutils.py (shlex_split): moved from Magic to here,
1745 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1754 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1746
1755
1747 * IPython/demo.py (Demo.__init__): added support for silent
1756 * IPython/demo.py (Demo.__init__): added support for silent
1748 blocks, improved marks as regexps, docstrings written.
1757 blocks, improved marks as regexps, docstrings written.
1749 (Demo.__init__): better docstring, added support for sys.argv.
1758 (Demo.__init__): better docstring, added support for sys.argv.
1750
1759
1751 * IPython/genutils.py (marquee): little utility used by the demo
1760 * IPython/genutils.py (marquee): little utility used by the demo
1752 code, handy in general.
1761 code, handy in general.
1753
1762
1754 * IPython/demo.py (Demo.__init__): new class for interactive
1763 * IPython/demo.py (Demo.__init__): new class for interactive
1755 demos. Not documented yet, I just wrote it in a hurry for
1764 demos. Not documented yet, I just wrote it in a hurry for
1756 scipy'05. Will docstring later.
1765 scipy'05. Will docstring later.
1757
1766
1758 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1767 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1759
1768
1760 * IPython/Shell.py (sigint_handler): Drastic simplification which
1769 * IPython/Shell.py (sigint_handler): Drastic simplification which
1761 also seems to make Ctrl-C work correctly across threads! This is
1770 also seems to make Ctrl-C work correctly across threads! This is
1762 so simple, that I can't beleive I'd missed it before. Needs more
1771 so simple, that I can't beleive I'd missed it before. Needs more
1763 testing, though.
1772 testing, though.
1764 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1773 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1765 like this before...
1774 like this before...
1766
1775
1767 * IPython/genutils.py (get_home_dir): add protection against
1776 * IPython/genutils.py (get_home_dir): add protection against
1768 non-dirs in win32 registry.
1777 non-dirs in win32 registry.
1769
1778
1770 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1779 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1771 bug where dict was mutated while iterating (pysh crash).
1780 bug where dict was mutated while iterating (pysh crash).
1772
1781
1773 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1782 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1774
1783
1775 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1784 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1776 spurious newlines added by this routine. After a report by
1785 spurious newlines added by this routine. After a report by
1777 F. Mantegazza.
1786 F. Mantegazza.
1778
1787
1779 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1788 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1780
1789
1781 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1790 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1782 calls. These were a leftover from the GTK 1.x days, and can cause
1791 calls. These were a leftover from the GTK 1.x days, and can cause
1783 problems in certain cases (after a report by John Hunter).
1792 problems in certain cases (after a report by John Hunter).
1784
1793
1785 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1794 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1786 os.getcwd() fails at init time. Thanks to patch from David Remahl
1795 os.getcwd() fails at init time. Thanks to patch from David Remahl
1787 <chmod007-AT-mac.com>.
1796 <chmod007-AT-mac.com>.
1788 (InteractiveShell.__init__): prevent certain special magics from
1797 (InteractiveShell.__init__): prevent certain special magics from
1789 being shadowed by aliases. Closes
1798 being shadowed by aliases. Closes
1790 http://www.scipy.net/roundup/ipython/issue41.
1799 http://www.scipy.net/roundup/ipython/issue41.
1791
1800
1792 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1801 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1793
1802
1794 * IPython/iplib.py (InteractiveShell.complete): Added new
1803 * IPython/iplib.py (InteractiveShell.complete): Added new
1795 top-level completion method to expose the completion mechanism
1804 top-level completion method to expose the completion mechanism
1796 beyond readline-based environments.
1805 beyond readline-based environments.
1797
1806
1798 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1807 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1799
1808
1800 * tools/ipsvnc (svnversion): fix svnversion capture.
1809 * tools/ipsvnc (svnversion): fix svnversion capture.
1801
1810
1802 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1811 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1803 attribute to self, which was missing. Before, it was set by a
1812 attribute to self, which was missing. Before, it was set by a
1804 routine which in certain cases wasn't being called, so the
1813 routine which in certain cases wasn't being called, so the
1805 instance could end up missing the attribute. This caused a crash.
1814 instance could end up missing the attribute. This caused a crash.
1806 Closes http://www.scipy.net/roundup/ipython/issue40.
1815 Closes http://www.scipy.net/roundup/ipython/issue40.
1807
1816
1808 2005-08-16 Fernando Perez <fperez@colorado.edu>
1817 2005-08-16 Fernando Perez <fperez@colorado.edu>
1809
1818
1810 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1819 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1811 contains non-string attribute. Closes
1820 contains non-string attribute. Closes
1812 http://www.scipy.net/roundup/ipython/issue38.
1821 http://www.scipy.net/roundup/ipython/issue38.
1813
1822
1814 2005-08-14 Fernando Perez <fperez@colorado.edu>
1823 2005-08-14 Fernando Perez <fperez@colorado.edu>
1815
1824
1816 * tools/ipsvnc: Minor improvements, to add changeset info.
1825 * tools/ipsvnc: Minor improvements, to add changeset info.
1817
1826
1818 2005-08-12 Fernando Perez <fperez@colorado.edu>
1827 2005-08-12 Fernando Perez <fperez@colorado.edu>
1819
1828
1820 * IPython/iplib.py (runsource): remove self.code_to_run_src
1829 * IPython/iplib.py (runsource): remove self.code_to_run_src
1821 attribute. I realized this is nothing more than
1830 attribute. I realized this is nothing more than
1822 '\n'.join(self.buffer), and having the same data in two different
1831 '\n'.join(self.buffer), and having the same data in two different
1823 places is just asking for synchronization bugs. This may impact
1832 places is just asking for synchronization bugs. This may impact
1824 people who have custom exception handlers, so I need to warn
1833 people who have custom exception handlers, so I need to warn
1825 ipython-dev about it (F. Mantegazza may use them).
1834 ipython-dev about it (F. Mantegazza may use them).
1826
1835
1827 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1836 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1828
1837
1829 * IPython/genutils.py: fix 2.2 compatibility (generators)
1838 * IPython/genutils.py: fix 2.2 compatibility (generators)
1830
1839
1831 2005-07-18 Fernando Perez <fperez@colorado.edu>
1840 2005-07-18 Fernando Perez <fperez@colorado.edu>
1832
1841
1833 * IPython/genutils.py (get_home_dir): fix to help users with
1842 * IPython/genutils.py (get_home_dir): fix to help users with
1834 invalid $HOME under win32.
1843 invalid $HOME under win32.
1835
1844
1836 2005-07-17 Fernando Perez <fperez@colorado.edu>
1845 2005-07-17 Fernando Perez <fperez@colorado.edu>
1837
1846
1838 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1847 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1839 some old hacks and clean up a bit other routines; code should be
1848 some old hacks and clean up a bit other routines; code should be
1840 simpler and a bit faster.
1849 simpler and a bit faster.
1841
1850
1842 * IPython/iplib.py (interact): removed some last-resort attempts
1851 * IPython/iplib.py (interact): removed some last-resort attempts
1843 to survive broken stdout/stderr. That code was only making it
1852 to survive broken stdout/stderr. That code was only making it
1844 harder to abstract out the i/o (necessary for gui integration),
1853 harder to abstract out the i/o (necessary for gui integration),
1845 and the crashes it could prevent were extremely rare in practice
1854 and the crashes it could prevent were extremely rare in practice
1846 (besides being fully user-induced in a pretty violent manner).
1855 (besides being fully user-induced in a pretty violent manner).
1847
1856
1848 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1857 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1849 Nothing major yet, but the code is simpler to read; this should
1858 Nothing major yet, but the code is simpler to read; this should
1850 make it easier to do more serious modifications in the future.
1859 make it easier to do more serious modifications in the future.
1851
1860
1852 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1861 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1853 which broke in .15 (thanks to a report by Ville).
1862 which broke in .15 (thanks to a report by Ville).
1854
1863
1855 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1864 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1856 be quite correct, I know next to nothing about unicode). This
1865 be quite correct, I know next to nothing about unicode). This
1857 will allow unicode strings to be used in prompts, amongst other
1866 will allow unicode strings to be used in prompts, amongst other
1858 cases. It also will prevent ipython from crashing when unicode
1867 cases. It also will prevent ipython from crashing when unicode
1859 shows up unexpectedly in many places. If ascii encoding fails, we
1868 shows up unexpectedly in many places. If ascii encoding fails, we
1860 assume utf_8. Currently the encoding is not a user-visible
1869 assume utf_8. Currently the encoding is not a user-visible
1861 setting, though it could be made so if there is demand for it.
1870 setting, though it could be made so if there is demand for it.
1862
1871
1863 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1872 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1864
1873
1865 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1874 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1866
1875
1867 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1876 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1868
1877
1869 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1878 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1870 code can work transparently for 2.2/2.3.
1879 code can work transparently for 2.2/2.3.
1871
1880
1872 2005-07-16 Fernando Perez <fperez@colorado.edu>
1881 2005-07-16 Fernando Perez <fperez@colorado.edu>
1873
1882
1874 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1883 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1875 out of the color scheme table used for coloring exception
1884 out of the color scheme table used for coloring exception
1876 tracebacks. This allows user code to add new schemes at runtime.
1885 tracebacks. This allows user code to add new schemes at runtime.
1877 This is a minimally modified version of the patch at
1886 This is a minimally modified version of the patch at
1878 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1887 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1879 for the contribution.
1888 for the contribution.
1880
1889
1881 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1890 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1882 slightly modified version of the patch in
1891 slightly modified version of the patch in
1883 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1892 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1884 to remove the previous try/except solution (which was costlier).
1893 to remove the previous try/except solution (which was costlier).
1885 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1894 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1886
1895
1887 2005-06-08 Fernando Perez <fperez@colorado.edu>
1896 2005-06-08 Fernando Perez <fperez@colorado.edu>
1888
1897
1889 * IPython/iplib.py (write/write_err): Add methods to abstract all
1898 * IPython/iplib.py (write/write_err): Add methods to abstract all
1890 I/O a bit more.
1899 I/O a bit more.
1891
1900
1892 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1901 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1893 warning, reported by Aric Hagberg, fix by JD Hunter.
1902 warning, reported by Aric Hagberg, fix by JD Hunter.
1894
1903
1895 2005-06-02 *** Released version 0.6.15
1904 2005-06-02 *** Released version 0.6.15
1896
1905
1897 2005-06-01 Fernando Perez <fperez@colorado.edu>
1906 2005-06-01 Fernando Perez <fperez@colorado.edu>
1898
1907
1899 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1908 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1900 tab-completion of filenames within open-quoted strings. Note that
1909 tab-completion of filenames within open-quoted strings. Note that
1901 this requires that in ~/.ipython/ipythonrc, users change the
1910 this requires that in ~/.ipython/ipythonrc, users change the
1902 readline delimiters configuration to read:
1911 readline delimiters configuration to read:
1903
1912
1904 readline_remove_delims -/~
1913 readline_remove_delims -/~
1905
1914
1906
1915
1907 2005-05-31 *** Released version 0.6.14
1916 2005-05-31 *** Released version 0.6.14
1908
1917
1909 2005-05-29 Fernando Perez <fperez@colorado.edu>
1918 2005-05-29 Fernando Perez <fperez@colorado.edu>
1910
1919
1911 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1920 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1912 with files not on the filesystem. Reported by Eliyahu Sandler
1921 with files not on the filesystem. Reported by Eliyahu Sandler
1913 <eli@gondolin.net>
1922 <eli@gondolin.net>
1914
1923
1915 2005-05-22 Fernando Perez <fperez@colorado.edu>
1924 2005-05-22 Fernando Perez <fperez@colorado.edu>
1916
1925
1917 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1926 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1918 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1927 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1919
1928
1920 2005-05-19 Fernando Perez <fperez@colorado.edu>
1929 2005-05-19 Fernando Perez <fperez@colorado.edu>
1921
1930
1922 * IPython/iplib.py (safe_execfile): close a file which could be
1931 * IPython/iplib.py (safe_execfile): close a file which could be
1923 left open (causing problems in win32, which locks open files).
1932 left open (causing problems in win32, which locks open files).
1924 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1933 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1925
1934
1926 2005-05-18 Fernando Perez <fperez@colorado.edu>
1935 2005-05-18 Fernando Perez <fperez@colorado.edu>
1927
1936
1928 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1937 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1929 keyword arguments correctly to safe_execfile().
1938 keyword arguments correctly to safe_execfile().
1930
1939
1931 2005-05-13 Fernando Perez <fperez@colorado.edu>
1940 2005-05-13 Fernando Perez <fperez@colorado.edu>
1932
1941
1933 * ipython.1: Added info about Qt to manpage, and threads warning
1942 * ipython.1: Added info about Qt to manpage, and threads warning
1934 to usage page (invoked with --help).
1943 to usage page (invoked with --help).
1935
1944
1936 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1945 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1937 new matcher (it goes at the end of the priority list) to do
1946 new matcher (it goes at the end of the priority list) to do
1938 tab-completion on named function arguments. Submitted by George
1947 tab-completion on named function arguments. Submitted by George
1939 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1948 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1940 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1949 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1941 for more details.
1950 for more details.
1942
1951
1943 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1952 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1944 SystemExit exceptions in the script being run. Thanks to a report
1953 SystemExit exceptions in the script being run. Thanks to a report
1945 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1954 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1946 producing very annoying behavior when running unit tests.
1955 producing very annoying behavior when running unit tests.
1947
1956
1948 2005-05-12 Fernando Perez <fperez@colorado.edu>
1957 2005-05-12 Fernando Perez <fperez@colorado.edu>
1949
1958
1950 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1959 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1951 which I'd broken (again) due to a changed regexp. In the process,
1960 which I'd broken (again) due to a changed regexp. In the process,
1952 added ';' as an escape to auto-quote the whole line without
1961 added ';' as an escape to auto-quote the whole line without
1953 splitting its arguments. Thanks to a report by Jerry McRae
1962 splitting its arguments. Thanks to a report by Jerry McRae
1954 <qrs0xyc02-AT-sneakemail.com>.
1963 <qrs0xyc02-AT-sneakemail.com>.
1955
1964
1956 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1965 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1957 possible crashes caused by a TokenError. Reported by Ed Schofield
1966 possible crashes caused by a TokenError. Reported by Ed Schofield
1958 <schofield-AT-ftw.at>.
1967 <schofield-AT-ftw.at>.
1959
1968
1960 2005-05-06 Fernando Perez <fperez@colorado.edu>
1969 2005-05-06 Fernando Perez <fperez@colorado.edu>
1961
1970
1962 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1971 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1963
1972
1964 2005-04-29 Fernando Perez <fperez@colorado.edu>
1973 2005-04-29 Fernando Perez <fperez@colorado.edu>
1965
1974
1966 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1975 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1967 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1976 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1968 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1977 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1969 which provides support for Qt interactive usage (similar to the
1978 which provides support for Qt interactive usage (similar to the
1970 existing one for WX and GTK). This had been often requested.
1979 existing one for WX and GTK). This had been often requested.
1971
1980
1972 2005-04-14 *** Released version 0.6.13
1981 2005-04-14 *** Released version 0.6.13
1973
1982
1974 2005-04-08 Fernando Perez <fperez@colorado.edu>
1983 2005-04-08 Fernando Perez <fperez@colorado.edu>
1975
1984
1976 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1985 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1977 from _ofind, which gets called on almost every input line. Now,
1986 from _ofind, which gets called on almost every input line. Now,
1978 we only try to get docstrings if they are actually going to be
1987 we only try to get docstrings if they are actually going to be
1979 used (the overhead of fetching unnecessary docstrings can be
1988 used (the overhead of fetching unnecessary docstrings can be
1980 noticeable for certain objects, such as Pyro proxies).
1989 noticeable for certain objects, such as Pyro proxies).
1981
1990
1982 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1991 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1983 for completers. For some reason I had been passing them the state
1992 for completers. For some reason I had been passing them the state
1984 variable, which completers never actually need, and was in
1993 variable, which completers never actually need, and was in
1985 conflict with the rlcompleter API. Custom completers ONLY need to
1994 conflict with the rlcompleter API. Custom completers ONLY need to
1986 take the text parameter.
1995 take the text parameter.
1987
1996
1988 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1997 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1989 work correctly in pysh. I've also moved all the logic which used
1998 work correctly in pysh. I've also moved all the logic which used
1990 to be in pysh.py here, which will prevent problems with future
1999 to be in pysh.py here, which will prevent problems with future
1991 upgrades. However, this time I must warn users to update their
2000 upgrades. However, this time I must warn users to update their
1992 pysh profile to include the line
2001 pysh profile to include the line
1993
2002
1994 import_all IPython.Extensions.InterpreterExec
2003 import_all IPython.Extensions.InterpreterExec
1995
2004
1996 because otherwise things won't work for them. They MUST also
2005 because otherwise things won't work for them. They MUST also
1997 delete pysh.py and the line
2006 delete pysh.py and the line
1998
2007
1999 execfile pysh.py
2008 execfile pysh.py
2000
2009
2001 from their ipythonrc-pysh.
2010 from their ipythonrc-pysh.
2002
2011
2003 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2012 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2004 robust in the face of objects whose dir() returns non-strings
2013 robust in the face of objects whose dir() returns non-strings
2005 (which it shouldn't, but some broken libs like ITK do). Thanks to
2014 (which it shouldn't, but some broken libs like ITK do). Thanks to
2006 a patch by John Hunter (implemented differently, though). Also
2015 a patch by John Hunter (implemented differently, though). Also
2007 minor improvements by using .extend instead of + on lists.
2016 minor improvements by using .extend instead of + on lists.
2008
2017
2009 * pysh.py:
2018 * pysh.py:
2010
2019
2011 2005-04-06 Fernando Perez <fperez@colorado.edu>
2020 2005-04-06 Fernando Perez <fperez@colorado.edu>
2012
2021
2013 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2022 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2014 by default, so that all users benefit from it. Those who don't
2023 by default, so that all users benefit from it. Those who don't
2015 want it can still turn it off.
2024 want it can still turn it off.
2016
2025
2017 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2026 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2018 config file, I'd forgotten about this, so users were getting it
2027 config file, I'd forgotten about this, so users were getting it
2019 off by default.
2028 off by default.
2020
2029
2021 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2030 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2022 consistency. Now magics can be called in multiline statements,
2031 consistency. Now magics can be called in multiline statements,
2023 and python variables can be expanded in magic calls via $var.
2032 and python variables can be expanded in magic calls via $var.
2024 This makes the magic system behave just like aliases or !system
2033 This makes the magic system behave just like aliases or !system
2025 calls.
2034 calls.
2026
2035
2027 2005-03-28 Fernando Perez <fperez@colorado.edu>
2036 2005-03-28 Fernando Perez <fperez@colorado.edu>
2028
2037
2029 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2038 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2030 expensive string additions for building command. Add support for
2039 expensive string additions for building command. Add support for
2031 trailing ';' when autocall is used.
2040 trailing ';' when autocall is used.
2032
2041
2033 2005-03-26 Fernando Perez <fperez@colorado.edu>
2042 2005-03-26 Fernando Perez <fperez@colorado.edu>
2034
2043
2035 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2044 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2036 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2045 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2037 ipython.el robust against prompts with any number of spaces
2046 ipython.el robust against prompts with any number of spaces
2038 (including 0) after the ':' character.
2047 (including 0) after the ':' character.
2039
2048
2040 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2049 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2041 continuation prompt, which misled users to think the line was
2050 continuation prompt, which misled users to think the line was
2042 already indented. Closes debian Bug#300847, reported to me by
2051 already indented. Closes debian Bug#300847, reported to me by
2043 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2052 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2044
2053
2045 2005-03-23 Fernando Perez <fperez@colorado.edu>
2054 2005-03-23 Fernando Perez <fperez@colorado.edu>
2046
2055
2047 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2056 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2048 properly aligned if they have embedded newlines.
2057 properly aligned if they have embedded newlines.
2049
2058
2050 * IPython/iplib.py (runlines): Add a public method to expose
2059 * IPython/iplib.py (runlines): Add a public method to expose
2051 IPython's code execution machinery, so that users can run strings
2060 IPython's code execution machinery, so that users can run strings
2052 as if they had been typed at the prompt interactively.
2061 as if they had been typed at the prompt interactively.
2053 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2062 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2054 methods which can call the system shell, but with python variable
2063 methods which can call the system shell, but with python variable
2055 expansion. The three such methods are: __IPYTHON__.system,
2064 expansion. The three such methods are: __IPYTHON__.system,
2056 .getoutput and .getoutputerror. These need to be documented in a
2065 .getoutput and .getoutputerror. These need to be documented in a
2057 'public API' section (to be written) of the manual.
2066 'public API' section (to be written) of the manual.
2058
2067
2059 2005-03-20 Fernando Perez <fperez@colorado.edu>
2068 2005-03-20 Fernando Perez <fperez@colorado.edu>
2060
2069
2061 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2070 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2062 for custom exception handling. This is quite powerful, and it
2071 for custom exception handling. This is quite powerful, and it
2063 allows for user-installable exception handlers which can trap
2072 allows for user-installable exception handlers which can trap
2064 custom exceptions at runtime and treat them separately from
2073 custom exceptions at runtime and treat them separately from
2065 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2074 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2066 Mantegazza <mantegazza-AT-ill.fr>.
2075 Mantegazza <mantegazza-AT-ill.fr>.
2067 (InteractiveShell.set_custom_completer): public API function to
2076 (InteractiveShell.set_custom_completer): public API function to
2068 add new completers at runtime.
2077 add new completers at runtime.
2069
2078
2070 2005-03-19 Fernando Perez <fperez@colorado.edu>
2079 2005-03-19 Fernando Perez <fperez@colorado.edu>
2071
2080
2072 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2081 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2073 allow objects which provide their docstrings via non-standard
2082 allow objects which provide their docstrings via non-standard
2074 mechanisms (like Pyro proxies) to still be inspected by ipython's
2083 mechanisms (like Pyro proxies) to still be inspected by ipython's
2075 ? system.
2084 ? system.
2076
2085
2077 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2086 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2078 automatic capture system. I tried quite hard to make it work
2087 automatic capture system. I tried quite hard to make it work
2079 reliably, and simply failed. I tried many combinations with the
2088 reliably, and simply failed. I tried many combinations with the
2080 subprocess module, but eventually nothing worked in all needed
2089 subprocess module, but eventually nothing worked in all needed
2081 cases (not blocking stdin for the child, duplicating stdout
2090 cases (not blocking stdin for the child, duplicating stdout
2082 without blocking, etc). The new %sc/%sx still do capture to these
2091 without blocking, etc). The new %sc/%sx still do capture to these
2083 magical list/string objects which make shell use much more
2092 magical list/string objects which make shell use much more
2084 conveninent, so not all is lost.
2093 conveninent, so not all is lost.
2085
2094
2086 XXX - FIX MANUAL for the change above!
2095 XXX - FIX MANUAL for the change above!
2087
2096
2088 (runsource): I copied code.py's runsource() into ipython to modify
2097 (runsource): I copied code.py's runsource() into ipython to modify
2089 it a bit. Now the code object and source to be executed are
2098 it a bit. Now the code object and source to be executed are
2090 stored in ipython. This makes this info accessible to third-party
2099 stored in ipython. This makes this info accessible to third-party
2091 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2100 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2092 Mantegazza <mantegazza-AT-ill.fr>.
2101 Mantegazza <mantegazza-AT-ill.fr>.
2093
2102
2094 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2103 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2095 history-search via readline (like C-p/C-n). I'd wanted this for a
2104 history-search via readline (like C-p/C-n). I'd wanted this for a
2096 long time, but only recently found out how to do it. For users
2105 long time, but only recently found out how to do it. For users
2097 who already have their ipythonrc files made and want this, just
2106 who already have their ipythonrc files made and want this, just
2098 add:
2107 add:
2099
2108
2100 readline_parse_and_bind "\e[A": history-search-backward
2109 readline_parse_and_bind "\e[A": history-search-backward
2101 readline_parse_and_bind "\e[B": history-search-forward
2110 readline_parse_and_bind "\e[B": history-search-forward
2102
2111
2103 2005-03-18 Fernando Perez <fperez@colorado.edu>
2112 2005-03-18 Fernando Perez <fperez@colorado.edu>
2104
2113
2105 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2114 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2106 LSString and SList classes which allow transparent conversions
2115 LSString and SList classes which allow transparent conversions
2107 between list mode and whitespace-separated string.
2116 between list mode and whitespace-separated string.
2108 (magic_r): Fix recursion problem in %r.
2117 (magic_r): Fix recursion problem in %r.
2109
2118
2110 * IPython/genutils.py (LSString): New class to be used for
2119 * IPython/genutils.py (LSString): New class to be used for
2111 automatic storage of the results of all alias/system calls in _o
2120 automatic storage of the results of all alias/system calls in _o
2112 and _e (stdout/err). These provide a .l/.list attribute which
2121 and _e (stdout/err). These provide a .l/.list attribute which
2113 does automatic splitting on newlines. This means that for most
2122 does automatic splitting on newlines. This means that for most
2114 uses, you'll never need to do capturing of output with %sc/%sx
2123 uses, you'll never need to do capturing of output with %sc/%sx
2115 anymore, since ipython keeps this always done for you. Note that
2124 anymore, since ipython keeps this always done for you. Note that
2116 only the LAST results are stored, the _o/e variables are
2125 only the LAST results are stored, the _o/e variables are
2117 overwritten on each call. If you need to save their contents
2126 overwritten on each call. If you need to save their contents
2118 further, simply bind them to any other name.
2127 further, simply bind them to any other name.
2119
2128
2120 2005-03-17 Fernando Perez <fperez@colorado.edu>
2129 2005-03-17 Fernando Perez <fperez@colorado.edu>
2121
2130
2122 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2131 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2123 prompt namespace handling.
2132 prompt namespace handling.
2124
2133
2125 2005-03-16 Fernando Perez <fperez@colorado.edu>
2134 2005-03-16 Fernando Perez <fperez@colorado.edu>
2126
2135
2127 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2136 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2128 classic prompts to be '>>> ' (final space was missing, and it
2137 classic prompts to be '>>> ' (final space was missing, and it
2129 trips the emacs python mode).
2138 trips the emacs python mode).
2130 (BasePrompt.__str__): Added safe support for dynamic prompt
2139 (BasePrompt.__str__): Added safe support for dynamic prompt
2131 strings. Now you can set your prompt string to be '$x', and the
2140 strings. Now you can set your prompt string to be '$x', and the
2132 value of x will be printed from your interactive namespace. The
2141 value of x will be printed from your interactive namespace. The
2133 interpolation syntax includes the full Itpl support, so
2142 interpolation syntax includes the full Itpl support, so
2134 ${foo()+x+bar()} is a valid prompt string now, and the function
2143 ${foo()+x+bar()} is a valid prompt string now, and the function
2135 calls will be made at runtime.
2144 calls will be made at runtime.
2136
2145
2137 2005-03-15 Fernando Perez <fperez@colorado.edu>
2146 2005-03-15 Fernando Perez <fperez@colorado.edu>
2138
2147
2139 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2148 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2140 avoid name clashes in pylab. %hist still works, it just forwards
2149 avoid name clashes in pylab. %hist still works, it just forwards
2141 the call to %history.
2150 the call to %history.
2142
2151
2143 2005-03-02 *** Released version 0.6.12
2152 2005-03-02 *** Released version 0.6.12
2144
2153
2145 2005-03-02 Fernando Perez <fperez@colorado.edu>
2154 2005-03-02 Fernando Perez <fperez@colorado.edu>
2146
2155
2147 * IPython/iplib.py (handle_magic): log magic calls properly as
2156 * IPython/iplib.py (handle_magic): log magic calls properly as
2148 ipmagic() function calls.
2157 ipmagic() function calls.
2149
2158
2150 * IPython/Magic.py (magic_time): Improved %time to support
2159 * IPython/Magic.py (magic_time): Improved %time to support
2151 statements and provide wall-clock as well as CPU time.
2160 statements and provide wall-clock as well as CPU time.
2152
2161
2153 2005-02-27 Fernando Perez <fperez@colorado.edu>
2162 2005-02-27 Fernando Perez <fperez@colorado.edu>
2154
2163
2155 * IPython/hooks.py: New hooks module, to expose user-modifiable
2164 * IPython/hooks.py: New hooks module, to expose user-modifiable
2156 IPython functionality in a clean manner. For now only the editor
2165 IPython functionality in a clean manner. For now only the editor
2157 hook is actually written, and other thigns which I intend to turn
2166 hook is actually written, and other thigns which I intend to turn
2158 into proper hooks aren't yet there. The display and prefilter
2167 into proper hooks aren't yet there. The display and prefilter
2159 stuff, for example, should be hooks. But at least now the
2168 stuff, for example, should be hooks. But at least now the
2160 framework is in place, and the rest can be moved here with more
2169 framework is in place, and the rest can be moved here with more
2161 time later. IPython had had a .hooks variable for a long time for
2170 time later. IPython had had a .hooks variable for a long time for
2162 this purpose, but I'd never actually used it for anything.
2171 this purpose, but I'd never actually used it for anything.
2163
2172
2164 2005-02-26 Fernando Perez <fperez@colorado.edu>
2173 2005-02-26 Fernando Perez <fperez@colorado.edu>
2165
2174
2166 * IPython/ipmaker.py (make_IPython): make the default ipython
2175 * IPython/ipmaker.py (make_IPython): make the default ipython
2167 directory be called _ipython under win32, to follow more the
2176 directory be called _ipython under win32, to follow more the
2168 naming peculiarities of that platform (where buggy software like
2177 naming peculiarities of that platform (where buggy software like
2169 Visual Sourcesafe breaks with .named directories). Reported by
2178 Visual Sourcesafe breaks with .named directories). Reported by
2170 Ville Vainio.
2179 Ville Vainio.
2171
2180
2172 2005-02-23 Fernando Perez <fperez@colorado.edu>
2181 2005-02-23 Fernando Perez <fperez@colorado.edu>
2173
2182
2174 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2183 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2175 auto_aliases for win32 which were causing problems. Users can
2184 auto_aliases for win32 which were causing problems. Users can
2176 define the ones they personally like.
2185 define the ones they personally like.
2177
2186
2178 2005-02-21 Fernando Perez <fperez@colorado.edu>
2187 2005-02-21 Fernando Perez <fperez@colorado.edu>
2179
2188
2180 * IPython/Magic.py (magic_time): new magic to time execution of
2189 * IPython/Magic.py (magic_time): new magic to time execution of
2181 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2190 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2182
2191
2183 2005-02-19 Fernando Perez <fperez@colorado.edu>
2192 2005-02-19 Fernando Perez <fperez@colorado.edu>
2184
2193
2185 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2194 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2186 into keys (for prompts, for example).
2195 into keys (for prompts, for example).
2187
2196
2188 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2197 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2189 prompts in case users want them. This introduces a small behavior
2198 prompts in case users want them. This introduces a small behavior
2190 change: ipython does not automatically add a space to all prompts
2199 change: ipython does not automatically add a space to all prompts
2191 anymore. To get the old prompts with a space, users should add it
2200 anymore. To get the old prompts with a space, users should add it
2192 manually to their ipythonrc file, so for example prompt_in1 should
2201 manually to their ipythonrc file, so for example prompt_in1 should
2193 now read 'In [\#]: ' instead of 'In [\#]:'.
2202 now read 'In [\#]: ' instead of 'In [\#]:'.
2194 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2203 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2195 file) to control left-padding of secondary prompts.
2204 file) to control left-padding of secondary prompts.
2196
2205
2197 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2206 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2198 the profiler can't be imported. Fix for Debian, which removed
2207 the profiler can't be imported. Fix for Debian, which removed
2199 profile.py because of License issues. I applied a slightly
2208 profile.py because of License issues. I applied a slightly
2200 modified version of the original Debian patch at
2209 modified version of the original Debian patch at
2201 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2210 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2202
2211
2203 2005-02-17 Fernando Perez <fperez@colorado.edu>
2212 2005-02-17 Fernando Perez <fperez@colorado.edu>
2204
2213
2205 * IPython/genutils.py (native_line_ends): Fix bug which would
2214 * IPython/genutils.py (native_line_ends): Fix bug which would
2206 cause improper line-ends under win32 b/c I was not opening files
2215 cause improper line-ends under win32 b/c I was not opening files
2207 in binary mode. Bug report and fix thanks to Ville.
2216 in binary mode. Bug report and fix thanks to Ville.
2208
2217
2209 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2218 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2210 trying to catch spurious foo[1] autocalls. My fix actually broke
2219 trying to catch spurious foo[1] autocalls. My fix actually broke
2211 ',/' autoquote/call with explicit escape (bad regexp).
2220 ',/' autoquote/call with explicit escape (bad regexp).
2212
2221
2213 2005-02-15 *** Released version 0.6.11
2222 2005-02-15 *** Released version 0.6.11
2214
2223
2215 2005-02-14 Fernando Perez <fperez@colorado.edu>
2224 2005-02-14 Fernando Perez <fperez@colorado.edu>
2216
2225
2217 * IPython/background_jobs.py: New background job management
2226 * IPython/background_jobs.py: New background job management
2218 subsystem. This is implemented via a new set of classes, and
2227 subsystem. This is implemented via a new set of classes, and
2219 IPython now provides a builtin 'jobs' object for background job
2228 IPython now provides a builtin 'jobs' object for background job
2220 execution. A convenience %bg magic serves as a lightweight
2229 execution. A convenience %bg magic serves as a lightweight
2221 frontend for starting the more common type of calls. This was
2230 frontend for starting the more common type of calls. This was
2222 inspired by discussions with B. Granger and the BackgroundCommand
2231 inspired by discussions with B. Granger and the BackgroundCommand
2223 class described in the book Python Scripting for Computational
2232 class described in the book Python Scripting for Computational
2224 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2233 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2225 (although ultimately no code from this text was used, as IPython's
2234 (although ultimately no code from this text was used, as IPython's
2226 system is a separate implementation).
2235 system is a separate implementation).
2227
2236
2228 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2237 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2229 to control the completion of single/double underscore names
2238 to control the completion of single/double underscore names
2230 separately. As documented in the example ipytonrc file, the
2239 separately. As documented in the example ipytonrc file, the
2231 readline_omit__names variable can now be set to 2, to omit even
2240 readline_omit__names variable can now be set to 2, to omit even
2232 single underscore names. Thanks to a patch by Brian Wong
2241 single underscore names. Thanks to a patch by Brian Wong
2233 <BrianWong-AT-AirgoNetworks.Com>.
2242 <BrianWong-AT-AirgoNetworks.Com>.
2234 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2243 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2235 be autocalled as foo([1]) if foo were callable. A problem for
2244 be autocalled as foo([1]) if foo were callable. A problem for
2236 things which are both callable and implement __getitem__.
2245 things which are both callable and implement __getitem__.
2237 (init_readline): Fix autoindentation for win32. Thanks to a patch
2246 (init_readline): Fix autoindentation for win32. Thanks to a patch
2238 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2247 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2239
2248
2240 2005-02-12 Fernando Perez <fperez@colorado.edu>
2249 2005-02-12 Fernando Perez <fperez@colorado.edu>
2241
2250
2242 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2251 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2243 which I had written long ago to sort out user error messages which
2252 which I had written long ago to sort out user error messages which
2244 may occur during startup. This seemed like a good idea initially,
2253 may occur during startup. This seemed like a good idea initially,
2245 but it has proven a disaster in retrospect. I don't want to
2254 but it has proven a disaster in retrospect. I don't want to
2246 change much code for now, so my fix is to set the internal 'debug'
2255 change much code for now, so my fix is to set the internal 'debug'
2247 flag to true everywhere, whose only job was precisely to control
2256 flag to true everywhere, whose only job was precisely to control
2248 this subsystem. This closes issue 28 (as well as avoiding all
2257 this subsystem. This closes issue 28 (as well as avoiding all
2249 sorts of strange hangups which occur from time to time).
2258 sorts of strange hangups which occur from time to time).
2250
2259
2251 2005-02-07 Fernando Perez <fperez@colorado.edu>
2260 2005-02-07 Fernando Perez <fperez@colorado.edu>
2252
2261
2253 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2262 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2254 previous call produced a syntax error.
2263 previous call produced a syntax error.
2255
2264
2256 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2265 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2257 classes without constructor.
2266 classes without constructor.
2258
2267
2259 2005-02-06 Fernando Perez <fperez@colorado.edu>
2268 2005-02-06 Fernando Perez <fperez@colorado.edu>
2260
2269
2261 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2270 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2262 completions with the results of each matcher, so we return results
2271 completions with the results of each matcher, so we return results
2263 to the user from all namespaces. This breaks with ipython
2272 to the user from all namespaces. This breaks with ipython
2264 tradition, but I think it's a nicer behavior. Now you get all
2273 tradition, but I think it's a nicer behavior. Now you get all
2265 possible completions listed, from all possible namespaces (python,
2274 possible completions listed, from all possible namespaces (python,
2266 filesystem, magics...) After a request by John Hunter
2275 filesystem, magics...) After a request by John Hunter
2267 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2276 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2268
2277
2269 2005-02-05 Fernando Perez <fperez@colorado.edu>
2278 2005-02-05 Fernando Perez <fperez@colorado.edu>
2270
2279
2271 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2280 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2272 the call had quote characters in it (the quotes were stripped).
2281 the call had quote characters in it (the quotes were stripped).
2273
2282
2274 2005-01-31 Fernando Perez <fperez@colorado.edu>
2283 2005-01-31 Fernando Perez <fperez@colorado.edu>
2275
2284
2276 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2285 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2277 Itpl.itpl() to make the code more robust against psyco
2286 Itpl.itpl() to make the code more robust against psyco
2278 optimizations.
2287 optimizations.
2279
2288
2280 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2289 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2281 of causing an exception. Quicker, cleaner.
2290 of causing an exception. Quicker, cleaner.
2282
2291
2283 2005-01-28 Fernando Perez <fperez@colorado.edu>
2292 2005-01-28 Fernando Perez <fperez@colorado.edu>
2284
2293
2285 * scripts/ipython_win_post_install.py (install): hardcode
2294 * scripts/ipython_win_post_install.py (install): hardcode
2286 sys.prefix+'python.exe' as the executable path. It turns out that
2295 sys.prefix+'python.exe' as the executable path. It turns out that
2287 during the post-installation run, sys.executable resolves to the
2296 during the post-installation run, sys.executable resolves to the
2288 name of the binary installer! I should report this as a distutils
2297 name of the binary installer! I should report this as a distutils
2289 bug, I think. I updated the .10 release with this tiny fix, to
2298 bug, I think. I updated the .10 release with this tiny fix, to
2290 avoid annoying the lists further.
2299 avoid annoying the lists further.
2291
2300
2292 2005-01-27 *** Released version 0.6.10
2301 2005-01-27 *** Released version 0.6.10
2293
2302
2294 2005-01-27 Fernando Perez <fperez@colorado.edu>
2303 2005-01-27 Fernando Perez <fperez@colorado.edu>
2295
2304
2296 * IPython/numutils.py (norm): Added 'inf' as optional name for
2305 * IPython/numutils.py (norm): Added 'inf' as optional name for
2297 L-infinity norm, included references to mathworld.com for vector
2306 L-infinity norm, included references to mathworld.com for vector
2298 norm definitions.
2307 norm definitions.
2299 (amin/amax): added amin/amax for array min/max. Similar to what
2308 (amin/amax): added amin/amax for array min/max. Similar to what
2300 pylab ships with after the recent reorganization of names.
2309 pylab ships with after the recent reorganization of names.
2301 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2310 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2302
2311
2303 * ipython.el: committed Alex's recent fixes and improvements.
2312 * ipython.el: committed Alex's recent fixes and improvements.
2304 Tested with python-mode from CVS, and it looks excellent. Since
2313 Tested with python-mode from CVS, and it looks excellent. Since
2305 python-mode hasn't released anything in a while, I'm temporarily
2314 python-mode hasn't released anything in a while, I'm temporarily
2306 putting a copy of today's CVS (v 4.70) of python-mode in:
2315 putting a copy of today's CVS (v 4.70) of python-mode in:
2307 http://ipython.scipy.org/tmp/python-mode.el
2316 http://ipython.scipy.org/tmp/python-mode.el
2308
2317
2309 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2318 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2310 sys.executable for the executable name, instead of assuming it's
2319 sys.executable for the executable name, instead of assuming it's
2311 called 'python.exe' (the post-installer would have produced broken
2320 called 'python.exe' (the post-installer would have produced broken
2312 setups on systems with a differently named python binary).
2321 setups on systems with a differently named python binary).
2313
2322
2314 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2323 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2315 references to os.linesep, to make the code more
2324 references to os.linesep, to make the code more
2316 platform-independent. This is also part of the win32 coloring
2325 platform-independent. This is also part of the win32 coloring
2317 fixes.
2326 fixes.
2318
2327
2319 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2328 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2320 lines, which actually cause coloring bugs because the length of
2329 lines, which actually cause coloring bugs because the length of
2321 the line is very difficult to correctly compute with embedded
2330 the line is very difficult to correctly compute with embedded
2322 escapes. This was the source of all the coloring problems under
2331 escapes. This was the source of all the coloring problems under
2323 Win32. I think that _finally_, Win32 users have a properly
2332 Win32. I think that _finally_, Win32 users have a properly
2324 working ipython in all respects. This would never have happened
2333 working ipython in all respects. This would never have happened
2325 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2334 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2326
2335
2327 2005-01-26 *** Released version 0.6.9
2336 2005-01-26 *** Released version 0.6.9
2328
2337
2329 2005-01-25 Fernando Perez <fperez@colorado.edu>
2338 2005-01-25 Fernando Perez <fperez@colorado.edu>
2330
2339
2331 * setup.py: finally, we have a true Windows installer, thanks to
2340 * setup.py: finally, we have a true Windows installer, thanks to
2332 the excellent work of Viktor Ransmayr
2341 the excellent work of Viktor Ransmayr
2333 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2342 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2334 Windows users. The setup routine is quite a bit cleaner thanks to
2343 Windows users. The setup routine is quite a bit cleaner thanks to
2335 this, and the post-install script uses the proper functions to
2344 this, and the post-install script uses the proper functions to
2336 allow a clean de-installation using the standard Windows Control
2345 allow a clean de-installation using the standard Windows Control
2337 Panel.
2346 Panel.
2338
2347
2339 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2348 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2340 environment variable under all OSes (including win32) if
2349 environment variable under all OSes (including win32) if
2341 available. This will give consistency to win32 users who have set
2350 available. This will give consistency to win32 users who have set
2342 this variable for any reason. If os.environ['HOME'] fails, the
2351 this variable for any reason. If os.environ['HOME'] fails, the
2343 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2352 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2344
2353
2345 2005-01-24 Fernando Perez <fperez@colorado.edu>
2354 2005-01-24 Fernando Perez <fperez@colorado.edu>
2346
2355
2347 * IPython/numutils.py (empty_like): add empty_like(), similar to
2356 * IPython/numutils.py (empty_like): add empty_like(), similar to
2348 zeros_like() but taking advantage of the new empty() Numeric routine.
2357 zeros_like() but taking advantage of the new empty() Numeric routine.
2349
2358
2350 2005-01-23 *** Released version 0.6.8
2359 2005-01-23 *** Released version 0.6.8
2351
2360
2352 2005-01-22 Fernando Perez <fperez@colorado.edu>
2361 2005-01-22 Fernando Perez <fperez@colorado.edu>
2353
2362
2354 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2363 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2355 automatic show() calls. After discussing things with JDH, it
2364 automatic show() calls. After discussing things with JDH, it
2356 turns out there are too many corner cases where this can go wrong.
2365 turns out there are too many corner cases where this can go wrong.
2357 It's best not to try to be 'too smart', and simply have ipython
2366 It's best not to try to be 'too smart', and simply have ipython
2358 reproduce as much as possible the default behavior of a normal
2367 reproduce as much as possible the default behavior of a normal
2359 python shell.
2368 python shell.
2360
2369
2361 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2370 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2362 line-splitting regexp and _prefilter() to avoid calling getattr()
2371 line-splitting regexp and _prefilter() to avoid calling getattr()
2363 on assignments. This closes
2372 on assignments. This closes
2364 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2373 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2365 readline uses getattr(), so a simple <TAB> keypress is still
2374 readline uses getattr(), so a simple <TAB> keypress is still
2366 enough to trigger getattr() calls on an object.
2375 enough to trigger getattr() calls on an object.
2367
2376
2368 2005-01-21 Fernando Perez <fperez@colorado.edu>
2377 2005-01-21 Fernando Perez <fperez@colorado.edu>
2369
2378
2370 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2379 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2371 docstring under pylab so it doesn't mask the original.
2380 docstring under pylab so it doesn't mask the original.
2372
2381
2373 2005-01-21 *** Released version 0.6.7
2382 2005-01-21 *** Released version 0.6.7
2374
2383
2375 2005-01-21 Fernando Perez <fperez@colorado.edu>
2384 2005-01-21 Fernando Perez <fperez@colorado.edu>
2376
2385
2377 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2386 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2378 signal handling for win32 users in multithreaded mode.
2387 signal handling for win32 users in multithreaded mode.
2379
2388
2380 2005-01-17 Fernando Perez <fperez@colorado.edu>
2389 2005-01-17 Fernando Perez <fperez@colorado.edu>
2381
2390
2382 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2391 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2383 instances with no __init__. After a crash report by Norbert Nemec
2392 instances with no __init__. After a crash report by Norbert Nemec
2384 <Norbert-AT-nemec-online.de>.
2393 <Norbert-AT-nemec-online.de>.
2385
2394
2386 2005-01-14 Fernando Perez <fperez@colorado.edu>
2395 2005-01-14 Fernando Perez <fperez@colorado.edu>
2387
2396
2388 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2397 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2389 names for verbose exceptions, when multiple dotted names and the
2398 names for verbose exceptions, when multiple dotted names and the
2390 'parent' object were present on the same line.
2399 'parent' object were present on the same line.
2391
2400
2392 2005-01-11 Fernando Perez <fperez@colorado.edu>
2401 2005-01-11 Fernando Perez <fperez@colorado.edu>
2393
2402
2394 * IPython/genutils.py (flag_calls): new utility to trap and flag
2403 * IPython/genutils.py (flag_calls): new utility to trap and flag
2395 calls in functions. I need it to clean up matplotlib support.
2404 calls in functions. I need it to clean up matplotlib support.
2396 Also removed some deprecated code in genutils.
2405 Also removed some deprecated code in genutils.
2397
2406
2398 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2407 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2399 that matplotlib scripts called with %run, which don't call show()
2408 that matplotlib scripts called with %run, which don't call show()
2400 themselves, still have their plotting windows open.
2409 themselves, still have their plotting windows open.
2401
2410
2402 2005-01-05 Fernando Perez <fperez@colorado.edu>
2411 2005-01-05 Fernando Perez <fperez@colorado.edu>
2403
2412
2404 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2413 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2405 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2414 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2406
2415
2407 2004-12-19 Fernando Perez <fperez@colorado.edu>
2416 2004-12-19 Fernando Perez <fperez@colorado.edu>
2408
2417
2409 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2418 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2410 parent_runcode, which was an eyesore. The same result can be
2419 parent_runcode, which was an eyesore. The same result can be
2411 obtained with Python's regular superclass mechanisms.
2420 obtained with Python's regular superclass mechanisms.
2412
2421
2413 2004-12-17 Fernando Perez <fperez@colorado.edu>
2422 2004-12-17 Fernando Perez <fperez@colorado.edu>
2414
2423
2415 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2424 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2416 reported by Prabhu.
2425 reported by Prabhu.
2417 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2426 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2418 sys.stderr) instead of explicitly calling sys.stderr. This helps
2427 sys.stderr) instead of explicitly calling sys.stderr. This helps
2419 maintain our I/O abstractions clean, for future GUI embeddings.
2428 maintain our I/O abstractions clean, for future GUI embeddings.
2420
2429
2421 * IPython/genutils.py (info): added new utility for sys.stderr
2430 * IPython/genutils.py (info): added new utility for sys.stderr
2422 unified info message handling (thin wrapper around warn()).
2431 unified info message handling (thin wrapper around warn()).
2423
2432
2424 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2433 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2425 composite (dotted) names on verbose exceptions.
2434 composite (dotted) names on verbose exceptions.
2426 (VerboseTB.nullrepr): harden against another kind of errors which
2435 (VerboseTB.nullrepr): harden against another kind of errors which
2427 Python's inspect module can trigger, and which were crashing
2436 Python's inspect module can trigger, and which were crashing
2428 IPython. Thanks to a report by Marco Lombardi
2437 IPython. Thanks to a report by Marco Lombardi
2429 <mlombard-AT-ma010192.hq.eso.org>.
2438 <mlombard-AT-ma010192.hq.eso.org>.
2430
2439
2431 2004-12-13 *** Released version 0.6.6
2440 2004-12-13 *** Released version 0.6.6
2432
2441
2433 2004-12-12 Fernando Perez <fperez@colorado.edu>
2442 2004-12-12 Fernando Perez <fperez@colorado.edu>
2434
2443
2435 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2444 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2436 generated by pygtk upon initialization if it was built without
2445 generated by pygtk upon initialization if it was built without
2437 threads (for matplotlib users). After a crash reported by
2446 threads (for matplotlib users). After a crash reported by
2438 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2447 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2439
2448
2440 * IPython/ipmaker.py (make_IPython): fix small bug in the
2449 * IPython/ipmaker.py (make_IPython): fix small bug in the
2441 import_some parameter for multiple imports.
2450 import_some parameter for multiple imports.
2442
2451
2443 * IPython/iplib.py (ipmagic): simplified the interface of
2452 * IPython/iplib.py (ipmagic): simplified the interface of
2444 ipmagic() to take a single string argument, just as it would be
2453 ipmagic() to take a single string argument, just as it would be
2445 typed at the IPython cmd line.
2454 typed at the IPython cmd line.
2446 (ipalias): Added new ipalias() with an interface identical to
2455 (ipalias): Added new ipalias() with an interface identical to
2447 ipmagic(). This completes exposing a pure python interface to the
2456 ipmagic(). This completes exposing a pure python interface to the
2448 alias and magic system, which can be used in loops or more complex
2457 alias and magic system, which can be used in loops or more complex
2449 code where IPython's automatic line mangling is not active.
2458 code where IPython's automatic line mangling is not active.
2450
2459
2451 * IPython/genutils.py (timing): changed interface of timing to
2460 * IPython/genutils.py (timing): changed interface of timing to
2452 simply run code once, which is the most common case. timings()
2461 simply run code once, which is the most common case. timings()
2453 remains unchanged, for the cases where you want multiple runs.
2462 remains unchanged, for the cases where you want multiple runs.
2454
2463
2455 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2464 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2456 bug where Python2.2 crashes with exec'ing code which does not end
2465 bug where Python2.2 crashes with exec'ing code which does not end
2457 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2466 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2458 before.
2467 before.
2459
2468
2460 2004-12-10 Fernando Perez <fperez@colorado.edu>
2469 2004-12-10 Fernando Perez <fperez@colorado.edu>
2461
2470
2462 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2471 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2463 -t to -T, to accomodate the new -t flag in %run (the %run and
2472 -t to -T, to accomodate the new -t flag in %run (the %run and
2464 %prun options are kind of intermixed, and it's not easy to change
2473 %prun options are kind of intermixed, and it's not easy to change
2465 this with the limitations of python's getopt).
2474 this with the limitations of python's getopt).
2466
2475
2467 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2476 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2468 the execution of scripts. It's not as fine-tuned as timeit.py,
2477 the execution of scripts. It's not as fine-tuned as timeit.py,
2469 but it works from inside ipython (and under 2.2, which lacks
2478 but it works from inside ipython (and under 2.2, which lacks
2470 timeit.py). Optionally a number of runs > 1 can be given for
2479 timeit.py). Optionally a number of runs > 1 can be given for
2471 timing very short-running code.
2480 timing very short-running code.
2472
2481
2473 * IPython/genutils.py (uniq_stable): new routine which returns a
2482 * IPython/genutils.py (uniq_stable): new routine which returns a
2474 list of unique elements in any iterable, but in stable order of
2483 list of unique elements in any iterable, but in stable order of
2475 appearance. I needed this for the ultraTB fixes, and it's a handy
2484 appearance. I needed this for the ultraTB fixes, and it's a handy
2476 utility.
2485 utility.
2477
2486
2478 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2487 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2479 dotted names in Verbose exceptions. This had been broken since
2488 dotted names in Verbose exceptions. This had been broken since
2480 the very start, now x.y will properly be printed in a Verbose
2489 the very start, now x.y will properly be printed in a Verbose
2481 traceback, instead of x being shown and y appearing always as an
2490 traceback, instead of x being shown and y appearing always as an
2482 'undefined global'. Getting this to work was a bit tricky,
2491 'undefined global'. Getting this to work was a bit tricky,
2483 because by default python tokenizers are stateless. Saved by
2492 because by default python tokenizers are stateless. Saved by
2484 python's ability to easily add a bit of state to an arbitrary
2493 python's ability to easily add a bit of state to an arbitrary
2485 function (without needing to build a full-blown callable object).
2494 function (without needing to build a full-blown callable object).
2486
2495
2487 Also big cleanup of this code, which had horrendous runtime
2496 Also big cleanup of this code, which had horrendous runtime
2488 lookups of zillions of attributes for colorization. Moved all
2497 lookups of zillions of attributes for colorization. Moved all
2489 this code into a few templates, which make it cleaner and quicker.
2498 this code into a few templates, which make it cleaner and quicker.
2490
2499
2491 Printout quality was also improved for Verbose exceptions: one
2500 Printout quality was also improved for Verbose exceptions: one
2492 variable per line, and memory addresses are printed (this can be
2501 variable per line, and memory addresses are printed (this can be
2493 quite handy in nasty debugging situations, which is what Verbose
2502 quite handy in nasty debugging situations, which is what Verbose
2494 is for).
2503 is for).
2495
2504
2496 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2505 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2497 the command line as scripts to be loaded by embedded instances.
2506 the command line as scripts to be loaded by embedded instances.
2498 Doing so has the potential for an infinite recursion if there are
2507 Doing so has the potential for an infinite recursion if there are
2499 exceptions thrown in the process. This fixes a strange crash
2508 exceptions thrown in the process. This fixes a strange crash
2500 reported by Philippe MULLER <muller-AT-irit.fr>.
2509 reported by Philippe MULLER <muller-AT-irit.fr>.
2501
2510
2502 2004-12-09 Fernando Perez <fperez@colorado.edu>
2511 2004-12-09 Fernando Perez <fperez@colorado.edu>
2503
2512
2504 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2513 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2505 to reflect new names in matplotlib, which now expose the
2514 to reflect new names in matplotlib, which now expose the
2506 matlab-compatible interface via a pylab module instead of the
2515 matlab-compatible interface via a pylab module instead of the
2507 'matlab' name. The new code is backwards compatible, so users of
2516 'matlab' name. The new code is backwards compatible, so users of
2508 all matplotlib versions are OK. Patch by J. Hunter.
2517 all matplotlib versions are OK. Patch by J. Hunter.
2509
2518
2510 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2519 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2511 of __init__ docstrings for instances (class docstrings are already
2520 of __init__ docstrings for instances (class docstrings are already
2512 automatically printed). Instances with customized docstrings
2521 automatically printed). Instances with customized docstrings
2513 (indep. of the class) are also recognized and all 3 separate
2522 (indep. of the class) are also recognized and all 3 separate
2514 docstrings are printed (instance, class, constructor). After some
2523 docstrings are printed (instance, class, constructor). After some
2515 comments/suggestions by J. Hunter.
2524 comments/suggestions by J. Hunter.
2516
2525
2517 2004-12-05 Fernando Perez <fperez@colorado.edu>
2526 2004-12-05 Fernando Perez <fperez@colorado.edu>
2518
2527
2519 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2528 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2520 warnings when tab-completion fails and triggers an exception.
2529 warnings when tab-completion fails and triggers an exception.
2521
2530
2522 2004-12-03 Fernando Perez <fperez@colorado.edu>
2531 2004-12-03 Fernando Perez <fperez@colorado.edu>
2523
2532
2524 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2533 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2525 be triggered when using 'run -p'. An incorrect option flag was
2534 be triggered when using 'run -p'. An incorrect option flag was
2526 being set ('d' instead of 'D').
2535 being set ('d' instead of 'D').
2527 (manpage): fix missing escaped \- sign.
2536 (manpage): fix missing escaped \- sign.
2528
2537
2529 2004-11-30 *** Released version 0.6.5
2538 2004-11-30 *** Released version 0.6.5
2530
2539
2531 2004-11-30 Fernando Perez <fperez@colorado.edu>
2540 2004-11-30 Fernando Perez <fperez@colorado.edu>
2532
2541
2533 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2542 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2534 setting with -d option.
2543 setting with -d option.
2535
2544
2536 * setup.py (docfiles): Fix problem where the doc glob I was using
2545 * setup.py (docfiles): Fix problem where the doc glob I was using
2537 was COMPLETELY BROKEN. It was giving the right files by pure
2546 was COMPLETELY BROKEN. It was giving the right files by pure
2538 accident, but failed once I tried to include ipython.el. Note:
2547 accident, but failed once I tried to include ipython.el. Note:
2539 glob() does NOT allow you to do exclusion on multiple endings!
2548 glob() does NOT allow you to do exclusion on multiple endings!
2540
2549
2541 2004-11-29 Fernando Perez <fperez@colorado.edu>
2550 2004-11-29 Fernando Perez <fperez@colorado.edu>
2542
2551
2543 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2552 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2544 the manpage as the source. Better formatting & consistency.
2553 the manpage as the source. Better formatting & consistency.
2545
2554
2546 * IPython/Magic.py (magic_run): Added new -d option, to run
2555 * IPython/Magic.py (magic_run): Added new -d option, to run
2547 scripts under the control of the python pdb debugger. Note that
2556 scripts under the control of the python pdb debugger. Note that
2548 this required changing the %prun option -d to -D, to avoid a clash
2557 this required changing the %prun option -d to -D, to avoid a clash
2549 (since %run must pass options to %prun, and getopt is too dumb to
2558 (since %run must pass options to %prun, and getopt is too dumb to
2550 handle options with string values with embedded spaces). Thanks
2559 handle options with string values with embedded spaces). Thanks
2551 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2560 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2552 (magic_who_ls): added type matching to %who and %whos, so that one
2561 (magic_who_ls): added type matching to %who and %whos, so that one
2553 can filter their output to only include variables of certain
2562 can filter their output to only include variables of certain
2554 types. Another suggestion by Matthew.
2563 types. Another suggestion by Matthew.
2555 (magic_whos): Added memory summaries in kb and Mb for arrays.
2564 (magic_whos): Added memory summaries in kb and Mb for arrays.
2556 (magic_who): Improve formatting (break lines every 9 vars).
2565 (magic_who): Improve formatting (break lines every 9 vars).
2557
2566
2558 2004-11-28 Fernando Perez <fperez@colorado.edu>
2567 2004-11-28 Fernando Perez <fperez@colorado.edu>
2559
2568
2560 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2569 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2561 cache when empty lines were present.
2570 cache when empty lines were present.
2562
2571
2563 2004-11-24 Fernando Perez <fperez@colorado.edu>
2572 2004-11-24 Fernando Perez <fperez@colorado.edu>
2564
2573
2565 * IPython/usage.py (__doc__): document the re-activated threading
2574 * IPython/usage.py (__doc__): document the re-activated threading
2566 options for WX and GTK.
2575 options for WX and GTK.
2567
2576
2568 2004-11-23 Fernando Perez <fperez@colorado.edu>
2577 2004-11-23 Fernando Perez <fperez@colorado.edu>
2569
2578
2570 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2579 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2571 the -wthread and -gthread options, along with a new -tk one to try
2580 the -wthread and -gthread options, along with a new -tk one to try
2572 and coordinate Tk threading with wx/gtk. The tk support is very
2581 and coordinate Tk threading with wx/gtk. The tk support is very
2573 platform dependent, since it seems to require Tcl and Tk to be
2582 platform dependent, since it seems to require Tcl and Tk to be
2574 built with threads (Fedora1/2 appears NOT to have it, but in
2583 built with threads (Fedora1/2 appears NOT to have it, but in
2575 Prabhu's Debian boxes it works OK). But even with some Tk
2584 Prabhu's Debian boxes it works OK). But even with some Tk
2576 limitations, this is a great improvement.
2585 limitations, this is a great improvement.
2577
2586
2578 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2587 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2579 info in user prompts. Patch by Prabhu.
2588 info in user prompts. Patch by Prabhu.
2580
2589
2581 2004-11-18 Fernando Perez <fperez@colorado.edu>
2590 2004-11-18 Fernando Perez <fperez@colorado.edu>
2582
2591
2583 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2592 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2584 EOFErrors and bail, to avoid infinite loops if a non-terminating
2593 EOFErrors and bail, to avoid infinite loops if a non-terminating
2585 file is fed into ipython. Patch submitted in issue 19 by user,
2594 file is fed into ipython. Patch submitted in issue 19 by user,
2586 many thanks.
2595 many thanks.
2587
2596
2588 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2597 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2589 autoquote/parens in continuation prompts, which can cause lots of
2598 autoquote/parens in continuation prompts, which can cause lots of
2590 problems. Closes roundup issue 20.
2599 problems. Closes roundup issue 20.
2591
2600
2592 2004-11-17 Fernando Perez <fperez@colorado.edu>
2601 2004-11-17 Fernando Perez <fperez@colorado.edu>
2593
2602
2594 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2603 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2595 reported as debian bug #280505. I'm not sure my local changelog
2604 reported as debian bug #280505. I'm not sure my local changelog
2596 entry has the proper debian format (Jack?).
2605 entry has the proper debian format (Jack?).
2597
2606
2598 2004-11-08 *** Released version 0.6.4
2607 2004-11-08 *** Released version 0.6.4
2599
2608
2600 2004-11-08 Fernando Perez <fperez@colorado.edu>
2609 2004-11-08 Fernando Perez <fperez@colorado.edu>
2601
2610
2602 * IPython/iplib.py (init_readline): Fix exit message for Windows
2611 * IPython/iplib.py (init_readline): Fix exit message for Windows
2603 when readline is active. Thanks to a report by Eric Jones
2612 when readline is active. Thanks to a report by Eric Jones
2604 <eric-AT-enthought.com>.
2613 <eric-AT-enthought.com>.
2605
2614
2606 2004-11-07 Fernando Perez <fperez@colorado.edu>
2615 2004-11-07 Fernando Perez <fperez@colorado.edu>
2607
2616
2608 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2617 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2609 sometimes seen by win2k/cygwin users.
2618 sometimes seen by win2k/cygwin users.
2610
2619
2611 2004-11-06 Fernando Perez <fperez@colorado.edu>
2620 2004-11-06 Fernando Perez <fperez@colorado.edu>
2612
2621
2613 * IPython/iplib.py (interact): Change the handling of %Exit from
2622 * IPython/iplib.py (interact): Change the handling of %Exit from
2614 trying to propagate a SystemExit to an internal ipython flag.
2623 trying to propagate a SystemExit to an internal ipython flag.
2615 This is less elegant than using Python's exception mechanism, but
2624 This is less elegant than using Python's exception mechanism, but
2616 I can't get that to work reliably with threads, so under -pylab
2625 I can't get that to work reliably with threads, so under -pylab
2617 %Exit was hanging IPython. Cross-thread exception handling is
2626 %Exit was hanging IPython. Cross-thread exception handling is
2618 really a bitch. Thaks to a bug report by Stephen Walton
2627 really a bitch. Thaks to a bug report by Stephen Walton
2619 <stephen.walton-AT-csun.edu>.
2628 <stephen.walton-AT-csun.edu>.
2620
2629
2621 2004-11-04 Fernando Perez <fperez@colorado.edu>
2630 2004-11-04 Fernando Perez <fperez@colorado.edu>
2622
2631
2623 * IPython/iplib.py (raw_input_original): store a pointer to the
2632 * IPython/iplib.py (raw_input_original): store a pointer to the
2624 true raw_input to harden against code which can modify it
2633 true raw_input to harden against code which can modify it
2625 (wx.py.PyShell does this and would otherwise crash ipython).
2634 (wx.py.PyShell does this and would otherwise crash ipython).
2626 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2635 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2627
2636
2628 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2637 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2629 Ctrl-C problem, which does not mess up the input line.
2638 Ctrl-C problem, which does not mess up the input line.
2630
2639
2631 2004-11-03 Fernando Perez <fperez@colorado.edu>
2640 2004-11-03 Fernando Perez <fperez@colorado.edu>
2632
2641
2633 * IPython/Release.py: Changed licensing to BSD, in all files.
2642 * IPython/Release.py: Changed licensing to BSD, in all files.
2634 (name): lowercase name for tarball/RPM release.
2643 (name): lowercase name for tarball/RPM release.
2635
2644
2636 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2645 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2637 use throughout ipython.
2646 use throughout ipython.
2638
2647
2639 * IPython/Magic.py (Magic._ofind): Switch to using the new
2648 * IPython/Magic.py (Magic._ofind): Switch to using the new
2640 OInspect.getdoc() function.
2649 OInspect.getdoc() function.
2641
2650
2642 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2651 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2643 of the line currently being canceled via Ctrl-C. It's extremely
2652 of the line currently being canceled via Ctrl-C. It's extremely
2644 ugly, but I don't know how to do it better (the problem is one of
2653 ugly, but I don't know how to do it better (the problem is one of
2645 handling cross-thread exceptions).
2654 handling cross-thread exceptions).
2646
2655
2647 2004-10-28 Fernando Perez <fperez@colorado.edu>
2656 2004-10-28 Fernando Perez <fperez@colorado.edu>
2648
2657
2649 * IPython/Shell.py (signal_handler): add signal handlers to trap
2658 * IPython/Shell.py (signal_handler): add signal handlers to trap
2650 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2659 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2651 report by Francesc Alted.
2660 report by Francesc Alted.
2652
2661
2653 2004-10-21 Fernando Perez <fperez@colorado.edu>
2662 2004-10-21 Fernando Perez <fperez@colorado.edu>
2654
2663
2655 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2664 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2656 to % for pysh syntax extensions.
2665 to % for pysh syntax extensions.
2657
2666
2658 2004-10-09 Fernando Perez <fperez@colorado.edu>
2667 2004-10-09 Fernando Perez <fperez@colorado.edu>
2659
2668
2660 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2669 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2661 arrays to print a more useful summary, without calling str(arr).
2670 arrays to print a more useful summary, without calling str(arr).
2662 This avoids the problem of extremely lengthy computations which
2671 This avoids the problem of extremely lengthy computations which
2663 occur if arr is large, and appear to the user as a system lockup
2672 occur if arr is large, and appear to the user as a system lockup
2664 with 100% cpu activity. After a suggestion by Kristian Sandberg
2673 with 100% cpu activity. After a suggestion by Kristian Sandberg
2665 <Kristian.Sandberg@colorado.edu>.
2674 <Kristian.Sandberg@colorado.edu>.
2666 (Magic.__init__): fix bug in global magic escapes not being
2675 (Magic.__init__): fix bug in global magic escapes not being
2667 correctly set.
2676 correctly set.
2668
2677
2669 2004-10-08 Fernando Perez <fperez@colorado.edu>
2678 2004-10-08 Fernando Perez <fperez@colorado.edu>
2670
2679
2671 * IPython/Magic.py (__license__): change to absolute imports of
2680 * IPython/Magic.py (__license__): change to absolute imports of
2672 ipython's own internal packages, to start adapting to the absolute
2681 ipython's own internal packages, to start adapting to the absolute
2673 import requirement of PEP-328.
2682 import requirement of PEP-328.
2674
2683
2675 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2684 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2676 files, and standardize author/license marks through the Release
2685 files, and standardize author/license marks through the Release
2677 module instead of having per/file stuff (except for files with
2686 module instead of having per/file stuff (except for files with
2678 particular licenses, like the MIT/PSF-licensed codes).
2687 particular licenses, like the MIT/PSF-licensed codes).
2679
2688
2680 * IPython/Debugger.py: remove dead code for python 2.1
2689 * IPython/Debugger.py: remove dead code for python 2.1
2681
2690
2682 2004-10-04 Fernando Perez <fperez@colorado.edu>
2691 2004-10-04 Fernando Perez <fperez@colorado.edu>
2683
2692
2684 * IPython/iplib.py (ipmagic): New function for accessing magics
2693 * IPython/iplib.py (ipmagic): New function for accessing magics
2685 via a normal python function call.
2694 via a normal python function call.
2686
2695
2687 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2696 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2688 from '@' to '%', to accomodate the new @decorator syntax of python
2697 from '@' to '%', to accomodate the new @decorator syntax of python
2689 2.4.
2698 2.4.
2690
2699
2691 2004-09-29 Fernando Perez <fperez@colorado.edu>
2700 2004-09-29 Fernando Perez <fperez@colorado.edu>
2692
2701
2693 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2702 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2694 matplotlib.use to prevent running scripts which try to switch
2703 matplotlib.use to prevent running scripts which try to switch
2695 interactive backends from within ipython. This will just crash
2704 interactive backends from within ipython. This will just crash
2696 the python interpreter, so we can't allow it (but a detailed error
2705 the python interpreter, so we can't allow it (but a detailed error
2697 is given to the user).
2706 is given to the user).
2698
2707
2699 2004-09-28 Fernando Perez <fperez@colorado.edu>
2708 2004-09-28 Fernando Perez <fperez@colorado.edu>
2700
2709
2701 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2710 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2702 matplotlib-related fixes so that using @run with non-matplotlib
2711 matplotlib-related fixes so that using @run with non-matplotlib
2703 scripts doesn't pop up spurious plot windows. This requires
2712 scripts doesn't pop up spurious plot windows. This requires
2704 matplotlib >= 0.63, where I had to make some changes as well.
2713 matplotlib >= 0.63, where I had to make some changes as well.
2705
2714
2706 * IPython/ipmaker.py (make_IPython): update version requirement to
2715 * IPython/ipmaker.py (make_IPython): update version requirement to
2707 python 2.2.
2716 python 2.2.
2708
2717
2709 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2718 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2710 banner arg for embedded customization.
2719 banner arg for embedded customization.
2711
2720
2712 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2721 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2713 explicit uses of __IP as the IPython's instance name. Now things
2722 explicit uses of __IP as the IPython's instance name. Now things
2714 are properly handled via the shell.name value. The actual code
2723 are properly handled via the shell.name value. The actual code
2715 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2724 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2716 is much better than before. I'll clean things completely when the
2725 is much better than before. I'll clean things completely when the
2717 magic stuff gets a real overhaul.
2726 magic stuff gets a real overhaul.
2718
2727
2719 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2728 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2720 minor changes to debian dir.
2729 minor changes to debian dir.
2721
2730
2722 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2731 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2723 pointer to the shell itself in the interactive namespace even when
2732 pointer to the shell itself in the interactive namespace even when
2724 a user-supplied dict is provided. This is needed for embedding
2733 a user-supplied dict is provided. This is needed for embedding
2725 purposes (found by tests with Michel Sanner).
2734 purposes (found by tests with Michel Sanner).
2726
2735
2727 2004-09-27 Fernando Perez <fperez@colorado.edu>
2736 2004-09-27 Fernando Perez <fperez@colorado.edu>
2728
2737
2729 * IPython/UserConfig/ipythonrc: remove []{} from
2738 * IPython/UserConfig/ipythonrc: remove []{} from
2730 readline_remove_delims, so that things like [modname.<TAB> do
2739 readline_remove_delims, so that things like [modname.<TAB> do
2731 proper completion. This disables [].TAB, but that's a less common
2740 proper completion. This disables [].TAB, but that's a less common
2732 case than module names in list comprehensions, for example.
2741 case than module names in list comprehensions, for example.
2733 Thanks to a report by Andrea Riciputi.
2742 Thanks to a report by Andrea Riciputi.
2734
2743
2735 2004-09-09 Fernando Perez <fperez@colorado.edu>
2744 2004-09-09 Fernando Perez <fperez@colorado.edu>
2736
2745
2737 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2746 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2738 blocking problems in win32 and osx. Fix by John.
2747 blocking problems in win32 and osx. Fix by John.
2739
2748
2740 2004-09-08 Fernando Perez <fperez@colorado.edu>
2749 2004-09-08 Fernando Perez <fperez@colorado.edu>
2741
2750
2742 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2751 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2743 for Win32 and OSX. Fix by John Hunter.
2752 for Win32 and OSX. Fix by John Hunter.
2744
2753
2745 2004-08-30 *** Released version 0.6.3
2754 2004-08-30 *** Released version 0.6.3
2746
2755
2747 2004-08-30 Fernando Perez <fperez@colorado.edu>
2756 2004-08-30 Fernando Perez <fperez@colorado.edu>
2748
2757
2749 * setup.py (isfile): Add manpages to list of dependent files to be
2758 * setup.py (isfile): Add manpages to list of dependent files to be
2750 updated.
2759 updated.
2751
2760
2752 2004-08-27 Fernando Perez <fperez@colorado.edu>
2761 2004-08-27 Fernando Perez <fperez@colorado.edu>
2753
2762
2754 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2763 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2755 for now. They don't really work with standalone WX/GTK code
2764 for now. They don't really work with standalone WX/GTK code
2756 (though matplotlib IS working fine with both of those backends).
2765 (though matplotlib IS working fine with both of those backends).
2757 This will neeed much more testing. I disabled most things with
2766 This will neeed much more testing. I disabled most things with
2758 comments, so turning it back on later should be pretty easy.
2767 comments, so turning it back on later should be pretty easy.
2759
2768
2760 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2769 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2761 autocalling of expressions like r'foo', by modifying the line
2770 autocalling of expressions like r'foo', by modifying the line
2762 split regexp. Closes
2771 split regexp. Closes
2763 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2772 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2764 Riley <ipythonbugs-AT-sabi.net>.
2773 Riley <ipythonbugs-AT-sabi.net>.
2765 (InteractiveShell.mainloop): honor --nobanner with banner
2774 (InteractiveShell.mainloop): honor --nobanner with banner
2766 extensions.
2775 extensions.
2767
2776
2768 * IPython/Shell.py: Significant refactoring of all classes, so
2777 * IPython/Shell.py: Significant refactoring of all classes, so
2769 that we can really support ALL matplotlib backends and threading
2778 that we can really support ALL matplotlib backends and threading
2770 models (John spotted a bug with Tk which required this). Now we
2779 models (John spotted a bug with Tk which required this). Now we
2771 should support single-threaded, WX-threads and GTK-threads, both
2780 should support single-threaded, WX-threads and GTK-threads, both
2772 for generic code and for matplotlib.
2781 for generic code and for matplotlib.
2773
2782
2774 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2783 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2775 -pylab, to simplify things for users. Will also remove the pylab
2784 -pylab, to simplify things for users. Will also remove the pylab
2776 profile, since now all of matplotlib configuration is directly
2785 profile, since now all of matplotlib configuration is directly
2777 handled here. This also reduces startup time.
2786 handled here. This also reduces startup time.
2778
2787
2779 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2788 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2780 shell wasn't being correctly called. Also in IPShellWX.
2789 shell wasn't being correctly called. Also in IPShellWX.
2781
2790
2782 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2791 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2783 fine-tune banner.
2792 fine-tune banner.
2784
2793
2785 * IPython/numutils.py (spike): Deprecate these spike functions,
2794 * IPython/numutils.py (spike): Deprecate these spike functions,
2786 delete (long deprecated) gnuplot_exec handler.
2795 delete (long deprecated) gnuplot_exec handler.
2787
2796
2788 2004-08-26 Fernando Perez <fperez@colorado.edu>
2797 2004-08-26 Fernando Perez <fperez@colorado.edu>
2789
2798
2790 * ipython.1: Update for threading options, plus some others which
2799 * ipython.1: Update for threading options, plus some others which
2791 were missing.
2800 were missing.
2792
2801
2793 * IPython/ipmaker.py (__call__): Added -wthread option for
2802 * IPython/ipmaker.py (__call__): Added -wthread option for
2794 wxpython thread handling. Make sure threading options are only
2803 wxpython thread handling. Make sure threading options are only
2795 valid at the command line.
2804 valid at the command line.
2796
2805
2797 * scripts/ipython: moved shell selection into a factory function
2806 * scripts/ipython: moved shell selection into a factory function
2798 in Shell.py, to keep the starter script to a minimum.
2807 in Shell.py, to keep the starter script to a minimum.
2799
2808
2800 2004-08-25 Fernando Perez <fperez@colorado.edu>
2809 2004-08-25 Fernando Perez <fperez@colorado.edu>
2801
2810
2802 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2811 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2803 John. Along with some recent changes he made to matplotlib, the
2812 John. Along with some recent changes he made to matplotlib, the
2804 next versions of both systems should work very well together.
2813 next versions of both systems should work very well together.
2805
2814
2806 2004-08-24 Fernando Perez <fperez@colorado.edu>
2815 2004-08-24 Fernando Perez <fperez@colorado.edu>
2807
2816
2808 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2817 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2809 tried to switch the profiling to using hotshot, but I'm getting
2818 tried to switch the profiling to using hotshot, but I'm getting
2810 strange errors from prof.runctx() there. I may be misreading the
2819 strange errors from prof.runctx() there. I may be misreading the
2811 docs, but it looks weird. For now the profiling code will
2820 docs, but it looks weird. For now the profiling code will
2812 continue to use the standard profiler.
2821 continue to use the standard profiler.
2813
2822
2814 2004-08-23 Fernando Perez <fperez@colorado.edu>
2823 2004-08-23 Fernando Perez <fperez@colorado.edu>
2815
2824
2816 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2825 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2817 threaded shell, by John Hunter. It's not quite ready yet, but
2826 threaded shell, by John Hunter. It's not quite ready yet, but
2818 close.
2827 close.
2819
2828
2820 2004-08-22 Fernando Perez <fperez@colorado.edu>
2829 2004-08-22 Fernando Perez <fperez@colorado.edu>
2821
2830
2822 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2831 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2823 in Magic and ultraTB.
2832 in Magic and ultraTB.
2824
2833
2825 * ipython.1: document threading options in manpage.
2834 * ipython.1: document threading options in manpage.
2826
2835
2827 * scripts/ipython: Changed name of -thread option to -gthread,
2836 * scripts/ipython: Changed name of -thread option to -gthread,
2828 since this is GTK specific. I want to leave the door open for a
2837 since this is GTK specific. I want to leave the door open for a
2829 -wthread option for WX, which will most likely be necessary. This
2838 -wthread option for WX, which will most likely be necessary. This
2830 change affects usage and ipmaker as well.
2839 change affects usage and ipmaker as well.
2831
2840
2832 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2841 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2833 handle the matplotlib shell issues. Code by John Hunter
2842 handle the matplotlib shell issues. Code by John Hunter
2834 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2843 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2835 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2844 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2836 broken (and disabled for end users) for now, but it puts the
2845 broken (and disabled for end users) for now, but it puts the
2837 infrastructure in place.
2846 infrastructure in place.
2838
2847
2839 2004-08-21 Fernando Perez <fperez@colorado.edu>
2848 2004-08-21 Fernando Perez <fperez@colorado.edu>
2840
2849
2841 * ipythonrc-pylab: Add matplotlib support.
2850 * ipythonrc-pylab: Add matplotlib support.
2842
2851
2843 * matplotlib_config.py: new files for matplotlib support, part of
2852 * matplotlib_config.py: new files for matplotlib support, part of
2844 the pylab profile.
2853 the pylab profile.
2845
2854
2846 * IPython/usage.py (__doc__): documented the threading options.
2855 * IPython/usage.py (__doc__): documented the threading options.
2847
2856
2848 2004-08-20 Fernando Perez <fperez@colorado.edu>
2857 2004-08-20 Fernando Perez <fperez@colorado.edu>
2849
2858
2850 * ipython: Modified the main calling routine to handle the -thread
2859 * ipython: Modified the main calling routine to handle the -thread
2851 and -mpthread options. This needs to be done as a top-level hack,
2860 and -mpthread options. This needs to be done as a top-level hack,
2852 because it determines which class to instantiate for IPython
2861 because it determines which class to instantiate for IPython
2853 itself.
2862 itself.
2854
2863
2855 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2864 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2856 classes to support multithreaded GTK operation without blocking,
2865 classes to support multithreaded GTK operation without blocking,
2857 and matplotlib with all backends. This is a lot of still very
2866 and matplotlib with all backends. This is a lot of still very
2858 experimental code, and threads are tricky. So it may still have a
2867 experimental code, and threads are tricky. So it may still have a
2859 few rough edges... This code owes a lot to
2868 few rough edges... This code owes a lot to
2860 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2869 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2861 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2870 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2862 to John Hunter for all the matplotlib work.
2871 to John Hunter for all the matplotlib work.
2863
2872
2864 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2873 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2865 options for gtk thread and matplotlib support.
2874 options for gtk thread and matplotlib support.
2866
2875
2867 2004-08-16 Fernando Perez <fperez@colorado.edu>
2876 2004-08-16 Fernando Perez <fperez@colorado.edu>
2868
2877
2869 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2878 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2870 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2879 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2871 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2880 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2872
2881
2873 2004-08-11 Fernando Perez <fperez@colorado.edu>
2882 2004-08-11 Fernando Perez <fperez@colorado.edu>
2874
2883
2875 * setup.py (isfile): Fix build so documentation gets updated for
2884 * setup.py (isfile): Fix build so documentation gets updated for
2876 rpms (it was only done for .tgz builds).
2885 rpms (it was only done for .tgz builds).
2877
2886
2878 2004-08-10 Fernando Perez <fperez@colorado.edu>
2887 2004-08-10 Fernando Perez <fperez@colorado.edu>
2879
2888
2880 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2889 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2881
2890
2882 * iplib.py : Silence syntax error exceptions in tab-completion.
2891 * iplib.py : Silence syntax error exceptions in tab-completion.
2883
2892
2884 2004-08-05 Fernando Perez <fperez@colorado.edu>
2893 2004-08-05 Fernando Perez <fperez@colorado.edu>
2885
2894
2886 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2895 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2887 'color off' mark for continuation prompts. This was causing long
2896 'color off' mark for continuation prompts. This was causing long
2888 continuation lines to mis-wrap.
2897 continuation lines to mis-wrap.
2889
2898
2890 2004-08-01 Fernando Perez <fperez@colorado.edu>
2899 2004-08-01 Fernando Perez <fperez@colorado.edu>
2891
2900
2892 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2901 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2893 for building ipython to be a parameter. All this is necessary
2902 for building ipython to be a parameter. All this is necessary
2894 right now to have a multithreaded version, but this insane
2903 right now to have a multithreaded version, but this insane
2895 non-design will be cleaned up soon. For now, it's a hack that
2904 non-design will be cleaned up soon. For now, it's a hack that
2896 works.
2905 works.
2897
2906
2898 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2907 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2899 args in various places. No bugs so far, but it's a dangerous
2908 args in various places. No bugs so far, but it's a dangerous
2900 practice.
2909 practice.
2901
2910
2902 2004-07-31 Fernando Perez <fperez@colorado.edu>
2911 2004-07-31 Fernando Perez <fperez@colorado.edu>
2903
2912
2904 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2913 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2905 fix completion of files with dots in their names under most
2914 fix completion of files with dots in their names under most
2906 profiles (pysh was OK because the completion order is different).
2915 profiles (pysh was OK because the completion order is different).
2907
2916
2908 2004-07-27 Fernando Perez <fperez@colorado.edu>
2917 2004-07-27 Fernando Perez <fperez@colorado.edu>
2909
2918
2910 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2919 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2911 keywords manually, b/c the one in keyword.py was removed in python
2920 keywords manually, b/c the one in keyword.py was removed in python
2912 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2921 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2913 This is NOT a bug under python 2.3 and earlier.
2922 This is NOT a bug under python 2.3 and earlier.
2914
2923
2915 2004-07-26 Fernando Perez <fperez@colorado.edu>
2924 2004-07-26 Fernando Perez <fperez@colorado.edu>
2916
2925
2917 * IPython/ultraTB.py (VerboseTB.text): Add another
2926 * IPython/ultraTB.py (VerboseTB.text): Add another
2918 linecache.checkcache() call to try to prevent inspect.py from
2927 linecache.checkcache() call to try to prevent inspect.py from
2919 crashing under python 2.3. I think this fixes
2928 crashing under python 2.3. I think this fixes
2920 http://www.scipy.net/roundup/ipython/issue17.
2929 http://www.scipy.net/roundup/ipython/issue17.
2921
2930
2922 2004-07-26 *** Released version 0.6.2
2931 2004-07-26 *** Released version 0.6.2
2923
2932
2924 2004-07-26 Fernando Perez <fperez@colorado.edu>
2933 2004-07-26 Fernando Perez <fperez@colorado.edu>
2925
2934
2926 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2935 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2927 fail for any number.
2936 fail for any number.
2928 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2937 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2929 empty bookmarks.
2938 empty bookmarks.
2930
2939
2931 2004-07-26 *** Released version 0.6.1
2940 2004-07-26 *** Released version 0.6.1
2932
2941
2933 2004-07-26 Fernando Perez <fperez@colorado.edu>
2942 2004-07-26 Fernando Perez <fperez@colorado.edu>
2934
2943
2935 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2944 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2936
2945
2937 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2946 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2938 escaping '()[]{}' in filenames.
2947 escaping '()[]{}' in filenames.
2939
2948
2940 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2949 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2941 Python 2.2 users who lack a proper shlex.split.
2950 Python 2.2 users who lack a proper shlex.split.
2942
2951
2943 2004-07-19 Fernando Perez <fperez@colorado.edu>
2952 2004-07-19 Fernando Perez <fperez@colorado.edu>
2944
2953
2945 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2954 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2946 for reading readline's init file. I follow the normal chain:
2955 for reading readline's init file. I follow the normal chain:
2947 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2956 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2948 report by Mike Heeter. This closes
2957 report by Mike Heeter. This closes
2949 http://www.scipy.net/roundup/ipython/issue16.
2958 http://www.scipy.net/roundup/ipython/issue16.
2950
2959
2951 2004-07-18 Fernando Perez <fperez@colorado.edu>
2960 2004-07-18 Fernando Perez <fperez@colorado.edu>
2952
2961
2953 * IPython/iplib.py (__init__): Add better handling of '\' under
2962 * IPython/iplib.py (__init__): Add better handling of '\' under
2954 Win32 for filenames. After a patch by Ville.
2963 Win32 for filenames. After a patch by Ville.
2955
2964
2956 2004-07-17 Fernando Perez <fperez@colorado.edu>
2965 2004-07-17 Fernando Perez <fperez@colorado.edu>
2957
2966
2958 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2967 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2959 autocalling would be triggered for 'foo is bar' if foo is
2968 autocalling would be triggered for 'foo is bar' if foo is
2960 callable. I also cleaned up the autocall detection code to use a
2969 callable. I also cleaned up the autocall detection code to use a
2961 regexp, which is faster. Bug reported by Alexander Schmolck.
2970 regexp, which is faster. Bug reported by Alexander Schmolck.
2962
2971
2963 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2972 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2964 '?' in them would confuse the help system. Reported by Alex
2973 '?' in them would confuse the help system. Reported by Alex
2965 Schmolck.
2974 Schmolck.
2966
2975
2967 2004-07-16 Fernando Perez <fperez@colorado.edu>
2976 2004-07-16 Fernando Perez <fperez@colorado.edu>
2968
2977
2969 * IPython/GnuplotInteractive.py (__all__): added plot2.
2978 * IPython/GnuplotInteractive.py (__all__): added plot2.
2970
2979
2971 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2980 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2972 plotting dictionaries, lists or tuples of 1d arrays.
2981 plotting dictionaries, lists or tuples of 1d arrays.
2973
2982
2974 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2983 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2975 optimizations.
2984 optimizations.
2976
2985
2977 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2986 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2978 the information which was there from Janko's original IPP code:
2987 the information which was there from Janko's original IPP code:
2979
2988
2980 03.05.99 20:53 porto.ifm.uni-kiel.de
2989 03.05.99 20:53 porto.ifm.uni-kiel.de
2981 --Started changelog.
2990 --Started changelog.
2982 --make clear do what it say it does
2991 --make clear do what it say it does
2983 --added pretty output of lines from inputcache
2992 --added pretty output of lines from inputcache
2984 --Made Logger a mixin class, simplifies handling of switches
2993 --Made Logger a mixin class, simplifies handling of switches
2985 --Added own completer class. .string<TAB> expands to last history
2994 --Added own completer class. .string<TAB> expands to last history
2986 line which starts with string. The new expansion is also present
2995 line which starts with string. The new expansion is also present
2987 with Ctrl-r from the readline library. But this shows, who this
2996 with Ctrl-r from the readline library. But this shows, who this
2988 can be done for other cases.
2997 can be done for other cases.
2989 --Added convention that all shell functions should accept a
2998 --Added convention that all shell functions should accept a
2990 parameter_string This opens the door for different behaviour for
2999 parameter_string This opens the door for different behaviour for
2991 each function. @cd is a good example of this.
3000 each function. @cd is a good example of this.
2992
3001
2993 04.05.99 12:12 porto.ifm.uni-kiel.de
3002 04.05.99 12:12 porto.ifm.uni-kiel.de
2994 --added logfile rotation
3003 --added logfile rotation
2995 --added new mainloop method which freezes first the namespace
3004 --added new mainloop method which freezes first the namespace
2996
3005
2997 07.05.99 21:24 porto.ifm.uni-kiel.de
3006 07.05.99 21:24 porto.ifm.uni-kiel.de
2998 --added the docreader classes. Now there is a help system.
3007 --added the docreader classes. Now there is a help system.
2999 -This is only a first try. Currently it's not easy to put new
3008 -This is only a first try. Currently it's not easy to put new
3000 stuff in the indices. But this is the way to go. Info would be
3009 stuff in the indices. But this is the way to go. Info would be
3001 better, but HTML is every where and not everybody has an info
3010 better, but HTML is every where and not everybody has an info
3002 system installed and it's not so easy to change html-docs to info.
3011 system installed and it's not so easy to change html-docs to info.
3003 --added global logfile option
3012 --added global logfile option
3004 --there is now a hook for object inspection method pinfo needs to
3013 --there is now a hook for object inspection method pinfo needs to
3005 be provided for this. Can be reached by two '??'.
3014 be provided for this. Can be reached by two '??'.
3006
3015
3007 08.05.99 20:51 porto.ifm.uni-kiel.de
3016 08.05.99 20:51 porto.ifm.uni-kiel.de
3008 --added a README
3017 --added a README
3009 --bug in rc file. Something has changed so functions in the rc
3018 --bug in rc file. Something has changed so functions in the rc
3010 file need to reference the shell and not self. Not clear if it's a
3019 file need to reference the shell and not self. Not clear if it's a
3011 bug or feature.
3020 bug or feature.
3012 --changed rc file for new behavior
3021 --changed rc file for new behavior
3013
3022
3014 2004-07-15 Fernando Perez <fperez@colorado.edu>
3023 2004-07-15 Fernando Perez <fperez@colorado.edu>
3015
3024
3016 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3025 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3017 cache was falling out of sync in bizarre manners when multi-line
3026 cache was falling out of sync in bizarre manners when multi-line
3018 input was present. Minor optimizations and cleanup.
3027 input was present. Minor optimizations and cleanup.
3019
3028
3020 (Logger): Remove old Changelog info for cleanup. This is the
3029 (Logger): Remove old Changelog info for cleanup. This is the
3021 information which was there from Janko's original code:
3030 information which was there from Janko's original code:
3022
3031
3023 Changes to Logger: - made the default log filename a parameter
3032 Changes to Logger: - made the default log filename a parameter
3024
3033
3025 - put a check for lines beginning with !@? in log(). Needed
3034 - put a check for lines beginning with !@? in log(). Needed
3026 (even if the handlers properly log their lines) for mid-session
3035 (even if the handlers properly log their lines) for mid-session
3027 logging activation to work properly. Without this, lines logged
3036 logging activation to work properly. Without this, lines logged
3028 in mid session, which get read from the cache, would end up
3037 in mid session, which get read from the cache, would end up
3029 'bare' (with !@? in the open) in the log. Now they are caught
3038 'bare' (with !@? in the open) in the log. Now they are caught
3030 and prepended with a #.
3039 and prepended with a #.
3031
3040
3032 * IPython/iplib.py (InteractiveShell.init_readline): added check
3041 * IPython/iplib.py (InteractiveShell.init_readline): added check
3033 in case MagicCompleter fails to be defined, so we don't crash.
3042 in case MagicCompleter fails to be defined, so we don't crash.
3034
3043
3035 2004-07-13 Fernando Perez <fperez@colorado.edu>
3044 2004-07-13 Fernando Perez <fperez@colorado.edu>
3036
3045
3037 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3046 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3038 of EPS if the requested filename ends in '.eps'.
3047 of EPS if the requested filename ends in '.eps'.
3039
3048
3040 2004-07-04 Fernando Perez <fperez@colorado.edu>
3049 2004-07-04 Fernando Perez <fperez@colorado.edu>
3041
3050
3042 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3051 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3043 escaping of quotes when calling the shell.
3052 escaping of quotes when calling the shell.
3044
3053
3045 2004-07-02 Fernando Perez <fperez@colorado.edu>
3054 2004-07-02 Fernando Perez <fperez@colorado.edu>
3046
3055
3047 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3056 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3048 gettext not working because we were clobbering '_'. Fixes
3057 gettext not working because we were clobbering '_'. Fixes
3049 http://www.scipy.net/roundup/ipython/issue6.
3058 http://www.scipy.net/roundup/ipython/issue6.
3050
3059
3051 2004-07-01 Fernando Perez <fperez@colorado.edu>
3060 2004-07-01 Fernando Perez <fperez@colorado.edu>
3052
3061
3053 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3062 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3054 into @cd. Patch by Ville.
3063 into @cd. Patch by Ville.
3055
3064
3056 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3065 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3057 new function to store things after ipmaker runs. Patch by Ville.
3066 new function to store things after ipmaker runs. Patch by Ville.
3058 Eventually this will go away once ipmaker is removed and the class
3067 Eventually this will go away once ipmaker is removed and the class
3059 gets cleaned up, but for now it's ok. Key functionality here is
3068 gets cleaned up, but for now it's ok. Key functionality here is
3060 the addition of the persistent storage mechanism, a dict for
3069 the addition of the persistent storage mechanism, a dict for
3061 keeping data across sessions (for now just bookmarks, but more can
3070 keeping data across sessions (for now just bookmarks, but more can
3062 be implemented later).
3071 be implemented later).
3063
3072
3064 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3073 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3065 persistent across sections. Patch by Ville, I modified it
3074 persistent across sections. Patch by Ville, I modified it
3066 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3075 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3067 added a '-l' option to list all bookmarks.
3076 added a '-l' option to list all bookmarks.
3068
3077
3069 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3078 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3070 center for cleanup. Registered with atexit.register(). I moved
3079 center for cleanup. Registered with atexit.register(). I moved
3071 here the old exit_cleanup(). After a patch by Ville.
3080 here the old exit_cleanup(). After a patch by Ville.
3072
3081
3073 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3082 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3074 characters in the hacked shlex_split for python 2.2.
3083 characters in the hacked shlex_split for python 2.2.
3075
3084
3076 * IPython/iplib.py (file_matches): more fixes to filenames with
3085 * IPython/iplib.py (file_matches): more fixes to filenames with
3077 whitespace in them. It's not perfect, but limitations in python's
3086 whitespace in them. It's not perfect, but limitations in python's
3078 readline make it impossible to go further.
3087 readline make it impossible to go further.
3079
3088
3080 2004-06-29 Fernando Perez <fperez@colorado.edu>
3089 2004-06-29 Fernando Perez <fperez@colorado.edu>
3081
3090
3082 * IPython/iplib.py (file_matches): escape whitespace correctly in
3091 * IPython/iplib.py (file_matches): escape whitespace correctly in
3083 filename completions. Bug reported by Ville.
3092 filename completions. Bug reported by Ville.
3084
3093
3085 2004-06-28 Fernando Perez <fperez@colorado.edu>
3094 2004-06-28 Fernando Perez <fperez@colorado.edu>
3086
3095
3087 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3096 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3088 the history file will be called 'history-PROFNAME' (or just
3097 the history file will be called 'history-PROFNAME' (or just
3089 'history' if no profile is loaded). I was getting annoyed at
3098 'history' if no profile is loaded). I was getting annoyed at
3090 getting my Numerical work history clobbered by pysh sessions.
3099 getting my Numerical work history clobbered by pysh sessions.
3091
3100
3092 * IPython/iplib.py (InteractiveShell.__init__): Internal
3101 * IPython/iplib.py (InteractiveShell.__init__): Internal
3093 getoutputerror() function so that we can honor the system_verbose
3102 getoutputerror() function so that we can honor the system_verbose
3094 flag for _all_ system calls. I also added escaping of #
3103 flag for _all_ system calls. I also added escaping of #
3095 characters here to avoid confusing Itpl.
3104 characters here to avoid confusing Itpl.
3096
3105
3097 * IPython/Magic.py (shlex_split): removed call to shell in
3106 * IPython/Magic.py (shlex_split): removed call to shell in
3098 parse_options and replaced it with shlex.split(). The annoying
3107 parse_options and replaced it with shlex.split(). The annoying
3099 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3108 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3100 to backport it from 2.3, with several frail hacks (the shlex
3109 to backport it from 2.3, with several frail hacks (the shlex
3101 module is rather limited in 2.2). Thanks to a suggestion by Ville
3110 module is rather limited in 2.2). Thanks to a suggestion by Ville
3102 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3111 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3103 problem.
3112 problem.
3104
3113
3105 (Magic.magic_system_verbose): new toggle to print the actual
3114 (Magic.magic_system_verbose): new toggle to print the actual
3106 system calls made by ipython. Mainly for debugging purposes.
3115 system calls made by ipython. Mainly for debugging purposes.
3107
3116
3108 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3117 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3109 doesn't support persistence. Reported (and fix suggested) by
3118 doesn't support persistence. Reported (and fix suggested) by
3110 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3119 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3111
3120
3112 2004-06-26 Fernando Perez <fperez@colorado.edu>
3121 2004-06-26 Fernando Perez <fperez@colorado.edu>
3113
3122
3114 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3123 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3115 continue prompts.
3124 continue prompts.
3116
3125
3117 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3126 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3118 function (basically a big docstring) and a few more things here to
3127 function (basically a big docstring) and a few more things here to
3119 speedup startup. pysh.py is now very lightweight. We want because
3128 speedup startup. pysh.py is now very lightweight. We want because
3120 it gets execfile'd, while InterpreterExec gets imported, so
3129 it gets execfile'd, while InterpreterExec gets imported, so
3121 byte-compilation saves time.
3130 byte-compilation saves time.
3122
3131
3123 2004-06-25 Fernando Perez <fperez@colorado.edu>
3132 2004-06-25 Fernando Perez <fperez@colorado.edu>
3124
3133
3125 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3134 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3126 -NUM', which was recently broken.
3135 -NUM', which was recently broken.
3127
3136
3128 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3137 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3129 in multi-line input (but not !!, which doesn't make sense there).
3138 in multi-line input (but not !!, which doesn't make sense there).
3130
3139
3131 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3140 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3132 It's just too useful, and people can turn it off in the less
3141 It's just too useful, and people can turn it off in the less
3133 common cases where it's a problem.
3142 common cases where it's a problem.
3134
3143
3135 2004-06-24 Fernando Perez <fperez@colorado.edu>
3144 2004-06-24 Fernando Perez <fperez@colorado.edu>
3136
3145
3137 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3146 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3138 special syntaxes (like alias calling) is now allied in multi-line
3147 special syntaxes (like alias calling) is now allied in multi-line
3139 input. This is still _very_ experimental, but it's necessary for
3148 input. This is still _very_ experimental, but it's necessary for
3140 efficient shell usage combining python looping syntax with system
3149 efficient shell usage combining python looping syntax with system
3141 calls. For now it's restricted to aliases, I don't think it
3150 calls. For now it's restricted to aliases, I don't think it
3142 really even makes sense to have this for magics.
3151 really even makes sense to have this for magics.
3143
3152
3144 2004-06-23 Fernando Perez <fperez@colorado.edu>
3153 2004-06-23 Fernando Perez <fperez@colorado.edu>
3145
3154
3146 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3155 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3147 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3156 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3148
3157
3149 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3158 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3150 extensions under Windows (after code sent by Gary Bishop). The
3159 extensions under Windows (after code sent by Gary Bishop). The
3151 extensions considered 'executable' are stored in IPython's rc
3160 extensions considered 'executable' are stored in IPython's rc
3152 structure as win_exec_ext.
3161 structure as win_exec_ext.
3153
3162
3154 * IPython/genutils.py (shell): new function, like system() but
3163 * IPython/genutils.py (shell): new function, like system() but
3155 without return value. Very useful for interactive shell work.
3164 without return value. Very useful for interactive shell work.
3156
3165
3157 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3166 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3158 delete aliases.
3167 delete aliases.
3159
3168
3160 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3169 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3161 sure that the alias table doesn't contain python keywords.
3170 sure that the alias table doesn't contain python keywords.
3162
3171
3163 2004-06-21 Fernando Perez <fperez@colorado.edu>
3172 2004-06-21 Fernando Perez <fperez@colorado.edu>
3164
3173
3165 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3174 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3166 non-existent items are found in $PATH. Reported by Thorsten.
3175 non-existent items are found in $PATH. Reported by Thorsten.
3167
3176
3168 2004-06-20 Fernando Perez <fperez@colorado.edu>
3177 2004-06-20 Fernando Perez <fperez@colorado.edu>
3169
3178
3170 * IPython/iplib.py (complete): modified the completer so that the
3179 * IPython/iplib.py (complete): modified the completer so that the
3171 order of priorities can be easily changed at runtime.
3180 order of priorities can be easily changed at runtime.
3172
3181
3173 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3182 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3174 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3183 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3175
3184
3176 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3185 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3177 expand Python variables prepended with $ in all system calls. The
3186 expand Python variables prepended with $ in all system calls. The
3178 same was done to InteractiveShell.handle_shell_escape. Now all
3187 same was done to InteractiveShell.handle_shell_escape. Now all
3179 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3188 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3180 expansion of python variables and expressions according to the
3189 expansion of python variables and expressions according to the
3181 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3190 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3182
3191
3183 Though PEP-215 has been rejected, a similar (but simpler) one
3192 Though PEP-215 has been rejected, a similar (but simpler) one
3184 seems like it will go into Python 2.4, PEP-292 -
3193 seems like it will go into Python 2.4, PEP-292 -
3185 http://www.python.org/peps/pep-0292.html.
3194 http://www.python.org/peps/pep-0292.html.
3186
3195
3187 I'll keep the full syntax of PEP-215, since IPython has since the
3196 I'll keep the full syntax of PEP-215, since IPython has since the
3188 start used Ka-Ping Yee's reference implementation discussed there
3197 start used Ka-Ping Yee's reference implementation discussed there
3189 (Itpl), and I actually like the powerful semantics it offers.
3198 (Itpl), and I actually like the powerful semantics it offers.
3190
3199
3191 In order to access normal shell variables, the $ has to be escaped
3200 In order to access normal shell variables, the $ has to be escaped
3192 via an extra $. For example:
3201 via an extra $. For example:
3193
3202
3194 In [7]: PATH='a python variable'
3203 In [7]: PATH='a python variable'
3195
3204
3196 In [8]: !echo $PATH
3205 In [8]: !echo $PATH
3197 a python variable
3206 a python variable
3198
3207
3199 In [9]: !echo $$PATH
3208 In [9]: !echo $$PATH
3200 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3209 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3201
3210
3202 (Magic.parse_options): escape $ so the shell doesn't evaluate
3211 (Magic.parse_options): escape $ so the shell doesn't evaluate
3203 things prematurely.
3212 things prematurely.
3204
3213
3205 * IPython/iplib.py (InteractiveShell.call_alias): added the
3214 * IPython/iplib.py (InteractiveShell.call_alias): added the
3206 ability for aliases to expand python variables via $.
3215 ability for aliases to expand python variables via $.
3207
3216
3208 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3217 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3209 system, now there's a @rehash/@rehashx pair of magics. These work
3218 system, now there's a @rehash/@rehashx pair of magics. These work
3210 like the csh rehash command, and can be invoked at any time. They
3219 like the csh rehash command, and can be invoked at any time. They
3211 build a table of aliases to everything in the user's $PATH
3220 build a table of aliases to everything in the user's $PATH
3212 (@rehash uses everything, @rehashx is slower but only adds
3221 (@rehash uses everything, @rehashx is slower but only adds
3213 executable files). With this, the pysh.py-based shell profile can
3222 executable files). With this, the pysh.py-based shell profile can
3214 now simply call rehash upon startup, and full access to all
3223 now simply call rehash upon startup, and full access to all
3215 programs in the user's path is obtained.
3224 programs in the user's path is obtained.
3216
3225
3217 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3226 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3218 functionality is now fully in place. I removed the old dynamic
3227 functionality is now fully in place. I removed the old dynamic
3219 code generation based approach, in favor of a much lighter one
3228 code generation based approach, in favor of a much lighter one
3220 based on a simple dict. The advantage is that this allows me to
3229 based on a simple dict. The advantage is that this allows me to
3221 now have thousands of aliases with negligible cost (unthinkable
3230 now have thousands of aliases with negligible cost (unthinkable
3222 with the old system).
3231 with the old system).
3223
3232
3224 2004-06-19 Fernando Perez <fperez@colorado.edu>
3233 2004-06-19 Fernando Perez <fperez@colorado.edu>
3225
3234
3226 * IPython/iplib.py (__init__): extended MagicCompleter class to
3235 * IPython/iplib.py (__init__): extended MagicCompleter class to
3227 also complete (last in priority) on user aliases.
3236 also complete (last in priority) on user aliases.
3228
3237
3229 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3238 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3230 call to eval.
3239 call to eval.
3231 (ItplNS.__init__): Added a new class which functions like Itpl,
3240 (ItplNS.__init__): Added a new class which functions like Itpl,
3232 but allows configuring the namespace for the evaluation to occur
3241 but allows configuring the namespace for the evaluation to occur
3233 in.
3242 in.
3234
3243
3235 2004-06-18 Fernando Perez <fperez@colorado.edu>
3244 2004-06-18 Fernando Perez <fperez@colorado.edu>
3236
3245
3237 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3246 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3238 better message when 'exit' or 'quit' are typed (a common newbie
3247 better message when 'exit' or 'quit' are typed (a common newbie
3239 confusion).
3248 confusion).
3240
3249
3241 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3250 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3242 check for Windows users.
3251 check for Windows users.
3243
3252
3244 * IPython/iplib.py (InteractiveShell.user_setup): removed
3253 * IPython/iplib.py (InteractiveShell.user_setup): removed
3245 disabling of colors for Windows. I'll test at runtime and issue a
3254 disabling of colors for Windows. I'll test at runtime and issue a
3246 warning if Gary's readline isn't found, as to nudge users to
3255 warning if Gary's readline isn't found, as to nudge users to
3247 download it.
3256 download it.
3248
3257
3249 2004-06-16 Fernando Perez <fperez@colorado.edu>
3258 2004-06-16 Fernando Perez <fperez@colorado.edu>
3250
3259
3251 * IPython/genutils.py (Stream.__init__): changed to print errors
3260 * IPython/genutils.py (Stream.__init__): changed to print errors
3252 to sys.stderr. I had a circular dependency here. Now it's
3261 to sys.stderr. I had a circular dependency here. Now it's
3253 possible to run ipython as IDLE's shell (consider this pre-alpha,
3262 possible to run ipython as IDLE's shell (consider this pre-alpha,
3254 since true stdout things end up in the starting terminal instead
3263 since true stdout things end up in the starting terminal instead
3255 of IDLE's out).
3264 of IDLE's out).
3256
3265
3257 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3266 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3258 users who haven't # updated their prompt_in2 definitions. Remove
3267 users who haven't # updated their prompt_in2 definitions. Remove
3259 eventually.
3268 eventually.
3260 (multiple_replace): added credit to original ASPN recipe.
3269 (multiple_replace): added credit to original ASPN recipe.
3261
3270
3262 2004-06-15 Fernando Perez <fperez@colorado.edu>
3271 2004-06-15 Fernando Perez <fperez@colorado.edu>
3263
3272
3264 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3273 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3265 list of auto-defined aliases.
3274 list of auto-defined aliases.
3266
3275
3267 2004-06-13 Fernando Perez <fperez@colorado.edu>
3276 2004-06-13 Fernando Perez <fperez@colorado.edu>
3268
3277
3269 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3278 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3270 install was really requested (so setup.py can be used for other
3279 install was really requested (so setup.py can be used for other
3271 things under Windows).
3280 things under Windows).
3272
3281
3273 2004-06-10 Fernando Perez <fperez@colorado.edu>
3282 2004-06-10 Fernando Perez <fperez@colorado.edu>
3274
3283
3275 * IPython/Logger.py (Logger.create_log): Manually remove any old
3284 * IPython/Logger.py (Logger.create_log): Manually remove any old
3276 backup, since os.remove may fail under Windows. Fixes bug
3285 backup, since os.remove may fail under Windows. Fixes bug
3277 reported by Thorsten.
3286 reported by Thorsten.
3278
3287
3279 2004-06-09 Fernando Perez <fperez@colorado.edu>
3288 2004-06-09 Fernando Perez <fperez@colorado.edu>
3280
3289
3281 * examples/example-embed.py: fixed all references to %n (replaced
3290 * examples/example-embed.py: fixed all references to %n (replaced
3282 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3291 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3283 for all examples and the manual as well.
3292 for all examples and the manual as well.
3284
3293
3285 2004-06-08 Fernando Perez <fperez@colorado.edu>
3294 2004-06-08 Fernando Perez <fperez@colorado.edu>
3286
3295
3287 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3296 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3288 alignment and color management. All 3 prompt subsystems now
3297 alignment and color management. All 3 prompt subsystems now
3289 inherit from BasePrompt.
3298 inherit from BasePrompt.
3290
3299
3291 * tools/release: updates for windows installer build and tag rpms
3300 * tools/release: updates for windows installer build and tag rpms
3292 with python version (since paths are fixed).
3301 with python version (since paths are fixed).
3293
3302
3294 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3303 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3295 which will become eventually obsolete. Also fixed the default
3304 which will become eventually obsolete. Also fixed the default
3296 prompt_in2 to use \D, so at least new users start with the correct
3305 prompt_in2 to use \D, so at least new users start with the correct
3297 defaults.
3306 defaults.
3298 WARNING: Users with existing ipythonrc files will need to apply
3307 WARNING: Users with existing ipythonrc files will need to apply
3299 this fix manually!
3308 this fix manually!
3300
3309
3301 * setup.py: make windows installer (.exe). This is finally the
3310 * setup.py: make windows installer (.exe). This is finally the
3302 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3311 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3303 which I hadn't included because it required Python 2.3 (or recent
3312 which I hadn't included because it required Python 2.3 (or recent
3304 distutils).
3313 distutils).
3305
3314
3306 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3315 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3307 usage of new '\D' escape.
3316 usage of new '\D' escape.
3308
3317
3309 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3318 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3310 lacks os.getuid())
3319 lacks os.getuid())
3311 (CachedOutput.set_colors): Added the ability to turn coloring
3320 (CachedOutput.set_colors): Added the ability to turn coloring
3312 on/off with @colors even for manually defined prompt colors. It
3321 on/off with @colors even for manually defined prompt colors. It
3313 uses a nasty global, but it works safely and via the generic color
3322 uses a nasty global, but it works safely and via the generic color
3314 handling mechanism.
3323 handling mechanism.
3315 (Prompt2.__init__): Introduced new escape '\D' for continuation
3324 (Prompt2.__init__): Introduced new escape '\D' for continuation
3316 prompts. It represents the counter ('\#') as dots.
3325 prompts. It represents the counter ('\#') as dots.
3317 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3326 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3318 need to update their ipythonrc files and replace '%n' with '\D' in
3327 need to update their ipythonrc files and replace '%n' with '\D' in
3319 their prompt_in2 settings everywhere. Sorry, but there's
3328 their prompt_in2 settings everywhere. Sorry, but there's
3320 otherwise no clean way to get all prompts to properly align. The
3329 otherwise no clean way to get all prompts to properly align. The
3321 ipythonrc shipped with IPython has been updated.
3330 ipythonrc shipped with IPython has been updated.
3322
3331
3323 2004-06-07 Fernando Perez <fperez@colorado.edu>
3332 2004-06-07 Fernando Perez <fperez@colorado.edu>
3324
3333
3325 * setup.py (isfile): Pass local_icons option to latex2html, so the
3334 * setup.py (isfile): Pass local_icons option to latex2html, so the
3326 resulting HTML file is self-contained. Thanks to
3335 resulting HTML file is self-contained. Thanks to
3327 dryice-AT-liu.com.cn for the tip.
3336 dryice-AT-liu.com.cn for the tip.
3328
3337
3329 * pysh.py: I created a new profile 'shell', which implements a
3338 * pysh.py: I created a new profile 'shell', which implements a
3330 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3339 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3331 system shell, nor will it become one anytime soon. It's mainly
3340 system shell, nor will it become one anytime soon. It's mainly
3332 meant to illustrate the use of the new flexible bash-like prompts.
3341 meant to illustrate the use of the new flexible bash-like prompts.
3333 I guess it could be used by hardy souls for true shell management,
3342 I guess it could be used by hardy souls for true shell management,
3334 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3343 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3335 profile. This uses the InterpreterExec extension provided by
3344 profile. This uses the InterpreterExec extension provided by
3336 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3345 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3337
3346
3338 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3347 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3339 auto-align itself with the length of the previous input prompt
3348 auto-align itself with the length of the previous input prompt
3340 (taking into account the invisible color escapes).
3349 (taking into account the invisible color escapes).
3341 (CachedOutput.__init__): Large restructuring of this class. Now
3350 (CachedOutput.__init__): Large restructuring of this class. Now
3342 all three prompts (primary1, primary2, output) are proper objects,
3351 all three prompts (primary1, primary2, output) are proper objects,
3343 managed by the 'parent' CachedOutput class. The code is still a
3352 managed by the 'parent' CachedOutput class. The code is still a
3344 bit hackish (all prompts share state via a pointer to the cache),
3353 bit hackish (all prompts share state via a pointer to the cache),
3345 but it's overall far cleaner than before.
3354 but it's overall far cleaner than before.
3346
3355
3347 * IPython/genutils.py (getoutputerror): modified to add verbose,
3356 * IPython/genutils.py (getoutputerror): modified to add verbose,
3348 debug and header options. This makes the interface of all getout*
3357 debug and header options. This makes the interface of all getout*
3349 functions uniform.
3358 functions uniform.
3350 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3359 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3351
3360
3352 * IPython/Magic.py (Magic.default_option): added a function to
3361 * IPython/Magic.py (Magic.default_option): added a function to
3353 allow registering default options for any magic command. This
3362 allow registering default options for any magic command. This
3354 makes it easy to have profiles which customize the magics globally
3363 makes it easy to have profiles which customize the magics globally
3355 for a certain use. The values set through this function are
3364 for a certain use. The values set through this function are
3356 picked up by the parse_options() method, which all magics should
3365 picked up by the parse_options() method, which all magics should
3357 use to parse their options.
3366 use to parse their options.
3358
3367
3359 * IPython/genutils.py (warn): modified the warnings framework to
3368 * IPython/genutils.py (warn): modified the warnings framework to
3360 use the Term I/O class. I'm trying to slowly unify all of
3369 use the Term I/O class. I'm trying to slowly unify all of
3361 IPython's I/O operations to pass through Term.
3370 IPython's I/O operations to pass through Term.
3362
3371
3363 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3372 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3364 the secondary prompt to correctly match the length of the primary
3373 the secondary prompt to correctly match the length of the primary
3365 one for any prompt. Now multi-line code will properly line up
3374 one for any prompt. Now multi-line code will properly line up
3366 even for path dependent prompts, such as the new ones available
3375 even for path dependent prompts, such as the new ones available
3367 via the prompt_specials.
3376 via the prompt_specials.
3368
3377
3369 2004-06-06 Fernando Perez <fperez@colorado.edu>
3378 2004-06-06 Fernando Perez <fperez@colorado.edu>
3370
3379
3371 * IPython/Prompts.py (prompt_specials): Added the ability to have
3380 * IPython/Prompts.py (prompt_specials): Added the ability to have
3372 bash-like special sequences in the prompts, which get
3381 bash-like special sequences in the prompts, which get
3373 automatically expanded. Things like hostname, current working
3382 automatically expanded. Things like hostname, current working
3374 directory and username are implemented already, but it's easy to
3383 directory and username are implemented already, but it's easy to
3375 add more in the future. Thanks to a patch by W.J. van der Laan
3384 add more in the future. Thanks to a patch by W.J. van der Laan
3376 <gnufnork-AT-hetdigitalegat.nl>
3385 <gnufnork-AT-hetdigitalegat.nl>
3377 (prompt_specials): Added color support for prompt strings, so
3386 (prompt_specials): Added color support for prompt strings, so
3378 users can define arbitrary color setups for their prompts.
3387 users can define arbitrary color setups for their prompts.
3379
3388
3380 2004-06-05 Fernando Perez <fperez@colorado.edu>
3389 2004-06-05 Fernando Perez <fperez@colorado.edu>
3381
3390
3382 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3391 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3383 code to load Gary Bishop's readline and configure it
3392 code to load Gary Bishop's readline and configure it
3384 automatically. Thanks to Gary for help on this.
3393 automatically. Thanks to Gary for help on this.
3385
3394
3386 2004-06-01 Fernando Perez <fperez@colorado.edu>
3395 2004-06-01 Fernando Perez <fperez@colorado.edu>
3387
3396
3388 * IPython/Logger.py (Logger.create_log): fix bug for logging
3397 * IPython/Logger.py (Logger.create_log): fix bug for logging
3389 with no filename (previous fix was incomplete).
3398 with no filename (previous fix was incomplete).
3390
3399
3391 2004-05-25 Fernando Perez <fperez@colorado.edu>
3400 2004-05-25 Fernando Perez <fperez@colorado.edu>
3392
3401
3393 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3402 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3394 parens would get passed to the shell.
3403 parens would get passed to the shell.
3395
3404
3396 2004-05-20 Fernando Perez <fperez@colorado.edu>
3405 2004-05-20 Fernando Perez <fperez@colorado.edu>
3397
3406
3398 * IPython/Magic.py (Magic.magic_prun): changed default profile
3407 * IPython/Magic.py (Magic.magic_prun): changed default profile
3399 sort order to 'time' (the more common profiling need).
3408 sort order to 'time' (the more common profiling need).
3400
3409
3401 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3410 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3402 so that source code shown is guaranteed in sync with the file on
3411 so that source code shown is guaranteed in sync with the file on
3403 disk (also changed in psource). Similar fix to the one for
3412 disk (also changed in psource). Similar fix to the one for
3404 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3413 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3405 <yann.ledu-AT-noos.fr>.
3414 <yann.ledu-AT-noos.fr>.
3406
3415
3407 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3416 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3408 with a single option would not be correctly parsed. Closes
3417 with a single option would not be correctly parsed. Closes
3409 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3418 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3410 introduced in 0.6.0 (on 2004-05-06).
3419 introduced in 0.6.0 (on 2004-05-06).
3411
3420
3412 2004-05-13 *** Released version 0.6.0
3421 2004-05-13 *** Released version 0.6.0
3413
3422
3414 2004-05-13 Fernando Perez <fperez@colorado.edu>
3423 2004-05-13 Fernando Perez <fperez@colorado.edu>
3415
3424
3416 * debian/: Added debian/ directory to CVS, so that debian support
3425 * debian/: Added debian/ directory to CVS, so that debian support
3417 is publicly accessible. The debian package is maintained by Jack
3426 is publicly accessible. The debian package is maintained by Jack
3418 Moffit <jack-AT-xiph.org>.
3427 Moffit <jack-AT-xiph.org>.
3419
3428
3420 * Documentation: included the notes about an ipython-based system
3429 * Documentation: included the notes about an ipython-based system
3421 shell (the hypothetical 'pysh') into the new_design.pdf document,
3430 shell (the hypothetical 'pysh') into the new_design.pdf document,
3422 so that these ideas get distributed to users along with the
3431 so that these ideas get distributed to users along with the
3423 official documentation.
3432 official documentation.
3424
3433
3425 2004-05-10 Fernando Perez <fperez@colorado.edu>
3434 2004-05-10 Fernando Perez <fperez@colorado.edu>
3426
3435
3427 * IPython/Logger.py (Logger.create_log): fix recently introduced
3436 * IPython/Logger.py (Logger.create_log): fix recently introduced
3428 bug (misindented line) where logstart would fail when not given an
3437 bug (misindented line) where logstart would fail when not given an
3429 explicit filename.
3438 explicit filename.
3430
3439
3431 2004-05-09 Fernando Perez <fperez@colorado.edu>
3440 2004-05-09 Fernando Perez <fperez@colorado.edu>
3432
3441
3433 * IPython/Magic.py (Magic.parse_options): skip system call when
3442 * IPython/Magic.py (Magic.parse_options): skip system call when
3434 there are no options to look for. Faster, cleaner for the common
3443 there are no options to look for. Faster, cleaner for the common
3435 case.
3444 case.
3436
3445
3437 * Documentation: many updates to the manual: describing Windows
3446 * Documentation: many updates to the manual: describing Windows
3438 support better, Gnuplot updates, credits, misc small stuff. Also
3447 support better, Gnuplot updates, credits, misc small stuff. Also
3439 updated the new_design doc a bit.
3448 updated the new_design doc a bit.
3440
3449
3441 2004-05-06 *** Released version 0.6.0.rc1
3450 2004-05-06 *** Released version 0.6.0.rc1
3442
3451
3443 2004-05-06 Fernando Perez <fperez@colorado.edu>
3452 2004-05-06 Fernando Perez <fperez@colorado.edu>
3444
3453
3445 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3454 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3446 operations to use the vastly more efficient list/''.join() method.
3455 operations to use the vastly more efficient list/''.join() method.
3447 (FormattedTB.text): Fix
3456 (FormattedTB.text): Fix
3448 http://www.scipy.net/roundup/ipython/issue12 - exception source
3457 http://www.scipy.net/roundup/ipython/issue12 - exception source
3449 extract not updated after reload. Thanks to Mike Salib
3458 extract not updated after reload. Thanks to Mike Salib
3450 <msalib-AT-mit.edu> for pinning the source of the problem.
3459 <msalib-AT-mit.edu> for pinning the source of the problem.
3451 Fortunately, the solution works inside ipython and doesn't require
3460 Fortunately, the solution works inside ipython and doesn't require
3452 any changes to python proper.
3461 any changes to python proper.
3453
3462
3454 * IPython/Magic.py (Magic.parse_options): Improved to process the
3463 * IPython/Magic.py (Magic.parse_options): Improved to process the
3455 argument list as a true shell would (by actually using the
3464 argument list as a true shell would (by actually using the
3456 underlying system shell). This way, all @magics automatically get
3465 underlying system shell). This way, all @magics automatically get
3457 shell expansion for variables. Thanks to a comment by Alex
3466 shell expansion for variables. Thanks to a comment by Alex
3458 Schmolck.
3467 Schmolck.
3459
3468
3460 2004-04-04 Fernando Perez <fperez@colorado.edu>
3469 2004-04-04 Fernando Perez <fperez@colorado.edu>
3461
3470
3462 * IPython/iplib.py (InteractiveShell.interact): Added a special
3471 * IPython/iplib.py (InteractiveShell.interact): Added a special
3463 trap for a debugger quit exception, which is basically impossible
3472 trap for a debugger quit exception, which is basically impossible
3464 to handle by normal mechanisms, given what pdb does to the stack.
3473 to handle by normal mechanisms, given what pdb does to the stack.
3465 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3474 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3466
3475
3467 2004-04-03 Fernando Perez <fperez@colorado.edu>
3476 2004-04-03 Fernando Perez <fperez@colorado.edu>
3468
3477
3469 * IPython/genutils.py (Term): Standardized the names of the Term
3478 * IPython/genutils.py (Term): Standardized the names of the Term
3470 class streams to cin/cout/cerr, following C++ naming conventions
3479 class streams to cin/cout/cerr, following C++ naming conventions
3471 (I can't use in/out/err because 'in' is not a valid attribute
3480 (I can't use in/out/err because 'in' is not a valid attribute
3472 name).
3481 name).
3473
3482
3474 * IPython/iplib.py (InteractiveShell.interact): don't increment
3483 * IPython/iplib.py (InteractiveShell.interact): don't increment
3475 the prompt if there's no user input. By Daniel 'Dang' Griffith
3484 the prompt if there's no user input. By Daniel 'Dang' Griffith
3476 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3485 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3477 Francois Pinard.
3486 Francois Pinard.
3478
3487
3479 2004-04-02 Fernando Perez <fperez@colorado.edu>
3488 2004-04-02 Fernando Perez <fperez@colorado.edu>
3480
3489
3481 * IPython/genutils.py (Stream.__init__): Modified to survive at
3490 * IPython/genutils.py (Stream.__init__): Modified to survive at
3482 least importing in contexts where stdin/out/err aren't true file
3491 least importing in contexts where stdin/out/err aren't true file
3483 objects, such as PyCrust (they lack fileno() and mode). However,
3492 objects, such as PyCrust (they lack fileno() and mode). However,
3484 the recovery facilities which rely on these things existing will
3493 the recovery facilities which rely on these things existing will
3485 not work.
3494 not work.
3486
3495
3487 2004-04-01 Fernando Perez <fperez@colorado.edu>
3496 2004-04-01 Fernando Perez <fperez@colorado.edu>
3488
3497
3489 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3498 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3490 use the new getoutputerror() function, so it properly
3499 use the new getoutputerror() function, so it properly
3491 distinguishes stdout/err.
3500 distinguishes stdout/err.
3492
3501
3493 * IPython/genutils.py (getoutputerror): added a function to
3502 * IPython/genutils.py (getoutputerror): added a function to
3494 capture separately the standard output and error of a command.
3503 capture separately the standard output and error of a command.
3495 After a comment from dang on the mailing lists. This code is
3504 After a comment from dang on the mailing lists. This code is
3496 basically a modified version of commands.getstatusoutput(), from
3505 basically a modified version of commands.getstatusoutput(), from
3497 the standard library.
3506 the standard library.
3498
3507
3499 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3508 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3500 '!!' as a special syntax (shorthand) to access @sx.
3509 '!!' as a special syntax (shorthand) to access @sx.
3501
3510
3502 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3511 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3503 command and return its output as a list split on '\n'.
3512 command and return its output as a list split on '\n'.
3504
3513
3505 2004-03-31 Fernando Perez <fperez@colorado.edu>
3514 2004-03-31 Fernando Perez <fperez@colorado.edu>
3506
3515
3507 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3516 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3508 method to dictionaries used as FakeModule instances if they lack
3517 method to dictionaries used as FakeModule instances if they lack
3509 it. At least pydoc in python2.3 breaks for runtime-defined
3518 it. At least pydoc in python2.3 breaks for runtime-defined
3510 functions without this hack. At some point I need to _really_
3519 functions without this hack. At some point I need to _really_
3511 understand what FakeModule is doing, because it's a gross hack.
3520 understand what FakeModule is doing, because it's a gross hack.
3512 But it solves Arnd's problem for now...
3521 But it solves Arnd's problem for now...
3513
3522
3514 2004-02-27 Fernando Perez <fperez@colorado.edu>
3523 2004-02-27 Fernando Perez <fperez@colorado.edu>
3515
3524
3516 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3525 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3517 mode would behave erratically. Also increased the number of
3526 mode would behave erratically. Also increased the number of
3518 possible logs in rotate mod to 999. Thanks to Rod Holland
3527 possible logs in rotate mod to 999. Thanks to Rod Holland
3519 <rhh@StructureLABS.com> for the report and fixes.
3528 <rhh@StructureLABS.com> for the report and fixes.
3520
3529
3521 2004-02-26 Fernando Perez <fperez@colorado.edu>
3530 2004-02-26 Fernando Perez <fperez@colorado.edu>
3522
3531
3523 * IPython/genutils.py (page): Check that the curses module really
3532 * IPython/genutils.py (page): Check that the curses module really
3524 has the initscr attribute before trying to use it. For some
3533 has the initscr attribute before trying to use it. For some
3525 reason, the Solaris curses module is missing this. I think this
3534 reason, the Solaris curses module is missing this. I think this
3526 should be considered a Solaris python bug, but I'm not sure.
3535 should be considered a Solaris python bug, but I'm not sure.
3527
3536
3528 2004-01-17 Fernando Perez <fperez@colorado.edu>
3537 2004-01-17 Fernando Perez <fperez@colorado.edu>
3529
3538
3530 * IPython/genutils.py (Stream.__init__): Changes to try to make
3539 * IPython/genutils.py (Stream.__init__): Changes to try to make
3531 ipython robust against stdin/out/err being closed by the user.
3540 ipython robust against stdin/out/err being closed by the user.
3532 This is 'user error' (and blocks a normal python session, at least
3541 This is 'user error' (and blocks a normal python session, at least
3533 the stdout case). However, Ipython should be able to survive such
3542 the stdout case). However, Ipython should be able to survive such
3534 instances of abuse as gracefully as possible. To simplify the
3543 instances of abuse as gracefully as possible. To simplify the
3535 coding and maintain compatibility with Gary Bishop's Term
3544 coding and maintain compatibility with Gary Bishop's Term
3536 contributions, I've made use of classmethods for this. I think
3545 contributions, I've made use of classmethods for this. I think
3537 this introduces a dependency on python 2.2.
3546 this introduces a dependency on python 2.2.
3538
3547
3539 2004-01-13 Fernando Perez <fperez@colorado.edu>
3548 2004-01-13 Fernando Perez <fperez@colorado.edu>
3540
3549
3541 * IPython/numutils.py (exp_safe): simplified the code a bit and
3550 * IPython/numutils.py (exp_safe): simplified the code a bit and
3542 removed the need for importing the kinds module altogether.
3551 removed the need for importing the kinds module altogether.
3543
3552
3544 2004-01-06 Fernando Perez <fperez@colorado.edu>
3553 2004-01-06 Fernando Perez <fperez@colorado.edu>
3545
3554
3546 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3555 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3547 a magic function instead, after some community feedback. No
3556 a magic function instead, after some community feedback. No
3548 special syntax will exist for it, but its name is deliberately
3557 special syntax will exist for it, but its name is deliberately
3549 very short.
3558 very short.
3550
3559
3551 2003-12-20 Fernando Perez <fperez@colorado.edu>
3560 2003-12-20 Fernando Perez <fperez@colorado.edu>
3552
3561
3553 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3562 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3554 new functionality, to automagically assign the result of a shell
3563 new functionality, to automagically assign the result of a shell
3555 command to a variable. I'll solicit some community feedback on
3564 command to a variable. I'll solicit some community feedback on
3556 this before making it permanent.
3565 this before making it permanent.
3557
3566
3558 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3567 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3559 requested about callables for which inspect couldn't obtain a
3568 requested about callables for which inspect couldn't obtain a
3560 proper argspec. Thanks to a crash report sent by Etienne
3569 proper argspec. Thanks to a crash report sent by Etienne
3561 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3570 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3562
3571
3563 2003-12-09 Fernando Perez <fperez@colorado.edu>
3572 2003-12-09 Fernando Perez <fperez@colorado.edu>
3564
3573
3565 * IPython/genutils.py (page): patch for the pager to work across
3574 * IPython/genutils.py (page): patch for the pager to work across
3566 various versions of Windows. By Gary Bishop.
3575 various versions of Windows. By Gary Bishop.
3567
3576
3568 2003-12-04 Fernando Perez <fperez@colorado.edu>
3577 2003-12-04 Fernando Perez <fperez@colorado.edu>
3569
3578
3570 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3579 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3571 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3580 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3572 While I tested this and it looks ok, there may still be corner
3581 While I tested this and it looks ok, there may still be corner
3573 cases I've missed.
3582 cases I've missed.
3574
3583
3575 2003-12-01 Fernando Perez <fperez@colorado.edu>
3584 2003-12-01 Fernando Perez <fperez@colorado.edu>
3576
3585
3577 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3586 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3578 where a line like 'p,q=1,2' would fail because the automagic
3587 where a line like 'p,q=1,2' would fail because the automagic
3579 system would be triggered for @p.
3588 system would be triggered for @p.
3580
3589
3581 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3590 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3582 cleanups, code unmodified.
3591 cleanups, code unmodified.
3583
3592
3584 * IPython/genutils.py (Term): added a class for IPython to handle
3593 * IPython/genutils.py (Term): added a class for IPython to handle
3585 output. In most cases it will just be a proxy for stdout/err, but
3594 output. In most cases it will just be a proxy for stdout/err, but
3586 having this allows modifications to be made for some platforms,
3595 having this allows modifications to be made for some platforms,
3587 such as handling color escapes under Windows. All of this code
3596 such as handling color escapes under Windows. All of this code
3588 was contributed by Gary Bishop, with minor modifications by me.
3597 was contributed by Gary Bishop, with minor modifications by me.
3589 The actual changes affect many files.
3598 The actual changes affect many files.
3590
3599
3591 2003-11-30 Fernando Perez <fperez@colorado.edu>
3600 2003-11-30 Fernando Perez <fperez@colorado.edu>
3592
3601
3593 * IPython/iplib.py (file_matches): new completion code, courtesy
3602 * IPython/iplib.py (file_matches): new completion code, courtesy
3594 of Jeff Collins. This enables filename completion again under
3603 of Jeff Collins. This enables filename completion again under
3595 python 2.3, which disabled it at the C level.
3604 python 2.3, which disabled it at the C level.
3596
3605
3597 2003-11-11 Fernando Perez <fperez@colorado.edu>
3606 2003-11-11 Fernando Perez <fperez@colorado.edu>
3598
3607
3599 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3608 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3600 for Numeric.array(map(...)), but often convenient.
3609 for Numeric.array(map(...)), but often convenient.
3601
3610
3602 2003-11-05 Fernando Perez <fperez@colorado.edu>
3611 2003-11-05 Fernando Perez <fperez@colorado.edu>
3603
3612
3604 * IPython/numutils.py (frange): Changed a call from int() to
3613 * IPython/numutils.py (frange): Changed a call from int() to
3605 int(round()) to prevent a problem reported with arange() in the
3614 int(round()) to prevent a problem reported with arange() in the
3606 numpy list.
3615 numpy list.
3607
3616
3608 2003-10-06 Fernando Perez <fperez@colorado.edu>
3617 2003-10-06 Fernando Perez <fperez@colorado.edu>
3609
3618
3610 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3619 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3611 prevent crashes if sys lacks an argv attribute (it happens with
3620 prevent crashes if sys lacks an argv attribute (it happens with
3612 embedded interpreters which build a bare-bones sys module).
3621 embedded interpreters which build a bare-bones sys module).
3613 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3622 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3614
3623
3615 2003-09-24 Fernando Perez <fperez@colorado.edu>
3624 2003-09-24 Fernando Perez <fperez@colorado.edu>
3616
3625
3617 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3626 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3618 to protect against poorly written user objects where __getattr__
3627 to protect against poorly written user objects where __getattr__
3619 raises exceptions other than AttributeError. Thanks to a bug
3628 raises exceptions other than AttributeError. Thanks to a bug
3620 report by Oliver Sander <osander-AT-gmx.de>.
3629 report by Oliver Sander <osander-AT-gmx.de>.
3621
3630
3622 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3631 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3623 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3632 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3624
3633
3625 2003-09-09 Fernando Perez <fperez@colorado.edu>
3634 2003-09-09 Fernando Perez <fperez@colorado.edu>
3626
3635
3627 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3636 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3628 unpacking a list whith a callable as first element would
3637 unpacking a list whith a callable as first element would
3629 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3638 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3630 Collins.
3639 Collins.
3631
3640
3632 2003-08-25 *** Released version 0.5.0
3641 2003-08-25 *** Released version 0.5.0
3633
3642
3634 2003-08-22 Fernando Perez <fperez@colorado.edu>
3643 2003-08-22 Fernando Perez <fperez@colorado.edu>
3635
3644
3636 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3645 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3637 improperly defined user exceptions. Thanks to feedback from Mark
3646 improperly defined user exceptions. Thanks to feedback from Mark
3638 Russell <mrussell-AT-verio.net>.
3647 Russell <mrussell-AT-verio.net>.
3639
3648
3640 2003-08-20 Fernando Perez <fperez@colorado.edu>
3649 2003-08-20 Fernando Perez <fperez@colorado.edu>
3641
3650
3642 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3651 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3643 printing so that it would print multi-line string forms starting
3652 printing so that it would print multi-line string forms starting
3644 with a new line. This way the formatting is better respected for
3653 with a new line. This way the formatting is better respected for
3645 objects which work hard to make nice string forms.
3654 objects which work hard to make nice string forms.
3646
3655
3647 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3656 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3648 autocall would overtake data access for objects with both
3657 autocall would overtake data access for objects with both
3649 __getitem__ and __call__.
3658 __getitem__ and __call__.
3650
3659
3651 2003-08-19 *** Released version 0.5.0-rc1
3660 2003-08-19 *** Released version 0.5.0-rc1
3652
3661
3653 2003-08-19 Fernando Perez <fperez@colorado.edu>
3662 2003-08-19 Fernando Perez <fperez@colorado.edu>
3654
3663
3655 * IPython/deep_reload.py (load_tail): single tiny change here
3664 * IPython/deep_reload.py (load_tail): single tiny change here
3656 seems to fix the long-standing bug of dreload() failing to work
3665 seems to fix the long-standing bug of dreload() failing to work
3657 for dotted names. But this module is pretty tricky, so I may have
3666 for dotted names. But this module is pretty tricky, so I may have
3658 missed some subtlety. Needs more testing!.
3667 missed some subtlety. Needs more testing!.
3659
3668
3660 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3669 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3661 exceptions which have badly implemented __str__ methods.
3670 exceptions which have badly implemented __str__ methods.
3662 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3671 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3663 which I've been getting reports about from Python 2.3 users. I
3672 which I've been getting reports about from Python 2.3 users. I
3664 wish I had a simple test case to reproduce the problem, so I could
3673 wish I had a simple test case to reproduce the problem, so I could
3665 either write a cleaner workaround or file a bug report if
3674 either write a cleaner workaround or file a bug report if
3666 necessary.
3675 necessary.
3667
3676
3668 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3677 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3669 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3678 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3670 a bug report by Tjabo Kloppenburg.
3679 a bug report by Tjabo Kloppenburg.
3671
3680
3672 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3681 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3673 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3682 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3674 seems rather unstable. Thanks to a bug report by Tjabo
3683 seems rather unstable. Thanks to a bug report by Tjabo
3675 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3684 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3676
3685
3677 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3686 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3678 this out soon because of the critical fixes in the inner loop for
3687 this out soon because of the critical fixes in the inner loop for
3679 generators.
3688 generators.
3680
3689
3681 * IPython/Magic.py (Magic.getargspec): removed. This (and
3690 * IPython/Magic.py (Magic.getargspec): removed. This (and
3682 _get_def) have been obsoleted by OInspect for a long time, I
3691 _get_def) have been obsoleted by OInspect for a long time, I
3683 hadn't noticed that they were dead code.
3692 hadn't noticed that they were dead code.
3684 (Magic._ofind): restored _ofind functionality for a few literals
3693 (Magic._ofind): restored _ofind functionality for a few literals
3685 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3694 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3686 for things like "hello".capitalize?, since that would require a
3695 for things like "hello".capitalize?, since that would require a
3687 potentially dangerous eval() again.
3696 potentially dangerous eval() again.
3688
3697
3689 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3698 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3690 logic a bit more to clean up the escapes handling and minimize the
3699 logic a bit more to clean up the escapes handling and minimize the
3691 use of _ofind to only necessary cases. The interactive 'feel' of
3700 use of _ofind to only necessary cases. The interactive 'feel' of
3692 IPython should have improved quite a bit with the changes in
3701 IPython should have improved quite a bit with the changes in
3693 _prefilter and _ofind (besides being far safer than before).
3702 _prefilter and _ofind (besides being far safer than before).
3694
3703
3695 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3704 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3696 obscure, never reported). Edit would fail to find the object to
3705 obscure, never reported). Edit would fail to find the object to
3697 edit under some circumstances.
3706 edit under some circumstances.
3698 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3707 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3699 which were causing double-calling of generators. Those eval calls
3708 which were causing double-calling of generators. Those eval calls
3700 were _very_ dangerous, since code with side effects could be
3709 were _very_ dangerous, since code with side effects could be
3701 triggered. As they say, 'eval is evil'... These were the
3710 triggered. As they say, 'eval is evil'... These were the
3702 nastiest evals in IPython. Besides, _ofind is now far simpler,
3711 nastiest evals in IPython. Besides, _ofind is now far simpler,
3703 and it should also be quite a bit faster. Its use of inspect is
3712 and it should also be quite a bit faster. Its use of inspect is
3704 also safer, so perhaps some of the inspect-related crashes I've
3713 also safer, so perhaps some of the inspect-related crashes I've
3705 seen lately with Python 2.3 might be taken care of. That will
3714 seen lately with Python 2.3 might be taken care of. That will
3706 need more testing.
3715 need more testing.
3707
3716
3708 2003-08-17 Fernando Perez <fperez@colorado.edu>
3717 2003-08-17 Fernando Perez <fperez@colorado.edu>
3709
3718
3710 * IPython/iplib.py (InteractiveShell._prefilter): significant
3719 * IPython/iplib.py (InteractiveShell._prefilter): significant
3711 simplifications to the logic for handling user escapes. Faster
3720 simplifications to the logic for handling user escapes. Faster
3712 and simpler code.
3721 and simpler code.
3713
3722
3714 2003-08-14 Fernando Perez <fperez@colorado.edu>
3723 2003-08-14 Fernando Perez <fperez@colorado.edu>
3715
3724
3716 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3725 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3717 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3726 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3718 but it should be quite a bit faster. And the recursive version
3727 but it should be quite a bit faster. And the recursive version
3719 generated O(log N) intermediate storage for all rank>1 arrays,
3728 generated O(log N) intermediate storage for all rank>1 arrays,
3720 even if they were contiguous.
3729 even if they were contiguous.
3721 (l1norm): Added this function.
3730 (l1norm): Added this function.
3722 (norm): Added this function for arbitrary norms (including
3731 (norm): Added this function for arbitrary norms (including
3723 l-infinity). l1 and l2 are still special cases for convenience
3732 l-infinity). l1 and l2 are still special cases for convenience
3724 and speed.
3733 and speed.
3725
3734
3726 2003-08-03 Fernando Perez <fperez@colorado.edu>
3735 2003-08-03 Fernando Perez <fperez@colorado.edu>
3727
3736
3728 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3737 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3729 exceptions, which now raise PendingDeprecationWarnings in Python
3738 exceptions, which now raise PendingDeprecationWarnings in Python
3730 2.3. There were some in Magic and some in Gnuplot2.
3739 2.3. There were some in Magic and some in Gnuplot2.
3731
3740
3732 2003-06-30 Fernando Perez <fperez@colorado.edu>
3741 2003-06-30 Fernando Perez <fperez@colorado.edu>
3733
3742
3734 * IPython/genutils.py (page): modified to call curses only for
3743 * IPython/genutils.py (page): modified to call curses only for
3735 terminals where TERM=='xterm'. After problems under many other
3744 terminals where TERM=='xterm'. After problems under many other
3736 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3745 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3737
3746
3738 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3747 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3739 would be triggered when readline was absent. This was just an old
3748 would be triggered when readline was absent. This was just an old
3740 debugging statement I'd forgotten to take out.
3749 debugging statement I'd forgotten to take out.
3741
3750
3742 2003-06-20 Fernando Perez <fperez@colorado.edu>
3751 2003-06-20 Fernando Perez <fperez@colorado.edu>
3743
3752
3744 * IPython/genutils.py (clock): modified to return only user time
3753 * IPython/genutils.py (clock): modified to return only user time
3745 (not counting system time), after a discussion on scipy. While
3754 (not counting system time), after a discussion on scipy. While
3746 system time may be a useful quantity occasionally, it may much
3755 system time may be a useful quantity occasionally, it may much
3747 more easily be skewed by occasional swapping or other similar
3756 more easily be skewed by occasional swapping or other similar
3748 activity.
3757 activity.
3749
3758
3750 2003-06-05 Fernando Perez <fperez@colorado.edu>
3759 2003-06-05 Fernando Perez <fperez@colorado.edu>
3751
3760
3752 * IPython/numutils.py (identity): new function, for building
3761 * IPython/numutils.py (identity): new function, for building
3753 arbitrary rank Kronecker deltas (mostly backwards compatible with
3762 arbitrary rank Kronecker deltas (mostly backwards compatible with
3754 Numeric.identity)
3763 Numeric.identity)
3755
3764
3756 2003-06-03 Fernando Perez <fperez@colorado.edu>
3765 2003-06-03 Fernando Perez <fperez@colorado.edu>
3757
3766
3758 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3767 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3759 arguments passed to magics with spaces, to allow trailing '\' to
3768 arguments passed to magics with spaces, to allow trailing '\' to
3760 work normally (mainly for Windows users).
3769 work normally (mainly for Windows users).
3761
3770
3762 2003-05-29 Fernando Perez <fperez@colorado.edu>
3771 2003-05-29 Fernando Perez <fperez@colorado.edu>
3763
3772
3764 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3773 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3765 instead of pydoc.help. This fixes a bizarre behavior where
3774 instead of pydoc.help. This fixes a bizarre behavior where
3766 printing '%s' % locals() would trigger the help system. Now
3775 printing '%s' % locals() would trigger the help system. Now
3767 ipython behaves like normal python does.
3776 ipython behaves like normal python does.
3768
3777
3769 Note that if one does 'from pydoc import help', the bizarre
3778 Note that if one does 'from pydoc import help', the bizarre
3770 behavior returns, but this will also happen in normal python, so
3779 behavior returns, but this will also happen in normal python, so
3771 it's not an ipython bug anymore (it has to do with how pydoc.help
3780 it's not an ipython bug anymore (it has to do with how pydoc.help
3772 is implemented).
3781 is implemented).
3773
3782
3774 2003-05-22 Fernando Perez <fperez@colorado.edu>
3783 2003-05-22 Fernando Perez <fperez@colorado.edu>
3775
3784
3776 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3785 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3777 return [] instead of None when nothing matches, also match to end
3786 return [] instead of None when nothing matches, also match to end
3778 of line. Patch by Gary Bishop.
3787 of line. Patch by Gary Bishop.
3779
3788
3780 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3789 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3781 protection as before, for files passed on the command line. This
3790 protection as before, for files passed on the command line. This
3782 prevents the CrashHandler from kicking in if user files call into
3791 prevents the CrashHandler from kicking in if user files call into
3783 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3792 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3784 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3793 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3785
3794
3786 2003-05-20 *** Released version 0.4.0
3795 2003-05-20 *** Released version 0.4.0
3787
3796
3788 2003-05-20 Fernando Perez <fperez@colorado.edu>
3797 2003-05-20 Fernando Perez <fperez@colorado.edu>
3789
3798
3790 * setup.py: added support for manpages. It's a bit hackish b/c of
3799 * setup.py: added support for manpages. It's a bit hackish b/c of
3791 a bug in the way the bdist_rpm distutils target handles gzipped
3800 a bug in the way the bdist_rpm distutils target handles gzipped
3792 manpages, but it works. After a patch by Jack.
3801 manpages, but it works. After a patch by Jack.
3793
3802
3794 2003-05-19 Fernando Perez <fperez@colorado.edu>
3803 2003-05-19 Fernando Perez <fperez@colorado.edu>
3795
3804
3796 * IPython/numutils.py: added a mockup of the kinds module, since
3805 * IPython/numutils.py: added a mockup of the kinds module, since
3797 it was recently removed from Numeric. This way, numutils will
3806 it was recently removed from Numeric. This way, numutils will
3798 work for all users even if they are missing kinds.
3807 work for all users even if they are missing kinds.
3799
3808
3800 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3809 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3801 failure, which can occur with SWIG-wrapped extensions. After a
3810 failure, which can occur with SWIG-wrapped extensions. After a
3802 crash report from Prabhu.
3811 crash report from Prabhu.
3803
3812
3804 2003-05-16 Fernando Perez <fperez@colorado.edu>
3813 2003-05-16 Fernando Perez <fperez@colorado.edu>
3805
3814
3806 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3815 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3807 protect ipython from user code which may call directly
3816 protect ipython from user code which may call directly
3808 sys.excepthook (this looks like an ipython crash to the user, even
3817 sys.excepthook (this looks like an ipython crash to the user, even
3809 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3818 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3810 This is especially important to help users of WxWindows, but may
3819 This is especially important to help users of WxWindows, but may
3811 also be useful in other cases.
3820 also be useful in other cases.
3812
3821
3813 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3822 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3814 an optional tb_offset to be specified, and to preserve exception
3823 an optional tb_offset to be specified, and to preserve exception
3815 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3824 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3816
3825
3817 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3826 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3818
3827
3819 2003-05-15 Fernando Perez <fperez@colorado.edu>
3828 2003-05-15 Fernando Perez <fperez@colorado.edu>
3820
3829
3821 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3830 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3822 installing for a new user under Windows.
3831 installing for a new user under Windows.
3823
3832
3824 2003-05-12 Fernando Perez <fperez@colorado.edu>
3833 2003-05-12 Fernando Perez <fperez@colorado.edu>
3825
3834
3826 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3835 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3827 handler for Emacs comint-based lines. Currently it doesn't do
3836 handler for Emacs comint-based lines. Currently it doesn't do
3828 much (but importantly, it doesn't update the history cache). In
3837 much (but importantly, it doesn't update the history cache). In
3829 the future it may be expanded if Alex needs more functionality
3838 the future it may be expanded if Alex needs more functionality
3830 there.
3839 there.
3831
3840
3832 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3841 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3833 info to crash reports.
3842 info to crash reports.
3834
3843
3835 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3844 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3836 just like Python's -c. Also fixed crash with invalid -color
3845 just like Python's -c. Also fixed crash with invalid -color
3837 option value at startup. Thanks to Will French
3846 option value at startup. Thanks to Will French
3838 <wfrench-AT-bestweb.net> for the bug report.
3847 <wfrench-AT-bestweb.net> for the bug report.
3839
3848
3840 2003-05-09 Fernando Perez <fperez@colorado.edu>
3849 2003-05-09 Fernando Perez <fperez@colorado.edu>
3841
3850
3842 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3851 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3843 to EvalDict (it's a mapping, after all) and simplified its code
3852 to EvalDict (it's a mapping, after all) and simplified its code
3844 quite a bit, after a nice discussion on c.l.py where Gustavo
3853 quite a bit, after a nice discussion on c.l.py where Gustavo
3845 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3854 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3846
3855
3847 2003-04-30 Fernando Perez <fperez@colorado.edu>
3856 2003-04-30 Fernando Perez <fperez@colorado.edu>
3848
3857
3849 * IPython/genutils.py (timings_out): modified it to reduce its
3858 * IPython/genutils.py (timings_out): modified it to reduce its
3850 overhead in the common reps==1 case.
3859 overhead in the common reps==1 case.
3851
3860
3852 2003-04-29 Fernando Perez <fperez@colorado.edu>
3861 2003-04-29 Fernando Perez <fperez@colorado.edu>
3853
3862
3854 * IPython/genutils.py (timings_out): Modified to use the resource
3863 * IPython/genutils.py (timings_out): Modified to use the resource
3855 module, which avoids the wraparound problems of time.clock().
3864 module, which avoids the wraparound problems of time.clock().
3856
3865
3857 2003-04-17 *** Released version 0.2.15pre4
3866 2003-04-17 *** Released version 0.2.15pre4
3858
3867
3859 2003-04-17 Fernando Perez <fperez@colorado.edu>
3868 2003-04-17 Fernando Perez <fperez@colorado.edu>
3860
3869
3861 * setup.py (scriptfiles): Split windows-specific stuff over to a
3870 * setup.py (scriptfiles): Split windows-specific stuff over to a
3862 separate file, in an attempt to have a Windows GUI installer.
3871 separate file, in an attempt to have a Windows GUI installer.
3863 That didn't work, but part of the groundwork is done.
3872 That didn't work, but part of the groundwork is done.
3864
3873
3865 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3874 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3866 indent/unindent with 4 spaces. Particularly useful in combination
3875 indent/unindent with 4 spaces. Particularly useful in combination
3867 with the new auto-indent option.
3876 with the new auto-indent option.
3868
3877
3869 2003-04-16 Fernando Perez <fperez@colorado.edu>
3878 2003-04-16 Fernando Perez <fperez@colorado.edu>
3870
3879
3871 * IPython/Magic.py: various replacements of self.rc for
3880 * IPython/Magic.py: various replacements of self.rc for
3872 self.shell.rc. A lot more remains to be done to fully disentangle
3881 self.shell.rc. A lot more remains to be done to fully disentangle
3873 this class from the main Shell class.
3882 this class from the main Shell class.
3874
3883
3875 * IPython/GnuplotRuntime.py: added checks for mouse support so
3884 * IPython/GnuplotRuntime.py: added checks for mouse support so
3876 that we don't try to enable it if the current gnuplot doesn't
3885 that we don't try to enable it if the current gnuplot doesn't
3877 really support it. Also added checks so that we don't try to
3886 really support it. Also added checks so that we don't try to
3878 enable persist under Windows (where Gnuplot doesn't recognize the
3887 enable persist under Windows (where Gnuplot doesn't recognize the
3879 option).
3888 option).
3880
3889
3881 * IPython/iplib.py (InteractiveShell.interact): Added optional
3890 * IPython/iplib.py (InteractiveShell.interact): Added optional
3882 auto-indenting code, after a patch by King C. Shu
3891 auto-indenting code, after a patch by King C. Shu
3883 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3892 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3884 get along well with pasting indented code. If I ever figure out
3893 get along well with pasting indented code. If I ever figure out
3885 how to make that part go well, it will become on by default.
3894 how to make that part go well, it will become on by default.
3886
3895
3887 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3896 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3888 crash ipython if there was an unmatched '%' in the user's prompt
3897 crash ipython if there was an unmatched '%' in the user's prompt
3889 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3898 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3890
3899
3891 * IPython/iplib.py (InteractiveShell.interact): removed the
3900 * IPython/iplib.py (InteractiveShell.interact): removed the
3892 ability to ask the user whether he wants to crash or not at the
3901 ability to ask the user whether he wants to crash or not at the
3893 'last line' exception handler. Calling functions at that point
3902 'last line' exception handler. Calling functions at that point
3894 changes the stack, and the error reports would have incorrect
3903 changes the stack, and the error reports would have incorrect
3895 tracebacks.
3904 tracebacks.
3896
3905
3897 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3906 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3898 pass through a peger a pretty-printed form of any object. After a
3907 pass through a peger a pretty-printed form of any object. After a
3899 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3908 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3900
3909
3901 2003-04-14 Fernando Perez <fperez@colorado.edu>
3910 2003-04-14 Fernando Perez <fperez@colorado.edu>
3902
3911
3903 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3912 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3904 all files in ~ would be modified at first install (instead of
3913 all files in ~ would be modified at first install (instead of
3905 ~/.ipython). This could be potentially disastrous, as the
3914 ~/.ipython). This could be potentially disastrous, as the
3906 modification (make line-endings native) could damage binary files.
3915 modification (make line-endings native) could damage binary files.
3907
3916
3908 2003-04-10 Fernando Perez <fperez@colorado.edu>
3917 2003-04-10 Fernando Perez <fperez@colorado.edu>
3909
3918
3910 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3919 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3911 handle only lines which are invalid python. This now means that
3920 handle only lines which are invalid python. This now means that
3912 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3921 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3913 for the bug report.
3922 for the bug report.
3914
3923
3915 2003-04-01 Fernando Perez <fperez@colorado.edu>
3924 2003-04-01 Fernando Perez <fperez@colorado.edu>
3916
3925
3917 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3926 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3918 where failing to set sys.last_traceback would crash pdb.pm().
3927 where failing to set sys.last_traceback would crash pdb.pm().
3919 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3928 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3920 report.
3929 report.
3921
3930
3922 2003-03-25 Fernando Perez <fperez@colorado.edu>
3931 2003-03-25 Fernando Perez <fperez@colorado.edu>
3923
3932
3924 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3933 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3925 before printing it (it had a lot of spurious blank lines at the
3934 before printing it (it had a lot of spurious blank lines at the
3926 end).
3935 end).
3927
3936
3928 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3937 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3929 output would be sent 21 times! Obviously people don't use this
3938 output would be sent 21 times! Obviously people don't use this
3930 too often, or I would have heard about it.
3939 too often, or I would have heard about it.
3931
3940
3932 2003-03-24 Fernando Perez <fperez@colorado.edu>
3941 2003-03-24 Fernando Perez <fperez@colorado.edu>
3933
3942
3934 * setup.py (scriptfiles): renamed the data_files parameter from
3943 * setup.py (scriptfiles): renamed the data_files parameter from
3935 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3944 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3936 for the patch.
3945 for the patch.
3937
3946
3938 2003-03-20 Fernando Perez <fperez@colorado.edu>
3947 2003-03-20 Fernando Perez <fperez@colorado.edu>
3939
3948
3940 * IPython/genutils.py (error): added error() and fatal()
3949 * IPython/genutils.py (error): added error() and fatal()
3941 functions.
3950 functions.
3942
3951
3943 2003-03-18 *** Released version 0.2.15pre3
3952 2003-03-18 *** Released version 0.2.15pre3
3944
3953
3945 2003-03-18 Fernando Perez <fperez@colorado.edu>
3954 2003-03-18 Fernando Perez <fperez@colorado.edu>
3946
3955
3947 * setupext/install_data_ext.py
3956 * setupext/install_data_ext.py
3948 (install_data_ext.initialize_options): Class contributed by Jack
3957 (install_data_ext.initialize_options): Class contributed by Jack
3949 Moffit for fixing the old distutils hack. He is sending this to
3958 Moffit for fixing the old distutils hack. He is sending this to
3950 the distutils folks so in the future we may not need it as a
3959 the distutils folks so in the future we may not need it as a
3951 private fix.
3960 private fix.
3952
3961
3953 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3962 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3954 changes for Debian packaging. See his patch for full details.
3963 changes for Debian packaging. See his patch for full details.
3955 The old distutils hack of making the ipythonrc* files carry a
3964 The old distutils hack of making the ipythonrc* files carry a
3956 bogus .py extension is gone, at last. Examples were moved to a
3965 bogus .py extension is gone, at last. Examples were moved to a
3957 separate subdir under doc/, and the separate executable scripts
3966 separate subdir under doc/, and the separate executable scripts
3958 now live in their own directory. Overall a great cleanup. The
3967 now live in their own directory. Overall a great cleanup. The
3959 manual was updated to use the new files, and setup.py has been
3968 manual was updated to use the new files, and setup.py has been
3960 fixed for this setup.
3969 fixed for this setup.
3961
3970
3962 * IPython/PyColorize.py (Parser.usage): made non-executable and
3971 * IPython/PyColorize.py (Parser.usage): made non-executable and
3963 created a pycolor wrapper around it to be included as a script.
3972 created a pycolor wrapper around it to be included as a script.
3964
3973
3965 2003-03-12 *** Released version 0.2.15pre2
3974 2003-03-12 *** Released version 0.2.15pre2
3966
3975
3967 2003-03-12 Fernando Perez <fperez@colorado.edu>
3976 2003-03-12 Fernando Perez <fperez@colorado.edu>
3968
3977
3969 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3978 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3970 long-standing problem with garbage characters in some terminals.
3979 long-standing problem with garbage characters in some terminals.
3971 The issue was really that the \001 and \002 escapes must _only_ be
3980 The issue was really that the \001 and \002 escapes must _only_ be
3972 passed to input prompts (which call readline), but _never_ to
3981 passed to input prompts (which call readline), but _never_ to
3973 normal text to be printed on screen. I changed ColorANSI to have
3982 normal text to be printed on screen. I changed ColorANSI to have
3974 two classes: TermColors and InputTermColors, each with the
3983 two classes: TermColors and InputTermColors, each with the
3975 appropriate escapes for input prompts or normal text. The code in
3984 appropriate escapes for input prompts or normal text. The code in
3976 Prompts.py got slightly more complicated, but this very old and
3985 Prompts.py got slightly more complicated, but this very old and
3977 annoying bug is finally fixed.
3986 annoying bug is finally fixed.
3978
3987
3979 All the credit for nailing down the real origin of this problem
3988 All the credit for nailing down the real origin of this problem
3980 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3989 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3981 *Many* thanks to him for spending quite a bit of effort on this.
3990 *Many* thanks to him for spending quite a bit of effort on this.
3982
3991
3983 2003-03-05 *** Released version 0.2.15pre1
3992 2003-03-05 *** Released version 0.2.15pre1
3984
3993
3985 2003-03-03 Fernando Perez <fperez@colorado.edu>
3994 2003-03-03 Fernando Perez <fperez@colorado.edu>
3986
3995
3987 * IPython/FakeModule.py: Moved the former _FakeModule to a
3996 * IPython/FakeModule.py: Moved the former _FakeModule to a
3988 separate file, because it's also needed by Magic (to fix a similar
3997 separate file, because it's also needed by Magic (to fix a similar
3989 pickle-related issue in @run).
3998 pickle-related issue in @run).
3990
3999
3991 2003-03-02 Fernando Perez <fperez@colorado.edu>
4000 2003-03-02 Fernando Perez <fperez@colorado.edu>
3992
4001
3993 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4002 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3994 the autocall option at runtime.
4003 the autocall option at runtime.
3995 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4004 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3996 across Magic.py to start separating Magic from InteractiveShell.
4005 across Magic.py to start separating Magic from InteractiveShell.
3997 (Magic._ofind): Fixed to return proper namespace for dotted
4006 (Magic._ofind): Fixed to return proper namespace for dotted
3998 names. Before, a dotted name would always return 'not currently
4007 names. Before, a dotted name would always return 'not currently
3999 defined', because it would find the 'parent'. s.x would be found,
4008 defined', because it would find the 'parent'. s.x would be found,
4000 but since 'x' isn't defined by itself, it would get confused.
4009 but since 'x' isn't defined by itself, it would get confused.
4001 (Magic.magic_run): Fixed pickling problems reported by Ralf
4010 (Magic.magic_run): Fixed pickling problems reported by Ralf
4002 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4011 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4003 that I'd used when Mike Heeter reported similar issues at the
4012 that I'd used when Mike Heeter reported similar issues at the
4004 top-level, but now for @run. It boils down to injecting the
4013 top-level, but now for @run. It boils down to injecting the
4005 namespace where code is being executed with something that looks
4014 namespace where code is being executed with something that looks
4006 enough like a module to fool pickle.dump(). Since a pickle stores
4015 enough like a module to fool pickle.dump(). Since a pickle stores
4007 a named reference to the importing module, we need this for
4016 a named reference to the importing module, we need this for
4008 pickles to save something sensible.
4017 pickles to save something sensible.
4009
4018
4010 * IPython/ipmaker.py (make_IPython): added an autocall option.
4019 * IPython/ipmaker.py (make_IPython): added an autocall option.
4011
4020
4012 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4021 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4013 the auto-eval code. Now autocalling is an option, and the code is
4022 the auto-eval code. Now autocalling is an option, and the code is
4014 also vastly safer. There is no more eval() involved at all.
4023 also vastly safer. There is no more eval() involved at all.
4015
4024
4016 2003-03-01 Fernando Perez <fperez@colorado.edu>
4025 2003-03-01 Fernando Perez <fperez@colorado.edu>
4017
4026
4018 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4027 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4019 dict with named keys instead of a tuple.
4028 dict with named keys instead of a tuple.
4020
4029
4021 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4030 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4022
4031
4023 * setup.py (make_shortcut): Fixed message about directories
4032 * setup.py (make_shortcut): Fixed message about directories
4024 created during Windows installation (the directories were ok, just
4033 created during Windows installation (the directories were ok, just
4025 the printed message was misleading). Thanks to Chris Liechti
4034 the printed message was misleading). Thanks to Chris Liechti
4026 <cliechti-AT-gmx.net> for the heads up.
4035 <cliechti-AT-gmx.net> for the heads up.
4027
4036
4028 2003-02-21 Fernando Perez <fperez@colorado.edu>
4037 2003-02-21 Fernando Perez <fperez@colorado.edu>
4029
4038
4030 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4039 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4031 of ValueError exception when checking for auto-execution. This
4040 of ValueError exception when checking for auto-execution. This
4032 one is raised by things like Numeric arrays arr.flat when the
4041 one is raised by things like Numeric arrays arr.flat when the
4033 array is non-contiguous.
4042 array is non-contiguous.
4034
4043
4035 2003-01-31 Fernando Perez <fperez@colorado.edu>
4044 2003-01-31 Fernando Perez <fperez@colorado.edu>
4036
4045
4037 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4046 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4038 not return any value at all (even though the command would get
4047 not return any value at all (even though the command would get
4039 executed).
4048 executed).
4040 (xsys): Flush stdout right after printing the command to ensure
4049 (xsys): Flush stdout right after printing the command to ensure
4041 proper ordering of commands and command output in the total
4050 proper ordering of commands and command output in the total
4042 output.
4051 output.
4043 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4052 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4044 system/getoutput as defaults. The old ones are kept for
4053 system/getoutput as defaults. The old ones are kept for
4045 compatibility reasons, so no code which uses this library needs
4054 compatibility reasons, so no code which uses this library needs
4046 changing.
4055 changing.
4047
4056
4048 2003-01-27 *** Released version 0.2.14
4057 2003-01-27 *** Released version 0.2.14
4049
4058
4050 2003-01-25 Fernando Perez <fperez@colorado.edu>
4059 2003-01-25 Fernando Perez <fperez@colorado.edu>
4051
4060
4052 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4061 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4053 functions defined in previous edit sessions could not be re-edited
4062 functions defined in previous edit sessions could not be re-edited
4054 (because the temp files were immediately removed). Now temp files
4063 (because the temp files were immediately removed). Now temp files
4055 are removed only at IPython's exit.
4064 are removed only at IPython's exit.
4056 (Magic.magic_run): Improved @run to perform shell-like expansions
4065 (Magic.magic_run): Improved @run to perform shell-like expansions
4057 on its arguments (~users and $VARS). With this, @run becomes more
4066 on its arguments (~users and $VARS). With this, @run becomes more
4058 like a normal command-line.
4067 like a normal command-line.
4059
4068
4060 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4069 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4061 bugs related to embedding and cleaned up that code. A fairly
4070 bugs related to embedding and cleaned up that code. A fairly
4062 important one was the impossibility to access the global namespace
4071 important one was the impossibility to access the global namespace
4063 through the embedded IPython (only local variables were visible).
4072 through the embedded IPython (only local variables were visible).
4064
4073
4065 2003-01-14 Fernando Perez <fperez@colorado.edu>
4074 2003-01-14 Fernando Perez <fperez@colorado.edu>
4066
4075
4067 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4076 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4068 auto-calling to be a bit more conservative. Now it doesn't get
4077 auto-calling to be a bit more conservative. Now it doesn't get
4069 triggered if any of '!=()<>' are in the rest of the input line, to
4078 triggered if any of '!=()<>' are in the rest of the input line, to
4070 allow comparing callables. Thanks to Alex for the heads up.
4079 allow comparing callables. Thanks to Alex for the heads up.
4071
4080
4072 2003-01-07 Fernando Perez <fperez@colorado.edu>
4081 2003-01-07 Fernando Perez <fperez@colorado.edu>
4073
4082
4074 * IPython/genutils.py (page): fixed estimation of the number of
4083 * IPython/genutils.py (page): fixed estimation of the number of
4075 lines in a string to be paged to simply count newlines. This
4084 lines in a string to be paged to simply count newlines. This
4076 prevents over-guessing due to embedded escape sequences. A better
4085 prevents over-guessing due to embedded escape sequences. A better
4077 long-term solution would involve stripping out the control chars
4086 long-term solution would involve stripping out the control chars
4078 for the count, but it's potentially so expensive I just don't
4087 for the count, but it's potentially so expensive I just don't
4079 think it's worth doing.
4088 think it's worth doing.
4080
4089
4081 2002-12-19 *** Released version 0.2.14pre50
4090 2002-12-19 *** Released version 0.2.14pre50
4082
4091
4083 2002-12-19 Fernando Perez <fperez@colorado.edu>
4092 2002-12-19 Fernando Perez <fperez@colorado.edu>
4084
4093
4085 * tools/release (version): Changed release scripts to inform
4094 * tools/release (version): Changed release scripts to inform
4086 Andrea and build a NEWS file with a list of recent changes.
4095 Andrea and build a NEWS file with a list of recent changes.
4087
4096
4088 * IPython/ColorANSI.py (__all__): changed terminal detection
4097 * IPython/ColorANSI.py (__all__): changed terminal detection
4089 code. Seems to work better for xterms without breaking
4098 code. Seems to work better for xterms without breaking
4090 konsole. Will need more testing to determine if WinXP and Mac OSX
4099 konsole. Will need more testing to determine if WinXP and Mac OSX
4091 also work ok.
4100 also work ok.
4092
4101
4093 2002-12-18 *** Released version 0.2.14pre49
4102 2002-12-18 *** Released version 0.2.14pre49
4094
4103
4095 2002-12-18 Fernando Perez <fperez@colorado.edu>
4104 2002-12-18 Fernando Perez <fperez@colorado.edu>
4096
4105
4097 * Docs: added new info about Mac OSX, from Andrea.
4106 * Docs: added new info about Mac OSX, from Andrea.
4098
4107
4099 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4108 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4100 allow direct plotting of python strings whose format is the same
4109 allow direct plotting of python strings whose format is the same
4101 of gnuplot data files.
4110 of gnuplot data files.
4102
4111
4103 2002-12-16 Fernando Perez <fperez@colorado.edu>
4112 2002-12-16 Fernando Perez <fperez@colorado.edu>
4104
4113
4105 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4114 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4106 value of exit question to be acknowledged.
4115 value of exit question to be acknowledged.
4107
4116
4108 2002-12-03 Fernando Perez <fperez@colorado.edu>
4117 2002-12-03 Fernando Perez <fperez@colorado.edu>
4109
4118
4110 * IPython/ipmaker.py: removed generators, which had been added
4119 * IPython/ipmaker.py: removed generators, which had been added
4111 by mistake in an earlier debugging run. This was causing trouble
4120 by mistake in an earlier debugging run. This was causing trouble
4112 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4121 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4113 for pointing this out.
4122 for pointing this out.
4114
4123
4115 2002-11-17 Fernando Perez <fperez@colorado.edu>
4124 2002-11-17 Fernando Perez <fperez@colorado.edu>
4116
4125
4117 * Manual: updated the Gnuplot section.
4126 * Manual: updated the Gnuplot section.
4118
4127
4119 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4128 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4120 a much better split of what goes in Runtime and what goes in
4129 a much better split of what goes in Runtime and what goes in
4121 Interactive.
4130 Interactive.
4122
4131
4123 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4132 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4124 being imported from iplib.
4133 being imported from iplib.
4125
4134
4126 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4135 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4127 for command-passing. Now the global Gnuplot instance is called
4136 for command-passing. Now the global Gnuplot instance is called
4128 'gp' instead of 'g', which was really a far too fragile and
4137 'gp' instead of 'g', which was really a far too fragile and
4129 common name.
4138 common name.
4130
4139
4131 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4140 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4132 bounding boxes generated by Gnuplot for square plots.
4141 bounding boxes generated by Gnuplot for square plots.
4133
4142
4134 * IPython/genutils.py (popkey): new function added. I should
4143 * IPython/genutils.py (popkey): new function added. I should
4135 suggest this on c.l.py as a dict method, it seems useful.
4144 suggest this on c.l.py as a dict method, it seems useful.
4136
4145
4137 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4146 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4138 to transparently handle PostScript generation. MUCH better than
4147 to transparently handle PostScript generation. MUCH better than
4139 the previous plot_eps/replot_eps (which I removed now). The code
4148 the previous plot_eps/replot_eps (which I removed now). The code
4140 is also fairly clean and well documented now (including
4149 is also fairly clean and well documented now (including
4141 docstrings).
4150 docstrings).
4142
4151
4143 2002-11-13 Fernando Perez <fperez@colorado.edu>
4152 2002-11-13 Fernando Perez <fperez@colorado.edu>
4144
4153
4145 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4154 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4146 (inconsistent with options).
4155 (inconsistent with options).
4147
4156
4148 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4157 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4149 manually disabled, I don't know why. Fixed it.
4158 manually disabled, I don't know why. Fixed it.
4150 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4159 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4151 eps output.
4160 eps output.
4152
4161
4153 2002-11-12 Fernando Perez <fperez@colorado.edu>
4162 2002-11-12 Fernando Perez <fperez@colorado.edu>
4154
4163
4155 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4164 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4156 don't propagate up to caller. Fixes crash reported by François
4165 don't propagate up to caller. Fixes crash reported by François
4157 Pinard.
4166 Pinard.
4158
4167
4159 2002-11-09 Fernando Perez <fperez@colorado.edu>
4168 2002-11-09 Fernando Perez <fperez@colorado.edu>
4160
4169
4161 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4170 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4162 history file for new users.
4171 history file for new users.
4163 (make_IPython): fixed bug where initial install would leave the
4172 (make_IPython): fixed bug where initial install would leave the
4164 user running in the .ipython dir.
4173 user running in the .ipython dir.
4165 (make_IPython): fixed bug where config dir .ipython would be
4174 (make_IPython): fixed bug where config dir .ipython would be
4166 created regardless of the given -ipythondir option. Thanks to Cory
4175 created regardless of the given -ipythondir option. Thanks to Cory
4167 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4176 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4168
4177
4169 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4178 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4170 type confirmations. Will need to use it in all of IPython's code
4179 type confirmations. Will need to use it in all of IPython's code
4171 consistently.
4180 consistently.
4172
4181
4173 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4182 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4174 context to print 31 lines instead of the default 5. This will make
4183 context to print 31 lines instead of the default 5. This will make
4175 the crash reports extremely detailed in case the problem is in
4184 the crash reports extremely detailed in case the problem is in
4176 libraries I don't have access to.
4185 libraries I don't have access to.
4177
4186
4178 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4187 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4179 line of defense' code to still crash, but giving users fair
4188 line of defense' code to still crash, but giving users fair
4180 warning. I don't want internal errors to go unreported: if there's
4189 warning. I don't want internal errors to go unreported: if there's
4181 an internal problem, IPython should crash and generate a full
4190 an internal problem, IPython should crash and generate a full
4182 report.
4191 report.
4183
4192
4184 2002-11-08 Fernando Perez <fperez@colorado.edu>
4193 2002-11-08 Fernando Perez <fperez@colorado.edu>
4185
4194
4186 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4195 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4187 otherwise uncaught exceptions which can appear if people set
4196 otherwise uncaught exceptions which can appear if people set
4188 sys.stdout to something badly broken. Thanks to a crash report
4197 sys.stdout to something badly broken. Thanks to a crash report
4189 from henni-AT-mail.brainbot.com.
4198 from henni-AT-mail.brainbot.com.
4190
4199
4191 2002-11-04 Fernando Perez <fperez@colorado.edu>
4200 2002-11-04 Fernando Perez <fperez@colorado.edu>
4192
4201
4193 * IPython/iplib.py (InteractiveShell.interact): added
4202 * IPython/iplib.py (InteractiveShell.interact): added
4194 __IPYTHON__active to the builtins. It's a flag which goes on when
4203 __IPYTHON__active to the builtins. It's a flag which goes on when
4195 the interaction starts and goes off again when it stops. This
4204 the interaction starts and goes off again when it stops. This
4196 allows embedding code to detect being inside IPython. Before this
4205 allows embedding code to detect being inside IPython. Before this
4197 was done via __IPYTHON__, but that only shows that an IPython
4206 was done via __IPYTHON__, but that only shows that an IPython
4198 instance has been created.
4207 instance has been created.
4199
4208
4200 * IPython/Magic.py (Magic.magic_env): I realized that in a
4209 * IPython/Magic.py (Magic.magic_env): I realized that in a
4201 UserDict, instance.data holds the data as a normal dict. So I
4210 UserDict, instance.data holds the data as a normal dict. So I
4202 modified @env to return os.environ.data instead of rebuilding a
4211 modified @env to return os.environ.data instead of rebuilding a
4203 dict by hand.
4212 dict by hand.
4204
4213
4205 2002-11-02 Fernando Perez <fperez@colorado.edu>
4214 2002-11-02 Fernando Perez <fperez@colorado.edu>
4206
4215
4207 * IPython/genutils.py (warn): changed so that level 1 prints no
4216 * IPython/genutils.py (warn): changed so that level 1 prints no
4208 header. Level 2 is now the default (with 'WARNING' header, as
4217 header. Level 2 is now the default (with 'WARNING' header, as
4209 before). I think I tracked all places where changes were needed in
4218 before). I think I tracked all places where changes were needed in
4210 IPython, but outside code using the old level numbering may have
4219 IPython, but outside code using the old level numbering may have
4211 broken.
4220 broken.
4212
4221
4213 * IPython/iplib.py (InteractiveShell.runcode): added this to
4222 * IPython/iplib.py (InteractiveShell.runcode): added this to
4214 handle the tracebacks in SystemExit traps correctly. The previous
4223 handle the tracebacks in SystemExit traps correctly. The previous
4215 code (through interact) was printing more of the stack than
4224 code (through interact) was printing more of the stack than
4216 necessary, showing IPython internal code to the user.
4225 necessary, showing IPython internal code to the user.
4217
4226
4218 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4227 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4219 default. Now that the default at the confirmation prompt is yes,
4228 default. Now that the default at the confirmation prompt is yes,
4220 it's not so intrusive. François' argument that ipython sessions
4229 it's not so intrusive. François' argument that ipython sessions
4221 tend to be complex enough not to lose them from an accidental C-d,
4230 tend to be complex enough not to lose them from an accidental C-d,
4222 is a valid one.
4231 is a valid one.
4223
4232
4224 * IPython/iplib.py (InteractiveShell.interact): added a
4233 * IPython/iplib.py (InteractiveShell.interact): added a
4225 showtraceback() call to the SystemExit trap, and modified the exit
4234 showtraceback() call to the SystemExit trap, and modified the exit
4226 confirmation to have yes as the default.
4235 confirmation to have yes as the default.
4227
4236
4228 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4237 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4229 this file. It's been gone from the code for a long time, this was
4238 this file. It's been gone from the code for a long time, this was
4230 simply leftover junk.
4239 simply leftover junk.
4231
4240
4232 2002-11-01 Fernando Perez <fperez@colorado.edu>
4241 2002-11-01 Fernando Perez <fperez@colorado.edu>
4233
4242
4234 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4243 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4235 added. If set, IPython now traps EOF and asks for
4244 added. If set, IPython now traps EOF and asks for
4236 confirmation. After a request by François Pinard.
4245 confirmation. After a request by François Pinard.
4237
4246
4238 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4247 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4239 of @abort, and with a new (better) mechanism for handling the
4248 of @abort, and with a new (better) mechanism for handling the
4240 exceptions.
4249 exceptions.
4241
4250
4242 2002-10-27 Fernando Perez <fperez@colorado.edu>
4251 2002-10-27 Fernando Perez <fperez@colorado.edu>
4243
4252
4244 * IPython/usage.py (__doc__): updated the --help information and
4253 * IPython/usage.py (__doc__): updated the --help information and
4245 the ipythonrc file to indicate that -log generates
4254 the ipythonrc file to indicate that -log generates
4246 ./ipython.log. Also fixed the corresponding info in @logstart.
4255 ./ipython.log. Also fixed the corresponding info in @logstart.
4247 This and several other fixes in the manuals thanks to reports by
4256 This and several other fixes in the manuals thanks to reports by
4248 François Pinard <pinard-AT-iro.umontreal.ca>.
4257 François Pinard <pinard-AT-iro.umontreal.ca>.
4249
4258
4250 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4259 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4251 refer to @logstart (instead of @log, which doesn't exist).
4260 refer to @logstart (instead of @log, which doesn't exist).
4252
4261
4253 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4262 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4254 AttributeError crash. Thanks to Christopher Armstrong
4263 AttributeError crash. Thanks to Christopher Armstrong
4255 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4264 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4256 introduced recently (in 0.2.14pre37) with the fix to the eval
4265 introduced recently (in 0.2.14pre37) with the fix to the eval
4257 problem mentioned below.
4266 problem mentioned below.
4258
4267
4259 2002-10-17 Fernando Perez <fperez@colorado.edu>
4268 2002-10-17 Fernando Perez <fperez@colorado.edu>
4260
4269
4261 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4270 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4262 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4271 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4263
4272
4264 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4273 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4265 this function to fix a problem reported by Alex Schmolck. He saw
4274 this function to fix a problem reported by Alex Schmolck. He saw
4266 it with list comprehensions and generators, which were getting
4275 it with list comprehensions and generators, which were getting
4267 called twice. The real problem was an 'eval' call in testing for
4276 called twice. The real problem was an 'eval' call in testing for
4268 automagic which was evaluating the input line silently.
4277 automagic which was evaluating the input line silently.
4269
4278
4270 This is a potentially very nasty bug, if the input has side
4279 This is a potentially very nasty bug, if the input has side
4271 effects which must not be repeated. The code is much cleaner now,
4280 effects which must not be repeated. The code is much cleaner now,
4272 without any blanket 'except' left and with a regexp test for
4281 without any blanket 'except' left and with a regexp test for
4273 actual function names.
4282 actual function names.
4274
4283
4275 But an eval remains, which I'm not fully comfortable with. I just
4284 But an eval remains, which I'm not fully comfortable with. I just
4276 don't know how to find out if an expression could be a callable in
4285 don't know how to find out if an expression could be a callable in
4277 the user's namespace without doing an eval on the string. However
4286 the user's namespace without doing an eval on the string. However
4278 that string is now much more strictly checked so that no code
4287 that string is now much more strictly checked so that no code
4279 slips by, so the eval should only happen for things that can
4288 slips by, so the eval should only happen for things that can
4280 really be only function/method names.
4289 really be only function/method names.
4281
4290
4282 2002-10-15 Fernando Perez <fperez@colorado.edu>
4291 2002-10-15 Fernando Perez <fperez@colorado.edu>
4283
4292
4284 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4293 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4285 OSX information to main manual, removed README_Mac_OSX file from
4294 OSX information to main manual, removed README_Mac_OSX file from
4286 distribution. Also updated credits for recent additions.
4295 distribution. Also updated credits for recent additions.
4287
4296
4288 2002-10-10 Fernando Perez <fperez@colorado.edu>
4297 2002-10-10 Fernando Perez <fperez@colorado.edu>
4289
4298
4290 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4299 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4291 terminal-related issues. Many thanks to Andrea Riciputi
4300 terminal-related issues. Many thanks to Andrea Riciputi
4292 <andrea.riciputi-AT-libero.it> for writing it.
4301 <andrea.riciputi-AT-libero.it> for writing it.
4293
4302
4294 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4303 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4295 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4304 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4296
4305
4297 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4306 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4298 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4307 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4299 <syver-en-AT-online.no> who both submitted patches for this problem.
4308 <syver-en-AT-online.no> who both submitted patches for this problem.
4300
4309
4301 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4310 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4302 global embedding to make sure that things don't overwrite user
4311 global embedding to make sure that things don't overwrite user
4303 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4312 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4304
4313
4305 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4314 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4306 compatibility. Thanks to Hayden Callow
4315 compatibility. Thanks to Hayden Callow
4307 <h.callow-AT-elec.canterbury.ac.nz>
4316 <h.callow-AT-elec.canterbury.ac.nz>
4308
4317
4309 2002-10-04 Fernando Perez <fperez@colorado.edu>
4318 2002-10-04 Fernando Perez <fperez@colorado.edu>
4310
4319
4311 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4320 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4312 Gnuplot.File objects.
4321 Gnuplot.File objects.
4313
4322
4314 2002-07-23 Fernando Perez <fperez@colorado.edu>
4323 2002-07-23 Fernando Perez <fperez@colorado.edu>
4315
4324
4316 * IPython/genutils.py (timing): Added timings() and timing() for
4325 * IPython/genutils.py (timing): Added timings() and timing() for
4317 quick access to the most commonly needed data, the execution
4326 quick access to the most commonly needed data, the execution
4318 times. Old timing() renamed to timings_out().
4327 times. Old timing() renamed to timings_out().
4319
4328
4320 2002-07-18 Fernando Perez <fperez@colorado.edu>
4329 2002-07-18 Fernando Perez <fperez@colorado.edu>
4321
4330
4322 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4331 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4323 bug with nested instances disrupting the parent's tab completion.
4332 bug with nested instances disrupting the parent's tab completion.
4324
4333
4325 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4334 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4326 all_completions code to begin the emacs integration.
4335 all_completions code to begin the emacs integration.
4327
4336
4328 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4337 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4329 argument to allow titling individual arrays when plotting.
4338 argument to allow titling individual arrays when plotting.
4330
4339
4331 2002-07-15 Fernando Perez <fperez@colorado.edu>
4340 2002-07-15 Fernando Perez <fperez@colorado.edu>
4332
4341
4333 * setup.py (make_shortcut): changed to retrieve the value of
4342 * setup.py (make_shortcut): changed to retrieve the value of
4334 'Program Files' directory from the registry (this value changes in
4343 'Program Files' directory from the registry (this value changes in
4335 non-english versions of Windows). Thanks to Thomas Fanslau
4344 non-english versions of Windows). Thanks to Thomas Fanslau
4336 <tfanslau-AT-gmx.de> for the report.
4345 <tfanslau-AT-gmx.de> for the report.
4337
4346
4338 2002-07-10 Fernando Perez <fperez@colorado.edu>
4347 2002-07-10 Fernando Perez <fperez@colorado.edu>
4339
4348
4340 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4349 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4341 a bug in pdb, which crashes if a line with only whitespace is
4350 a bug in pdb, which crashes if a line with only whitespace is
4342 entered. Bug report submitted to sourceforge.
4351 entered. Bug report submitted to sourceforge.
4343
4352
4344 2002-07-09 Fernando Perez <fperez@colorado.edu>
4353 2002-07-09 Fernando Perez <fperez@colorado.edu>
4345
4354
4346 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4355 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4347 reporting exceptions (it's a bug in inspect.py, I just set a
4356 reporting exceptions (it's a bug in inspect.py, I just set a
4348 workaround).
4357 workaround).
4349
4358
4350 2002-07-08 Fernando Perez <fperez@colorado.edu>
4359 2002-07-08 Fernando Perez <fperez@colorado.edu>
4351
4360
4352 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4361 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4353 __IPYTHON__ in __builtins__ to show up in user_ns.
4362 __IPYTHON__ in __builtins__ to show up in user_ns.
4354
4363
4355 2002-07-03 Fernando Perez <fperez@colorado.edu>
4364 2002-07-03 Fernando Perez <fperez@colorado.edu>
4356
4365
4357 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4366 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4358 name from @gp_set_instance to @gp_set_default.
4367 name from @gp_set_instance to @gp_set_default.
4359
4368
4360 * IPython/ipmaker.py (make_IPython): default editor value set to
4369 * IPython/ipmaker.py (make_IPython): default editor value set to
4361 '0' (a string), to match the rc file. Otherwise will crash when
4370 '0' (a string), to match the rc file. Otherwise will crash when
4362 .strip() is called on it.
4371 .strip() is called on it.
4363
4372
4364
4373
4365 2002-06-28 Fernando Perez <fperez@colorado.edu>
4374 2002-06-28 Fernando Perez <fperez@colorado.edu>
4366
4375
4367 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4376 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4368 of files in current directory when a file is executed via
4377 of files in current directory when a file is executed via
4369 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4378 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4370
4379
4371 * setup.py (manfiles): fix for rpm builds, submitted by RA
4380 * setup.py (manfiles): fix for rpm builds, submitted by RA
4372 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4381 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4373
4382
4374 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4383 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4375 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4384 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4376 string!). A. Schmolck caught this one.
4385 string!). A. Schmolck caught this one.
4377
4386
4378 2002-06-27 Fernando Perez <fperez@colorado.edu>
4387 2002-06-27 Fernando Perez <fperez@colorado.edu>
4379
4388
4380 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4389 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4381 defined files at the cmd line. __name__ wasn't being set to
4390 defined files at the cmd line. __name__ wasn't being set to
4382 __main__.
4391 __main__.
4383
4392
4384 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4393 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4385 regular lists and tuples besides Numeric arrays.
4394 regular lists and tuples besides Numeric arrays.
4386
4395
4387 * IPython/Prompts.py (CachedOutput.__call__): Added output
4396 * IPython/Prompts.py (CachedOutput.__call__): Added output
4388 supression for input ending with ';'. Similar to Mathematica and
4397 supression for input ending with ';'. Similar to Mathematica and
4389 Matlab. The _* vars and Out[] list are still updated, just like
4398 Matlab. The _* vars and Out[] list are still updated, just like
4390 Mathematica behaves.
4399 Mathematica behaves.
4391
4400
4392 2002-06-25 Fernando Perez <fperez@colorado.edu>
4401 2002-06-25 Fernando Perez <fperez@colorado.edu>
4393
4402
4394 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4403 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4395 .ini extensions for profiels under Windows.
4404 .ini extensions for profiels under Windows.
4396
4405
4397 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4406 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4398 string form. Fix contributed by Alexander Schmolck
4407 string form. Fix contributed by Alexander Schmolck
4399 <a.schmolck-AT-gmx.net>
4408 <a.schmolck-AT-gmx.net>
4400
4409
4401 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4410 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4402 pre-configured Gnuplot instance.
4411 pre-configured Gnuplot instance.
4403
4412
4404 2002-06-21 Fernando Perez <fperez@colorado.edu>
4413 2002-06-21 Fernando Perez <fperez@colorado.edu>
4405
4414
4406 * IPython/numutils.py (exp_safe): new function, works around the
4415 * IPython/numutils.py (exp_safe): new function, works around the
4407 underflow problems in Numeric.
4416 underflow problems in Numeric.
4408 (log2): New fn. Safe log in base 2: returns exact integer answer
4417 (log2): New fn. Safe log in base 2: returns exact integer answer
4409 for exact integer powers of 2.
4418 for exact integer powers of 2.
4410
4419
4411 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4420 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4412 properly.
4421 properly.
4413
4422
4414 2002-06-20 Fernando Perez <fperez@colorado.edu>
4423 2002-06-20 Fernando Perez <fperez@colorado.edu>
4415
4424
4416 * IPython/genutils.py (timing): new function like
4425 * IPython/genutils.py (timing): new function like
4417 Mathematica's. Similar to time_test, but returns more info.
4426 Mathematica's. Similar to time_test, but returns more info.
4418
4427
4419 2002-06-18 Fernando Perez <fperez@colorado.edu>
4428 2002-06-18 Fernando Perez <fperez@colorado.edu>
4420
4429
4421 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4430 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4422 according to Mike Heeter's suggestions.
4431 according to Mike Heeter's suggestions.
4423
4432
4424 2002-06-16 Fernando Perez <fperez@colorado.edu>
4433 2002-06-16 Fernando Perez <fperez@colorado.edu>
4425
4434
4426 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4435 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4427 system. GnuplotMagic is gone as a user-directory option. New files
4436 system. GnuplotMagic is gone as a user-directory option. New files
4428 make it easier to use all the gnuplot stuff both from external
4437 make it easier to use all the gnuplot stuff both from external
4429 programs as well as from IPython. Had to rewrite part of
4438 programs as well as from IPython. Had to rewrite part of
4430 hardcopy() b/c of a strange bug: often the ps files simply don't
4439 hardcopy() b/c of a strange bug: often the ps files simply don't
4431 get created, and require a repeat of the command (often several
4440 get created, and require a repeat of the command (often several
4432 times).
4441 times).
4433
4442
4434 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4443 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4435 resolve output channel at call time, so that if sys.stderr has
4444 resolve output channel at call time, so that if sys.stderr has
4436 been redirected by user this gets honored.
4445 been redirected by user this gets honored.
4437
4446
4438 2002-06-13 Fernando Perez <fperez@colorado.edu>
4447 2002-06-13 Fernando Perez <fperez@colorado.edu>
4439
4448
4440 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4449 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4441 IPShell. Kept a copy with the old names to avoid breaking people's
4450 IPShell. Kept a copy with the old names to avoid breaking people's
4442 embedded code.
4451 embedded code.
4443
4452
4444 * IPython/ipython: simplified it to the bare minimum after
4453 * IPython/ipython: simplified it to the bare minimum after
4445 Holger's suggestions. Added info about how to use it in
4454 Holger's suggestions. Added info about how to use it in
4446 PYTHONSTARTUP.
4455 PYTHONSTARTUP.
4447
4456
4448 * IPython/Shell.py (IPythonShell): changed the options passing
4457 * IPython/Shell.py (IPythonShell): changed the options passing
4449 from a string with funky %s replacements to a straight list. Maybe
4458 from a string with funky %s replacements to a straight list. Maybe
4450 a bit more typing, but it follows sys.argv conventions, so there's
4459 a bit more typing, but it follows sys.argv conventions, so there's
4451 less special-casing to remember.
4460 less special-casing to remember.
4452
4461
4453 2002-06-12 Fernando Perez <fperez@colorado.edu>
4462 2002-06-12 Fernando Perez <fperez@colorado.edu>
4454
4463
4455 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4464 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4456 command. Thanks to a suggestion by Mike Heeter.
4465 command. Thanks to a suggestion by Mike Heeter.
4457 (Magic.magic_pfile): added behavior to look at filenames if given
4466 (Magic.magic_pfile): added behavior to look at filenames if given
4458 arg is not a defined object.
4467 arg is not a defined object.
4459 (Magic.magic_save): New @save function to save code snippets. Also
4468 (Magic.magic_save): New @save function to save code snippets. Also
4460 a Mike Heeter idea.
4469 a Mike Heeter idea.
4461
4470
4462 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4471 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4463 plot() and replot(). Much more convenient now, especially for
4472 plot() and replot(). Much more convenient now, especially for
4464 interactive use.
4473 interactive use.
4465
4474
4466 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4475 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4467 filenames.
4476 filenames.
4468
4477
4469 2002-06-02 Fernando Perez <fperez@colorado.edu>
4478 2002-06-02 Fernando Perez <fperez@colorado.edu>
4470
4479
4471 * IPython/Struct.py (Struct.__init__): modified to admit
4480 * IPython/Struct.py (Struct.__init__): modified to admit
4472 initialization via another struct.
4481 initialization via another struct.
4473
4482
4474 * IPython/genutils.py (SystemExec.__init__): New stateful
4483 * IPython/genutils.py (SystemExec.__init__): New stateful
4475 interface to xsys and bq. Useful for writing system scripts.
4484 interface to xsys and bq. Useful for writing system scripts.
4476
4485
4477 2002-05-30 Fernando Perez <fperez@colorado.edu>
4486 2002-05-30 Fernando Perez <fperez@colorado.edu>
4478
4487
4479 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4488 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4480 documents. This will make the user download smaller (it's getting
4489 documents. This will make the user download smaller (it's getting
4481 too big).
4490 too big).
4482
4491
4483 2002-05-29 Fernando Perez <fperez@colorado.edu>
4492 2002-05-29 Fernando Perez <fperez@colorado.edu>
4484
4493
4485 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4494 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4486 fix problems with shelve and pickle. Seems to work, but I don't
4495 fix problems with shelve and pickle. Seems to work, but I don't
4487 know if corner cases break it. Thanks to Mike Heeter
4496 know if corner cases break it. Thanks to Mike Heeter
4488 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4497 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4489
4498
4490 2002-05-24 Fernando Perez <fperez@colorado.edu>
4499 2002-05-24 Fernando Perez <fperez@colorado.edu>
4491
4500
4492 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4501 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4493 macros having broken.
4502 macros having broken.
4494
4503
4495 2002-05-21 Fernando Perez <fperez@colorado.edu>
4504 2002-05-21 Fernando Perez <fperez@colorado.edu>
4496
4505
4497 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4506 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4498 introduced logging bug: all history before logging started was
4507 introduced logging bug: all history before logging started was
4499 being written one character per line! This came from the redesign
4508 being written one character per line! This came from the redesign
4500 of the input history as a special list which slices to strings,
4509 of the input history as a special list which slices to strings,
4501 not to lists.
4510 not to lists.
4502
4511
4503 2002-05-20 Fernando Perez <fperez@colorado.edu>
4512 2002-05-20 Fernando Perez <fperez@colorado.edu>
4504
4513
4505 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4514 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4506 be an attribute of all classes in this module. The design of these
4515 be an attribute of all classes in this module. The design of these
4507 classes needs some serious overhauling.
4516 classes needs some serious overhauling.
4508
4517
4509 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4518 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4510 which was ignoring '_' in option names.
4519 which was ignoring '_' in option names.
4511
4520
4512 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4521 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4513 'Verbose_novars' to 'Context' and made it the new default. It's a
4522 'Verbose_novars' to 'Context' and made it the new default. It's a
4514 bit more readable and also safer than verbose.
4523 bit more readable and also safer than verbose.
4515
4524
4516 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4525 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4517 triple-quoted strings.
4526 triple-quoted strings.
4518
4527
4519 * IPython/OInspect.py (__all__): new module exposing the object
4528 * IPython/OInspect.py (__all__): new module exposing the object
4520 introspection facilities. Now the corresponding magics are dummy
4529 introspection facilities. Now the corresponding magics are dummy
4521 wrappers around this. Having this module will make it much easier
4530 wrappers around this. Having this module will make it much easier
4522 to put these functions into our modified pdb.
4531 to put these functions into our modified pdb.
4523 This new object inspector system uses the new colorizing module,
4532 This new object inspector system uses the new colorizing module,
4524 so source code and other things are nicely syntax highlighted.
4533 so source code and other things are nicely syntax highlighted.
4525
4534
4526 2002-05-18 Fernando Perez <fperez@colorado.edu>
4535 2002-05-18 Fernando Perez <fperez@colorado.edu>
4527
4536
4528 * IPython/ColorANSI.py: Split the coloring tools into a separate
4537 * IPython/ColorANSI.py: Split the coloring tools into a separate
4529 module so I can use them in other code easier (they were part of
4538 module so I can use them in other code easier (they were part of
4530 ultraTB).
4539 ultraTB).
4531
4540
4532 2002-05-17 Fernando Perez <fperez@colorado.edu>
4541 2002-05-17 Fernando Perez <fperez@colorado.edu>
4533
4542
4534 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4543 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4535 fixed it to set the global 'g' also to the called instance, as
4544 fixed it to set the global 'g' also to the called instance, as
4536 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4545 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4537 user's 'g' variables).
4546 user's 'g' variables).
4538
4547
4539 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4548 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4540 global variables (aliases to _ih,_oh) so that users which expect
4549 global variables (aliases to _ih,_oh) so that users which expect
4541 In[5] or Out[7] to work aren't unpleasantly surprised.
4550 In[5] or Out[7] to work aren't unpleasantly surprised.
4542 (InputList.__getslice__): new class to allow executing slices of
4551 (InputList.__getslice__): new class to allow executing slices of
4543 input history directly. Very simple class, complements the use of
4552 input history directly. Very simple class, complements the use of
4544 macros.
4553 macros.
4545
4554
4546 2002-05-16 Fernando Perez <fperez@colorado.edu>
4555 2002-05-16 Fernando Perez <fperez@colorado.edu>
4547
4556
4548 * setup.py (docdirbase): make doc directory be just doc/IPython
4557 * setup.py (docdirbase): make doc directory be just doc/IPython
4549 without version numbers, it will reduce clutter for users.
4558 without version numbers, it will reduce clutter for users.
4550
4559
4551 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4560 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4552 execfile call to prevent possible memory leak. See for details:
4561 execfile call to prevent possible memory leak. See for details:
4553 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4562 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4554
4563
4555 2002-05-15 Fernando Perez <fperez@colorado.edu>
4564 2002-05-15 Fernando Perez <fperez@colorado.edu>
4556
4565
4557 * IPython/Magic.py (Magic.magic_psource): made the object
4566 * IPython/Magic.py (Magic.magic_psource): made the object
4558 introspection names be more standard: pdoc, pdef, pfile and
4567 introspection names be more standard: pdoc, pdef, pfile and
4559 psource. They all print/page their output, and it makes
4568 psource. They all print/page their output, and it makes
4560 remembering them easier. Kept old names for compatibility as
4569 remembering them easier. Kept old names for compatibility as
4561 aliases.
4570 aliases.
4562
4571
4563 2002-05-14 Fernando Perez <fperez@colorado.edu>
4572 2002-05-14 Fernando Perez <fperez@colorado.edu>
4564
4573
4565 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4574 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4566 what the mouse problem was. The trick is to use gnuplot with temp
4575 what the mouse problem was. The trick is to use gnuplot with temp
4567 files and NOT with pipes (for data communication), because having
4576 files and NOT with pipes (for data communication), because having
4568 both pipes and the mouse on is bad news.
4577 both pipes and the mouse on is bad news.
4569
4578
4570 2002-05-13 Fernando Perez <fperez@colorado.edu>
4579 2002-05-13 Fernando Perez <fperez@colorado.edu>
4571
4580
4572 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4581 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4573 bug. Information would be reported about builtins even when
4582 bug. Information would be reported about builtins even when
4574 user-defined functions overrode them.
4583 user-defined functions overrode them.
4575
4584
4576 2002-05-11 Fernando Perez <fperez@colorado.edu>
4585 2002-05-11 Fernando Perez <fperez@colorado.edu>
4577
4586
4578 * IPython/__init__.py (__all__): removed FlexCompleter from
4587 * IPython/__init__.py (__all__): removed FlexCompleter from
4579 __all__ so that things don't fail in platforms without readline.
4588 __all__ so that things don't fail in platforms without readline.
4580
4589
4581 2002-05-10 Fernando Perez <fperez@colorado.edu>
4590 2002-05-10 Fernando Perez <fperez@colorado.edu>
4582
4591
4583 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4592 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4584 it requires Numeric, effectively making Numeric a dependency for
4593 it requires Numeric, effectively making Numeric a dependency for
4585 IPython.
4594 IPython.
4586
4595
4587 * Released 0.2.13
4596 * Released 0.2.13
4588
4597
4589 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4598 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4590 profiler interface. Now all the major options from the profiler
4599 profiler interface. Now all the major options from the profiler
4591 module are directly supported in IPython, both for single
4600 module are directly supported in IPython, both for single
4592 expressions (@prun) and for full programs (@run -p).
4601 expressions (@prun) and for full programs (@run -p).
4593
4602
4594 2002-05-09 Fernando Perez <fperez@colorado.edu>
4603 2002-05-09 Fernando Perez <fperez@colorado.edu>
4595
4604
4596 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4605 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4597 magic properly formatted for screen.
4606 magic properly formatted for screen.
4598
4607
4599 * setup.py (make_shortcut): Changed things to put pdf version in
4608 * setup.py (make_shortcut): Changed things to put pdf version in
4600 doc/ instead of doc/manual (had to change lyxport a bit).
4609 doc/ instead of doc/manual (had to change lyxport a bit).
4601
4610
4602 * IPython/Magic.py (Profile.string_stats): made profile runs go
4611 * IPython/Magic.py (Profile.string_stats): made profile runs go
4603 through pager (they are long and a pager allows searching, saving,
4612 through pager (they are long and a pager allows searching, saving,
4604 etc.)
4613 etc.)
4605
4614
4606 2002-05-08 Fernando Perez <fperez@colorado.edu>
4615 2002-05-08 Fernando Perez <fperez@colorado.edu>
4607
4616
4608 * Released 0.2.12
4617 * Released 0.2.12
4609
4618
4610 2002-05-06 Fernando Perez <fperez@colorado.edu>
4619 2002-05-06 Fernando Perez <fperez@colorado.edu>
4611
4620
4612 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4621 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4613 introduced); 'hist n1 n2' was broken.
4622 introduced); 'hist n1 n2' was broken.
4614 (Magic.magic_pdb): added optional on/off arguments to @pdb
4623 (Magic.magic_pdb): added optional on/off arguments to @pdb
4615 (Magic.magic_run): added option -i to @run, which executes code in
4624 (Magic.magic_run): added option -i to @run, which executes code in
4616 the IPython namespace instead of a clean one. Also added @irun as
4625 the IPython namespace instead of a clean one. Also added @irun as
4617 an alias to @run -i.
4626 an alias to @run -i.
4618
4627
4619 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4628 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4620 fixed (it didn't really do anything, the namespaces were wrong).
4629 fixed (it didn't really do anything, the namespaces were wrong).
4621
4630
4622 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4631 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4623
4632
4624 * IPython/__init__.py (__all__): Fixed package namespace, now
4633 * IPython/__init__.py (__all__): Fixed package namespace, now
4625 'import IPython' does give access to IPython.<all> as
4634 'import IPython' does give access to IPython.<all> as
4626 expected. Also renamed __release__ to Release.
4635 expected. Also renamed __release__ to Release.
4627
4636
4628 * IPython/Debugger.py (__license__): created new Pdb class which
4637 * IPython/Debugger.py (__license__): created new Pdb class which
4629 functions like a drop-in for the normal pdb.Pdb but does NOT
4638 functions like a drop-in for the normal pdb.Pdb but does NOT
4630 import readline by default. This way it doesn't muck up IPython's
4639 import readline by default. This way it doesn't muck up IPython's
4631 readline handling, and now tab-completion finally works in the
4640 readline handling, and now tab-completion finally works in the
4632 debugger -- sort of. It completes things globally visible, but the
4641 debugger -- sort of. It completes things globally visible, but the
4633 completer doesn't track the stack as pdb walks it. That's a bit
4642 completer doesn't track the stack as pdb walks it. That's a bit
4634 tricky, and I'll have to implement it later.
4643 tricky, and I'll have to implement it later.
4635
4644
4636 2002-05-05 Fernando Perez <fperez@colorado.edu>
4645 2002-05-05 Fernando Perez <fperez@colorado.edu>
4637
4646
4638 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4647 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4639 magic docstrings when printed via ? (explicit \'s were being
4648 magic docstrings when printed via ? (explicit \'s were being
4640 printed).
4649 printed).
4641
4650
4642 * IPython/ipmaker.py (make_IPython): fixed namespace
4651 * IPython/ipmaker.py (make_IPython): fixed namespace
4643 identification bug. Now variables loaded via logs or command-line
4652 identification bug. Now variables loaded via logs or command-line
4644 files are recognized in the interactive namespace by @who.
4653 files are recognized in the interactive namespace by @who.
4645
4654
4646 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4655 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4647 log replay system stemming from the string form of Structs.
4656 log replay system stemming from the string form of Structs.
4648
4657
4649 * IPython/Magic.py (Macro.__init__): improved macros to properly
4658 * IPython/Magic.py (Macro.__init__): improved macros to properly
4650 handle magic commands in them.
4659 handle magic commands in them.
4651 (Magic.magic_logstart): usernames are now expanded so 'logstart
4660 (Magic.magic_logstart): usernames are now expanded so 'logstart
4652 ~/mylog' now works.
4661 ~/mylog' now works.
4653
4662
4654 * IPython/iplib.py (complete): fixed bug where paths starting with
4663 * IPython/iplib.py (complete): fixed bug where paths starting with
4655 '/' would be completed as magic names.
4664 '/' would be completed as magic names.
4656
4665
4657 2002-05-04 Fernando Perez <fperez@colorado.edu>
4666 2002-05-04 Fernando Perez <fperez@colorado.edu>
4658
4667
4659 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4668 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4660 allow running full programs under the profiler's control.
4669 allow running full programs under the profiler's control.
4661
4670
4662 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4671 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4663 mode to report exceptions verbosely but without formatting
4672 mode to report exceptions verbosely but without formatting
4664 variables. This addresses the issue of ipython 'freezing' (it's
4673 variables. This addresses the issue of ipython 'freezing' (it's
4665 not frozen, but caught in an expensive formatting loop) when huge
4674 not frozen, but caught in an expensive formatting loop) when huge
4666 variables are in the context of an exception.
4675 variables are in the context of an exception.
4667 (VerboseTB.text): Added '--->' markers at line where exception was
4676 (VerboseTB.text): Added '--->' markers at line where exception was
4668 triggered. Much clearer to read, especially in NoColor modes.
4677 triggered. Much clearer to read, especially in NoColor modes.
4669
4678
4670 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4679 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4671 implemented in reverse when changing to the new parse_options().
4680 implemented in reverse when changing to the new parse_options().
4672
4681
4673 2002-05-03 Fernando Perez <fperez@colorado.edu>
4682 2002-05-03 Fernando Perez <fperez@colorado.edu>
4674
4683
4675 * IPython/Magic.py (Magic.parse_options): new function so that
4684 * IPython/Magic.py (Magic.parse_options): new function so that
4676 magics can parse options easier.
4685 magics can parse options easier.
4677 (Magic.magic_prun): new function similar to profile.run(),
4686 (Magic.magic_prun): new function similar to profile.run(),
4678 suggested by Chris Hart.
4687 suggested by Chris Hart.
4679 (Magic.magic_cd): fixed behavior so that it only changes if
4688 (Magic.magic_cd): fixed behavior so that it only changes if
4680 directory actually is in history.
4689 directory actually is in history.
4681
4690
4682 * IPython/usage.py (__doc__): added information about potential
4691 * IPython/usage.py (__doc__): added information about potential
4683 slowness of Verbose exception mode when there are huge data
4692 slowness of Verbose exception mode when there are huge data
4684 structures to be formatted (thanks to Archie Paulson).
4693 structures to be formatted (thanks to Archie Paulson).
4685
4694
4686 * IPython/ipmaker.py (make_IPython): Changed default logging
4695 * IPython/ipmaker.py (make_IPython): Changed default logging
4687 (when simply called with -log) to use curr_dir/ipython.log in
4696 (when simply called with -log) to use curr_dir/ipython.log in
4688 rotate mode. Fixed crash which was occuring with -log before
4697 rotate mode. Fixed crash which was occuring with -log before
4689 (thanks to Jim Boyle).
4698 (thanks to Jim Boyle).
4690
4699
4691 2002-05-01 Fernando Perez <fperez@colorado.edu>
4700 2002-05-01 Fernando Perez <fperez@colorado.edu>
4692
4701
4693 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4702 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4694 was nasty -- though somewhat of a corner case).
4703 was nasty -- though somewhat of a corner case).
4695
4704
4696 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4705 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4697 text (was a bug).
4706 text (was a bug).
4698
4707
4699 2002-04-30 Fernando Perez <fperez@colorado.edu>
4708 2002-04-30 Fernando Perez <fperez@colorado.edu>
4700
4709
4701 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4710 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4702 a print after ^D or ^C from the user so that the In[] prompt
4711 a print after ^D or ^C from the user so that the In[] prompt
4703 doesn't over-run the gnuplot one.
4712 doesn't over-run the gnuplot one.
4704
4713
4705 2002-04-29 Fernando Perez <fperez@colorado.edu>
4714 2002-04-29 Fernando Perez <fperez@colorado.edu>
4706
4715
4707 * Released 0.2.10
4716 * Released 0.2.10
4708
4717
4709 * IPython/__release__.py (version): get date dynamically.
4718 * IPython/__release__.py (version): get date dynamically.
4710
4719
4711 * Misc. documentation updates thanks to Arnd's comments. Also ran
4720 * Misc. documentation updates thanks to Arnd's comments. Also ran
4712 a full spellcheck on the manual (hadn't been done in a while).
4721 a full spellcheck on the manual (hadn't been done in a while).
4713
4722
4714 2002-04-27 Fernando Perez <fperez@colorado.edu>
4723 2002-04-27 Fernando Perez <fperez@colorado.edu>
4715
4724
4716 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4725 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4717 starting a log in mid-session would reset the input history list.
4726 starting a log in mid-session would reset the input history list.
4718
4727
4719 2002-04-26 Fernando Perez <fperez@colorado.edu>
4728 2002-04-26 Fernando Perez <fperez@colorado.edu>
4720
4729
4721 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4730 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4722 all files were being included in an update. Now anything in
4731 all files were being included in an update. Now anything in
4723 UserConfig that matches [A-Za-z]*.py will go (this excludes
4732 UserConfig that matches [A-Za-z]*.py will go (this excludes
4724 __init__.py)
4733 __init__.py)
4725
4734
4726 2002-04-25 Fernando Perez <fperez@colorado.edu>
4735 2002-04-25 Fernando Perez <fperez@colorado.edu>
4727
4736
4728 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4737 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4729 to __builtins__ so that any form of embedded or imported code can
4738 to __builtins__ so that any form of embedded or imported code can
4730 test for being inside IPython.
4739 test for being inside IPython.
4731
4740
4732 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4741 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4733 changed to GnuplotMagic because it's now an importable module,
4742 changed to GnuplotMagic because it's now an importable module,
4734 this makes the name follow that of the standard Gnuplot module.
4743 this makes the name follow that of the standard Gnuplot module.
4735 GnuplotMagic can now be loaded at any time in mid-session.
4744 GnuplotMagic can now be loaded at any time in mid-session.
4736
4745
4737 2002-04-24 Fernando Perez <fperez@colorado.edu>
4746 2002-04-24 Fernando Perez <fperez@colorado.edu>
4738
4747
4739 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4748 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4740 the globals (IPython has its own namespace) and the
4749 the globals (IPython has its own namespace) and the
4741 PhysicalQuantity stuff is much better anyway.
4750 PhysicalQuantity stuff is much better anyway.
4742
4751
4743 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4752 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4744 embedding example to standard user directory for
4753 embedding example to standard user directory for
4745 distribution. Also put it in the manual.
4754 distribution. Also put it in the manual.
4746
4755
4747 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4756 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4748 instance as first argument (so it doesn't rely on some obscure
4757 instance as first argument (so it doesn't rely on some obscure
4749 hidden global).
4758 hidden global).
4750
4759
4751 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4760 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4752 delimiters. While it prevents ().TAB from working, it allows
4761 delimiters. While it prevents ().TAB from working, it allows
4753 completions in open (... expressions. This is by far a more common
4762 completions in open (... expressions. This is by far a more common
4754 case.
4763 case.
4755
4764
4756 2002-04-23 Fernando Perez <fperez@colorado.edu>
4765 2002-04-23 Fernando Perez <fperez@colorado.edu>
4757
4766
4758 * IPython/Extensions/InterpreterPasteInput.py: new
4767 * IPython/Extensions/InterpreterPasteInput.py: new
4759 syntax-processing module for pasting lines with >>> or ... at the
4768 syntax-processing module for pasting lines with >>> or ... at the
4760 start.
4769 start.
4761
4770
4762 * IPython/Extensions/PhysicalQ_Interactive.py
4771 * IPython/Extensions/PhysicalQ_Interactive.py
4763 (PhysicalQuantityInteractive.__int__): fixed to work with either
4772 (PhysicalQuantityInteractive.__int__): fixed to work with either
4764 Numeric or math.
4773 Numeric or math.
4765
4774
4766 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4775 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4767 provided profiles. Now we have:
4776 provided profiles. Now we have:
4768 -math -> math module as * and cmath with its own namespace.
4777 -math -> math module as * and cmath with its own namespace.
4769 -numeric -> Numeric as *, plus gnuplot & grace
4778 -numeric -> Numeric as *, plus gnuplot & grace
4770 -physics -> same as before
4779 -physics -> same as before
4771
4780
4772 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4781 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4773 user-defined magics wouldn't be found by @magic if they were
4782 user-defined magics wouldn't be found by @magic if they were
4774 defined as class methods. Also cleaned up the namespace search
4783 defined as class methods. Also cleaned up the namespace search
4775 logic and the string building (to use %s instead of many repeated
4784 logic and the string building (to use %s instead of many repeated
4776 string adds).
4785 string adds).
4777
4786
4778 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4787 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4779 of user-defined magics to operate with class methods (cleaner, in
4788 of user-defined magics to operate with class methods (cleaner, in
4780 line with the gnuplot code).
4789 line with the gnuplot code).
4781
4790
4782 2002-04-22 Fernando Perez <fperez@colorado.edu>
4791 2002-04-22 Fernando Perez <fperez@colorado.edu>
4783
4792
4784 * setup.py: updated dependency list so that manual is updated when
4793 * setup.py: updated dependency list so that manual is updated when
4785 all included files change.
4794 all included files change.
4786
4795
4787 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4796 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4788 the delimiter removal option (the fix is ugly right now).
4797 the delimiter removal option (the fix is ugly right now).
4789
4798
4790 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4799 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4791 all of the math profile (quicker loading, no conflict between
4800 all of the math profile (quicker loading, no conflict between
4792 g-9.8 and g-gnuplot).
4801 g-9.8 and g-gnuplot).
4793
4802
4794 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4803 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4795 name of post-mortem files to IPython_crash_report.txt.
4804 name of post-mortem files to IPython_crash_report.txt.
4796
4805
4797 * Cleanup/update of the docs. Added all the new readline info and
4806 * Cleanup/update of the docs. Added all the new readline info and
4798 formatted all lists as 'real lists'.
4807 formatted all lists as 'real lists'.
4799
4808
4800 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4809 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4801 tab-completion options, since the full readline parse_and_bind is
4810 tab-completion options, since the full readline parse_and_bind is
4802 now accessible.
4811 now accessible.
4803
4812
4804 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4813 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4805 handling of readline options. Now users can specify any string to
4814 handling of readline options. Now users can specify any string to
4806 be passed to parse_and_bind(), as well as the delimiters to be
4815 be passed to parse_and_bind(), as well as the delimiters to be
4807 removed.
4816 removed.
4808 (InteractiveShell.__init__): Added __name__ to the global
4817 (InteractiveShell.__init__): Added __name__ to the global
4809 namespace so that things like Itpl which rely on its existence
4818 namespace so that things like Itpl which rely on its existence
4810 don't crash.
4819 don't crash.
4811 (InteractiveShell._prefilter): Defined the default with a _ so
4820 (InteractiveShell._prefilter): Defined the default with a _ so
4812 that prefilter() is easier to override, while the default one
4821 that prefilter() is easier to override, while the default one
4813 remains available.
4822 remains available.
4814
4823
4815 2002-04-18 Fernando Perez <fperez@colorado.edu>
4824 2002-04-18 Fernando Perez <fperez@colorado.edu>
4816
4825
4817 * Added information about pdb in the docs.
4826 * Added information about pdb in the docs.
4818
4827
4819 2002-04-17 Fernando Perez <fperez@colorado.edu>
4828 2002-04-17 Fernando Perez <fperez@colorado.edu>
4820
4829
4821 * IPython/ipmaker.py (make_IPython): added rc_override option to
4830 * IPython/ipmaker.py (make_IPython): added rc_override option to
4822 allow passing config options at creation time which may override
4831 allow passing config options at creation time which may override
4823 anything set in the config files or command line. This is
4832 anything set in the config files or command line. This is
4824 particularly useful for configuring embedded instances.
4833 particularly useful for configuring embedded instances.
4825
4834
4826 2002-04-15 Fernando Perez <fperez@colorado.edu>
4835 2002-04-15 Fernando Perez <fperez@colorado.edu>
4827
4836
4828 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4837 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4829 crash embedded instances because of the input cache falling out of
4838 crash embedded instances because of the input cache falling out of
4830 sync with the output counter.
4839 sync with the output counter.
4831
4840
4832 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4841 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4833 mode which calls pdb after an uncaught exception in IPython itself.
4842 mode which calls pdb after an uncaught exception in IPython itself.
4834
4843
4835 2002-04-14 Fernando Perez <fperez@colorado.edu>
4844 2002-04-14 Fernando Perez <fperez@colorado.edu>
4836
4845
4837 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4846 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4838 readline, fix it back after each call.
4847 readline, fix it back after each call.
4839
4848
4840 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4849 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4841 method to force all access via __call__(), which guarantees that
4850 method to force all access via __call__(), which guarantees that
4842 traceback references are properly deleted.
4851 traceback references are properly deleted.
4843
4852
4844 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4853 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4845 improve printing when pprint is in use.
4854 improve printing when pprint is in use.
4846
4855
4847 2002-04-13 Fernando Perez <fperez@colorado.edu>
4856 2002-04-13 Fernando Perez <fperez@colorado.edu>
4848
4857
4849 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4858 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4850 exceptions aren't caught anymore. If the user triggers one, he
4859 exceptions aren't caught anymore. If the user triggers one, he
4851 should know why he's doing it and it should go all the way up,
4860 should know why he's doing it and it should go all the way up,
4852 just like any other exception. So now @abort will fully kill the
4861 just like any other exception. So now @abort will fully kill the
4853 embedded interpreter and the embedding code (unless that happens
4862 embedded interpreter and the embedding code (unless that happens
4854 to catch SystemExit).
4863 to catch SystemExit).
4855
4864
4856 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4865 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4857 and a debugger() method to invoke the interactive pdb debugger
4866 and a debugger() method to invoke the interactive pdb debugger
4858 after printing exception information. Also added the corresponding
4867 after printing exception information. Also added the corresponding
4859 -pdb option and @pdb magic to control this feature, and updated
4868 -pdb option and @pdb magic to control this feature, and updated
4860 the docs. After a suggestion from Christopher Hart
4869 the docs. After a suggestion from Christopher Hart
4861 (hart-AT-caltech.edu).
4870 (hart-AT-caltech.edu).
4862
4871
4863 2002-04-12 Fernando Perez <fperez@colorado.edu>
4872 2002-04-12 Fernando Perez <fperez@colorado.edu>
4864
4873
4865 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4874 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4866 the exception handlers defined by the user (not the CrashHandler)
4875 the exception handlers defined by the user (not the CrashHandler)
4867 so that user exceptions don't trigger an ipython bug report.
4876 so that user exceptions don't trigger an ipython bug report.
4868
4877
4869 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4878 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4870 configurable (it should have always been so).
4879 configurable (it should have always been so).
4871
4880
4872 2002-03-26 Fernando Perez <fperez@colorado.edu>
4881 2002-03-26 Fernando Perez <fperez@colorado.edu>
4873
4882
4874 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4883 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4875 and there to fix embedding namespace issues. This should all be
4884 and there to fix embedding namespace issues. This should all be
4876 done in a more elegant way.
4885 done in a more elegant way.
4877
4886
4878 2002-03-25 Fernando Perez <fperez@colorado.edu>
4887 2002-03-25 Fernando Perez <fperez@colorado.edu>
4879
4888
4880 * IPython/genutils.py (get_home_dir): Try to make it work under
4889 * IPython/genutils.py (get_home_dir): Try to make it work under
4881 win9x also.
4890 win9x also.
4882
4891
4883 2002-03-20 Fernando Perez <fperez@colorado.edu>
4892 2002-03-20 Fernando Perez <fperez@colorado.edu>
4884
4893
4885 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4894 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4886 sys.displayhook untouched upon __init__.
4895 sys.displayhook untouched upon __init__.
4887
4896
4888 2002-03-19 Fernando Perez <fperez@colorado.edu>
4897 2002-03-19 Fernando Perez <fperez@colorado.edu>
4889
4898
4890 * Released 0.2.9 (for embedding bug, basically).
4899 * Released 0.2.9 (for embedding bug, basically).
4891
4900
4892 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4901 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4893 exceptions so that enclosing shell's state can be restored.
4902 exceptions so that enclosing shell's state can be restored.
4894
4903
4895 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4904 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4896 naming conventions in the .ipython/ dir.
4905 naming conventions in the .ipython/ dir.
4897
4906
4898 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4907 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4899 from delimiters list so filenames with - in them get expanded.
4908 from delimiters list so filenames with - in them get expanded.
4900
4909
4901 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4910 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4902 sys.displayhook not being properly restored after an embedded call.
4911 sys.displayhook not being properly restored after an embedded call.
4903
4912
4904 2002-03-18 Fernando Perez <fperez@colorado.edu>
4913 2002-03-18 Fernando Perez <fperez@colorado.edu>
4905
4914
4906 * Released 0.2.8
4915 * Released 0.2.8
4907
4916
4908 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4917 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4909 some files weren't being included in a -upgrade.
4918 some files weren't being included in a -upgrade.
4910 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4919 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4911 on' so that the first tab completes.
4920 on' so that the first tab completes.
4912 (InteractiveShell.handle_magic): fixed bug with spaces around
4921 (InteractiveShell.handle_magic): fixed bug with spaces around
4913 quotes breaking many magic commands.
4922 quotes breaking many magic commands.
4914
4923
4915 * setup.py: added note about ignoring the syntax error messages at
4924 * setup.py: added note about ignoring the syntax error messages at
4916 installation.
4925 installation.
4917
4926
4918 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4927 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4919 streamlining the gnuplot interface, now there's only one magic @gp.
4928 streamlining the gnuplot interface, now there's only one magic @gp.
4920
4929
4921 2002-03-17 Fernando Perez <fperez@colorado.edu>
4930 2002-03-17 Fernando Perez <fperez@colorado.edu>
4922
4931
4923 * IPython/UserConfig/magic_gnuplot.py: new name for the
4932 * IPython/UserConfig/magic_gnuplot.py: new name for the
4924 example-magic_pm.py file. Much enhanced system, now with a shell
4933 example-magic_pm.py file. Much enhanced system, now with a shell
4925 for communicating directly with gnuplot, one command at a time.
4934 for communicating directly with gnuplot, one command at a time.
4926
4935
4927 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4936 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4928 setting __name__=='__main__'.
4937 setting __name__=='__main__'.
4929
4938
4930 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4939 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4931 mini-shell for accessing gnuplot from inside ipython. Should
4940 mini-shell for accessing gnuplot from inside ipython. Should
4932 extend it later for grace access too. Inspired by Arnd's
4941 extend it later for grace access too. Inspired by Arnd's
4933 suggestion.
4942 suggestion.
4934
4943
4935 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4944 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4936 calling magic functions with () in their arguments. Thanks to Arnd
4945 calling magic functions with () in their arguments. Thanks to Arnd
4937 Baecker for pointing this to me.
4946 Baecker for pointing this to me.
4938
4947
4939 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4948 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4940 infinitely for integer or complex arrays (only worked with floats).
4949 infinitely for integer or complex arrays (only worked with floats).
4941
4950
4942 2002-03-16 Fernando Perez <fperez@colorado.edu>
4951 2002-03-16 Fernando Perez <fperez@colorado.edu>
4943
4952
4944 * setup.py: Merged setup and setup_windows into a single script
4953 * setup.py: Merged setup and setup_windows into a single script
4945 which properly handles things for windows users.
4954 which properly handles things for windows users.
4946
4955
4947 2002-03-15 Fernando Perez <fperez@colorado.edu>
4956 2002-03-15 Fernando Perez <fperez@colorado.edu>
4948
4957
4949 * Big change to the manual: now the magics are all automatically
4958 * Big change to the manual: now the magics are all automatically
4950 documented. This information is generated from their docstrings
4959 documented. This information is generated from their docstrings
4951 and put in a latex file included by the manual lyx file. This way
4960 and put in a latex file included by the manual lyx file. This way
4952 we get always up to date information for the magics. The manual
4961 we get always up to date information for the magics. The manual
4953 now also has proper version information, also auto-synced.
4962 now also has proper version information, also auto-synced.
4954
4963
4955 For this to work, an undocumented --magic_docstrings option was added.
4964 For this to work, an undocumented --magic_docstrings option was added.
4956
4965
4957 2002-03-13 Fernando Perez <fperez@colorado.edu>
4966 2002-03-13 Fernando Perez <fperez@colorado.edu>
4958
4967
4959 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4968 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4960 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4969 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4961
4970
4962 2002-03-12 Fernando Perez <fperez@colorado.edu>
4971 2002-03-12 Fernando Perez <fperez@colorado.edu>
4963
4972
4964 * IPython/ultraTB.py (TermColors): changed color escapes again to
4973 * IPython/ultraTB.py (TermColors): changed color escapes again to
4965 fix the (old, reintroduced) line-wrapping bug. Basically, if
4974 fix the (old, reintroduced) line-wrapping bug. Basically, if
4966 \001..\002 aren't given in the color escapes, lines get wrapped
4975 \001..\002 aren't given in the color escapes, lines get wrapped
4967 weirdly. But giving those screws up old xterms and emacs terms. So
4976 weirdly. But giving those screws up old xterms and emacs terms. So
4968 I added some logic for emacs terms to be ok, but I can't identify old
4977 I added some logic for emacs terms to be ok, but I can't identify old
4969 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4978 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4970
4979
4971 2002-03-10 Fernando Perez <fperez@colorado.edu>
4980 2002-03-10 Fernando Perez <fperez@colorado.edu>
4972
4981
4973 * IPython/usage.py (__doc__): Various documentation cleanups and
4982 * IPython/usage.py (__doc__): Various documentation cleanups and
4974 updates, both in usage docstrings and in the manual.
4983 updates, both in usage docstrings and in the manual.
4975
4984
4976 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4985 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4977 handling of caching. Set minimum acceptabe value for having a
4986 handling of caching. Set minimum acceptabe value for having a
4978 cache at 20 values.
4987 cache at 20 values.
4979
4988
4980 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4989 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4981 install_first_time function to a method, renamed it and added an
4990 install_first_time function to a method, renamed it and added an
4982 'upgrade' mode. Now people can update their config directory with
4991 'upgrade' mode. Now people can update their config directory with
4983 a simple command line switch (-upgrade, also new).
4992 a simple command line switch (-upgrade, also new).
4984
4993
4985 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4994 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4986 @file (convenient for automagic users under Python >= 2.2).
4995 @file (convenient for automagic users under Python >= 2.2).
4987 Removed @files (it seemed more like a plural than an abbrev. of
4996 Removed @files (it seemed more like a plural than an abbrev. of
4988 'file show').
4997 'file show').
4989
4998
4990 * IPython/iplib.py (install_first_time): Fixed crash if there were
4999 * IPython/iplib.py (install_first_time): Fixed crash if there were
4991 backup files ('~') in .ipython/ install directory.
5000 backup files ('~') in .ipython/ install directory.
4992
5001
4993 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5002 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4994 system. Things look fine, but these changes are fairly
5003 system. Things look fine, but these changes are fairly
4995 intrusive. Test them for a few days.
5004 intrusive. Test them for a few days.
4996
5005
4997 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5006 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4998 the prompts system. Now all in/out prompt strings are user
5007 the prompts system. Now all in/out prompt strings are user
4999 controllable. This is particularly useful for embedding, as one
5008 controllable. This is particularly useful for embedding, as one
5000 can tag embedded instances with particular prompts.
5009 can tag embedded instances with particular prompts.
5001
5010
5002 Also removed global use of sys.ps1/2, which now allows nested
5011 Also removed global use of sys.ps1/2, which now allows nested
5003 embeddings without any problems. Added command-line options for
5012 embeddings without any problems. Added command-line options for
5004 the prompt strings.
5013 the prompt strings.
5005
5014
5006 2002-03-08 Fernando Perez <fperez@colorado.edu>
5015 2002-03-08 Fernando Perez <fperez@colorado.edu>
5007
5016
5008 * IPython/UserConfig/example-embed-short.py (ipshell): added
5017 * IPython/UserConfig/example-embed-short.py (ipshell): added
5009 example file with the bare minimum code for embedding.
5018 example file with the bare minimum code for embedding.
5010
5019
5011 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5020 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5012 functionality for the embeddable shell to be activated/deactivated
5021 functionality for the embeddable shell to be activated/deactivated
5013 either globally or at each call.
5022 either globally or at each call.
5014
5023
5015 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5024 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5016 rewriting the prompt with '--->' for auto-inputs with proper
5025 rewriting the prompt with '--->' for auto-inputs with proper
5017 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5026 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5018 this is handled by the prompts class itself, as it should.
5027 this is handled by the prompts class itself, as it should.
5019
5028
5020 2002-03-05 Fernando Perez <fperez@colorado.edu>
5029 2002-03-05 Fernando Perez <fperez@colorado.edu>
5021
5030
5022 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5031 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5023 @logstart to avoid name clashes with the math log function.
5032 @logstart to avoid name clashes with the math log function.
5024
5033
5025 * Big updates to X/Emacs section of the manual.
5034 * Big updates to X/Emacs section of the manual.
5026
5035
5027 * Removed ipython_emacs. Milan explained to me how to pass
5036 * Removed ipython_emacs. Milan explained to me how to pass
5028 arguments to ipython through Emacs. Some day I'm going to end up
5037 arguments to ipython through Emacs. Some day I'm going to end up
5029 learning some lisp...
5038 learning some lisp...
5030
5039
5031 2002-03-04 Fernando Perez <fperez@colorado.edu>
5040 2002-03-04 Fernando Perez <fperez@colorado.edu>
5032
5041
5033 * IPython/ipython_emacs: Created script to be used as the
5042 * IPython/ipython_emacs: Created script to be used as the
5034 py-python-command Emacs variable so we can pass IPython
5043 py-python-command Emacs variable so we can pass IPython
5035 parameters. I can't figure out how to tell Emacs directly to pass
5044 parameters. I can't figure out how to tell Emacs directly to pass
5036 parameters to IPython, so a dummy shell script will do it.
5045 parameters to IPython, so a dummy shell script will do it.
5037
5046
5038 Other enhancements made for things to work better under Emacs'
5047 Other enhancements made for things to work better under Emacs'
5039 various types of terminals. Many thanks to Milan Zamazal
5048 various types of terminals. Many thanks to Milan Zamazal
5040 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5049 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5041
5050
5042 2002-03-01 Fernando Perez <fperez@colorado.edu>
5051 2002-03-01 Fernando Perez <fperez@colorado.edu>
5043
5052
5044 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5053 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5045 that loading of readline is now optional. This gives better
5054 that loading of readline is now optional. This gives better
5046 control to emacs users.
5055 control to emacs users.
5047
5056
5048 * IPython/ultraTB.py (__date__): Modified color escape sequences
5057 * IPython/ultraTB.py (__date__): Modified color escape sequences
5049 and now things work fine under xterm and in Emacs' term buffers
5058 and now things work fine under xterm and in Emacs' term buffers
5050 (though not shell ones). Well, in emacs you get colors, but all
5059 (though not shell ones). Well, in emacs you get colors, but all
5051 seem to be 'light' colors (no difference between dark and light
5060 seem to be 'light' colors (no difference between dark and light
5052 ones). But the garbage chars are gone, and also in xterms. It
5061 ones). But the garbage chars are gone, and also in xterms. It
5053 seems that now I'm using 'cleaner' ansi sequences.
5062 seems that now I'm using 'cleaner' ansi sequences.
5054
5063
5055 2002-02-21 Fernando Perez <fperez@colorado.edu>
5064 2002-02-21 Fernando Perez <fperez@colorado.edu>
5056
5065
5057 * Released 0.2.7 (mainly to publish the scoping fix).
5066 * Released 0.2.7 (mainly to publish the scoping fix).
5058
5067
5059 * IPython/Logger.py (Logger.logstate): added. A corresponding
5068 * IPython/Logger.py (Logger.logstate): added. A corresponding
5060 @logstate magic was created.
5069 @logstate magic was created.
5061
5070
5062 * IPython/Magic.py: fixed nested scoping problem under Python
5071 * IPython/Magic.py: fixed nested scoping problem under Python
5063 2.1.x (automagic wasn't working).
5072 2.1.x (automagic wasn't working).
5064
5073
5065 2002-02-20 Fernando Perez <fperez@colorado.edu>
5074 2002-02-20 Fernando Perez <fperez@colorado.edu>
5066
5075
5067 * Released 0.2.6.
5076 * Released 0.2.6.
5068
5077
5069 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5078 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5070 option so that logs can come out without any headers at all.
5079 option so that logs can come out without any headers at all.
5071
5080
5072 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5081 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5073 SciPy.
5082 SciPy.
5074
5083
5075 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5084 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5076 that embedded IPython calls don't require vars() to be explicitly
5085 that embedded IPython calls don't require vars() to be explicitly
5077 passed. Now they are extracted from the caller's frame (code
5086 passed. Now they are extracted from the caller's frame (code
5078 snatched from Eric Jones' weave). Added better documentation to
5087 snatched from Eric Jones' weave). Added better documentation to
5079 the section on embedding and the example file.
5088 the section on embedding and the example file.
5080
5089
5081 * IPython/genutils.py (page): Changed so that under emacs, it just
5090 * IPython/genutils.py (page): Changed so that under emacs, it just
5082 prints the string. You can then page up and down in the emacs
5091 prints the string. You can then page up and down in the emacs
5083 buffer itself. This is how the builtin help() works.
5092 buffer itself. This is how the builtin help() works.
5084
5093
5085 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5094 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5086 macro scoping: macros need to be executed in the user's namespace
5095 macro scoping: macros need to be executed in the user's namespace
5087 to work as if they had been typed by the user.
5096 to work as if they had been typed by the user.
5088
5097
5089 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5098 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5090 execute automatically (no need to type 'exec...'). They then
5099 execute automatically (no need to type 'exec...'). They then
5091 behave like 'true macros'. The printing system was also modified
5100 behave like 'true macros'. The printing system was also modified
5092 for this to work.
5101 for this to work.
5093
5102
5094 2002-02-19 Fernando Perez <fperez@colorado.edu>
5103 2002-02-19 Fernando Perez <fperez@colorado.edu>
5095
5104
5096 * IPython/genutils.py (page_file): new function for paging files
5105 * IPython/genutils.py (page_file): new function for paging files
5097 in an OS-independent way. Also necessary for file viewing to work
5106 in an OS-independent way. Also necessary for file viewing to work
5098 well inside Emacs buffers.
5107 well inside Emacs buffers.
5099 (page): Added checks for being in an emacs buffer.
5108 (page): Added checks for being in an emacs buffer.
5100 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5109 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5101 same bug in iplib.
5110 same bug in iplib.
5102
5111
5103 2002-02-18 Fernando Perez <fperez@colorado.edu>
5112 2002-02-18 Fernando Perez <fperez@colorado.edu>
5104
5113
5105 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5114 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5106 of readline so that IPython can work inside an Emacs buffer.
5115 of readline so that IPython can work inside an Emacs buffer.
5107
5116
5108 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5117 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5109 method signatures (they weren't really bugs, but it looks cleaner
5118 method signatures (they weren't really bugs, but it looks cleaner
5110 and keeps PyChecker happy).
5119 and keeps PyChecker happy).
5111
5120
5112 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5121 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5113 for implementing various user-defined hooks. Currently only
5122 for implementing various user-defined hooks. Currently only
5114 display is done.
5123 display is done.
5115
5124
5116 * IPython/Prompts.py (CachedOutput._display): changed display
5125 * IPython/Prompts.py (CachedOutput._display): changed display
5117 functions so that they can be dynamically changed by users easily.
5126 functions so that they can be dynamically changed by users easily.
5118
5127
5119 * IPython/Extensions/numeric_formats.py (num_display): added an
5128 * IPython/Extensions/numeric_formats.py (num_display): added an
5120 extension for printing NumPy arrays in flexible manners. It
5129 extension for printing NumPy arrays in flexible manners. It
5121 doesn't do anything yet, but all the structure is in
5130 doesn't do anything yet, but all the structure is in
5122 place. Ultimately the plan is to implement output format control
5131 place. Ultimately the plan is to implement output format control
5123 like in Octave.
5132 like in Octave.
5124
5133
5125 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5134 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5126 methods are found at run-time by all the automatic machinery.
5135 methods are found at run-time by all the automatic machinery.
5127
5136
5128 2002-02-17 Fernando Perez <fperez@colorado.edu>
5137 2002-02-17 Fernando Perez <fperez@colorado.edu>
5129
5138
5130 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5139 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5131 whole file a little.
5140 whole file a little.
5132
5141
5133 * ToDo: closed this document. Now there's a new_design.lyx
5142 * ToDo: closed this document. Now there's a new_design.lyx
5134 document for all new ideas. Added making a pdf of it for the
5143 document for all new ideas. Added making a pdf of it for the
5135 end-user distro.
5144 end-user distro.
5136
5145
5137 * IPython/Logger.py (Logger.switch_log): Created this to replace
5146 * IPython/Logger.py (Logger.switch_log): Created this to replace
5138 logon() and logoff(). It also fixes a nasty crash reported by
5147 logon() and logoff(). It also fixes a nasty crash reported by
5139 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5148 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5140
5149
5141 * IPython/iplib.py (complete): got auto-completion to work with
5150 * IPython/iplib.py (complete): got auto-completion to work with
5142 automagic (I had wanted this for a long time).
5151 automagic (I had wanted this for a long time).
5143
5152
5144 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5153 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5145 to @file, since file() is now a builtin and clashes with automagic
5154 to @file, since file() is now a builtin and clashes with automagic
5146 for @file.
5155 for @file.
5147
5156
5148 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5157 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5149 of this was previously in iplib, which had grown to more than 2000
5158 of this was previously in iplib, which had grown to more than 2000
5150 lines, way too long. No new functionality, but it makes managing
5159 lines, way too long. No new functionality, but it makes managing
5151 the code a bit easier.
5160 the code a bit easier.
5152
5161
5153 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5162 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5154 information to crash reports.
5163 information to crash reports.
5155
5164
5156 2002-02-12 Fernando Perez <fperez@colorado.edu>
5165 2002-02-12 Fernando Perez <fperez@colorado.edu>
5157
5166
5158 * Released 0.2.5.
5167 * Released 0.2.5.
5159
5168
5160 2002-02-11 Fernando Perez <fperez@colorado.edu>
5169 2002-02-11 Fernando Perez <fperez@colorado.edu>
5161
5170
5162 * Wrote a relatively complete Windows installer. It puts
5171 * Wrote a relatively complete Windows installer. It puts
5163 everything in place, creates Start Menu entries and fixes the
5172 everything in place, creates Start Menu entries and fixes the
5164 color issues. Nothing fancy, but it works.
5173 color issues. Nothing fancy, but it works.
5165
5174
5166 2002-02-10 Fernando Perez <fperez@colorado.edu>
5175 2002-02-10 Fernando Perez <fperez@colorado.edu>
5167
5176
5168 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5177 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5169 os.path.expanduser() call so that we can type @run ~/myfile.py and
5178 os.path.expanduser() call so that we can type @run ~/myfile.py and
5170 have thigs work as expected.
5179 have thigs work as expected.
5171
5180
5172 * IPython/genutils.py (page): fixed exception handling so things
5181 * IPython/genutils.py (page): fixed exception handling so things
5173 work both in Unix and Windows correctly. Quitting a pager triggers
5182 work both in Unix and Windows correctly. Quitting a pager triggers
5174 an IOError/broken pipe in Unix, and in windows not finding a pager
5183 an IOError/broken pipe in Unix, and in windows not finding a pager
5175 is also an IOError, so I had to actually look at the return value
5184 is also an IOError, so I had to actually look at the return value
5176 of the exception, not just the exception itself. Should be ok now.
5185 of the exception, not just the exception itself. Should be ok now.
5177
5186
5178 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5187 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5179 modified to allow case-insensitive color scheme changes.
5188 modified to allow case-insensitive color scheme changes.
5180
5189
5181 2002-02-09 Fernando Perez <fperez@colorado.edu>
5190 2002-02-09 Fernando Perez <fperez@colorado.edu>
5182
5191
5183 * IPython/genutils.py (native_line_ends): new function to leave
5192 * IPython/genutils.py (native_line_ends): new function to leave
5184 user config files with os-native line-endings.
5193 user config files with os-native line-endings.
5185
5194
5186 * README and manual updates.
5195 * README and manual updates.
5187
5196
5188 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5197 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5189 instead of StringType to catch Unicode strings.
5198 instead of StringType to catch Unicode strings.
5190
5199
5191 * IPython/genutils.py (filefind): fixed bug for paths with
5200 * IPython/genutils.py (filefind): fixed bug for paths with
5192 embedded spaces (very common in Windows).
5201 embedded spaces (very common in Windows).
5193
5202
5194 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5203 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5195 files under Windows, so that they get automatically associated
5204 files under Windows, so that they get automatically associated
5196 with a text editor. Windows makes it a pain to handle
5205 with a text editor. Windows makes it a pain to handle
5197 extension-less files.
5206 extension-less files.
5198
5207
5199 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5208 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5200 warning about readline only occur for Posix. In Windows there's no
5209 warning about readline only occur for Posix. In Windows there's no
5201 way to get readline, so why bother with the warning.
5210 way to get readline, so why bother with the warning.
5202
5211
5203 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5212 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5204 for __str__ instead of dir(self), since dir() changed in 2.2.
5213 for __str__ instead of dir(self), since dir() changed in 2.2.
5205
5214
5206 * Ported to Windows! Tested on XP, I suspect it should work fine
5215 * Ported to Windows! Tested on XP, I suspect it should work fine
5207 on NT/2000, but I don't think it will work on 98 et al. That
5216 on NT/2000, but I don't think it will work on 98 et al. That
5208 series of Windows is such a piece of junk anyway that I won't try
5217 series of Windows is such a piece of junk anyway that I won't try
5209 porting it there. The XP port was straightforward, showed a few
5218 porting it there. The XP port was straightforward, showed a few
5210 bugs here and there (fixed all), in particular some string
5219 bugs here and there (fixed all), in particular some string
5211 handling stuff which required considering Unicode strings (which
5220 handling stuff which required considering Unicode strings (which
5212 Windows uses). This is good, but hasn't been too tested :) No
5221 Windows uses). This is good, but hasn't been too tested :) No
5213 fancy installer yet, I'll put a note in the manual so people at
5222 fancy installer yet, I'll put a note in the manual so people at
5214 least make manually a shortcut.
5223 least make manually a shortcut.
5215
5224
5216 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5225 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5217 into a single one, "colors". This now controls both prompt and
5226 into a single one, "colors". This now controls both prompt and
5218 exception color schemes, and can be changed both at startup
5227 exception color schemes, and can be changed both at startup
5219 (either via command-line switches or via ipythonrc files) and at
5228 (either via command-line switches or via ipythonrc files) and at
5220 runtime, with @colors.
5229 runtime, with @colors.
5221 (Magic.magic_run): renamed @prun to @run and removed the old
5230 (Magic.magic_run): renamed @prun to @run and removed the old
5222 @run. The two were too similar to warrant keeping both.
5231 @run. The two were too similar to warrant keeping both.
5223
5232
5224 2002-02-03 Fernando Perez <fperez@colorado.edu>
5233 2002-02-03 Fernando Perez <fperez@colorado.edu>
5225
5234
5226 * IPython/iplib.py (install_first_time): Added comment on how to
5235 * IPython/iplib.py (install_first_time): Added comment on how to
5227 configure the color options for first-time users. Put a <return>
5236 configure the color options for first-time users. Put a <return>
5228 request at the end so that small-terminal users get a chance to
5237 request at the end so that small-terminal users get a chance to
5229 read the startup info.
5238 read the startup info.
5230
5239
5231 2002-01-23 Fernando Perez <fperez@colorado.edu>
5240 2002-01-23 Fernando Perez <fperez@colorado.edu>
5232
5241
5233 * IPython/iplib.py (CachedOutput.update): Changed output memory
5242 * IPython/iplib.py (CachedOutput.update): Changed output memory
5234 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5243 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5235 input history we still use _i. Did this b/c these variable are
5244 input history we still use _i. Did this b/c these variable are
5236 very commonly used in interactive work, so the less we need to
5245 very commonly used in interactive work, so the less we need to
5237 type the better off we are.
5246 type the better off we are.
5238 (Magic.magic_prun): updated @prun to better handle the namespaces
5247 (Magic.magic_prun): updated @prun to better handle the namespaces
5239 the file will run in, including a fix for __name__ not being set
5248 the file will run in, including a fix for __name__ not being set
5240 before.
5249 before.
5241
5250
5242 2002-01-20 Fernando Perez <fperez@colorado.edu>
5251 2002-01-20 Fernando Perez <fperez@colorado.edu>
5243
5252
5244 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5253 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5245 extra garbage for Python 2.2. Need to look more carefully into
5254 extra garbage for Python 2.2. Need to look more carefully into
5246 this later.
5255 this later.
5247
5256
5248 2002-01-19 Fernando Perez <fperez@colorado.edu>
5257 2002-01-19 Fernando Perez <fperez@colorado.edu>
5249
5258
5250 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5259 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5251 display SyntaxError exceptions properly formatted when they occur
5260 display SyntaxError exceptions properly formatted when they occur
5252 (they can be triggered by imported code).
5261 (they can be triggered by imported code).
5253
5262
5254 2002-01-18 Fernando Perez <fperez@colorado.edu>
5263 2002-01-18 Fernando Perez <fperez@colorado.edu>
5255
5264
5256 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5265 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5257 SyntaxError exceptions are reported nicely formatted, instead of
5266 SyntaxError exceptions are reported nicely formatted, instead of
5258 spitting out only offset information as before.
5267 spitting out only offset information as before.
5259 (Magic.magic_prun): Added the @prun function for executing
5268 (Magic.magic_prun): Added the @prun function for executing
5260 programs with command line args inside IPython.
5269 programs with command line args inside IPython.
5261
5270
5262 2002-01-16 Fernando Perez <fperez@colorado.edu>
5271 2002-01-16 Fernando Perez <fperez@colorado.edu>
5263
5272
5264 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5273 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5265 to *not* include the last item given in a range. This brings their
5274 to *not* include the last item given in a range. This brings their
5266 behavior in line with Python's slicing:
5275 behavior in line with Python's slicing:
5267 a[n1:n2] -> a[n1]...a[n2-1]
5276 a[n1:n2] -> a[n1]...a[n2-1]
5268 It may be a bit less convenient, but I prefer to stick to Python's
5277 It may be a bit less convenient, but I prefer to stick to Python's
5269 conventions *everywhere*, so users never have to wonder.
5278 conventions *everywhere*, so users never have to wonder.
5270 (Magic.magic_macro): Added @macro function to ease the creation of
5279 (Magic.magic_macro): Added @macro function to ease the creation of
5271 macros.
5280 macros.
5272
5281
5273 2002-01-05 Fernando Perez <fperez@colorado.edu>
5282 2002-01-05 Fernando Perez <fperez@colorado.edu>
5274
5283
5275 * Released 0.2.4.
5284 * Released 0.2.4.
5276
5285
5277 * IPython/iplib.py (Magic.magic_pdef):
5286 * IPython/iplib.py (Magic.magic_pdef):
5278 (InteractiveShell.safe_execfile): report magic lines and error
5287 (InteractiveShell.safe_execfile): report magic lines and error
5279 lines without line numbers so one can easily copy/paste them for
5288 lines without line numbers so one can easily copy/paste them for
5280 re-execution.
5289 re-execution.
5281
5290
5282 * Updated manual with recent changes.
5291 * Updated manual with recent changes.
5283
5292
5284 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5293 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5285 docstring printing when class? is called. Very handy for knowing
5294 docstring printing when class? is called. Very handy for knowing
5286 how to create class instances (as long as __init__ is well
5295 how to create class instances (as long as __init__ is well
5287 documented, of course :)
5296 documented, of course :)
5288 (Magic.magic_doc): print both class and constructor docstrings.
5297 (Magic.magic_doc): print both class and constructor docstrings.
5289 (Magic.magic_pdef): give constructor info if passed a class and
5298 (Magic.magic_pdef): give constructor info if passed a class and
5290 __call__ info for callable object instances.
5299 __call__ info for callable object instances.
5291
5300
5292 2002-01-04 Fernando Perez <fperez@colorado.edu>
5301 2002-01-04 Fernando Perez <fperez@colorado.edu>
5293
5302
5294 * Made deep_reload() off by default. It doesn't always work
5303 * Made deep_reload() off by default. It doesn't always work
5295 exactly as intended, so it's probably safer to have it off. It's
5304 exactly as intended, so it's probably safer to have it off. It's
5296 still available as dreload() anyway, so nothing is lost.
5305 still available as dreload() anyway, so nothing is lost.
5297
5306
5298 2002-01-02 Fernando Perez <fperez@colorado.edu>
5307 2002-01-02 Fernando Perez <fperez@colorado.edu>
5299
5308
5300 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5309 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5301 so I wanted an updated release).
5310 so I wanted an updated release).
5302
5311
5303 2001-12-27 Fernando Perez <fperez@colorado.edu>
5312 2001-12-27 Fernando Perez <fperez@colorado.edu>
5304
5313
5305 * IPython/iplib.py (InteractiveShell.interact): Added the original
5314 * IPython/iplib.py (InteractiveShell.interact): Added the original
5306 code from 'code.py' for this module in order to change the
5315 code from 'code.py' for this module in order to change the
5307 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5316 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5308 the history cache would break when the user hit Ctrl-C, and
5317 the history cache would break when the user hit Ctrl-C, and
5309 interact() offers no way to add any hooks to it.
5318 interact() offers no way to add any hooks to it.
5310
5319
5311 2001-12-23 Fernando Perez <fperez@colorado.edu>
5320 2001-12-23 Fernando Perez <fperez@colorado.edu>
5312
5321
5313 * setup.py: added check for 'MANIFEST' before trying to remove
5322 * setup.py: added check for 'MANIFEST' before trying to remove
5314 it. Thanks to Sean Reifschneider.
5323 it. Thanks to Sean Reifschneider.
5315
5324
5316 2001-12-22 Fernando Perez <fperez@colorado.edu>
5325 2001-12-22 Fernando Perez <fperez@colorado.edu>
5317
5326
5318 * Released 0.2.2.
5327 * Released 0.2.2.
5319
5328
5320 * Finished (reasonably) writing the manual. Later will add the
5329 * Finished (reasonably) writing the manual. Later will add the
5321 python-standard navigation stylesheets, but for the time being
5330 python-standard navigation stylesheets, but for the time being
5322 it's fairly complete. Distribution will include html and pdf
5331 it's fairly complete. Distribution will include html and pdf
5323 versions.
5332 versions.
5324
5333
5325 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5334 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5326 (MayaVi author).
5335 (MayaVi author).
5327
5336
5328 2001-12-21 Fernando Perez <fperez@colorado.edu>
5337 2001-12-21 Fernando Perez <fperez@colorado.edu>
5329
5338
5330 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5339 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5331 good public release, I think (with the manual and the distutils
5340 good public release, I think (with the manual and the distutils
5332 installer). The manual can use some work, but that can go
5341 installer). The manual can use some work, but that can go
5333 slowly. Otherwise I think it's quite nice for end users. Next
5342 slowly. Otherwise I think it's quite nice for end users. Next
5334 summer, rewrite the guts of it...
5343 summer, rewrite the guts of it...
5335
5344
5336 * Changed format of ipythonrc files to use whitespace as the
5345 * Changed format of ipythonrc files to use whitespace as the
5337 separator instead of an explicit '='. Cleaner.
5346 separator instead of an explicit '='. Cleaner.
5338
5347
5339 2001-12-20 Fernando Perez <fperez@colorado.edu>
5348 2001-12-20 Fernando Perez <fperez@colorado.edu>
5340
5349
5341 * Started a manual in LyX. For now it's just a quick merge of the
5350 * Started a manual in LyX. For now it's just a quick merge of the
5342 various internal docstrings and READMEs. Later it may grow into a
5351 various internal docstrings and READMEs. Later it may grow into a
5343 nice, full-blown manual.
5352 nice, full-blown manual.
5344
5353
5345 * Set up a distutils based installer. Installation should now be
5354 * Set up a distutils based installer. Installation should now be
5346 trivially simple for end-users.
5355 trivially simple for end-users.
5347
5356
5348 2001-12-11 Fernando Perez <fperez@colorado.edu>
5357 2001-12-11 Fernando Perez <fperez@colorado.edu>
5349
5358
5350 * Released 0.2.0. First public release, announced it at
5359 * Released 0.2.0. First public release, announced it at
5351 comp.lang.python. From now on, just bugfixes...
5360 comp.lang.python. From now on, just bugfixes...
5352
5361
5353 * Went through all the files, set copyright/license notices and
5362 * Went through all the files, set copyright/license notices and
5354 cleaned up things. Ready for release.
5363 cleaned up things. Ready for release.
5355
5364
5356 2001-12-10 Fernando Perez <fperez@colorado.edu>
5365 2001-12-10 Fernando Perez <fperez@colorado.edu>
5357
5366
5358 * Changed the first-time installer not to use tarfiles. It's more
5367 * Changed the first-time installer not to use tarfiles. It's more
5359 robust now and less unix-dependent. Also makes it easier for
5368 robust now and less unix-dependent. Also makes it easier for
5360 people to later upgrade versions.
5369 people to later upgrade versions.
5361
5370
5362 * Changed @exit to @abort to reflect the fact that it's pretty
5371 * Changed @exit to @abort to reflect the fact that it's pretty
5363 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5372 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5364 becomes significant only when IPyhton is embedded: in that case,
5373 becomes significant only when IPyhton is embedded: in that case,
5365 C-D closes IPython only, but @abort kills the enclosing program
5374 C-D closes IPython only, but @abort kills the enclosing program
5366 too (unless it had called IPython inside a try catching
5375 too (unless it had called IPython inside a try catching
5367 SystemExit).
5376 SystemExit).
5368
5377
5369 * Created Shell module which exposes the actuall IPython Shell
5378 * Created Shell module which exposes the actuall IPython Shell
5370 classes, currently the normal and the embeddable one. This at
5379 classes, currently the normal and the embeddable one. This at
5371 least offers a stable interface we won't need to change when
5380 least offers a stable interface we won't need to change when
5372 (later) the internals are rewritten. That rewrite will be confined
5381 (later) the internals are rewritten. That rewrite will be confined
5373 to iplib and ipmaker, but the Shell interface should remain as is.
5382 to iplib and ipmaker, but the Shell interface should remain as is.
5374
5383
5375 * Added embed module which offers an embeddable IPShell object,
5384 * Added embed module which offers an embeddable IPShell object,
5376 useful to fire up IPython *inside* a running program. Great for
5385 useful to fire up IPython *inside* a running program. Great for
5377 debugging or dynamical data analysis.
5386 debugging or dynamical data analysis.
5378
5387
5379 2001-12-08 Fernando Perez <fperez@colorado.edu>
5388 2001-12-08 Fernando Perez <fperez@colorado.edu>
5380
5389
5381 * Fixed small bug preventing seeing info from methods of defined
5390 * Fixed small bug preventing seeing info from methods of defined
5382 objects (incorrect namespace in _ofind()).
5391 objects (incorrect namespace in _ofind()).
5383
5392
5384 * Documentation cleanup. Moved the main usage docstrings to a
5393 * Documentation cleanup. Moved the main usage docstrings to a
5385 separate file, usage.py (cleaner to maintain, and hopefully in the
5394 separate file, usage.py (cleaner to maintain, and hopefully in the
5386 future some perlpod-like way of producing interactive, man and
5395 future some perlpod-like way of producing interactive, man and
5387 html docs out of it will be found).
5396 html docs out of it will be found).
5388
5397
5389 * Added @profile to see your profile at any time.
5398 * Added @profile to see your profile at any time.
5390
5399
5391 * Added @p as an alias for 'print'. It's especially convenient if
5400 * Added @p as an alias for 'print'. It's especially convenient if
5392 using automagic ('p x' prints x).
5401 using automagic ('p x' prints x).
5393
5402
5394 * Small cleanups and fixes after a pychecker run.
5403 * Small cleanups and fixes after a pychecker run.
5395
5404
5396 * Changed the @cd command to handle @cd - and @cd -<n> for
5405 * Changed the @cd command to handle @cd - and @cd -<n> for
5397 visiting any directory in _dh.
5406 visiting any directory in _dh.
5398
5407
5399 * Introduced _dh, a history of visited directories. @dhist prints
5408 * Introduced _dh, a history of visited directories. @dhist prints
5400 it out with numbers.
5409 it out with numbers.
5401
5410
5402 2001-12-07 Fernando Perez <fperez@colorado.edu>
5411 2001-12-07 Fernando Perez <fperez@colorado.edu>
5403
5412
5404 * Released 0.1.22
5413 * Released 0.1.22
5405
5414
5406 * Made initialization a bit more robust against invalid color
5415 * Made initialization a bit more robust against invalid color
5407 options in user input (exit, not traceback-crash).
5416 options in user input (exit, not traceback-crash).
5408
5417
5409 * Changed the bug crash reporter to write the report only in the
5418 * Changed the bug crash reporter to write the report only in the
5410 user's .ipython directory. That way IPython won't litter people's
5419 user's .ipython directory. That way IPython won't litter people's
5411 hard disks with crash files all over the place. Also print on
5420 hard disks with crash files all over the place. Also print on
5412 screen the necessary mail command.
5421 screen the necessary mail command.
5413
5422
5414 * With the new ultraTB, implemented LightBG color scheme for light
5423 * With the new ultraTB, implemented LightBG color scheme for light
5415 background terminals. A lot of people like white backgrounds, so I
5424 background terminals. A lot of people like white backgrounds, so I
5416 guess we should at least give them something readable.
5425 guess we should at least give them something readable.
5417
5426
5418 2001-12-06 Fernando Perez <fperez@colorado.edu>
5427 2001-12-06 Fernando Perez <fperez@colorado.edu>
5419
5428
5420 * Modified the structure of ultraTB. Now there's a proper class
5429 * Modified the structure of ultraTB. Now there's a proper class
5421 for tables of color schemes which allow adding schemes easily and
5430 for tables of color schemes which allow adding schemes easily and
5422 switching the active scheme without creating a new instance every
5431 switching the active scheme without creating a new instance every
5423 time (which was ridiculous). The syntax for creating new schemes
5432 time (which was ridiculous). The syntax for creating new schemes
5424 is also cleaner. I think ultraTB is finally done, with a clean
5433 is also cleaner. I think ultraTB is finally done, with a clean
5425 class structure. Names are also much cleaner (now there's proper
5434 class structure. Names are also much cleaner (now there's proper
5426 color tables, no need for every variable to also have 'color' in
5435 color tables, no need for every variable to also have 'color' in
5427 its name).
5436 its name).
5428
5437
5429 * Broke down genutils into separate files. Now genutils only
5438 * Broke down genutils into separate files. Now genutils only
5430 contains utility functions, and classes have been moved to their
5439 contains utility functions, and classes have been moved to their
5431 own files (they had enough independent functionality to warrant
5440 own files (they had enough independent functionality to warrant
5432 it): ConfigLoader, OutputTrap, Struct.
5441 it): ConfigLoader, OutputTrap, Struct.
5433
5442
5434 2001-12-05 Fernando Perez <fperez@colorado.edu>
5443 2001-12-05 Fernando Perez <fperez@colorado.edu>
5435
5444
5436 * IPython turns 21! Released version 0.1.21, as a candidate for
5445 * IPython turns 21! Released version 0.1.21, as a candidate for
5437 public consumption. If all goes well, release in a few days.
5446 public consumption. If all goes well, release in a few days.
5438
5447
5439 * Fixed path bug (files in Extensions/ directory wouldn't be found
5448 * Fixed path bug (files in Extensions/ directory wouldn't be found
5440 unless IPython/ was explicitly in sys.path).
5449 unless IPython/ was explicitly in sys.path).
5441
5450
5442 * Extended the FlexCompleter class as MagicCompleter to allow
5451 * Extended the FlexCompleter class as MagicCompleter to allow
5443 completion of @-starting lines.
5452 completion of @-starting lines.
5444
5453
5445 * Created __release__.py file as a central repository for release
5454 * Created __release__.py file as a central repository for release
5446 info that other files can read from.
5455 info that other files can read from.
5447
5456
5448 * Fixed small bug in logging: when logging was turned on in
5457 * Fixed small bug in logging: when logging was turned on in
5449 mid-session, old lines with special meanings (!@?) were being
5458 mid-session, old lines with special meanings (!@?) were being
5450 logged without the prepended comment, which is necessary since
5459 logged without the prepended comment, which is necessary since
5451 they are not truly valid python syntax. This should make session
5460 they are not truly valid python syntax. This should make session
5452 restores produce less errors.
5461 restores produce less errors.
5453
5462
5454 * The namespace cleanup forced me to make a FlexCompleter class
5463 * The namespace cleanup forced me to make a FlexCompleter class
5455 which is nothing but a ripoff of rlcompleter, but with selectable
5464 which is nothing but a ripoff of rlcompleter, but with selectable
5456 namespace (rlcompleter only works in __main__.__dict__). I'll try
5465 namespace (rlcompleter only works in __main__.__dict__). I'll try
5457 to submit a note to the authors to see if this change can be
5466 to submit a note to the authors to see if this change can be
5458 incorporated in future rlcompleter releases (Dec.6: done)
5467 incorporated in future rlcompleter releases (Dec.6: done)
5459
5468
5460 * More fixes to namespace handling. It was a mess! Now all
5469 * More fixes to namespace handling. It was a mess! Now all
5461 explicit references to __main__.__dict__ are gone (except when
5470 explicit references to __main__.__dict__ are gone (except when
5462 really needed) and everything is handled through the namespace
5471 really needed) and everything is handled through the namespace
5463 dicts in the IPython instance. We seem to be getting somewhere
5472 dicts in the IPython instance. We seem to be getting somewhere
5464 with this, finally...
5473 with this, finally...
5465
5474
5466 * Small documentation updates.
5475 * Small documentation updates.
5467
5476
5468 * Created the Extensions directory under IPython (with an
5477 * Created the Extensions directory under IPython (with an
5469 __init__.py). Put the PhysicalQ stuff there. This directory should
5478 __init__.py). Put the PhysicalQ stuff there. This directory should
5470 be used for all special-purpose extensions.
5479 be used for all special-purpose extensions.
5471
5480
5472 * File renaming:
5481 * File renaming:
5473 ipythonlib --> ipmaker
5482 ipythonlib --> ipmaker
5474 ipplib --> iplib
5483 ipplib --> iplib
5475 This makes a bit more sense in terms of what these files actually do.
5484 This makes a bit more sense in terms of what these files actually do.
5476
5485
5477 * Moved all the classes and functions in ipythonlib to ipplib, so
5486 * Moved all the classes and functions in ipythonlib to ipplib, so
5478 now ipythonlib only has make_IPython(). This will ease up its
5487 now ipythonlib only has make_IPython(). This will ease up its
5479 splitting in smaller functional chunks later.
5488 splitting in smaller functional chunks later.
5480
5489
5481 * Cleaned up (done, I think) output of @whos. Better column
5490 * Cleaned up (done, I think) output of @whos. Better column
5482 formatting, and now shows str(var) for as much as it can, which is
5491 formatting, and now shows str(var) for as much as it can, which is
5483 typically what one gets with a 'print var'.
5492 typically what one gets with a 'print var'.
5484
5493
5485 2001-12-04 Fernando Perez <fperez@colorado.edu>
5494 2001-12-04 Fernando Perez <fperez@colorado.edu>
5486
5495
5487 * Fixed namespace problems. Now builtin/IPyhton/user names get
5496 * Fixed namespace problems. Now builtin/IPyhton/user names get
5488 properly reported in their namespace. Internal namespace handling
5497 properly reported in their namespace. Internal namespace handling
5489 is finally getting decent (not perfect yet, but much better than
5498 is finally getting decent (not perfect yet, but much better than
5490 the ad-hoc mess we had).
5499 the ad-hoc mess we had).
5491
5500
5492 * Removed -exit option. If people just want to run a python
5501 * Removed -exit option. If people just want to run a python
5493 script, that's what the normal interpreter is for. Less
5502 script, that's what the normal interpreter is for. Less
5494 unnecessary options, less chances for bugs.
5503 unnecessary options, less chances for bugs.
5495
5504
5496 * Added a crash handler which generates a complete post-mortem if
5505 * Added a crash handler which generates a complete post-mortem if
5497 IPython crashes. This will help a lot in tracking bugs down the
5506 IPython crashes. This will help a lot in tracking bugs down the
5498 road.
5507 road.
5499
5508
5500 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5509 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5501 which were boud to functions being reassigned would bypass the
5510 which were boud to functions being reassigned would bypass the
5502 logger, breaking the sync of _il with the prompt counter. This
5511 logger, breaking the sync of _il with the prompt counter. This
5503 would then crash IPython later when a new line was logged.
5512 would then crash IPython later when a new line was logged.
5504
5513
5505 2001-12-02 Fernando Perez <fperez@colorado.edu>
5514 2001-12-02 Fernando Perez <fperez@colorado.edu>
5506
5515
5507 * Made IPython a package. This means people don't have to clutter
5516 * Made IPython a package. This means people don't have to clutter
5508 their sys.path with yet another directory. Changed the INSTALL
5517 their sys.path with yet another directory. Changed the INSTALL
5509 file accordingly.
5518 file accordingly.
5510
5519
5511 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5520 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5512 sorts its output (so @who shows it sorted) and @whos formats the
5521 sorts its output (so @who shows it sorted) and @whos formats the
5513 table according to the width of the first column. Nicer, easier to
5522 table according to the width of the first column. Nicer, easier to
5514 read. Todo: write a generic table_format() which takes a list of
5523 read. Todo: write a generic table_format() which takes a list of
5515 lists and prints it nicely formatted, with optional row/column
5524 lists and prints it nicely formatted, with optional row/column
5516 separators and proper padding and justification.
5525 separators and proper padding and justification.
5517
5526
5518 * Released 0.1.20
5527 * Released 0.1.20
5519
5528
5520 * Fixed bug in @log which would reverse the inputcache list (a
5529 * Fixed bug in @log which would reverse the inputcache list (a
5521 copy operation was missing).
5530 copy operation was missing).
5522
5531
5523 * Code cleanup. @config was changed to use page(). Better, since
5532 * Code cleanup. @config was changed to use page(). Better, since
5524 its output is always quite long.
5533 its output is always quite long.
5525
5534
5526 * Itpl is back as a dependency. I was having too many problems
5535 * Itpl is back as a dependency. I was having too many problems
5527 getting the parametric aliases to work reliably, and it's just
5536 getting the parametric aliases to work reliably, and it's just
5528 easier to code weird string operations with it than playing %()s
5537 easier to code weird string operations with it than playing %()s
5529 games. It's only ~6k, so I don't think it's too big a deal.
5538 games. It's only ~6k, so I don't think it's too big a deal.
5530
5539
5531 * Found (and fixed) a very nasty bug with history. !lines weren't
5540 * Found (and fixed) a very nasty bug with history. !lines weren't
5532 getting cached, and the out of sync caches would crash
5541 getting cached, and the out of sync caches would crash
5533 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5542 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5534 division of labor a bit better. Bug fixed, cleaner structure.
5543 division of labor a bit better. Bug fixed, cleaner structure.
5535
5544
5536 2001-12-01 Fernando Perez <fperez@colorado.edu>
5545 2001-12-01 Fernando Perez <fperez@colorado.edu>
5537
5546
5538 * Released 0.1.19
5547 * Released 0.1.19
5539
5548
5540 * Added option -n to @hist to prevent line number printing. Much
5549 * Added option -n to @hist to prevent line number printing. Much
5541 easier to copy/paste code this way.
5550 easier to copy/paste code this way.
5542
5551
5543 * Created global _il to hold the input list. Allows easy
5552 * Created global _il to hold the input list. Allows easy
5544 re-execution of blocks of code by slicing it (inspired by Janko's
5553 re-execution of blocks of code by slicing it (inspired by Janko's
5545 comment on 'macros').
5554 comment on 'macros').
5546
5555
5547 * Small fixes and doc updates.
5556 * Small fixes and doc updates.
5548
5557
5549 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5558 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5550 much too fragile with automagic. Handles properly multi-line
5559 much too fragile with automagic. Handles properly multi-line
5551 statements and takes parameters.
5560 statements and takes parameters.
5552
5561
5553 2001-11-30 Fernando Perez <fperez@colorado.edu>
5562 2001-11-30 Fernando Perez <fperez@colorado.edu>
5554
5563
5555 * Version 0.1.18 released.
5564 * Version 0.1.18 released.
5556
5565
5557 * Fixed nasty namespace bug in initial module imports.
5566 * Fixed nasty namespace bug in initial module imports.
5558
5567
5559 * Added copyright/license notes to all code files (except
5568 * Added copyright/license notes to all code files (except
5560 DPyGetOpt). For the time being, LGPL. That could change.
5569 DPyGetOpt). For the time being, LGPL. That could change.
5561
5570
5562 * Rewrote a much nicer README, updated INSTALL, cleaned up
5571 * Rewrote a much nicer README, updated INSTALL, cleaned up
5563 ipythonrc-* samples.
5572 ipythonrc-* samples.
5564
5573
5565 * Overall code/documentation cleanup. Basically ready for
5574 * Overall code/documentation cleanup. Basically ready for
5566 release. Only remaining thing: licence decision (LGPL?).
5575 release. Only remaining thing: licence decision (LGPL?).
5567
5576
5568 * Converted load_config to a class, ConfigLoader. Now recursion
5577 * Converted load_config to a class, ConfigLoader. Now recursion
5569 control is better organized. Doesn't include the same file twice.
5578 control is better organized. Doesn't include the same file twice.
5570
5579
5571 2001-11-29 Fernando Perez <fperez@colorado.edu>
5580 2001-11-29 Fernando Perez <fperez@colorado.edu>
5572
5581
5573 * Got input history working. Changed output history variables from
5582 * Got input history working. Changed output history variables from
5574 _p to _o so that _i is for input and _o for output. Just cleaner
5583 _p to _o so that _i is for input and _o for output. Just cleaner
5575 convention.
5584 convention.
5576
5585
5577 * Implemented parametric aliases. This pretty much allows the
5586 * Implemented parametric aliases. This pretty much allows the
5578 alias system to offer full-blown shell convenience, I think.
5587 alias system to offer full-blown shell convenience, I think.
5579
5588
5580 * Version 0.1.17 released, 0.1.18 opened.
5589 * Version 0.1.17 released, 0.1.18 opened.
5581
5590
5582 * dot_ipython/ipythonrc (alias): added documentation.
5591 * dot_ipython/ipythonrc (alias): added documentation.
5583 (xcolor): Fixed small bug (xcolors -> xcolor)
5592 (xcolor): Fixed small bug (xcolors -> xcolor)
5584
5593
5585 * Changed the alias system. Now alias is a magic command to define
5594 * Changed the alias system. Now alias is a magic command to define
5586 aliases just like the shell. Rationale: the builtin magics should
5595 aliases just like the shell. Rationale: the builtin magics should
5587 be there for things deeply connected to IPython's
5596 be there for things deeply connected to IPython's
5588 architecture. And this is a much lighter system for what I think
5597 architecture. And this is a much lighter system for what I think
5589 is the really important feature: allowing users to define quickly
5598 is the really important feature: allowing users to define quickly
5590 magics that will do shell things for them, so they can customize
5599 magics that will do shell things for them, so they can customize
5591 IPython easily to match their work habits. If someone is really
5600 IPython easily to match their work habits. If someone is really
5592 desperate to have another name for a builtin alias, they can
5601 desperate to have another name for a builtin alias, they can
5593 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5602 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5594 works.
5603 works.
5595
5604
5596 2001-11-28 Fernando Perez <fperez@colorado.edu>
5605 2001-11-28 Fernando Perez <fperez@colorado.edu>
5597
5606
5598 * Changed @file so that it opens the source file at the proper
5607 * Changed @file so that it opens the source file at the proper
5599 line. Since it uses less, if your EDITOR environment is
5608 line. Since it uses less, if your EDITOR environment is
5600 configured, typing v will immediately open your editor of choice
5609 configured, typing v will immediately open your editor of choice
5601 right at the line where the object is defined. Not as quick as
5610 right at the line where the object is defined. Not as quick as
5602 having a direct @edit command, but for all intents and purposes it
5611 having a direct @edit command, but for all intents and purposes it
5603 works. And I don't have to worry about writing @edit to deal with
5612 works. And I don't have to worry about writing @edit to deal with
5604 all the editors, less does that.
5613 all the editors, less does that.
5605
5614
5606 * Version 0.1.16 released, 0.1.17 opened.
5615 * Version 0.1.16 released, 0.1.17 opened.
5607
5616
5608 * Fixed some nasty bugs in the page/page_dumb combo that could
5617 * Fixed some nasty bugs in the page/page_dumb combo that could
5609 crash IPython.
5618 crash IPython.
5610
5619
5611 2001-11-27 Fernando Perez <fperez@colorado.edu>
5620 2001-11-27 Fernando Perez <fperez@colorado.edu>
5612
5621
5613 * Version 0.1.15 released, 0.1.16 opened.
5622 * Version 0.1.15 released, 0.1.16 opened.
5614
5623
5615 * Finally got ? and ?? to work for undefined things: now it's
5624 * Finally got ? and ?? to work for undefined things: now it's
5616 possible to type {}.get? and get information about the get method
5625 possible to type {}.get? and get information about the get method
5617 of dicts, or os.path? even if only os is defined (so technically
5626 of dicts, or os.path? even if only os is defined (so technically
5618 os.path isn't). Works at any level. For example, after import os,
5627 os.path isn't). Works at any level. For example, after import os,
5619 os?, os.path?, os.path.abspath? all work. This is great, took some
5628 os?, os.path?, os.path.abspath? all work. This is great, took some
5620 work in _ofind.
5629 work in _ofind.
5621
5630
5622 * Fixed more bugs with logging. The sanest way to do it was to add
5631 * Fixed more bugs with logging. The sanest way to do it was to add
5623 to @log a 'mode' parameter. Killed two in one shot (this mode
5632 to @log a 'mode' parameter. Killed two in one shot (this mode
5624 option was a request of Janko's). I think it's finally clean
5633 option was a request of Janko's). I think it's finally clean
5625 (famous last words).
5634 (famous last words).
5626
5635
5627 * Added a page_dumb() pager which does a decent job of paging on
5636 * Added a page_dumb() pager which does a decent job of paging on
5628 screen, if better things (like less) aren't available. One less
5637 screen, if better things (like less) aren't available. One less
5629 unix dependency (someday maybe somebody will port this to
5638 unix dependency (someday maybe somebody will port this to
5630 windows).
5639 windows).
5631
5640
5632 * Fixed problem in magic_log: would lock of logging out if log
5641 * Fixed problem in magic_log: would lock of logging out if log
5633 creation failed (because it would still think it had succeeded).
5642 creation failed (because it would still think it had succeeded).
5634
5643
5635 * Improved the page() function using curses to auto-detect screen
5644 * Improved the page() function using curses to auto-detect screen
5636 size. Now it can make a much better decision on whether to print
5645 size. Now it can make a much better decision on whether to print
5637 or page a string. Option screen_length was modified: a value 0
5646 or page a string. Option screen_length was modified: a value 0
5638 means auto-detect, and that's the default now.
5647 means auto-detect, and that's the default now.
5639
5648
5640 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5649 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5641 go out. I'll test it for a few days, then talk to Janko about
5650 go out. I'll test it for a few days, then talk to Janko about
5642 licences and announce it.
5651 licences and announce it.
5643
5652
5644 * Fixed the length of the auto-generated ---> prompt which appears
5653 * Fixed the length of the auto-generated ---> prompt which appears
5645 for auto-parens and auto-quotes. Getting this right isn't trivial,
5654 for auto-parens and auto-quotes. Getting this right isn't trivial,
5646 with all the color escapes, different prompt types and optional
5655 with all the color escapes, different prompt types and optional
5647 separators. But it seems to be working in all the combinations.
5656 separators. But it seems to be working in all the combinations.
5648
5657
5649 2001-11-26 Fernando Perez <fperez@colorado.edu>
5658 2001-11-26 Fernando Perez <fperez@colorado.edu>
5650
5659
5651 * Wrote a regexp filter to get option types from the option names
5660 * Wrote a regexp filter to get option types from the option names
5652 string. This eliminates the need to manually keep two duplicate
5661 string. This eliminates the need to manually keep two duplicate
5653 lists.
5662 lists.
5654
5663
5655 * Removed the unneeded check_option_names. Now options are handled
5664 * Removed the unneeded check_option_names. Now options are handled
5656 in a much saner manner and it's easy to visually check that things
5665 in a much saner manner and it's easy to visually check that things
5657 are ok.
5666 are ok.
5658
5667
5659 * Updated version numbers on all files I modified to carry a
5668 * Updated version numbers on all files I modified to carry a
5660 notice so Janko and Nathan have clear version markers.
5669 notice so Janko and Nathan have clear version markers.
5661
5670
5662 * Updated docstring for ultraTB with my changes. I should send
5671 * Updated docstring for ultraTB with my changes. I should send
5663 this to Nathan.
5672 this to Nathan.
5664
5673
5665 * Lots of small fixes. Ran everything through pychecker again.
5674 * Lots of small fixes. Ran everything through pychecker again.
5666
5675
5667 * Made loading of deep_reload an cmd line option. If it's not too
5676 * Made loading of deep_reload an cmd line option. If it's not too
5668 kosher, now people can just disable it. With -nodeep_reload it's
5677 kosher, now people can just disable it. With -nodeep_reload it's
5669 still available as dreload(), it just won't overwrite reload().
5678 still available as dreload(), it just won't overwrite reload().
5670
5679
5671 * Moved many options to the no| form (-opt and -noopt
5680 * Moved many options to the no| form (-opt and -noopt
5672 accepted). Cleaner.
5681 accepted). Cleaner.
5673
5682
5674 * Changed magic_log so that if called with no parameters, it uses
5683 * Changed magic_log so that if called with no parameters, it uses
5675 'rotate' mode. That way auto-generated logs aren't automatically
5684 'rotate' mode. That way auto-generated logs aren't automatically
5676 over-written. For normal logs, now a backup is made if it exists
5685 over-written. For normal logs, now a backup is made if it exists
5677 (only 1 level of backups). A new 'backup' mode was added to the
5686 (only 1 level of backups). A new 'backup' mode was added to the
5678 Logger class to support this. This was a request by Janko.
5687 Logger class to support this. This was a request by Janko.
5679
5688
5680 * Added @logoff/@logon to stop/restart an active log.
5689 * Added @logoff/@logon to stop/restart an active log.
5681
5690
5682 * Fixed a lot of bugs in log saving/replay. It was pretty
5691 * Fixed a lot of bugs in log saving/replay. It was pretty
5683 broken. Now special lines (!@,/) appear properly in the command
5692 broken. Now special lines (!@,/) appear properly in the command
5684 history after a log replay.
5693 history after a log replay.
5685
5694
5686 * Tried and failed to implement full session saving via pickle. My
5695 * Tried and failed to implement full session saving via pickle. My
5687 idea was to pickle __main__.__dict__, but modules can't be
5696 idea was to pickle __main__.__dict__, but modules can't be
5688 pickled. This would be a better alternative to replaying logs, but
5697 pickled. This would be a better alternative to replaying logs, but
5689 seems quite tricky to get to work. Changed -session to be called
5698 seems quite tricky to get to work. Changed -session to be called
5690 -logplay, which more accurately reflects what it does. And if we
5699 -logplay, which more accurately reflects what it does. And if we
5691 ever get real session saving working, -session is now available.
5700 ever get real session saving working, -session is now available.
5692
5701
5693 * Implemented color schemes for prompts also. As for tracebacks,
5702 * Implemented color schemes for prompts also. As for tracebacks,
5694 currently only NoColor and Linux are supported. But now the
5703 currently only NoColor and Linux are supported. But now the
5695 infrastructure is in place, based on a generic ColorScheme
5704 infrastructure is in place, based on a generic ColorScheme
5696 class. So writing and activating new schemes both for the prompts
5705 class. So writing and activating new schemes both for the prompts
5697 and the tracebacks should be straightforward.
5706 and the tracebacks should be straightforward.
5698
5707
5699 * Version 0.1.13 released, 0.1.14 opened.
5708 * Version 0.1.13 released, 0.1.14 opened.
5700
5709
5701 * Changed handling of options for output cache. Now counter is
5710 * Changed handling of options for output cache. Now counter is
5702 hardwired starting at 1 and one specifies the maximum number of
5711 hardwired starting at 1 and one specifies the maximum number of
5703 entries *in the outcache* (not the max prompt counter). This is
5712 entries *in the outcache* (not the max prompt counter). This is
5704 much better, since many statements won't increase the cache
5713 much better, since many statements won't increase the cache
5705 count. It also eliminated some confusing options, now there's only
5714 count. It also eliminated some confusing options, now there's only
5706 one: cache_size.
5715 one: cache_size.
5707
5716
5708 * Added 'alias' magic function and magic_alias option in the
5717 * Added 'alias' magic function and magic_alias option in the
5709 ipythonrc file. Now the user can easily define whatever names he
5718 ipythonrc file. Now the user can easily define whatever names he
5710 wants for the magic functions without having to play weird
5719 wants for the magic functions without having to play weird
5711 namespace games. This gives IPython a real shell-like feel.
5720 namespace games. This gives IPython a real shell-like feel.
5712
5721
5713 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5722 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5714 @ or not).
5723 @ or not).
5715
5724
5716 This was one of the last remaining 'visible' bugs (that I know
5725 This was one of the last remaining 'visible' bugs (that I know
5717 of). I think if I can clean up the session loading so it works
5726 of). I think if I can clean up the session loading so it works
5718 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5727 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5719 about licensing).
5728 about licensing).
5720
5729
5721 2001-11-25 Fernando Perez <fperez@colorado.edu>
5730 2001-11-25 Fernando Perez <fperez@colorado.edu>
5722
5731
5723 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5732 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5724 there's a cleaner distinction between what ? and ?? show.
5733 there's a cleaner distinction between what ? and ?? show.
5725
5734
5726 * Added screen_length option. Now the user can define his own
5735 * Added screen_length option. Now the user can define his own
5727 screen size for page() operations.
5736 screen size for page() operations.
5728
5737
5729 * Implemented magic shell-like functions with automatic code
5738 * Implemented magic shell-like functions with automatic code
5730 generation. Now adding another function is just a matter of adding
5739 generation. Now adding another function is just a matter of adding
5731 an entry to a dict, and the function is dynamically generated at
5740 an entry to a dict, and the function is dynamically generated at
5732 run-time. Python has some really cool features!
5741 run-time. Python has some really cool features!
5733
5742
5734 * Renamed many options to cleanup conventions a little. Now all
5743 * Renamed many options to cleanup conventions a little. Now all
5735 are lowercase, and only underscores where needed. Also in the code
5744 are lowercase, and only underscores where needed. Also in the code
5736 option name tables are clearer.
5745 option name tables are clearer.
5737
5746
5738 * Changed prompts a little. Now input is 'In [n]:' instead of
5747 * Changed prompts a little. Now input is 'In [n]:' instead of
5739 'In[n]:='. This allows it the numbers to be aligned with the
5748 'In[n]:='. This allows it the numbers to be aligned with the
5740 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5749 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5741 Python (it was a Mathematica thing). The '...' continuation prompt
5750 Python (it was a Mathematica thing). The '...' continuation prompt
5742 was also changed a little to align better.
5751 was also changed a little to align better.
5743
5752
5744 * Fixed bug when flushing output cache. Not all _p<n> variables
5753 * Fixed bug when flushing output cache. Not all _p<n> variables
5745 exist, so their deletion needs to be wrapped in a try:
5754 exist, so their deletion needs to be wrapped in a try:
5746
5755
5747 * Figured out how to properly use inspect.formatargspec() (it
5756 * Figured out how to properly use inspect.formatargspec() (it
5748 requires the args preceded by *). So I removed all the code from
5757 requires the args preceded by *). So I removed all the code from
5749 _get_pdef in Magic, which was just replicating that.
5758 _get_pdef in Magic, which was just replicating that.
5750
5759
5751 * Added test to prefilter to allow redefining magic function names
5760 * Added test to prefilter to allow redefining magic function names
5752 as variables. This is ok, since the @ form is always available,
5761 as variables. This is ok, since the @ form is always available,
5753 but whe should allow the user to define a variable called 'ls' if
5762 but whe should allow the user to define a variable called 'ls' if
5754 he needs it.
5763 he needs it.
5755
5764
5756 * Moved the ToDo information from README into a separate ToDo.
5765 * Moved the ToDo information from README into a separate ToDo.
5757
5766
5758 * General code cleanup and small bugfixes. I think it's close to a
5767 * General code cleanup and small bugfixes. I think it's close to a
5759 state where it can be released, obviously with a big 'beta'
5768 state where it can be released, obviously with a big 'beta'
5760 warning on it.
5769 warning on it.
5761
5770
5762 * Got the magic function split to work. Now all magics are defined
5771 * Got the magic function split to work. Now all magics are defined
5763 in a separate class. It just organizes things a bit, and now
5772 in a separate class. It just organizes things a bit, and now
5764 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5773 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5765 was too long).
5774 was too long).
5766
5775
5767 * Changed @clear to @reset to avoid potential confusions with
5776 * Changed @clear to @reset to avoid potential confusions with
5768 the shell command clear. Also renamed @cl to @clear, which does
5777 the shell command clear. Also renamed @cl to @clear, which does
5769 exactly what people expect it to from their shell experience.
5778 exactly what people expect it to from their shell experience.
5770
5779
5771 Added a check to the @reset command (since it's so
5780 Added a check to the @reset command (since it's so
5772 destructive, it's probably a good idea to ask for confirmation).
5781 destructive, it's probably a good idea to ask for confirmation).
5773 But now reset only works for full namespace resetting. Since the
5782 But now reset only works for full namespace resetting. Since the
5774 del keyword is already there for deleting a few specific
5783 del keyword is already there for deleting a few specific
5775 variables, I don't see the point of having a redundant magic
5784 variables, I don't see the point of having a redundant magic
5776 function for the same task.
5785 function for the same task.
5777
5786
5778 2001-11-24 Fernando Perez <fperez@colorado.edu>
5787 2001-11-24 Fernando Perez <fperez@colorado.edu>
5779
5788
5780 * Updated the builtin docs (esp. the ? ones).
5789 * Updated the builtin docs (esp. the ? ones).
5781
5790
5782 * Ran all the code through pychecker. Not terribly impressed with
5791 * Ran all the code through pychecker. Not terribly impressed with
5783 it: lots of spurious warnings and didn't really find anything of
5792 it: lots of spurious warnings and didn't really find anything of
5784 substance (just a few modules being imported and not used).
5793 substance (just a few modules being imported and not used).
5785
5794
5786 * Implemented the new ultraTB functionality into IPython. New
5795 * Implemented the new ultraTB functionality into IPython. New
5787 option: xcolors. This chooses color scheme. xmode now only selects
5796 option: xcolors. This chooses color scheme. xmode now only selects
5788 between Plain and Verbose. Better orthogonality.
5797 between Plain and Verbose. Better orthogonality.
5789
5798
5790 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5799 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5791 mode and color scheme for the exception handlers. Now it's
5800 mode and color scheme for the exception handlers. Now it's
5792 possible to have the verbose traceback with no coloring.
5801 possible to have the verbose traceback with no coloring.
5793
5802
5794 2001-11-23 Fernando Perez <fperez@colorado.edu>
5803 2001-11-23 Fernando Perez <fperez@colorado.edu>
5795
5804
5796 * Version 0.1.12 released, 0.1.13 opened.
5805 * Version 0.1.12 released, 0.1.13 opened.
5797
5806
5798 * Removed option to set auto-quote and auto-paren escapes by
5807 * Removed option to set auto-quote and auto-paren escapes by
5799 user. The chances of breaking valid syntax are just too high. If
5808 user. The chances of breaking valid syntax are just too high. If
5800 someone *really* wants, they can always dig into the code.
5809 someone *really* wants, they can always dig into the code.
5801
5810
5802 * Made prompt separators configurable.
5811 * Made prompt separators configurable.
5803
5812
5804 2001-11-22 Fernando Perez <fperez@colorado.edu>
5813 2001-11-22 Fernando Perez <fperez@colorado.edu>
5805
5814
5806 * Small bugfixes in many places.
5815 * Small bugfixes in many places.
5807
5816
5808 * Removed the MyCompleter class from ipplib. It seemed redundant
5817 * Removed the MyCompleter class from ipplib. It seemed redundant
5809 with the C-p,C-n history search functionality. Less code to
5818 with the C-p,C-n history search functionality. Less code to
5810 maintain.
5819 maintain.
5811
5820
5812 * Moved all the original ipython.py code into ipythonlib.py. Right
5821 * Moved all the original ipython.py code into ipythonlib.py. Right
5813 now it's just one big dump into a function called make_IPython, so
5822 now it's just one big dump into a function called make_IPython, so
5814 no real modularity has been gained. But at least it makes the
5823 no real modularity has been gained. But at least it makes the
5815 wrapper script tiny, and since ipythonlib is a module, it gets
5824 wrapper script tiny, and since ipythonlib is a module, it gets
5816 compiled and startup is much faster.
5825 compiled and startup is much faster.
5817
5826
5818 This is a reasobably 'deep' change, so we should test it for a
5827 This is a reasobably 'deep' change, so we should test it for a
5819 while without messing too much more with the code.
5828 while without messing too much more with the code.
5820
5829
5821 2001-11-21 Fernando Perez <fperez@colorado.edu>
5830 2001-11-21 Fernando Perez <fperez@colorado.edu>
5822
5831
5823 * Version 0.1.11 released, 0.1.12 opened for further work.
5832 * Version 0.1.11 released, 0.1.12 opened for further work.
5824
5833
5825 * Removed dependency on Itpl. It was only needed in one place. It
5834 * Removed dependency on Itpl. It was only needed in one place. It
5826 would be nice if this became part of python, though. It makes life
5835 would be nice if this became part of python, though. It makes life
5827 *a lot* easier in some cases.
5836 *a lot* easier in some cases.
5828
5837
5829 * Simplified the prefilter code a bit. Now all handlers are
5838 * Simplified the prefilter code a bit. Now all handlers are
5830 expected to explicitly return a value (at least a blank string).
5839 expected to explicitly return a value (at least a blank string).
5831
5840
5832 * Heavy edits in ipplib. Removed the help system altogether. Now
5841 * Heavy edits in ipplib. Removed the help system altogether. Now
5833 obj?/?? is used for inspecting objects, a magic @doc prints
5842 obj?/?? is used for inspecting objects, a magic @doc prints
5834 docstrings, and full-blown Python help is accessed via the 'help'
5843 docstrings, and full-blown Python help is accessed via the 'help'
5835 keyword. This cleans up a lot of code (less to maintain) and does
5844 keyword. This cleans up a lot of code (less to maintain) and does
5836 the job. Since 'help' is now a standard Python component, might as
5845 the job. Since 'help' is now a standard Python component, might as
5837 well use it and remove duplicate functionality.
5846 well use it and remove duplicate functionality.
5838
5847
5839 Also removed the option to use ipplib as a standalone program. By
5848 Also removed the option to use ipplib as a standalone program. By
5840 now it's too dependent on other parts of IPython to function alone.
5849 now it's too dependent on other parts of IPython to function alone.
5841
5850
5842 * Fixed bug in genutils.pager. It would crash if the pager was
5851 * Fixed bug in genutils.pager. It would crash if the pager was
5843 exited immediately after opening (broken pipe).
5852 exited immediately after opening (broken pipe).
5844
5853
5845 * Trimmed down the VerboseTB reporting a little. The header is
5854 * Trimmed down the VerboseTB reporting a little. The header is
5846 much shorter now and the repeated exception arguments at the end
5855 much shorter now and the repeated exception arguments at the end
5847 have been removed. For interactive use the old header seemed a bit
5856 have been removed. For interactive use the old header seemed a bit
5848 excessive.
5857 excessive.
5849
5858
5850 * Fixed small bug in output of @whos for variables with multi-word
5859 * Fixed small bug in output of @whos for variables with multi-word
5851 types (only first word was displayed).
5860 types (only first word was displayed).
5852
5861
5853 2001-11-17 Fernando Perez <fperez@colorado.edu>
5862 2001-11-17 Fernando Perez <fperez@colorado.edu>
5854
5863
5855 * Version 0.1.10 released, 0.1.11 opened for further work.
5864 * Version 0.1.10 released, 0.1.11 opened for further work.
5856
5865
5857 * Modified dirs and friends. dirs now *returns* the stack (not
5866 * Modified dirs and friends. dirs now *returns* the stack (not
5858 prints), so one can manipulate it as a variable. Convenient to
5867 prints), so one can manipulate it as a variable. Convenient to
5859 travel along many directories.
5868 travel along many directories.
5860
5869
5861 * Fixed bug in magic_pdef: would only work with functions with
5870 * Fixed bug in magic_pdef: would only work with functions with
5862 arguments with default values.
5871 arguments with default values.
5863
5872
5864 2001-11-14 Fernando Perez <fperez@colorado.edu>
5873 2001-11-14 Fernando Perez <fperez@colorado.edu>
5865
5874
5866 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5875 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5867 example with IPython. Various other minor fixes and cleanups.
5876 example with IPython. Various other minor fixes and cleanups.
5868
5877
5869 * Version 0.1.9 released, 0.1.10 opened for further work.
5878 * Version 0.1.9 released, 0.1.10 opened for further work.
5870
5879
5871 * Added sys.path to the list of directories searched in the
5880 * Added sys.path to the list of directories searched in the
5872 execfile= option. It used to be the current directory and the
5881 execfile= option. It used to be the current directory and the
5873 user's IPYTHONDIR only.
5882 user's IPYTHONDIR only.
5874
5883
5875 2001-11-13 Fernando Perez <fperez@colorado.edu>
5884 2001-11-13 Fernando Perez <fperez@colorado.edu>
5876
5885
5877 * Reinstated the raw_input/prefilter separation that Janko had
5886 * Reinstated the raw_input/prefilter separation that Janko had
5878 initially. This gives a more convenient setup for extending the
5887 initially. This gives a more convenient setup for extending the
5879 pre-processor from the outside: raw_input always gets a string,
5888 pre-processor from the outside: raw_input always gets a string,
5880 and prefilter has to process it. We can then redefine prefilter
5889 and prefilter has to process it. We can then redefine prefilter
5881 from the outside and implement extensions for special
5890 from the outside and implement extensions for special
5882 purposes.
5891 purposes.
5883
5892
5884 Today I got one for inputting PhysicalQuantity objects
5893 Today I got one for inputting PhysicalQuantity objects
5885 (from Scientific) without needing any function calls at
5894 (from Scientific) without needing any function calls at
5886 all. Extremely convenient, and it's all done as a user-level
5895 all. Extremely convenient, and it's all done as a user-level
5887 extension (no IPython code was touched). Now instead of:
5896 extension (no IPython code was touched). Now instead of:
5888 a = PhysicalQuantity(4.2,'m/s**2')
5897 a = PhysicalQuantity(4.2,'m/s**2')
5889 one can simply say
5898 one can simply say
5890 a = 4.2 m/s**2
5899 a = 4.2 m/s**2
5891 or even
5900 or even
5892 a = 4.2 m/s^2
5901 a = 4.2 m/s^2
5893
5902
5894 I use this, but it's also a proof of concept: IPython really is
5903 I use this, but it's also a proof of concept: IPython really is
5895 fully user-extensible, even at the level of the parsing of the
5904 fully user-extensible, even at the level of the parsing of the
5896 command line. It's not trivial, but it's perfectly doable.
5905 command line. It's not trivial, but it's perfectly doable.
5897
5906
5898 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5907 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5899 the problem of modules being loaded in the inverse order in which
5908 the problem of modules being loaded in the inverse order in which
5900 they were defined in
5909 they were defined in
5901
5910
5902 * Version 0.1.8 released, 0.1.9 opened for further work.
5911 * Version 0.1.8 released, 0.1.9 opened for further work.
5903
5912
5904 * Added magics pdef, source and file. They respectively show the
5913 * Added magics pdef, source and file. They respectively show the
5905 definition line ('prototype' in C), source code and full python
5914 definition line ('prototype' in C), source code and full python
5906 file for any callable object. The object inspector oinfo uses
5915 file for any callable object. The object inspector oinfo uses
5907 these to show the same information.
5916 these to show the same information.
5908
5917
5909 * Version 0.1.7 released, 0.1.8 opened for further work.
5918 * Version 0.1.7 released, 0.1.8 opened for further work.
5910
5919
5911 * Separated all the magic functions into a class called Magic. The
5920 * Separated all the magic functions into a class called Magic. The
5912 InteractiveShell class was becoming too big for Xemacs to handle
5921 InteractiveShell class was becoming too big for Xemacs to handle
5913 (de-indenting a line would lock it up for 10 seconds while it
5922 (de-indenting a line would lock it up for 10 seconds while it
5914 backtracked on the whole class!)
5923 backtracked on the whole class!)
5915
5924
5916 FIXME: didn't work. It can be done, but right now namespaces are
5925 FIXME: didn't work. It can be done, but right now namespaces are
5917 all messed up. Do it later (reverted it for now, so at least
5926 all messed up. Do it later (reverted it for now, so at least
5918 everything works as before).
5927 everything works as before).
5919
5928
5920 * Got the object introspection system (magic_oinfo) working! I
5929 * Got the object introspection system (magic_oinfo) working! I
5921 think this is pretty much ready for release to Janko, so he can
5930 think this is pretty much ready for release to Janko, so he can
5922 test it for a while and then announce it. Pretty much 100% of what
5931 test it for a while and then announce it. Pretty much 100% of what
5923 I wanted for the 'phase 1' release is ready. Happy, tired.
5932 I wanted for the 'phase 1' release is ready. Happy, tired.
5924
5933
5925 2001-11-12 Fernando Perez <fperez@colorado.edu>
5934 2001-11-12 Fernando Perez <fperez@colorado.edu>
5926
5935
5927 * Version 0.1.6 released, 0.1.7 opened for further work.
5936 * Version 0.1.6 released, 0.1.7 opened for further work.
5928
5937
5929 * Fixed bug in printing: it used to test for truth before
5938 * Fixed bug in printing: it used to test for truth before
5930 printing, so 0 wouldn't print. Now checks for None.
5939 printing, so 0 wouldn't print. Now checks for None.
5931
5940
5932 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5941 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5933 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5942 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5934 reaches by hand into the outputcache. Think of a better way to do
5943 reaches by hand into the outputcache. Think of a better way to do
5935 this later.
5944 this later.
5936
5945
5937 * Various small fixes thanks to Nathan's comments.
5946 * Various small fixes thanks to Nathan's comments.
5938
5947
5939 * Changed magic_pprint to magic_Pprint. This way it doesn't
5948 * Changed magic_pprint to magic_Pprint. This way it doesn't
5940 collide with pprint() and the name is consistent with the command
5949 collide with pprint() and the name is consistent with the command
5941 line option.
5950 line option.
5942
5951
5943 * Changed prompt counter behavior to be fully like
5952 * Changed prompt counter behavior to be fully like
5944 Mathematica's. That is, even input that doesn't return a result
5953 Mathematica's. That is, even input that doesn't return a result
5945 raises the prompt counter. The old behavior was kind of confusing
5954 raises the prompt counter. The old behavior was kind of confusing
5946 (getting the same prompt number several times if the operation
5955 (getting the same prompt number several times if the operation
5947 didn't return a result).
5956 didn't return a result).
5948
5957
5949 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5958 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5950
5959
5951 * Fixed -Classic mode (wasn't working anymore).
5960 * Fixed -Classic mode (wasn't working anymore).
5952
5961
5953 * Added colored prompts using Nathan's new code. Colors are
5962 * Added colored prompts using Nathan's new code. Colors are
5954 currently hardwired, they can be user-configurable. For
5963 currently hardwired, they can be user-configurable. For
5955 developers, they can be chosen in file ipythonlib.py, at the
5964 developers, they can be chosen in file ipythonlib.py, at the
5956 beginning of the CachedOutput class def.
5965 beginning of the CachedOutput class def.
5957
5966
5958 2001-11-11 Fernando Perez <fperez@colorado.edu>
5967 2001-11-11 Fernando Perez <fperez@colorado.edu>
5959
5968
5960 * Version 0.1.5 released, 0.1.6 opened for further work.
5969 * Version 0.1.5 released, 0.1.6 opened for further work.
5961
5970
5962 * Changed magic_env to *return* the environment as a dict (not to
5971 * Changed magic_env to *return* the environment as a dict (not to
5963 print it). This way it prints, but it can also be processed.
5972 print it). This way it prints, but it can also be processed.
5964
5973
5965 * Added Verbose exception reporting to interactive
5974 * Added Verbose exception reporting to interactive
5966 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5975 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5967 traceback. Had to make some changes to the ultraTB file. This is
5976 traceback. Had to make some changes to the ultraTB file. This is
5968 probably the last 'big' thing in my mental todo list. This ties
5977 probably the last 'big' thing in my mental todo list. This ties
5969 in with the next entry:
5978 in with the next entry:
5970
5979
5971 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5980 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5972 has to specify is Plain, Color or Verbose for all exception
5981 has to specify is Plain, Color or Verbose for all exception
5973 handling.
5982 handling.
5974
5983
5975 * Removed ShellServices option. All this can really be done via
5984 * Removed ShellServices option. All this can really be done via
5976 the magic system. It's easier to extend, cleaner and has automatic
5985 the magic system. It's easier to extend, cleaner and has automatic
5977 namespace protection and documentation.
5986 namespace protection and documentation.
5978
5987
5979 2001-11-09 Fernando Perez <fperez@colorado.edu>
5988 2001-11-09 Fernando Perez <fperez@colorado.edu>
5980
5989
5981 * Fixed bug in output cache flushing (missing parameter to
5990 * Fixed bug in output cache flushing (missing parameter to
5982 __init__). Other small bugs fixed (found using pychecker).
5991 __init__). Other small bugs fixed (found using pychecker).
5983
5992
5984 * Version 0.1.4 opened for bugfixing.
5993 * Version 0.1.4 opened for bugfixing.
5985
5994
5986 2001-11-07 Fernando Perez <fperez@colorado.edu>
5995 2001-11-07 Fernando Perez <fperez@colorado.edu>
5987
5996
5988 * Version 0.1.3 released, mainly because of the raw_input bug.
5997 * Version 0.1.3 released, mainly because of the raw_input bug.
5989
5998
5990 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5999 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5991 and when testing for whether things were callable, a call could
6000 and when testing for whether things were callable, a call could
5992 actually be made to certain functions. They would get called again
6001 actually be made to certain functions. They would get called again
5993 once 'really' executed, with a resulting double call. A disaster
6002 once 'really' executed, with a resulting double call. A disaster
5994 in many cases (list.reverse() would never work!).
6003 in many cases (list.reverse() would never work!).
5995
6004
5996 * Removed prefilter() function, moved its code to raw_input (which
6005 * Removed prefilter() function, moved its code to raw_input (which
5997 after all was just a near-empty caller for prefilter). This saves
6006 after all was just a near-empty caller for prefilter). This saves
5998 a function call on every prompt, and simplifies the class a tiny bit.
6007 a function call on every prompt, and simplifies the class a tiny bit.
5999
6008
6000 * Fix _ip to __ip name in magic example file.
6009 * Fix _ip to __ip name in magic example file.
6001
6010
6002 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6011 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6003 work with non-gnu versions of tar.
6012 work with non-gnu versions of tar.
6004
6013
6005 2001-11-06 Fernando Perez <fperez@colorado.edu>
6014 2001-11-06 Fernando Perez <fperez@colorado.edu>
6006
6015
6007 * Version 0.1.2. Just to keep track of the recent changes.
6016 * Version 0.1.2. Just to keep track of the recent changes.
6008
6017
6009 * Fixed nasty bug in output prompt routine. It used to check 'if
6018 * Fixed nasty bug in output prompt routine. It used to check 'if
6010 arg != None...'. Problem is, this fails if arg implements a
6019 arg != None...'. Problem is, this fails if arg implements a
6011 special comparison (__cmp__) which disallows comparing to
6020 special comparison (__cmp__) which disallows comparing to
6012 None. Found it when trying to use the PhysicalQuantity module from
6021 None. Found it when trying to use the PhysicalQuantity module from
6013 ScientificPython.
6022 ScientificPython.
6014
6023
6015 2001-11-05 Fernando Perez <fperez@colorado.edu>
6024 2001-11-05 Fernando Perez <fperez@colorado.edu>
6016
6025
6017 * Also added dirs. Now the pushd/popd/dirs family functions
6026 * Also added dirs. Now the pushd/popd/dirs family functions
6018 basically like the shell, with the added convenience of going home
6027 basically like the shell, with the added convenience of going home
6019 when called with no args.
6028 when called with no args.
6020
6029
6021 * pushd/popd slightly modified to mimic shell behavior more
6030 * pushd/popd slightly modified to mimic shell behavior more
6022 closely.
6031 closely.
6023
6032
6024 * Added env,pushd,popd from ShellServices as magic functions. I
6033 * Added env,pushd,popd from ShellServices as magic functions. I
6025 think the cleanest will be to port all desired functions from
6034 think the cleanest will be to port all desired functions from
6026 ShellServices as magics and remove ShellServices altogether. This
6035 ShellServices as magics and remove ShellServices altogether. This
6027 will provide a single, clean way of adding functionality
6036 will provide a single, clean way of adding functionality
6028 (shell-type or otherwise) to IP.
6037 (shell-type or otherwise) to IP.
6029
6038
6030 2001-11-04 Fernando Perez <fperez@colorado.edu>
6039 2001-11-04 Fernando Perez <fperez@colorado.edu>
6031
6040
6032 * Added .ipython/ directory to sys.path. This way users can keep
6041 * Added .ipython/ directory to sys.path. This way users can keep
6033 customizations there and access them via import.
6042 customizations there and access them via import.
6034
6043
6035 2001-11-03 Fernando Perez <fperez@colorado.edu>
6044 2001-11-03 Fernando Perez <fperez@colorado.edu>
6036
6045
6037 * Opened version 0.1.1 for new changes.
6046 * Opened version 0.1.1 for new changes.
6038
6047
6039 * Changed version number to 0.1.0: first 'public' release, sent to
6048 * Changed version number to 0.1.0: first 'public' release, sent to
6040 Nathan and Janko.
6049 Nathan and Janko.
6041
6050
6042 * Lots of small fixes and tweaks.
6051 * Lots of small fixes and tweaks.
6043
6052
6044 * Minor changes to whos format. Now strings are shown, snipped if
6053 * Minor changes to whos format. Now strings are shown, snipped if
6045 too long.
6054 too long.
6046
6055
6047 * Changed ShellServices to work on __main__ so they show up in @who
6056 * Changed ShellServices to work on __main__ so they show up in @who
6048
6057
6049 * Help also works with ? at the end of a line:
6058 * Help also works with ? at the end of a line:
6050 ?sin and sin?
6059 ?sin and sin?
6051 both produce the same effect. This is nice, as often I use the
6060 both produce the same effect. This is nice, as often I use the
6052 tab-complete to find the name of a method, but I used to then have
6061 tab-complete to find the name of a method, but I used to then have
6053 to go to the beginning of the line to put a ? if I wanted more
6062 to go to the beginning of the line to put a ? if I wanted more
6054 info. Now I can just add the ? and hit return. Convenient.
6063 info. Now I can just add the ? and hit return. Convenient.
6055
6064
6056 2001-11-02 Fernando Perez <fperez@colorado.edu>
6065 2001-11-02 Fernando Perez <fperez@colorado.edu>
6057
6066
6058 * Python version check (>=2.1) added.
6067 * Python version check (>=2.1) added.
6059
6068
6060 * Added LazyPython documentation. At this point the docs are quite
6069 * Added LazyPython documentation. At this point the docs are quite
6061 a mess. A cleanup is in order.
6070 a mess. A cleanup is in order.
6062
6071
6063 * Auto-installer created. For some bizarre reason, the zipfiles
6072 * Auto-installer created. For some bizarre reason, the zipfiles
6064 module isn't working on my system. So I made a tar version
6073 module isn't working on my system. So I made a tar version
6065 (hopefully the command line options in various systems won't kill
6074 (hopefully the command line options in various systems won't kill
6066 me).
6075 me).
6067
6076
6068 * Fixes to Struct in genutils. Now all dictionary-like methods are
6077 * Fixes to Struct in genutils. Now all dictionary-like methods are
6069 protected (reasonably).
6078 protected (reasonably).
6070
6079
6071 * Added pager function to genutils and changed ? to print usage
6080 * Added pager function to genutils and changed ? to print usage
6072 note through it (it was too long).
6081 note through it (it was too long).
6073
6082
6074 * Added the LazyPython functionality. Works great! I changed the
6083 * Added the LazyPython functionality. Works great! I changed the
6075 auto-quote escape to ';', it's on home row and next to '. But
6084 auto-quote escape to ';', it's on home row and next to '. But
6076 both auto-quote and auto-paren (still /) escapes are command-line
6085 both auto-quote and auto-paren (still /) escapes are command-line
6077 parameters.
6086 parameters.
6078
6087
6079
6088
6080 2001-11-01 Fernando Perez <fperez@colorado.edu>
6089 2001-11-01 Fernando Perez <fperez@colorado.edu>
6081
6090
6082 * Version changed to 0.0.7. Fairly large change: configuration now
6091 * Version changed to 0.0.7. Fairly large change: configuration now
6083 is all stored in a directory, by default .ipython. There, all
6092 is all stored in a directory, by default .ipython. There, all
6084 config files have normal looking names (not .names)
6093 config files have normal looking names (not .names)
6085
6094
6086 * Version 0.0.6 Released first to Lucas and Archie as a test
6095 * Version 0.0.6 Released first to Lucas and Archie as a test
6087 run. Since it's the first 'semi-public' release, change version to
6096 run. Since it's the first 'semi-public' release, change version to
6088 > 0.0.6 for any changes now.
6097 > 0.0.6 for any changes now.
6089
6098
6090 * Stuff I had put in the ipplib.py changelog:
6099 * Stuff I had put in the ipplib.py changelog:
6091
6100
6092 Changes to InteractiveShell:
6101 Changes to InteractiveShell:
6093
6102
6094 - Made the usage message a parameter.
6103 - Made the usage message a parameter.
6095
6104
6096 - Require the name of the shell variable to be given. It's a bit
6105 - Require the name of the shell variable to be given. It's a bit
6097 of a hack, but allows the name 'shell' not to be hardwired in the
6106 of a hack, but allows the name 'shell' not to be hardwired in the
6098 magic (@) handler, which is problematic b/c it requires
6107 magic (@) handler, which is problematic b/c it requires
6099 polluting the global namespace with 'shell'. This in turn is
6108 polluting the global namespace with 'shell'. This in turn is
6100 fragile: if a user redefines a variable called shell, things
6109 fragile: if a user redefines a variable called shell, things
6101 break.
6110 break.
6102
6111
6103 - magic @: all functions available through @ need to be defined
6112 - magic @: all functions available through @ need to be defined
6104 as magic_<name>, even though they can be called simply as
6113 as magic_<name>, even though they can be called simply as
6105 @<name>. This allows the special command @magic to gather
6114 @<name>. This allows the special command @magic to gather
6106 information automatically about all existing magic functions,
6115 information automatically about all existing magic functions,
6107 even if they are run-time user extensions, by parsing the shell
6116 even if they are run-time user extensions, by parsing the shell
6108 instance __dict__ looking for special magic_ names.
6117 instance __dict__ looking for special magic_ names.
6109
6118
6110 - mainloop: added *two* local namespace parameters. This allows
6119 - mainloop: added *two* local namespace parameters. This allows
6111 the class to differentiate between parameters which were there
6120 the class to differentiate between parameters which were there
6112 before and after command line initialization was processed. This
6121 before and after command line initialization was processed. This
6113 way, later @who can show things loaded at startup by the
6122 way, later @who can show things loaded at startup by the
6114 user. This trick was necessary to make session saving/reloading
6123 user. This trick was necessary to make session saving/reloading
6115 really work: ideally after saving/exiting/reloading a session,
6124 really work: ideally after saving/exiting/reloading a session,
6116 *everything* should look the same, including the output of @who. I
6125 *everything* should look the same, including the output of @who. I
6117 was only able to make this work with this double namespace
6126 was only able to make this work with this double namespace
6118 trick.
6127 trick.
6119
6128
6120 - added a header to the logfile which allows (almost) full
6129 - added a header to the logfile which allows (almost) full
6121 session restoring.
6130 session restoring.
6122
6131
6123 - prepend lines beginning with @ or !, with a and log
6132 - prepend lines beginning with @ or !, with a and log
6124 them. Why? !lines: may be useful to know what you did @lines:
6133 them. Why? !lines: may be useful to know what you did @lines:
6125 they may affect session state. So when restoring a session, at
6134 they may affect session state. So when restoring a session, at
6126 least inform the user of their presence. I couldn't quite get
6135 least inform the user of their presence. I couldn't quite get
6127 them to properly re-execute, but at least the user is warned.
6136 them to properly re-execute, but at least the user is warned.
6128
6137
6129 * Started ChangeLog.
6138 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now